************************************
* CALCUL FACTURE INTERMEDIAIRE     *
* 25/10/2001 ALAIN                 *
************************************

***************************
* Ouvertures des fichiers *
***************************
EXECUTE 'DATE.FORMAT'
EXECUTE 'SET-DEC ,'
EXECUTE 'SET-THOUS .'

OPEN "","ACTIVITES" TO F.ACTIVITES ELSE STOP
OPEN "","ACTIVITESAIDE" TO F.ACTIVITESAIDE ELSE STOP
OPEN "","ACTIVITESBISAIDE" TO F.ACTIVITESBISAIDE ELSE STOP
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE STOP
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","COMPLFACT" TO F.COMPLFACT ELSE STOP
OPEN "","COMPTESPARTICULIERS" TO F.COMPTESPARTICULIERS ELSE STOP
OPEN "","COTISANAIDE" TO F.COTISANAIDE ELSE STOP
OPEN "","DETAILINTER" TO F.DETAILINTER ELSE STOP
OPEN "","DETAILINTERINV" TO F.DETAILINTERINV ELSE STOP
OPEN "","ELTSFACTAIDE" TO F.ELTSFACTAIDE ELSE STOP
OPEN "","FACTURAIDE" TO F.FACTURAIDE ELSE STOP
OPEN "","FACTURAIDETRIM" TO F.FACTURAIDETRIM ELSE STOP
OPEN "","MISSIONSAIDANT" TO F.MISSIONSAIDANT ELSE STOP
OPEN "","NUMEROFACT" TO F.NUMEROFACT ELSE STOP
OPEN "","PERIODESPAIE" TO F.PERIODESPAIE ELSE STOP
OPEN "","RESPONSABLE" TO F.RESPONSABLE ELSE STOP
OPEN "","RUBSAISIE" TO F.RUBSAISIE ELSE STOP
OPEN "","SECTEUR" TO F.SECTEUR ELSE STOP
OPEN "","STATACTAIDE" TO F.STATACTAIDE ELSE STOP
OPEN "","TABLES" TO F.TABLES ELSE STOP
OPEN "","TARIFSFACTINT" TO F.TARIFSFACTINT ELSE STOP
******************************
* Recuperation des arguments *
******************************
PROCREAD ARGUMENTS ELSE
	PRINT "Procread"
	STOP
END
W_CodAssoc=FIELD(ARGUMENTS,"|",2)
W_CodSelect=FIELD(ARGUMENTS,"|",3)
W_Tri=FIELD(ARGUMENTS,"|",4)
W_CboAnneeMois=FIELD(ARGUMENTS,"|",5)
W_Aide=FIELD(ARGUMENTS,"|",6)

*********************
* TRAITEMENT GLOBAL *
*********************

* Generation du fichier DETAILINTERINV *
GOSUB 100

* Selection et Tri de DETAILINTERINV *
GOSUB 200

STOP

****************************************
* Generation du fichier DETAILINTERINV *
****************************************
100

EXECUTE 'VIDER-FICHIER DETAILINTERINV'

W_RequeteDetailInter = ""
EXECUTE 'SELECT DETAILINTER AVEC NumOrdreMissionDetailInter # "000" AND AVEC 0 = "[':W_CboAnneeMois:'"'
EXECUTE 'SAUVE-LISTE W_RequeteDetailInter'
EXECUTE "LISTE W_RequeteDetailInter" RETURNING MSGCODE

IF MSGCODE<1> = 209 THEN STOP

SELECT F.DETAILINTER TO W_RequeteDetailInter

W_FIN = "FAUX"
ENR_DETAILINTERINV = ""
W_NbAide=0
i=0
LOOP
	READNEXT W_Cle FROM W_RequeteDetailInter ELSE W_FIN = "VRAI"
WHILE W_FIN = "FAUX"

      READ ENR_DETAILINTER FROM F.DETAILINTER,W_Cle ELSE ENR_DETAILINTER = ""
	READ ENR_MISSIONSAIDANT FROM F.MISSIONSAIDANT,W_Cle[1,5] ELSE ENR_MISSIONSAIDANT = ""

	W_NbAide=DCOUNT(ENR_MISSIONSAIDANT<1>,CHAR(253))
	FOR i = 1 TO W_NbAide
	    * N de mission
          IF ENR_MISSIONSAIDANT<11,i> = W_Cle[9,3] AND ENR_DETAILINTER<6,1>[1,3] = W_CodAssoc THEN
		 W_CleInv=ENR_MISSIONSAIDANT<1,i>:W_Cle
		 WRITE ENR_DETAILINTERINV ON F.DETAILINTERINV,W_CleInv
	    END
	NEXT i

REPEAT

RETURN

**************************************
* Selection et Tri de DETAILINTERINV *
**************************************
200
W_RequeteInter = ""
W_Req = 'SSELECT DETAILINTERINV'

IF W_CodSelect # "VIDE" THEN
   IF W_CodSelect[4,1] = "R" THEN
	W_Req = W_Req:' AVEC CodeRespInterInv = "':W_CodSelect[1,3]:'"'
   END ELSE
	W_Req = W_Req:' AVEC CodeSectInterInv = "':W_CodSelect[1,3]:'"'
   END
END

IF W_Tri = "R" THEN
	W_Req = W_Req:' PAR ResponsableInterInv'
