*********************************************************	
*  gnration du fichier FLUXCOMPTABLES  partir des	*
*  FACTURAIDE sans rfrence aux accords		*
*  Programme chaine  partir d'un projet VB		*
*  Vanessa						*
*  SEPTEMBRE 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 "","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
*********************************************************
* initialisation des variables

W_ReqFlux=""
W_ReqFede=""
W_TabFede=""
W_ReqFact=""
W_NumOrdre="01"
*********************************************************
* Recuperation des arguments

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

   EXECUTE 'SELECT FLUXCOMPTABLES AVEC 1 = "':W_PeriodeTrait:'" AND AVEC 14 # "" AND AVEC 3 = ""'
   EXECUTE 'SAUVE-LISTE W_ReqFlux'
   EXECUTE "LISTE W_ReqFlux" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.FLUXCOMPTABLES TO W_ReqFlux
  
      W_Fin="FAUX"

      LOOP
         READNEXT W_CleFlux FROM W_ReqFlux ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
      		DELETE F.FLUXCOMPTABLES,W_CleFlux
      REPEAT
   END

   GOSUB 10


   EXECUTE 'SELECT FACTURAIDE AVEC PeriodeCleFactAide = "':W_PeriodeTrait:'" AND AVEC 15 = "" OR = "R]" PAR-DECR @ID'
   EXECUTE 'SAUVE-LISTE W_ReqFact'
   EXECUTE "LISTE W_ReqFact" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.FACTURAIDE TO W_ReqFact
  
      W_Fin="FAUX"
      W_ANCIEN="" 

      LOOP
         READNEXT W_CleFact FROM W_ReqFact ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
	READ ENR_FACTURAIDE FROM F.FACTURAIDE,W_CleFact ELSE ENR_FACTURAIDE=""

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

	 	W_CountLigne=DCOUNT(ENR_FACTURAIDE<1>,CHAR(253))
	 	FOR iTemp=1 TO W_CountLigne
			IF ENR_FACTURAIDE<15,iTemp>="" OR ENR_FACTURAIDE<15,iTemp>[1,1]="R" THEN

   				READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_CleFact[1,5] ELSE ENR_CIVILAIDE=""
				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_PeriodeTrait
				IF ENR_FACTURAIDE<15,iTemp>[1,1]="R" THEN
					W_Fichier<4>=ENR_FACTURAIDE<15,iTemp>[2,3]
				END
				W_Fichier<14>=W_CleFact[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_CleFact[1,5]

            			BEGIN CASE
               				CASE ENR_FACTURAIDE<15,iTemp>[1,1]="R"
 						W_Fichier<19>=ENR_FLUXPARAM<1>
               				CASE ENR_FACTURAIDE<15,iTemp>="" AND ENR_FACTURAIDE<2,iTemp>="COTISATION ANNUELLE"
 						W_Fichier<19>=ENR_FLUXPARAM<2>
					CASE 1
						W_Fichier<19>=ENR_FACTURAIDE<6,iTemp>
				END CASE
				W_Fichier<36>=W_PeriodeTrait

				W_NumOrdre="01"
				W_Trouve="FAUX"
   				LOOP
  			 	UNTIL W_Trouve="VRAI" DO
					W_CleFlux=W_CleFact[1,5]:W_Assoc:ENR_CIVILAIDE<40>[1,3]:ENR_FACTURAIDE<1,iTemp>:W_NumOrdre
   					READ ENR_FLUXCOMPTABLES FROM F.FLUXCOMPTABLES,W_CleFlux THEN
						W_NumOrdre=W_NumOrdre+1 "R%2"
						W_Trouve="FAUX"
					END ELSE
						W_Trouve="VRAI"
					END
				REPEAT

				ENR_FLUXCOMPTABLES=W_Fichier
   				WRITE ENR_FLUXCOMPTABLES ON F.FLUXCOMPTABLES,W_CleFlux

			END
		NEXT iTemp

	 END
      REPEAT
   END

STOP

*****************************************************************************
*  REQUETE FEDEASSOC
10

   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
