**********************************************************
*  gnration du fichier FLUXCOMPTABLES  partir de 
*  FACTURORG en attente
*  Vanessa
*  DECEMBRE 2006
**********************************************************

* Ouvertures des fichiers

EXECUTE "DATE.FORMAT"

OPEN "","CIVILAIDE" TO F.CIVILAIDE ELSE PRINT "OUVERTURE CIVILAIDE" ;* en lecture
OPEN "","COMPTESPARTICULIERS" TO F.COMPTESPARTICULIERS ELSE PRINT "OUVERTURE COMPTESPARTICULIERS" ;* en lecture
OPEN "","FACTURAIDE" TO F.FACTURAIDE ELSE PRINT "OUVERTURE FACTURAIDE" ;* en lecture
OPEN "","FACTURORG" TO F.FACTURORG ELSE PRINT "OUVERTURE FACTURORG" ;* en lecture
OPEN "","FEDEASSOC" TO F.FEDEASSOC ELSE PRINT "OUVERTURE FEDEASSOC" ;* en lecture
OPEN "","FLUXCOMPTABLES" TO F.FLUXCOMPTABLES ELSE PRINT "OUVERTURE FLUXCOMPTABLES" ;* en lecture criture
OPEN "","FLUXPARAM" TO F.FLUXPARAM ELSE PRINT "OUVERTURE FLUXPARAM" ;* en lecture
OPEN "","ORGPRISECHARGE" TO F.ORGPRISECHARGE ELSE PRINT "OUVERTURE ORGPRISECHARGE" ;* en lecture

*********************************************************
* initialisation des variables
W_ReqFact=""
W_ReqFactAide=""
W_ReqFede=""
W_TabFede=""
*********************************************************
* Recuperation des arguments

PROCREAD ARGUMENTS ELSE STOP
W_Periode=FIELD(ARGUMENTS," ",2)
W_Entite=FIELD(ARGUMENTS," ",3)
*********************************************************
* PROGRAMME PRINCIPAL
   EXECUTE "SET-DEC ,"
   EXECUTE "SET-THOUS ."

   GOSUB 200

   READ ENR_COMPTESPARTICULIERS FROM F.COMPTESPARTICULIERS,W_Entite ELSE ENR_COMPTESPARTICULIERS=""

   EXECUTE 'SELECT FACTURORG AVEC 9 = ""'
   EXECUTE 'SAUVE-LISTE W_ReqFact'
   EXECUTE "LISTE W_ReqFact" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.FACTURORG TO W_ReqFact
  
      W_Fin="FAUX"

      LOOP
         READNEXT W_CleFact FROM W_ReqFact ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO

   		GOSUB 100

      REPEAT
   END

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

STOP

*****************************************************************************
*  generation flux comptables

100

 	READ ENR_FACTURORG FROM F.FACTURORG,W_CleFact ELSE ENR_FACTURORG=""
   	READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_CleFact[5,5] ELSE ENR_CIVILAIDE=""
	READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,W_CleFact[1,3] ELSE ENR_ORGPRISECHARGE=""

	W_CountFede=DCOUNT(W_TabFede,CHAR(254))
	FOR iFede=1 TO W_CountFede
		IF W_TabFede<iFede,2>=ENR_CIVILAIDE<40>[1,3] THEN
			W_Assoc=W_TabFede<iFede,1>
			EXIT
		END
	NEXT iFede
   	READ ENR_FLUXPARAM FROM F.FLUXPARAM,W_Assoc ELSE ENR_FLUXPARAM=""

	W_Fichier=""
	W_Fichier<1>=""
	W_Fichier<2>=W_CleFact
	W_Fichier<3>=""
	W_Fichier<4>=W_CleFact[1,3]

        * libell de l'organisme
	IF W_CleFact[1,3] # "000" THEN
		W_Fichier<5>=ENR_ORGPRISECHARGE<1>
	END ELSE
		W_Fichier<5>="TAUX PRESTATION"
	END

	* nbre d'heures
	IF ENR_FACTURORG<1,1>="" THEN
		W_Heure=0
	END ELSE
		W_Heure=ENR_FACTURORG<1,1>
	END
	IF ENR_FACTURORG<5>#"" THEN
		W_Heure=W_Heure+ENR_FACTURORG<5>
	END
	W_Fichier<6>=W_Heure

        * montant organisme
	IF ENR_FACTURORG<4,1>="" THEN
		W_MontOrg=0
	END ELSE
		W_MontOrg=ENR_FACTURORG<4,1>
	END
	IF ENR_FACTURORG<8>#"" THEN
		W_MontOrg=W_MontOrg+ENR_FACTURORG<8>
	END
	IF ENR_ORGPRISECHARGE<39>="M" THEN
		IF ENR_FACTURORG<4,2>#"" THEN
			W_MontOrg=W_MontOrg+ENR_FACTURORG<4,2>
		END
	END
	W_Fichier<7>=W_MontOrg

	W_Fichier<8>=ENR_FLUXPARAM<13>
	W_Fichier<9>=ENR_FLUXPARAM<12>
	IF W_CleFact[1,3] # "000" THEN
		W_Fichier<10>=ENR_ORGPRISECHARGE<22>
		W_Fichier<11>=ENR_ORGPRISECHARGE<23>
	END ELSE
		W_Fichier<10>=""
		W_Fichier<11>=ENR_COMPTESPARTICULIERS<10>
	END

	W_Fichier<12>=ENR_FLUXPARAM<6>

	W_CountOrg=DCOUNT(ENR_FLUXPARAM<10>,CHAR(253))
	FOR iOrg=1 TO W_CountOrg
		IF ENR_FLUXPARAM<10,iOrg>=W_CleFact[1,3] THEN	
			EXIT
		END
	NEXT iOrg
	IF iOrg > W_CountOrg THEN
		W_Fichier<13>=ENR_FLUXPARAM<9>
	END ELSE
		W_Fichier<13>=ENR_FLUXPARAM<11,iOrg>
	END

	W_NumOrdre="01"
	W_Trouve="FAUX"
   	LOOP
  	UNTIL W_Trouve#"FAUX" DO
		W_CleFlux=W_CleFact[5,5]:W_Assoc:ENR_CIVILAIDE<40>[1,3]:W_CleFact[13,6]:W_NumOrdre
   		READ ENR_FLUXCOMPTABLES FROM F.FLUXCOMPTABLES,W_CleFlux THEN
			IF W_CleFact=ENR_FLUXCOMPTABLES<2> THEN
				W_Trouve="VRAI1"
			END ELSE
				W_NumOrdre=W_NumOrdre+1 "R%2"
				W_Trouve="FAUX"
			END
		END ELSE
			W_Trouve="VRAI2"
		END
	REPEAT
	IF W_Trouve="VRAI2" THEN
		GOSUB 300
		ENR_FLUXCOMPTABLES=""
		ENR_FLUXCOMPTABLES=W_Fichier
		WRITE ENR_FLUXCOMPTABLES ON F.FLUXCOMPTABLES,W_CleFlux
	END

