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

OPEN "","FACTURATION" TO F.FACTURATION ELSE PRINT "ERREUR OUVERTURE FICHIER FACTURATION"
OPEN "","ACCORD" TO F.ACCORD ELSE PRINT "ERREUR OUVERTURE FICHIER ACCORD"
OPEN "","FACTURORG" TO F.FACTURORG ELSE PRINT "ERREUR OUVERTURE FICHIER FACTURORG"
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE PRINT "ERREUR OUVERTURE FICHIER ASSOCIATION"

***INITIALISATION VARIABLE***
PROCREAD PARAMETRES ELSE STOP
W_CleFichierImport = FIELD(PARAMETRES,"|",2)
w_datedeb = FIELD(PARAMETRES,"|",3)
w_datefin = FIELD(PARAMETRES,"|",4)
W_CodeOrgSel = FIELD(PARAMETRES,"|",5)
w_dateperiode = FIELD(PARAMETRES,"|",6)

*Mikael le 22/01/2007
*Txt_CodAssoc = FIELD(PARAMETRES,"|",7)
W_NumFiness=""
ENR_ASSOCIATION=""

READ ENR_ASSOCIATION FROM F.ASSOCIATION, FIELD(PARAMETRES,"|",7) THEN
	W_NumFiness = ENR_ASSOCIATION<37>
END
*fin

Lst_Prest = FIELD(PARAMETRES,"|",8)
*Lst_Org = FIELD(PARAMETRES,"|",9)

W_AncienAide=""
W_ReqAccord = ""
W_ReqFacturOrg = ""
W_Req = ""
ENR_FICHIERIMPORT = ""
ENR_RAPPORT = ""
ENR_ACCORD = ""
ENR_FACTURORG =""
W_StrCumulHeure = ""
w_strcumulmontant = ""
w_cumulheure=0
w_cumulmontant=0
w_nomprec = ""
z = 2
y = 1

