SUBROUTINE BASCULINTERVSEMAINE(RETURNVAL,PARAMETRES,W_Result)
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "", "TPSDETAILSINTERV" TO F.TPSDETAILSINTERV ELSE RETURN
OPEN "" ,"TPSPARAM" TO F.TPSPARAM ELSE RETURN
OPEN "", "CIVILAIDANT" TO F.CIVILAIDANT ELSE RETURN
OPEN "", "CIVILAIDE" TO F.CIVILAIDE ELSE RETURN
OPEN "", "CONTRAT" TO F.CONTRAT ELSE RETURN
OPEN "", "ABSENCESAIDANT" TO F.ABSENCESAIDANT ELSE RETURN
OPEN "", "TPSTEMPO" TO F.TPSTEMPO ELSE RETURN

*******************************************************************************
*			Traitement absences (remplacements) :				*
*													*
* Penser a renseigner le paramtre ci dessous :						*
MidiConges = "1300"
*******************************************************************************


ListeAct = ""
NbAct = DCOUNT(PARAMETRES<1>,"|") - 1
FOR i = 1 TO NbAct
	ListeAct<-1> = FIELD(PARAMETRES<1>,"|",i)
NEXT i

DateDebRef = PARAMETRES<2> 
DateDebProsp = PARAMETRES<3> 

* TypeSel = "S" Secteur, "C" Commune, "I" Individuel
TypeSel = PARAMETRES<4>

* Si TypeSel = "S" ou "C" ou "I"
CodeSel = PARAMETRES<5>

W_Temp = 'SELECT TPSDETAILSINTERV AVEC DateDebInterv <= "':DateDebRef+6:'" AND AVEC DateDebInterv >= "':DateDebRef:'" AND AVEC 1 <= "':DateDebRef+6:'"'
W_Temp = W_Temp:' AND AVEC CodeActInterv = "':ListeAct<1>:'"'
FOR i = 2 TO NbAct
	W_Temp = W_Temp:' OR = "':ListeAct<i>:'"' 
NEXT i
IF TypeSel = "S" THEN
	IF CodeSel = "" THEN
		W_Temp = W_Temp:' PAR NomSecteurAidant'
	END ELSE
		W_Temp = W_Temp:' AND AVEC CodeSecteurAidant = "':CodeSel:'"'
	END
END ELSE
   IF TypeSel = "C" THEN
	IF CodeSel = "" THEN
		W_Temp = W_Temp:' PAR CommuneAidant'
	END ELSE
		W_Temp = W_Temp:' AND AVEC CommuneAidant = "':CodeSel:'"'
	END

   END ELSE
	IF TypeSel = "I" THEN
		W_Temp = W_Temp:' AND AVEC CodeAidant = "':CodeSel:'"'
	END ELSE
		W_Temp = W_Temp:' PAR NomPrenomAidantDetailInterv'
	END
   END
END 

READ ENR_TPSPARAM FROM F.TPSPARAM, "1" ELSE
	ENR_TPSPARAM<20> = "1"
END
PRINT W_Temp
EXECUTE W_Temp
EXECUTE 'SAUVE-LISTE W_ReqBasculSem'
EXECUTE 'LISTE W_ReqBasculSem' RETURNING MSGCODE
IF MSGCODE<1> #209 THEN
	SELECT F.TPSDETAILSINTERV TO W_ReqBasculSem
	GOSUB 100
	EXECUTE 'EFFACER-LISTE W_ReqBasculSem'
	W_Result = W_ListeChevauchAide
END ELSE
	IF TypeSel # "I" THEN
		W_Result<1> = "ERREUR"
		W_Result<2> = "Aucune intervention  basculer."
	END
END
RETURN

100 ***************************************************************************
*													*
*******************************************************************************
W_IndListeChevauchAide = 0
W_ListeChevauchAide = ""
W_Fin = "F"
LOOP
	READNEXT W_CleRef FROM W_ReqBasculSem ELSE W_Fin = "V"
