**************************************************
* Ce programme met  jour le fichier TLGVERIFPLG *
*                                                *
* Grgory - 11/04/11                             *
**************************************************
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"

OPEN "","TPSTEMPO" TO F.TPSTEMPO ELSE RETURN
OPEN "","TLGVERIFPLG" TO F.TLGVERIFPLG ELSE RETURN
OPEN "","CIVILAIDE" TO F.CIVILAIDE ELSE RETURN
OPEN "","TLGPARAM" TO F.TLGPARAM ELSE RETURN
* Modif Greg - 23/03/12 - Dornavant on ne traitera que les plannings dont
* les activits sont paramtres en tlgestion. Ceci afin d'viter par exemple
* que tout le mandataire remonte en anomalie "Planning sans tlgestion" alors
* que le mandataire n'est justement pas gr en tlgestion.
OPEN "","DOMITIMEPARAMINTGR" TO F.DOMITIMEPARAMINTGR ELSE RETURN
OPEN "","ACTIVITES" TO F.ACTIVITES ELSE RETURN
* Modif Greg - 26/02/13 - Si l'asso utilise LogisFil - Penbase, il
* ne faut prendre que les aidants tlgrs
OPEN "","TABLES" TO F.TABLES ELSE RETURN
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE RETURN
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE RETURN
**************************************************

ENR_TPSTEMPO=""
ENR_TLGVERIFPLG=""
ENR_CIVILAIDE=""
ENR_TLGPARAM=""
ENR_DOMITIMEPARAMINTGR=""
ENR_ACTIVITES=""

* Modif Greg - 26/02/13
ENR_TABLES=""
ENR_ASSOCIATION=""
ENR_CIVILAIDANT=""
W_Penbase="NON"
READ ENR_TABLES FROM F.TABLES, "TELEGESTION" THEN
	FOR I = 1 TO DCOUNT(ENR_TABLES<2>,CHAR(253))
		IF ENR_TABLES<2,I>="06" THEN
			IF INDEX(ENR_TABLES<3,I>,"LOGISFIL",1)<>0 AND INDEX(ENR_TABLES<3,I>,"PENBASE",1)<>0 THEN
				W_Penbase="OUI"
			END
			EXIT
		END
	NEXT I
END
* Fin modif Greg - 26/02/13

* Modif Greg - 21/10/11 - Si la comparaison plg/tlg n'est pas activ, on ne met pas  jour le fichier.
READ ENR_TLGPARAM FROM F.TLGPARAM, "HEURELIMITEVERIF" ELSE ENR_TLGPARAM=""
IF ENR_TLGPARAM<3><>"O" THEN STOP
* Fin modif Greg - 21/10/11

IF TIMEDATE()[1,5]<"06:30" THEN
	W_Date=DATE()
END ELSE
	W_Date=DATE()+1
END

W_Date=ICONV("03/04/2013","D4/")

* Modif Greg - 23/03/12 - Dornavant on travaillera uniquement sur les plannings dont
* les activits sont paramtres en tlgestion. Il faut donc connaitre ces dernires.
* Modif Greg - 17/01/13 - Gestion du multi-entit. La partie travaillant sur le planning
* devient la sub 10. Et il y a maintenant une boucle pour lire les diffrents codes assos.
* Et la sub 10 est appele pour chaque asso. J'ai mi comme code asso max le code 020. J'aurai
* pu faire un SELECT mais  me semblait un peu disproportionn juste pour avoir une liste
* de code asso. Et la limite de 20 me parait suffisamment leve (actuellement je crois que
* les plus grosses structures ont 3 entits max).
FOR BoucleAsso = 1 TO 20
	W_CodeAsso=BoucleAsso "R%3"
	READ ENR_DOMITIMEPARAMINTGR FROM F.DOMITIMEPARAMINTGR, W_CodeAsso THEN
		W_TypesAct=""
		FOR I = 1 TO DCOUNT(ENR_DOMITIMEPARAMINTGR<1>,CHAR(253))
			READ ENR_ACTIVITES FROM F.ACTIVITES, ENR_DOMITIMEPARAMINTGR<1,I> ELSE ENR_ACTIVITES=""
			IF ENR_ACTIVITES<12><>"" THEN
				IF INDEX(W_TypesAct,ENR_ACTIVITES<12>,1) = 0 THEN
					W_TypesAct=W_TypesAct:ENR_ACTIVITES<12>
				END
			END
		NEXT I
		GOSUB 10
	END
NEXT BoucleAsso

STOP
* Fin modif Greg - 23/03/12


