*************************************************
* BATCH QUI SELECTIONNE LES TPSREMPLACEAIDANT 	*
* AVEC DES MV VIDES EN ATT 1					*
* ET QUI LES REGENERE 							*
* VANESSA 08/10/10								*
*************************************************

OPEN "", "TPSDETAILSINTERV" TO F.TPSDETAILSINTERV ELSE STOP
OPEN "", "TPSDETAILSINTERVARCH" TO F.TPSDETAILSINTERVARCH ELSE STOP
OPEN "", "ABSENCESAIDANT" TO F.ABSENCESAIDANT ELSE STOP
OPEN "", "TPSREMPLACEAIDANT" TO F.TPSREMPLACEAIDANT ELSE STOP
OPEN "", "TPSTEMPO" TO F.TPSTEMPO ELSE STOP
OPEN "", "SUIVACCORDPROSP" TO F.SUIVACCORDPROSP ELSE STOP
* MODIF VANESSA DA9112-01
OPEN "", "ACTUSUIVICONTRAT" TO F.ACTUSUIVICONTRAT ELSE STOP
OPEN "", "ACTIVITES" TO F.ACTIVITES ELSE STOP

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

PRINT DATE()
DEBUG

W_RequeteDepart=""
EXECUTE 'SELECT TPSREMPLACEAIDANT AVEC 1 = "" AND AVEC FinAbsAidant >= "':DATE():'"'
EXECUTE 'SAUVE-LISTE W_RequeteDepart'
EXECUTE 'LISTE W_RequeteDepart' RETURNING MSGCODE

IF MSGCODE<1> # "209" THEN
	SELECT F.TPSREMPLACEAIDANT TO W_RequeteDepart
	
	W_Fini = "F"
	LOOP
		READNEXT W_CleDepart FROM W_RequeteDepart ELSE W_Fini = "V"
	WHILE W_Fini = "F"
		READ ENR_TPSREMPLACEAIDANT FROM F.TPSREMPLACEAIDANT, W_CleDepart ELSE ENR_TPSREMPLACEAIDANT=""
		
		W_CodeAbs = W_CleDepart
		W_User = "BATCH"
		
		W_CleRetour = "CREATIONTPSREMPLACEAIDANT":W_User
		READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT, W_CodeAbs THEN
		
			W_ParamsDetails = ""
			W_ParamsDetails = "AFFICHEPLANNING |":W_CleRetour:"||PMIS|":W_CodeAbs[8,5]:"|":ENR_ABSENCESAIDANT<2>:"|":"|":"|":W_CodeAbs[1,5]:"|REMPLACEMENT||":W_CodeAbs
			W_RequeteDetails = ""
			EXECUTE W_ParamsDetails
			READ W_RequeteDetails FROM F.TPSTEMPO, "AFFICHEPLANNING":W_CleRetour THEN
				IF W_RequeteDetails = "Echec" THEN
				
					W_ParamsDetails = ""
					W_ParamsDetails = 'SSELECT TPSDETAILSINTERV AVEC 0 = "':W_CodeAbs[1,5]:']" AND AVEC DateDebInterv <= "':ENR_ABSENCESAIDANT<2>:'" AND AVEC 1 => "':W_CodeAbs[8,5]:'" OR = "" PAR CodeAide PAR CodeActInterv PAR JourInterv PAR HeureInterv'
					
					EXECUTE W_ParamsDetails
					W_Fin = "F"
					LOOP
						READNEXT W_Cle ELSE W_Fin = "V"
					WHILE W_Fin # "F"
						W_RequeteDetails<-1> = W_Cle
					REPEAT
				END
				DELETE F.TPSTEMPO, "AFFICHEPLANNING":W_CleRetour
			END
			
			READ ENR_SAUVE FROM F.TPSREMPLACEAIDANT, W_CodeAbs ELSE
				ENR_SAUVE = ""
			END
			
			ENR_TPSREMPLACEAIDANT = ""
			GOSUB 100
			
			WRITE ENR_TPSREMPLACEAIDANT ON F.TPSREMPLACEAIDANT, W_CodeAbs
		END
	REPEAT
END

STOP

***************************************************
100
* Nb : W_RequeteDetail tri par code aid, act, jour puis heure.

W_Count = DCOUNT(W_RequeteDetails,CHAR(254))
FOR i = 1 TO W_Count
	* MODIF VANESSA 06/09/10 - DA 10220 - Si l'intervention n'existe pas dans le fichier TPSDETAILSINTERV, lire le fichier TPSDETAILSINTERVARCH
	READ ENR_TPSDETAILSINTERV FROM F.TPSDETAILSINTERV, W_RequeteDetails<i> THEN
		GOSUB 300
	END ELSE
		READ ENR_TPSDETAILSINTERV FROM F.TPSDETAILSINTERVARCH, W_RequeteDetails<i> THEN	
			GOSUB 300
		END
	END
NEXT i

RETURN