WHILE W_Fin = "F"
	READ ENR_TPSDETAILSINTERV FROM F.TPSDETAILSINTERV, W_CleRef THEN
	  W_DateIntervProsp = DateDebProsp
	  LOOP WHILE W_DateIntervProsp - DateDebProsp # W_CleRef[22,1]
		W_DateIntervProsp = W_DateIntervProsp +1
	  REPEAT
	  IF ENR_TPSDETAILSINTERV<6> = "" THEN
		W_Passe = "V"
	  END ELSE
		W_Passe = "F"
		GOSUB 110
	  END
	  IF W_Passe = "V" THEN

		W_CleRetour = "BASCULSEM":TIME()

		W_CleProsp = W_CleRef[1,10]:W_DateIntervProsp:W_CleRef[16,11]
		W_ENTREE=""
		W_ENTREE<1>=W_CleRef[1,5]
		W_ENTREE<2>=W_CleRef[22,1]
		W_ENTREE<3>=W_CleRef[23,4]
		W_ENTREE<4>=ENR_TPSDETAILSINTERV<2>
		W_ENTREE<5>=ENR_TPSDETAILSINTERV<3>
		W_ENTREE<6>=W_CleRef[16,6]
		W_ENTREE<7>=W_DateIntervProsp
		W_ENTREE<8>=W_DateIntervProsp
		W_ENTREE<9>=1
		W_ENTREE<10>="S"
		W_ENTREE<11>=""
		W_ENTREE<12>=W_CleRef[6,5]
		W_ENTREE<13>="BA"
		W_ENTREE<15> = "3"

		WRITE W_ENTREE ON F.TPSTEMPO, "PARAMVERIFTPS":W_CleRetour

		W_SORTIE = ""
		EXECUTE 'VERIFTPS |':W_CleRetour
		READ W_SORTIE FROM F.TPSTEMPO, "VERIFTPS":W_CleRetour ELSE
			W_SORTIE<1> = "ERREUR"
		END
				
		DELETE F.TPSTEMPO, "PARAMVERIFTPS":W_CleRetour
		DELETE F.TPSTEMPO, "VERIFTPS":W_CleRetour

		IF W_SORTIE<1> = "OK" THEN
			ENR_TPSDETAILSINTERV<1> = W_DateIntervProsp
			WRITE ENR_TPSDETAILSINTERV ON F.TPSDETAILSINTERV, W_CleProsp
			IF W_SORTIE<6> # "" THEN
			   READ ENR_CIVILAIDANT FROM F.CIVILAIDANT, W_CleRef[1,5] THEN
				READ ENR_CIVILAIDE FROM F.CIVILAIDE, W_CleRef[6,5] THEN
					GOSUB 200 
			      END
			   END
			END
		END
	  END
	END
REPEAT
RETURN