END ELSE
	IF W_Tri = "S" THEN
		W_Req = W_Req:' PAR SecteurInterInv'
	END
END

W_Req = W_Req:' PAR NomPrenomAideInterInv'

EXECUTE W_Req

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


IF MSGCODE<1> # 209 THEN
	* Generation des factures aids dans FACTURAIDE *
	GOSUB 300
END

RETURN

*************************************************
* Generation des factures aids dans FACTURAIDE *
*************************************************
300
READ ENR_ASSOCIATION FROM F.ASSOCIATION,W_CodAssoc ELSE ENR_ASSOCIATION = ""
READ ENR_NUMERO FROM F.NUMEROFACT,W_CodAssoc ELSE ENR_NUMERO = ""
READ ENR_PERIODE FROM F.PERIODESPAIE,'1' ELSE ENR_PERIODE = ""
READ ENR_CPTEPART FROM F.COMPTESPARTICULIERS,W_CodAssoc ELSE ENR_CPTEPART = ""
READ ENR_TXTVA FROM F.TABLES,'TAUXTVA' ELSE ENR_TXTVA = ""

W_TypeAct = "I"
W_CodeComptaCoti = ENR_CPTEPART<2>
W_NumFact = ENR_NUMERO<5>
NumOrg = ENR_NUMERO<6>
W_ActivitesAide = ""

I = 0
W_CodAide = ""
W_Aide = ""
ENR_FACTURAIDE = ""
SELECT F.DETAILINTERINV TO W_RequeteInter

W_FIN = "FAUX"

LOOP
111
	READNEXT CleDetailInv FROM W_RequeteInter ELSE W_FIN = "VRAI"
WHILE W_FIN = "FAUX"
	W_CodAide = CleDetailInv[1,5]

	IF W_CodAide # W_Aide THEN
		IF I <> 0 THEN
                   * Mois prcdents < au plancher
                   GOSUB 310

		   * Traitement de la COTISATION ANNUELLE DE L'AIDE *
		   GOSUB 800


		   * Mise a jour de FACTURAIDE avec COMPLFACT *
		   GOSUB 1000

   		   ENR_FACTURAIDE<15> = ""

		   Montant = 0
                   W_SauveMontant=0
	   	   I = 1
		   LOOP
		   WHILE ENR_FACTURAIDE<5,I> <> ""
			Montant = Montant + ENR_FACTURAIDE<5,I>
			I = I + 1
		   REPEAT
                   W_SauveMontant=Montant
		   IF ENR_FACTURAIDE<8> = "" OR ENR_FACTURAIDE<8> = 0 THEN
		   	ENR_FACTURAIDE<8> = 0
			ENR_FACTURAIDE<9> = 0
		   END ELSE
			Montant = ((Montant / 100) * (ENR_FACTURAIDE<8> / 100))
			Montant = INT(Montant)
			ENR_FACTURAIDE<9> = Montant
                        W_SauveMontant=Montant+W_SauveMontant
  		   END
		   ENR_FACTURAIDE<11> = 0
		   IF W_SauveMontant < 0 THEN
			* Mise a jour de COMPLFACT AVEC DES AVOIRS *
			W_Avoir = W_SauveMontant
			GOSUB 1100
			GOSUB 301
   		   END ELSE
			IF ENR_NUMERO<8> # "" THEN
				IF ENR_NUMERO<8> <= W_SauveMontant THEN
					GOSUB 301
				END ELSE
					* on met la facture en attente
					ENR_FACTURAIDETRIM = ENR_FACTURAIDE
					WRITE ENR_FACTURAIDETRIM TO F.FACTURAIDETRIM,W_Aide:W_CodAssoc:"I"
				END
			END ELSE
				GOSUB 301
			END

		   END

		   WRITE ENR_STATACTAIDE TO F.STATACTAIDE,CleStat
		   ENR_ELTSFACTAIDE<24,W_CodAssoc> = W_CboAnneeMois
		   WRITE ENR_ELTSFACTAIDE TO F.ELTSFACTAIDE,W_Aide

		END
		W_ActivitesAide = ""
		ENR_FACTURAIDE = ""
		ENR_ELTSFACTAIDE = ""
		W_Aide = W_CodAide
		CleStat = W_Aide:W_CodAssoc:W_CboAnneeMois
		READ ENR_STATACTAIDE FROM F.STATACTAIDE,CleStat ELSE ENR_STATACTAIDE = ""
		I = 0

	END

      READ ENR_ELTSFACTAIDE FROM F.ELTSFACTAIDE,W_Aide THEN
      	IF ENR_ELTSFACTAIDE<1> # "" THEN
      		IF ENR_ELTSFACTAIDE<24,W_CodAssoc> = W_CboAnneeMois THEN
                  	GOTO 111
      		END
      	END ELSE
		ENR_ELTSFACTAIDE<1>="M"
*      		WRITEV "M" ON F.ELTSFACTAIDE,W_Aide,1
     	END
      END ELSE
	ENR_ELTSFACTAIDE<1>="M"
*      	WRITEV "M" ON F.ELTSFACTAIDE,W_Aide,1
      END 
	CleDetailInter = CleDetailInv[6,30]
	CleDetailInter = TRIM(CleDetailInter)
	READ ENR_DETAILINTER FROM F.DETAILINTER,CleDetailInter ELSE ENR_DETAILINTER = ""
	
	J = 0
	LOOP 
		J = J + 1
	WHILE ENR_DETAILINTER<1,J> # ""
	   * Remplissage de FACTURAIDE *
	   GOSUB 1200
	REPEAT
	
	
