OPEN "", "TPSDETAILSINTERV" TO F.TPSDETAILSINTERV ELSE STOP
OPEN "", "ABSENCESAIDANT" TO F.ABSENCESAIDANT ELSE STOP
OPEN "", "TPSREMPLACEAIDANT" TO F.TPSREMPLACEAIDANT ELSE STOP
OPEN "", "TPSTEMPO" TO F.TPSTEMPO ELSE STOP

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


PROCREAD PARAMETRES ELSE STOP
W_CodeAbs = FIELD(PARAMETRES, "|",2)
W_User = FIELD(PARAMETRES, "|",3)

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
*   PRINT W_ParamsDetails
   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
   
    ********************************
    * test erreur
        W_Heure = TIMEDATE()[1,8]
		EXECUTE 'GETUSER' RETURNING MSGCODE
		W_User=MSGCODE<2,2>
        W_Entree = W_User:"|":W_Heure:"|MISEAJOURTPSREMPLACEAIDANT|":W_CodeAbs:"|":ENR_TPSREMPLACEAIDANT
		CALL VERIFREMPL(W_RETURNVAL,W_Entree,W_SORTIE)
    ******************************** 
   
   WRITE ENR_TPSREMPLACEAIDANT ON F.TPSREMPLACEAIDANT, W_CodeAbs
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
   READ ENR_TPSDETAILSINTERV FROM F.TPSDETAILSINTERV, W_RequeteDetails<i> THEN
	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>	
   
      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
						* Le remplacement a t supprim lors de la modification de l'absence
						* => rien ne perdure....
					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
   END
NEXT i

RETURN
