SUBROUTINE BASCULPAIEPLG(RETURNVAL,PARAMETRES,W_Sortie)
****MODIF DU 04/01/2008 Ligne 1895****
*Modification JC, prise en compte du pointageaidant et si crasement MOI alors seulement sur les rubrique tlgrer*
* 
*************************************************************************************************************
*					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"
*************************************************************************************************************
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 "", "RESPONSABLE" TO F.RESPONSABLE 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 RETURN
OPEN "", "TLGPARAM" TO F.TLGPARAM ELSE RETURN
OPEN "", "DOMITIMEDROITS" TO F.DOMITIMEDROITS ELSE RETURN
OPEN "", "DOMITIMEPARAMINTGR" TO F.DOMITIMEPARAMINTGR ELSE RETURN

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

W_EditionMOI = FIELD(PARAMETRES,"|",16)

* modif vanessa 23/11/10 - DA 10253-01
W_Ecart = FIELD(PARAMETRES,"|",17)

IF W_Ecart=1 THEN
	OPEN "", "DETAILPRESTPLG" TO F.DETAILPRESTPLG ELSE PRINT "FICHIER DETAILPRESTPLG INEXISTANT"
	OPEN "", "DETAILMANDATPLG" TO F.DETAILMANDATPLG ELSE PRINT "FICHIER DETAILMANDATPLG INEXISTANT"
	EXECUTE 'VIDER-FICHIER DETAILPRESTPLG'
	EXECUTE 'VIDER-FICHIER DETAILMANDATPLG'	
END

* modif vanessa 25/11/10 - DA 10203-01
W_PaiementJF = FIELD(PARAMETRES,"|",18)
W_Fonction = FIELD(PARAMETRES,"|",19)

ENR_TLGPARAM=""
ENR_DOMIDROITS=""
W_SortieMOI=""

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_IndMoi=0

W_TriErr = ""
W_Sortie = ""
GOSUB 1000

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

* modif vanessa 23/11/10 - DA 10253-01
IF W_Ecart=1 THEN
	GOSUB 6100
END ELSE
	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

	IF W_StartMOI = 1 THEN
		WRITE W_SortieMOI ON F.TEMPO,"DETAILMOIINTEGREE":User:Periode
	END ELSE
		W_SortieMOI = "Vide" 
		WRITE W_SortieMOI ON F.TEMPO,"DETAILMOIINTEGREE":User:Periode
	END
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
	
	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 ne pas 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 = ""
	
  W_StartMOI = 0
	NoLigne = 1
	
	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
		* On gre ici les spcificits potentielles du couple aidant/aid
		* ou de l'aidant seul.
		* Le tableau ENR_TPSPARAMBASCUL est renseign au dpart du programme. On l'a sauvegard et
		* on l'initialise  chaque "boucle" afin de toujours avoir les donnes soit par dfaut
		* soit spcifiques.
		ENR_TPSPARAMBASCUL=ENR_TPSPARAMBASCULSAVE
***		
		* Grgory - 19/09/08
		* On lit les donnes gnrales de Domitime ainsi que les donnes individuelles.
		READ ENR_DOMIPARAM FROM F.DOMITIMEPARAMINTGR, ENR_CONTRAT<2> ELSE ENR_DOMIPARAM=""
		IF ENR_CONTRAT<1>="02" THEN
			READ ENR_DOMIDROITS FROM F.DOMITIMEDROITS, W_CleContrat[1,5]:ENR_CONTRAT<3> ELSE ENR_DOMIDROITS=""
		END ELSE
			READ ENR_DOMIDROITS FROM F.DOMITIMEDROITS, W_CleContrat[1,5]:Asso ELSE ENR_DOMIDROITS=""
		END		
		* Si il n'y a pas de donnes individuelles alors on garde les donnes gnrales.
		* Sinon, on parcours les activits du contrat.
		* Pour chaque activit, on parcourt les donnes gnrales de Domitimes pour trouver
		* les MV lies  l'activit. A chaque fois qu'on trouve la bonne activit, on a en mme temps une rubrique lie.
		* On parcourt donc les donnes indivuelles afin de savoir si il y a des spcifits pour la rubrique.
		* Si c'est le cas, on parcours les donnes gnrales pour trouver la MV correspondant  la rubrique.
		* Une fois fait, on modifie le tableau des donnes gnrales pour prendre en compte les donnes individuelles.
		* De cette manire, le reste du programme n'a pas besoin d'tre touch.
		IF ENR_DOMIDROITS<>"" THEN
			FOR IAct=1 TO DCOUNT(ENR_CONTRAT<36>,CHAR(253))
				FOR JDomi=1 TO DCOUNT(ENR_DOMIPARAM<1>,CHAR(253))
					IF ENR_DOMIPARAM<1,JDomi>=ENR_CONTRAT<36,IAct> THEN
						FOR KDrts=1 TO DCOUNT(ENR_DOMIDROITS<3>,CHAR(253))
							IF ENR_DOMIDROITS<3,KDrts>=ENR_DOMIPARAM<2,JDomi> THEN
								FOR LTps=1 TO DCOUNT(ENR_TPSPARAMBASCUL<5>,CHAR(253))
									IF ENR_TPSPARAMBASCUL<5,LTps>=ENR_DOMIDROITS<3,KDrts> THEN
										ENR_TPSPARAMBASCUL<6,LTps>=ENR_DOMIDROITS<9,KDrts>
										ENR_TPSPARAMBASCUL<7,LTps>=ENR_DOMIDROITS<10,KDrts>
										ENR_TPSPARAMBASCUL<8,LTps>=ENR_DOMIDROITS<11,KDrts>
										ENR_TPSPARAMBASCUL<9,LTps>=ENR_DOMIDROITS<12,KDrts>
									END
								NEXT LTps
							END
						NEXT KDrts
					END
				NEXT JDomi
			NEXT IAct
		END		