RETURN

*****************************************************************************
*  REQUETE FEDEASSOC

200

   EXECUTE 'SELECT FEDEASSOC'
   EXECUTE 'SAUVE-LISTE W_ReqFede'
   EXECUTE "LISTE W_ReqFede" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.FEDEASSOC TO W_ReqFede
  
      iFede=1
      W_Fin="FAUX"

      LOOP
         READNEXT W_CleFede FROM W_ReqFede ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         READ ENR_FEDEASSOC FROM F.FEDEASSOC,W_CleFede ELSE ENR_FEDEASSOC=""

	 W_CountFede=DCOUNT(ENR_FEDEASSOC<41>,CHAR(253))
	 FOR iTemp=1 TO W_CountFede

	 	W_TabFede<iFede,1>=W_CleFede
	 	W_TabFede<iFede,2>=ENR_FEDEASSOC<41,iTemp>
		iFede=iFede+1
	 NEXT iTemp

      REPEAT
   END

RETURN

*****************************************************************************
*  REQUETE FACTURAIDE

300

   EXECUTE 'SELECT FACTURAIDE AVEC CodeAideFact = "':W_CleFact[5,5]:'" AND AVEC PeriodeCleFactAide = "':W_Periode:'" AND AVEC 15 = "':W_CleFact[5,8]:'" PAR-DECR @ID'
   EXECUTE 'SAUVE-LISTE W_ReqFactAide'
   EXECUTE "LISTE W_ReqFactAide" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.FACTURAIDE TO W_ReqFactAide

      W_Fin1="FAUX"
      W_ANCIEN=""

      LOOP
         READNEXT W_CleFactAide FROM W_ReqFactAide ELSE W_Fin1 = "VRAI"
      WHILE W_Fin1 = "FAUX" DO
	 READ ENR_FACTURAIDE FROM F.FACTURAIDE,W_CleFactAide ELSE ENR_FACTURAIDE=""

      	 IF W_ANCIEN # W_CleFactAide[1,25] THEN
		W_ANCIEN=W_CleFactAide[1,25]

	 	W_CountLigne=DCOUNT(ENR_FACTURAIDE<1>,CHAR(253))
	 	FOR iTemp=1 TO W_CountLigne
			IF ENR_FACTURAIDE<15,iTemp>=W_CleFact[5,8] AND W_CleFact[13,6] = ENR_FACTURAIDE<1,iTemp> THEN

				W_Fichier<14>=W_CleFactAide[16,10]
				W_Fichier<15>=ENR_CIVILAIDE<2>:" ":ENR_CIVILAIDE<3>
				W_Fichier<16>=ENR_FACTURAIDE<2,iTemp>
				W_Fichier<17>=ENR_FACTURAIDE<5,iTemp>
				W_Fichier<18>=W_CleFactAide[1,5]

	 			W_CountOrg=DCOUNT(ENR_FLUXPARAM<4>,CHAR(253))
				FOR iOrg=1 TO W_CountOrg
					IF ENR_FLUXPARAM<4,iOrg>=W_CleFact[1,3] THEN	
						EXIT
					END
				NEXT iOrg
				IF iOrg > W_CountOrg THEN
					W_Fichier<19>=ENR_FLUXPARAM<3>
				END ELSE
					W_Fichier<19>=ENR_FLUXPARAM<5,iOrg>
				END
				W_Fichier<36>=W_Periode
				EXIT
			END

	 	NEXT iTemp
	  END

      REPEAT
   END

RETURN