REPEAT

IF I <> 0 THEN                  
   * Mois prcdents < au plancher
   GOSUB 310

   * Traitement de la COTISATION ANNUELLE DE L'AIDE *
   GOSUB 800

	* Mise a jour de FACTURAIDE avec COMPLFACT *
	GOSUB 1000

	ENR_FACTURAIDE<15> = ""


	Montant = 0
        W_SauveMontant=0
	I = 1
	LOOP
	WHILE ENR_FACTURAIDE<5,I> <> ""
		Montant = Montant + ENR_FACTURAIDE<5,I>
		I = I + 1
	REPEAT
        W_SauveMontant=Montant

	IF ENR_FACTURAIDE<8> = "" OR ENR_FACTURAIDE<8> = 0 THEN
		ENR_FACTURAIDE<8> = 0
		ENR_FACTURAIDE<9> = 0
	END ELSE
		Montant = ((Montant / 100) * (ENR_FACTURAIDE<8> / 100))
		Montant = INT(Montant)
		ENR_FACTURAIDE<9> = Montant
                W_SauveMontant=Montant+W_SauveMontant
	END
	ENR_FACTURAIDE<11> = 0

	IF W_SauveMontant < 0 THEN
		* Mise a jour de COMPLFACT AVEC DES AVOIRS *
		W_Avoir = W_SauveMontant
		GOSUB 1100

		GOSUB 301
	END ELSE
		IF ENR_NUMERO<8> # "" THEN
			IF ENR_NUMERO<8> <= W_SauveMontant THEN
				GOSUB 301
			END ELSE
				* on met la facture en attente
				ENR_FACTURAIDETRIM = ENR_FACTURAIDE
				WRITE ENR_FACTURAIDETRIM TO F.FACTURAIDETRIM,W_Aide:W_CodAssoc:"I"
			END
		END ELSE
			GOSUB 301
		END

	END

	WRITE ENR_STATACTAIDE TO F.STATACTAIDE,CleStat
	ENR_ELTSFACTAIDE<24,W_CodAssoc> = W_CboAnneeMois
	WRITE ENR_ELTSFACTAIDE TO F.ELTSFACTAIDE,W_Aide


   * Slection des aids supprims sur le mois
   GOSUB 330
   * Slection des aids supprims qui ont encore un FACTURAIDETRIM
   GOSUB 320

   ENR_NUMERO<5> = W_NumFact
   WRITE ENR_NUMERO TO F.NUMEROFACT,W_CodAssoc
END

RETURN

**********************************************************
* crit la facture
301

	W_NumFact = W_NumFact + 1
	W_NumFact = W_NumFact "R(%10)"
	CleFacturAide = W_Aide:W_CodAssoc:'I':W_CboAnneeMois:W_NumFact:'0'
	WRITE ENR_FACTURAIDE TO F.FACTURAIDE,CleFacturAide

RETURN

**********************************************************
* Mois prcdents < au plancher
310

   READ ENR_FACTURAIDETRIM FROM F.FACTURAIDETRIM,W_Aide:W_CodAssoc:"I" THEN

      W_CountFactTri=DCOUNT(ENR_FACTURAIDETRIM<1>,CHAR(253))
      FOR iFactTri=1 TO W_CountFactTri
         ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,1,-1;ENR_FACTURAIDETRIM<1,iFactTri>)
         ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,2,-1;ENR_FACTURAIDETRIM<2,iFactTri>)
         ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,3,-1;ENR_FACTURAIDETRIM<3,iFactTri>)
         ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,4,-1;ENR_FACTURAIDETRIM<4,iFactTri>)
         ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,5,-1;ENR_FACTURAIDETRIM<5,iFactTri>)
         ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,6,-1;ENR_FACTURAIDETRIM<6,iFactTri>)
         ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,7,-1;ENR_FACTURAIDETRIM<7,iFactTri>)
         ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,14,-1;ENR_FACTURAIDETRIM<14,iFactTri>)
         ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,15,-1;ENR_FACTURAIDETRIM<15,iFactTri>)
      NEXT iFactTri

      * Valeur de la TVA
      ENR_FACTURAIDE<8>=ENR_FACTURAIDETRIM<8>

      ENR_FACTURAIDE<11>="0"

      * Liste des aidants
      W_CountFactTri=DCOUNT(ENR_FACTURAIDE<10>,CHAR(253))
      W_CountFactTriT=DCOUNT(ENR_FACTURAIDETRIM<10>,CHAR(253))

      FOR iFactTriT=1 TO W_CountFactTriT
         W_TrouveAidant="FAUX"
         FOR iFactTri=1 TO W_CountFactTri
            IF ENR_FACTURAIDE<10,iFactTri> = ENR_FACTURAIDETRIM<10,iFactTriT> THEN
               W_TrouveAidant="TRUE"
               EXIT
            END
         NEXT iFactTri
         IF W_TrouveAidant="FAUX" THEN
            ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,10,-1;ENR_FACTURAIDETRIM<10,iFactTriT>)
         END
      NEXT iFactTriT

      DELETE F.FACTURAIDETRIM,W_Aide:W_CodAssoc:"I"
   END

RETURN