***		


		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 lire 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
			* Trt aidant en cours...
				GOSUB 2000

		END ELSE
			* 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	
	  NoLigne = NoLigne + 1
	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
		* Modif Greg - 25/11/11 - DA11127 - Correction : les jours fris doivent tre
		* traits si la case  cocher prvue pour cela a t coche sur l'IHM.
		* Aucun rapport avec la case  cocher des MOI. Le test existant n'est donc
		* pas bon puisqu'il ne teste pas la bonne case  cocher.
		*IF BasculMOI="1" AND Traitement # "ISC" THEN
		IF W_PaiementJF="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

	IF Traitement = "ISC" THEN
		GOSUB 3150
	END

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

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
			* modif vanessa 25/11/10 - DA 10253-01
			IF W_Ecart="1" THEN
				W_TraiteContrat = "V"
			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
	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_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> # ""
		  * MODIF VANESSA 14/06/11 - considrer comme intervention sans contrat si commence par "Interv" et non pas si "EXCEPTInterv"
		  IF TabInterv<W_IndJour,1,i>[1,6]="Interv" 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> # ""
			* MODIF VANESSA 04/05/11 - considrer comme intervention sans contrat si commence par "Interv" et non pas si "EXCEPTInterv"
			IF (TabInterv<W_IndJour,1,i>[1,6]="Interv" 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_TPSPARAMBASCULSAVE=ENR_TPSPARAMBASCUL
	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
				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

	IF W_Sortie = "" THEN
	
		RubDefautNorm = ENR_TPSPARAMBASCUL<10,W_IndParam>

		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
	END
END ELSE
	
	IF Traitement # "ISC" THEN
		W_Sortie = "PB PARAMETRES"
	END ELSE
		ENR_TPSPARAMBASCUL = ""
		ENR_TPSPARAMBASCULSAVE=""
		W_IndParam = ""
1001
		IF SystemeTlg <> "" THEN
			RubDefautNorm = "XXX"
		END ELSE
			RubDefautNorm = "019"
			RubDefautDim = RubDefautNorm
			RubDefaut1Mai = RubDefautNorm
			RubDefautFeriee = RubDefautNorm
			RubDefautFerieeMOI = RubDefautNorm
		END
	END
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

* Christophe - le 01/04/2010 pour avoir toujours le 1er jour du mois, mme si le contrat commence au milieu.
W_DebPeriode2200 = W_IndAidantEnCoursTabInterv + DateDeb - DateDebProspSuppl + 1

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

W_DernIndAidant2000 = W_IndAidantEnCoursTabInterv

W_TabMoi = ""
W_TabMod = ""
W_SauveIndiceJF=""
W_IndiceJF =1
W_TrouveInterv="FAUX"

FOR W_IndJour = W_DebPeriode TO W_FinPeriode
	i = 0
	W_NbHreTrav=0
	W_NbHreTravNormal=0
	W_TabMoiTemp =""
	W_JourFerieProsp = W_DateDeb + (W_IndJour - W_DebPeriode)
	W_TrouveInterv="FAUX"
	
	* Modif Greg - 25/11/11 - DA11127 - Nouvelle variable.
	W_AuMoinsUneInterv="NON"
	LOOP
	i = i + 1
	WHILE TabInterv<W_IndJour,1,i> # ""
		IF TabInterv<W_IndJour,1,i>[1,6]="Interv" OR TabInterv<W_IndJour,1,i>[1,3]="MOI" THEN W_AuMoinsUneInterv="OUI"
	
		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
			
				GOSUB 4000
				* Christophe le 05/09/2011 - correction des MOD  zro qui ressortent dans la saisie des heures.
				IF TabInterv<W_IndJour,5,i> # 0 THEN
					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>
						* modif vanessa 29/11/10 - DA 10203-01		
						W_NbHreTrav=W_NbHreTrav+TabInterv<W_IndJour,5,i>
						* modif vanessa 24/05/11 - cumul les hres trav habituellement pour basculement des JF en mode planning
						READ ENR_TPSDETAILSINTERV FROM F.TPSDETAILSINTERV, TabInterv<W_IndJour,4,i> ELSE ENR_TPSDETAILSINTERV = ""
						* modif vanessa 31/05/11
						IF ENR_TPSDETAILSINTERV<1>-TabInterv<W_IndJour,4,i>[11,5] > 7 OR ENR_TPSDETAILSINTERV<1>="" THEN
							W_NbHreTravNormal=W_NbHreTravNormal+TabInterv<W_IndJour,5,i>
						END
						W_TrouveInterv="VRAI"
					END
				END
				TabInterv<W_IndJour,8,i> = "1"
			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
					IF TabInterv<W_IndJour,6,i> # "999" THEN
						* modif vanessa 26/11/10 - DA 10203-01
						IF (W_PaiementJF="1" AND INDEX(ENR_TPSPARAMBASCUL<9>,TabInterv<W_IndJour,6,i>,1) # 0 AND W_Fonction = "P") OR INDEX(ENR_TPSPARAMBASCUL<9>,TabInterv<W_IndJour,6,i>,1) = 0 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>
							IF INDEX(ENR_TPSPARAMBASCUL<9>,TabInterv<W_IndJour,6,i>,1) # 0 THEN
								* Christophe le 07/09/2011 permet de mettre  jour les rubriques par dfaut en fonction de la rubrique de la MOI pour tre sur d'avoir 
								* la rubrique RubDefautFerieeMOI  jour
								GOSUB 4000							
								W_TabMoiTemp<1,k> = TabInterv<W_IndJour,6,i>
								W_TabMoiTemp<2,k> = W_TabMoiTemp<2,k> + TabInterv<W_IndJour,5,i>								
								W_SauveIndiceJF<W_IndiceJF>=k
								W_IndiceJF = W_IndiceJF+1
							END
							W_TrouveInterv="VRAI"
						END
					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

	* modif vanessa 29/11/10 - DA 10203-01
	W_JourClairFerieProsp = OCONV(W_JourFerieProsp,"D4/")
	W_ParamJF=W_JourClairFerieProsp:"|":Asso
	CALL DIMJF(RETURNVAL,W_ParamJF,Ferie)
	* Christophe le 06/09/2011 DA11103-01 ne pas travailler sur les JF non trav si CP ou Arret le calcul se fera plus tard sub 
	* On part du principe que l'aidant est absent sur la journe, on ne gre pas les demi-journes ni les exceptions.

	IF INDEX(TabInterv<W_IndJour,1>,"CONGES",1) # 0 OR INDEX(TabInterv<W_IndJour,1>,"ARRET",1) # 0 THEN
		W_AbsJFNonTrav="VRAI"
	END ELSE
		W_AbsJFNonTrav="FAUX"
	END
	
	* modif vanessa 30/03/11 
	* modif vanessa 24/05/11 - cumul les hres trav habituellement pour basculement des JF en mode planning
	
	* Modif Greg - 02/12/11 - Si l'aidant a une date d'anciennet dans son contrat,
	* il faut l'utiliser pour calculer si l'aidant a + de 3 mois ou pas, plutt que
	* de se baser automatiquement sur la date de dbut du contrat.
	IF ENR_CONTRAT<97><>"" THEN
		W_DateAnciennete=ENR_CONTRAT<97>
	END ELSE
		W_DateAnciennete=ENR_CONTRAT<7>
	END
	
	IF W_PaiementJF="1" AND Ferie[1,5] = "FERIE" AND OCONV(W_JourFerieProsp,"DW")# "0" AND W_JourFerieProsp-W_DateAnciennete >= 89 AND W_AbsJFNonTrav = "FAUX" THEN	
	*IF W_PaiementJF="1" AND Ferie[1,5] = "FERIE" AND OCONV(W_JourFerieProsp,"DW")# "0" AND W_JourFerieProsp-ENR_CONTRAT<7> >= 89 THEN	
	*IF W_PaiementJF="1" AND W_Fonction = "C" AND Ferie[1,5] = "FERIE" AND OCONV(W_JourFerieProsp,"DW")# "0" THEN	
	*IF W_PaiementJF="1" AND W_Fonction = "C" AND Ferie[1,5] = "FERIE" AND OCONV(W_JourFerieProsp,"DW")# "0" AND W_TrouveInterv="VRAI" THEN
		IF W_Fonction = "C" THEN
			* Modif Greg - 25/11/11 - DA11127 - Il a t dcid que dsormais, les heures fries non travailles seront
			* payes seulement si l'aidant a au moins une intervention prvue sur la journe. Si ce n'est pas
			* le cas, on estime que c'est une journe o il n'aurait de toute faon pas travaill et donc qu'elle
			* ne doit pas tre prise en compte.
			* Par exemple un aidant travaille les samedis donc il a comme jour de repos le lundi. Si un lundi est
			* un jour fri, il ne faut pas lui payer car c'est un jour de repos et que si on paye, on le fait en
			* plus de payer les interventions du samedi.
			* Autre exemple : un aidant travaille 30h par mois mais seulement le jeudi et le vendredi, car le reste
			* du temps il travaille pour une autre asso. Un jour fri tombe un mardi. Si on lui paye, dj c'est
			* anormal car il ne travaille pas pour l'asso et de plus on lui payerait en plus de ses interventions
			* des jeudis et vendredi, qui "suffisent"  "remplir" son contrat.
			* Dans les deux cas, l'aidant est donc pay plus qu'il ne devrait.
			* Donc avant de lui payer sa journe, on s'assure qu'il doit bien travailler ce jour.
			* NB : cette gestion est uniquement lorsque l'utilisateur bascule les plannings en voulant
			* pay les jours fris non travaills  partir des contrats.
			IF W_AuMoinsUneInterv="OUI" THEN
				W_Jour=W_JourFerieProsp
				GOSUB 6300

				IF W_NbHreTrav < W_ValeurHor THEN
					k = 0
					LOOP
						k = k + 1
					WHILE W_TabMoi<1,k> # RubDefautFerieeMOI AND W_TabMoi<1,k> # ""		
					REPEAT
					* modif vanessa 31/05/11
					*IF W_TabMoi<1,k> = RubDefautFerieeMOI THEN
						W_TabMoi<1,k> = RubDefautFerieeMOI
						W_TabMoi<2,k> = W_TabMoi<2,k> + (W_ValeurHor-W_NbHreTrav)
						W_SauveIndiceJF<W_IndiceJF>=k
						W_IndiceJF = W_IndiceJF+1
					*END
				END
			END
		END ELSE
				
				* modif vanessa 31/05/11
			
				k = 0
				LOOP
					k = k + 1
				WHILE W_TabMoi<1,k> # RubDefautFerieeMOI AND W_TabMoi<1,k> # ""		
				REPEAT
				* modif vanessa 31/05/11
				IF W_TabMoi<1,k> = RubDefautFerieeMOI THEN
					IF W_TabMoiTemp<2,k> + (W_NbHreTravNormal-W_NbHreTrav) > 0 THEN
						W_TabMoi<1,k> = RubDefautFerieeMOI
						W_TabMoi<2,k> = W_TabMoi<2,k> + (W_NbHreTravNormal-W_NbHreTrav)
						W_SauveIndiceJF<W_IndiceJF>=k
						W_IndiceJF = W_IndiceJF+1
					END ELSE
						W_TabMoi<2,k> = W_TabMoi<2,k> - W_TabMoiTemp<2,k>						
					END
				END	
		END
	END
	
NEXT W_IndJour

IF BasculMOI = "1" OR W_PaiementJF="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> # ""

	* modif vanessa 01/12/10 - DA 10203-01
	IF BasculMOI = "0" AND W_PaiementJF="1" THEN
		W_IndiceJF=1
		LOOP 
		UNTIL iMoi=W_SauveIndiceJF<W_IndiceJF> OR W_SauveIndiceJF<W_IndiceJF>=""
			W_IndiceJF=W_IndiceJF+1
		REPEAT
		IF iMoi=W_SauveIndiceJF<W_IndiceJF> THEN
			W_Passe2100 = "VRAI"
		END ELSE
			W_Passe2100 = "FAUX"
		END
	END ELSE
		W_Passe2100 = "VRAI"
	END
	
	* christophe le 07/09/2011 pour ne pas mettre dans la saisie des heures des MOI  zro
	IF W_Passe2100 = "VRAI" AND W_TabMoi<2,iMoi> # 0 THEN
	*IF W_Passe2100 = "VRAI" THEN
		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
		
		W_CodeRubMOI = W_TabMoi<1,iMoi>
		W_BaseMOI = W_TabMoi<2,iMoi>

		*christophe le 16/09/2011 - problme d'dition des MOI quand traitement de paie dj effectu.
		IF W_TraiteContrat = "V" THEN	    
			IF W_EditionMOI = 1 AND W_CleContrat # "0" THEN
				W_CleContratEditMoi=W_CleContrat
				GOSUB 2110
			END
		END
	END
	
REPEAT

RETURN

2110 ****************************************
*		Edition des dtails de la MOI		*
*********************************************

	READ ENR_AIDANT FROM F.CIVILAIDANT, W_CleContratEditMoi[1,5] ELSE ENR_AIDANT = ""
	W_Critere=""
	IF Tri="S" THEN
		READ ENR_SECT FROM F.SECTEUR, ENR_AIDANT<31> ELSE ENR_SECT=""
		W_Critere=ENR_SECT<1>
	END ELSE
		IF Tri="C" THEN W_Critere=ENR_AIDANT<11>
	END
	
	READ ENR_RUB FROM F.RUBSAISIE, W_CodeRubMOI ELSE ENR_RUB = ""
	
	W_Employeur=""
	IF LEN(ENR_CONTRAT<3>)=5 THEN
		READ ENR_EMPLOYEUR FROM F.CIVILAIDE, ENR_CONTRAT<3> ELSE ENR_EMPLOYEUR=""
		W_Employeur=ENR_EMPLOYEUR<2>:" ":ENR_EMPLOYEUR<3>
	END ELSE
		READ ENR_EMPLOYEUR FROM F.ASSOCIATION, ENR_CONTRAT<3>[1,3] ELSE ENR_EMPLOYEUR=""
		W_CodeEmployeur=Asso
		W_LibEmployeur=" ":ENR_EMPLOYEUR<1> 
	END

	* Christophe le 07/09/2011 DA11106-01 on fait une boucle pour trier les MOI intgres
	IEditMoi = 1
	W_NomPrenomAidantCodeInsert=" ":ENR_AIDANT<2>:" ":ENR_AIDANT<3>:W_CleContratEditMoi[1,5]
	LOOP
		W_NomPrenomAidantCodeTab=W_SortieMOI<IEditMoi,2>:W_SortieMOI<IEditMoi,1>
		
	WHILE W_NomPrenomAidantCodeInsert > W_NomPrenomAidantCodeTab  AND W_SortieMOI<IEditMoi,1> # "" DO
		IEditMoi = IEditMoi + 1
	REPEAT

	IF W_SortieMOI<IEditMoi,1> = "" THEN
		W_SortieMOI<IEditMoi,1> = W_CleContratEditMoi[1,5]
		W_SortieMOI<IEditMoi,2> = " ":ENR_AIDANT<2>:" ":ENR_AIDANT<3>
		W_SortieMOI<IEditMoi,3> = W_CodeEmployeur
		W_SortieMOI<IEditMoi,4> = " ":W_LibEmployeur
		W_SortieMOI<IEditMoi,5> = " ":W_CodeRubMOI
		W_SortieMOI<IEditMoi,6> = " ":ENR_RUB<1>
		W_BaseMOI = W_BaseMOI "MR2,(#5)"
		W_SortieMOI<IEditMoi,7> = " ":W_BaseMOI
		W_SortieMOI<IEditMoi,8> = W_Critere
	END ELSE
		W_SortieMOI=INSERT(W_SortieMOI,IEditMoi;W_CleContratEditMoi[1,5])
		W_SortieMOI<IEditMoi,2>=" ":ENR_AIDANT<2>:" ":ENR_AIDANT<3>
		W_SortieMOI<IEditMoi,3>= W_CodeEmployeur
		W_SortieMOI<IEditMoi,4>=" ":W_LibEmployeur
		W_SortieMOI<IEditMoi,5>=" ":W_CodeRubMOI
		W_SortieMOI<IEditMoi,6>=" ":ENR_RUB<1>
		W_BaseMOI = W_BaseMOI "MR2,(#5)"
		W_SortieMOI<IEditMoi,7>=" ":W_BaseMOI
		W_SortieMOI<IEditMoi,8>=W_Critere
	END


	*W_IndMoi=W_IndMoi+1
	
	*W_SortieMOI<W_IndMoi> = W_CleContratEditMoi[1,5]:CHAR(253)
	*W_SortieMOI<W_IndMoi> = W_SortieMOI<W_IndMoi>:" ":ENR_AIDANT<2>:" ":ENR_AIDANT<3>:CHAR(253)
	*W_SortieMOI<W_IndMoi> = W_SortieMOI<W_IndMoi>:" ":W_Employeur:CHAR(253)
	*W_SortieMOI<W_IndMoi> = W_SortieMOI<W_IndMoi>:" ":W_CodeRubMOI:CHAR(253)
	*W_SortieMOI<W_IndMoi> = W_SortieMOI<W_IndMoi>:" ":ENR_RUB<1>:CHAR(253)
	*W_BaseMOI = W_BaseMOI "MR2,(#5)"
	*W_SortieMOI<W_IndMoi> = W_SortieMOI<W_IndMoi>:" ":W_BaseMOI
	*W_SortieMOI<W_IndMoi> = W_SortieMOI<W_IndMoi>:CHAR(253):W_Critere
	
	IF W_StartMOI = 0 THEN
		W_StartMOI = 1
	END
	
RETURN

2200 ************************************************************************
*			Intgration DETAILLEE MOD prestataire							*
*****************************************************************************

* modif christophe et greg le 11/02/2010, mauvaise indication du jour dans le dtail des heures
* sur la 1ere ligne on a le code de l'aidant donc on est en dcalage d'un jour + l'addition nous projette un jour en plus donc -2.
*W_JourClair = OCONV(DateDebProspSuppl + W_IndJour - 2,"D4/")
*W_JourClair = OCONV(DateDebProspSuppl + W_IndJour - W_DebPeriode,"D4/")

* Christophe le 01/04/2010 - correction du pb sur les CDD qui commence en milieu de mois et dont on calculait mal les dates d'intervention
* cette modif annule et remplace lamodif du 11/02/2010 qui n'tait pas correct en collectif.
W_JourClair = OCONV(DateDebProspSuppl + W_IndJour - W_DebPeriode2200,"D4/")
W_JourClair = W_JourClair[1,2]
iMOD = 0
LOOP
iMOD = iMOD + 1
WHILE W_TabMod<1,iMOD> # ""
	iDet = 1
	LOOP
	UNTIL ENR_DETAIL<1,iDet> = "" OR ENR_DETAIL<1,iDet> = W_TabMod<1,iMOD>
		iDet = iDet + 1	
	REPEAT

	IF ENR_DETAIL<1,iDet> = "" THEN
		ENR_DETAIL<1,iDet> = W_TabMod<1,iMOD>
		* modif vanessa 03/05/11 - vide les att si on a fait une intgration en global puis une intgration dtaille
		ENR_DETAIL<2,iDet> = ""
		ENR_DETAIL<4,iDet> = ""	
	END
	
	* 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"
	  i2300 = 0
	  LOOP
	  i2300 = i2300 + 1
	  WHILE W_TabMod<2,i2300> # ""
	   IF INDEX(W_ListeRubEffacee,W_TabMod<2,i2300>,1) = 0 THEN
		iMOD = 0
		LOOP
		iMOD = iMOD + 1
		WHILE ENR_DETAIL<1,iMOD> # ""
		  IF ENR_DETAIL<1,iMOD> = W_TabMod<2,i2300> THEN
			DEL ENR_DETAIL<1,iMOD>
			DEL ENR_DETAIL<2,iMOD>
			DEL ENR_DETAIL<3,iMOD>
			DEL ENR_DETAIL<4,iMOD>
			DEL ENR_DETAIL<5,iMOD>
			DEL ENR_DETAIL<6,iMOD>
			DEL ENR_DETAIL<7,iMOD>
			iMOD = iMOD - 1
		  END
		REPEAT
		W_ListeRubEffacee<-1> = W_TabMod<2,i2300>
	   END

	   ENR_DETAIL<1,-1> = W_TabMod<2,i2300>
	   ENR_DETAIL<2,-1> = W_TabMod<4,i2300>
	   ENR_DETAIL<3,-1> = "0"
	   ENR_DETAIL<4,-1> = "0"
	   ENR_DETAIL<5,-1> = W_TabMod<3,i2300>
	   ENR_DETAIL<6,-1> = ""
	   ENR_DETAIL<7,-1> = ""

	  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.

* MODIF VANESSA 24/06/11
IF TabInterv<W_IndJour,6,i> = "" THEN
	IF TypeAct="P" THEN
		W_IndParamBascul=1
	END ELSE
		IF TypeAct="M" THEN
			W_IndParamBascul=2
		END ELSE
			IF TypeAct="I" THEN
				W_IndParamBascul=3
			END ELSE
				IF TypeAct="S" THEN
					W_IndParamBascul=4
				END
			END
		END
	END
	
	RubDefautNorm = ENR_TPSPARAMBASCUL<10,W_IndParamBascul>
	
END ELSE
	RubDefautNorm = TabInterv<W_IndJour,6,i>
END

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=""
		
		* MODIF VANESSA 10/06/11 DA 11059-01		
		W_Param4000=W_JourClairFerieProsp:"|":Asso
		CALL DIMJF(RETURNVAL,W_Param4000,Ferie)
		
		* pas trouver la rubrique dans les "normales" alors recherche dans les autres colonnes
		IF Ferie = "FERIE0105" THEN
			W_IndTypeRubTlg=7
		END ELSE
			IF Ferie[1,5] = "FERIE" THEN
				W_IndTypeRubTlg=8			
			END ELSE
				IF Ferie = "DIMAN" THEN
					W_IndTypeRubTlg=6
				END 
			END
		END
		
		* Christophe le 05/09/2011 pb caen rubriques "jours fris"
		*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 ELSE
*	* Modif Greg - 24/06/11 - Si nous ne sommes pas en tlgestion, alors
*	* on initialise la variable suivante pour que le code s'excute correctement
*	* dans le reste de la procdure.
*	W_TrouveTlg4000 = "V"
*END

* MODIF VANESSA 10/06/11 DA 11059-01
*IF TabInterv<W_IndJour,6,i> = "" OR TabInterv<W_IndJour,6,i> = RubDefautNorm OR W_TrouveTlg4000 = "V" THEN

* Christophe le 05/09/2011 pb caen rubriques "jours fris"
IF W_TrouveTlg4000 = "V" THEN
	W_Param4000=W_JourClairFerieProsp:"|":Asso
	CALL DIMJF(RETURNVAL,W_Param4000,Ferie)

	* modif vanessa 15/06/11
	IF W_TrouveTlg4000 = "V" THEN
		IF Ferie = "FERIE0105" THEN
			W_RubDefautFerieProsp = RubDefaut1Mai
			W_JF4000 = "V"
		END ELSE
			IF Ferie[1,5] = "FERIE" THEN
				W_RubDefautFerieProsp = RubDefautFeriee
				W_JF4000 = "V"
			END ELSE
				IF Ferie = "DIMAN" THEN
					W_RubDefautFerieProsp = RubDefautDim
				END ELSE
					W_RubDefautFerieProsp = RubDefautNorm
				END
			END
		END
	END
END ELSE
	W_RubDefautFerieProsp=""
END
	
*END ELSE
*
*	W_Param4000=W_JourClairFerieProsp:"|":Asso
*	CALL DIMJF(RETURNVAL,W_Param4000,Ferie)
*	
*	i4000 = 0
*	LOOP
*		i4000 = i4000 + 1
*	WHILE ENR_TPSPARAMBASCUL<5,i4000> # TabInterv<W_IndJour,6,i> AND ENR_TPSPARAMBASCUL<5,i4000> # ""
*	REPEAT	
*	
*	IF ENR_TPSPARAMBASCUL<5,i4000> = "" THEN
*		W_RubDefautFerieProsp = ""
*	END ELSE
*	
*		IF Ferie = "FERIE0105" THEN
*			IF W_NonTrav = "V" THEN
*				W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<9,i4000>
*			END ELSE
*				W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<7,i4000>
*			END
*	    END ELSE
*		
*			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
*				IF Ferie = "DIMAN" THEN
*					W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<6,i4000>
*				END ELSE			
*					W_RubDefautFerieProsp = ENR_TPSPARAMBASCUL<5,i4000>
*				END
*			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<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

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

* christophe le 02/11/2009 - rajout test sur l'assoc car basculement des MOI sur tous les assos meme si selectionne qu'une seule
W_Temp = 'SELECT CONTRAT AVEC 2 ="':Asso:'" AND AVEC 65 # "O" AND AVEC 8 >= "':DateDeb:'" OR = "" AND AVEC 7 <= "':DateFin:'" AND AVEC 6 = "P" AND AVEC TypeActivite = "':TypeAct:'"'
IF SystemeTlg # "" THEN
	W_Temp = W_Temp:' AND AVEC PointageAidant = "1"'
END ELSE
	*autre que Domitime
	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
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 			      							*
*Modification JC, crasement de la MOI seulement pour les rubrique tlgre	*
*********************************************************************************

BEGIN CASE

   CASE TypeAct = "P"
	IF ENR_DETAIL<1> # "" OR ENR_DETAIL<5> # "" OR ENR_DETAIL<10> # "" OR ENR_DETAIL<14> # "" THEN
		* modif vanessa 29/11/10 - DA 10253-01
		IF W_Ecart<>1 THEN		
	   		IF NomFichierTlg # "" THEN
			
				W_Att=3
				
				GOSUB 151
				
	   		END
			* Nb : En 155, on trie les aids dans l'ordre alpha...
			*GOSUB 155
			READ ENR_DETAIL2 FROM F.DETAILPREST, W_DernierContrat:Periode ELSE ENR_DETAIL2 = ""

*******************************************
* MODIF CHRISTOPHE DU 01/03/2009 - A TESTER 
* Ecrase uniquement la saisie manuelle qui a la mme rubrique que la tlgestion
			* modif vanessa 03/05/11 - ne pas rajouter la saisie manuelle en global aprs une intgration dtaille
			IF SaisieJour # "1" THEN
				W_SauveDetail=ENR_DETAIL	
				kMod = 0
				LOOP
					kMod = kMod + 1
				WHILE ENR_DETAIL2<1,kMod> # ""
				
					W_IndexMOD = INDEX(W_SauveDetail<2>,ENR_DETAIL2<2,kMod>,1)
					*W_IndexMOD = 0
					IF W_IndexMOD = 0 THEN
						ENR_DETAIL<1,-1> = ENR_DETAIL2<1,kMod>
						ENR_DETAIL<2,-1> = ENR_DETAIL2<2,kMod>
						ENR_DETAIL<3,-1> = ENR_DETAIL2<3,kMod>
						ENR_DETAIL<4,-1> = ENR_DETAIL2<4,kMod>
					END 
				REPEAT
				
			END
			
			* Nb : En 155, on trie les aids dans l'ordre alpha... aprs avoir gard les MOD saisie manuellement
			GOSUB 155
			
			W_MoiFinale = ""
			
			k150 = 0
			iMF=0
			LOOP
			k150 = k150 + 1
			WHILE ENR_DETAIL2<5,k150> # ""
				READ ENR_RUBSAISIE FROM F.RUBSAISIE, ENR_DETAIL2<5,k150> ELSE ENR_RUBSAISIE = ""
				 *MODIF CHRISTOPHE DU 26/09/2008
				IF W_EcraseMOI = "1" THEN
					IF ENR_RUBSAISIE<20>="1" THEN
						* on ne prend pas car rubrique est tlgr, cas 1ere intgration avec 1 rub et 2 eme sans rub
						W_IndexMOI=1
					END ELSE
						W_IndexMOI = INDEX(ENR_DETAIL<5>,ENR_DETAIL2<5,k150>,1)
					END
				END ELSE
					W_IndexMOI = 0
				END	
				
				IF W_IndexMOI = 0 THEN
					iMF=iMF+1
					W_MoiFinale<1,iMF> =  ENR_DETAIL2<5,k150>
					W_MoiFinale<2,iMF> =  ENR_DETAIL2<6,k150>
					W_MoiFinale<3,iMF> =  ENR_DETAIL2<7,k150>
					W_MoiFinale<4,iMF> =  ENR_DETAIL2<8,k150>
					W_MoiFinale<5,iMF> =  ENR_DETAIL2<9,k150>
					W_MoiFinale<6,iMF> =  ENR_DETAIL2<14,k150>
					W_MoiFinale<7,iMF> =  ENR_DETAIL2<15,k150>
				END 
			REPEAT
		
			k150 = 0
			LOOP
			k150 = k150 + 1
			WHILE ENR_DETAIL<5,k150> # ""
				IF W_EcraseMOI = "1" THEN
					W_IndexMOI = 0
				END ELSE
					W_IndexMOI=INDEX(ENR_DETAIL2<5>,ENR_DETAIL<5,k150>,1)
				END		
				IF W_IndexMOI = 0 THEN
					W_MoiFinale<1,-1> =  ENR_DETAIL<5,k150>
					W_MoiFinale<2,-1> =  ENR_DETAIL<6,k150>
					W_MoiFinale<3,-1> =  ENR_DETAIL<7,k150>
					W_MoiFinale<4,-1> =  ENR_DETAIL<8,k150>
					W_MoiFinale<5,-1> =  ENR_DETAIL<9,k150>
					W_MoiFinale<6,-1> =  ENR_DETAIL<14,k150>
					W_MoiFinale<7,-1> =  ENR_DETAIL<15,k150>
					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> = ENR_DETAIL<5,k150>
				END
			REPEAT
			ENR_DETAIL<5> = W_MoiFinale<1>
			ENR_DETAIL<6> = W_MoiFinale<2>
			ENR_DETAIL<7> = W_MoiFinale<3>
			ENR_DETAIL<8> = W_MoiFinale<4>
			ENR_DETAIL<9> = W_MoiFinale<5>
			ENR_DETAIL<14> = W_MoiFinale<6>
			ENR_DETAIL<15> = W_MoiFinale<7>

			* christophe le 08/09/2008 - si on ne bascule pas la MOD alors on laisse celle de la saisie activit
			IF BasculMOD # "1" THEN
				ENR_DETAIL<1> = ENR_DETAIL2<1>
				ENR_DETAIL<2> = ENR_DETAIL2<2>
				ENR_DETAIL<3> = ENR_DETAIL2<3>
				ENR_DETAIL<4> = ENR_DETAIL2<4>
				ENR_DETAIL<10> = ENR_DETAIL2<10>
				ENR_DETAIL<11> = ENR_DETAIL2<11>
				ENR_DETAIL<12> = ENR_DETAIL2<12>
				ENR_DETAIL<13> = ENR_DETAIL2<13>	
			END
		END
		
		* Grgory le 20/05/08
		GOSUB 6000
		* modif vanessa 23/11/10 - DA 10253-01
		IF W_Ecart=1 THEN
			WRITE ENR_DETAIL ON F.DETAILPRESTPLG, W_DernierContrat:Periode		
		END ELSE
			WRITE ENR_DETAIL ON F.DETAILPREST, W_DernierContrat:Periode
		END
	END
   CASE TypeAct = "M"
	IF ENR_DETAIL<1> # "" OR ENR_DETAIL<6> # "" THEN
   		IF NomFichierTlg # "" THEN
			W_Att=2
			GOSUB 151
   		END
		* modif vanessa 23/11/10 - DA 10253-01
		IF W_Ecart=1 THEN
			WRITE ENR_DETAIL ON F.DETAILMANDATPLG, W_DernierContrat:Periode		
		END ELSE
			WRITE ENR_DETAIL ON F.DETAILMANDAT, W_DernierContrat:Periode
		END
	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

* modif vanessa 23/11/10 - DA 10253-01
IF W_Ecart<>1 THEN
	ENR_CONTRAT<81> = Periode
	WRITE ENR_CONTRAT ON F.CONTRAT, W_DernierContrat
END

RETURN

151 *************************************************************************
*			Arrondit les heures saisies 			      					*
*****************************************************************************

* Modif - Greg - 26/06/09 - Evreux ne veut pas du tout d'arrondi.
* Donc on fait un test sur le code postal de l'asso : si c'est celui
* d'Evreux, on ne passe pas dans l'algo permettant de les calculer.
READ ENR_ASSO FROM F.ASSOCIATION, Asso ELSE ENR_ASSO = ""

IF ENR_ASSO<8><>"27001" THEN
 IF SystemeTlg # "05" THEN
	IF SystemeTlg = "06" THEN
		W_CountAtt=DCOUNT(ENR_DETAIL<W_Att>,CHAR(253))
		FOR iAtt=1 TO W_CountAtt
			READ ENR_RUBSAISIE FROM F.RUBSAISIE, ENR_DETAIL<W_Att-1,iAtt> THEN
				IF ENR_RUBSAISIE<2> = "3" OR ENR_RUBSAISIE<2> = "4" THEN
					W_Val=ENR_DETAIL<W_Att,iAtt>
					W_Len=LEN(W_Val)
					W_Minute=W_Val[W_Len-1,2]
				
					READ ENR_TLGPARAM FROM F.TLGPARAM, TypeAct ELSE ENR_TLGPARAM=""
					
					IF ENR_TLGPARAM<4,1><>"" AND ENR_TLGPARAM<4,1><>"0" THEN
						W_Min=W_Val[W_Len-1,2]
						W_Hres=W_Val[1,W_Len-2]
						
						ENR_TLGPARAM<4,1>=INT((ENR_TLGPARAM<4,1>*100)/60 + (1/2))
						
						IF ENR_TLGPARAM<4,2>="M" THEN
							W_Min=INT((W_Min/ENR_TLGPARAM<4,1>)+(1/2))
							W_Min=W_Min*ENR_TLGPARAM<4,1>
							W_Minute=(W_Hres*100)+W_Min
						END ELSE
							W_Min=INT(W_Min/ENR_TLGPARAM<4,1>)
							W_Min=W_Min*ENR_TLGPARAM<4,1>
							IF ENR_TLGPARAM<4,2>="S" THEN
								W_Min=W_Min+ENR_TLGPARAM<4,1>
							END
							W_Hres=(W_Hres*100)+W_Min
							W_Minute=W_Hres					
						END
						ENR_DETAIL<W_Att,iAtt>=W_Minute						
					END		
				END
			END
			NEXT iAtt
	END ELSE
	
		* 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
END ELSE

		READ ENR_ASSO FROM F.ASSOCIATION, Asso ELSE ENR_ASSO = ""
		
		* 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
				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

			END ELSE
				IF ENR_ASSO<9> = "LILLE" THEN
					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 ELSE
					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
				
				END
			END
			ENR_DETAIL<W_Att,iAtt>=W_Minute
		NEXT iAtt
 END
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 	   *
****************************************************************
* Variable 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
	   
	   * Christophe le 05/09/2011 pb caen rubriques "jours fris" 
	   * 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
	*modif de kev le 11/11/2008 => ajpout de la selection des ABSENCESAIDANT avec NumMotifAidant n25*
	W_Temp= '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" OR = "25"'
END ELSE
	*modif de kev le 11/11/2008 => ajpout de la selection des ABSENCESAIDANT avec NumMotifAidant n25*
	W_Temp= '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" OR = "25"'
END

EXECUTE W_Temp
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
* christophe le 13/11/2009 - rajout test sur l'asso
W_Temp = 'SELECT CONTRAT AVEC 2 ="':Asso:'" AND 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

*Modif Clment DA10174
IF ENR_CONTRAT<97> <> "" THEN
	IF W_Jour-ENR_CONTRAT<97> >= 89 THEN
		W_Exclu5300 = "F"
	END
END ELSE
	IF W_Jour-ENR_CONTRAT<7> >= 89 THEN
		W_Exclu5300 = "F"
	END
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 = ""

* christophe le 06/09/2011 il faut calculer une seule fois la valeur d'une journe en basculement JF en mode contrat sur un CP sinon on compte ++ fois la mme journe.
IF W_PaiementJF="1" THEN
	IF W_Fonction="P" THEN
		* on fait comme actuellement pour prendre en compte ou non les internventions sous le CP
		i = 0
		LOOP
		i = i + 1
		WHILE TabInterv<W_IndJour,1,i> # ""
			* modif vanessa 01/12/10
		   *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
	END ELSE
		* Modif Greg - 25/11/11 - DA11127 - Si l'utilisateur veut payer les heures fris non travailles  partir
		* des contrats, on s'assure quand mme qu'il y a bien au moins une intervention prvue ce jour l.
		* Si c'est le cas, on estime que l'aidant n'aurait pas t pay pour cette journe donc il n'y a
		* pas de raison qu'on le fasse si c'est un jour fri.
		W_AuMoinsUneInterv="NON"
		FOR I5400 = 1 TO DCOUNT(TabInterv<1,1>,CHAR(252))
			IF TabInterv<1,1,I5400>[1,6]="Interv" OR TabInterv<1,1,I5400>[1,3]="MOI" THEN
				W_AuMoinsUneInterv="OUI"
				EXIT
			END
		NEXT I5400
		IF W_AuMoinsUneInterv="OUI" THEN
			* Modif Greg - 25/11/11 - DA11127 - Les 7 lignes qui suivent sont le code d'origine.
			* on calcul une fois la valeur d'une journe de contrat sous un cp	
			GOSUB 4000
			W_Rub = RubDefautFerieeMOI	
			W_CleContrat=W_Cle
		
			GOSUB 6300
			W_TabMoi<1,-1> = W_Rub
			W_TabMoi<2,-1> = W_ValeurHor
		END
		* Fin modif Greg - 25/11/11
	END
END 

IF W_TabMoi # "" THEN
	GOSUB 5600
END
RETURN

5500 ************************************************************
*		Comptabilisation des heures								*
*****************************************************************

* modif vanessa 01/12/10 - DA 10203-01
*IF W_PaiementJF="1" THEN
	W_Rub = ""
	
	* Christophe le 05/09/2011 pb caen rubriques "jours fris"	
	GOSUB 4000
	W_Rub = RubDefautFerieeMOI
	*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
	
	*IF W_Fonction="P" THEN
		* Christophe le 05/09/2011 - correction des MOI  zro qui ressortent dans la saisie des heures.
		IF TabInterv<W_IndJour,5,i> # 0 THEN
			* modif vanessa 06/01/11 - APPEL CHATEAUDUN N 0190548 - rajoute le test si intervention JF non trav
			IF TabInterv<W_IndJour,3,i> <= W_HreFinAbs AND TabInterv<W_IndJour,2,i> >= W_HreDebAbs AND TabInterv<W_IndJour,1,i>[1,7] = "Interv":TypeAct THEN
				* Christophe le 06/09/2011 - Prendre uniquement en compte les interventions jour fri ou les interventions classiques et pas les absences des aids.
				*Exemple d'afficheplanning sur un cong qui entraine le test ci-dessous
				*01231110321580700100100800FOUCHER MONIQUE ~ 8h00   10h00 ~ 02 31 93 16 47^Absence aid  - Jour f ri  non travaill  
				*01231118081591900100101175TABAUD JEAN MARIE ~ 11h45   12h15 ~ 02 31 44 42 39/06 89 89 71 56^Absence aid  - absent du 10/08/2011 au 17/08/2011
				IF INDEX(TabInterv<W_IndJour,4,i>,"^Absence aid",1) # 0 AND INDEX(TabInterv<W_IndJour,4,i>,"non travaill",1) # 0 OR INDEX(TabInterv<W_IndJour,4,i>,"^Absence aid",1) = 0 THEN
					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
			END
		END
	* christophe le 06/09/2011 il faut calculer une seule fois la valeur d'une journe en basculement JF en mode contrat sur un CP sinon on compte ++ fois la mme journe.		
	*END ELSE
	*	W_CleContrat=W_Cle
		
	*	GOSUB 6300
	*	W_TabMoi<1,-1> = W_Rub
	*	W_TabMoi<2,-1> = W_ValeurHor
	*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
	* Modif Greg - 25/11/11 - DA11127 - Correction de bug : DETAILPREST doit tre
	* renseign mme si il n'existe pas encore.
  *READ ENR_DETAIL FROM F.DETAILPREST, W_Cle:Periode THEN
  READ ENR_DETAIL FROM F.DETAILPREST, W_Cle:Periode ELSE ENR_DETAIL=""
	
	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
		* Modif Greg - 25/11/11 - DA11127 - On passe ici car le code rubrique est dj prsent dans
		* DETAILPREST. L'objectif est donc de cumuler la valeur  traiter avec celle dj
		* prsente de le fichier. Il faut donc tout simplement, selon moi, parcourir les
		* MV jusqu' trouver celle dont le code rubrique nous intresse. Une fois cela
		* fait, il suffit de cumuler.
		* Je n'ai pas compri pourquoi on utilise W_RecapMoi, surtout que quand on arrive ici
		* il n'est pas renseign. Du coup, le code tombe  l'eau car la condition de dpart
		* part du principe que W_RecpMoi est renseign.
		* A noter que W_RecapMoi n'est pas utilis si la rubrique n'existe pas
		* dans ENR_DETAIL. Raison de plus pour se demander pourquoi on l'utilise ici.		
		*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
 	* Modif Greg - 25/11/11 - DA11127 - Correction de bug : DETAILMANDAT doit tre
	* renseign mme si la cl n'existe pas encore.
  *READ ENR_DETAIL FROM F.DETAILMANDAT, W_Cle:Periode THEN
  READ ENR_DETAIL FROM F.DETAILMANDAT, W_Cle:Periode ELSE DETAIL=""
	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
		* Modif Greg - 25/11/11 - DA11127 - Mme principe que pour le prestataire : 
		* arriv ici le code part du principe que W_RecapMoi est renseign,
		* ce qui n'est pas le cas. Du coup on ne passe pas dans le code
		* permet de cumuler, ce qui est en fait la seule chose qui nous
		* intresse dans cette procdure.
		*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
 
	W_CodeRubMOI = W_TabMoi<1,k5600>
	W_BaseMOI = W_TabMoi<2,k5600>

	* christophe le 16/09/2011 - problme d'dition des MOI quand traitement de paie dj effectu.
	IF W_TraiteContrat = "V" THEN	
		IF W_EditionMOI = 1 AND W_Cle # "0" THEN
			W_CleContratEditMoi=W_Cle[1,5]
			GOSUB 2110
		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
***************************************************
* Le programme d'intgration applique un arrondi sur les couples.
* Hors si l'utilisatrice a lanc une intgration dtaille (en prestataire)
* il n'y a aucune gestion du dtail, ce qui fait que l'arrondi calcul pour
* le couple ne correspond pas au dtail.
* Nous modifions donc le programme pour ajouter la diffrence entre la valeur
* arrondie et le cumul rel du dtail  la valeur la plus forte du dtail.
* De cette manire, le cumul du dtail correspond bien  la valeur arrondie du couple.
***************************************************
6000

	IF SaisieJour = "1" THEN
		FOR IDet = 1 TO DCOUNT(ENR_DETAIL<1>,CHAR(253))
			W_CumulDet=0
			W_MaxDet=0
			W_IndMaxDet=0
			FOR JDet = 1 TO DCOUNT(ENR_DETAIL<12,IDet>,CHAR(252))
				W_CumulDet=W_CumulDet+ENR_DETAIL<12,IDet,JDet>
				IF ENR_DETAIL<12,IDet,JDet>>W_MaxDet THEN
					W_MaxDet=ENR_DETAIL<12,IDet,JDet>
					W_IndMaxDet=JDet
				END
			NEXT JDet
			ENR_DETAIL<12,IDet,W_IndMaxDet>=ENR_DETAIL<12,IDet,W_IndMaxDet>+(ENR_DETAIL<3,IDet>-W_CumulDet)
		NEXT IDet
	END
	
RETURN

***************************************************
* ajout vanessa 24/11/10 - DA 10253-01
* Recherche des carts entre saisie et planning
6100

	W_Ligne=""
	W_Ligne<1>="Code aidant;Nom prnom aidant;Libell secteur aidant;Commune aidant;Date dbut contrat;Date fin contrat;"
	W_Ligne<1>=W_Ligne<1>:"Code aid;Nom prnom aid;Libell responsable aid;Libell secteur aid;Commune aid;"
	W_Ligne<1>=W_Ligne<1>:"Heures saisie activit;Heures planning;Ecart"	
	W_Ind=2
	
	IF TypeAct="P" THEN
		W_Temp = 'SELECT DETAILPREST AVEC AssoContratPrest = "':Asso:'" AND AVEC PeriodeDetailPrest = "':Periode:'"'
		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 SecteurPrest = "':Selection:'"'
				END
				W_Temp = W_Temp:' PAR LibSecteurPrest'
			END ELSE
				IF Tri = "C" THEN
					IF Selection # "" THEN
						W_Temp = W_Temp:' AND AVEC LibCommunePrest = "':Selection:'"'
					END
					W_Temp = W_Temp:' PAR LibCommunePrest'
				END
			END
		END
	END ELSE
		W_Temp = 'SELECT DETAILMANDAT AVEC AssoContratMandat = "':Asso:'" AND AVEC PeriodeDetailMandat = "':Periode:'"'
		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 SecteurMandat = "':Selection:'"'
				END
				W_Temp = W_Temp:' PAR LibSecteurMandat'
			END ELSE
				IF Tri = "C" THEN
					IF Selection # "" THEN
						W_Temp = W_Temp:' AND AVEC LibCommunePrest = "':Selection:'"'
					END
					W_Temp = W_Temp:' PAR LibCommuneMandat'
				END
			END
		END	
	
	END
	
	W_Temp = W_Temp:" PAR @ID"
	
	EXECUTE W_Temp
	
	W_Fini = "F"
	LOOP
		READNEXT W_CleDetail ELSE W_Fini = "V"
	WHILE W_Fini = "F"

		IF TypeAct="P" THEN	
			READ ENR_DETAIL FROM F.DETAILPREST,W_CleDetail ELSE ENR_DETAIL=""
		END ELSE
			READ ENR_DETAIL FROM F.DETAILMANDAT,W_CleDetail ELSE ENR_DETAIL=""		
		END
		W_CodeAidant=W_CleDetail[1,5]
		READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CodeAidant ELSE ENR_CIVILAIDANT=""
		READ ENR_SECTEURAIDANT FROM F.SECTEUR,ENR_CIVILAIDANT<31> ELSE ENR_SECTEURAIDANT=""
		READ ENR_CONTRAT FROM F.CONTRAT,W_CleDetail[1,8] ELSE ENR_CONTRAT=""
		
		GOSUB 6200
		
		W_TrouvePlg="VRAI"
		IF TypeAct="P" THEN	
			READ ENR_DETAILPLG FROM F.DETAILPRESTPLG,W_CleDetail ELSE W_TrouvePlg="FAUX"
		END ELSE
			READ ENR_DETAILPLG FROM F.DETAILMANDATPLG,W_CleDetail ELSE W_TrouvePlg="FAUX"		
		END
		
		* si on trouve un planning		
		IF W_TrouvePlg="VRAI" THEN
			W_CountMV=DCOUNT(ENR_DETAILPLG<1>,CHAR(253))
			W_CountTab=DCOUNT(W_Tab,CHAR(254))
			FOR iTab = 1 TO W_CountTab
				W_NbHeure=0
				FOR jMV=1 TO W_CountMV
					IF TypeAct="P" THEN					
						IF W_Tab<iTab,2>=ENR_DETAILPLG<1,jMV> THEN
							W_NbHeure=W_NbHeure+ENR_DETAILPLG<3,jMV>
						END
					END ELSE
						READ ENR_RUBSAISIE FROM F.RUBSAISIE, ENR_DETAILPLG<1,jMV> ELSE ENR_RUBSAISIE=""
						IF ENR_RUBSAISIE<2> = "3" OR ENR_RUBSAISIE<2> = "4" THEN
							W_NbHeure=W_NbHeure+ENR_DETAILPLG<2,jMV>
						END					
					END
				NEXT jMV
				IF W_NbHeure # W_Tab<iTab,3> THEN
					W_Diff=W_Tab<iTab,3>-W_NbHeure
					READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_Tab<iTab,2> ELSE ENR_CIVILAIDE=""
					READ ENR_SECTEURAIDE FROM F.SECTEUR,ENR_CIVILAIDE<40>[1,3] ELSE ENR_SECTEURAIDE=""
					READ ENR_RESPONSABLE FROM F.RESPONSABLE,ENR_CIVILAIDE<39> ELSE ENR_RESPONSABLE=""
					W_Ligne<W_Ind>=W_CodeAidant:";":ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>:";":ENR_SECTEURAIDANT<1>:";":ENR_CIVILAIDANT<11>:";":OCONV(ENR_CONTRAT<7>,"D4/"):";":OCONV(ENR_CONTRAT<8>,"D4/"):";"
					W_Ligne<W_Ind>=W_Ligne<W_Ind>:W_Tab<iTab,2>:";":ENR_CIVILAIDE<2>:" ":ENR_CIVILAIDE<3>:";":ENR_RESPONSABLE<1>:";":ENR_SECTEURAIDE<1>:";":ENR_CIVILAIDE<11>:";":W_Tab<iTab,3>/100:";":W_NbHeure/100:";":W_Diff/100
					W_Ind=W_Ind+1					
				END
			NEXT iTab			
		END ELSE
			* si on trouve pas de planning pour cette saisie
			W_CountTab=DCOUNT(W_Tab,CHAR(254))
			FOR iTab = 1 TO W_CountTab
				W_TempVal=W_Tab<iTab,3>*100
				IF W_TempVal # 0 THEN			
					READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_Tab<iTab,2> ELSE ENR_CIVILAIDE=""
					READ ENR_SECTEURAIDE FROM F.SECTEUR,ENR_CIVILAIDE<40>[1,3] ELSE ENR_SECTEURAIDE=""
					READ ENR_RESPONSABLE FROM F.RESPONSABLE,ENR_CIVILAIDE<39> ELSE ENR_RESPONSABLE=""
					W_Ligne<W_Ind>=W_CodeAidant:";":ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>:";":ENR_SECTEURAIDANT<1>:";":ENR_CIVILAIDANT<11>:";":OCONV(ENR_CONTRAT<7>,"D4/"):";":OCONV(ENR_CONTRAT<8>,"D4/"):";"
					W_Ligne<W_Ind>=W_Ligne<W_Ind>:W_Tab<iTab,2>:";":ENR_CIVILAIDE<2>:" ":ENR_CIVILAIDE<3>:";":ENR_RESPONSABLE<1>:";":ENR_SECTEURAIDE<1>:";":ENR_CIVILAIDE<11>:";":W_Tab<iTab,3>/100:";;":W_Tab<iTab,3>/100
					W_Ind=W_Ind+1
				END
			NEXT iTab
		END
		
	REPEAT
	
	W_Heure=TIMEDATE()
	W_CleFichier="EcartSaisiePlanning-":Asso:"-":TypeAct:"-":Periode:"-":OCONV(DATE(),"D4/")[1,2]:OCONV(DATE(),"D4/")[4,2]:OCONV(DATE(),"D4/")[7,4]:"-":W_Heure[1,2]:W_Heure[4,2]:".csv"
	WRITE W_Ligne ON F.FUSION,W_CleFichier
	
	W_Sortie<2> = "Le fichier '":W_CleFichier:"' des carts entre la saisie d'activit et les lments qui seraient issus du basculement du planning a t gnr dans le rpertoire FUSION de la base de donnes."
	* pas d'erreur mais on doit mettre erreur quand meme pour que le msg s'affiche dans le VB
	W_Sortie<1> = "Erreur"	
	
RETURN

***************************************************
* ajout vanessa 24/11/10 - DA 10253-01
* Cumul des heures saisies par couple aidant/aid
6200

	W_Tab=""
	jTab=1
	W_Detaille="FAUX"
	
	W_CountPrest=DCOUNT(ENR_DETAIL<1>,CHAR(253))
	
	IF TypeAct="P" THEN		
		IF ENR_DETAIL<3># "" THEN
			W_Detaille="FAUX"
		END ELSE
			IF ENR_DETAIL<12># "" THEN
				W_Detaille="VRAI"
			END
		END		
		
		FOR iMV = 1 TO W_CountPrest
			IF W_Tab="" THEN
				W_Tab<jTab,1>=W_CodeAidant
				W_Tab<jTab,2>=ENR_DETAIL<1,iMV>
				IF W_Detaille="FAUX" THEN
					W_Tab<jTab,3>=ENR_DETAIL<3,iMV>
				END ELSE
					W_Tab<jTab,3>=0
					FOR kSV=1 TO DCOUNT(ENR_DETAIL<12,iMV>,CHAR(252))
						W_Tab<jTab,3>=W_Tab<jTab,3>+ENR_DETAIL<12,iMV,kSV>
					NEXT kSV
				END
			END ELSE
				FOR jTab=1 TO DCOUNT(W_Tab,CHAR(254))
					IF W_Tab<jTab,1>=W_CodeAidant AND W_Tab<jTab,2>=ENR_DETAIL<1,iMV> THEN
						EXIT 
					END
				NEXT jTab
				IF W_Tab<jTab,1>="" THEN
					W_Tab<jTab,1>=W_CodeAidant
					W_Tab<jTab,2>=ENR_DETAIL<1,iMV>
					IF W_Detaille="FAUX" THEN
						W_Tab<jTab,3>=ENR_DETAIL<3,iMV>
					END ELSE
						W_Tab<jTab,3>=0
						FOR kSV=1 TO DCOUNT(ENR_DETAIL<12,iMV>,CHAR(252))
							W_Tab<jTab,3>=W_Tab<jTab,3>+ENR_DETAIL<12,iMV,kSV>
						NEXT kSV
					END						
				END ELSE
					IF W_Detaille="FAUX" THEN
						W_Tab<jTab,3>=W_Tab<jTab,3>+ENR_DETAIL<3,iMV>
					END ELSE
						FOR kSV=1 TO DCOUNT(ENR_DETAIL<12,iMV>,CHAR(252))
							W_Tab<jTab,3>=W_Tab<jTab,3>+ENR_DETAIL<12,iMV,kSV>
						NEXT kSV
					END	
				END
			END
		NEXT iMV
	END ELSE
		W_CodeAide=ENR_CONTRAT<3>
		W_Tab<1,1>=W_CodeAidant
		W_Tab<1,2>=W_CodeAide
		W_Tab<1,3>=0
		
		FOR iMV = 1 TO W_CountPrest
			READ ENR_RUBSAISIE FROM F.RUBSAISIE, ENR_DETAIL<1,iMV> ELSE ENR_RUBSAISIE=""
			IF ENR_RUBSAISIE<2> = "3" OR ENR_RUBSAISIE<2> = "4" THEN
				W_Tab<1,3>=W_Tab<1,3>+ENR_DETAIL<2,iMV>
			END
		NEXT iMV		
	END
	
RETURN

***************************************************
* ajout vanessa 01/12/10 - DA 10203-01
* recherche valeur contrat pour basculement des JF non trav en fonction du contrat
6300

	* recherche de l'avenant actif au dbut de l'arrt
	W_Avenant = DCOUNT(ENR_CONTRAT<14>,CHAR(253))
	LOOP 
	WHILE ENR_CONTRAT<15,W_Avenant> > W_Jour  DO
		W_Avenant=W_Avenant-1
	REPEAT

	BEGIN CASE
		CASE ENR_CONTRAT<25,W_Avenant> = "1"
			W_ValeurHor = INT((ENR_CONTRAT<24,W_Avenant>/5) + (1/2))
		CASE ENR_CONTRAT<25,W_Avenant> = "2"
			W_ValeurHor = INT((ENR_CONTRAT<24,W_Avenant>/10) + (1/2))
		CASE ENR_CONTRAT<25,W_Avenant> = "3"
			W_ValeurHor = INT((ENR_CONTRAT<24,W_Avenant>*12/260) + (1/2))
		CASE ENR_CONTRAT<25,W_Avenant> = "4"
			W_ValeurHor = INT((ENR_CONTRAT<24,W_Avenant>/260) + (1/2))
	END CASE
	
	W_ReqMiTps = ""
	W_Temp= 'SELECT ABSENCESAIDANT AVEC @ID = "':W_CleContrat[1,5]:']" AND AVEC DebAbsAidant <= "':W_Jour:'" AND AVEC 2 >= "':W_Jour:'" AND AVEC NumMotifAidant = "03"'
	EXECUTE W_Temp
	EXECUTE 'SAUVE-LISTE W_ListeAbsMiTps'
	EXECUTE 'LISTE W_ListeAbsMiTps' RETURNING MSGCODE
	IF MSGCODE<1> # "209" THEN
		SELECT F.ABSENCESAIDANT TO W_ReqMiTps
		W_ValeurHor=W_ValeurHor/2
	END
	EXECUTE 'EFFACER-LISTE W_ListeAbsMiTps'	
		
RETURN