*PARAMETRES*
*Cration accord CG*
*Caisse APA semaine (3N) |3N|TXT|O*
*Caisse APA dimanche (3N) |3N|TXT|O*
*Nom du fichier CG |30X|TXT|O*
*Priode de facturation (AAAAMM) |6N|TXT|O*
*FIN PARAMETRES*

SUBROUTINE FLUXDECISION(RETURNVAL,PARAMETRES,W_Sortie)

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"

OPEN "","FACTURATION" TO F.FACTURATION ELSE STOP
OPEN "","CIVILAIDE" TO F.CIVILAIDE ELSE STOP
OPEN "","ACCORD" TO F.ACCORD ELSE STOP

*** Rcupration des paramtres
W_CaisseSemaine = PARAMETRES<1>
W_CaisseDimanche = PARAMETRES<2>
W_NomFic = PARAMETRES<3>
W_PeriodeFacturation = PARAMETRES<4>

W_CaisseSemaine = W_CaisseSemaine "R%3"
W_CaisseDimanche = W_CaisseDimanche "R%3"

READ ENR_FACTURATION FROM F.FACTURATION,W_NomFic ELSE 
   W_Sortie= "FICHIER ":W_NomFic:" INEXISTANT DANS LE REPERTOIRE FACTURATION"
   RETURN
END

I=1
W_AuMoinsUnCodeAide="FALSE"
W_AuMoinsUnSansCode="FALSE"

LOOP
	W_LIGNE=ENR_FACTURATION<I>
UNTIL W_LIGNE="" DO
	IF FIELD(ENR_FACTURATION<I>,";",23)# "" THEN
		W_AuMoinsUnCodeAide="TRUE"
	END ELSE
		W_AuMoinsUnSansCode="TRUE"
	END
	I=I+1
REPEAT

* modif vanessa 19/01/15 - ticket 8107
IF ICONV(W_NomFic[1,3],"MCU")="ANO" THEN 

	IF W_AuMoinsUnCodeAide="TRUE" AND W_AuMoinsUnSansCode="TRUE" THEN
		W_Sortie= "S'il s'agit d'un fichier d'anomalie  rintgrer, les codes aids doivent tre renseigns sur toutes les lignes du fichier."
	   RETURN
	END
END

I=1
ENR_ANOMALIE=""
ENR_ANOMALIE<1>="Action;Libell;Code aid;Nom aid;Prnom aid;Date naissance;Dbut d'accord;Fin d'accord;Id client;Id dossier;Service;Montant financeur;Heure acc;% participation"
W_Ind=2
W_LigneAnomalie=""
W_IndAno=1

LOOP
	W_LIGNE=ENR_FACTURATION<I>
