OPEN "", "TPSDETAILSINTERV" TO F.TPSDETAILSINTERV ELSE STOP
OPEN "", "TPSEXCEPTIONS" TO F.TPSEXCEPTIONS ELSE STOP
OPEN "", "TPSDETAILSINTERVARCH" TO F.TPSDETAILSINTERVARCH ELSE STOP
OPEN "", "TPSEXCEPTIONSARCH" TO F.TPSEXCEPTIONSARCH ELSE STOP
OPEN "", "PERIODESPAIE" TO F.PERIODESPAIE ELSE STOP
* Grgory - 19/04/10 - DA10084-01
OPEN "", "TPSREMPLACEAIDANT" TO F.TPSREMPLACEAIDANT ELSE STOP
OPEN "", "TPSREMPLACEAIDANTARCH" TO F.TPSREMPLACEAIDANTARCH ELSE STOP
OPEN "", "CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "", "CIVILAIDE" TO F.CIVILAIDE ELSE STOP
OPEN "", "BESOINSAIDE" TO F.BESOINSAIDE ELSE STOP
OPEN "", "LIENAIDANTAIDE" TO F.LIENAIDANTAIDE ELSE STOP

EXECUTE 'DATE.FORMAT'
EXECUTE 'SET-DEC ,'
EXECUTE 'SET-THOUS .'

ENR_TPSREMPLACEAIDANT=""
ENR_TPSREMPLACEAIDANTARCH=""
ENR_CIVILAIDANT=""
ENR_CIVILAIDE=""
ENR_BESOINSAIDE=""
ENR_LIENAIDANTAIDE=""

READ ENR_PERIODESPAIE FROM F.PERIODESPAIE, "1" THEN
	W_DateRef = ICONV("01/":ENR_PERIODESPAIE<1>[5,2]:"/":ENR_PERIODESPAIE<1>[1,4],"D4/")
	W_DateRef = W_DateRef -50
	W_DateRef = ICONV("01/":OCONV(W_DateRef,"D4/")[4,7],"D4/")
	GOSUB 100
	GOSUB 110
	GOSUB 120
END
STOP
*********************************************
* Traitement d'origine
*********************************************
100
	EXECUTE 'SELECT TPSDETAILSINTERV AVEC 1 # "" AND < "':W_DateRef:'"'
	W_Fin = "F"
	LOOP
	READNEXT W_Cle ELSE W_Fin = "V"
	WHILE W_Fin = "F"
		READ ENR FROM F.TPSDETAILSINTERV, W_Cle THEN
			WRITE ENR ON F.TPSDETAILSINTERVARCH, W_Cle
			DELETE F.TPSDETAILSINTERV, W_Cle
		END
	REPEAT
	EXECUTE 'SELECT TPSEXCEPTIONS AVEC DateDebExcep # "" AND < "':W_DateRef:'"'
	W_Fin = "F"
	LOOP
	READNEXT W_Cle ELSE W_Fin = "V"
	WHILE W_Fin = "F"
		READ ENR FROM F.TPSEXCEPTIONS, W_Cle THEN
			WRITE ENR ON F.TPSEXCEPTIONSARCH, W_Cle
			DELETE F.TPSEXCEPTIONS, W_Cle
		END
	REPEAT