110 *********************************************************************************
*	Traitement des remplacements : Vrification de la date de fin d'abs		*
*************************************************************************************
READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT, ENR_TPSDETAILSINTERV<6> THEN
	
	IF ENR_ABSENCESAIDANT<26> = "" THEN
		IF ENR_ABSENCESAIDANT<2> > W_DateIntervProsp THEN
			W_Passe = "V"
		END ELSE
		   IF ENR_ABSENCESAIDANT<2> = W_DateIntervProsp THEN
			IF ENR_TPSDETAILSINTERV<6>[6,2] > "06" AND ENR_ABSENCESAIDANT<3> = "1" THEN
				IF W_CleRef[23,4] < MidiConges THEN
					W_Passe = "V"
				END
			END ELSE
				W_Passe = "V"
			END
		   END
		END
	END ELSE
		* Gestion des exceptions / absence
		W_TrouveContrat = "F"
		i = 0
		LOOP
		i = i + 1
		WHILE ENR_ABSENCESAIDANT<26,i> # "" AND W_TrouveContrat = "F"
			READ ENR_CONTRAT FROM F.CONTRAT, ENR_ABSENCESAIDANT<26,i> THEN
			  IF (ENR_CONTRAT<1> = "02" AND ENR_CONTRAT<3> = W_CleRef[6,5]) OR (ENR_CONTRAT<1> # "02" AND INDEX(ENR_CONTRAT<36>,W_CleRef[16,6],1) # 0) THEN
				W_TrouveContrat = "V"
				i = i - 1
			  END
			END
		REPEAT
		IF W_TrouveContrat = "V" AND ENR_ABSENCESAIDANT<21,i> = "O" THEN
		* Nb : si ENR_ABSENCESAIDANT<21,i> = "N", alors c'est qu'il n'y a pas de conges pour ce contrat,
		* et donc on ne prolonge ps le remplacement qui n'aurait jamais du exister d'ailleurs.
			IF ENR_ABSENCESAIDANT<24,i> > W_DateIntervProsp THEN
			   W_Passe = "V"
			END ELSE
		   	   IF ENR_ABSENCESAIDANT<24,i> = W_DateIntervProsp THEN
				IF ENR_ABSENCESAIDANT<25,i> = "M" THEN
				   IF W_CleRef[23,4] < MidiConges THEN
					W_Passe = "V"
				   END
				END ELSE
				   W_Passe = "V"
				END
			   END
		   	END
		END
	
	END
END
RETURN

200 *********************************************************************************
*      		Mise en forme liste chevauchements aid					*
*************************************************************************************
W_IndListeChevauchAide = W_IndListeChevauchAide + 1
BEGIN CASE
	CASE W_CleRef[22,1] = "0"
		W_LibJour = "LUNDI"
	CASE W_CleRef[22,1] = "1"
		W_LibJour = "MARDI"
	CASE W_CleRef[22,1] = "2"
		W_LibJour = "MERCREDI"
	CASE W_CleRef[22,1] = "3"
		W_LibJour = "JEUDI"
	CASE W_CleRef[22,1] = "4"
		W_LibJour = "VENDREDI"
	CASE W_CleRef[22,1] = "5"
		W_LibJour = "SAMEDI"
	CASE 1
		W_LibJour = "DIMANCHE"
END CASE
W_ListeChevauchAide<W_IndListeChevauchAide> = W_CleRef[6,5]:"          ":TRIM(ENR_CIVILAIDE<2>:" ":ENR_CIVILAIDE<3>)[1,25]:SPACE(26 - LEN(TRIM(ENR_CIVILAIDE<2>:" ":ENR_CIVILAIDE<3>)[1,25])):W_LibJour
W_MinDeb = W_CleRef[25,2]
W_MinFin = ENR_TPSDETAILSINTERV<2>[3,2]
IF ENR_TPSPARAM<20> = "2" THEN
	W_MinDeb = INT(W_MinDeb/100 * 60 + 1/2) 
	W_MinFin = INT(W_MinFin/100 * 60 + 1/2)
	W_MinDeb = W_MinDeb"R%2"
	W_MinFin = W_MinFin"R%2"
END ELSE
	* Rien
END
W_IndListeChevauchAide = W_IndListeChevauchAide + 1
W_ListeChevauchAide<W_IndListeChevauchAide> ="   ":W_CleRef[1,5]:"       ":TRIM(ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>)[1,25]:SPACE(26 + LEN("MERCREDI") + 1 - LEN(TRIM(ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>)[1,25])):W_CleRef[23,2]:"h":W_MinDeb:"        ":ENR_TPSDETAILSINTERV<2>[1,2]:"h":W_MinFin


W_Count = DCOUNT(W_SORTIE<6>, CHAR(253))
FOR i = 1 TO W_Count
	READ ENR_CIVILAIDANT FROM F.CIVILAIDANT, W_SORTIE<6,i>[1,5] THEN
	   	READ ENR_TPSDETAILSINTERV2 FROM F.TPSDETAILSINTERV, W_SORTIE<6,i> THEN
			W_MinDeb = W_SORTIE<6,i>[25,2]
			W_MinFin = ENR_TPSDETAILSINTERV2<2>[3,2]
			IF ENR_TPSPARAM<20> = "2" THEN
				W_MinDeb = INT(W_MinDeb/100 * 60 + 1/2) 
				W_MinFin = INT(W_MinFin/100 * 60 + 1/2)
				W_MinDeb = W_MinDeb"R%2"
				W_MinFin = W_MinFin"R%2"
			END ELSE
				* Rien
			END
			W_IndListeChevauchAide = W_IndListeChevauchAide + 1
	      	W_ListeChevauchAide<W_IndListeChevauchAide> = "   ":W_SORTIE<6,i>[1,5]:"       ":TRIM(ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>)[1,25]:SPACE(26 + LEN("MERCREDI") + 1 - LEN(TRIM(ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>)[1,25])):W_SORTIE<6,i>[23,2]:"h":W_MinDeb:"        ":ENR_TPSDETAILSINTERV2<2>[1,2]:"h":W_MinFin
		END
	END
NEXT i
RETURN