UNTIL W_LIGNE="" DO
	W_IdClient=FIELD(ENR_FACTURATION<I>,";",3)
	W_IdDossier=FIELD(ENR_FACTURATION<I>,";",4)
	W_IdentifiantClient=W_IdClient:"-":W_IdDossier
	W_DateDeb=ICONV(FIELD(ENR_FACTURATION<I>,";",5),"D4/")
	W_DateFin=ICONV(FIELD(ENR_FACTURATION<I>,";",6),"D4/")
	W_MontantFinanceur=FIELD(ENR_FACTURATION<I>,";",9)
	W_MontantFinanceur=CONVERT(".","",W_MontantFinanceur)
	W_MontantFinanceur=W_MontantFinanceur*100
	W_QuantiteAcc=FIELD(ENR_FACTURATION<I>,";",12)*100
	W_Pourcentage=FIELD(ENR_FACTURATION<I>,";",13)*100
	W_Service=FIELD(ENR_FACTURATION<I>,";",14)
	
	W_Nom=FIELD(ENR_FACTURATION<I>,";",17)
	W_Nom=ICONV(W_Nom,"MCU")
	
	W_Prenom=FIELD(ENR_FACTURATION<I>,";",18)
	W_Prenom=ICONV(W_Prenom,"MCU")
	W_PrenomTiret=CONVERT(" ","-",W_Prenom)
	W_PrenomSansTiret=CONVERT("-"," ",W_Prenom)
	W_PrenomTiret2=CONVERT(" - ","-",W_Prenom)
	
	W_DateNais=ICONV(FIELD(ENR_FACTURATION<I>,";",19),"D4/")
	* modif vanessa 20/01/15 - ticket 8107
	W_LibSusp=FIELD(ENR_FACTURATION<I>,";",24)
	W_DateSusp=" du ":FIELD(ENR_FACTURATION<I>,";",25):" au ":FIELD(ENR_FACTURATION<I>,";",26)
	
	* modif vanessa 20/01/15 - ticket 8107
	IF W_AuMoinsUnSansCode="TRUE" AND W_NomFic[1,3] # "Ano" THEN
		LISTAIDECG=""
		W_REQUETE = 'SELECT CIVILAIDE AVEC 2 = "':W_Nom:']" AND # "[+" AND AVEC 3 = "':W_Prenom:'" OR = "':W_PrenomTiret:'" OR = "':W_PrenomSansTiret:'" OR = "':W_PrenomTiret2:'" AND AVEC 20 = "':W_DateNais:'" AND AVEC 43 = "" OR >= "':W_DateDeb:'"'
		EXECUTE W_REQUETE
		EXECUTE 'SAUVE-LISTE LISTAIDECG'
		EXECUTE 'LISTE LISTAIDECG' RETURNING W_MSG
		
		IF W_MSG<1>=209 THEN
			SELECT F.CIVILAIDE TO LISTAIDECG	
			
			LISTAIDECG=""
			W_REQUETE = 'SELECT CIVILAIDE AVEC 2 = "':W_Nom:']" AND # "[+" AND AVEC 3 = "':W_Prenom:'" OR = "':W_PrenomTiret:'" OR = "':W_PrenomSansTiret:'" OR = "':W_PrenomTiret2:'" AND AVEC 43 = "" OR >= "':W_DateDeb:'"'
			W_REQUETE2 = ' OR AVEC 2 = "':W_Nom:']" AND # "[+" AND AVEC 20 = "':W_DateNais:'" AND AVEC 43 = "" OR >= "':W_DateDeb:'"'
			W_REQUETE=W_REQUETE:W_REQUETE2
			EXECUTE W_REQUETE
			EXECUTE 'SAUVE-LISTE LISTAIDECG'
			EXECUTE 'LISTE LISTAIDECG' RETURNING W_MSG
		END
		
		W_TabAide=""
		
		IF W_MSG<1>#209 THEN
			SELECT F.CIVILAIDE TO LISTAIDECG
			
			W_FINAIDE="NON"
			LOOP
				READNEXT W_CLEAIDE FROM LISTAIDECG ELSE W_FINAIDE="OUI"
			UNTIL W_FINAIDE="OUI" DO
				W_TabAide<-1>=W_CLEAIDE
			REPEAT
		END
	END ELSE
		W_TabAide=FIELD(ENR_FACTURATION<I>,";",23) "R%5"
	END
	

	
	IF DCOUNT(W_TabAide,CHAR(254))<>1 THEN
		IF DCOUNT(W_TabAide,CHAR(254))=0 THEN
			ENR_ANOMALIE<W_Ind>="ANOMALIE;PAS D'AIDE TROUVE - ACCORD PAS CREE;;":W_Nom:";":W_Prenom:";":OCONV(W_DateNais,"D4/"):";":OCONV(W_DateDeb,"D4/"):";":OCONV(W_DateFin,"D4/"):";":W_IdClient:";":W_IdDossier:";":W_Service:";":W_MontantFinanceur/100:";":W_QuantiteAcc/100:";":W_Pourcentage/100
			W_Ind=W_Ind+1
        END ELSE
			ENR_ANOMALIE<W_Ind>="ANOMALIE;PLUSIEURS AIDES TROUVES - ACCORD PAS CREE;;":W_Nom:";":W_Prenom:";":OCONV(W_DateNais,"D4/"):";":OCONV(W_DateDeb,"D4/"):";":OCONV(W_DateFin,"D4/"):";":W_IdClient:";":W_IdDossier:";":W_Service:";":W_MontantFinanceur/100:";":W_QuantiteAcc/100:";":W_Pourcentage/100
			W_Ind=W_Ind+1
		END
		
		* modif vanessa 20/01/15 - ticket 8107
		IF W_LibSusp # "" THEN
			ENR_ANOMALIE<W_Ind>="SUSPENSION;":W_LibSusp:W_DateSusp:";;":W_Nom:";":W_Prenom:";":OCONV(W_DateNais,"D4/"):";":OCONV(W_DateDeb,"D4/"):";":OCONV(W_DateFin,"D4/"):";":W_IdClient:";":W_IdDossier:";":W_Service:";":W_MontantFinanceur/100:";":W_QuantiteAcc/100:";":W_Pourcentage/100
			W_Ind=W_Ind+1
		END
		W_LigneAnomalie<W_IndAno>=""
		FOR iAno=1 TO 22
			W_LigneAnomalie<W_IndAno>=W_LigneAnomalie<W_IndAno>:FIELD(W_LIGNE,";",iAno):";"
		NEXT iAno
		*W_LigneAnomalie<W_IndAno>=W_LIGNE
		W_IndAno=W_IndAno+1		
	END ELSE
	
		GOSUB 10
		
		IF W_RienAFaire="FAUX" THEN
			GOSUB 20
			ENR_ACCORD=""
			IF W_Service="prestataire sem" THEN
				ENR_ACCORD<1>=W_CaisseSemaine
			END ELSE
				ENR_ACCORD<1>=W_CaisseDimanche
			END
			ENR_ACCORD<2>=W_IdentifiantClient
			ENR_ACCORD<5>=W_DateDeb
			ENR_ACCORD<6>=W_DateFin
			ENR_ACCORD<7>=DATE()
			ENR_ACCORD<8>="1"
			ENR_ACCORD<9>=W_QuantiteAcc
			ENR_ACCORD<10>=W_Pourcentage
			ENR_ACCORD<11>=W_DateDeb
			ENR_ACCORD<23>=W_MontantFinanceur
			IF ENR_ACCORD<4>="" THEN ENR_ACCORD<4>="*"
			
			W_CleAcc=W_TabAide:W_NumOrdre
			WRITE ENR_ACCORD ON F.ACCORD,W_CleAcc
			ENR_ANOMALIE<W_Ind>="MODIF;ACCORD CREE;":W_TabAide:";":W_Nom:";":W_Prenom:";":OCONV(W_DateNais,"D4/"):";":OCONV(W_DateDeb,"D4/"):";":OCONV(W_DateFin,"D4/"):";":W_IdClient:";":W_IdDossier:";":W_Service:";":W_MontantFinanceur/100:";":W_QuantiteAcc/100:";":W_Pourcentage/100
			W_Ind=W_Ind+1
		END
		* modif vanessa 20/01/15 - ticket 8107
		IF W_LibSusp # "" THEN
			ENR_ANOMALIE<W_Ind>="SUSPENSION;":W_LibSusp:W_DateSusp:";":W_TabAide:";":W_Nom:";":W_Prenom:";":OCONV(W_DateNais,"D4/"):";":OCONV(W_DateDeb,"D4/"):";":OCONV(W_DateFin,"D4/"):";":W_IdClient:";":W_IdDossier:";":W_Service:";":W_MontantFinanceur/100:";":W_QuantiteAcc/100:";":W_Pourcentage/100
			W_Ind=W_Ind+1
		END		
	END
	I=I+1