***DEBUT DU PROGRAMME***

	W_Req = 'SSELECT ACCORD AVEC 1 = "':FIELD(W_CodeOrgSel,"/",y):'"'
	
    FOR y = 2 TO DCOUNT(W_CodeOrgSel,"/")
        W_Req = W_Req : ' OR = "' : FIELD(W_CodeOrgSel,"/",y) : '"'
	NEXT y
    
    W_Req = W_Req : ' AND AVEC 5 <= "' : w_datefin : '" AND AVEC 6 >= "': w_datedeb : '" AND AVEC 18 = "" PAR NomPrenomAide PAR CodAideAccord'
	
	EXECUTE W_Req
	EXECUTE 'SAUVE-LISTE W_ReqAccord'
	EXECUTE "LISTE W_ReqAccord" RETURNING MSGCODE
	
    W_FIN="FAUX"
	
	w_compte=0
	w_compte2=0
	
    IF MSGCODE<1>=209 THEN
		W_FIN="VRAI"
	END ELSE
		SELECT F.ACCORD TO W_ReqAccord
		
		*ecriture des entetes
		ENR_FICHIERIMPORT<1> = "NFINESS;TYPE AIDE;PERIODE;NAPA BENIFICIAIRE;TYPE PRESTATION;VOLUME/MONTANT"
		
        LOOP
			READNEXT W_CleAccord FROM W_ReqAccord ELSE W_FIN = "VRAI"
		WHILE W_FIN = "FAUX" DO
			READ ENR_ACCORD FROM F.ACCORD, W_CleAccord THEN
		        W_Req = ""
		        W_Req = "SSELECT FACTURORG AVEC AccordFacturOrg = " : CHAR(34) : W_CleAccord : CHAR(34) : " AND AVEC 10 = " : CHAR(34) : w_dateperiode : CHAR(34)
		        
				EXECUTE W_Req
				EXECUTE 'SAUVE-LISTE W_ReqFacturOrg'
				EXECUTE "LISTE W_ReqFacturOrg" RETURNING MSGCODE
					
				IF MSGCODE<1>#209 THEN
					
					SELECT F.FACTURORG TO W_ReqFacturOrg
					
					W_FIN2="FAUX"
					W_FIN3="FAUX"
					LOOP
						READNEXT W_CleFacturOrg FROM W_ReqFacturOrg ELSE W_FIN2 = "VRAI"
					WHILE W_FIN2 = "FAUX" DO
						READ ENR_FACTURORG FROM F.FACTURORG, W_CleFacturOrg THEN
							IF W_AncienAide = "" THEN W_AncienAide = W_CleFacturOrg[1,5]
							IF W_AncienAide <> W_CleFacturOrg[1,5] THEN
								GOSUB 10
							END
							
							FOR g = 1 TO DCOUNT(W_CodeOrgSel,"/")
				                IF FIELD(W_CodeOrgSel,"/",g) = ENR_ACCORD<1> THEN
				                    w_indice = g
				                END
				            NEXT g
							
							W_RF1=0
							FOR J=1 TO DCOUNT(ENR_FACTURORG<1>, CHAR(253))
								W_RF1 = W_RF1+ENR_FACTURORG<1,J>
							NEXT J
				            IF ENR_FACTURORG<5> = "" THEN
				                W_RF2 = 0
				            END ELSE
				                W_RF2 = ENR_FACTURORG<5>
				            END
							W_RF3 = 0
							FOR J=1 TO DCOUNT(ENR_FACTURORG<4>, CHAR(253))
								W_RF3 = W_RF3 + ENR_FACTURORG<4,J>
							NEXT J
				            IF ENR_FACTURORG<8> = "" THEN
				                W_RF4 = 0
				            END ELSE
				                W_RF4 = ENR_FACTURORG<8>
				            END
							
				            w_nom = TRIM(ENR_ACCORD<2>[1,6])
				            w_nom=CONVERT("-","",w_nom)
							w_nom=CONVERT("/","",w_nom)
							w_nom=CONVERT(".","",w_nom)

							w_volume=W_RF1+W_RF2
							            
							IF ENR_ACCORD<2> # "" THEN
								IF TRIM(w_nom) <> TRIM(w_nomprec) OR (TRIM(w_nom) = TRIM(w_nomprec) AND FIELD(Lst_Prest,"/",w_indice)[1, 3] <> w_prest) THEN
									w_volumecumul=w_volume
									IF w_volume>0 THEN w_cumulmontant = w_cumulmontant+W_RF3+W_RF4
									w_volume=w_volume/100
									w_volume = w_volume "R2,"
									ENR_FICHIERIMPORT<z> = W_NumFiness : ";APA;" : w_dateperiode : ";" : TRIM(w_nom) : ";" : FIELD(Lst_Prest,"/",w_indice)[1, 3] : ";" : w_volume
									w_cumulheure = w_cumulheure+W_RF1+W_RF2
									z = z + 1
									w_nomprec = w_nom
									w_prest = FIELD(Lst_Prest,"/",w_indice)[1, 3]
								END ELSE
									z=z-1
									w_volumecumul=w_volumecumul+w_volume
									IF w_volume>0 THEN w_cumulmontant = w_cumulmontant+W_RF3+W_RF4
									w_volume=w_volume/100
									w_volume = w_volume "R2,"									
									ENR_FICHIERIMPORT<z> = W_NumFiness : ";APA;" : w_dateperiode : ";" : TRIM(w_nom) : ";" : FIELD(Lst_Prest,"/",w_indice)[1, 3] : ";" : w_volume
									w_cumulheure = w_cumulheure+W_RF1+W_RF2
									z = z + 1
									w_nomprec = w_nom
									w_prest = FIELD(Lst_Prest,"/",w_indice)[1, 3]
								END
							END
							EXECUTE 'EFFACER-LISTE W_ReqFacturOrg'
				            W_FIN2="VRAI"
						END
					REPEAT
				END ELSE
					*IF W_FIN2="VRAI" AND W_FIN3="FAUX" THEN
						*cas ou le volume=0
				        
				        FOR g = 1 TO DCOUNT(W_CodeOrgSel,"/")
				            IF FIELD(W_CodeOrgSel,"/",g) = ENR_ACCORD<1> THEN
				                w_indice = g
				            END
				        NEXT g
						
				        w_nom = TRIM(ENR_ACCORD<2>[1, 6])
						w_nom=CONVERT("-","",w_nom)
						w_nom=CONVERT("/","",w_nom)
						w_nom=CONVERT(".","",w_nom)
					
						IF ENR_ACCORD<2> # "" THEN
							IF TRIM(w_nom) <> TRIM(w_nomprec) OR (TRIM(w_nom) = TRIM(w_nomprec) AND FIELD(Lst_Prest,"/",w_indice)[1, 3] <> w_prest) THEN
								ENR_FICHIERIMPORT<z> = W_NumFiness : ";APA;" : w_dateperiode : ";" : w_nom : ";" : FIELD(Lst_Prest,"/",w_indice)[1, 3] : ";0,00"
								z = z + 1
								w_nomprec = w_nom
								w_prest = FIELD(Lst_Prest,"/",w_indice)[1, 3]
							END
						END
					*END
				END
			END
		REPEAT
		GOSUB 10
		*on genere le fichier d'importation
		WRITE ENR_FICHIERIMPORT ON F.FACTURATION, W_CleFichierImport
		
		W_StrCumulHeure = w_cumulheure[1, LEN(TRIM(w_cumulheure)) - 2] : "," : w_cumulheure[LEN(TRIM(w_cumulheure)) - 1, 2]
		w_strcumulmontant = w_cumulmontant[1, LEN(TRIM(w_cumulmontant)) - 2] : "," : w_cumulmontant[LEN(TRIM(w_cumulmontant)) - 1, 2]
		
		*Mikael modifier le 23/02/2007
		*obligation de mettre 2 dcimales
			IF W_StrCumulHeure = "" OR W_StrCumulHeure = 0 THEN W_StrCumulHeure = "0,00"
			IF w_strcumulmontant = "" OR w_strcumulmontant = 0 THEN w_strcumulmontant = "0,00"
		* fin mikael
		
		*on genere le rapport de fin de traitement
		ENR_RAPPORT<1> = "Nombre d'enregistrements: " : z - 2
		ENR_RAPPORT<2> = "Nombre d 'heures: " : W_StrCumulHeure
		ENR_RAPPORT<3> = "Montant  payer: " : w_strcumulmontant
		
		WRITE ENR_RAPPORT ON F.FACTURATION, "Rapport" : W_CleFichierImport[1, 12] : ".txt"
		
		W_ReqFacturOrg=""
		
	END
	
	W_ReqAccord=""
	EXECUTE 'EFFACER-LISTE W_ReqAccord'	
	
STOP
********************************
10
	W_Cumul=0
	W_NumAPA=""
	I=z
	LOOP
		I=I-1
		IF W_NumAPA="" THEN W_NumAPA=FIELD(ENR_FICHIERIMPORT<I>,";",4)
	WHILE W_NumAPA=FIELD(ENR_FICHIERIMPORT<I>,";",4) DO
		W_Cumul=W_Cumul+FIELD(ENR_FICHIERIMPORT<I>,";",6)
	REPEAT
	K=I+1
	
	IF W_Cumul=0 THEN
		FOR I=K TO z-1
			ENR_FICHIERIMPORT<I>=""
		NEXT I
		z=K
	END
	
	W_AncienAide = W_CleFacturOrg[1,5]
RETURN
