***********************************************
* Ce programme permet de lister paralllement *
* les plannings et la tlgestion (Logifil).  *
* Bas sur le PRX qui tait utilis jusque l *
*		DOMILISTESTATS                        *
*                                             *
* Grgory - 13/07/11                          *
***********************************************
SUBROUTINE LOGICOMPPLGTLG(RETURNVAL,PARAMETRES,W_Sortie)
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"

OPEN "","TLGPOINTAGE" TO F.TLGPOINTAGE ELSE RETURN
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE RETURN
OPEN "","CIVILAIDE" TO F.CIVILAIDE ELSE RETURN
OPEN "","SECTEUR" TO F.SECTEUR ELSE RETURN
OPEN "","TPSTEMPO" TO F.TPSTEMPO ELSE RETURN
OPEN "","DOMILISTES" TO F.DOMILISTES ELSE RETURN
OPEN "","ACTIVITES" TO F.ACTIVITES ELSE RETURN
OPEN "","RESPONSABLE" TO F.RESPONSABLE ELSE RETURN
* Modif Greg - 07/03/13 - Dans le cas de LogisFil Penbase, il faut traiter
* uniquement les aidants qui sont tlgrs.
OPEN "","TABLES" TO F.TABLES ELSE RETURN
* Modif Greg - 17/12/13 - A la 540 la marge pour les pointages est devenue
* un paramtre modifiable par les utilisateurs.
OPEN "","TLGPARAM" TO F.TLGPARAM ELSE RETURN
* Modif Greg - 19/05/15 - DA15030
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE RETURN
* Modif Greg - 17/09/15 - Dans le cadre d'un ticket de l'ASMAD, on s'est
* aperu que les archives ne sont pas gres.
OPEN "","TLGPOINTAGEARCH" TO F.TLGPOINTAGEARCH ELSE RETURN

***********************************************
W_TypeTri=PARAMETRES<1>
W_CritTri=PARAMETRES<2>
W_TypeAct=PARAMETRES<3>
W_DateDeb=PARAMETRES<4>
W_DateFin=PARAMETRES<5>

* Modif Greg - 17/09/15 - Dans le cadre d'un ticket de l'ASMAD, on s'est
* aperu que les archives ne sont pas gres.
READ ENR_TLGPARAM FROM F.TLGPARAM, "DATEREFARCH" ELSE ENR_TLGPARAM=""
IF ENR_TLGPARAM<1>="" THEN
	W_DateRefArch="0"
END ELSE
	W_DateRefArch=ENR_TLGPARAM<1>
END

READ ENR_TLGPARAM FROM F.TLGPARAM, "MARGECTRLEFFECTIVITE" THEN
	IF ENR_TLGPARAM<1>="" THEN
		W_Marge="50"
	END ELSE
		W_Marge=INT((ENR_TLGPARAM<1>/60*100)+(1/2))
	END
END ELSE
	W_Marge="50"
END

* Modif Greg - 19/05/15 - DA15030
* Modif Greg - 07/03/13 - Gestion Penbase
*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>,"PENBASE",1)>0 THEN W_Penbase="OUI"
*			EXIT
*		END
*	NEXT I
*END ELSE
*	RETURN
*END
W_TlgMobile="NON"
READ ENR_ASSOCIATION FROM F.ASSOCIATION, "001" THEN
	IF ENR_ASSOCIATION<58>="1" THEN W_TlgMobile="OUI"
END
* Fin modif Greg - 19/05/15


ENR_PLG=""
ENR_TLG=""

ENR_TLGPOINTAGE=""
ENR_TLGPOINTAGEARCH=""
ENR_CIVILAIDANT=""
ENR_SECTEUR=""
ENR_TPSTEMPO=""
ENR_CIVILAIDE=""
ENR_SECTEURAIDE=""
ENR_ACTIVITES=""
ENR_RESPONSABLE=""

ENR_AIDANTS=""
ENR_PLGTLG=""