REPEAT

GOSUB 30

IF ENR_ANOMALIE # "" THEN
	WRITE ENR_ANOMALIE ON F.FACTURATION,"RAPPORT-":W_NomFic:".csv"
	WRITE W_LigneAnomalie ON F.FACTURATION,"Ano":W_NomFic
	
	W_Sortie= "Traitement termin. Rapport d'intgration gnr dans le rpertoire FACTURATION"
END ELSE
	W_Sortie= "Traitement termin"
END

RETURN

********************************************************************************************
10

	LISTACC=""
	W_RienAFaire="FAUX"
	W_REQACC = 'SELECT ACCORD AVEC 18 = "" AND AVEC CodAideAccord = "':W_TabAide:'" AND AVEC 2 = "':W_IdClient:']"'
	IF W_Service="prestataire sem" THEN
		W_REQACC=W_REQACC:' AND AVEC 1 = "':W_CaisseSemaine:'"'
	END ELSE
		W_REQACC=W_REQACC:' AND AVEC 1 = "':W_CaisseDimanche:'"'	
	END
	EXECUTE W_REQACC
	EXECUTE 'SAUVE-LISTE LISTACC'
	EXECUTE 'LISTE LISTACC' RETURNING W_MSG
	
	IF W_MSG<1>#209 THEN
		SELECT F.ACCORD TO LISTACC	
		
		W_FINACC="NON"
		LOOP
			READNEXT W_CLEACCEXISTANT FROM LISTACC ELSE W_FINACC="OUI"
		UNTIL W_FINACC="OUI" DO
			READ ENR_ACCORD FROM F.ACCORD,W_CLEACCEXISTANT ELSE ENR_ACCORD=""
			
			IF ENR_ACCORD<2>=W_IdentifiantClient THEN
			
				* si accord identique, on ne fait rien sur ce cas
				IF ENR_ACCORD<5>=W_DateDeb AND ENR_ACCORD<6>=W_DateFin AND ENR_ACCORD<9>=W_QuantiteAcc AND TRIM(ENR_ACCORD<23,1>)=TRIM(W_MontantFinanceur) AND TRIM(ENR_ACCORD<10,1>)=TRIM(W_Pourcentage) THEN
					W_FINACC="OUI"
					W_RienAFaire="VRAI"
					
					IF ENR_ACCORD<4>="" THEN ENR_ACCORD<4>="*"
					WRITE ENR_ACCORD ON F.ACCORD,W_CLEACCEXISTANT
					
				END ELSE
				
					* si participation du plan d'aide modifie alors on cre une MV en plus pour la nouvelle participation
					IF ENR_ACCORD<5>=W_DateDeb AND ENR_ACCORD<6>=W_DateFin AND ENR_ACCORD<9>=W_QuantiteAcc THEN
						IF TRIM(ENR_ACCORD<23,1>) # TRIM(W_MontantFinanceur) OR TRIM(ENR_ACCORD<10,1>) # TRIM(W_Pourcentage) THEN
						
							W_DateDebPer=ICONV("01/":W_PeriodeFacturation[5,2]:"/":W_PeriodeFacturation[1,4],"D4/")
							ENR_ACCORD=INSERT(ENR_ACCORD,10,1;W_Pourcentage)
							ENR_ACCORD=INSERT(ENR_ACCORD,11,1;W_DateDebPer)
							ENR_ACCORD=INSERT(ENR_ACCORD,23,1;W_MontantFinanceur)
							IF ENR_ACCORD<4>="" THEN ENR_ACCORD<4>="*"
							
							WRITE ENR_ACCORD ON F.ACCORD,W_CLEACCEXISTANT
							
							ENR_ANOMALIE<W_Ind>="MODIF;PARTICIPATION DU PLAN D'AIDE MODIFIEE;":W_TabAide:";":W_Nom:";":W_Prenom:";":OCONV(W_DateNais,"D4/"):";":OCONV(W_DateDeb,"D4/"):";":OCONV(W_DateFin,"D4/"):";":W_IdClient:";":W_IdDossier:";":W_Service:";":W_MontantFinanceur/100:";":W_QuantiteAcc/100:";":W_Pourcentage/100
							W_Ind=W_Ind+1
							W_RienAFaire="VRAI"
						END
					END
					
					* si nbre d'heures modifi
					IF ENR_ACCORD<5>=W_DateDeb AND ENR_ACCORD<6>=W_DateFin AND ENR_ACCORD<9> # W_QuantiteAcc THEN
						W_DateFinPerPrec=ICONV("01/":W_PeriodeFacturation[5,2]:"/":W_PeriodeFacturation[1,4],"D4/")-1
						W_DateDebPer=ICONV("01/":W_PeriodeFacturation[5,2]:"/":W_PeriodeFacturation[1,4],"D4/")
						* on ne peut pas mettre une date de fin car il y a un historique ou bien la date de fin serait infrieure  la date de dbut d'accord --> donc anomalie
						IF W_DateFinPerPrec < ENR_ACCORD<5> OR W_PeriodeFacturation < ENR_ACCORD<14,1> THEN
						
							IF ENR_ACCORD<4>="" THEN ENR_ACCORD<4>="*"
							WRITE ENR_ACCORD ON F.ACCORD,W_CLEACCEXISTANT
							
							ENR_ANOMALIE<W_Ind>="ANOMALIE;MODIFICATION DU NBRE D'HEURES IMPOSSIBLE - PB DE DATES;":W_TabAide:";":W_Nom:";":W_Prenom:";":OCONV(W_DateNais,"D4/"):";":OCONV(W_DateDeb,"D4/"):";":OCONV(W_DateFin,"D4/"):";":W_IdClient:";":W_IdDossier:";":W_Service:";":W_MontantFinanceur/100:";":W_QuantiteAcc/100:";":W_Pourcentage/100
							W_Ind=W_Ind+1
							W_RienAFaire="VRAI"
							* modif vanessa 20/01/15 - ticket 8107
							W_LigneAnomalie<W_IndAno>=""
							FOR iAno=1 TO 22
								W_LigneAnomalie<W_IndAno>=W_LigneAnomalie<W_IndAno>:FIELD(W_LIGNE,";",iAno):";"
							NEXT iAno
							*W_LigneAnomalie<W_IndAno>=W_LIGNE							
							W_IndAno=W_IndAno+1	
							
						END ELSE
							* on termine l'accord prcdent et on en recre un nouveau
							ENR_ACCORDNEW=ENR_ACCORD
							ENR_ACCORD<6>=W_DateFinPerPrec
							IF ENR_ACCORD<4>="" THEN ENR_ACCORD<4>="*"
							WRITE ENR_ACCORD ON F.ACCORD,W_CLEACCEXISTANT
							
							ENR_ACCORDNEW<5>=W_DateDebPer
							ENR_ACCORDNEW<9>=W_QuantiteAcc
							ENR_ACCORDNEW<11>=W_DateDebPer
							ENR_ACCORDNEW<10>=ENR_ACCORDNEW<10,1>
							ENR_ACCORDNEW<12>=""
							ENR_ACCORDNEW<13>=""
							ENR_ACCORDNEW<23>=ENR_ACCORDNEW<23,1>							
							FOR iHisto=14 TO 17 
								ENR_ACCORDNEW<iHisto>=""
							NEXT iHisto
							IF ENR_ACCORDNEW<4>="" THEN ENR_ACCORDNEW<4>="*"
							GOSUB 20
							W_CleAcc=W_TabAide:W_NumOrdre
							WRITE ENR_ACCORDNEW ON F.ACCORD,W_CleAcc
							* Modif Greg - 15/05/14 - On a besoin qu'ENR_ACCORD soit renseign pour la suite du prog.
							ENR_ACCORD=ENR_ACCORDNEW
							
							ENR_ANOMALIE<W_Ind>="MODIF;ACCORD PRECEDENT ARRETE - NOUVEL ACCORD CREE CAR MODIFICATION DU NBRE D'HEURES;":W_TabAide:";":W_Nom:";":W_Prenom:";":OCONV(W_DateNais,"D4/"):";":OCONV(W_DateDeb,"D4/"):";":OCONV(W_DateFin,"D4/"):";":W_IdClient:";":W_IdDossier:";":W_Service:";":W_MontantFinanceur/100:";":W_QuantiteAcc/100:";":W_Pourcentage/100
							W_Ind=W_Ind+1
							W_RienAFaire="VRAI"							
						END
					END
					
					* si date de debut modifie
					IF ENR_ACCORD<5>#W_DateDeb THEN
						W_PeriodeDateDeb=OCONV(W_DateDeb,"D4/")
						W_PeriodeDateDeb=W_PeriodeDateDeb[7,4]:W_PeriodeDateDeb[4,2]
						W_DateFinAccPrec=W_DateDeb-1
						* on ne peut pas mettre une date de fin car il y a un historique ou bien la date de fin serait infrieure  la date de dbut d'accord --> donc anomalie
						IF W_DateFinAccPrec < ENR_ACCORD<5> OR W_PeriodeDateDeb < ENR_ACCORD<14,1> THEN
							IF ENR_ACCORD<4>="" THEN ENR_ACCORD<4>="*"
							WRITE ENR_ACCORD ON F.ACCORD,W_CLEACCEXISTANT
							
							ENR_ANOMALIE<W_Ind>="ANOMALIE;MODIFICATION DE LA DATE DE DEBUT IMPOSSIBLE;":W_TabAide:";":W_Nom:";":W_Prenom:";":OCONV(W_DateNais,"D4/"):";":OCONV(W_DateDeb,"D4/"):";":OCONV(W_DateFin,"D4/"):";":W_IdClient:";":W_IdDossier:";":W_Service:";":W_MontantFinanceur/100:";":W_QuantiteAcc/100:";":W_Pourcentage/100
							W_Ind=W_Ind+1
							W_RienAFaire="VRAI"
							
							* modif vanessa 20/01/15 - ticket 8107
							W_LigneAnomalie<W_IndAno>=""
							FOR iAno=1 TO 22
								W_LigneAnomalie<W_IndAno>=W_LigneAnomalie<W_IndAno>:FIELD(W_LIGNE,";",iAno):";"
							NEXT iAno
							*W_LigneAnomalie<W_IndAno>=W_LIGNE							
							W_IndAno=W_IndAno+1	
							
						END ELSE
							* on termine l'accord prcdent et on en recre un nouveau
							ENR_ACCORDNEW=ENR_ACCORD
							ENR_ACCORD<6>=W_DateFinAccPrec
							IF ENR_ACCORD<4>="" THEN ENR_ACCORD<4>="*"
							WRITE ENR_ACCORD ON F.ACCORD,W_CLEACCEXISTANT
							
							ENR_ACCORDNEW<2>=W_IdentifiantClient							
							ENR_ACCORDNEW<5>=W_DateDeb
							ENR_ACCORDNEW<6>=W_DateFin	
							ENR_ACCORDNEW<11>=W_DateDeb
							ENR_ACCORDNEW<9>=W_QuantiteAcc
							ENR_ACCORDNEW<10>=W_Pourcentage
							ENR_ACCORDNEW<12>=""
							ENR_ACCORDNEW<13>=""
							ENR_ACCORDNEW<23>=W_MontantFinanceur					
							FOR iHisto=14 TO 17 
								ENR_ACCORDNEW<iHisto>=""
							NEXT iHisto
							IF ENR_ACCORDNEW<4>="" THEN ENR_ACCORDNEW<4>="*"
							GOSUB 20
							W_CleAcc=W_TabAide:W_NumOrdre
							WRITE ENR_ACCORDNEW ON F.ACCORD,W_CleAcc
							* Modif Greg - 15/05/14 - On a besoin qu'ENR_ACCORD soit renseign pour la suite du prog.
							ENR_ACCORD=ENR_ACCORDNEW							
							
							ENR_ANOMALIE<W_Ind>="MODIF;ACCORD PRECEDENT ARRETE - NOUVEL ACCORD CREE CAR MODIFICATION DE LA DATE DE DEBUT;":W_TabAide:";":W_Nom:";":W_Prenom:";":OCONV(W_DateNais,"D4/"):";":OCONV(W_DateDeb,"D4/"):";":OCONV(W_DateFin,"D4/"):";":W_IdClient:";":W_IdDossier:";":W_Service:";":W_MontantFinanceur/100:";":W_QuantiteAcc/100:";":W_Pourcentage/100
							W_Ind=W_Ind+1
							W_RienAFaire="VRAI"					
						END
						
					END
					
					* si date de fin modifie
					IF ENR_ACCORD<6>#W_DateFin THEN
						W_PeriodeDateFin=OCONV(W_DateFin,"D4/")
						W_PeriodeDateFin=W_PeriodeDateFin[7,4]:W_PeriodeDateFin[4,2]
						* on ne peut pas modifier la date de fin car il y a un historique  --> donc anomalie
						IF W_PeriodeDateFin < ENR_ACCORD<14,1> THEN
							IF ENR_ACCORD<4>="" THEN ENR_ACCORD<4>="*"
							WRITE ENR_ACCORD ON F.ACCORD,W_CLEACCEXISTANT
						
							ENR_ANOMALIE<W_Ind>="ANOMALIE;MODIFICATION DE LA DATE DE FIN IMPOSSIBLE CAR HISTORIQUE;":W_TabAide:";":W_Nom:";":W_Prenom:";":OCONV(W_DateNais,"D4/"):";":OCONV(W_DateDeb,"D4/"):";":OCONV(W_DateFin,"D4/"):";":W_IdClient:";":W_IdDossier:";":W_Service:";":W_MontantFinanceur/100:";":W_QuantiteAcc/100:";":W_Pourcentage/100
							W_Ind=W_Ind+1
							W_RienAFaire="VRAI"
							* modif vanessa 20/01/15 - ticket 8107
							W_LigneAnomalie<W_IndAno>=""
							FOR iAno=1 TO 22
								W_LigneAnomalie<W_IndAno>=W_LigneAnomalie<W_IndAno>:FIELD(W_LIGNE,";",iAno):";"
							NEXT iAno
							*W_LigneAnomalie<W_IndAno>=W_LIGNE							
							W_IndAno=W_IndAno+1	
						END ELSE
							* on modifie la date de fin
							ENR_ACCORD<6>=W_DateFin
							IF ENR_ACCORD<4>="" THEN ENR_ACCORD<4>="*"
							WRITE ENR_ACCORD ON F.ACCORD,W_CLEACCEXISTANT
							
							ENR_ANOMALIE<W_Ind>="MODIF;MODIFICATION DE LA DATE DE FIN;":W_TabAide:";":W_Nom:";":W_Prenom:";":OCONV(W_DateNais,"D4/"):";":OCONV(W_DateDeb,"D4/"):";":OCONV(W_DateFin,"D4/"):";":W_IdClient:";":W_IdDossier:";":W_Service:";":W_MontantFinanceur/100:";":W_QuantiteAcc/100:";":W_Pourcentage/100
							W_Ind=W_Ind+1
							W_RienAFaire="VRAI"								
							
						END
					END
				END
			END ELSE
				W_NumDossier=FIELD(ENR_ACCORD<2>,"-",2)
				
				IF INT(W_NumDossier) < INT(FIELD(ENR_FACTURATION<I>,";",4)) THEN
				
					* modif vanessa 24/02/14 - DA 14008
					IF ENR_ACCORD<5>=W_DateDeb AND ENR_ACCORD<16>="" THEN

						* on supprime l'accord prcdent et on en recre un nouveau
						ENR_ACCORDNEW=ENR_ACCORD
						ENR_ACCORD<18>="O"
						IF ENR_ACCORD<4>="" THEN ENR_ACCORD<4>="*"
						WRITE ENR_ACCORD ON F.ACCORD,W_CLEACCEXISTANT
						
						ENR_ACCORDNEW<2>=W_IdentifiantClient							
						ENR_ACCORDNEW<5>=W_DateDeb
						ENR_ACCORDNEW<6>=W_DateFin	
						ENR_ACCORDNEW<11>=W_DateDeb
						ENR_ACCORDNEW<9>=W_QuantiteAcc
						ENR_ACCORDNEW<10>=W_Pourcentage
						ENR_ACCORDNEW<12>=""
						ENR_ACCORDNEW<13>=""
						ENR_ACCORDNEW<23>=W_MontantFinanceur								
						
						FOR iHisto=14 TO 17 
							ENR_ACCORDNEW<iHisto>=""
						NEXT iHisto
						IF ENR_ACCORDNEW<4>="" THEN ENR_ACCORDNEW<4>="*"
						
						GOSUB 20
						W_CleAcc=W_TabAide:W_NumOrdre
						WRITE ENR_ACCORDNEW ON F.ACCORD,W_CleAcc
						
						ENR_ANOMALIE<W_Ind>="MODIF;ACCORD PRECEDENT SUPPRIME - NOUVEL ACCORD CREE CAR AUCUNE HEURE SUR ACCORD PRECEDENT ;":W_TabAide:";":W_Nom:";":W_Prenom:";":OCONV(W_DateNais,"D4/"):";":OCONV(W_DateDeb,"D4/"):";":OCONV(W_DateFin,"D4/"):";":W_IdClient:";":W_IdDossier:";":W_Service:";":W_MontantFinanceur/100:";":W_QuantiteAcc/100:";":W_Pourcentage/100
						W_Ind=W_Ind+1
						W_RienAFaire="VRAI"	
					END ELSE
					
						IF ENR_ACCORD<5> <= W_DateFin AND ENR_ACCORD<6> >= W_DateDeb THEN
						
							W_PeriodeDateDeb=OCONV(W_DateDeb,"D4/")
							W_PeriodeDateDeb=W_PeriodeDateDeb[7,4]:W_PeriodeDateDeb[4,2]
							W_DateFinAccPrec=W_DateDeb-1
							* on ne peut pas mettre une date de fin car il y a un historique ou bien la date de fin serait infrieure  la date de dbut d'accord --> donc anomalie
							IF W_DateFinAccPrec < ENR_ACCORD<5> OR W_PeriodeDateDeb < ENR_ACCORD<14,1> THEN
								IF ENR_ACCORD<4>="" THEN ENR_ACCORD<4>="*"
								WRITE ENR_ACCORD ON F.ACCORD,W_CLEACCEXISTANT
								
								ENR_ANOMALIE<W_Ind>="ANOMALIE;PROBLEME DE CHEVAUCHEMENT D'ACCORD OU NUMERO DE DOSSIER DIFFERENT;":W_TabAide:";":W_Nom:";":W_Prenom:";":OCONV(W_DateNais,"D4/"):";":OCONV(W_DateDeb,"D4/"):";":OCONV(W_DateFin,"D4/"):";":W_IdClient:";":W_IdDossier:";":W_Service:";":W_MontantFinanceur/100:";":W_QuantiteAcc/100:";":W_Pourcentage/100
								W_Ind=W_Ind+1
								W_RienAFaire="VRAI"
								* modif vanessa 20/01/15 - ticket 8107
								W_LigneAnomalie<W_IndAno>=""
								FOR iAno=1 TO 22
									W_LigneAnomalie<W_IndAno>=W_LigneAnomalie<W_IndAno>:FIELD(W_LIGNE,";",iAno):";"
								NEXT iAno
								*W_LigneAnomalie<W_IndAno>=W_LIGNE								
								W_IndAno=W_IndAno+1	
								
							END ELSE
								* on termine l'accord prcdent et on en recre un nouveau
								ENR_ACCORDNEW=ENR_ACCORD
								ENR_ACCORD<6>=W_DateFinAccPrec
								IF ENR_ACCORD<4>="" THEN ENR_ACCORD<4>="*"
								WRITE ENR_ACCORD ON F.ACCORD,W_CLEACCEXISTANT
								
								ENR_ACCORDNEW<2>=W_IdentifiantClient							
								ENR_ACCORDNEW<5>=W_DateDeb
								ENR_ACCORDNEW<6>=W_DateFin	
								ENR_ACCORDNEW<11>=W_DateDeb
								ENR_ACCORDNEW<9>=W_QuantiteAcc
								ENR_ACCORDNEW<10>=W_Pourcentage
								ENR_ACCORDNEW<12>=""
								ENR_ACCORDNEW<13>=""
								ENR_ACCORDNEW<23>=W_MontantFinanceur								
								
								FOR iHisto=14 TO 17 
									ENR_ACCORDNEW<iHisto>=""
								NEXT iHisto
								IF ENR_ACCORDNEW<4>="" THEN ENR_ACCORDNEW<4>="*"
								
								GOSUB 20
								W_CleAcc=W_TabAide:W_NumOrdre
								WRITE ENR_ACCORDNEW ON F.ACCORD,W_CleAcc
								
								ENR_ANOMALIE<W_Ind>="MODIF;ACCORD PRECEDENT ARRETE - NOUVEL ACCORD CREE CAR CHEVAUCHEMENT D'ACCORD;":W_TabAide:";":W_Nom:";":W_Prenom:";":OCONV(W_DateNais,"D4/"):";":OCONV(W_DateDeb,"D4/"):";":OCONV(W_DateFin,"D4/"):";":W_IdClient:";":W_IdDossier:";":W_Service:";":W_MontantFinanceur/100:";":W_QuantiteAcc/100:";":W_Pourcentage/100
								W_Ind=W_Ind+1
								W_RienAFaire="VRAI"
							END
						END					
					END
				END ELSE
					IF ENR_ACCORD<5> <= W_DateFin AND ENR_ACCORD<6> >= W_DateDeb THEN
					
						IF ENR_ACCORD<4>="" THEN ENR_ACCORD<4>="*"
						WRITE ENR_ACCORD ON F.ACCORD,W_CLEACCEXISTANT
						
						ENR_ANOMALIE<W_Ind>="ANOMALIE;PROBLEME DE CHEVAUCHEMENT D'ACCORD OU NUMERO DE DOSSIER INFERIEUR;":W_TabAide:";":W_Nom:";":W_Prenom:";":OCONV(W_DateNais,"D4/"):";":OCONV(W_DateDeb,"D4/"):";":OCONV(W_DateFin,"D4/"):";":W_IdClient:";":W_IdDossier:";":W_Service:";":W_MontantFinanceur/100:";":W_QuantiteAcc/100:";":W_Pourcentage/100
						W_Ind=W_Ind+1
						W_RienAFaire="VRAI"
						* modif vanessa 20/01/15 - ticket 8107
						W_LigneAnomalie<W_IndAno>=""
						FOR iAno=1 TO 22
							W_LigneAnomalie<W_IndAno>=W_LigneAnomalie<W_IndAno>:FIELD(W_LIGNE,";",iAno):";"
						NEXT iAno
						*W_LigneAnomalie<W_IndAno>=W_LIGNE						
						W_IndAno=W_IndAno+1	

					END
				END
			END
		REPEAT
		
	END
	