RETURN
*********************************************
* Archivage des TPSREMPLACEAIDANT
* Les remplacements concernant des absences
* termines depuis plus de 2 mois sont archives.
* Grgory - 19/04/10
*********************************************
110

	IF ENR_PERIODESPAIE<1>[5,2]="01" THEN
		W_DateRef=ICONV("01/11/":ENR_PERIODESPAIE<1>[1,4]-1,"D4/")
	END ELSE
		IF ENR_PERIODESPAIE<1>[5,2]="02" THEN
			W_DateRef=ICONV("01/12/":ENR_PERIODESPAIE<1>[1,4]-1,"D4/")
		END ELSE
			W_Mois=ENR_PERIODESPAIE<1>[5,2]-2
			IF LEN(W_Mois)=1 THEN W_Mois="0":W_Mois
			W_DateRef=ICONV("01/":W_Mois:"/":ENR_PERIODESPAIE<1>[1,4],"D4/")
		END
	END
	
	W_ReqTpsRemp=""
	EXECUTE 'SELECT TPSREMPLACEAIDANT AVEC FinAbsAidant < "':W_DateRef:'"'
	EXECUTE 'SAUVE-LISTE W_ReqTpsRemp'
	EXECUTE 'LISTE W_ReqTpsRemp' RETURNING MSGCODE

	IF MSGCODE<1> # "209" THEN
		SELECT F.TPSREMPLACEAIDANT TO W_ReqTpsRemp

		W_Fin = "F"
		LOOP
			READNEXT W_Cle FROM W_ReqTpsRemp ELSE W_Fin = "O"
		WHILE W_Fin = "F"
			READ ENR_TPSREMPLACEAIDANT FROM F.TPSREMPLACEAIDANT, W_Cle THEN
				WRITE ENR_TPSREMPLACEAIDANT ON F.TPSREMPLACEAIDANTARCH, W_Cle
				
				EXECUTE 'DELETE TPSREMPLACEAIDANT ':W_Cle
			END
		REPEAT
	END

RETURN
*********************************************
* Apuration de LIENAIDANTAIDE
* On vrifie que l'aidant et l'aid sont
* toujours "dans" l'asso et qu'ils sont
* toujours compatibles
* Grgory - 19/04/10
*********************************************
120

W_ReqLien=""
EXECUTE 'SELECT LIENAIDANTAIDE'
EXECUTE 'SAUVE-LISTE W_ReqLien'
EXECUTE 'LISTE W_ReqLien' RETURNING MSGCODE

IF MSGCODE<1> # "209" THEN
	SELECT F.LIENAIDANTAIDE TO W_ReqLien

	W_Fin = "F"
	LOOP
		READNEXT W_Cle FROM W_ReqLien ELSE W_Fin = "O"
	WHILE W_Fin = "F"
		* Modif Greg - 27/11/12 - Il peut arriver (je ne sais pas pourquoi), que des cls incorrectes se trouvent
		* dans LIENAIDANTAIDE. Notamment une cl vide. Le souci c'est que lorsqu'on supprime une cl vide, Unidata
		* demande si on veut tout supprimer et attend une rponse. Evidemment dans un prog il n'est pas possible
		* de donner la rponse. Donc j'ajoute un test de manire  ne traiter que les cls bonnes (du moins  la
		* longueur attendue).
		IF LEN(W_Cle)=10 THEN
			W_Aidant=W_Cle[1,5]
			W_Aide=W_Cle[6,5]
			
			GOSUB 121
			
			IF W_Garder="NON" THEN EXECUTE 'DELETE LIENAIDANTAIDE ':W_Aidant:W_Aide
		END
	REPEAT
END

RETURN
***************************************************
* On vrifie si le couple peut tre gard ou non  *
***************************************************
121

	W_Garder="NON"
	
	* Si l'aidant est incompatible avec l'aid, il ne faut pas garder le couple.
	READ ENR_BESOINSAIDE FROM F.BESOINSAIDE, W_Aide THEN
		FOR J = 1 TO DCOUNT(ENR_BESOINSAIDE<8>,CHAR(253))
			IF ENR_BESOINSAIDE<8,J>=W_Aidant THEN
				RETURN
			END
		NEXT J
	END

	* Si l'aidant  une date de suppresion, il ne faut pas garder le couple.
	* Si l'aidant n'existe pas du tout, on ne doit plus tenir compte du couple.
	READ ENR_CIVILAIDANT FROM F.CIVILAIDANT, W_Aidant THEN
		IF ENR_CIVILAIDANT<36><>"" THEN RETURN
	END ELSE
		RETURN
	END

	* Si l'aid  une date de suppresion, il ne faut pas garder le couple.
	* Si l'aid n'existe pas du tout, on ne doit plus tenir compte du couple.
	READ ENR_CIVILAIDE FROM F.CIVILAIDE, W_Aide THEN
		IF ENR_CIVILAIDE<43><>"" THEN RETURN
	END ELSE
		RETURN
	END
	
	W_Garder="OUI"
	
RETURN