* Le tableau est "form" avec des MV car de cette manire, on pourra facilement incrmententer les valeurs qui nous intressent (pas besoind d'utiliser des variables).
ENR_AIDANTS<-1>='Secteur':CHAR(253):'Commune':CHAR(253):'Code':CHAR(253):'Nom prenom':CHAR(253):'Nb tot. interv. plg':CHAR(253):'Nb tot. interv. tlg':CHAR(253):'Nb interv. ok plg':CHAR(253):'Nb deduc. deb. plg':CHAR(253):'Nb deduc fin plg':CHAR(253):'Nb interv. ok tlg':CHAR(253):'Nb deduc. deb. tlg':CHAR(253):'Nb deduc fin tlg':CHAR(253):'Nb interv. plg sans tlg':CHAR(253):'Plg moins tlg':CHAR(253):'Nb deduc min. compl.'

ENR_PLGTLG<-1>='Secteur aidant;Commune aidant;Code aidant;Nom prenom aidant;Secteur aide;Commune aide;Code aide;Nom prenom aide;Responsable;Date;Hre deb plg;HreFin plg;Hre deb tlg;Hre fin tlg;Duree plg;Duree tlg;Diff tlg-plg;Activit;Aid tlgr'

TAB_TLG=""

W_HreDebPlg=""
W_HreFinPlg=""
W_HreDebTlg=""
W_HreFinTlg=""

W_ReqTlg=""
*********************************************************************

GOSUB 5
GOSUB 10
GOSUB 20

ENR_AIDANTS=CONVERT(CHAR(253),";",ENR_AIDANTS)

W_DateDeb=OCONV(W_DateDeb,"D4/")
W_DateDeb=W_DateDeb[7,4]:W_DateDeb[4,2]:W_DateDeb[1,2]
W_DateFin=OCONV(W_DateFin,"D4/")
W_DateFin=W_DateFin[7,4]:W_DateFin[4,2]:W_DateFin[1,2]

ENR_AIDANTS<-1>=""
ENR_AIDANTS<-1>="Lgende"
ENR_AIDANTS<-1>="Nb tot. interv. plg : nombre d'interventions planifies"
ENR_AIDANTS<-1>="Nb tot. interv. tlg : nombre de pointages valids"
ENR_AIDANTS<-1>="Nb interv. ok plg : nombre d'interventions planifies correctement pointes"
ENR_AIDANTS<-1>="Nb deduc. arr. plg : nombre d'interventions planifies avec dduction du dbut"
ENR_AIDANTS<-1>="Nb deduc dep. plg : nombre d'interventions planifies avec dduction de la fin"
ENR_AIDANTS<-1>="Nb interv. ok tlg : nombre de pointages valids sans planning"
ENR_AIDANTS<-1>="Nb deduc. arr. tlg : nombre de pointages valids sans planning avec dduction du dbut"
ENR_AIDANTS<-1>="Nb deduc dep. tlg : nombre de pointages valids sans planning avec dduction de la fin"
ENR_AIDANTS<-1>="Nb interv. plg sans tlg : nombre d'interventions planifies sans pointage"
ENR_AIDANTS<-1>="Plg moins tlg : nombre d'interventions planifies - nombre de pointages valids sans planning"
ENR_AIDANTS<-1>="Nb deduc min. compl. : nombre d'interventions avec dduction du dbut grce aux minutes complmentaires"

IF ENR_AIDANTS<2><>"" THEN
	IF W_TypeAct="PM" THEN
		WRITE ENR_AIDANTS ON F.DOMILISTES, "Liste des aidants - Stats ":W_DateDeb:" ":W_DateFin:".csv"
		WRITE ENR_PLGTLG ON F.DOMILISTES, "Comparaison planning-tlgestion ":W_DateDeb:" ":W_DateFin:".csv"
		W_Sortie='Les fichiers suivants ont t gnrs dans le rpertoire DOMITIME\LISTES :':CHAR(13):CHAR(10)
		W_Sortie=W_Sortie:'       - Liste des aidants - Stats ':W_DateDeb:' ':W_DateFin:'.csv':CHAR(13):CHAR(10)
		W_Sortie=W_Sortie:'       - Comparaison planning-tlgestion ':W_DateDeb:' ':W_DateFin:'.csv'
	END ELSE
		IF W_TypeAct="P" THEN W_TypeAct = "Prestataire"
		IF W_TypeAct="M" THEN W_TypeAct = "Mandataire"
		WRITE ENR_AIDANTS ON F.DOMILISTES, "Liste des aidants - Stats ":W_DateDeb:" ":W_DateFin:" - ":W_TypeAct:".csv"
		WRITE ENR_PLGTLG ON F.DOMILISTES, "Comparaison planning-tlgestion ":W_DateDeb:" ":W_DateFin:" - ":W_TypeAct:".csv"
		W_Sortie='Les fichiers suivants ont t gnrs dans le rpertoire DOMITIME\LISTES :':CHAR(13):CHAR(10)
		W_Sortie=W_Sortie:'       - Liste des aidants - Stats ':W_DateDeb:' ':W_DateFin:' - ':W_TypeAct:'.csv':CHAR(13):CHAR(10)
		W_Sortie=W_Sortie:'       - Comparaison planning-tlgestion ':W_DateDeb:' ':W_DateFin:' - ':W_TypeAct:'.csv'
	END
END ELSE
	W_Sortie="Aucun aidant"
END

RETURN
*********************************************************************
* Slection des interventions de la tlgestion
*********************************************************************
5
	* Modif Greg - 17/09/15 - Dans le cadre d'un ticket de l'ASMAD, on s'est
	* aperu que les archives ne sont pas gres.
	* En gros, c'est le traitement d'origine copi/coll et adapter pour travailler sur les archives.
	IF W_DateDeb<W_DateRefArch THEN
		* On cr le tableau des pointages
		W_Selection='SELECT TLGPOINTAGEARCH AVEC DateDebInterv <= "':W_DateFin:'" AND AVEC DateFinIntervArch >= "':W_DateDeb:'"'
		
		FOR I = 1 TO LEN(W_TypeAct)
			IF I = 1 THEN
				W_Selection=W_Selection:' AND AVEC TypeActivite = "':W_TypeAct[I,1]:'"'
			END ELSE
				W_Selection=W_Selection:' OR = "':W_TypeAct[I,1]:'"'
			END
		NEXT I
		
		W_Attribut=""
		IF W_TypeTri="S" THEN W_Attribut = "CodeSecteurAidant"
		IF W_TypeTri="C" THEN W_Attribut = "CommuneAidant"
		IF W_TypeTri="I" THEN W_Attribut = "CodeAidant"

		IF W_Attribut<>"" THEN
			FOR I = 1 TO DCOUNT(W_CritTri<1>,CHAR(253))
				IF I = 1 THEN
					W_Selection=W_Selection:' AND AVEC ':W_Attribut:' = "':W_CritTri<1,I>:'"'
				END ELSE
					W_Selection=W_Selection:' OR = "':W_CritTri<1,I>:'"'
				END
			NEXT I
		END
		
		IF W_TypeTri="S" THEN W_Selection=W_Selection:" PAR CodeSecteurAidant"
		IF W_TypeTri="C" THEN W_Selection=W_Selection:" PAR CommuneAidant"
		*IF W_TypeTri="I" THEN W_Selection=W_Selection:" PAR CodeAidant"
		
		W_Selection=W_Selection:' PAR NomPrenomAidant PAR CodeAidant PAR DateDebInterv PAR HeureDebInterv'
		
		EXECUTE W_Selection
		EXECUTE 'SAUVE-LISTE W_ReqTlg'
		EXECUTE 'LISTE W_ReqTlg' RETURNING MSGCODE

		IF MSGCODE<1> # "209" THEN
			SELECT F.TLGPOINTAGEARCH TO W_ReqTlg

			W_Fin = "F"
			LOOP
				READNEXT W_Cle FROM W_ReqTlg ELSE W_Fin = "O"
			WHILE W_Fin = "F"
				READ ENR_TLGPOINTAGEARCH FROM F.TLGPOINTAGEARCH, W_Cle THEN
					IF ENR_TLGPOINTAGEARCH<7><>"" THEN
						W_HreDebTlg=ENR_TLGPOINTAGEARCH<7>
					END ELSE
						W_HreDebTlg=W_Cle[19,5]
					END
					IF ENR_TLGPOINTAGEARCH<8><>"" THEN
						W_HreFinTlg=ENR_TLGPOINTAGEARCH<8>
					END ELSE
						W_HreFinTlg=ENR_TLGPOINTAGEARCH<4>[1,5]
					END				
					TAB_TLG<-1>='AIDANT':W_Cle[3,5]:CHAR(253):'AIDE':W_Cle[9,5]:CHAR(253):W_Cle[14,5]:CHAR(253):W_HreDebTlg:CHAR(253):W_HreFinTlg:CHAR(253):ENR_TLGPOINTAGEARCH<10>:CHAR(253):CHAR(253):CHAR(253):ENR_TLGPOINTAGEARCH<5>
					
				END
			REPEAT
		END
		
		*WRITE TAB_TLG ON F.DOMILISTES, "TAB_TLG.csv"
	END
	
RETURN
*********************************************************************
* Slection des interventions de la tlgestion
*********************************************************************
10

	* On cr le tableau des pointages
	W_Selection='SELECT TLGPOINTAGE AVEC DateDebInterv <= "':W_DateFin:'" AND AVEC DateFinInterv >= "':W_DateDeb:'"'
	
	FOR I = 1 TO LEN(W_TypeAct)
		IF I = 1 THEN
			W_Selection=W_Selection:' AND AVEC TypeActivite = "':W_TypeAct[I,1]:'"'
		END ELSE
			W_Selection=W_Selection:' OR = "':W_TypeAct[I,1]:'"'
		END
	NEXT I
	
	W_Attribut=""
	IF W_TypeTri="S" THEN W_Attribut = "CodeSecteurAidant"
	IF W_TypeTri="C" THEN W_Attribut = "CommuneAidant"
	IF W_TypeTri="I" THEN W_Attribut = "CodeAidant"

	IF W_Attribut<>"" THEN
		FOR I = 1 TO DCOUNT(W_CritTri<1>,CHAR(253))
			IF I = 1 THEN
				W_Selection=W_Selection:' AND AVEC ':W_Attribut:' = "':W_CritTri<1,I>:'"'
			END ELSE
				W_Selection=W_Selection:' OR = "':W_CritTri<1,I>:'"'
			END
		NEXT I
	END
	
	IF W_TypeTri="S" THEN W_Selection=W_Selection:" PAR CodeSecteurAidant"
	IF W_TypeTri="C" THEN W_Selection=W_Selection:" PAR CommuneAidant"
	*IF W_TypeTri="I" THEN W_Selection=W_Selection:" PAR CodeAidant"
	
	W_Selection=W_Selection:' PAR NomPrenomAidant PAR CodeAidant PAR DateDebInterv PAR HeureDebInterv'
	
	EXECUTE W_Selection
	EXECUTE 'SAUVE-LISTE W_ReqTlg'
	EXECUTE 'LISTE W_ReqTlg' RETURNING MSGCODE

	IF MSGCODE<1> # "209" THEN

		SELECT F.TLGPOINTAGE TO W_ReqTlg

		W_Fin = "F"
		LOOP
			READNEXT W_Cle FROM W_ReqTlg ELSE W_Fin = "O"
		WHILE W_Fin = "F"
			READ ENR_TLGPOINTAGE FROM F.TLGPOINTAGE, W_Cle THEN
				IF ENR_TLGPOINTAGE<7><>"" THEN
					W_HreDebTlg=ENR_TLGPOINTAGE<7>
				END ELSE
					W_HreDebTlg=W_Cle[19,5]
				END
				IF ENR_TLGPOINTAGE<8><>"" THEN
					W_HreFinTlg=ENR_TLGPOINTAGE<8>
				END ELSE
					W_HreFinTlg=ENR_TLGPOINTAGE<4>[1,5]
				END				
				TAB_TLG<-1>='AIDANT':W_Cle[3,5]:CHAR(253):'AIDE':W_Cle[9,5]:CHAR(253):W_Cle[14,5]:CHAR(253):W_HreDebTlg:CHAR(253):W_HreFinTlg:CHAR(253):ENR_TLGPOINTAGE<10>:CHAR(253):CHAR(253):CHAR(253):ENR_TLGPOINTAGE<5>
				
			END
		REPEAT
	END
	
	*WRITE TAB_TLG ON F.DOMILISTES, "TAB_TLG.csv"
	
RETURN
*********************************************************************
* Lancement d'AFFICHEPLANNING et comparaison avec la tlgestion
*********************************************************************
20

	ENR_TPSTEMPO2=""
	IF W_TypeTri="" THEN
		* Modif Greg - 18/01/13 - Il ne faut pas se limiter  l'entit 001 pour rechercher les plannings
		EXECUTE 'AFFICHEPLANNING |ADMDOMI2||':W_TypeAct:'|':W_DateDeb:'|':W_DateFin:'||||E|||'
	END ELSE
		FOR I = 1 TO DCOUNT(W_CritTri<1>,CHAR(253))
			EXECUTE "DELETE TPSTEMPO AFFICHEPLANNINGADMDOMI2"
			IF W_TypeTri="S" OR W_TypeTri="C" THEN
				* Modif Greg - 18/01/13 - Il ne faut pas se limiter  l'entit 001 pour rechercher les plannings
				EXECUTE 'AFFICHEPLANNING |ADMDOMI2||':W_TypeAct:'|':W_DateDeb:'|':W_DateFin:'|':W_TypeTri:'|':W_CritTri<1,I>:'||E|||'
			END ELSE
				* Modif Greg - 18/01/13 - Il ne faut pas se limiter  l'entit 001 pour rechercher les plannings
				EXECUTE 'AFFICHEPLANNING |ADMDOMI2||':W_TypeAct:'|':W_DateDeb:'|':W_DateFin:'|||':W_CritTri<1,I>:'|E|||'
			END
			READ ENR_TPSTEMPO FROM F.TPSTEMPO, "AFFICHEPLANNINGADMDOMI2" ELSE ENR_TPSTEMPO=""
			FOR J = 1 TO DCOUNT(ENR_TPSTEMPO,CHAR(254))
				ENR_TPSTEMPO2<DCOUNT(ENR_TPSTEMPO2,CHAR(254))+1>=ENR_TPSTEMPO<J>
			NEXT J
			WRITE ENR_TPSTEMPO2 ON F.TPSTEMPO, "AFFICHEPLANNINGADMDOMI2"
			WRITE ENR_TPSTEMPO2 ON F.TPSTEMPO, "VERIFGREG"
		NEXT I
	END

	READ ENR_TPSTEMPO FROM F.TPSTEMPO, "AFFICHEPLANNINGADMDOMI2" THEN
		*WRITE ENR_TPSTEMPO ON F.DOMILISTES, "TPSTEMPO.csv"
		W_NouvAidant=""
		I=0
		J=1
		LOOP
			I=I+1
		WHILE I<=DCOUNT(ENR_TPSTEMPO, CHAR(254))
			IF ENR_TPSTEMPO<I>[1,7]="#Interv" THEN
				READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,ENR_TPSTEMPO<I>[8,5] ELSE ENR_CIVILAIDANT=""
				
				W_Aidant=ENR_TPSTEMPO<I>[8,5]
				W_DateJour=W_DateDeb				
				* Modif Greg - 07/03/13 - Si le systme est Penbase, il faut vrifier que l'aidant
				* est tlgr. Si ce n'est pas le cas, on passe  l'aidant suivant.
				* l'Index est l pour grer un cas particulier : l'aidant a de la tlgestion, mais il n'est pas
				* tlgr. En thorie, il n'y a pas de raison. En pratique, j'ai eu 2 aidants comme  lors de
				* mes tests sur Anjou Soins Service. Je ne sais pas le pourquoi du comment, mais il faut grer le cas.
				* Donc au final, on traite l'aidant si on n'est pas en Penbase, si on est en Penbase et que l'aidant
				* est tlgr, ou si l'aidant a de la tlgestion.
				* Modif Greg - 19/05/15 - DA15030
				*IF W_Penbase="NON" OR (W_Penbase="OUI" AND ENR_CIVILAIDANT<48>="1") OR INDEX(TAB_TLG,"AIDANT":W_Aidant,1)<>0 THEN
				IF W_TlgMobile="NON" OR (W_TlgMobile="OUI" AND ENR_CIVILAIDANT<48>="1") OR INDEX(TAB_TLG,"AIDANT":W_Aidant,1)<>0 THEN
					IF ENR_CIVILAIDANT<>"" THEN
						READ ENR_SECTEUR FROM F.SECTEUR, ENR_CIVILAIDANT<31> ELSE ENR_SECTEUR=""

						W_CivilAidantPlg=ENR_CIVILAIDANT<2>:' ':ENR_CIVILAIDANT<3>
						
						W_Trouve="FAUX"
						FOR W_Ligne=1 TO DCOUNT(ENR_AIDANTS,CHAR(254))
							IF ENR_AIDANTS<W_Ligne,3>=W_Aidant THEN
								W_Trouve="VRAI"
								EXIT
							END
						NEXT W_Ligne
						IF W_Trouve="FAUX" THEN
							ENR_AIDANTS<-1>=ENR_SECTEUR<1>:CHAR(253):ENR_CIVILAIDANT<11>:CHAR(253):ENR_TPSTEMPO<I>[8,5]:CHAR(253):ENR_CIVILAIDANT<2>:' ':ENR_CIVILAIDANT<3>:CHAR(253):'0':CHAR(253):'0':CHAR(253):'0':CHAR(253):'0':CHAR(253):'0':CHAR(253):'0':CHAR(253):'0':CHAR(253):'0':CHAR(253):'0':CHAR(253):'0':CHAR(253):'0'
						END
					END ELSE
						L=I
						LOOP
							L=L+1
						WHILE ENR_TPSTEMPO<L>[1,7]<>"#Interv" AND ENR_TPSTEMPO<L><>""
						REPEAT
						I=L-1						
					END
				END ELSE
					L=I
					LOOP
						L=L+1
					WHILE ENR_TPSTEMPO<L>[1,7]<>"#Interv" AND ENR_TPSTEMPO<L><>""
					REPEAT
					I=L-1
				END
			END ELSE
				IF W_DateJour<=W_DateFin THEN
					K=0
					LOOP
						K=K+1
					WHILE ENR_TPSTEMPO<I,1,K><>""
						IF ENR_TPSTEMPO<I,1,K>="IntervP" OR ENR_TPSTEMPO<I,1,K>="IntervM" THEN
							W_Aide=ENR_TPSTEMPO<I,4,K>[6,5]
							READ ENR_CIVILAIDE FROM F.CIVILAIDE, W_Aide ELSE ENR_CIVILAIDE=""
							W_CivilAidePlg=ENR_CIVILAIDE<2>:' ':ENR_CIVILAIDE<3>
				
							IF ENR_CIVILAIDE<50><>"N" THEN
								READ ENR_SECTEURAIDE FROM F.SECTEUR, ENR_CIVILAIDE<40>[1,3] ELSE ENR_SECTEURAIDE=""
								READ ENR_RESPONSABLE FROM F.RESPONSABLE, ENR_CIVILAIDE<39> ELSE ENR_RESPONSABLE=""
								
								W_Trouve="FAUX"
								FOR W_Ligne=1 TO DCOUNT(ENR_AIDANTS,CHAR(254))
									IF ENR_AIDANTS<W_Ligne,3>=W_Aidant AND W_Aidant<>"" THEN
										W_Trouve="VRAI"
										EXIT
									END
								NEXT W_Ligne

								IF W_Trouve="VRAI" THEN
									ENR_AIDANTS<W_Ligne,5>=ENR_AIDANTS<W_Ligne,5>+1
									ENR_AIDANTS<W_Ligne,14>=ENR_AIDANTS<W_Ligne,5>-ENR_AIDANTS<W_Ligne,6>
									
									W_HeureDeb=ENR_TPSTEMPO<I,2,K>
									W_HeureFin=ENR_TPSTEMPO<I,3,K>
									
									* On laisse une marge de 30 min.
									* Modif Greg - 17/12/13 - Depuis la 540 la marge est paramtrable par les utilisateurs
									W_HreDebMin=W_HeureDeb-W_Marge
									W_HreDebMax=W_HeureDeb+W_Marge
									W_HreFinMin=W_HeureFin-W_Marge
									W_HreFinMax=W_HeureFin+W_Marge
									
									* Christelle du Mans ne veut pas de gestion de marge
									*W_HreDebMin="0000"
									*W_HreDebMax="2400"
									*W_HreFinMin="0000"
									*W_HreFinMax="2400"
									
									W_HreDebMin=STR("0",4-LEN(W_HreDebMin)):W_HreDebMin
									W_HreDebMax=STR("0",4-LEN(W_HreDebMax)):W_HreDebMax
									W_HreFinMin=STR("0",4-LEN(W_HreFinMin)):W_HreFinMin
									W_HreFinMax=STR("0",4-LEN(W_HreFinMax)):W_HreFinMax
									
									W_ActivitePlg=ENR_TPSTEMPO<I,4,K>[16,6]
									READ ENR_ACTIVITES FROM F.ACTIVITES, W_ActivitePlg ELSE ENR_ACTIVITES=""
									
									GOSUB 30
								
									ENR_PLG<-1>=W_Aidant:' - ':OCONV(W_DateJour,"D4/"):' - ':W_HeureDeb:' - ':W_Aide
								
									W_LignePLG=W_CivilAidantPlg "L#100":W_DateJour
									*W_LignePLG=W_Aidant:W_DateJour
									W_Sortir="FAUX"
									J=J-1
									LOOP
										J=J+1
									WHILE W_Sortir="FAUX" AND TAB_TLG<J><>""
										READ ENR_CIVILAIDANT FROM F.CIVILAIDANT, TAB_TLG<J,1>[7,5] ELSE ENR_CIVILAIDANT=""
										W_CivilAidantTlg=ENR_CIVILAIDANT<2>:' ':ENR_CIVILAIDANT<3>									
										
										READ ENR_CIVILAIDE FROM F.CIVILAIDE, TAB_TLG<J,2>[5,5] ELSE ENR_CIVILAIDE=""
										W_CivilAideTlg=ENR_CIVILAIDE<2>:' ':ENR_CIVILAIDE<3>
										
										W_LigneTLG=W_CivilAidantTlg "L#100":TAB_TLG<J,3>
										*W_LigneTLG=TAB_TLG<J,1>[7,5]:TAB_TLG<J,3>

										IF W_LigneTLG>=W_LignePLG THEN
											IF W_LigneTLG>W_LignePLG THEN
												W_Sortir="VRAI"
												J=J-1
											END ELSE
												IF (TAB_TLG<J,4>>=W_HreDebMin AND TAB_TLG<J,4><=W_HreDebMax) OR (TAB_TLG<J,5>>=W_HreFinMin AND TAB_TLG<J,5><=W_HreFinMax) THEN
													W_Sortir="VRAI"
													J=J-1
												END ELSE
													IF TAB_TLG<J,4>>W_HreDebMax THEN
														W_Sortir="VRAI"
														J=J-1
													END ELSE
														GOSUB 50
													END
												END
											END
										END ELSE
											GOSUB 50
										END									
									REPEAT
									
									IF W_LigneTLG=W_LignePLG AND TAB_TLG<J><>"" AND W_Aide = TAB_TLG<J,2>[5,5] THEN
										* Ici, on a le mme aidant, la mme date et le mme aid.
										* Juste avant, on a boucl sur les interventions tlgres.
										* La boucle s'arrte quand l'heure de l'intervention tlgre
										* est suprieure  l'heure du planning ou quand on trouve une
										* intervention correspondante. On utilise un battement de 30 min.
										
										IF (TAB_TLG<J,4>>=W_HreDebMin AND TAB_TLG<J,4><=W_HreDebMax) OR (TAB_TLG<J,5>>=W_HreFinMin AND TAB_TLG<J,5><=W_HreFinMax) THEN
											GOSUB 60
											* Puisque l'intervention tlgre a t traite, il faut avancer la lecture d'un cran pour
											* ne pas traiter la mme intervention lors du passage suivant.
											J=J+1
										END ELSE
											* Les horaires ne collent pas, c'est donc une intervention planifie sans correspondance en tlgestion.
											
											GOSUB 55
										END
									END ELSE
										* Si on passe ici, c'est que la "lecture" des plannings est en retard
										* sur la "lecture" de la tlgestion. Cela signifie que l'intervention
										* planifie en cours de traitement n'a pas de correspondance en tl-
										* gestion et qu'il faut donc la traiter comme tel.
										
										GOSUB 55
									END
								END
							END
						END
					REPEAT
					W_DateJour=W_DateJour+1
				END ELSE
					* Lorsqu'on a parcouru tous les jours de la priode pour un aidant, on
					* boucle jusqu' trouver le prochain aidant, de manire  ce que lorsqu'on "retourne"
					*  la premire boucle, I soit directement  la bonne valeur pour entamer le nouvel aidant.
					L=I
					LOOP
						L=L+1
					WHILE ENR_TPSTEMPO<L>[1,7]<>"#Interv" AND ENR_TPSTEMPO<L><>""
					REPEAT
					I=L-1
				END
			END
		REPEAT
		* Arriv ici, on a fini de parcourir les plannings, mais il peut rester de la tlgestion.
		IF TAB_TLG<J><>"" THEN
			J=J-1
			LOOP
				J=J+1
			WHILE TAB_TLG<J><>""
				GOSUB 50
			REPEAT
		END
	END

RETURN
*********************************************************************
* Convertion en minutes des heures du planning et mise en forme
*********************************************************************
30

W_Hre=W_HeureDeb[1,2]
W_Min=W_HeureDeb[3,2]
W_Min=INT((W_Min*60)/100)
W_Min=STR("0",2-LEN(W_Min)):W_Min
W_HeureDeb=W_Hre:":":W_Min

W_Hre=W_HeureFin[1,2]
W_Min=W_HeureFin[3,2]
W_Min=INT((W_Min*60)/100)
W_Min=STR("0",2-LEN(W_Min)):W_Min
W_HeureFin=W_Hre:":":W_Min

W_Hre=W_HreDebMin[1,2]
W_Min=W_HreDebMin[3,2]
W_Min=INT((W_Min*60)/100)
W_Min=STR("0",2-LEN(W_Min)):W_Min
W_HreDebMin=W_Hre:":":W_Min

W_Hre=W_HreDebMax[1,2]
W_Min=W_HreDebMax[3,2]
W_Min=INT((W_Min*60)/100)
W_Min=STR("0",2-LEN(W_Min)):W_Min
W_HreDebMax=W_Hre:":":W_Min

W_Hre=W_HreFinMin[1,2]
W_Min=W_HreFinMin[3,2]
W_Min=INT((W_Min*60)/100)
W_Min=STR("0",2-LEN(W_Min)):W_Min
W_HreFinMin=W_Hre:":":W_Min

W_Hre=W_HreFinMax[1,2]
W_Min=W_HreFinMax[3,2]
W_Min=INT((W_Min*60)/100)
W_Min=STR("0",2-LEN(W_Min)):W_Min
W_HreFinMax=W_Hre:":":W_Min

RETURN
*********************************************************************
* Calcul de la dure des interventions
*********************************************************************
40

	W_DureePlg=0
	W_DureeTlg=0
	
	IF W_HreDebPlg<>"" AND W_HreFinPlg<>"" THEN
		W_HreDebD=W_HreDebPlg
		W_HreFinD=W_HreFinPlg
		GOSUB 41
		W_DureePlg=W_DureeInterv
	END

	IF W_HreDebTlg<>"" AND W_HreFinTlg<>"" THEN
		W_HreDebD=W_HreDebTlg
		W_HreFinD=W_HreFinTlg
		GOSUB 41
		W_DureeTlg=W_DureeInterv
	END	
	
RETURN
*********************************************************************
41

	W_HDeb=W_HreDebD[1,2]
	W_MDeb=W_HreDebD[4,2]
	W_HFin=W_HreFinD[1,2]
	W_MFin=W_HreFinD[4,2]	
	W_Minutes=0
	W_Heures=0
	
	IF W_HreDebD<=W_HreFinD THEN
		W_Minutes=60-W_MDeb
		W_Heures=W_HDeb+1
		W_Heures=W_HFin-W_Heures
		W_Heures=W_Heures*60
		W_Minutes=W_Minutes+W_Heures+W_MFin
	END ELSE
		W_Minutes=(W_HFin*60)+W_MFin
		W_Minutes=W_Minutes+(60-W_MDeb)
		W_Heures=24-(W_HDeb+1)
		W_Heures=W_Heures*60
		W_Minutes=W_Minutes+W_Heures
	END
	
	W_DureeInterv=W_Minutes

RETURN
*********************************************************************
*
*********************************************************************
50

	* Si on passe ici, c'est que la "lecture" de la tlgestion est en retard
	* sur la lecture des plannings. Cela signifie que nous avons  faire  des
	* interventions tlgres qui n'ont pas de correspondance en planning.
	READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,TAB_TLG<J,1>[7,5] ELSE RETURN
	READ ENR_SECTEUR FROM F.SECTEUR, ENR_CIVILAIDANT<31> ELSE ENR_SECTEUR=""	
		
	* On ajoute galement l'intervention au tableau ENR_PLGTLG
	READ ENR_ACTIVITES FROM F.ACTIVITES, TAB_TLG<J,9> ELSE ENR_ACTIVITES=""
	
	READ ENR_CIVILAIDE FROM F.CIVILAIDE, TAB_TLG<J,2>[5,5] ELSE RETURN
	READ ENR_SECTEURAIDE FROM F.SECTEUR, ENR_CIVILAIDE<40>[1,3] ELSE ENR_SECTEURAIDE=""
	READ ENR_RESPONSABLE FROM F.RESPONSABLE, ENR_CIVILAIDE<39> ELSE ENR_RESPONSABLE=""
			
		
	W_Trouve="FAUX"
	FOR W_Ligne=1 TO DCOUNT(ENR_AIDANTS,CHAR(254))
		IF ENR_AIDANTS<W_Ligne,3>=TAB_TLG<J,1>[7,5] THEN
			W_Trouve="VRAI"
			EXIT
		END
	NEXT W_Ligne
	IF W_Trouve="FAUX" THEN
		ENR_AIDANTS<-1>=ENR_SECTEUR<1>:CHAR(253):ENR_CIVILAIDANT<11>:CHAR(253):TAB_TLG<J,1>[7,5]:CHAR(253):ENR_CIVILAIDANT<2>:' ':ENR_CIVILAIDANT<3>:CHAR(253):'0':CHAR(253):'0':CHAR(253):'0':CHAR(253):'0':CHAR(253):'0':CHAR(253):'0':CHAR(253):'0':CHAR(253):'0':CHAR(253):'0':CHAR(253):'0'
		W_Ligne=DCOUNT(ENR_AIDANTS,CHAR(254))
	END
	
	ENR_AIDANTS<W_Ligne,6>=ENR_AIDANTS<W_Ligne,6>+1
	ENR_AIDANTS<W_Ligne,14>=ENR_AIDANTS<W_Ligne,5>-ENR_AIDANTS<W_Ligne,6>
	
	W_ArrDep=""
	W_Pos=INDEX(TAB_TLG<J,6>,"duction automatique de",1)
	IF W_Pos=0 THEN
		W_Pos=INDEX(TAB_TLG<J,6>,"duction automatique du",1)
		IF W_Pos>0 THEN
			W_ArrDep="DEP"
		END
	END ELSE
		W_ArrDep="ARR"
	END
	IF W_Pos=0 THEN
		ENR_AIDANTS<W_Ligne,10>=ENR_AIDANTS<W_Ligne,10>+1
	END ELSE
		IF W_ArrDep="ARR" THEN
			ENR_AIDANTS<W_Ligne,11>=ENR_AIDANTS<W_Ligne,11>+1
			* Modif Greg - 03/12/09 - Ajout d'une stat spciale pour les dductions grce  des minutes complmentaires.
			IF INDEX(TAB_TLG<J,6>,"via min. compl.",1)>0 THEN
				ENR_AIDANTS<W_Ligne,15>=ENR_AIDANTS<W_Ligne,15>+1
			END			
		END ELSE
			ENR_AIDANTS<W_Ligne,12>=ENR_AIDANTS<W_Ligne,12>+1
		END
	END
	
	W_HreDebPlg=""
	W_HreFinPlg=""
	W_HreDebTlg=TAB_TLG<J,4>
	W_HreFinTlg=TAB_TLG<J,5>
	GOSUB 40
	
	W_SecteurAidant=ENR_SECTEUR<1>
	W_CommuneAidant=ENR_CIVILAIDANT<11>
	W_CodeAidant=TAB_TLG<J,1>[7,5]
	W_NomPrenomAidant=ENR_CIVILAIDANT<2>:' ':ENR_CIVILAIDANT<3>
	W_SecteurAide=ENR_SECTEURAIDE<1>
	W_CommuneAide=ENR_CIVILAIDE<11>
	W_CodeAide=TAB_TLG<J,2>[5,5]
	W_NomPrenomAide=ENR_CIVILAIDE<2>:' ':ENR_CIVILAIDE<3>
	W_Responsable=ENR_RESPONSABLE<1>
	W_Date=OCONV(TAB_TLG<J,3>,"D4/")
	W_HreDebPlg=0
	W_HreFinPlg=0
	W_HreDebTlg=TAB_TLG<J,4>
	W_HreFinTlg=TAB_TLG<J,5>
	* Les 2 variables suivantes sont renseignes dans la procdure 40
	*W_DureePlg
	*W_DureeTlg
	*W_DiffDuree=0
	W_DiffDuree=W_DureeTlg-W_DureePlg
	W_Activite=ENR_ACTIVITES<1>
	IF ENR_CIVILAIDE<50>="" THEN
		W_AideTlg="Oui"
	END ELSE
		W_AideTlg="Oui"
	END	
	
	ENR_PLGTLG<-1>=W_SecteurAidant:";":W_CommuneAidant:';':W_CodeAidant:';':W_NomPrenomAidant:';':W_SecteurAide:';':W_CommuneAide:';':W_CodeAide:';':W_NomPrenomAide:';':W_Responsable:';':W_Date:';':W_HreDebPlg:';':W_HreFinPlg:';':W_HreDebTlg:';':W_HreFinTlg:';':W_DureePlg:';':W_DureeTlg:';':W_DiffDuree:';':W_Activite:';':W_AideTlg

RETURN
*********************************************************************
*
*********************************************************************
55

	READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_Aidant ELSE RETURN
	READ ENR_SECTEUR FROM F.SECTEUR, ENR_CIVILAIDANT<31> ELSE ENR_SECTEUR=""

	READ ENR_CIVILAIDE FROM F.CIVILAIDE, W_Aide ELSE RETURN
	READ ENR_SECTEURAIDE FROM F.SECTEUR, ENR_CIVILAIDE<40>[1,3] ELSE ENR_SECTEURAIDE=""
	READ ENR_RESPONSABLE FROM F.RESPONSABLE, ENR_CIVILAIDE<39> ELSE ENR_RESPONSABLE=""

	READ ENR_ACTIVITES FROM F.ACTIVITES, W_ActivitePlg ELSE ENR_ACTIVITES=""	
	
	W_Trouve="FAUX"
	FOR W_Ligne=1 TO DCOUNT(ENR_AIDANTS,CHAR(254))
		IF ENR_AIDANTS<W_Ligne,3>=W_Aidant THEN
			W_Trouve="VRAI"
			EXIT
		END
	NEXT W_Ligne
	
	ENR_AIDANTS<W_Ligne,13>=ENR_AIDANTS<W_Ligne,13>+1

	W_HreDebPlg=W_HeureDeb
	W_HreFinPlg=W_HeureFin
	W_HreDebTlg=""
	W_HreFinTlg=""
	GOSUB 40
	
	W_SecteurAidant=ENR_SECTEUR<1>
	W_CommuneAidant=ENR_CIVILAIDANT<11>
	W_CodeAidant=W_Aidant
	W_NomPrenomAidant=ENR_CIVILAIDANT<2>:' ':ENR_CIVILAIDANT<3>
	W_SecteurAide=ENR_SECTEURAIDE<1>
	W_CommuneAide=ENR_CIVILAIDE<11>
	W_CodeAide=W_Aide
	W_NomPrenomAide=ENR_CIVILAIDE<2>:' ':ENR_CIVILAIDE<3>
	W_Responsable=ENR_RESPONSABLE<1>
	W_Date=OCONV(W_DateJour,"D4/")
	W_HreDebPlg=W_HeureDeb
	W_HreFinPlg=W_HeureFin
	W_HreDebTlg=0
	W_HreFinTlg=0
	* Les 2 variables suivantes sont renseignes dans la procdure 40
	*W_DureePlg
	*W_DureeTlg
	*W_DiffDuree=0
	W_DiffDuree=W_DureeTlg-W_DureePlg
	W_Activite=ENR_ACTIVITES<1>
	IF ENR_CIVILAIDE<50>="" THEN
		W_AideTlg="Oui"
	END ELSE
		W_AideTlg="Oui"
	END	
	
	ENR_PLGTLG<-1>=W_SecteurAidant:";":W_CommuneAidant:';':W_CodeAidant:';':W_NomPrenomAidant:';':W_SecteurAide:';':W_CommuneAide:';':W_CodeAide:';':W_NomPrenomAide:';':W_Responsable:';':W_Date:';':W_HreDebPlg:';':W_HreFinPlg:';':W_HreDebTlg:';':W_HreFinTlg:';':W_DureePlg:';':W_DureeTlg:';':W_DiffDuree:';':W_Activite:';':W_AideTlg
	

RETURN
*********************************************************************
*
*********************************************************************
60

	READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_Aidant ELSE RETURN
	READ ENR_SECTEUR FROM F.SECTEUR, ENR_CIVILAIDANT<31> ELSE ENR_SECTEUR=""
	
	READ ENR_CIVILAIDE FROM F.CIVILAIDE, W_Aide ELSE RETURN
	READ ENR_SECTEURAIDE FROM F.SECTEUR, ENR_CIVILAIDE<40>[1,3] ELSE ENR_SECTEURAIDE=""	
	READ ENR_RESPONSABLE FROM F.RESPONSABLE, ENR_CIVILAIDE<39> ELSE ENR_RESPONSABLE=""
	
	READ ENR_ACTIVITES FROM F.ACTIVITES, W_ActivitePlg ELSE ENR_ACTIVITES=""	
	
	W_Trouve="FAUX"
	FOR W_Ligne=1 TO DCOUNT(ENR_AIDANTS,CHAR(254))
		IF ENR_AIDANTS<W_Ligne,3>=W_Aidant THEN
			W_Trouve="VRAI"
			EXIT
		END
	NEXT W_Ligne
	
	ENR_AIDANTS<W_Ligne,6>=ENR_AIDANTS<W_Ligne,6>+1
	ENR_AIDANTS<W_Ligne,14>=ENR_AIDANTS<W_Ligne,5>-ENR_AIDANTS<W_Ligne,6>
	
	W_ArrDep=""
	W_Pos=INDEX(TAB_TLG<J,6>,"duction automatique de",1)
	IF W_Pos=0 THEN
		W_Pos=INDEX(TAB_TLG<J,6>,"duction automatique du",1)
		IF W_Pos>0 THEN
			W_ArrDep="DEP"
		END
	END ELSE
		W_ArrDep="ARR"
	END
	IF W_Pos=0 THEN
		ENR_AIDANTS<W_Ligne,7>=ENR_AIDANTS<W_Ligne,7>+1
	END ELSE
		IF W_ArrDep="ARR" THEN
			ENR_AIDANTS<W_Ligne,8>=ENR_AIDANTS<W_Ligne,8>+1
			* Modif Greg - 03/12/09 - Ajout d'une stat spciale pour les dductions grce  des minutes complmentaires.
			IF INDEX(TAB_TLG<J,6>,"via min. compl.",1)>0 THEN
				ENR_AIDANTS<W_Ligne,15>=ENR_AIDANTS<W_Ligne,15>+1
			END
		END ELSE
			ENR_AIDANTS<W_Ligne,9>=ENR_AIDANTS<W_Ligne,9>+1
		END
	END
	
	W_HreDebPlg=W_HeureDeb
	W_HreFinPlg=W_HeureFin
	W_HreDebTlg=TAB_TLG<J,4>
	W_HreFinTlg=TAB_TLG<J,5>
	GOSUB 40
	
	W_SecteurAidant=ENR_SECTEUR<1>
	W_CommuneAidant=ENR_CIVILAIDANT<11>
	W_CodeAidant=W_Aidant
	W_NomPrenomAidant=ENR_CIVILAIDANT<2>:' ':ENR_CIVILAIDANT<3>
	W_SecteurAide=ENR_SECTEURAIDE<1>
	W_CommuneAide=ENR_CIVILAIDE<11>
	W_CodeAide=W_Aide
	W_NomPrenomAide=ENR_CIVILAIDE<2>:' ':ENR_CIVILAIDE<3>
	W_Responsable=ENR_RESPONSABLE<1>
	W_Date=OCONV(W_DateJour,"D4/")
	W_HreDebPlg=W_HeureDeb
	W_HreFinPlg=W_HeureFin
	W_HreDebTlg=TAB_TLG<J,4>
	W_HreFinTlg=TAB_TLG<J,5>
	* Les 2 variables suivantes sont renseignes dans la procdure 40
	*W_DureePlg
	*W_DureeTlg
	W_DiffDuree=W_DureeTlg-W_DureePlg
	W_Activite=ENR_ACTIVITES<1>
	IF ENR_CIVILAIDE<50>="" THEN
		W_AideTlg="Oui"
	END ELSE
		W_AideTlg="Oui"
	END
	
	ENR_PLGTLG<-1>=W_SecteurAidant:";":W_CommuneAidant:';':W_CodeAidant:';':W_NomPrenomAidant:';':W_SecteurAide:';':W_CommuneAide:';':W_CodeAide:';':W_NomPrenomAide:';':W_Responsable:';':W_Date:';':W_HreDebPlg:';':W_HreFinPlg:';':W_HreDebTlg:';':W_HreFinTlg:';':W_DureePlg:';':W_DureeTlg:';':W_DiffDuree:';':W_Activite:';':W_AideTlg

RETURN