RETURN

********************************************************************************************
20

	W_NumOrdre="001"
	READ ENR_ACCORD FROM F.ACCORD,W_TabAide:W_NumOrdre ELSE ENR_ACCORD=""
	LOOP
	UNTIL ENR_ACCORD="" DO
		W_NumOrdre=W_NumOrdre+1
		W_NumOrdre=W_NumOrdre "R%3"
		READ ENR_ACCORD FROM F.ACCORD,W_TabAide:W_NumOrdre ELSE ENR_ACCORD=""
	REPEAT
	
RETURN

********************************************************************************************
30

	W_Mois=W_PeriodeFacturation[5,2]
	W_An=W_PeriodeFacturation[1,4]
	W_DateDebPer=ICONV("01/":W_Mois:"/":W_An,"D4/")
	W_Mois=W_Mois+1
	IF W_Mois="13" THEN
		W_Mois="01"
		W_An=W_An+1
	END
	W_DateFinPer=ICONV("01/":W_Mois:"/":W_An,"D4/")-1
	
	LISTACC=""
	W_REQACC = 'SELECT ACCORD AVEC 18 = "" AND AVEC 5 <= "':W_DateFinPer:'" AND AVEC 6 >= "':W_DateDebPer:'" AND AVEC 1 = "':W_CaisseSemaine:'" OR = "':W_CaisseDimanche:'"'
	EXECUTE W_REQACC
	EXECUTE 'SAUVE-LISTE LISTACC'
	EXECUTE 'LISTE LISTACC' RETURNING W_MSG
	
	IF W_MSG<1>#209 THEN
		SELECT F.ACCORD TO LISTACC	
		
		W_FINACC="NON"
		LOOP
			READNEXT W_CLEACCEXISTANT FROM LISTACC ELSE W_FINACC="OUI"
		UNTIL W_FINACC="OUI" DO
			READ ENR_ACCORD FROM F.ACCORD,W_CLEACCEXISTANT ELSE ENR_ACCORD=""
			READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_CLEACCEXISTANT[1,5] ELSE ENR_CIVILAIDE=""
			IF ENR_ACCORD<4>="*" THEN
				ENR_ACCORD<4>=""
				WRITE ENR_ACCORD ON F.ACCORD,W_CLEACCEXISTANT
			END ELSE
				ENR_ANOMALIE<W_Ind>="A VOIR;ACCORD NON PRESENT DANS LE FICHIER CG MAIS ACTIF AVEC INFOLOGIS;":W_CLEACCEXISTANT[1,5]:";":ENR_CIVILAIDE<2>:";":ENR_CIVILAIDE<3>
				W_Ind=W_Ind+1			
			END
		REPEAT
	END
	
RETURN
