EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "", "TPSREMPLACEAIDANT" TO F.ANCIEN ELSE STOP
OPEN "", "TPSDETAILSINTERV" TO F.TPSDETAILSINTERV ELSE STOP
OPEN "", "ABSENCESAIDANT" TO F.ABSENCESAIDANT ELSE STOP
OPEN "", "TPSTEMPO" TO F.TPSTEMPO ELSE STOP
OPEN "", "MOULMAJREMPLACEMENTS" TO F.NOUVEAU ELSE
	EXECUTE 'CREER-FICHIER MOULMAJREMPLACEMENTS 1,1'
	OPEN "", "MOULMAJREMPLACEMENTS" TO F.NOUVEAU ELSE STOP
END
W_Duree = TIMEDATE()
W_CleRetour="MiseANiveau360"
W_ReqMoulRemplacants = ""

EXECUTE 'SELECT TPSDETAILSINTERV AVEC 6 # "" PAR 6 PAR CodeAide PAR CodeActInterv PAR DateDebInterv PAR JourInterv PAR HeureInterv'
EXECUTE 'SAUVE-LISTE W_ReqMoulRemplacants'
EXECUTE 'LISTE W_ReqMoulRemplacants' RETURNING MSGCODE
IF MSGCODE<1> # "209" THEN

   SELECT F.TPSDETAILSINTERV TO W_ReqMoulRemplacants

   W_TamponAbs = ""
   W_Fin = "F"
   LOOP
	READNEXT W_Cle FROM W_ReqMoulRemplacants ELSE W_Fin = "V"
   WHILE W_Fin = "F"
    READ ENR_TPSDETAILSINTERV FROM F.TPSDETAILSINTERV, W_Cle THEN
	IF ENR_TPSDETAILSINTERV<6> # W_TamponAbs THEN
	   IF W_TamponAbs # "" THEN
		GOSUB 100
	   END
	   W_TamponAbs = ENR_TPSDETAILSINTERV<6>
	   READ ENR_ANCIEN FROM F.ANCIEN, W_TamponAbs ELSE ENR_ANCIEN = ""
	   GOSUB 200
	END
	GOSUB 300	
    END
   REPEAT
 

   
END
EXECUTE 'EFFACER-LISTE W_ReqMoulRemplacants'
EXECUTE 'RUN PRMOUL CREETPSREMPLAIDANT'
PRINT "Debut  ":W_Duree
PRINT "Fin a ":TIMEDATE()
STOP

100 *********************************************************************
*		Ecriture TPSREMPLACEAIDANT				*
*									*
*************************************************************************
    k = 0
    LOOP
	k = k + 1
    WHILE ENR_NOUVEAU<1,k> # ""
     IF ENR_NOUVEAU<5,k> # "" AND ENR_NOUVEAU<2,k> # "1" THEN
	
	READ ENR_INTER FROM F.TPSDETAILSINTERV, ENR_NOUVEAU<1,k> ELSE ENR_INTERV<1> = ""
	IF ENR_INTER<1> = "" THEN
		ENR_INTERV<1> = "99999"
	END
	IF ENR_NOUVEAU<1,k>[11,5] > W_DebAbs THEN
		W_DateMin = ENR_NOUVEAU<1,k>[11,5]
	END ELSE
		W_DateMin = W_DebAbs
	END
	IF ENR_INTERV<1> > W_FinAbs THEN
		W_DateMax = W_FinAbs
	END ELSE
		W_DateMax = ENR_INTERV<1>
	END
	W_Partiel = "F"
	IF ENR_NOUVEAU<3,k,1> - W_DateMin >= 7 THEN
		W_Partiel = "V"
	END ELSE
		t = 1
		W_Max = ENR_NOUVEAU<4,k,1>
		LOOP
			t = t + 1
		WHILE ENR_NOUVEAU<5,k,t> # "" AND W_Partiel = "F"
			IF ENR_NOUVEAU<3,k,t> - W_Max >= 7 THEN
				W_Partiel = "V"
			END
			IF W_Max < ENR_NOUVEAU<4,k,t> THEN
				W_Max = ENR_NOUVEAU<4,k,t>
			END
		REPEAT
		IF W_Partiel = "F" THEN
			IF W_DateMax - W_Max >= 7 THEN
				W_Partiel = "V"
			END
		END
	END
	IF W_Partiel = "F" THEN
		ENR_NOUVEAU<2,k,1> = "2"
	END ELSE
		
	END
	
     END
    REPEAT
    WRITE ENR_NOUVEAU ON F.ANCIEN, W_TamponAbs
RETURN