*********************************************************************
* Selection des factures trimestrielles des aides supprimes
320
   ENR_FACTURAIDE=""
   W_Fini="FAUX"
   W_Avoir=0

   W_TempTrim='SSELECT FACTURAIDETRIM AVEC @ID = "':W_Aide:']" AND AVEC AideSuppFactTrim # "" AND AVEC @ID = "[':W_CodAssoc:'I"'
   IF W_CodSelect # "VIDE" THEN
      IF W_CodSelect[4,1]="R" THEN
         W_TempTrim=W_TempTrim:' AND AVEC CodeRespTrim = "':W_CodSelect[1,3]:'"'
      END ELSE
         W_TempTrim=W_TempTrim:' AND AVEC CodeSectTrim = "':W_CodSelect[1,3]:'"'
      END
   END
   IF W_Tri = "R" THEN
      W_TempTrim=W_TempTrim:' PAR RespTrim'
   END ELSE
      W_TempTrim=W_TempTrim:' PAR SectTrim'
   END
   W_TempTrim=W_TempTrim:' PAR NomAideFactTrim PAR PrenomAideFactTrim PAR @ID'
   EXECUTE W_TempTrim

   LOOP
      READNEXT W_CleFactTrim ELSE W_Fini="VRAI"
   WHILE W_Fini="FAUX" DO

      READ ENR_FACTURAIDETRIM FROM F.FACTURAIDETRIM,W_CleFactTrim THEN

         W_CleAide=W_CleFactTrim[1,5]

         ENR_FACTURAIDE=ENR_FACTURAIDETRIM

         * Mise a jour de FACTURAIDE avec COMPLFACT
         GOSUB 1000

         * Incremente le N de facture
	 W_NumFact = W_NumFact + 1
	 W_NumFact = W_NumFact "R(%10)"
        
         iMontTva=1
         W_MontTva=0
         LOOP
         WHILE ENR_FACTURAIDE<5,iMontTva> # "" DO
            W_MontTva=W_MontTva+ENR_FACTURAIDE<5,iMontTva>
            iMontTva=iMontTva+1
         REPEAT
         ENR_FACTURAIDE<9>=INT(W_MontTva*ENR_FACTURAIDE<8>/10000+1/2)
         W_Avoir=W_MontTva-ENR_FACTURAIDE<9>

         ENR_FACTURAIDE<11>="0"
         WRITE ENR_FACTURAIDE ON F.FACTURAIDE,W_CleAide:W_CodAssoc:"I":W_CboAnneeMois:W_NumFact:"0"
         ENR_FACTURAIDE=""

         IF W_Avoir < 0 THEN
            * Mise a jour de COMPLFACT avec DES AVOIRS
            GOSUB 1100
         END

         * Lecture et Maj ELTSFACTAIDE
         READ ENR_ELTSFACTAIDE FROM F.ELTSFACTAIDE,W_CleAide ELSE ENR_ELTSFACTAIDE=""
	 ENR_ELTSFACTAIDE<24,W_CodAssoc> = W_CboAnneeMois
         WRITE ENR_ELTSFACTAIDE ON F.ELTSFACTAIDE,W_CleAide
         ENR_ELTSFACTAIDE=""

         DELETE F.FACTURAIDETRIM,W_CleFactTrim
      END

   REPEAT

RETURN

*********************************************************************
* Selection des aides supprimes sur le mois
330

   ENR_FACTURAIDE=""
   W_Fini="FAUX"
   W_Avoir=0

   W_DateDebPeriode="01/":W_CboAnneeMois[5,2]:"/":W_CboAnneeMois[1,4]
   W_DateDebPeriode=ICONV(W_DateDebPeriode,"D4/")
   W_DateFinPeriode=W_DateDebPeriode+32
   W_DateFinPeriode=OCONV(W_DateFinPeriode,"D4/")
   W_DateFinPeriode="01/":W_DateFinPeriode[4,7]
   W_DateFinPeriode=ICONV(W_DateFinPeriode,"D4/")-1   

   W_TempAct='SSELECT ACTIVITESBISAIDE AVEC CodeAssocBisAide = "':W_CodAssoc:'" AND AVEC @ID = "':W_Aide:']" AND AVEC 1 >= "':W_DateDebPeriode:'" AND AVEC 1 <= "':W_DateFinPeriode:'" AND AVEC TypeActBisAide= "I"'
   IF W_CodSelect # "VIDE" THEN
      IF W_CodSelect[4,1]="R" THEN
         W_TempAct=W_TempAct:' AND AVEC CodeResponsableBisAide = "':W_CodSelect[1,3]:'"'
      END ELSE
         W_TempAct=W_TempAct:' AND AVEC CodeSecteurBisAide = "':W_CodSelect[1,3]:']"'
      END
   END

   EXECUTE W_TempAct

   LOOP
      READNEXT W_CleFactAct ELSE W_Fini="VRAI"
   WHILE W_Fini="FAUX" DO

      W_CleAide=W_CleFactAct[1,5]

      READ ENR_FACTURAIDETRIM FROM F.FACTURAIDETRIM,W_CleAide:W_CodAssoc:"I" THEN

         ENR_FACTURAIDE=ENR_FACTURAIDETRIM

         * Mise a jour de FACTURAIDE avec COMPLFACT
         GOSUB 1000

         * Incremente le N de facture
	 W_NumFact = W_NumFact + 1
	 W_NumFact = W_NumFact "R(%10)"
        
         iMontTva=1
         W_MontTva=0
         LOOP
         WHILE ENR_FACTURAIDE<5,iMontTva> # "" DO
            W_MontTva=W_MontTva+ENR_FACTURAIDE<5,iMontTva>
            iMontTva=iMontTva+1
         REPEAT
         ENR_FACTURAIDE<9>=INT(W_MontTva*ENR_FACTURAIDE<8>/10000+1/2)
         W_Avoir=W_MontTva-ENR_FACTURAIDE<9>

         ENR_FACTURAIDE<11>="0"
         WRITE ENR_FACTURAIDE ON F.FACTURAIDE,W_CleAide:W_CodAssoc:"I":W_CboAnneeMois:W_NumFact:"0"
         ENR_FACTURAIDE=""

         IF W_Avoir < 0 THEN
            * Mise a jour de COMPLFACT avec DES AVOIRS
            GOSUB 1100
         END

         * Lecture et Maj ELTSFACTAIDE
         READ ENR_ELTSFACTAIDE FROM F.ELTSFACTAIDE,W_CleAide ELSE ENR_ELTSFACTAIDE=""
	 ENR_ELTSFACTAIDE<24,W_CodAssoc> = W_CboAnneeMois
         WRITE ENR_ELTSFACTAIDE ON F.ELTSFACTAIDE,W_CleAide
         ENR_ELTSFACTAIDE=""

         DELETE F.FACTURAIDETRIM,W_CleFactTrim
      END

   REPEAT

