SUBROUTINE BASCULPAIEPLG(RETURNVAL,PARAMETRES,W_Sortie)

*************************************************************************************************************
*					PR de basculement en paie des informatins du planning					*
*																		*
* Il s'agit de gnrer  partir du fichier TPSDETAILSINTERV les articles correspondant des fichiers 		*
*         DETAILPREST, DETAILMANDAT, DETAILINTER, DETAILADMIN...								*
*	    + Gnration dans W_Sortie d'un rapport d'erreurs signalant  l'utilisateur les ventuelles 	*
*	    anomalies rencontres													*
*         Convention utilise : les variables dont la valeur est fixe (qui ne doivent pas changer) 		*
*         sont nommes sans "W_"... (Parametres d'appel du PR, NbJours a afficher...)				*
*	Nb : renseigner paramtre ci dessous : 											*
MidiConges = "1300"
*************************************************************************************************************

* MICHAEL, le 28/05 : test en intgration a partir du planning : OK
* Reste a tester en intgration d'un fichier detlgestion...
*Nb: procdure d'appel du PR INTEGRESOLEM modifie pour ne plus passr de priode, mais date deb + date fin...Voir si fonctionne...


EXECUTE 'DATE.FORMAT'
EXECUTE 'SET-DEC ,'
EXECUTE "SET-THOUS ."
OPEN "", "DETAILPREST" TO F.DETAILPREST ELSE RETURN
OPEN "", "DETAILMANDAT" TO F.DETAILMANDAT ELSE RETURN
OPEN "", "DETAILINTER" TO F.DETAILINTER ELSE RETURN
OPEN "", "DETAILADMIN" TO F.DETAILADMIN ELSE RETURN
OPEN "", "TPSPARAMBASCUL" TO F.TPSPARAMBASCUL ELSE RETURN
OPEN "", "CONTRAT" TO F.CONTRAT ELSE RETURN
OPEN "", "CIVILAIDANT" TO F.CIVILAIDANT ELSE RETURN
OPEN "", "ELTSPARTEMP" TO F.ELTSPARTEMP ELSE RETURN
OPEN "", "DETAILCALCUL" TO F.DETAILCALCUL ELSE RETURN
OPEN "", "ARCHIVEBULL" TO F.ARCHIVEBULL ELSE RETURN
OPEN "", "AIDANTSARCHIVEBULL" TO F.AIDANTSARCHIVEBULL ELSE RETURN
OPEN "", "AIDESARCHIVEBULL" TO F.AIDESARCHIVEBULL ELSE RETURN
OPEN "", "CIVILAIDE" TO F.CIVILAIDE ELSE RETURN
OPEN "", "ASSOCIATION" TO F.ASSOCIATION ELSE RETURN
OPEN "", "RUBSAISIE" TO F.RUBSAISIE ELSE RETURN
OPEN "", "TPSMOI" TO F.TPSMOI ELSE RETURN
OPEN "", "PAQUES" TO F.PAQUES ELSE RETURN
OPEN "", "TEMPO" TO F.TEMPO ELSE RETURN
OPEN "", "SECTEUR" TO F.SECTEUR ELSE RETURN
OPEN "", "FUSION" TO F.FUSION ELSE STOP
OPEN "", "TPSTEMPO" TO F.TPSTEMPO ELSE RETURN
OPEN "", "TPSDETAILSINTERV" TO F.TPSDETAILSINTERV ELSE RETURN
OPEN "", "ABSENCESAIDANT" TO F.ABSENCESAIDANT ELSE STOP

* Nom utilisateur
User = FIELD(PARAMETRES,"|",2)

* Code asso ou [Vide]
Asso = FIELD(PARAMETRES,"|",3)

* Type d'activit
* Nb : = "P", "M", "I" ou "S"
TypeAct = FIELD(PARAMETRES,"|",4)

* Periode a traiter :
Periode = FIELD(PARAMETRES,"|",5)
IF Periode # "" THEN
   DateDeb = ICONV("01/":Periode[5,2]:"/":Periode[1,4],"D4/")
   IF Periode[5,2] = "12" THEN
	DateFin = ICONV("31/12/":Periode[1,4],"D4/")
   END ELSE
	DateFin = ICONV("01/":Periode[5,2]+1"R%2":"/":Periode[1,4],"D4/") - 1
   END
END ELSE
	DateDeb = FIELD(PARAMETRES,"|",15)
	DateFin = FIELD(PARAMETRES,"|",16)
	Periode = OCONV(DateDeb,"D4/")
	Periode = Periode[7,4]:Periode[4,2]
END
NbJours = DateFin - DateDeb + 1

* Critres de tri : (S)ecteur, (C)ommune ou (A)idant = individuel...
Tri = FIELD(PARAMETRES,"|",6)

* Code dans la slection
Selection = FIELD(PARAMETRES,"|",7)

* Basculement de la MOD
BasculMOD = FIELD(PARAMETRES,"|",8)

* Basculement de la MOI
BasculMOI = FIELD(PARAMETRES,"|",9)

* Traitement bulletin existant
AnnuleBS = FIELD(PARAMETRES,"|",10)

* Integration dtaille (prestataire)
SaisieJour = FIELD(PARAMETRES,"|",11)

* Nom fichier (uniquement si appel du PR par le prog de tlgestion)
NomFichierTlg = FIELD(PARAMETRES,"|",12)

* code du systme de tlgestion (uniquement si appel du PR par le prog de tlgestion)
SystemeTlg = FIELD(PARAMETRES,"|",13)

Traitement = FIELD(PARAMETRES,"|",14)

W_EcraseMOI = FIELD(PARAMETRES,"|",15)

ENR_TEMPO = ""
ENR_TEMPO<1> = "User : ":User
ENR_TEMPO<-1> = "Asso : ":Asso
ENR_TEMPO<-1> = "TypeAct : ":TypeAct
ENR_TEMPO<-1> = "Periode : ":Periode
ENR_TEMPO<-1> = "Tri : ":Tri
ENR_TEMPO<-1> = "Selection : ":Selection
ENR_TEMPO<-1> = "BasculMOD : ":BasculMOD
ENR_TEMPO<-1> = "BasculMOI : ":BasculMOI
ENR_TEMPO<-1> = "AnnuleBS : ":AnnuleBS
ENR_TEMPO<-1> = "SaisieJour : ":SaisieJour
ENR_TEMPO<-1> = "NomFichier : ":NomFichierTlg
WRITE ENR_TEMPO ON F.TEMPO, "Debug"
W_TriErr = ""
W_Sortie = ""
GOSUB 1000

IF W_Sortie = "" THEN
	GOSUB 100
END ELSE
	W_Sortie<2> = W_Sortie
	W_Sortie<1> = "Erreur"
END

WRITE ENR_TEMPO ON F.TEMPO, "RapportMT"
WRITE TabInterv ON F.TEMPO, "ResultInterv"

**
IF NomFichierTlg # "" THEN
	READ ENR_TEMPOSOLEM FROM F.TEMPO,"ERREURINTEGRESOLEM" THEN
		W_Indice=DCOUNT(ENR_TEMPOSOLEM,CHAR(254))
	END ELSE
		ENR_TEMPOSOLEM=""
		W_Indice=0
	END
	W_Count=DCOUNT(W_Sortie,CHAR(254))
	FOR i = 1 TO W_Count
		ENR_TEMPOSOLEM<W_Indice+i>=W_Sortie<i>
	NEXT i
	WRITE ENR_TEMPOSOLEM ON F.TEMPO,"ERREURINTEGRESOLEM"
END
**

RETURN

100 ***************************************************************************
*                   		Traitement principal				*
*******************************************************************************
* 1ere partie : appel de la SubRoutine AffichePlanning
IF NomFichierTlg="" THEN
	GOSUB 110
END ELSE
*	IF SystemeTlg # "05" AND SystemeTlg # "04" THEN
*		BasculMOI="0"
*	END

	GOSUB 111
	
END

IF W_Sortie = "" THEN
	W_ReqContrat = ""
	* 2eme partie : requete CONTRAT
	GOSUB 120
END

IF W_Sortie = "" THEN
	W_TotalHresMand=0
	PeriodePrecedente = Periode -1
	IF PeriodePrecedente[5,2] = "00" THEN
		PeriodePrecedente = Periode[1,4]-1
		PeriodePrecedente = PeriodePrecedente:"12"
	END

	W_NonTrav = "F"
	
	W_ReqMoi = ""
	W_NomReqMoi = ""
	W_DerniereAnneeFerieProsp = ""

	* maj 23/11/05 : On stocke TOUTES la MOI ecrite 
	* afin de nepas la rcrire en fin de traitement, lorsque l'on traite les congs sur les jours fris.

	W_RecapMoi = ""
	W_IndRecapMoi = 0

	W_MettreChez = "F"

	W_DerniereAsso = ""
	ENR_CIVILAIDEERR = ""

	W_IndSortie = 1

	W_FinContrat = "F"
	W_AidantEnCoursTabInterv = ""
	W_IndTabInterv = 0
	W_SecteurInterv = ""
	W_SecteurContrat = ""
	W_IndAidantEnCoursTabInterv = 0

	W_DernAidant410 = ""
	W_DernIndAidant410 = 0
	W_DernIndAidant2000 = 0
	W_DernierContrat = ""

	LOOP
		READNEXT W_CleContrat FROM W_ReqContrat ELSE W_FinContrat = "V"
		
		IF W_DernierContrat # "" THEN
		   IF W_TraiteContrat = "V" THEN
			IF Traitement # "ISC" THEN
				GOSUB 150
			END
		   END
		END
		IF W_CleContrat[1,5] # W_DernierContrat[1,5] AND W_FinContrat # "V" THEN
			* 1ert : traitement des ventuelles interventions qui n'ont pas pu tre bascules
			IF W_IndAidantEnCoursTabInterv # 0 THEN
				GOSUB 410
			END
			* Recherche des interventions du nouvel aidant
			GOSUB 160
			
		END
		W_DernierContrat = W_CleContrat

	WHILE W_FinContrat = "F"
	   W_TraiteContrat = "F"
	   READ ENR_CONTRAT FROM F.CONTRAT, W_CleContrat THEN
		IF Traitement # "ISC" THEN
			GOSUB 105
		END ELSE
			W_TraiteContrat = "V"
		END
		  BEGIN CASE 
		   CASE TypeAct = "P"
			* maj 21/11/05 : On ne va plus lmire DETAILPREST pour ne pas rcrire un salari dj prsent si aucune heure trouve.
			*READ ENR_DETAIL FROM F.DETAILPREST, W_CleContrat:Periode ELSE ENR_DETAIL = ""
			*IF BasculMOD = "1" THEN
			*	ENR_DETAIL<1> = ""
			*	ENR_DETAIL<2> = ""
			*	ENR_DETAIL<3> = ""
			*	ENR_DETAIL<4> = ""
			*	ENR_DETAIL<10> = ""
			*	ENR_DETAIL<11> = ""
			*	ENR_DETAIL<12> = ""
			*	ENR_DETAIL<13> = ""
			*END
			ENR_DETAIL = ""

		   CASE TypeAct = "M" 

			READ ENR_DETAIL FROM F.DETAILMANDAT, W_CleContrat:Periode ELSE ENR_DETAIL = ""
			IF BasculMOD = "1" THEN
*			   i = 0
*			   LOOP
*			   i = i + 1
*			   WHILE ENR_DETAIL<1,i> # ""
*			     READ ENR_RUBSAISIE FROM F.RUBSAISIE, ENR_DETAIL<1,i> THEN
*				IF ENR_RUBSAISIE<2> = "3" OR ENR_RUBSAISIE<2> = "4" THEN
*					DEL ENR_DETAIL<1,i>
*					DEL ENR_DETAIL<2,i>
*					DEL ENR_DETAIL<3,i>
*					DEL ENR_DETAIL<4,i>
*					DEL ENR_DETAIL<5,i>
*					DEL ENR_DETAIL<6,i>
*					DEL ENR_DETAIL<7,i>
*
*					i = i - 1
*				END
*			     END 
*			   REPEAT
			   W_ListeRubEffacee = ""
			END

		   CASE TypeAct = "I"
			ENR_DETAIL = ""

		   CASE TypeAct = "S"
			READ ENR_DETAIL FROM F.DETAILADMIN, W_CleContrat:Periode ELSE ENR_DETAIL = ""

		  END CASE

		IF W_AidantEnCoursTabInterv = W_CleContrat[1,5] THEN
			*PRINT "*** OK : ":W_CleContrat:" - ":TabInterv<W_IndAidantEnCoursTabInterv>
			* Trt aidant en cours...
				GOSUB 2000

		END ELSE
			*PRINT "*** Anomalie : ":W_CleContrat:" - ":TabInterv<W_IndAidantEnCoursTabInterv>
			* Un contrat sans interventions saisies => vrifier prsence de MOI
			IF BasculMOI = "1" AND NomFichierTlg = "" THEN
				GOSUB 300
			END

			* Le 05/10/2005 : posait pb si aucun aidant du secteur contrat dans TabInterv
			*IF W_IndAidantEnCoursTabInterv = 1 THEN
			*	W_IndAidantEnCoursTabInterv = 0
			*END ELSE
			*   IF W_IndAidantEnCoursTabInterv # 0 THEN
			*	W_IndAidantEnCoursTabInterv = W_IndAidantEnCoursTabInterv - (DateFinProspSuppl - DateDebProspSuppl + 2)
			*   END
			*END
			IF W_DernIndAidant410 > W_DernIndAidant2000 THEN
				W_IndAidantEnCoursTabInterv = W_DernIndAidant410
			END ELSE
				W_IndAidantEnCoursTabInterv = W_DernIndAidant2000
			END


			W_AidantEnCoursTabInterv = TabInterv<W_IndAidantEnCoursTabInterv>[8,5]

		 	* Nb : grce au code ci dessus, W_IndAidantEnCoursTabInterv pointe toujours sur le dernier aidant TRAITE, que ce soit en erreur ou pas... 
		END 
	   END	
	REPEAT
	IF W_IndAidantEnCoursTabInterv # DCOUNT(TabInterv,CHAR(254)) THEN
		* Important : GOSUB 410 car on ne l'a pas fait pour le dernier contrat trait !
		IF W_IndAidantEnCoursTabInterv # 0 THEN
			GOSUB 410
		END
		GOSUB 400
	END
	EXECUTE 'EFFACER-LISTE ':W_NomReq
	IF W_NomReqMoi # "" THEN
		EXECUTE 'EFFACER-LISTE ':W_NomReqMoi

	END
	IF NomFichierTlg="" THEN
		DELETE F.TPSTEMPO, "AFFICHEPLANNING":W_CleRetour 
		IF BasculMOI="1" AND Traitement # "ISC" THEN
			* on va rechercher si un JF sur le mois, 
			* auquel cas on va calculer les ventuels JF non travaills pendant un cong.
			GOSUB 5000
		END

	END
	*WRITE W_Sortie ON F.TEMPO, "RapportBasculPaiePlg1":User

	IF Traitement = "ISC" THEN
		GOSUB 3150
	END

END ELSE
	W_Sortie<2> = W_Sortie
	W_Sortie<1> = "Erreur"
END

*WRITE W_Sortie ON F.TEMPO, "RapportBasculPaiePlg":User
*WRITE W_Sortie ON F.FUSION, "Anomalies":NomFichierTlg:".txt"


RETURN


105 ***************************************************************************
*			Evaluation de l'tat d'avancement du contrat			*
*******************************************************************************
W_Erreur = ""
IF ENR_CONTRAT<63> < Periode THEN
  IF (ENR_CONTRAT<63> = PeriodePrecedente OR (ENR_CONTRAT<7> >= DateDeb AND ENR_CONTRAT<63> = "")) THEN
	READ ENR_DETAILCALCUL FROM F.DETAILCALCUL, W_CleContrat:Periode THEN
		IF AnnuleBS = "1" THEN
			* On vrifie que le bulletin n'est pas dfinitif :
			IF ENR_DETAILCALCUL<1> = "" THEN
				W_TraiteContrat = "V"
				DELETE F.DETAILCALCUL, W_CleContrat:Periode
			END ELSE
				IF ENR_DETAILCALCUL<1> = "E" THEN
					IF ENR_CONTRAT<1> = "02" AND ENR_CONTRAT<28> = "0" THEN
						READ ENR_ELTSPARTEMP FROM F.ELTSPARTEMP, ENR_CONTRAT<3> THEN
						   IF ENR_ELTSPARTEMP<16> < Periode THEN
							* On peut quand mme traiter le bulletin...
							W_TraiteContrat = "V"
							DELETE F.DETAILCALCUL, W_CleContrat:Periode
							
							W_CleArchive = W_CleContrat:Periode:ENR_CONTRAT<3>

							READ ENR_AIDANTSARCHIVEBULL FROM F.AIDANTSARCHIVEBULL, W_CleContrat[1,5]:Periode[1,4] THEN
								i = 0
								LOOP
									i = i + 1
								WHILE ENR_AIDANTSARCHIVEBULL<Periode[5,2],i> # "" AND ENR_AIDANTSARCHIVEBULL<Periode[5,2],i> # W_CleArchive
								REPEAT
								IF ENR_AIDANTSARCHIVEBULL<Periode[5,2],i> = W_CleArchive THEN
								   DEL ENR_AIDANTSARCHIVEBULL<Periode[5,2],i>
								   WRITE ENR_AIDANTSARCHIVEBULL ON F.AIDANTSARCHIVEBULL, W_CleContrat[1,5]:Periode[1,4]
								END
							END
							READ ENR_AIDESARCHIVEBULL FROM F.AIDESARCHIVEBULL, ENR_CONTRAT<3>:Periode[1,4] THEN
								i = 0
								LOOP
									i = i + 1
								WHILE ENR_AIDESARCHIVEBULL<Periode[5,2],i> # "" AND ENR_AIDESARCHIVEBULL<Periode[5,2],i> # W_CleArchive
								REPEAT
								IF ENR_AIDESARCHIVEBULL<Periode[5,2],i> = W_CleArchive THEN
								   DEL ENR_AIDESARCHIVEBULL<Periode[5,2],i>
								   WRITE ENR_AIDESARCHIVEBULL ON F.AIDESARCHIVEBULL, ENR_CONTRAT<3>:Periode[1,4]
								END
							END
							
							DELETE F.ARCHIVEBULL, W_CleArchive

						   END ELSE
							W_Erreur = "Facture calcule"
							W_AidantErr = W_CleContrat[1,5]
							W_EmplErr = ENR_CONTRAT<3>
							GOSUB 3000
						   END	

						END
					END ELSE
					   IF ENR_CONTRAT<1> = "02" THEN
						READ ENR_ELTSPARTEMP FROM F.ELTSPARTEMP, ENR_CONTRAT<3> ELSE ENR_ELTSPARTEMP = ""
					   END
					   IF ENR_ELTSPARTEMP<16> < Periode OR ENR_CONTRAT<1> # "02" THEN
						* On traite bien le bulletin 
						W_TraiteContrat = "V"
						DELETE F.DETAILCALCUL, W_CleContrat:Periode
						
						IF ENR_CONTRAT<1> = "02" THEN
						   W_CleArchive = W_CleContrat:Periode:ENR_CONTRAT<3>
						   READ ENR_AIDESARCHIVEBULL FROM F.AIDESARCHIVEBULL, ENR_CONTRAT<3>:Periode[1,4] THEN
							i = 0
							LOOP
								i = i + 1
							WHILE ENR_AIDESARCHIVEBULL<Periode[5,2],i> # "" AND ENR_AIDESARCHIVEBULL<Periode[5,2],i> # W_CleArchive
							REPEAT
							IF ENR_AIDESARCHIVEBULL<Periode[5,2],i> = W_CleArchive THEN
							   DEL ENR_AIDESARCHIVEBULL<Periode[5,2],i>
							   WRITE ENR_AIDESARCHIVEBULL ON F.AIDESARCHIVEBULL, ENR_CONTRAT<3>:Periode[1,4]
							END
						   END

						END ELSE

						   W_CleArchive = W_CleContrat:Periode:ENR_CONTRAT<2>

						END
						READ ENR_AIDANTSARCHIVEBULL FROM F.AIDANTSARCHIVEBULL, W_CleContrat[1,5]:Periode[1,4] THEN
							i = 0
							LOOP
								i = i + 1
							WHILE ENR_AIDANTSARCHIVEBULL<Periode[5,2],i> # "" AND ENR_AIDANTSARCHIVEBULL<Periode[5,2],i> # W_CleArchive
							REPEAT
							IF ENR_AIDANTSARCHIVEBULL<Periode[5,2],i> = W_CleArchive THEN
							   DEL ENR_AIDANTSARCHIVEBULL<Periode[5,2],i>
							   WRITE ENR_AIDANTSARCHIVEBULL ON F.AIDANTSARCHIVEBULL, W_CleContrat[1,5]:Periode[1,4]
							END
						END
						
						DELETE F.ARCHIVEBULL, W_CleArchive
					   END ELSE
						W_Erreur = "Facture calcule"
						W_AidantErr = W_CleContrat[1,5]
						W_EmplErr = ENR_CONTRAT<3>
						GOSUB 3000
					   END	
					END
				END ELSE
					* On ne traite pas un bulletin dj pay...
				END
			END
		END ELSE
			* On ne traite pas le contrat car bulletin dj calcul...
			W_Erreur = "Bulletin dj calcul"
			W_AidantErr = W_CleContrat[1,5]
			W_EmplErr = ENR_CONTRAT<3>
			GOSUB 3000

		END
	END ELSE
		W_TraiteContrat = "V"
	END	
   END ELSE
	W_Erreur = "Traitement prcdent non termin"
	W_AidantErr = W_CleContrat[1,5]
	W_EmplErr = ENR_CONTRAT<3>
	GOSUB 3000
   END
END
IF W_TraiteContrat = "F" AND W_Erreur = "" THEN
	W_Erreur = "Traitement de paie termin."
	W_AidantErr = W_CleContrat[1,5]
	IF LEN(ENR_CONTRAT<3>) = 5 THEN
		W_EmplErr = ENR_CONTRAT<3>
	END ELSE
		W_EmplErr = ENR_CONTRAT<3>[1,3]
	END
	GOSUB 3000
END
RETURN

160 ***************************************************************************
*	   Positionnement sur les interventions de l'aidant en cours		*
*******************************************************************************
	READ ENR_CIVILAIDANT FROM F.CIVILAIDANT, W_CleContrat[1,5] THEN
	   IF Tri = "S" OR Tri = "C" THEN
		IF Tri = "S" THEN
			W_SecteurContrat = ENR_CIVILAIDANT<31>
		END ELSE
			W_SecteurContrat = ENR_CIVILAIDANT<11>
		END
	   END
	END ELSE
		* W_SecteurContrat = "" 
		* Nb : si lecture CIVILAIDANT choue (!!), on garde le dernier secteur lu pour ne pas dtecter de rupture...
	END
	
	LOOP
		IF W_IndAidantEnCoursTabInterv = 0 THEN
			W_IndAidantEnCoursTabInterv = 1
		END ELSE
			W_IndAidantEnCoursTabInterv = W_IndAidantEnCoursTabInterv + DateFinProspSuppl - DateDebProspSuppl + 2
		END

		IF TabInterv<W_IndAidantEnCoursTabInterv,1> # "#FIN" THEN
			W_AidantEnCoursTabInterv = TabInterv<W_IndAidantEnCoursTabInterv>[8,5]
		END ELSE
			W_AidantEnCoursTabInterv = ""
		END

		IF W_AidantEnCoursTabInterv # "" THEN
		   READ ENR_CIVILAIDANT FROM F.CIVILAIDANT, W_AidantEnCoursTabInterv THEN
			IF (Tri = "S" OR Tri = "C") THEN
			   IF Tri = "S" THEN
				W_SecteurInterv = ENR_CIVILAIDANT<31>
			   END ELSE
				W_SecteurInterv = ENR_CIVILAIDANT<11>
			   END
			END
		   END ELSE
			* Rien
		   END
		END ELSE
		   * Rien
		END
		IF Tri = "S" THEN
			READ ENR_SECTEUR FROM F.SECTEUR, W_SecteurContrat[1,3] THEN
				W_LibSectContrat = ENR_SECTEUR<1>
			END
			READ ENR_SECTEUR FROM F.SECTEUR, W_SecteurInterv[1,3] THEN
				W_LibSectInterv = ENR_SECTEUR<1>
			END
		END ELSE
			IF Tri = "C" THEN
				W_LibSectContrat = W_SecteurContrat
				W_LibSectInterv = W_SecteurInterv
			END ELSE
				W_LibSectContrat = ""
				W_LibSectInterv = ""
			END
		END
		
	WHILE ((W_AidantEnCoursTabInterv < W_CleContrat[1,5] AND W_SecteurContrat = W_SecteurInterv) OR W_LibSectContrat > W_LibSectInterv) AND W_AidantEnCoursTabInterv # ""
		* Aidant qui a des interventions mais pas de contrat ...
		GOSUB 410
	REPEAT
RETURN


300 ***************************************************************************
*		Slection de la MOI des aidants sans interventions			*
*******************************************************************************
IF W_NomReqMoi # "" THEN
	EXECUTE 'EFFACER-LISTE ':W_NomReqMoi
END
W_NomReqMoi = "BASCULPAIEMOI":User:TIME()
W_DebMoi = DateDeb
IF W_DebMoi < ENR_CONTRAT<7> THEN
	W_DebMoi = ENR_CONTRAT<7>
END
W_FinMoi = ENR_CONTRAT<8>
IF W_FinMoi = ""  OR W_FinMoi > DateFin THEN
	W_FinMoi = DateFin
END 
EXECUTE 'SELECT TPSMOI AVEC 4 = "':W_CleContrat:'" AND AVEC DateMoi >= "':W_DebMoi:'" AND AVEC DateMoi <= "':W_FinMoi:'"'
EXECUTE 'SAUVE-LISTE ':W_NomReqMoi
EXECUTE 'LISTE ':W_NomReqMoi RETURNING MSGCODE
IF MSGCODE<1> # "209" THEN
	SELECT F.TPSMOI TO W_ReqMoi
	GOSUB 310
END ELSE
	W_NomReqMoi = ""
END
RETURN


310 ***************************************************************************
*				Gestion de la MOI							*
*******************************************************************************
* Attention : on intgre systmatiquement la MOI du planning sur la premire activit trouve dans le contrat de travail. 
* => Si une saisie manuelle a t effectue, on integrera diffremment la MOI du planning selon que l'on
* ai saisi la MOI manuelle sur cette premire activit ou non...

W_TabMoi = ""
W_FinMoi = "F"
LOOP
	READNEXT W_CleMoi FROM W_ReqMoi ELSE W_FinMoi = "V"
WHILE W_FinMoi = "F"
	READ ENR_TPSMOI FROM F.TPSMOI, W_CleMoi THEN
	   i = 0
	   LOOP
		i = i + 1
	   WHILE W_TabMoi<1,i> # ENR_TPSMOI<3> AND W_TabMoi<1,i> # ""		
	   REPEAT
	   W_TabMoi<1,i> = ENR_TPSMOI<3>
	   W_TabMoi<2,i> = W_TabMoi<2,i> + ENR_TPSMOI<2>	
	END
REPEAT
GOSUB 2100
RETURN


400 ***************************************************************************
*			Traitement du reliquat de TabInterv....				*
*******************************************************************************
W_CountTabInterv = DCOUNT(TabInterv,CHAR(254))
LOOP
	IF W_IndAidantEnCoursTabInterv = 0 THEN
		W_IndAidantEnCoursTabInterv = 1
	END ELSE
		W_IndAidantEnCoursTabInterv = W_IndAidantEnCoursTabInterv + DateFinProspSuppl - DateDebProspSuppl + 2
	END
WHILE W_IndAidantEnCoursTabInterv < W_CountTabInterv
	W_AidantEnCoursTabInterv = TabInterv<W_IndAidantEnCoursTabInterv>[8,5]
	GOSUB 410
REPEAT

RETURN


410 ***************************************************************************
*		Traitement des interventions sans contrat....				*
*******************************************************************************
IF W_AidantEnCoursTabInterv = W_DernAidant410 THEN
	RETURN
END
W_DernAidant410 = W_AidantEnCoursTabInterv
W_DernIndAidant410 = W_IndAidantEnCoursTabInterv
W_Erreur = "Interventions sans contrat"
*W_Erreur = "Intervention du ":W_IndJour-W_IndAidantEnCoursTabInterv:" sans contrat"
W_AidantErr = W_AidantEnCoursTabInterv
IF TypeAct = "M" THEN
	W_ListeEmplErr = ""
	W_IndJour = W_IndAidantEnCoursTabInterv + IndiceDepartInterventions
	LOOP
		W_IndJour = W_IndJour + 1
	WHILE W_IndJour <= W_IndAidantEnCoursTabInterv + IndiceDepartInterventions + NbJours
		i = 0
		LOOP
		i = i + 1
		WHILE TabInterv<W_IndJour,1,i> # ""
		  IF INDEX(TabInterv<W_IndJour,1,i>,"Interv",1) # 0 AND TabInterv<W_IndJour,8,i> # "1" THEN
			IF INDEX(W_ListeEmplErr, TabInterv<W_IndJour,4,i>[6,5]:"|",1) = 0 OR Traitement = "ISC" THEN
				W_EmplErr = TabInterv<W_IndJour,4,i>[6,5]
				W_CleIntervErr = TabInterv<W_IndJour,4,i>[1,26]
				W_410 = "V"
				GOSUB 3000
				W_410 = "F"
				IF Traitement # "ISC" THEN
					W_ListeEmplErr = W_ListeEmplErr:TabInterv<W_IndJour,4,i>[6,5]:"|"
				END ELSE
					IF INDEX(W_ListeEmplErr, TabInterv<W_IndJour,4,i>[6,5]:"|",1) = 0 THEN
						W_ListeEmplErr = W_ListeEmplErr:TabInterv<W_IndJour,4,i>[6,5]:"|"
					END
				END
			END
			TabInterv<W_IndJour,8,i> = "1"
		  END ELSE
			IF INDEX(TabInterv<W_IndJour,1,i>,"MOI",1) # 0 AND TabInterv<W_IndJour,8,i> # "1" AND Traitement # "ISC" THEN
				W_EmplErr = TabInterv<W_IndJour,4,i>[16,8]
				IF LEN(TRIM(W_EmplErr))= 8 THEN
					READ ENR_CONTRATERR FROM F.CONTRAT, W_EmplErr THEN
						W_EmplErr = ENR_CONTRATERR<3>
						IF INDEX(W_ListeEmplErr, W_EmplErr:"|",1) = 0 THEN
							GOSUB 3000
							W_ListeEmplErr = W_ListeEmplErr:W_EmplErr:"|"
						END
					END ELSE

						W_EmplErr = ""
					END
				END ELSE
				   	IF INDEX(W_ListeEmplErr, W_EmplErr:"|",1) = 0 THEN
						GOSUB 3000
						W_ListeEmplErr = W_ListeEmplErr:W_EmplErr:"|"
					END
				END
				
			END
			TabInterv<W_IndJour,8,i> = "1"
		  END
		REPEAT
	REPEAT

END ELSE
	
	W_IndJour = W_IndAidantEnCoursTabInterv + IndiceDepartInterventions

	LOOP
		W_IndJour = W_IndJour + 1
	WHILE W_IndJour <= W_IndAidantEnCoursTabInterv + IndiceDepartInterventions + NbJours
		i = 0
		LOOP
		i = i + 1
		WHILE TabInterv<W_IndJour,1,i> # ""
		  IF (INDEX(TabInterv<W_IndJour,1,i>,"Interv",1) # 0 OR INDEX(TabInterv<W_IndJour,1,i>,"MOI",1) # 0) AND TabInterv<W_IndJour,8,i> # "1" THEN
			IF Traitement # "ISC" OR INDEX(TabInterv<W_IndJour,1,i>,"MOI",1) = 0 THEN
				W_EmplErr = Asso
			
				W_CleIntervErr = TabInterv<W_IndJour,4,i>[1,26]
				GOSUB 3000
				IF Traitement # "ISC" THEN
					i = 999
					W_IndJour = W_IndAidantEnCoursTabInterv + IndiceDepartInterventions + NbJours + 1
				END
			END
		  END
		REPEAT	
	REPEAT
END
W_Erreur = ""
RETURN

1000 **************************************************************************
*     	Initialisation des rubriques de saisie par dfaut			*
*******************************************************************************

READ ENR_TPSPARAMBASCUL FROM F.TPSPARAMBASCUL, Asso THEN
ENR_TEMPO<-1> = "TPSPARAMSBASCUL LU : ":ENR_TPSPARAMBASCUL:"** Fin tpsparam"
ENR_TEMPO<-1> = "SustemTlg ":SystemeTlg 
	IF SystemeTlg <> "" THEN
		* modification du 18/04/2006 - christophe
		GOTO 1001
	END

	BEGIN CASE
		CASE TypeAct = "P"
			IF ENR_TPSPARAMBASCUL<1> # "1" THEN
				IF Traitement # "ISC" THEN
					W_Sortie = "PB PARAMETRES"
				END ELSE
					GOTO 1001
				END
			END ELSE
					ENR_TEMPO<-1> = "Indparam = 1"
				W_IndParam = 1
			END
		CASE TypeAct = "M"
			IF ENR_TPSPARAMBASCUL<2> # "1" THEN
				IF Traitement # "ISC" THEN
					W_Sortie = "PB PARAMETRES"
				END ELSE
					GOTO 1001
				END
			END ELSE
				W_IndParam = 2
			END
		CASE TypeAct = "I"
			IF ENR_TPSPARAMBASCUL<3> # "1" THEN
				IF Traitement # "ISC" THEN
					W_Sortie = "PB PARAMETRES"
				END ELSE
					GOTO 1001
				END
			END ELSE
				W_IndParam = 3
			END
		CASE TypeAct = "S"
			IF ENR_TPSPARAMBASCUL<4> # "1" THEN
				IF Traitement # "ISC" THEN
					W_Sortie = "PB PARAMETRES"
				END ELSE
					GOTO 1001
				END
			END ELSE
				W_IndParam = 4
			END
	END CASE
	ENR_TEMPO<-1> = "W_Sortie : ":W_Sortie:"***"
	IF W_Sortie = "" THEN
		
		RubDefautNorm = ENR_TPSPARAMBASCUL<10,W_IndParam>
			ENR_TEMPO<-1> = "DefautNorm : ":RubDefautNorm :"***"
		i = 0
		W_Trouve = "F"
		LOOP
		i = i + 1
		WHILE ENR_TPSPARAMBASCUL<5,i> # "" AND W_Trouve = "F"
		   IF ENR_TPSPARAMBASCUL<5,i> = RubDefautNorm THEN
			RubDefautDim = ENR_TPSPARAMBASCUL<6,i>
			RubDefaut1Mai = ENR_TPSPARAMBASCUL<7,i>
			RubDefautFeriee = ENR_TPSPARAMBASCUL<8,i>
			RubDefautFerieeMOI = ENR_TPSPARAMBASCUL<9,i>
			W_Trouve = "V"
		   END
		REPEAT
		ENR_TEMPO<-1> = "W_Trouvem : ":W_Trouve :"***"
	END
END ELSE
	
	IF Traitement # "ISC" THEN
		W_Sortie = "PB PARAMETRES"
	END ELSE
	ENR_TPSPARAMBASCUL = ""
	W_IndParam = ""
1001
	IF SystemeTlg <> "" THEN
		RubDefautNorm = "XXX"
	END ELSE
		RubDefautNorm = "019"
		RubDefautDim = RubDefautNorm
		RubDefaut1Mai = RubDefautNorm
		RubDefautFeriee = RubDefautNorm
		RubDefautFerieeMOI = RubDefautNorm
	END

	END
END
WRITE ENR_TEMPO ON F.TEMPO, "Debug"
RETURN

2000 **************************************************************************
*			Gestion des interventions...						*
*******************************************************************************
W_DateDeb = ENR_CONTRAT<7>
IF W_DateDeb < DateDeb THEN
	W_DateDeb = DateDeb
END
W_DateFin = ENR_CONTRAT<8>
IF W_DateFin = "" OR W_DateFin > DateFin THEN
	W_DateFin = DateFin
END

W_DebPeriode = W_IndAidantEnCoursTabInterv + W_DateDeb - DateDebProspSuppl + 1
W_FinPeriode = W_IndAidantEnCoursTabInterv + W_DateFin - DateDebProspSuppl + 1

W_DernIndAidant2000 = W_IndAidantEnCoursTabInterv

W_TabMoi = ""
W_TabMod = ""

FOR W_IndJour = W_DebPeriode TO W_FinPeriode
	i = 0
	LOOP
	i = i + 1
	WHILE TabInterv<W_IndJour,1,i> # ""
	   IF TabInterv<W_IndJour,1,i> = "Interv":TypeAct THEN

		IF TypeAct = "M" AND TabInterv<W_IndJour,4,i>[6,5] = ENR_CONTRAT<3> THEN
			GOSUB 112
		END ELSE
			IF TypeAct # "M" THEN
				GOSUB 112
			END ELSE
				W_Err="VRAI"
			END
		END

		IF W_Err="FAUX" THEN
				
			   W_JourFerieProsp = W_DateDeb + (W_IndJour - W_DebPeriode)
			
			   GOSUB 4000

			   IF W_RubDefautFerieProsp = "" THEN
				W_Erreur = "Rubrique non paramtre le ":OCONV(W_DateDeb + (W_IndJour - W_DebPeriode),"D4/")[1,2]
				W_AidantErr = TabInterv<W_IndJour,4,i>[1,5]
				IF TypeAct # "M" THEN
					W_MettreChez = "V"
				END
				W_EmplErr = TabInterv<W_IndJour,4,i>[6,5]
				W_MettreChez = "F"
				IF Traitement # "ISC" THEN
					GOSUB 3000	
				END
			   END ELSE
				TabInterv<W_IndJour,6,i> = W_RubDefautFerieProsp
				k = 0
				LOOP
				k = k + 1
				WHILE W_TabMod<1,k> # "" AND (W_TabMod<1,k> # TabInterv<W_IndJour,4,i>[6,5] OR W_TabMod<2,k> # TabInterv<W_IndJour,6,i> OR W_TabMod<3,k> # TabInterv<W_IndJour,7,i>)
				REPEAT
				W_TabMod<1,k> = TabInterv<W_IndJour,4,i>[6,5]
				W_TabMod<2,k> = TabInterv<W_IndJour,6,i>
				W_TabMod<3,k> = TabInterv<W_IndJour,7,i>
				W_TabMod<4,k> = W_TabMod<4,k> + TabInterv<W_IndJour,5,i>
		
			   END
			   TabInterv<W_IndJour,8,i> = "1"
*			END
		END
	   END ELSE
		IF TabInterv<W_IndJour,1,i> = "MOI" THEN
		   
			W_CleContratMoi = TabInterv<W_IndJour,4,i>[16,8]
*PRINT TabInterv<W_IndJour>			
*PRINT W_CleContratMoi
*PRINT W_CleContrat
*PRINT ENR_CONTRAT<1>
*PRINT ENR_CONTRAT<3>
*DEBUG			
			IF W_CleContratMoi = W_CleContrat OR (ENR_CONTRAT<1> = "02" AND W_CleContratMoi = ENR_CONTRAT<3>) OR (ENR_CONTRAT<1> # "02") THEN
			  IF TabInterv<W_IndJour,6,i> # "999" THEN
				k = 0
	   			LOOP
				k = k + 1
	   			WHILE W_TabMoi<1,k> # TabInterv<W_IndJour,6,i> AND W_TabMoi<1,k> # ""		
	   			REPEAT
	   			W_TabMoi<1,k> = TabInterv<W_IndJour,6,i>
	   			W_TabMoi<2,k> = W_TabMoi<2,k> + TabInterv<W_IndJour,5,i>
				
			  END
			  TabInterv<W_IndJour,8,i> = "1"

			END
		   
		END ELSE
		   IF INDEX(TabInterv<W_IndJour,1,i>,"AbsAide",1) <> 0 THEN
			TabInterv<W_IndJour,8,i> = "1"
		   END
	   	END
	   END
	REPEAT
	IF SaisieJour = "1" AND BasculMOD = "1" THEN
		GOSUB 2200
		W_TabMod = ""
	END
NEXT W_IndJour

IF BasculMOI = "1" THEN
	GOSUB 2100
END

IF SaisieJour # "1" AND BasculMOD = "1" THEN
	GOSUB 2300
END

RETURN

2100 **************************************************************************
*					Intgration MOI						*
*******************************************************************************

iMoi = 0
LOOP
   iMoi = iMoi + 1
WHILE W_TabMoi<1,iMoi> # ""
   BEGIN CASE
	CASE TypeAct = "P"
		W_Pos = INDEX(ENR_DETAIL<5>,W_TabMoi<1,iMoi>,1)	
		IF W_Pos = 0 THEN
			ENR_DETAIL<5,-1> = W_TabMoi<1,iMoi>
			ENR_DETAIL<6,-1> = W_TabMoi<2,iMoi>
			ENR_DETAIL<7,-1> = "0"
			ENR_DETAIL<8,-1> = "0"
			ENR_DETAIL<9,-1> = ENR_CONTRAT<36,1>
			ENR_DETAIL<14,-1> = ""
			ENR_DETAIL<15,-1> = ""
		END
	CASE TypeAct = "M"
		W_Pos = INDEX(ENR_DETAIL<1>,W_TabMoi<1,iMoi>,1)
		IF W_Pos = 0 THEN
			ENR_DETAIL<1,-1> = W_TabMoi<1,iMoi>
			ENR_DETAIL<2,-1> = W_TabMoi<2,iMoi>
			ENR_DETAIL<3,-1> = "0"
			ENR_DETAIL<4,-1> = "0"
			ENR_DETAIL<5,-1> = ENR_CONTRAT<36,1>
			ENR_DETAIL<6,-1> = ""
			ENR_DETAIL<7,-1> = ""
			IF W_RecapMoi<1,W_IndRecapMoi> # W_DernierContrat THEN
				W_IndRecapMoi = W_IndRecapMoi + 1
			END
			W_RecapMoi<1,W_IndRecapMoi> = W_DernierContrat
			W_RecapMoi<2,W_IndRecapMoi,-1> = W_TabMoi<1,iMoi>
		END	
	CASE TypeAct = "I"
		W_Pos = INDEX(ENR_DETAIL<8>,W_TabMoi<1,iMoi>,1)
		IF W_Pos = 0 THEN
			ENR_DETAIL<8,-1> = W_TabMoi<1,iMoi>
			ENR_DETAIL<9,-1> = W_TabMoi<2,iMoi>
			ENR_DETAIL<10,-1> = "0"
			ENR_DETAIL<11,-1> = "0"
			ENR_DETAIL<12,-1> = ENR_CONTRAT<36,1>
		END	

	CASE TypeAct = "S"

   END CASE		
REPEAT

RETURN

2200 **************************************************************************
*			Intgration DETAILLEE MOD prestataire				*
*******************************************************************************
W_JourClair = OCONV(DateDebProspSuppl + W_IndJour - W_DebPeriode,"D4/")
W_JourClair = W_JourClair[1,2]
iMOD = 0
LOOP
iMOD = iMOD + 1
WHILE W_TabMod<1,iMOD> # ""
	iDet = 0
	LOOP
	iDet = iDet + 1
	WHILE ENR_DETAIL<1,iDet> # "" AND ENR_DETAIL<1,iDet> # W_TabMod<1,iMOD>
	REPEAT

	ENR_DETAIL<1,iDet> = W_TabMod<1,iMOD>

	* Nb : sommes tris par jour => il suffit d'ajouter en dernire SV...
	ENR_DETAIL<10,iDet,-1> = W_JourClair
	ENR_DETAIL<11,iDet,-1> = W_TabMod<2,iMOD>
	ENR_DETAIL<12,iDet,-1> = W_TabMod<4,iMOD>
	ENR_DETAIL<13,iDet,-1> = W_TabMod<3,iMOD>

	* Important : ne pas oublier le total en att. 3 :
	ENR_DETAIL<3,iDet> = ENR_DETAIL<3,iDet> + W_TabMod<4,iMOD>
REPEAT

RETURN


2300 **************************************************************************
*					Intgration MOD 						*
*******************************************************************************
W_TotalHresMand=0
BEGIN CASE
	CASE TypeAct = "P"
	   ENR_DETAIL<1> = W_TabMod<1>
	   ENR_DETAIL<2> = W_TabMod<2>
	   ENR_DETAIL<3> = W_TabMod<4>
	   ENR_DETAIL<4> = W_TabMod<3>

	CASE TypeAct = "M"
	  i2300 = 0
	  LOOP
	  i2300 = i2300 + 1
	  WHILE W_TabMod<2,i2300> # ""
	   W_TotalHresMand = W_TotalHresMand + W_TabMod<4,i2300>

	  REPEAT 

	CASE TypeAct = "I"

	CASE TypeAct = "S"
END CASE

RETURN



3000 **************************************************************************
*			Etablissement du rapport d'erreurs					*
*******************************************************************************

IF Traitement # "ISC" THEN
	READ ENR_CIVILAIDANTERR FROM F.CIVILAIDANT, W_AidantErr ELSE ENR_CIVILAIDANTERR = ""
	IF LEN(W_EmplErr) = 5 THEN
		READ ENR_CIVILAIDEERR FROM F.CIVILAIDE, W_EmplErr ELSE ENR_CIVILAIDEERR = ""
	END ELSE
		* Nb : thoriquement, il n'est pas utile de relire systmatiquement l'asso, car c'est la mme pour chaque aidant,
		IF W_EmplErr[1,3] # W_DerniereAsso THEN
		   READ ENR_ASSO FROM F.ASSOCIATION, W_EmplErr[1,3] ELSE
				ENR_ASSO<1> = ""
		   END
		   W_DerniereAsso = W_EmplErr[1,3]
		END
		ENR_CIVILAIDEERR = ""
		ENR_CIVILAIDEERR<2> = ENR_ASSO<1>
		ENR_CIVILAIDEERR<3> = "" 
		W_EmplErr = W_EmplErr[1,3]
	
	END
	W_Sortie<W_IndSortie,1> = W_AidantErr
	W_Sortie<W_IndSortie,2> = TRIM(ENR_CIVILAIDANTERR<2>:" ":ENR_CIVILAIDANTERR<3>)
	W_Sortie<W_IndSortie,3> = W_EmplErr
	W_Sortie<W_IndSortie,4> = TRIM(ENR_CIVILAIDEERR<2>:" ":ENR_CIVILAIDEERR<3>)
	W_Sortie<W_IndSortie,5> = W_Erreur
	IF Tri = "S" THEN
		IF ENR_CIVILAIDANTERR<31> # W_SecteurErr THEN
			W_SecteurErr = ENR_CIVILAIDANTERR<31>
			READ ENR_SECTEUR FROM F.SECTEUR, W_SecteurErr ELSE ENR_SECTEUR = ""
			W_Sortie<W_IndSortie,6> = ENR_SECTEUR<1>
		END		
	END ELSE
	   IF Tri = "C" THEN
		IF ENR_CIVILAIDANTERR<11> # W_SecteurErr THEN
			W_SecteurErr = ENR_CIVILAIDANTERR<11>
			W_Sortie<W_IndSortie,6> = W_SecteurErr
		END	
   	   END
	END
	ENR_TEMPO<-1> = W_Sortie<W_IndSortie>
	W_IndSortie = W_IndSortie + 1
END ELSE
	GOSUB 3100
END

RETURN

3100 **************************************************************************
*		Traitement des interventions sans contrat					*
*			Mise en forme intermdiaire du rapport				*
*******************************************************************************
W_Index3100 = 1
W_Ajout3100 = "V"
IF W_EmplErr = "" THEN
* = association, non renseigne en interventions sans contrat !
	W_EmplErr = W_CleIntervErr[16,3]
END

IF W_Sortie<W_IndSortie,1> = W_AidantErr THEN
	
		i3100 = 0
		LOOP
			i3100 = i3100 + 1
		WHILE W_Sortie<W_IndSortie,2,i3100> # W_EmplErr AND W_Sortie<W_IndSortie,2,i3100> # ""
		REPEAT
		W_Index3100 = i3100
		IF W_Sortie<W_IndSortie,2,i3100> = W_EmplErr THEN
			W_Ajout3100 = "F"
		END
	
END ELSE
	IF W_Sortie<W_IndSortie> # "" THEN
		W_IndSortie = W_IndSortie + 1
	END
END
W_Sortie<W_IndSortie,1> = W_AidantErr
W_Sortie<W_IndSortie,2,W_Index3100> = W_EmplErr
IF W_Ajout3100 = "V" OR W_Sortie<W_IndSortie,3,W_Index3100>[11,5] > W_CleIntervErr[11,5] THEN
	* on mets la date de dbut la plus ancienne
	W_Sortie<W_IndSortie,3,W_Index3100> = W_CleIntervErr
END
READ ENR_TPSDETAILSINTERV FROM F.TPSDETAILSINTERV, W_CleIntervErr THEN
	IF W_Ajout3100 = "V" THEN
		W_Sortie<W_IndSortie,4,W_Index3100> = ENR_TPSDETAILSINTERV<1>
	END ELSE
		IF W_Sortie<W_IndSortie,4,W_Index3100> # "" THEN
			IF W_Sortie<W_IndSortie,4,W_Index3100> < ENR_TPSDETAILSINTERV<1> OR ENR_TPSDETAILSINTERV<1> = "" THEN
				W_Sortie<W_IndSortie,4,W_Index3100> = ENR_TPSDETAILSINTERV<1>
			END
		END ELSE
			* On laisse vide
		END
	END
END
RETURN

3150 **************************************************************************
*		Traitement des interventions sans contrat					*
*			Mise en forme finale du rapport					*
*******************************************************************************


W_Count = W_IndSortie 
W_TabFinal = ""
W_IndFinal = 1
W_DernCodeSect = ""
FOR i = 1 TO W_Count
	READ ENR_CIVILAIDANTERR FROM F.CIVILAIDANT, W_Sortie<i,1> ELSE ENR_CIVILAIDANTERR = ""
	IF ENR_CIVILAIDANTERR<31>[1,3] # W_DernCodeSect THEN
		READ ENR_SECTEUR FROM F.SECTEUR, ENR_CIVILAIDANTERR<31>[1,3] ELSE ENR_SECTEUR = ""
		W_SecteurErr = ENR_SECTEUR<1>
		W_DernCodeSect = ENR_CIVILAIDANTERR<31>[1,3]
		W_TabFinal<W_IndFinal>="#":W_SecteurErr
		W_IndFinal = W_IndFinal + 1
	END
	k = 0
	LOOP
	k = k + 1 
	WHILE W_Sortie<i,2,k> # ""
		IF LEN(W_Sortie<i,2,k>) = 5 THEN
			READ ENR_CIVILAIDEERR FROM F.CIVILAIDE, W_Sortie<i,2,k> ELSE ENR_CIVILAIDEERR = ""
		END ELSE
		* Nb : thoriquement, il n'est pas utile de relire systmatiquement l'asso, car c'est probablement la mme pour chaque aidant,
			IF W_Sortie<i,2,k>[1,3] # W_DerniereAsso THEN
				
			   READ ENR_ASSO FROM F.ASSOCIATION, W_Sortie<i,2,k>[1,3] ELSE
					ENR_ASSO<1> = ""
			   END
			   W_DerniereAsso = W_Sortie<i,2,k>[1,3]
			   ENR_CIVILAIDEERR<2> = ENR_ASSO<1>
			   ENR_CIVILAIDEERR<3> = "" 
			END
			
			W_Sortie<i,2,k> = W_Sortie<i,2,k>[1,3]
			
		END

		W_TabFinal<W_IndFinal,1> =  W_Sortie<i,1>:W_Sortie<i,2,k>

		W_TabFinal<W_IndFinal,2> =  W_Sortie<i,1>:" ":(ENR_CIVILAIDANTERR<2>:" ":ENR_CIVILAIDANTERR<3>)[1,28]:SPACE(29 - LEN((ENR_CIVILAIDANTERR<2>:" ":ENR_CIVILAIDANTERR<3>)[1,28]))
		W_TabFinal<W_IndFinal,2> =  W_TabFinal<W_IndFinal,2>:W_SecteurErr[1,15]:SPACE(16 - LEN(W_SecteurErr[1,15]))
		IF LEN(W_Sortie<i,2,k>) = 3 THEN
			W_Sortie<i,2,k> = "  ":W_Sortie<i,2,k>
		END
		W_TabFinal<W_IndFinal,2> =  W_TabFinal<W_IndFinal,2>:W_Sortie<i,2,k>:" ":(ENR_CIVILAIDEERR<2>:" ":ENR_CIVILAIDEERR<3>)[1,28]:SPACE(29 - LEN((ENR_CIVILAIDEERR<2>:" ":ENR_CIVILAIDEERR<3>)[1,28]))
		W_TabFinal<W_IndFinal,2> =  W_TabFinal<W_IndFinal,2>:OCONV(W_Sortie<i,3,k>[11,5],"D4/")
		IF W_Sortie<i,4,k> # "" THEN
			W_TabFinal<W_IndFinal,2> =  W_TabFinal<W_IndFinal,2>:" ":OCONV(W_Sortie<i,4,k>,"D4/")
		END
		W_IndFinal = W_IndFinal + 1
	REPEAT
NEXT i

GOSUB 3160

RETURN


3160 **************************************************************************
*		Traitement des interventions sans contrat					*
*			Tri final du rapport							*
*******************************************************************************

W_Sortie = ""

i3160 = 0
W_Count3160 = DCOUNT(W_TabFinal,CHAR(253))
LOOP
i3160 = i3160 + 1
WHILE i3160 <= W_Count3160
	IF W_TabFinal<i3160>[1,1] = "#" THEN
		W_Sortie<i3160> = W_TabFinal<i3160>
	END ELSE
		k3160 = i3160
		LOOP
			k3160 = k3160 -1
			W_PlusGrand = "F"
			IF W_Sortie<k3160>[1,1] # "#" THEN
				GOSUB 3161
			END ELSE
				W_PlusGrand = "V"
			END
		WHILE W_PlusGrand = "F" AND W_Sortie<k3160>[1,1] # "#" AND k3160 > 0
		REPEAT
		k3160 = k3160 + 1
		IF k3160 = i3160 THEN
			W_Sortie<i3160> = W_TabFinal<i3160>
		END ELSE
			W_Sortie = INSERT(W_Sortie,k3160;W_TabFinal<i3160>)
		END
	END
REPEAT
RETURN

3161 **************************************************************************
*													*
*******************************************************************************
i3161 = 6
LOOP
i3161 = i3161 + 1
WHILE (W_Sortie<k3160,2>[i3161,1] # "" AND W_TabFinal<i3160,2>[i3161,1] # "") AND W_Sortie<k3160,2>[i3161,1] = W_TabFinal<i3160,2>[i3161,1]
REPEAT
IF W_Sortie<k3160,2>[i3161,1] = "" OR SEQ(OCONV(W_Sortie<k3160,2>[i3161,1],"MCU")) < SEQ(OCONV(W_TabFinal<i3160,2>[i3161,1],"MCU")) THEN
	W_PlusGrand = "V"
END
RETURN

4000 **************************************************************************
*  On dtermine W_RubDefautFerieProsp selon que la date interne			*
* W_JourFerieProsp soit un dimanche, 1er mai,etc...					*
*******************************************************************************

* ATTENTION : ne pas utiliser variables i, k, W_NbMv,...
* pour viter tous risques, les variables utilises par cette procdure se nomment toutes [XX]FerieProsp
* + penser en dbut de programme a initialiser W_DerniereAnneeFerieProsp afin d'viter les avertissements d'unidata.
W_JF4000 = "F"
W_AnneeFerieProsp = OCONV(W_JourFerieProsp,"D4/")[7,4]
IF W_AnneeFerieProsp # W_DerniereAnneeFerieProsp THEN
	READ ENR_PAQUES FROM F.PAQUES, W_AnneeFerieProsp THEN
		ENR_PAQUES<2> = ICONV(ENR_PAQUES<1>[1,2]:"/":ENR_PAQUES<1>[3,2]:"/":W_AnneeFerieProsp,"D4/")
	END ELSE
		ENR_PAQUES = ""
		ENR_PAQUES<2> = 0
	END
	W_DerniereAnneeFerieProsp = W_AnneeFerieProsp
END
W_JourClairFerieProsp = OCONV(W_JourFerieProsp,"D4/")

* modification du 18/04/2006 - christophe
*Si on est sur un systme de tlgestion alors par dfaut le programme integresolem renvoi toujours la rubrique heure normal
*donc on refait a chaque fois la recherche.

W_TrouveTlg4000 = "F"
IF SystemeTlg <> "" THEN
	
	RubDefautNorm = TabInterv<W_IndJour,6,i>
	iTlg4000 = 0
	LOOP
	   iTlg4000 = iTlg4000 + 1
	WHILE ENR_TPSPARAMBASCUL<5,iTlg4000> # "" AND W_TrouveTlg4000 = "F"
	   IF ENR_TPSPARAMBASCUL<5,iTlg4000> = RubDefautNorm THEN
		RubDefautDim = ENR_TPSPARAMBASCUL<6,iTlg4000>
		RubDefaut1Mai = ENR_TPSPARAMBASCUL<7,iTlg4000>
		RubDefautFeriee = ENR_TPSPARAMBASCUL<8,iTlg4000>
		RubDefautFerieeMOI = ENR_TPSPARAMBASCUL<9,iTlg4000>
		W_TrouveTlg4000 = "V"
	   END
	REPEAT
	IF W_TrouveTlg4000 = "F" THEN
		W_IndTypeRubTlg=""
		* pas trouver la rubrique dans les "normales" alors recherche dans les autres colonnes
		IF W_JourClairFerieProsp[1,5] = "01/05" THEN
			W_IndTypeRubTlg=7
		END ELSE
			IF OCONV(W_JourFerieProsp,"DWA") = "Sunday" OR OCONV(W_JourFerieProsp,"DWA") = "Dimanche" THEN
				W_IndTypeRubTlg=6
			END ELSE
				* si pas dimanche ou 1er mai alors voir dans fri
				W_IndTypeRubTlg=8
			END
		END
		
		RubDefautNorm = TabInterv<W_IndJour,6,i>
		iTlg4000 = 0
		W_TrouveTlg4000 = "F"
		LOOP
		   iTlg4000 = iTlg4000 + 1
		WHILE ENR_TPSPARAMBASCUL<5,iTlg4000> # "" AND W_TrouveTlg4000 = "F"
		   IF ENR_TPSPARAMBASCUL<W_IndTypeRubTlg,iTlg4000> = RubDefautNorm THEN
				RubDefautNorm = ENR_TPSPARAMBASCUL<5,iTlg4000>
				RubDefautDim = ENR_TPSPARAMBASCUL<6,iTlg4000>
				RubDefaut1Mai = ENR_TPSPARAMBASCUL<7,iTlg4000>
				RubDefautFeriee = ENR_TPSPARAMBASCUL<8,iTlg4000>
				RubDefautFerieeMOI = ENR_TPSPARAMBASCUL<9,iTlg4000>
				W_TrouveTlg4000 = "V"
		   END
		REPEAT		
	END
END

IF TabInterv<W_IndJour,6,i> = "" OR TabInterv<W_IndJour,6,i> = RubDefautNorm OR W_TrouveTlg4000 = "V" THEN
  IF W_JourClairFerieProsp[1,5] = "01/05" THEN
	W_RubDefautFerieProsp = RubDefaut1Mai
	W_JF4000 = "V"
  END ELSE

	W_RubDefautFerieProsp = RubDefautNorm

  	IF OCONV(W_JourFerieProsp,"DWA") = "Sunday" OR OCONV(W_JourFerieProsp,"DWA") = "Dimanche" THEN
	   	W_RubDefautFerieProsp = RubDefautDim
	END ELSE

		W_Param4000=W_JourClairFerieProsp:"|":Asso
	  	CALL DIMJF(RETURNVAL,W_Param4000,Ferie)

  		IF Ferie[1,5] = "FERIE" THEN
			W_RubDefautFerieProsp = RubDefautFeriee
			W_JF4000 = "V"
		END ELSE
			W_RubDefautFerieProsp = RubDefautNorm
  		END

		
*   		BEGIN CASE
*			CASE W_JourClairFerieProsp[1,5] = "01/01"
*				W_RubDefautFerieProsp = RubDefautFeriee
*				W_JF4000 = "V"
*			CASE W_JourClairFerieProsp[1,5] = "08/05"
*				W_RubDefautFerieProsp = RubDefautFeriee
*				W_JF4000 = "V"
*
*			CASE W_JourClairFerieProsp[1,5] = "14/07"
*				W_RubDefautFerieProsp = RubDefautFeriee
*				W_JF4000 = "V"
*
*			CASE W_JourClairFerieProsp[1,5] = "15/08"
*				W_RubDefautFerieProsp = RubDefautFeriee
*				W_JF4000 = "V"
*
*			CASE W_JourClairFerieProsp[1,5] = "01/11"
*				W_RubDefautFerieProsp = RubDefautFeriee
*				W_JF4000 = "V"
*
*			CASE W_JourClairFerieProsp[1,5] = "11/11"
*				W_RubDefautFerieProsp = RubDefautFeriee
*				W_JF4000 = "V"
*
*			CASE W_JourClairFerieProsp[1,5] = "25/12"
*				W_RubDefautFerieProsp = RubDefautFeriee
*				W_JF4000 = "V"
*
*			CASE W_JourFerieProsp = ENR_PAQUES<2> + 1
*				W_RubDefautFerieProsp = RubDefautFeriee
*				W_JF4000 = "V"
*
*			CASE W_JourFerieProsp = ENR_PAQUES<2> + 39
*				W_RubDefautFerieProsp = RubDefautFeriee
*				W_JF4000 = "V"
*
*			CASE W_JourFerieProsp = ENR_PAQUES<2> + 39 + 11
*		On ne considre plus le lundi de pentecote comme un jour fri....
*		Sera probablement  revoir (paramtre ?)
*		W_RubDefautFerieProsp = RubDefautFeriee
*				W_RubDefautFerieProsp = RubDefautNorm
*				W_JF4000 = "V"
*
*			CASE 1
*				W_RubDefautFerieProsp = RubDefautNorm
*		END CASE
	END

  END

END ELSE
  IF OCONV(W_JourFerieProsp,"DWA") = "Sunday" OR OCONV(W_JourFerieProsp,"DWA") = "Dimanche" THEN
    i4000 = 0
    LOOP
    i4000 = i4000 + 1
    WHILE ENR_TPSPARAMBASCUL<6,i4000> # TabInterv<W_IndJour,6,i> AND ENR_TPSPARAMBASCUL<5,i4000> # ""
	
    REPEAT
    IF ENR_TPSPARAMBASCUL<5,i4000> = "" THEN
	i4000 = 0
	LOOP
	i4000 = i4000 + 1
      WHILE ENR_TPSPARAMBASCUL<5,i4000> # TabInterv<W_IndJour,6,i> AND ENR_TPSPARAMBASCUL<5,i4000> # ""
      REPEAT
    END
    
  END ELSE
    i4000 = 0
    LOOP
    i4000 = i4000 + 1
    WHILE ENR_TPSPARAMBASCUL<5,i4000> # TabInterv<W_IndJour,6,i> AND ENR_TPSPARAMBASCUL<5,i4000> # ""
    REPEAT
  END
  IF ENR_TPSPARAMBASCUL<5,i4000> = "" THEN
	W_RubDefautFerieProsp = ""
  END ELSE
	
    IF W_JourClairFerieProsp[1,5] = "01/05" THEN
		IF W_NonTrav = "V" THEN
			W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<9,i4000>
		END ELSE
			W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<7,i4000>
		END
    END ELSE

	  W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<5,i4000>

  	  IF OCONV(W_JourFerieProsp,"DWA") = "Sunday" OR OCONV(W_JourFerieProsp,"DWA") = "Dimanche" THEN
	   	W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<6,i4000>
	  END ELSE

		W_Param4000=W_JourClairFerieProsp:"|":Asso
	  	CALL DIMJF(RETURNVAL,W_Param4000,Ferie)

  		IF Ferie[1,5] = "FERIE" THEN
			IF W_NonTrav = "V" THEN
				W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<9,i4000>
			END ELSE
				W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<8,i4000>
			END
		END ELSE
			W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<5,i4000>
  		END
	  
*   		BEGIN CASE
*			CASE W_JourClairFerieProsp[1,5] = "01/01"
*				IF W_NonTrav = "V" THEN
*					W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<9,i4000>
*				END ELSE
*					W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<8,i4000>
*				END
*			CASE W_JourClairFerieProsp[1,5] = "08/05"
*				IF W_NonTrav = "V" THEN
*					W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<9,i4000>
*				END ELSE
*					W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<8,i4000>
*				END
*
*			CASE W_JourClairFerieProsp[1,5] = "14/07"
*				IF W_NonTrav = "V" THEN
*					W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<9,i4000>
*				END ELSE
*					W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<8,i4000>
*				END
*
*			CASE W_JourClairFerieProsp[1,5] = "15/08"
*				IF W_NonTrav = "V" THEN
*					W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<9,i4000>
*				END ELSE
*					W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<8,i4000>
*				END
*
*			CASE W_JourClairFerieProsp[1,5] = "01/11"
*				IF W_NonTrav = "V" THEN
*					W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<9,i4000>
*				END ELSE
*					W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<8,i4000>
*				END
*
*			CASE W_JourClairFerieProsp[1,5] = "11/11"
*				IF W_NonTrav = "V" THEN
*					W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<9,i4000>
*				END ELSE
*					W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<8,i4000>
*				END
*
*			CASE W_JourClairFerieProsp[1,5] = "25/12"
*				IF W_NonTrav = "V" THEN
*					W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<9,i4000>
*				END ELSE
*					W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<8,i4000>
*				END
*
*			CASE W_JourFerieProsp = ENR_PAQUES<2> + 1
*				IF W_NonTrav = "V" THEN
*					W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<9,i4000>
*				END ELSE
*					W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<8,i4000>
*				END
*
*			CASE W_JourFerieProsp = ENR_PAQUES<2> + 39
*				IF W_NonTrav = "V" THEN
*					W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<9,i4000>
*				END ELSE
*					W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<8,i4000>
*				END
*
*			CASE W_JourFerieProsp = ENR_PAQUES<2> + 39 + 11
*		On ne considre plus le lundi de pentecote comme un jour fri....
*		Sera probablement  revoir (paramtre ?)
*				IF W_NonTrav = "V" THEN
*					W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<9,i4000>
*				END ELSE
*					W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<8,i4000>
*				END
*
*				W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<5,i4000>
*			CASE 1
*				W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<5,i4000>
*		END CASE
	  END

    END
  END
END

* modification du 18/04/2006 - christophe
IF SystemeTlg <> "" THEN
	READ ENR_RUBSAISIE FROM F.RUBSAISIE, W_RubDefautFerieProsp ELSE ENR_RUBSAISIE = ""
	IF ENR_RUBSAISIE<6> = "1" THEN
		* BASE FIXE ALORS ON AFFECTE LA VALEUR DE LA RUBRIQUE
		TabInterv<W_IndJour,5,i>=ENR_RUBSAISIE<7>
	END
END

RETURN


110 ***************************************************************************
*					SubRoutine AffichePlanning				*
*******************************************************************************
* Nb : En prvision d'un calcul encore indfini (16/02/04) des heures supplmentaires
*  valuer sur une semaine, deux semaines, etc..., on appelle toutes les interventions 
* ayant lieu sur un intervalle diffrent du mois  traiter 
* (ex : hres supp a valuer  la semaine, debut du mois un jeudi : on appelle 
* les interventions ds le dernier lundi du mois prcdent, afin de calculer
* les heures suppl. de la semaine en cours au dbut du mois ).

DateDebProspSuppl = DateDeb
DateFinProspSuppl = DateFin + 1
W_TrtHresSuppl = "F"

W_CleRetour = User:TIME()

IF Tri = "A" THEN
	W_ParamAffichePlanning = ""
	READ ENR_CONTRAT FROM F.CONTRAT, Selection THEN
		IF ENR_CONTRAT<1> = "02" THEN
			W_ParamAffichePlanning = "AFFICHEPLANNING |":W_CleRetour:"|":Asso:"|":TypeAct:"|":DateDebProspSuppl:"|":DateFinProspSuppl:"|A|":ENR_CONTRAT<3>:"|":Selection[1,5]:"|BASCULPAIE|||"
		END
	END
	IF W_ParamAffichePlanning = "" THEN
		W_ParamAffichePlanning = "AFFICHEPLANNING |":W_CleRetour:"|":Asso:"|":TypeAct:"|":DateDebProspSuppl:"|":DateFinProspSuppl:"|||":Selection[1,5]:"|BASCULPAIE|||"
	END
END ELSE
	W_ParamAffichePlanning = "AFFICHEPLANNING |":W_CleRetour:"|":Asso:"|":TypeAct:"|":DateDebProspSuppl:"|":DateFinProspSuppl:"|":Tri:"|":Selection:"||BASCULPAIE|||"
END

 EXECUTE W_ParamAffichePlanning
READ TabInterv FROM F.TPSTEMPO, "AFFICHEPLANNING":W_CleRetour ELSE
	TabInterv = ""
	TabInterv<1> = "#FIN"
END

IndiceDepartInterventions = DateDeb - DateDebProspSuppl 
* Nb : dans la suite du programme, les interventions de la periode sont dans TabInterv a partir 
* de l'indice [Rang ligne "#Interv[CodeAidant] + IndiceDepartInterventions + 1 inclus
* jusqu' l'indice [Rang ligne "#IntervCodeAidant] + IndiceDepartInterventions + NbJours inclus

IF TabInterv<1>[1,6] = "Erreur" THEN
	W_Sortie = "Aucune intervention correspondant  la slection." 
END
RETURN


111 ***************************************************************************
*					SubRoutine IntegreSolem               *
*******************************************************************************

DateDebProspSuppl = DateDeb
DateFinProspSuppl = DateFin + 1
W_TrtHresSuppl = "F"

IndiceDepartInterventions = DateDeb - DateDebProspSuppl 

W_Param=""
W_Param<1>=User
W_Param<2>=Asso
W_Param<3>=TypeAct
*W_Param<4>=Periode
W_Param<4>=""
W_Param<5>=Tri
W_Param<6>=Selection
W_Param<7>=BasculMOD
W_Param<8>=BasculMOI
W_Param<9>=AnnuleBS
W_Param<10>=SaisieJour
W_Param<11>=NomFichierTlg
W_Param<12>=SystemeTlg
W_Param<13>=DateDeb
W_Param<14>=DateFin
ENR_TEMPO<-1> = "X"

ENR_TEMPO<-1> = W_Param

ENR_TEMPO<-1> = "X"

CALL INTEGRESOLEM(RETURNVAL,W_Param,TabInterv)

IF TabInterv = "Erreur" THEN
	W_Sortie = "Fichier introuvable." 
END

RETURN


112 ***************************************************************************
*		Traitement des contrats avec activit inconnue      	      *
*******************************************************************************

W_Err="FAUX"

W_Erreur = " : Activit inconnue dans le contrat"
W_AidantErr = TabInterv<W_IndJour,4,i>[1,5]
W_EmplErr=TabInterv<W_IndJour,4,i>[6,5]

k=1
LOOP
UNTIL ENR_CONTRAT<36,k>= TabInterv<W_IndJour,7,i> OR ENR_CONTRAT<36,k>="" DO
	k=k+1
REPEAT

IF ENR_CONTRAT<36,k>="" THEN

	W_Erreur = TabInterv<W_IndJour,7,i>[4,3]:W_Erreur 
	IF Traitement # "ISC" THEN
		GOSUB 3000
	END
	W_Err="VRAI"
END

RETURN


120 ***************************************************************************
*          				Requte CONTRAT						*
*******************************************************************************
W_Temp = 'SELECT CONTRAT AVEC 65 # "O" AND AVEC 8 >= "':DateDeb:'" OR = "" AND AVEC 7 <= "':DateFin:'" AND AVEC 6 = "P" AND AVEC TypeActivite = "':TypeAct:'"'
IF Tri = "A" THEN
	W_Temp = W_Temp:' AND AVEC @ID = "':Selection:'"'
END ELSE
	IF Tri = "S" THEN
		IF Selection # "" THEN
			W_Temp = W_Temp:' AND AVEC CodSecteurContrat = "':Selection:'"'
		END
		W_Temp = W_Temp:' PAR LibSecteurContrat'
	END ELSE
		IF Tri = "C" THEN
			IF Selection # "" THEN
				W_Temp = W_Temp:' AND AVEC LibCommuneAidant = "':Selection:'"'
			END
			W_Temp = W_Temp:' PAR LibCommuneAidant'
		END
	END
END
W_Temp = W_Temp:" PAR CodeAidant PAR 3 PAR 7"
EXECUTE W_Temp
W_NomReq = "W_ReqContratsPaieTPS":User:TIME()
EXECUTE 'SAUVE-LISTE ':W_NomReq
EXECUTE 'LISTE ':W_NomReq RETURNING MSGCODE
IF MSGCODE<1> = "209" THEN
	IF Tri # "A" THEN
		W_Sortie = "Aucun contrat de travail correspondant  la slection."
	END ELSE
		* Nb : ne doit pas arriver, puisque la slection de l'aidant se fait  partir des contrats de travail...
		W_ReqContrat = ""
	END
END ELSE
	SELECT F.CONTRAT TO W_ReqContrat
END
RETURN

150 ***************************************************************************
*				Ecriture de la saisie 			      		*
*******************************************************************************
IF W_DernierContrat[1,5] = "00867" THEN
			ENR_TEMPO2<-1> = "*"
			ENR_TEMPO2<-1> = ENR_DETAIL
			ENR_TEMPO2<-1> = "*"
			WRITE ENR_TEMPO ON F.TEMPO, "RapportSol2"
		END

BEGIN CASE

   CASE TypeAct = "P"
	IF ENR_DETAIL<1> # "" OR ENR_DETAIL<5> # "" OR ENR_DETAIL<10> # "" OR ENR_DETAIL<14> # "" THEN
   		IF NomFichierTlg # "" THEN
			W_Att=3
			
			GOSUB 151
			
   		END
		i150 = 0
		W_Total150 = 0
		LOOP
		i150 = i150 + 1
		WHILE ENR_DETAIL<1,i150> # ""
			W_Total150 = W_Total150 + ENR_DETAIL<3,i150>
		REPEAT
		* Nb : En 155, on trie les aids dans l'ordre alpha...
		*GOSUB 155
		READ ENR_DETAIL FROM F.DETAILPREST, W_DernierContrat:Periode ELSE ENR_DETAIL = ""
		i150 = 0
		LOOP
		i150 = i150 + 1
		WHILE ENR_DETAIL<5,i150> # "" AND ENR_DETAIL<5,i150> # "840"
			
		REPEAT
		IF ENR_DETAIL<5,i150> = "840" THEN
		   ENR_DETAIL<6,i150> = ENR_DETAIL<6,i150> - W_Total150
		   IF ENR_DETAIL<6,i150> < 0 THEN
			k150 = i150
			LOOP
			k150 = k150 + 1
			WHILE ENR_DETAIL<5,k150> # ""
				ENR_DETAIL<5,k150-1> = ENR_DETAIL<5,k150>
				ENR_DETAIL<6,k150-1> = ENR_DETAIL<6,k150>
				ENR_DETAIL<7,k150-1> = ENR_DETAIL<7,k150>
				ENR_DETAIL<8,k150-1> = ENR_DETAIL<8,k150>
				ENR_DETAIL<9,k150-1> = ENR_DETAIL<9,k150>
				ENR_DETAIL<14,k150-1> = ENR_DETAIL<14,k150>
				ENR_DETAIL<15,k150-1> = ENR_DETAIL<15,k150>
			REPEAT
			ENR_DETAIL<5,k150-1> = ""
			ENR_DETAIL<6,k150-1> = ""
			ENR_DETAIL<7,k150-1> = ""
			ENR_DETAIL<8,k150-1> = ""
			ENR_DETAIL<9,k150-1> = ""
			ENR_DETAIL<14,k150-1> = ""
			ENR_DETAIL<15,k150-1> = ""

		   END
		   IF W_DernierContrat[1,5] = "00867" THEN
				ENR_TEMPO2<-1> = W_Total150
				WRITE ENR_TEMPO2 ON F.TEMPO, "RapportSol2"
			END
		   
		   WRITE ENR_DETAIL ON F.DETAILPREST, W_DernierContrat:Periode
		END ELSE
			* Pas trouv => On dclenche une erreur ?
			W_Erreur = "Rubrique 840 non trouve"
			W_AidantErr = W_DernierContrat[1,5]
			W_EmplErr = ENR_CONTRAT<3>
			GOSUB 3000
		END
		
	END
   CASE TypeAct = "M"
	i150 = 0
	LOOP
	i150 = i150 + 1
	WHILE ENR_DETAIL<1,i150> # "" AND ENR_DETAIL<1,i150> # "840"
		
	REPEAT
	IF ENR_DETAIL<1,i150> = "840" THEN
	   ENR_DETAIL<2,i150> = ENR_DETAIL<2,i150> - W_TotalHresMand
	   IF ENR_DETAIL<2,i150> < 0 THEN
		k150 = i150
		LOOP
		k150 = k150 + 1
		WHILE ENR_DETAIL<1,k150> # ""
			ENR_DETAIL<1,k150-1> = ENR_DETAIL<5,k150>
			ENR_DETAIL<2,k150-1> = ENR_DETAIL<6,k150>
			ENR_DETAIL<3,k150-1> = ENR_DETAIL<7,k150>
			ENR_DETAIL<4,k150-1> = ENR_DETAIL<8,k150>
			ENR_DETAIL<5,k150-1> = ENR_DETAIL<9,k150>
			ENR_DETAIL<6,k150-1> = ENR_DETAIL<14,k150>
			ENR_DETAIL<7,k150-1> = ENR_DETAIL<15,k150>
		REPEAT
		ENR_DETAIL<1,k150-1> = ""
		ENR_DETAIL<2,k150-1> = ""
		ENR_DETAIL<3,k150-1> = ""
		ENR_DETAIL<4,k150-1> = ""
		ENR_DETAIL<5,k150-1> = ""
		ENR_DETAIL<6,k150-1> = ""
		ENR_DETAIL<7,k150-1> = ""
	   END
	   WRITE ENR_DETAIL ON F.DETAILMANDAT, W_DernierContrat:Periode
	END ELSE
		* Pas trouv => On dclenche une erreur ?
		W_Erreur = "Rubrique 840 non trouve"
		W_AidantErr = W_DernierContrat[1,5]
		W_EmplErr = ENR_CONTRAT<3>
		GOSUB 3000
	END

   CASE TypeAct = "I"
*	WRITE ENR_DETAIL ON F.DETAILINTER, W_DernierContrat:Periode
   CASE TypeAct = "S"
	IF ENR_DETAIL<1> # "" OR ENR_DETAIL<6> # "" THEN
   		IF NomFichierTlg # "" THEN
			W_Att=2
			GOSUB 151
   		END
		WRITE ENR_DETAIL ON F.DETAILADMIN, W_DernierContrat:Periode
	END
END CASE

ENR_CONTRAT<81> = Periode
WRITE ENR_CONTRAT ON F.CONTRAT, W_DernierContrat

RETURN

151 ***************************************************************************
*			Arrondit les heures saisies 			      *
*******************************************************************************
IF SystemeTlg # "05" THEN
	* Cas gnral (sauf Lille ASSAD (code tlg "05")),
	* on arrondit au 1/4 heure le plus proche...
	W_CountAtt=DCOUNT(ENR_DETAIL<W_Att>,CHAR(253))
	FOR iAtt=1 TO W_CountAtt
		W_Val=ENR_DETAIL<W_Att,iAtt>
		W_Len=LEN(W_Val)
		W_Minute=W_Val[W_Len-1,2]
	
		BEGIN CASE
			CASE W_Minute >= "0" AND W_Minute <= "12"
				W_Minute = W_Val[1,W_Len-2]:"00"
			CASE W_Minute >= "13" AND W_Minute <= "37"
				W_Minute = W_Val[1,W_Len-2]:"25"
			CASE W_Minute >= "38" AND W_Minute <= "62"
				W_Minute = W_Val[1,W_Len-2]:"50"
			CASE W_Minute >= "63" AND W_Minute <= "87" 
				W_Minute = W_Val[1,W_Len-2]:"75"
			CASE W_Minute >= "88" AND W_Minute <= "99" 
				W_Minute = W_Val[1,W_Len-2]+1:"00"
	   	END CASE

		ENR_DETAIL<W_Att,iAtt>=W_Minute

	NEXT iAtt
END ELSE
	* Cas Lille ASSAD (code tlg "05"),
	* On arrondit au 1/4 heure INFERIEUR...
	W_CountAtt=DCOUNT(ENR_DETAIL<W_Att>,CHAR(253))
	FOR iAtt=1 TO W_CountAtt
		W_Val=ENR_DETAIL<W_Att,iAtt>
		W_Len=LEN(W_Val)
		W_Minute=W_Val[W_Len-1,2]
		IF TypeAct = "P" THEN
		   BEGIN CASE
			CASE W_Minute <= "24"
				W_Minute = W_Val[1,W_Len-2]:"00"
			CASE W_Minute <= "49"
				W_Minute = W_Val[1,W_Len-2]:"25"
			CASE W_Minute <= "74"
				W_Minute = W_Val[1,W_Len-2]:"50"
			CASE W_Minute <= "99" 
				W_Minute = W_Val[1,W_Len-2]:"75"
			CASE 1
				* Rien
	   	   END CASE
		END ELSE
		   BEGIN CASE
			CASE W_Minute <= "07"
				W_Minute = W_Val[1,W_Len-2]:"00"
			CASE W_Minute <= "16"
				W_Minute = W_Val[1,W_Len-2]:"08"
			CASE W_Minute <= "24"
				W_Minute = W_Val[1,W_Len-2]:"17"
			CASE W_Minute <= "32" 
				W_Minute = W_Val[1,W_Len-2]:"25"
			CASE W_Minute <= "41"
				W_Minute = W_Val[1,W_Len-2]:"33"
			CASE W_Minute <= "49"
				W_Minute = W_Val[1,W_Len-2]:"42"
			CASE W_Minute <= "57"
				W_Minute = W_Val[1,W_Len-2]:"50"
			CASE W_Minute <= "66" 
				W_Minute = W_Val[1,W_Len-2]:"58"
			CASE W_Minute <= "74"
				W_Minute = W_Val[1,W_Len-2]:"67"
			CASE W_Minute <= "82"
				W_Minute = W_Val[1,W_Len-2]:"75"
			CASE W_Minute <= "91"
				W_Minute = W_Val[1,W_Len-2]:"83"
			CASE W_Minute <= "99" 
				W_Minute = W_Val[1,W_Len-2]:"92"
			CASE 1
				* Rien
	   	   END CASE
			
		END
		ENR_DETAIL<W_Att,iAtt>=W_Minute

	NEXT iAtt

END

RETURN

155 ***************************************************************************
*			Tri par ordre alpha des aids prestataires		      *
*******************************************************************************
ENR_ATRIER = ENR_DETAIL
W_NbMv155 = DCOUNT(ENR_ATRIER<1>,CHAR(253))

GOSUB 156
IF BasculMOD = "1" THEN
	ENR_DETAIL<1> = ""
	ENR_DETAIL<2> = ""
	ENR_DETAIL<3> = ""
	ENR_DETAIL<4> = ""
	ENR_DETAIL<10> = ""
	ENR_DETAIL<11> = ""
	ENR_DETAIL<12> = ""
	ENR_DETAIL<13> = ""
END

W_DernierPris155 = "AAAA"
W_IndDernierPris155 = 0

FOR i155 = 1 TO W_NbMv155
	W_IndAPrendre155 = 0
	W_PlusPetit155 = "ZZZZ"
	k155 = W_NbMv155
	LOOP
	WHILE k155 > 0
		IF W_ListeNomsAide<k155> <= W_PlusPetit155 AND W_ListeNomsAide<k155> >= W_DernierPris155 THEN
			IF (W_ListeNomsAide<k155> = W_DernierPris155 AND W_IndDernierPris155 < k155) OR W_ListeNomsAide<k155> > W_DernierPris155 THEN
				W_PlusPetit155 = W_ListeNomsAide<k155> 
				W_IndAPrendre155 = k155
			END
		END
		k155 = k155 - 1	
	REPEAT
	
	W_IndDernierPris155 = W_IndAPrendre155
	W_DernierPris155 = W_ListeNomsAide<W_IndAPrendre155>
	ENR_DETAIL<1,i155> = ENR_ATRIER<1,W_IndAPrendre155>
	ENR_DETAIL<2,i155> = ENR_ATRIER<2,W_IndAPrendre155>
	ENR_DETAIL<3,i155> = ENR_ATRIER<3,W_IndAPrendre155>
	ENR_DETAIL<4,i155> = ENR_ATRIER<4,W_IndAPrendre155>
	ENR_DETAIL<10,i155> = ENR_ATRIER<10,W_IndAPrendre155>
	ENR_DETAIL<11,i155> = ENR_ATRIER<11,W_IndAPrendre155>
	ENR_DETAIL<12,i155> = ENR_ATRIER<12,W_IndAPrendre155>
	ENR_DETAIL<13,i155> = ENR_ATRIER<13,W_IndAPrendre155>

NEXT i155


RETURN

156 ************************************************************
*			LectureS CIVILAIDE				   *
****************************************************************
W_ListeNomsAide = ""
FOR i156 = 1 TO W_NbMv155
	READ ENR_CIVILAIDE FROM F.CIVILAIDE, ENR_ATRIER<1,i156> THEN
		W_ListeNomsAide<i156> = OCONV(TRIM(ENR_CIVILAIDE<2>:" ":ENR_CIVILAIDE<3>),"MCU")
	END ELSE
		W_ListeNomsAide<i156> = "" 
	END
NEXT i156
RETURN

5000 ***********************************************************
*	calcul des JF non travaills pour salaris en congs 	   *
****************************************************************
* Variabvle ci dessous : Pour qu'en procdure 4000, on affecte la variable JF non trav.
W_NonTrav = "V"

	FOR W_Jour = DateDeb TO DateFin
	   
	   W_JourFerieProsp = W_Jour
	   W_IndJour = 1
	   i = 1
	   TabInterv<W_IndJour,6,i> = RubDefautNorm
	   GOSUB 4000
	   IF W_JF4000 = "V" THEN
		ENR = ""
		WRITE ENR ON F.TEMPO, "JF":W_Jour
		GOSUB 5100
         END
	NEXT W_Jour
RETURN

5100 **************************************************************
*			Traitement d'un jour fri				*
*******************************************************************
* On est sur un jour fri (W_Jour) => slection des aidants en cong sur ce jour...
W_ReqAbs = ""
IF Tri = "A" THEN
	EXECUTE 'SELECT ABSENCESAIDANT AVEC @ID = "':Selection[1,5]:']" AND AVEC DebAbsAidant <= "':W_Jour:'" AND AVEC 2 >= "':W_Jour:'" AND AVEC NumMotifAidant = "07" OR = "08" OR = "09" OR = "10" OR = "11" OR = "14" OR = "15" OR = "16"'
END ELSE
	EXECUTE 'SELECT ABSENCESAIDANT AVEC DebAbsAidant <= "':W_Jour:'" AND AVEC 2 >= "':W_Jour:'" AND AVEC NumMotifAidant = "07" OR = "08" OR = "09" OR = "10" OR = "11" OR = "14" OR = "15" OR = "16"'
END
EXECUTE 'SAUVE-LISTE W_ListeAbsBasculPaiePlg'
EXECUTE 'LISTE W_ListeAbsBasculPaiePlg' RETURNING MSGCODE
IF MSGCODE<1> # "209" THEN
	SELECT F.ABSENCESAIDANT TO W_ReqAbs
	W_FinAbs = "F"
	LOOP
		READNEXT W_CleAbs FROM W_ReqAbs ELSE W_FinAbs = "V"
	WHILE W_FinAbs = "F"
		READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT, W_CleAbs ELSE ENR_ABSENCESAIDANT = ""
		GOSUB 5200
	REPEAT
END
EXECUTE 'EFFACER-LISTE W_ListeAbsBasculPaiePlg'

RETURN

5200 **************************************************************
*			Traitement d'un aidant					*
*******************************************************************
* On a trouv un aidant en cong ce jour fri => chercher son contrat de travail
W_Temp = 'SELECT CONTRAT AVEC 65 # "O" AND AVEC 8 >= "':W_Jour:'" OR = "" AND AVEC 7 <= "':W_Jour:'" AND AVEC 6 = "P" AND AVEC TypeActivite = "':TypeAct:'"'
IF Tri = "A" THEN
	W_Temp = W_Temp:' AND AVEC @ID = "':Selection:'"'
END ELSE
	W_Temp = W_Temp:' AND AVEC @ID = "':W_CleAbs[1,5]:']"'
	IF Tri = "S" THEN
		IF Selection # "" THEN
			W_Temp = W_Temp:' AND AVEC CodSecteurContrat = "':Selection:'"'
		END
		W_Temp = W_Temp:' PAR LibSecteurContrat'
	END ELSE
		IF Tri = "C" THEN
			IF Selection # "" THEN
				W_Temp = W_Temp:' AND AVEC LibCommuneAidant = "':Selection:'"'
			END
			W_Temp = W_Temp:' PAR LibCommuneAidant'
		END
	END
END
EXECUTE W_Temp
W_Fin = "F"
W_PRLance = "F"
LOOP
READNEXT W_Cle ELSE W_Fin = "V"
WHILE W_Fin = "F"

	READ ENR_CONTRAT FROM F.CONTRAT, W_Cle THEN
		W_TabMoi = ""	
		GOSUB 5300
		IF W_Exclu5300 = "F" THEN
			GOSUB 5700
			IF W_Exclu5700 = "F" THEN
				GOSUB 5400
			END
		END
	END
REPEAT
RETURN

*************************************************************************
*	Transformation des interventions les jours fris en MOI :		*
*  n'effectuer que si l'aidant a au mons trois mois d'anciennet		*
* IMPORTANT : ne pas utiliser variablmes i, k , etc...			*
*************************************************************************
5300
W_Exclu5300 = "V"
W_Date5300 = W_Jour
IF W_Jour-ENR_CONTRAT<7> >= 89 THEN
	W_Exclu5300 = "F"
END
RETURN


5400 **************************************************************
*			Appel du PR AFFICHEPLANNING				*
*******************************************************************
IF W_PRLance = "F" THEN
	W_CleRetour = User:TIME()
	W_Params = "AFFICHEPLANNING |" : W_CleRetour : "||PMIS|" : W_Jour : "|" : W_Jour : "|" : "|" : "|" : W_Cle[1,5] : "|A" : "|"
	EXECUTE W_Params
	READ TabInterv FROM F.TPSTEMPO, "AFFICHEPLANNING":W_CleRetour ELSE
		TabInterv = ""
		TabInterv<1> = "#FIN"
	END
	W_PRLance = "V"
END
W_TabMoi = ""
i = 0
LOOP
i = i + 1
WHILE TabInterv<W_IndJour,1,i> # ""
   IF TabInterv<W_IndJour,1,i> = "Interv":TypeAct:"AbsAide" THEN
	IF TypeAct = "M" AND TabInterv<W_IndJour,4,i>[6,5] = ENR_CONTRAT<3> THEN
		GOSUB 5500
	END ELSE
		IF TypeAct # "M" THEN
			GOSUB 5500
		END ELSE
			* Rien
		END
	END
   END
REPEAT
IF W_TabMoi # "" THEN
	GOSUB 5600
END
RETURN

5500 **************************************************************
*		Comptabilisation des heures					*
*******************************************************************
IF TabInterv<W_IndJour,3,i> <= W_HreFinAbs AND TabInterv<W_IndJour,2,i> >= W_HreDebAbs THEN
  W_Rub = ""
  IF TabInterv<W_IndJour,6,i> = RubDefautNorm OR TabInterv<W_IndJour,6,i> = "" THEN
	W_Rub = RubDefautFerieeMOI
  END ELSE
	
	GOSUB 4000
	W_Rub = W_RubDefautFerieProsp
  END

  i5500 = 0
  W_Trouve5500 = "F"
  LOOP
    i5500 = i5500 + 1
  IF W_TabMoi<1,i5500> = W_Rub THEN
	W_Trouve5500 = "V"
  END
  WHILE W_TabMoi<1,i5500> # "" AND W_Trouve5500 = "F"
  REPEAT
  IF W_Trouve5500 = "F" THEN
	W_TabMoi<1,-1> = W_Rub
	W_TabMoi<2,-1> = TabInterv<W_IndJour,5,i>
  END ELSE
	W_TabMoi<2,i5500> = W_TabMoi<2,i5500> + TabInterv<W_IndJour,5,i>
  END
END
RETURN

5600 **************************************************************
* 		Insertion (ou non) des heures dans la saisie 		*
*******************************************************************

k5600 = 0
LOOP
k5600 = k5600 + 1
WHILE W_TabMoi<1,k5600> # ""
 W_Ecrire = "F"
 IF TypeAct = "P" THEN
  READ ENR_DETAIL FROM F.DETAILPREST, W_Cle:Periode THEN

	IF INDEX(ENR_DETAIL<5>,W_TabMoi<1,k5600>,1) = 0 THEN
		* On ajoute une rubrique de saisie
		ENR_DETAIL<5,-1> = W_TabMoi<1,k5600>
		ENR_DETAIL<6,-1> = W_TabMoi<2,k5600>
		ENR_DETAIL<7,-1> = "0"
		ENR_DETAIL<8,-1> = "0"
		ENR_DETAIL<9,-1> = ENR_CONTRAT<36,1>
		ENR_DETAIL<14,-1> = ""
		ENR_DETAIL<15,-1> = ""
		WRITE ENR_DETAIL ON F.DETAILPREST, W_Cle:Periode
	END ELSE
		W_Pos = INDEX(W_RecapMoi<1>,W_Cle,1)
		IF W_Pos # 0 THEN
			W_Indice = (W_Pos + 8) / 9
			IF INDEX(W_RecapMoi<2,W_Indice>,W_TabMoi<1,k5600>,1) # 0 THEN
				* On crit, mais on cumule...
				i5600 = 0
				LOOP
				i5600 = i5600 + 1 
				WHILE ENR_DETAIL<5,i5600> # W_TabMoi<1,k5600>
				REPEAT
				ENR_DETAIL<6,i5600> = ENR_DETAIL<6,i5600> + W_TabMoi<2,k5600>
				WRITE ENR_DETAIL ON F.DETAILPREST, W_Cle:Periode

			END
		END
	END
  END
 END ELSE
  READ ENR_DETAIL FROM F.DETAILMANDAT, W_Cle:Periode THEN
	IF INDEX(ENR_DETAIL<1>,W_TabMoi<1,k5600>,1) = 0 THEN
		* On ajoute une rubrique de saisie
		ENR_DETAIL<1,-1> = W_TabMoi<1,k5600>
		ENR_DETAIL<2,-1> = W_TabMoi<2,k5600>
		ENR_DETAIL<3,-1> = "0"
		ENR_DETAIL<4,-1> = "0"
		ENR_DETAIL<5,-1> = ENR_CONTRAT<36,1>
		ENR_DETAIL<6,-1> = ""
		ENR_DETAIL<7,-1> = ""
		WRITE ENR_DETAIL ON F.DETAILMANDAT, W_Cle:Periode
	END ELSE
		W_Pos = INDEX(W_RecapMoi<1>,W_Cle,1)
		
		IF W_Pos # 0 THEN
			W_Indice = (W_Pos + 8) / 9
			
			IF INDEX(W_RecapMoi<2,W_Indice>,W_TabMoi<1,k5600>,1) # 0 THEN
				* On crit, mais on cumule...
				i5600 = 0
				LOOP
				i5600 = i5600 + 1 
				WHILE ENR_DETAIL<1,i5600> # W_TabMoi<1,k5600> 
				REPEAT
				ENR_DETAIL<2,i5600> = ENR_DETAIL<2,i5600> + W_TabMoi<2,k5600>
				WRITE ENR_DETAIL ON F.DETAILMANDAT, W_Cle:Periode

			END
		END
	END
	
  END
 END
REPEAT

RETURN

5700 **************************************************************************************
*	On vrifie que l'aidant est bien absent (ie pas d'exception sur le contrat en cours	*
* Nb : s'il y a exception, les heures Fries travailles ou non ont dj t payes	*
*******************************************************************************************
W_Exclu5700 = "F"
W_HreDebAbs = "0000"
W_HreFinAbs = "2400"

IF ENR_ABSENCESAIDANT<26> # "" THEN
		
	k5700 = 0 
	LOOP
	   k5700= k5700+ 1 
	WHILE ENR_ABSENCESAIDANT<26,k5700> # ""
	
			IF ENR_ABSENCESAIDANT<26,k5700> = W_Cle THEN
			
				IF ENR_ABSENCESAIDANT<21,k5700> = "N" THEN
					* Pas de conges pour ce contrat...
					W_Exclu5700 = "V" = ""
				END ELSE
					IF ENR_ABSENCESAIDANT<22,k5700> > W_Jour OR ENR_ABSENCESAIDANT<24,k5700> < W_Jour THEN
						W_Exclu5700 = "V"
					END ELSE
					   IF ENR_ABSENCESAIDANT<22,k5700> = W_Jour AND ENR_ABSENCESAIDANT<23,k5700> = "A" THEN
						W_HreDebAbs = MidiConges
  					   END ELSE
						W_HreDebAbs = "0000"
  					   END
  					   IF ENR_ABSENCESAIDANT<24,k5700> = W_Jour AND ENR_ABSENCESAIDANT<25,k5700> = "M" THEN
						W_HreFinAbs = MidiConges
  					   END ELSE
						W_HreFinAbs = "2400"
  					   END
					END
				END
				k5700 = 99
			END
		
	REPEAT
END ELSE
		* Pas de gestion des exceptions...
		IF W_CleAbs[8,5] = W_Jour AND ENR_ABSENCESAIDANT<1> = "2" THEN
			W_HreDebAbs = MidiConges
	  	END ELSE
			W_HreDebAbs = "0000"
	  	END
	  	IF ENR_ABSENCESAIDANT<2> = W_Jour AND ENR_ABSENCESAIDANT<3> = "1" THEN
			W_HreFinAbs = MidiConges
	  	END ELSE
			W_HreFinAbs = "2400"
	  	END
END
		

RETURN
