*PARAMETRES*
*Regroupement des lignes de rajustement tarifaire*
*Priode de traitement (sous la forme AAAAMM) |6N|TXT|O*
*Code caisse APA Semaine(3N) |3N|TXT|O*
*Code caisse APA Dim & JF(3N) |3N|TXT|O*
*Diffrence taux ajustement  (x,xx)|4X|TXT|O*
*Diffrence taux ajustement major (x,xx Optionnel) |4X|TXT|N*
*Priode debut rattrapage (sous la forme AAAAMM) |6N|TXT|O*
*Priode de changement de taux (sous la forme AAAAMM Optionel) |6N|TXT|N*
*Ancienne diff. taux ajustement (x,xx)|4X|TXT|N*
*Ancienne diff. taux ajustement major (x,xx Optionnel) |4X|TXT|N*
*FIN PARAMETRES*

SUBROUTINE REGROUPFACTASMAD(RETURNVAL,PARAMETRES,W_Sortie)

	EXECUTE "SET-THOUS ."
	EXECUTE "SET-DEC ,"
	EXECUTE "DATE.FORMAT"
	
	**************************************************************************
	**					REGROUPER LES LIGNES DE FACTURATION 				**
	**					AVEC LES REAJUSTEMENTS TARIFAIRES					**
	**************************************************************************
	** Vanessa												FEVRIER 2010	**
	** Alexandre											MARS 2013		**
	**************************************************************************

	W_Periode=PARAMETRES<1>
	W_CaisseApaSem=PARAMETRES<2>
	W_CaisseApaDim=PARAMETRES<3>
	W_TauxDifference=PARAMETRES<4>
	W_TauxDifferenceMAJ=PARAMETRES<5>
	
	*Mikael le 04/04/2013 ajout la notion de date de debut de rattrapage
	* sinon on rattrape les heures de 2012. et non les heures effectues a compter de mars 2013

	W_PeriodeDebRat=PARAMETRES<6>
		
	* Modif Greg - 29/01/14 - Ajout d'une priode de changement de taux et des diffrences antrieures  cette priode.
	* Ceci afin de grer le fait qu'ils continuent  partir de mars 2013, mais en janvier 2014 les taux de prestation
	* de l'asso changent donc les diffrences aussi.
	W_PeriodeChange=PARAMETRES<7>
	W_TauxAncDiff=PARAMETRES<8>
	W_TauxAncDiffMAJ=PARAMETRES<9>

	* Fin mikael
	IF W_TauxDifference[2,1] # "," OR W_TauxDifferenceMAJ[2,1] # "," THEN
		W_Sortie="Anomalie: N'oubliez pas la virgule lors de la saisie des taux"
		RETURN
	END
	
	W_TauxDifference=W_TauxDifference*100
	IF W_TauxDifferenceMAJ = "" THEN
		W_TauxDifferenceMAJ=W_TauxDifference
	END ELSE
		W_TauxDifferenceMAJ=W_TauxDifferenceMAJ*100
	END
	
	* Modif Greg - 29/01/14
	IF W_PeriodeChange<>"" AND W_TauxAncDiff="" THEN
		W_Sortie="Vous devez renseigner l'ancienne diffrence de taux."
		RETURN
	END
	
	IF W_TauxAncDiff[2,1] # "," OR W_TauxAncDiffMAJ[2,1] # "," THEN
		W_Sortie="Anomalie: N'oubliez pas la virgule lors de la saisie des taux"
		RETURN
	END
	
	W_TauxAncDiff=W_TauxAncDiff*100
	IF W_TauxAncDiffMAJ = "" THEN
		W_TauxAncDiffMAJ=W_TauxAncDiff
	END ELSE
		W_TauxAncDiffMAJ=W_TauxAncDiffMAJ*100
	END		
	* Fin modif Greg - 29/01/14
	
	OPEN "","ACCORD" TO F.ACCORD ELSE PRINT "OUVERTURE ACCORD" ;* en lecture
	OPEN "","ORGPRISECHARGE" TO F.ORGPRISECHARGE ELSE PRINT "OUVERTURE ORGPRISECHARGE" ;* en lecture
	OPEN "","FACTURAIDE" TO F.FACTURAIDE ELSE PRINT "OUVERTURE FACTURAIDE" ;* en lecture criture
	OPEN "","_PH_" TO F._PH_ ELSE PRINT "OUVERTURE _PH_";*en lecture
	OPEN "","FUSION" TO F.FUSION ELSE PRINT "OUVERTURE FUSION";*en lecture
	OPEN "","CIVILAIDE" TO F.CIVILAIDE ELSE PRINT "OUVERTURE CIVILAIDE";*en lecture
	
	W_NomFic=""
	W_Cle="FACTURAIDE":W_Periode
	READ ENR_PH FROM F._PH_,W_Cle ELSE ENR_PH=""
	
	IF ENR_PH="" THEN
		W_NomFic=W_Cle
	END ELSE
		i=2
		LOOP	
		UNTIL ENR_PH="" DO
			W_Cle="FACTURAIDE":W_Periode:"-":i
			READ ENR_PH FROM F._PH_,W_Cle ELSE ENR_PH=""
			i=i+1
		REPEAT
	END
	
	EXECUTE "QUI" CAPTURING W_CHEMIN
	
	
	EXECUTE "!XCOPY /Y ":W_CHEMIN<1>:"\FACTURAIDE ":W_CHEMIN<1>:"\_PH_\":W_Cle:" < ":W_CHEMIN<1>:"\_PH_\F-DOS"
	
	ENR_ACCORD=""
	ENR_FACTURAIDE=""
	ENR_ORGPRISECHARGE=""
	W_ListeReq=""
	W_SauveAide=""
	
	
	W_Mois=W_Periode[5,2]
	W_An=W_Periode[1,4]
	W_DateDebMois=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
	
	* traitement
	W_Temp = 'SELECT FACTURAIDE AVEC PeriodeCleFactAide = "':W_Periode:'" AND AVEC 15 = "R]" PAR-DECR 0'
	
	EXECUTE W_Temp
	EXECUTE 'SAUVE-LISTE W_ListeReq'
	EXECUTE "LISTE W_ListeReq" RETURNING MSGCODE
	
	IF MSGCODE<1>#209 THEN
		SELECT F.FACTURAIDE TO W_ListeReq
		
		W_End="FAUX"
		
		LOOP
			READNEXT W_Cle FROM W_ListeReq ELSE W_End = "VRAI"
		WHILE W_End = "FAUX" DO
		
			IF W_SauveAide # W_Cle[1,25] THEN
				W_SauveAide=W_Cle[1,25]
				
				READ ENR_FACTURAIDE FROM F.FACTURAIDE,W_Cle ELSE ENR_FACTURAIDE=""
				
				W_CountMV=DCOUNT(ENR_FACTURAIDE<1>,CHAR(253))
				FOR i=1 TO W_CountMV

					IF LEN(ENR_FACTURAIDE<15,i>)=8 THEN
						READ ENR_ACCORD FROM F.ACCORD,ENR_FACTURAIDE<15,i> THEN
							j=i+1
							LOOP
							UNTIL ENR_FACTURAIDE<15,j>[1,1]="R" AND ENR_FACTURAIDE<4,i> > 0 AND ENR_FACTURAIDE<1,i>=ENR_FACTURAIDE<1,j> AND ENR_FACTURAIDE<3,i>=ENR_FACTURAIDE<3,j> OR ENR_FACTURAIDE<1,j>="" DO
								j=j+1
							REPEAT
	
							IF ENR_FACTURAIDE<15,j>[1,1]="R" THEN
								IF ENR_FACTURAIDE<1,j> >= W_PeriodeDebRat THEN
								
									* Si APA
									IF ENR_ACCORD<1> = W_CaisseApaSem OR ENR_ACCORD<1> = W_CaisseApaDim THEN
										ENR_FACTURAIDE<4,i>=ENR_FACTURAIDE<4,i>+ENR_FACTURAIDE<4,j>
										ENR_FACTURAIDE<5,i>=ENR_FACTURAIDE<5,i>+ENR_FACTURAIDE<5,j>
									END ELSE ;*Si pas APA	
										* Modif Greg - 29/01/14 - Si la priode des heures est gale ou suprieure  la priode de changement
										* de taux, alors il faut prendre la nouvelle diffrence. Sinon il faut prendre l'ancienne.										
										W_TauxDiff=""
										W_TauxDiffMAJ=""
										IF W_PeriodeChange="" THEN
											W_TauxDiff=W_TauxDifference
											W_TauxDiffMAJ=W_TauxDifferenceMAJ
										END ELSE
											IF ENR_FACTURAIDE<1,j> >= W_PeriodeChange THEN
												W_TauxDiff=W_TauxDifference
												W_TauxDiffMAJ=W_TauxDifferenceMAJ
											END ELSE
												W_TauxDiff=W_TauxAncDiff
												W_TauxDiffMAJ=W_TauxAncDiffMAJ
											END
										END										
										* Fin modif Greg - 29/01/14
									
										READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,ENR_ACCORD<1> THEN
											W_LongLib=LEN(ENR_FACTURAIDE<2,j>)
											W_TestLib=ENR_FACTURAIDE<2,j>[W_LongLib-2,3]

											IF ENR_ORGPRISECHARGE<26,1> # ENR_ORGPRISECHARGE<27,1> AND W_TestLib="MAJ" THEN 
												ENR_FACTURAIDE<4,i>=ENR_FACTURAIDE<4,i> + W_TauxDiffMAJ
												ENR_FACTURAIDE<5,i>=INT((ENR_FACTURAIDE<3,i> * ENR_FACTURAIDE<4,i>) /100 + 1/2)
											END ELSE
												ENR_FACTURAIDE<4,i>=ENR_FACTURAIDE<4,i> + W_TauxDiff
												ENR_FACTURAIDE<5,i>=INT((ENR_FACTURAIDE<3,i> * ENR_FACTURAIDE<4,i>) /100 + 1/2)
											END
										END
									END
								END	
								
								* Dans tout les cas, on supprime la colonne "Ajustement"
								ENR_FACTURAIDE=DELETE(ENR_FACTURAIDE,1,j)
								ENR_FACTURAIDE=DELETE(ENR_FACTURAIDE,2,j)
								ENR_FACTURAIDE=DELETE(ENR_FACTURAIDE,3,j)
								ENR_FACTURAIDE=DELETE(ENR_FACTURAIDE,4,j)
								ENR_FACTURAIDE=DELETE(ENR_FACTURAIDE,5,j)
								ENR_FACTURAIDE=DELETE(ENR_FACTURAIDE,6,j)
								ENR_FACTURAIDE=DELETE(ENR_FACTURAIDE,7,j)
								ENR_FACTURAIDE=DELETE(ENR_FACTURAIDE,14,j)
								ENR_FACTURAIDE=DELETE(ENR_FACTURAIDE,15,j)
								ENR_FACTURAIDE=DELETE(ENR_FACTURAIDE,16,j)
								
								WRITE ENR_FACTURAIDE ON F.FACTURAIDE,W_Cle
								W_CountMV=W_CountMV-1
								i=j-1
							   
							END
						END
					END
				NEXT i
			END
		REPEAT
	END
	
	EXECUTE 'EFFACER-LISTE W_ListeReq'
	
	W_Temp = 'SELECT FACTURAIDE AVEC PeriodeCleFactAide = "':W_Periode:'" AND AVEC 15 = "R]" PAR-DECR 0'
	EXECUTE W_Temp
	EXECUTE 'SAUVE-LISTE W_ListeReq'
	EXECUTE "LISTE W_ListeReq" RETURNING MSGCODE
	
	IF MSGCODE<1>#209 THEN
		W_TabAnomalie=""
		W_TabAnomalie<1>="Code de l'aide;Nom de l'aide;Prenom de l'aide"
		SELECT F.FACTURAIDE TO W_ListeReq
		W_End="FAUX"
		
		LOOP
			READNEXT W_Cle FROM W_ListeReq ELSE W_End = "VRAI"
		WHILE W_End = "FAUX" DO
			READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_Cle[1,5] THEN
				W_TabAnomalie<-1>=W_Cle[1,5]:";":ENR_CIVILAIDE<2>:";":ENR_CIVILAIDE<3>
			END
		REPEAT
		
		W_NomFic="AnomalieRegroupFacture-":W_Periode:".csv"
		WRITE W_TabAnomalie ON F.FUSION,W_NomFic
		W_Sortie = "Des anomalies sont apparues lors du traitement. Veuillez consulter le fichier ":W_NomFic:" pour plus d'informations."
	END ELSE
		W_Sortie = "Traitement termin."
	END
	EXECUTE 'EFFACER-LISTE W_ListeReq'
RETURN