RETURN




**********************************************************
* Recherche l'emplacement du code aidant dans FacturAide *
* Variable d'entree :  Code de l'aidant : W_CodeAidant   *
**********************************************************
400
   iAidant=1
   READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CodeAidant ELSE ENR_CIVILAIDANT = ""
   W_NomPrenomAidant=ENR_CIVILAIDANT<2>:ENR_CIVILAIDANT<3>
   LOOP
   WHILE ENR_FACTURAIDE<10,iAidant> # "" AND W_NomPrenomAidant > ENR_FACTURAIDE<15,iAidant> DO
      iAidant=iAidant+1
   REPEAT
   IF ENR_FACTURAIDE<10,iAidant> = "" THEN
      ENR_FACTURAIDE<10,iAidant>=W_CodeAidant
      ENR_FACTURAIDE<15,iAidant>=W_NomPrenomAidant
   END ELSE
      IF ENR_FACTURAIDE<15,iAidant> > W_NomPrenomAidant THEN
         ENR_FACTURAIDE=INSERT(ENR_FACTURAIDE,10,iAidant;W_CodeAidant)
         ENR_FACTURAIDE=INSERT(ENR_FACTURAIDE,15,iAidant;W_NomPrenomAidant)
      END
   END
RETURN

***************************************************
* Gestion du tableau tampon d'ActivitesAide	  *
* Variable d'entree : Activite        : W_ActHres *
***************************************************
500
  W_Trouve="FAUX"
  iActAide=1
  LOOP
  WHILE W_ActivitesAide<iActAide># "" DO
     IF W_ActHres=W_ActivitesAide<iActAide> THEN
        W_Trouve="VRAI"
        iActAide=999
     END
      iActAide=iActAide+1
  REPEAT
  IF W_Trouve="FAUX" THEN
     W_ActivitesAide<iActAide>=W_ActHres
  END

RETURN

**************************************************************  
* Ecriture d'activitesaide						 *
* Variable d'entree : Periode de traitement : W_CboAnneeMois *
*                     Code Aide             : W_Aide		 *
**************************************************************
600
   IF W_ActivitesAide#"" THEN
      READ ENR_ACTIVITESAIDE FROM F.ACTIVITESAIDE,W_Aide ELSE ENR_ACTIVITESAIDE = ""
      iActAide=1
      W_CountAct=DCOUNT(W_ActivitesAide,CHAR(254))
      LOOP
      WHILE ENR_ACTIVITESAIDE<1,iActAide>#"" DO
         IF ENR_ACTIVITESAIDE<2,iActAide>="" THEN
            FOR jActAide=1 TO W_CountAct
               IF ENR_ACTIVITESAIDE<1,iActAide>=W_ActivitesAide<jActAide> THEN
                  ENR_ACTIVITESAIDE<2,iActAide>=ICONV("01/":W_CboAnneeMois[5,2]:"/":W_CboAnneeMois[1,4],"D4/")
			W_ActivitesAide=DELETE(W_ActivitesAide,jActAide)
                  W_CountAct=W_CountAct-1
                  jActAide=999

			ENR_ACTIVITESBISAIDE = ""
			ENR_ACTIVITESBISAIDE<1> = ENR_ACTIVITESAIDE<3,iActAide>
			ENR_ACTIVITESBISAIDE<2> = ENR_ACTIVITESAIDE<4,iActAide>
			WRITE ENR_ACTIVITESBISAIDE ON F.ACTIVITESBISAIDE, W_Aide:ENR_ACTIVITESAIDE<1,iActAide>:ENR_ACTIVITESAIDE<2,iActAide>

               END
            NEXT jActAide
         END
         iActAide=iActAide+1
      REPEAT

      WRITE ENR_ACTIVITESAIDE ON F.ACTIVITESAIDE,W_Aide

      W_ActivitesAide=""
   END

   ENR_ACTIVITESAIDE="" 

