EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "", "TPSREMPLACEAIDANT" TO F.TPSREMPLACEAIDANT ELSE STOP
OPEN "", "TPSDETAILSINTERV" TO F.TPSDETAILSINTERV ELSE STOP
OPEN "", "ABSENCESAIDANT" TO F.ABSENCESAIDANT ELSE STOP
OPEN "", "TPSTEMPO" TO F.TPSTEMPO ELSE STOP

EXECUTE 'CATALOG PR RECTIFREMPL DIRECT FORCE'

W_Duree = TIMEDATE()
W_CleRetour="MiseANiveau361"
W_ReqMoulRemplacants1 = ""
OPEN "DICT", "TPSDETAILSINTERV" TO F.DICT THEN
	ENR=""
	ENR<1> = "V"
	ENR<2> = 'OCONV(AbsAidantDetailsInterv,@VM:"TABSENCESAIDANT;X;;2")'
	ENR<3> = ""
	ENR<4> = "Fin absence"
	ENR<5> = "5R"
	ENR<6> = "S"
	WRITE ENR ON F.DICT, "FinAbs"
END
CLOSE F.DICT

RETURNVAL = 0
W_Sortie = ""

* 1er traitement : traitement des articles de TPSREMPLACEAIDANT sous l'ancien format :
OPEN "DICT", "TPSREMPLACEAIDANT" TO F.DICT THEN
	ENR=""
	ENR<1> = "V"
	ENR<2> = 'LEN(FIELD(IntervTitulaire,CHAR(253),1))'
	ENR<3> = ""
	ENR<4> = "Longueur att1"
	ENR<5> = "2R"
	ENR<6> = "S"
	WRITE ENR ON F.DICT, "LEN1"
END
CLOSE F.DICT
* Super important, sinon risque de regnrer TOUS les remplacments
DELETE F.TPSREMPLACEAIDANT, ""

EXECUTE 'SELECT TPSREMPLACEAIDANT AVEC LEN1 = "5" AND AVEC 1 # ""'
EXECUTE 'SAUVE-LISTE W_ReqMoulRemplacants1'
EXECUTE 'LISTE W_ReqMoulRemplacants1' RETURNING MSGCODE
IF MSGCODE<1> # "209" THEN
   SELECT F.TPSREMPLACEAIDANT TO W_ReqMoulRemplacants1
   W_FIN1 = "F"
   LOOP
	READNEXT W_CodeRempl FROM W_ReqMoulRemplacants1 ELSE W_FIN1 = "V"
   WHILE W_FIN1 = "F"
	CALL RECTIFREMPL(RETURNVAL, W_CodeRempl, W_Sortie)


   REPEAT
END

EXECUTE 'EFFACER-LISTE W_ReqMoulRemplacants1'

* Super important, sinon risque de regnrer TOUS les remplacments
DELETE F.TPSREMPLACEAIDANT, ""


* 2eme traitement : articles de TPSREMPLACEAIDANT victimes d'un bug corrig version 3.6.1 : 
* On a en att 1 des cl TPSDETAILSINTERV n'existant plus.
* Nb : descripteur sur heure de fin intev pemet de les isoler.
OPEN "DICT", "TPSREMPLACEAIDANT" TO F.DICT THEN
	ENR=""
	ENR<1> = "V"
	ENR<2> = 'OCONV(IntervTitulaire,@VM:"TTPSDETAILSINTERV;X;;2")'
	ENR<3> = ""
	ENR<4> = "Hre Fin"
	ENR<5> = "4R"
	ENR<6> = "MV"
	WRITE ENR ON F.DICT, "HreFin"
	ENR=""
	ENR<1> = "V"
	ENR<2> = 'OCONV(IntervTitulaire,@VM:"TTPSDETAILSINTERVARCH;X;;2")'
	ENR<3> = ""
	ENR<4> = "Hre Fin"
	ENR<5> = "4R"
	ENR<6> = "MV"
	WRITE ENR ON F.DICT, "HreFinArch"

END
CLOSE F.DICT
EXECUTE 'SELECT TPSREMPLACEAIDANT AVEC HreFin = "" AND AVEC HreFinArch = "" AND AVEC 1 # ""'
EXECUTE 'SAUVE-LISTE W_ReqMoulRemplacants1'
EXECUTE 'LISTE W_ReqMoulRemplacants1' RETURNING MSGCODE
IF MSGCODE<1> # "209" THEN
   SELECT F.TPSREMPLACEAIDANT TO W_ReqMoulRemplacants1
   W_FIN1 = "F"
   LOOP
	READNEXT W_CodeRempl FROM W_ReqMoulRemplacants1 ELSE W_FIN1 = "V"
   WHILE W_FIN1 = "F"
	CALL RECTIFREMPL(RETURNVAL, W_CodeRempl, W_Sortie)


   REPEAT