***************************************************
* maj du fichier SUIVACCORDPROSP
* modif vanessa 02/04/09
200

    W_DateSys = OCONV(DATE(), "D4/")
    W_PeriodeSys = W_DateSys[7,4]:W_DateSys[4,2]
    
    FOR j = 1 TO 3
        IF j # 1 THEN
            W_PeriodeSys = W_PeriodeSys + 1
            IF W_PeriodeSys[5,2] = "13" THEN
                W_PeriodeSys = W_PeriodeSys[1,4]+1:"01"
            END
        END
        W_CleProsp = W_CodeAide:W_PeriodeSys
		READ ENR_SUIVACCORDPROSP FROM F.SUIVACCORDPROSP,W_CleProsp ELSE ENR_SUIVACCORDPROSP=""
        ENR_SUIVACCORDPROSP<8> = "1"
		WRITE ENR_SUIVACCORDPROSP ON F.SUIVACCORDPROSP, W_CleProsp		
    NEXT j
	
	*modif vanessa 04/11/09 DA9112-01 - maj ACTUSUIVICONTRAT
	READ ENR_ACTIVITES FROM F.ACTIVITES,W_CodeAct ELSE ENR_ACTIVITES=""
	IF ENR_ACTIVITES<12> # "M" THEN
		ENR_ACTUSUIVICONTRAT=""
		WRITE ENR_ACTUSUIVICONTRAT ON F.ACTUSUIVICONTRAT,W_CodeAidant
	END
	
RETURN

***************************************************
300

	W_DateFinRempl = ENR_TPSDETAILSINTERV<1>
	IF W_DateFinRempl = "" THEN
		W_DateFinRempl = ENR_ABSENCESAIDANT<2>
	END ELSE
		IF W_DateFinRempl > ENR_ABSENCESAIDANT<2> THEN
			W_DateFinRempl = ENR_ABSENCESAIDANT<2>
		END
	END
	
	W_DateDebRempl = W_CodeAbs[8,5]
	IF W_DateDebRempl < W_RequeteDetails<i>[11,5] THEN
		W_DateDebRempl = W_RequeteDetails<i>[11,5]
	END
	
	ENR_TPSREMPLACEAIDANT<1,i> =  W_RequeteDetails<i>
	
	* modif vanessa 02/04/09 - maj SUIVACCORDPROSP
	* + modif vanessa 04/11/09 DA9112-01 - maj ACTUSUIVICONTRAT
	W_CodeAide=W_RequeteDetails<i>[6,5]
	W_CodeAidant=W_RequeteDetails<i>[1,5]
	W_CodeAct=W_RequeteDetails<i>[16,6]
	GOSUB 200
	** fin modif
	
	W_Trouve = "F"
	k = 0
	LOOP
		k = k + 1
	WHILE ENR_SAUVE<1,k> # "" AND W_Trouve = "F"
		Cle1 = ENR_SAUVE<1,k>
		Cle2 = W_RequeteDetails<i>
		IF Cle1 = Cle2 THEN
		
			IF ENR_SAUVE<2,k> = "1" THEN
				ENR_TPSREMPLACEAIDANT<2,i> =  "1"
			END ELSE
				IF ENR_SAUVE<2,k> = "" AND ENR_SAUVE<5> = "" THEN
					* A traiter : rien a faire....
				END ELSE
					* trait partiel ou total
					W_DateDeb = W_CodeAbs[8,5]
					m = 0
					t = 0
					LOOP
						m = m + 1
					WHILE ENR_SAUVE<5,k,m> # ""
						IF ENR_SAUVE<5,k,m>[11,5] < W_CodeAbs[8,5] THEN
							W_CleRemplacement = ENR_SAUVE<5,k,m>[1,10]:W_CodeAbs[8,5]:ENR_SAUVE<5,k,m>[16,16]
						END ELSE
							W_CleRemplacement = ENR_SAUVE<5,k,m>
						END
						READ ENR_TPSDETAILSINTERV FROM F.TPSDETAILSINTERV, W_CleRemplacement THEN
							t = t + 1
							* On conserve ce remplacement :
							ENR_TPSREMPLACEAIDANT<5,i,t> =  W_CleRemplacement
							ENR_TPSREMPLACEAIDANT<3,i,t> =  W_CleRemplacement[11,5]
							ENR_TPSREMPLACEAIDANT<4,i,t> =  ENR_TPSDETAILSINTERV<1>
						END ELSE
							READ ENR_TPSDETAILSINTERV FROM F.TPSDETAILSINTERVARCH, W_CleRemplacement THEN
								t = t + 1
								* On conserve ce remplacement :
								ENR_TPSREMPLACEAIDANT<5,i,t> =  W_CleRemplacement
								ENR_TPSREMPLACEAIDANT<3,i,t> =  W_CleRemplacement[11,5]
								ENR_TPSREMPLACEAIDANT<4,i,t> =  ENR_TPSDETAILSINTERV<1>								
							END ELSE
								* Le remplacement a t supprim lors de la modification de l'absence
								* => rien ne perdure....
							END
						END
					REPEAT
					W_Etat = "total"
					IF ENR_TPSREMPLACEAIDANT<3,i,1> - W_DateDebRempl >= 7 THEN
						W_Etat = "partiel"
					END ELSE
						W_Max = ENR_TPSREMPLACEAIDANT<4,i,1>
						m = 1
						LOOP
							m = m + 1
						WHILE ENR_TPSREMPLACEAIDANT<5,i,m>  # "" AND W_Etat = "total"
							IF ENR_TPSREMPLACEAIDANT<3,i,m> - W_Max >= 7 THEN
								W_Etat = "partiel"
							END
							IF W_Max < ENR_TPSREMPLACEAIDANT<4,i,m> THEN
								W_Max = ENR_TPSREMPLACEAIDANT<4,i,m>
							END
						REPEAT
					END
					IF W_Etat = "total" THEN
						IF W_DateFinRempl - W_Max >= 7 THEN
							W_Etat = "partiel"
						END
					END
					IF W_Etat = "total" THEN
						ENR_TPSREMPLACEAIDANT<2,i> = "2"
					END ELSE
						ENR_TPSREMPLACEAIDANT<2,i> = ""
					END
				END
			END
			W_Trouve = "V"
		END
	REPEAT
RETURN