RETURN



********************************************************
* Mise a jour de STATACTAIDE					 *
* Variable d'entree : Code Activite        : W_ActHres *
*                     Nombre d'heures      : NbrHeures *
********************************************************
700
 IF ENR_RUBSAISIE<2> = "3" OR ENR_RUBSAISIE<2> = "4" THEN

   iStat=1
   LOOP
   WHILE ENR_STATACTAIDE<1,iStat># "" DO
      IF ENR_STATACTAIDE<1,iStat> = W_ActHres THEN
         ENR_STATACTAIDE<2,iStat>=ENR_STATACTAIDE<2,iStat> + NbrHeures
         iStat=999
      END ELSE
         iStat=iStat+1
      END
   REPEAT
   IF iStat # 999 THEN
       ENR_STATACTAIDE<1,iStat>=W_ActHres
       ENR_STATACTAIDE<2,iStat>=NbrHeures
   END
 END
RETURN



**************************************************************
* Traitement de la COTISATION ANNUELLE DE L'AIDE             *
* Variable d'entree : Periode de traitement : W_CboAnneeMois *
*                     Code Associaion       : W_CodAssoc	 *
*                     Code Aide             : W_Aide		 *
**************************************************************
800
  IF ENR_ASSOCIATION<31,3> # "" AND ENR_ASSOCIATION<31,3> # 0 THEN
     W_DerniereCoti=""
     READ ENR_COTISANAIDE FROM F.COTISANAIDE,W_Aide:W_CodAssoc ELSE ENR_COTISANAIDE = ""  
     W_CountCoti=DCOUNT(ENR_COTISANAIDE<1>,CHAR(253))
     IF W_CountCoti # 0 THEN
        W_DerniereCoti=ENR_COTISANAIDE<1,W_CountCoti>
        IF ENR_ASSOCIATION<32,3>="A" THEN
            IF W_CboAnneeMois[5,2]="01" THEN
               IF W_DerniereCoti#W_CboAnneeMois THEN
                  GOSUB 900
               END
            END ELSE
               IF W_CboAnneeMois[1,4] > W_DerniereCoti[1,4] THEN
                  GOSUB 900
               END
            END           
        END ELSE
           IF W_CboAnneeMois[1,4] > W_DerniereCoti[1,4] THEN
              IF W_CboAnneeMois[5,2] >= W_DerniereCoti[5,2] THEN
                 GOSUB 900
              END
           END 
        END
     END ELSE
        GOSUB 900
     END
  END

RETURN



**************************************************************************
* Mise a jour de COTISANAIDE								 *
* Variable d'entree : Code Aide                       : W_Aide 		 *
*                     Code comptable de la cotisation : W_CodeComptaCoti *
**************************************************************************
900
   ENR_COTISANAIDE=REPLACE(ENR_COTISANAIDE,1,-1;W_CboAnneeMois)
   ENR_COTISANAIDE=REPLACE(ENR_COTISANAIDE,2,-1;ENR_ASSOCIATION<31,3>)           
   WRITE ENR_COTISANAIDE ON F.COTISANAIDE,W_Aide:W_CodAssoc
   ENR_COTISANAIDE=""

   ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,1,-1;W_CboAnneeMois)
   ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,2,-1;"COTISATION ANNUELLE")
   W_Count6FacturAide=DCOUNT(ENR_FACTURAIDE<1>,CHAR(253))
   ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,3,W_Count6FacturAide;"")
   ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,4,W_Count6FacturAide;"")
   ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,5,W_Count6FacturAide;ENR_ASSOCIATION<31,3>)

   ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,6,W_Count6FacturAide;W_CodeComptaCoti)
   ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,7,-1;ENR_ACTIVITES<2>)
   ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,14,W_Count6FacturAide;"0")
   ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,15,W_Count6FacturAide;"")
   *WRITE ENR_FACTURAIDE ON F.FACTURAIDE,W_Aide

RETURN



