*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...)				*
*																		*
*************************************************************************************************************

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

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

* Nom utilisateur
User = "ADM"

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

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

* Periode a traiter :
PRINT "Priode ?"
INPUT Periode
*Periode = FIELD(PARAMETRES,"|",5)
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
NbJours = DateFin - DateDeb + 1

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

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

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

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

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

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

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

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

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"
WRITE W_Sortie ON F.FUSION, "IntervSansContrat":Asso:TypeAct:".txt"
**
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
	BasculMOI="0"
	GOSUB 111
END

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

IF W_Sortie = "" THEN

	PeriodePrecedente = Periode -1
	IF PeriodePrecedente[5,2] = "00" THEN
		PeriodePrecedente = Periode[1,4]-1
		PeriodePrecedente = PeriodePrecedente:"12"
	END
	
	W_ReqMoi = ""
	W_NomReqMoi = ""
	W_DerniereAnneeFerieProsp = ""

	W_IndSortie = 1

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

	W_DernierContrat = ""

	LOOP
		READNEXT W_CleContrat FROM W_ReqContrat ELSE W_FinContrat = "V"
		
		IF W_DernierContrat # "" THEN
		   IF W_TraiteContrat = "V" THEN
			GOSUB 150
		   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 AND W_AidantErr # W_CleContrat[1,5] 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
		GOSUB 155
*		IF W_TraiteContrat = "V" THEN
*		Nb : on va systmatiquement faire le traitement, car on doit faire apres traitement la liste
*		des interventions sans contrats (GOSUB 410). Or si l'on ne parcours pas les interventions,
*		on ne sais pas qu'elle sont bien lies  un contrat
		  BEGIN CASE 
		   CASE TypeAct = "P"
			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

		   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>
					i = i - 1
				END
			     END 
			   REPEAT
			END

		   CASE TypeAct = "I"
		*	READ ENR_DETAIL FROM F.DETAILINTER, W_CleContrat:Periode ELSE ENR_DETAIL = ""
			ENR_DETAIL = ""

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

		  END CASE
*		END

		IF W_AidantEnCoursTabInterv = W_CleContrat[1,5] THEN
			* Trt aidant en cours...
*			IF W_TraiteContrat = "V" THEN
*			Meme remarques que ci dessus concernant les interventions sans contrat...
				GOSUB 2000

*			END
		END ELSE
			* Un contrat sans interventions saisies => vrifier prsence de MOI
*			IF W_TraiteContrat = "V" AND BasculMOI = "1" THEN
*			idem interventions sans contrat.
			IF BasculMOI = "1" THEN
				GOSUB 300
			END

			IF W_IndAidantEnCoursTabInterv = 1 THEN
				W_IndAidantEnCoursTabInterv = 0
			END ELSE
**
IF W_IndAidantEnCoursTabInterv # 0 THEN
**
				W_IndAidantEnCoursTabInterv = W_IndAidantEnCoursTabInterv - (DateFinProspSuppl - DateDebProspSuppl + 2)
**
END
**
			END
		 	* 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 !
		GOSUB 410
		GOSUB 400
	END
	EXECUTE 'EFFACER-LISTE ':W_NomReq
	IF W_NomReqMoi # "" THEN
		EXECUTE 'EFFACER-LISTE ':W_NomReqMoi

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

WRITE W_Sortie ON F.TEMPO, "RapportBasculPaiePlg":User
RETURN