200 *********************************************************************
*	Renseignement de ala liste des interventions  remplacer :	*
*************************************************************************
ENR_NOUVEAU = ""
READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT, W_TamponAbs  THEN 
 W_DebAbs = W_TamponAbs[8,5]
 W_FinAbs = ENR_ABSENCESAIDANT<2>

 IF ENR_ABSENCESAIDANT<2> - W_TamponAbs <= 60 THEN
   W_ParamsDetails = ""
   W_ParamsDetails = "AFFICHEPLANNING |":W_CleRetour:"||PMIS|":W_TamponAbs[8,5]:"|":ENR_ABSENCESAIDANT<2>:"|":"|":"|":W_TamponAbs[1,5]:"|REMPLACEMENT||":W_TamponAbs
   PRINT W_ParamsDetails
   W_RequeteDetails = ""
   EXECUTE W_ParamsDetails
   READ W_RequeteDetails FROM F.TPSTEMPO, "AFFICHEPLANNING":W_CleRetour ELSE W_RequeteDetails = ""
   IF W_RequeteDetails = "Echec" THEN         
      W_ParamsDetails = ""
      W_ParamsDetails = 'SSELECT TPSDETAILSINTERV AVEC 0 = "':W_TamponAbs:']" AND AVEC DateDebInterv <= "':ENR_ABSENCESAIDANT<2>:'" AND AVEC 1 => "':W_TamponAbs[8,5]:'" OR = "" PAR CodeAide PAR CodeActInterv PAR JourInterv PAR HeureInterv'
                   
      EXECUTE W_ParamsDetails
      W_Fin = "F"
      LOOP
	READNEXT W_Cle2 ELSE W_Fin = "V"
      WHILE W_Fin = "F"
		W_RequeteDetails<-1> = W_Cle2
      REPEAT
         
   END

 END ELSE
   W_ParamsDetails = ""
   W_ParamsDetails = 'SSELECT TPSDETAILSINTERV AVEC 0 = "':W_TamponAbs:']" AND AVEC DateDebInterv <= "':ENR_ABSENCESAIDANT<2>:'" AND AVEC 1 => "':W_TamponAbs[8,5]:'" OR = "" PAR CodeAide PAR CodeActInterv PAR JourInterv PAR HeureInterv'
                   
   EXECUTE W_ParamsDetails
   W_Fin = "F"
   LOOP
	READNEXT W_Cle2 ELSE W_Fin = "V"
   WHILE W_Fin = "F"
	W_RequeteDetails<-1> = W_Cle2
   REPEAT

 END
 i = 0
 LOOP
  i = i + 1
 WHILE W_RequeteDetails<i> # ""
   ENR_NOUVEAU<1,i> = W_RequeteDetails<i>
 REPEAT

END ELSE
	ENR_NOUVEAU = ""
	W_DebAbs = W_TamponAbs[8,5]
	* Nb : ne devrait pas arriver !
      W_FinAbs = W_TamponAbs + 30

END
GOSUB 210
RETURN

210 *********************************************************************
*									*
*************************************************************************
W_DernAide = ""
W_Bloquer="F"
i = 0
LOOP
i = i + 1
WHILE ENR_NOUVEAU<1,i> # ""
	IF ENR_NOUVEAU<1,i>[6,5]:ENR_NOUVEAU<1,i>[16,6] = W_DernAide THEN
	    IF W_Bloquer = "V" THEN
		ENR_NOUVEAU<2,i> = "1"
	    END
	END ELSE
		W_DernAide = ENR_NOUVEAU<1,i>[6,5]:ENR_NOUVEAU<1,i>[16,6]
		W_Bloquer = "F"
		k = 0
		LOOP
		k = k + 1 
		WHILE NOT ((ENR_ANCIEN<1,k> = W_DernAide[1,5] AND ENR_ANCIEN<2,k> = W_DernAide[6,6]) OR ENR_ANCIEN<1,k> = "")
		REPEAT
		IF ENR_ANCIEN<3,k> = "B" THEN
			W_Bloquer = "V"
			ENR_NOUVEAU<2,i> = "1"
		END ELSE
			
		END
	END
REPEAT

RETURN

300 *********************************************************************
*												*
*************************************************************************
i = 0
LOOP
i = i + 1
WHILE ENR_NOUVEAU<1,i>[6,5] <= W_Cle[6,5] AND ENR_NOUVEAU<1,i> # ""
   IF ENR_NOUVEAU<1,i>[6,5] = W_Cle[6,5] AND ENR_NOUVEAU<1,i>[16,6] = W_Cle[16,6] THEN
	IF ENR_NOUVEAU<2,i> = "1" THEN
		EXIT
	END ELSE
		ENR_NOUVEAU<3,i,-1> = W_Cle[11,5]
		ENR_NOUVEAU<4,i,-1> = ENR_TPSDETAILSINTERV<1>
		ENR_NOUVEAU<5,i,-1> = W_Cle
	END
   END
REPEAT

RETURN