**************************************************************
* Mise a jour de FACTURAIDE avec COMPLFACT			 *
* Variable d'entree : Periode de traitement : W_CboAnneeMois *
*                     Code Associaion       : W_CodAssoc	 *
*                     Code Aide             : W_Aide 		 *
*                     Type de l'activit    : W_TypeAct 	 *
**************************************************************
1000
 READ ENR_COMPLFACT FROM F.COMPLFACT,W_Aide:W_CodAssoc:W_TypeAct THEN
    IF ENR_COMPLFACT<1> # "" THEN
      W_CountComplFact=DCOUNT(ENR_COMPLFACT<1>,CHAR(253))
      FOR iComplFact=1 TO W_CountComplFact
       IF ENR_COMPLFACT<8,iComplFact> < W_CboAnneeMois OR ENR_COMPLFACT<8,iComplFact> = "" THEN
	  IF ENR_COMPLFACT<9,iComplFact> <= W_CboAnneeMois OR ENR_COMPLFACT<9,iComplFact> = "" THEN
         ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,1,-1;ENR_COMPLFACT<9,iComplFact>)
         ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,2,-1;ENR_COMPLFACT<1,iComplFact>)
         ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,3,-1;ENR_COMPLFACT<2,iComplFact>)
         ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,4,-1;ENR_COMPLFACT<3,iComplFact>)
         ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,5,-1;ENR_COMPLFACT<4,iComplFact>)

         ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,6,-1;ENR_COMPLFACT<5,iComplFact>)
         ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,7,-1;ENR_COMPLFACT<6,iComplFact>)
         IF ENR_COMPLFACT<5,iComplFact> = "" THEN
            ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,14,-1;"1")
         END ELSE
            ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,14,-1;"0")
         END
         W_Count6FacturAide=DCOUNT(ENR_FACTURAIDE<1>,CHAR(253))
         ENR_FACTURAIDE=REPLACE(ENR_FACTURAIDE,15,W_Count6FacturAide;"")
         IF ENR_COMPLFACT<7,iComplFact> = 1 THEN
            ENR_COMPLFACT<2,iComplFact>=""
            ENR_COMPLFACT<3,iComplFact>=""
            ENR_COMPLFACT<4,iComplFact>=0
         END
	   IF ENR_COMPLFACT<7,iComplFact> = 1 OR ENR_COMPLFACT<7,iComplFact> = 2 THEN
	     IF ENR_COMPLFACT<9,iComplFact> # "" THEN
	        IF W_CboAnneeMois[5,2]>="12" THEN
		    ENR_COMPLFACT<9,iComplFact> = W_CboAnneeMois[1,4]+1:"01"
	        END ELSE
		    ENR_COMPLFACT<9,iComplFact> = W_CboAnneeMois+1
	        END
	     END
	   END
         ENR_COMPLFACT<8,iComplFact>=W_CboAnneeMois
	  END
       END
      NEXT iComplFact
    END

    iComplFact=1
    LOOP 
    WHILE ENR_COMPLFACT<1,iComplFact> # "" DO
       IF ENR_COMPLFACT<7,iComplFact> = "" OR ENR_COMPLFACT<7,iComplFact> = 0 THEN
	   IF ENR_COMPLFACT<9,iComplFact> <= W_CboAnneeMois OR ENR_COMPLFACT<9,iComplFact> = "" THEN
          ENR_COMPLFACT=DELETE(ENR_COMPLFACT,1,iComplFact)
          ENR_COMPLFACT=DELETE(ENR_COMPLFACT,2,iComplFact)
          ENR_COMPLFACT=DELETE(ENR_COMPLFACT,3,iComplFact)
          ENR_COMPLFACT=DELETE(ENR_COMPLFACT,4,iComplFact)
          ENR_COMPLFACT=DELETE(ENR_COMPLFACT,5,iComplFact)
          ENR_COMPLFACT=DELETE(ENR_COMPLFACT,6,iComplFact)
          ENR_COMPLFACT=DELETE(ENR_COMPLFACT,7,iComplFact)
          ENR_COMPLFACT=DELETE(ENR_COMPLFACT,8,iComplFact)
	    ENR_COMPLFACT=DELETE(ENR_COMPLFACT,9,iComplFact)
          iComplFact=iComplFact-1
	   END
       END
       iComplFact=iComplFact+1
    REPEAT

    WRITE ENR_COMPLFACT ON F.COMPLFACT,W_Aide:W_CodAssoc:W_TypeAct

    IF ENR_COMPLFACT<1> = "" THEN 
      DELETE F.COMPLFACT,W_Aide:W_CodAssoc:W_TypeAct
    END
 END

RETURN



*******************************************************************
* Mise a jour de COMPLFACT AVEC DES AVOIRS			      *
*                    N Facture en cours             : W_NumFact  *
*                    Code Associaion                 : W_CodAssoc *
*                    Code Aide                       : W_Aide 	*
*                    Type de l'activit              : W_TypeAct	*
*                    Montant de l'avoir              : W_Avoir 	*
*******************************************************************
1100
   READ ENR_COMPLFACT FROM F.COMPLFACT,W_Aide:W_CodAssoc:W_TypeAct ELSE ENR_COMPLFACT=""
   ENR_COMPLFACT=REPLACE(ENR_COMPLFACT,1,-1;"AVOIR SUR FACTURE ":W_NumFact)
   ENR_COMPLFACT=REPLACE(ENR_COMPLFACT,2,-1;"")
   ENR_COMPLFACT=REPLACE(ENR_COMPLFACT,3,-1;"")
   ENR_COMPLFACT=REPLACE(ENR_COMPLFACT,4,-1;W_Avoir)
   ENR_COMPLFACT=REPLACE(ENR_COMPLFACT,5,-1;"")
   ENR_COMPLFACT=REPLACE(ENR_COMPLFACT,6,-1;"")
   ENR_COMPLFACT=REPLACE(ENR_COMPLFACT,7,-1;"0")
   ENR_COMPLFACT=REPLACE(ENR_COMPLFACT,8,-1;"")
   ENR_COMPLFACT=REPLACE(ENR_COMPLFACT,9,-1;W_CboAnneeMois)


   WRITE ENR_COMPLFACT ON F.COMPLFACT,W_Aide:W_CodAssoc:W_TypeAct
RETURN


*****************************
* Remplissage de FACTURAIDE *
*****************************
1200
IND = 0
RubEnCours = ""
CleTarif = ENR_DETAILINTER<1,J>:W_CodAssoc
READ ENR_TARIFFACT FROM F.TARIFSFACTINT,CleTarif ELSE ENR_TARIFFACT = ""
IF ENR_TARIFFACT<1> = "B" THEN
   MontVerif = ENR_TARIFFACT<2> * ENR_DETAILINTER<2,J> / 100
   IF MontVerif <> ENR_DETAILINTER<5,J> THEN
	TxHres = ((ENR_DETAILINTER<5,J> / 100) / (ENR_DETAILINTER<2,J> / 100)) * 100
	TxHres = INT(TxHres + 1/2)
   END ELSE
	TxHres = ENR_TARIFFACT<2>
   END
