*PARAMETRES*
*Extraction informations mandataire APA*
*Code entite (999)|3N|TXT|O*
*Periode de debut (JJ/MM/AAAA)|10X|DTE|O*
*Periode de fin (JJ/MM/AAAA)|10X|DTE|O*
*Code Organisme (999)|3N|TXT|O*
*FIN PARAMETRES*

SUBROUTINE EXTRACTINFOMANDATAIRE(RETURNVAL,PARAMETRES,W_Sortie)
EXECUTE "SET-DEC ,"
EXECUTE "SET-THOUS ."
EXECUTE "DATE.FORMAT"

ENR_DETAILPREST = ""
ENR_CIVILAIDANT = ""

OPEN "","ACCORD" TO F.ACCORD ELSE RETURN
OPEN "","CONTRAT" TO F.CONTRAT ELSE RETURN
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE RETURN
OPEN "","CIVILAIDE" TO F.CIVILAIDE ELSE RETURN
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE RETURN
OPEN "","FUSION" TO F.FUSION ELSE RETURN
OPEN "","RUBSAISIE" TO F.RUBSAISIE ELSE RETURN


W_CodeEntite = PARAMETRES<1>
W_DD = PARAMETRES<2>
W_DF = PARAMETRES<3>
W_Org = PARAMETRES<4>

W_DD = ICONV(W_DD,"D4/")
W_DF = ICONV(W_DF,"D4/")

W_PeriodeDeb=PARAMETRES<2>[7,4]:PARAMETRES<2>[4,2]
W_PeriodeFin=PARAMETRES<3>[7,4]:PARAMETRES<3>[4,2]

W_Str = 'SELECT ACCORD AVEC EntiteAccord="':W_CodeEntite:'" AND AVEC 1= "':W_Org:'" AND AVEC 5 <= "':W_DF:'" AND AVEC 6 >= "':W_DD:'" AND AVEC 18 = ""'

EXECUTE W_Str
EXECUTE 'SAUVE-LISTE W_Str' 
EXECUTE "LISTE W_Str" RETURNING MSGCODE

IF MSGCODE<1> # 209 THEN
	SELECT F.ACCORD TO W_Str
	W_TabDonnees<1> = "Code aidé;Nom;Prenom;DateDebutAccord;DateFinAccord;Nb Hres Allouees;CodeAidant;NomAidant;PrenomAidant;DateDebutContrat;DateFinContrat;TypeCOntrat;PeriodeBulletin;HresBrutes;HresTravaillées;MontantBrut;ChargesPatronales"	
	   
	W_Fini="FAUX"
	LOOP     	
		READNEXT W_Cle FROM W_Str ELSE W_Fini="VRAI"
	WHILE W_Fini="FAUX" DO
		READ ENR_ACCORD FROM F.ACCORD,W_Cle THEN
			READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_Cle[1,5] ELSE ENR_CIVILAIDE=""
			W_Ligne=W_Cle[1,5]:";":ENR_CIVILAIDE<2>:";":ENR_CIVILAIDE<3>:";":OCONV(ENR_ACCORD<5>,"D4/"):";":OCONV(ENR_ACCORD<6>,"D4/"):";":OCONV(ENR_ACCORD<9>,"MR2")
			
			W_ReqBs = 'SELECT DETAILCALCUL AVEC CodeAideDetailCalcul = "':W_Cle[1,5]:'" AND AVEC PeriodeDetailCalcul <= "':W_PeriodeFin:'" AND AVEC PeriodeDetailCalcul >="':W_PeriodeDeb:'" PAR PeriodeDetailCalcul'

			EXECUTE W_ReqBs
			EXECUTE 'SAUVE-LISTE W_ReqBs' 
			EXECUTE "LISTE W_ReqBs" RETURNING MSGCODE1
			
			IF MSGCODE1<1> # 209 THEN
				SELECT F.DETAILCALCUL TO W_ReqBs
				
				W_FinBs="FAUX"
				LOOP     	
					READNEXT W_CleBS FROM W_ReqBs ELSE W_FinBs="VRAI"
				WHILE W_FinBs="FAUX" DO
					READ ENR_DETAILCALCUL FROM F.DETAILCALCUL ,W_CleBS THEN
						W_LigneBs=""
						READ ENR_CIVILAIDANT FROM F.CIVILAIDANT ,W_CleBS[1,5] ELSE ENR_CIVILAIDANT=""
						READ ENR_CONTRAT FROM F.CONTRAT,W_CleBS[1,8] ELSE ENR_CONTRAT=""
						W_LigneBs=W_Ligne:";":W_CleBS[1,5]:";":ENR_CIVILAIDANT<2>:";":ENR_CIVILAIDANT<3>:";":OCONV(ENR_CONTRAT<7>,"D4/")
						
						IF ENR_CONTRAT<8>#"" THEN
							W_LigneBs=W_LigneBs:";":OCONV(ENR_CONTRAT<8>,"D4/")
						END ELSE
							W_LigneBs=W_LigneBs:";"
						END
						W_LigneBs=W_LigneBs:";":ENR_CONTRAT<4>:";":W_CleBS[9,6]
						
						W_MontantChargesPatro=0
						W_MaxChargepatro=DCOUNT(ENR_DETAILCALCUL<14>,CHAR(253))
						FOR IChargepatro = 1 TO W_MaxChargepatro
							W_MontantChargesPatro=W_MontantChargesPatro + ENR_DETAILCALCUL<14,IChargepatro>
						NEXT IChargepatro
						
		
						W_HresTrav=0
						W_MaxRubSaisie=DCOUNT(ENR_DETAILCALCUL<2>,CHAR(253))
						FOR IRubSaisie = 1 TO W_MaxRubSaisie
							READ ENR_RUBSAISIE FROM F.RUBSAISIE, ENR_DETAILCALCUL<2,IRubSaisie> THEN
								IF ENR_RUBSAISIE<2> = 3 OR ENR_RUBSAISIE<2> = 4 THEN
									W_HresTrav=W_HresTrav + ENR_DETAILCALCUL<3,IRubSaisie>
								END
							END
						NEXT IRubSaisie
						
						W_TabDonnees<-1> = W_LigneBs:";":OCONV(ENR_DETAILCALCUL<6>,"MR2"):";":OCONV(W_HresTrav,"MR2"):";":OCONV(ENR_DETAILCALCUL<7>,"MR2"):";":OCONV(W_MontantChargesPatro,"MR2")
					END
				REPEAT
			END
		END
	REPEAT
	W_Sortie="Le fichier ExtractionInfoAides.csv a été généré dans le répertoire FUSION de la base."
	WRITE W_TabDonnees TO F.FUSION,"ExtractionInfoAides.csv"
END	ELSE
	W_Sortie="Aucun résultat."
END
		
RETURN