155 ***************************************************************************
*			Evaluation de l'tat d'avancement du contrat			*
*******************************************************************************
W_Erreur = ""
IF ENR_CONTRAT<63> < Periode THEN
  *IF (ENR_CONTRAT<63> = PeriodePrecedente OR 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
	WHILE W_AidantEnCoursTabInterv < W_CleContrat[1,5] AND W_SecteurContrat = W_SecteurInterv 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
	W_IndAidantEnCoursTabInterv = W_IndAidantEnCoursTabInterv + DateFinProspSuppl - DateDebProspSuppl + 2
WHILE W_IndAidantEnCoursTabInterv < W_CountTabInterv
	W_AidantEnCoursTabInterv = TabInterv<W_IndAidantEnCoursTabInterv>[8,5]
	GOSUB 410
REPEAT

RETURN


410 ***************************************************************************
*		Traitement des interventions sans contrat....				*
*******************************************************************************
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 THEN
				W_EmplErr = TabInterv<W_IndJour,4,i>[6,5]
				GOSUB 3000
				W_ListeEmplErr = W_ListeEmplErr:TabInterv<W_IndJour,4,i>[6,5]:"|"
			END
		  END ELSE
			IF INDEX(TabInterv<W_IndJour,1,i>,"MOI",1) # 0 AND TabInterv<W_IndJour,8,i> # "1" 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
		  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
			W_EmplErr = Asso
			GOSUB 3000
			i = 999
			W_IndJour = W_IndAidantEnCoursTabInterv + IndiceDepartInterventions + NbJours + 1
		  END
		REPEAT	
	REPEAT
END
RETURN

1000 **************************************************************************
*     	Initialisation des rubriques de saisie par dfaut			*
*******************************************************************************
READ ENR_TPSPARAMBASCUL FROM F.TPSPARAMBASCUL, Asso THEN
	BEGIN CASE
		CASE TypeAct = "P"
			*IF ENR_TPSPARAMBASCUL<1> # "1" THEN
				*W_Sortie = "PB PARAMETRES"
			*END ELSE
				W_IndParam = 1
			*END
		CASE TypeAct = "M"
			*IF ENR_TPSPARAMBASCUL<2> # "1" THEN
				*W_Sortie = "PB PARAMETRES"
			*END ELSE
				W_IndParam = 2
			*END
		CASE TypeAct = "I"
			*IF ENR_TPSPARAMBASCUL<3> # "1" THEN
				*W_Sortie = "PB PARAMETRES"
			*END ELSE
				W_IndParam = 3
			*END
		CASE TypeAct = "S"
			*IF ENR_TPSPARAMBASCUL<4> # "1" THEN
				*W_Sortie = "PB PARAMETRES"
			*END ELSE
				W_IndParam = 4
			*END
	END CASE
	IF W_Sortie = "" THEN
		RubDefautNorm = ENR_TPSPARAMBASCUL<5,W_IndParam>
		RubDefautDim = ENR_TPSPARAMBASCUL<6,W_IndParam>
		RubDefaut1Mai = ENR_TPSPARAMBASCUL<7,W_IndParam>
		RubDefautFeriee = ENR_TPSPARAMBASCUL<8,W_IndParam>

		RubDefautFerieeMOI = ENR_TPSPARAMBASCUL<9,W_IndParam>
	END
END ELSE
	*W_Sortie = "PB PARAMETRES"
END
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_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
**
		GOSUB 112
		IF W_Err="FAUX" THEN
**
			IF TypeAct # "M" OR TabInterv<W_IndJour,4,i>[6,5] = ENR_CONTRAT<3> THEN
				W_JourFerieProsp = DateDebProspSuppl + W_IndJour 
				GOSUB 4000
				IF TabInterv<W_IndJour,6,i> = "" THEN
					TabInterv<W_IndJour,6,i> = W_RubDefautFerieProsp
				END ELSE
				   READ ENR_RUBSAISIE FROM F.RUBSAISIE, TabInterv<W_IndJour,6,i> ELSE ENR_RUBSAISIE<2> = "3"
				   IF ENR_RUBSAISIE<2> = "3" THEN			   
					IF W_RubDefautFerieProsp # RubDefautNorm THEN
						TabInterv<W_IndJour,6,i> = W_RubDefautFerieProsp
					END
				   END ELSE
					IF OCONV(W_JourFerieProsp,"D4/")[1,6] = "01/05/" THEN
						* Quelle que soit la rubrique saisie, on met la rubrique particulire "heures 1er mai" car ces heures ne sont JAMAIS payes comme un jour fri traditionnel.
						TabInterv<W_IndJour,6,i> = RubDefaut1Mai
					END ELSE
						* Ne fait rien
					END
				   END
				END
				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>

				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]
			IF W_CleContratMoi = W_CleContrat OR (ENR_CONTRAT<1> = "02" AND W_CleContratMoi = ENR_CONTRAT<3>) OR (ENR_CONTRAT<1> # "02") 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>

				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> = ""
		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 						*
*******************************************************************************
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"
	   iMOD = 0
	   LOOP
	   iMOD = iMOD + 1
	   WHILE W_TabMod<1,iMOD> # ""
		ENR_DETAIL<1,-1> = W_TabMod<2,iMOD>
		ENR_DETAIL<2,-1> = W_TabMod<4,iMOD>
		ENR_DETAIL<3,-1> = "0"
		ENR_DETAIL<4,-1> = "0"
		ENR_DETAIL<5,-1> = W_TabMod<3,iMOD>
		ENR_DETAIL<6,-1> = ""
		ENR_DETAIL<7,-1> = ""
	   REPEAT

	CASE TypeAct = "I"

	CASE TypeAct = "S"
END CASE

RETURN



3000 **************************************************************************
*			Etablissement du rapport d'erreurs					*
*******************************************************************************
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<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

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_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_RubDefautFerieProsp = RubDefautNorm

IF OCONV(W_JourFerieProsp,"DWA") = "Sunday" OR OCONV(W_JourFerieProsp,"DWA") = "Dimanche" THEN
   W_RubDefautFerieProsp = RubDefautDim
END ELSE
   W_JourClairFerieProsp = OCONV(W_JourFerieProsp,"D4/")
   BEGIN CASE
	CASE W_JourClairFerieProsp[1,5] = "01/01"
		W_RubDefautFerieProsp = RubDefautFeriee
	CASE W_JourClairFerieProsp[1,5] = "01/05"
		W_RubDefautFerieProsp = RubDefaut1Mai
	CASE W_JourClairFerieProsp[1,5] = "08/05"
		W_RubDefautFerieProsp = RubDefautFeriee
	CASE W_JourClairFerieProsp[1,5] = "14/07"
		W_RubDefautFerieProsp = RubDefautFeriee
	CASE W_JourClairFerieProsp[1,5] = "15/08"
		W_RubDefautFerieProsp = RubDefautFeriee
	CASE W_JourClairFerieProsp[1,5] = "01/11"
		W_RubDefautFerieProsp = RubDefautFeriee
	CASE W_JourClairFerieProsp[1,5] = "11/11"
		W_RubDefautFerieProsp = RubDefautFeriee
	CASE W_JourClairFerieProsp[1,5] = "25/12"
		W_RubDefautFerieProsp = RubDefautFeriee
	CASE W_JourFerieProsp = ENR_PAQUES<2> + 1
		W_RubDefautFerieProsp = RubDefautFeriee
	CASE W_JourFerieProsp = ENR_PAQUES<2> + 39
		W_RubDefautFerieProsp = RubDefautFeriee
	CASE W_JourFerieProsp = ENR_PAQUES<2> + 39 + 11
		W_RubDefautFerieProsp = RubDefautFeriee
	CASE 1
		W_RubDefautFerieProsp = RubDefautNorm
   END CASE
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"

IF Tri = "A" THEN
	W_ParamAffichePlanning = ""
	READ ENR_CONTRAT FROM F.CONTRAT, Selection THEN
		IF ENR_CONTRAT<1> = "02" THEN
			W_ParamAffichePlanning = "EDITPLANNING |":User:"|":Asso:"|":TypeAct:"|":DateDebProspSuppl:"|":DateFinProspSuppl:"|A|":ENR_CONTRAT<3>:"|":Selection[1,5]:"|BASCULPAIE|||"
		END
	END
	IF W_ParamAffichePlanning = "" THEN
		W_ParamAffichePlanning = "EDITPLANNING |":User:"|":Asso:"|":TypeAct:"|":DateDebProspSuppl:"|":DateFinProspSuppl:"|||":Selection[1,5]:"|BASCULPAIE|||"
	END
END ELSE
	W_ParamAffichePlanning = "EDITPLANNING |":User:"|":Asso:"|":TypeAct:"|":DateDebProspSuppl:"|":DateFinProspSuppl:"|":Tri:"|":Selection:"||BASCULPAIE|||"
END
PRINT W_ParamAffichePlanning
CALL AFFICHEPLANNING(RETURNVAL,W_ParamAffichePlanning,TabInterv)

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<1>=User
W_Param<2>=Asso
W_Param<3>=TypeAct
W_Param<4>=Periode
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

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 
	GOSUB 3000
	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 corespondant  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 			      *
*******************************************************************************
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
		WRITE ENR_DETAIL ON F.DETAILPREST, W_DernierContrat:Periode
	END
   CASE TypeAct = "M"
	IF ENR_DETAIL<1> # "" OR ENR_DETAIL<6> # "" THEN
   		IF NomFichierTlg # "" THEN
			W_Att=2
			GOSUB 151
   		END
		WRITE ENR_DETAIL ON F.DETAILMANDAT, W_DernierContrat:Periode
	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 			      *
*******************************************************************************

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

RETURN