END
READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILINTER<1,J> ELSE ENR_RUBSAISIE = ""
RubEnCours = ENR_RUBSAISIE<1>
TRAIT = "FAUX"

LOOP
   IND = IND + 1
WHILE ENR_FACTURAIDE<5,IND> # "" AND TRAIT = "FAUX"
   IF RubEnCours = ENR_FACTURAIDE<2,IND> THEN
	IF ENR_TARIFFACT<1> = "B" THEN
	   IF TxHres = ENR_FACTURAIDE<4,IND> THEN
		* Cumul des rubriques identiques *
		GOSUB 1300
	   END
	END ELSE
	   * Cumul des rubriques identiques *
	   GOSUB 1300
	END
   END
REPEAT

IF TRAIT = "FAUX" THEN
   GOSUB 1400
END ELSE
   IF ENR_TARIFFACT<1> = "B" THEN
	W_ActHres = ENR_DETAILINTER<6,J>
	* Mise a jour de STATACTAIDE *
	NbrHeures = ENR_DETAILINTER<2,J>
	GOSUB 700
   END
END

RETURN

**********************************
* Cumul des rubriques identiques *
**********************************
1300

TRAIT = "VRAI"
IF ENR_TARIFFACT<1> = "B" THEN
   ENR_FACTURAIDE<3,IND> = ENR_FACTURAIDE<3,IND> + ENR_DETAILINTER<2,J>
   ENR_FACTURAIDE<5,IND> = (((ENR_FACTURAIDE<3,IND> / 100) * (ENR_FACTURAIDE<4,IND> / 100)) * 100)
   ENR_FACTURAIDE<5,IND> = INT(ENR_FACTURAIDE<5,IND> + 1/2)

END ELSE

   ENR_FACTURAIDE<5,IND> = ENR_FACTURAIDE<5,IND> + ENR_DETAILINTER<5,J>
END

* Recherche l'emplacement du code aidant dans FacturAide *
W_CodeAidant = CleDetailInter[1,5]
GOSUB 400

RETURN

****************************
* Rajout nouvelle rubrique *
****************************
1400

   I = I + 1
   ENR_FACTURAIDE<1,I> = W_CboAnneeMois
   ENR_FACTURAIDE<2,I> = ENR_RUBSAISIE<1>
   W_ActHres = ENR_DETAILINTER<6,J>
   * Gestion du tableau tampon d'ActivitesAide	  *
   GOSUB 500
   * Ecriture d'activitesaide	*
   GOSUB 600

   READ ENR_ACTIVITES FROM F.ACTIVITES,W_ActHres ELSE ENR_ACTIVITES= ""
   IF ENR_TARIFFACT<1> = "B" THEN
	IF MontVerif = ENR_DETAILINTER<5,J> THEN
	   ENR_FACTURAIDE<3,I> = ENR_DETAILINTER<2,J>
	   ENR_FACTURAIDE<4,I> = INT(TxHres)
	   Montant = (ENR_FACTURAIDE<3,I> * ENR_FACTURAIDE<4,I>) / 100  +  1/2
	   ENR_FACTURAIDE<5,I> = INT(Montant) 
	END ELSE
	   ENR_FACTURAIDE<3,I> = ENR_DETAILINTER<2,J>
	   ENR_FACTURAIDE<4,I> = INT(TxHres)
	   Montant = (ENR_FACTURAIDE<3,I> * ENR_FACTURAIDE<4,I>) / 100 + 1/2
	   ENR_FACTURAIDE<5,I> = INT(Montant)
	END
		
	* Mise a jour de STATACTAIDE *
	NbrHeures = ENR_DETAILINTER<2,J>
	GOSUB 700

   END ELSE
	ENR_FACTURAIDE<3,I> = ""
	ENR_FACTURAIDE<4,I> = ""
	ENR_FACTURAIDE<5,I> = ENR_DETAILINTER<5,J>
   END

   ENR_FACTURAIDE<6,I> = ENR_CPTEPART<1>
   IF ENR_FACTURAIDE<6,I> <> "" THEN 
	ENR_FACTURAIDE<14,I> = 0
   END ELSE
	ENR_FACTURAIDE<14,I> = 1
   END
   ENR_FACTURAIDE<15,I> = ""
   ENR_FACTURAIDE<7,I> = ENR_ACTIVITES<2>
   IF ENR_TXTVA<4,ENR_ACTIVITES<11>> <> 0 AND ENR_FACTURAIDE<8> = "" THEN
	   ENR_FACTURAIDE<8> = ENR_TXTVA<4,ENR_ACTIVITES<11>>
   END
*   Montant = (ENR_FACTURAIDE<5,J> * ENR_FACTURAIDE<8,I>) / 100
*   ENR_FACTURAIDE<9,I> = INT(Montant)
   * Recherche l'emplacement du code aidant dans FacturAide *
   W_CodeAidant = CleDetailInter[1,5]
   GOSUB 400

RETURN