**************************************************
10
	EXECUTE 'AFFICHEPLANNING |USERBATCH|':W_CodeAsso:'|':W_TypesAct:'|':W_Date:'|':W_Date:'||||E|||'

	* Modif Greg - 18/03/13 - 4 nouvelles variables
	W_Traiter = "NON"
    W_HreDebAbs = ""
    W_HreFinAbs = ""
    W_AidantAbs = "NON"
	
	READ ENR_TPSTEMPO FROM F.TPSTEMPO, "AFFICHEPLANNINGUSERBATCH" THEN
		* On parcourt le fichier.
		I=0
		LOOP
			I=I+1
		WHILE I<=DCOUNT(ENR_TPSTEMPO, CHAR(254))
			* Pour chaque aidant trouv, on regarde son planning.
			* Pour chaque aidant, la norme est : une ligne par jour. On a demand un seul jour donc on sait que seule
			* la ligne immdiate aprs celle contenant le code de l'aidant nous intresse.
			IF ENR_TPSTEMPO<I>[1,7]="#Interv" THEN
				I=I+1
				FOR J = 1 TO DCOUNT(ENR_TPSTEMPO<I,1>,CHAR(252))
					* Modif Greg - 18/03/13 - L'AFFICHEPLANNING en mode affichage retourne
					* tout : les congs, les interventions, les exceptions, etc. Il faut
					* donc faire un tri pour ne traiter que les interventions relles.
					W_Traiter = "NON"
					IF ENR_TPSTEMPO<I,1,J> = "ARRET" OR ENR_TPSTEMPO<I,1,J> = "CONGES" THEN
						IF ENR_TPSTEMPO<I,2,J> = "0000" AND ENR_TPSTEMPO<I,3,J> = "2400" THEN EXIT
						W_AidantAbs = "OUI"
						W_HreDebAbs = ENR_TPSTEMPO<I,2,J>
						W_HreFinAbs = ENR_TPSTEMPO<I,3,J>
					END
					
					IF ENR_TPSTEMPO<I,1,J>[1,6] = "Interv" AND LEN(ENR_TPSTEMPO<I,1,J>) = 7 THEN
						IF W_AidantAbs = "NON" THEN
							W_Traiter = "OUI"
						END ELSE
							IF ENR_TPSTEMPO<I,2,J> >= W_HreFinAbs OR ENR_TPSTEMPO<I,3,J> <= W_HreDebAbs THEN
								W_Traiter = "OUI"
							END
						END
					END
					* Fin modif Greg - 18/03/13
					
					IF W_Traiter="OUI" THEN
						* Modif Greg - 23/03/12 - Dsormais on ne traite que les
						* interventions dont l'activit est gre en tlgestion.
						* J'ajoute donc la condition qui suit.
						IF INDEX(ENR_DOMITIMEPARAMINTGR<1>,ENR_TPSTEMPO<I,4,J>[16,6],1) <> 0 THEN
							READ ENR_CIVILAIDE FROM F.CIVILAIDE, ENR_TPSTEMPO<I,4,J>[6,5] THEN
								* Si l'aid ne gre pas la tlgestion, alors  ne sert  rien de le grer pour les anomalies.
								* Par contre cela peut changer si on dcide d'utiliser le fichier pour d'autres choses. A ce
								* moment l il faudra retirer le test de ce PR pour le mettre dans les programme o le filtrage
								* doit tre fait.
								IF ENR_CIVILAIDE<50>="" THEN
									* Modif Greg - 26/02/13
									IF W_Penbase="NON" THEN
										GOSUB 20
									END ELSE
										READ ENR_ASSOCIATION FROM F.ASSOCIATION, ENR_TPSTEMPO<I,4,J>[16,3] THEN
											IF ENR_ASSOCIATION<38>="06" THEN
												READ ENR_CIVILAIDANT FROM F.CIVILAIDANT, ENR_TPSTEMPO<I,4,J>[1,5] THEN
													IF ENR_CIVILAIDANT<48>="1" THEN
														GOSUB 20
													END
												END
											END
										END
									END
								END
							END
						END
					END
				NEXT J
				
				* Une fois le planning de l'aidant rcupr, on peut passer  la ligne suivante.
				* Ce n'est pas forcment "immdiatement" un autre aidant, mais la boucle principale
				* tournera jusqu' ce qu'on en trouve un o qu'on arrive  la fin de l'enregistrement.
				I=I+1
			END
		REPEAT
	END

	EXECUTE "DELETE TPSTEMPO AFFICHEPLANNINGUSERBATCH"

RETURN
********************************
* Ecriture de l'enregistrement *
********************************
20

	* On rcupre les infos de l'intervention planifie et on crit dans TLGVERIFPLG
	ENR_TLGVERIFPLG=""
	ENR_TLGVERIFPLG<1>=W_Date
	ENR_TLGVERIFPLG<2>=ENR_TPSTEMPO<I,3,J>
	ENR_TLGVERIFPLG<4>=ENR_TPSTEMPO<I,4,J>
	
	IF ENR_TLGVERIFPLG<>"" THEN
		* Modif Greg - 01/03/13 - J'horodate la cration de l'enregistrement
		ENR_TLGVERIFPLG<6>=DATE()
		ENR_TLGVERIFPLG<7>=TIMEDATE()[1,8]	
	
		WRITE ENR_TLGVERIFPLG ON F.TLGVERIFPLG, ENR_TPSTEMPO<I,4,J>[1,10]:W_Date:ENR_TPSTEMPO<I,2,J>:"P"
	END

RETURN