END

EXECUTE 'EFFACER-LISTE W_ReqMoulRemplacants1'

* Super important, sinon risque de regnrer TOUS les remplacments
DELETE F.TPSREMPLACEAIDANT, ""

* 3eme traitement : Traitement des ventuelles absences sans article associ dans TPSREMPLACEAIDANT
OPEN "DICT","ABSENCESAIDANT" TO F.DICT THEN
ENR= ""
ENR<1> = "V"
ENR<2> = 'OCONV(@ID,@VM:"TTPSREMPLACEAIDANT;X;;0")' 
ENR<3> = ""
ENR<4> = "Presence TpsRemplaceaidant"
ENR<5> = "12R"
ENR<6> = "S"
WRITE ENR ON F.DICT, "PresenceTps"
END
CLOSE F.DICT
W_DateRef = DATE() - 3

* Super important, sinon risque de regnrer TOUS les remplacments
DELETE F.ABSENCESAIDANT, ""


* Vu l'importance du trt, on ne va le faire que sur les absences susceptibles d'tre consultes : 
* Nb : ces abs n'ont jamais fait l'objet d'un remplacement : aucun intrt  les avoir envisu e ttes faon !
EXECUTE 'SELECT ABSENCESAIDANT AVEC PresenceTps = "" AND AVEC NumMotifAidant # "18" AND # "19" AND # "20" AND # "21" AND AVEC 2 >= "':W_DateRef:'"'
EXECUTE 'SAUVE-LISTE W_ReqMoulRemplacants1'
EXECUTE 'LISTE W_ReqMoulRemplacants1' RETURNING MSGCODE
IF MSGCODE<1> # "209" THEN
   SELECT F.ABSENCESAIDANT TO W_ReqMoulRemplacants1
   W_FIN1 = "F"
   LOOP
	READNEXT W_CodeRempl FROM W_ReqMoulRemplacants1 ELSE W_FIN1 = "V"
   WHILE W_FIN1 = "F"
	CALL RECTIFREMPL(RETURNVAL, W_CodeRempl, W_Sortie)



   REPEAT
END

EXECUTE 'EFFACER-LISTE W_ReqMoulRemplacants1'

* Super important, sinon risque de regnrer TOUS les remplacments
DELETE F.TPSREMPLACEAIDANT, ""


* 4eme traitement : On "bloque" ou "traite" les remplacements infrieurs  date systme - 3 jours.
W_DateRef = DATE()
W_MoisRef = ICONV("01/":OCONV(W_DateRef,"D4/")[4,7],"D4/")
IF W_DateRef - W_MoisRef > 3 THEN
	W_DateRef = W_MoisRef
END ELSE
	W_DateRef = ICONV("01/":OCONV(W_DateRef-5,"D4/")[4,7],"D4/")
END
EXECUTE 'SELECT TPSREMPLACEAIDANT AVEC FinAbsAidant < "':W_DateRef:'" AND AVEC 2 = ""'
W_Fin = "F"
LOOP
READNEXT W_Cle ELSE W_Fin = "V"
WHILE W_Fin = "F"
   READ ENR_TPSREMPLACEAIDANT FROM F.TPSREMPLACEAIDANT, W_Cle THEN
	W_Modifie = "f"
	i = 0
	LOOP
	i = i + 1
	WHILE ENR_TPSREMPLACEAIDANT<1,i> # ""
	   IF ENR_TPSREMPLACEAIDANT<2,i> = "" THEN
		IF ENR_TPSREMPLACEAIDANT<5,i> = "" THEN
			ENR_TPSREMPLACEAIDANT<2,i> = "1"
		END ELSE
			ENR_TPSREMPLACEAIDANT<2,i> = "2"
		END
		W_Modifie = "v"
	   END
	REPEAT
	IF W_Modifie = "v" THEN
		WRITE ENR_TPSREMPLACEAIDANT ON F.TPSREMPLACEAIDANT, W_Cle 
	END
   END
REPEAT


PRINT "Debut  ":W_Duree
PRINT "Fin a ":TIMEDATE()
STOP
