***********************************************************
*                                                         *
* PROGRAMME DE CALCUL DES FACTURES MANDATAIRES            *
*                                                         *
* OCTOBRE 1999                            STEPHANE HERVET *
*                                                         *
* Grgory -> 27/01/04 : correction du bug pour la priode *
*    en att. 9 de COMPLFACT (si priode 200312, mettre    *
*    200401 et non 200313)                                *
***********************************************************

* PHRASE DE COMMANDE
* EN COLLECTIF : CALCULFACTMANDAT T ENTITE PERIODE DATE.DEB DATE.FIN M 0 S 000 A
* EN INDIVIDUEL : CALCULFACTMANDAT I ENTITE PERIODE DATE.DEB DATE.FIN M 0 S 000 S AIDE

* FICHIERS CONCERNES PAR UN "WRITE"
* ACCORD
* ACTIVITESAIDE
* ACTIVITESBISAIDE
* COMPLFACT
* CONTRAT
* COTISANAIDE
* ELTSPARTEMP
* FACTURAIDE
* FACTURORG
* NUMEROFACT
* PROVISIONDNT
* STATACTAIDE

LISTACTIVITES=""
LISTCHGPARTEMP=""
LISTEFACTMANDAT=""
LISTEDETAILCALCULRETRO=""
LISTEFACTURAIDERETRO=""

* RECAPITULATIFS DES GOSUB

* 10  -> CALCUL DES MONTANTS A PAYER
* 20  -> CALCUL DES CHARGES URSSAF APPELLEES PAR L'ASSOCIATION
* 30  -> CALCUL DE LA PROVISION DE CONGES PAYES
* 40  -> CALCUL DE LA REPRISE DE PROVISION DE CONGES PAYES
* 50  -> CALCUL DES FRAIS DE GESTION
* 60  -> CALCUL MAJORATION PAR BULLETIN
* 70  -> CALCUL FRAIS D'OUVERTURE DE DOSSIER
* 80  -> CALCUL DES COMPLEMENTS DE FACTURATION
* 90  -> CALCUL DES COTISATIONS ANNUELLES
* 99  -> GESTION DES ACCORDS
* 100 -> ECRITURE DU FICHIER FACTURAIDE
* 101 -> CONSTITUTION DU FICHIER FACTURAIDE (MONTANT SALAIRE A PAYER)
* 102 -> CONSTITUTION DU FICHIER FACTURAIDE (CHG. URSSAF)
* 103 -> CONSTITUTION DU FICHIER FACTURAIDE (COTIS. PREV.)
* 104 -> CONSTITUTION DU FICHIER FACTURAIDE (PROVISION CONGES)
* 105 -> CONSTITUTION DU FICHIER FACTURAIDE (REPRISE PROVISION CONGES)
* 106 -> CONSTITUTION DU FICHIER FACTURAIDE (FRAIS DE GESTION)
* 107 -> CONSTITUTION DU FICHIER FACTURAIDE (MAJORATION PAR BULLETIN)
* 108 -> CONSTITUTION DU FICHIER FACTURAIDE (FRAIS OUVERTURE DOSSIER)
* 109 -> CONSTITUTION DU FICHIER FACTURAIDE (COMPLEMENTS FACTURATION)
* 110 -> CONSTITUTION DU FICHIER FACTURAIDE (APPEL COTISATION)
* 111 -> CONSTITUTION DU FICHIER FACTURORG + FACTURAIDE (ACCORD SUR MOIS)
* 112 -> CONSTITUTION DU FICHIER FACTURORG + FACTURAIDE (ACCORD RETROACTIF)
* 200 -> RECHERCHE SI RUB. SAISIE DEJA AFFECTEE // FRAIS GESTION
* 201 -> MAJ ATTRIBUT 10 DE FACTURAIDE
* 210 -> TRI DES ACCORDS SANS RATTRAP. PAR RANG,DATE DEB., DATE FIN
* 300 -> LANCEMENT DES DIVERS TRAITEMENTS
* 310 -> GESTION DES DROITS SUR ACCORD
* 311 -> CALCUL DES DROITS D'ACCORDS (1) = EN-COURS
* 312 -> CALCUL DES DROITS D'ACCORDS (2) = RETROACTIF
* 500 -> GENERATION DU FICHIER STATACTAIDE
* 501 -> RECHERCHE SI ACT. DEJA AFFECTEE
* 999 -> REMISE A ZERO DES VARIABLES

***********************************************************
***********************************************************
* OUVERTURE DES FICHIERS

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ACCORD" TO F.ACCORD ELSE STOP
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 "","BAREMEPARTEMP" TO F.BAREMEPARTEMP ELSE STOP
OPEN "","CHGPARTEMP" TO F.CHGPARTEMP ELSE STOP
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","COMPLFACT" TO F.COMPLFACT ELSE STOP
OPEN "","COMPTESPARTICULIERS" TO F.COMPTESPARTICULIERS ELSE STOP
OPEN "","CONSTANTESPAIE" TO F.CONSTANTESPAIE ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","CONTRATSPREV" TO F.CONTRATSPREV ELSE STOP
OPEN "","CONVENTIONCOL" TO F.CONVENTIONCOL ELSE STOP
OPEN "","COTISANAIDE" TO F.COTISANAIDE ELSE STOP
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "","DETAILCHGPARTEMP" TO F.DETAILCHGPARTEMP ELSE STOP
OPEN "","ELTSPARTEMP" TO F.ELTSPARTEMP ELSE STOP
OPEN "","FACTURAIDE" TO F.FACTURAIDE ELSE STOP
OPEN "","FACTURORG" TO F.FACTURORG ELSE STOP
OPEN "","NUMEROFACT" TO F.NUMEROFACT ELSE STOP
OPEN "","ORGPRISECHARGE" TO F.ORGPRISECHARGE ELSE STOP
OPEN "","PROVISIONDNT" TO F.PROVISIONDNT ELSE STOP
OPEN "","RUBSAISIE" TO F.RUBSAISIE ELSE STOP
OPEN "","STATACTAIDE" TO F.STATACTAIDE ELSE STOP
OPEN "","TABLES" TO F.TABLES ELSE STOP
OPEN "","TEMPO" TO F.TEMPO ELSE STOP

***********************************************************
***********************************************************
* DEBUT TRAITEMENT DES ARTICLES

PROCREAD PARAMETRES ELSE STOP

* RECUPERATION MOIS DE LA PERIODE DE TRAITEMENT
W_RANGMOISPERIODE=INDEX(PARAMETRES," ",3)
W_PERIODEMOIS=PARAMETRES[W_RANGMOISPERIODE+1,6]
W_RANGMOISPERIODE=INDEX(PARAMETRES," ",4)
W_PERIODEDEBUT=PARAMETRES[W_RANGMOISPERIODE+1,5]
W_RANGMOISPERIODE=INDEX(PARAMETRES," ",5)
W_PERIODEFIN=PARAMETRES[W_RANGMOISPERIODE+1,5]

W_MOIS=W_PERIODEMOIS[5,2]

* CALCULE SI FIN TRIMESTRE OU PAS
IF W_PERIODEFIN-W_PERIODEDEBUT>31 THEN
    W_FINTRIM=1
    W_PERIODECOURS=W_PERIODEMOIS-2
END ELSE
    W_FINTRIM=0
    W_PERIODECOURS=W_PERIODEMOIS
    W_PERIODEDEBUTMOIS=W_PERIODEDEBUT
    W_PERIODEFINMOIS=W_PERIODEFIN
END

* RECUPERE LE CODE ENTITE
W_RANGENTITE=INDEX(PARAMETRES," ",2)
W_CODEENTITE=PARAMETRES[W_RANGENTITE+1,3]

* RECUPERE LE TYPE ACTIVITE
W_RANGACTIVITE=INDEX(PARAMETRES," ",6)
W_TYPEACTIVITE=PARAMETRES[W_RANGACTIVITE+1,1]

* RECUPERE SI GESTION EXCLUSIVE
W_RANGGESTEXCLU=INDEX(PARAMETRES," ",7)
W_GESTEXCLU=PARAMETRES[W_RANGGESTEXCLU+1,1]

***********************************************************
***********************************************************
* INITIALISATION DES VARIABLES

* LECTURE CONVENTION COLLECTIVE
READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL,"02" ELSE ENR_CONVENTIONCOL=""
W_FINCONGES=ENR_CONVENTIONCOL<28>
W_CLOTCONGES=ENR_CONVENTIONCOL<3>
IF W_FINCONGES="0" THEN	
     W_FINCONGES="05"
END ELSE
     W_FINCONGES="12"
END

* LECTURE COMPTES PARTICULIERS
READ ENR_COMPTESPART FROM F.COMPTESPARTICULIERS,W_CODEENTITE ELSE
     ENR_COMPTESPART=""
     *PRINT "ERREUR COMPTES PARTICULIERS"
END

* LECTURE ENTITE JURIDIQUE
READ ENR_ASSOCIATION FROM F.ASSOCIATION,W_CODEENTITE ELSE
     *PRINT "ERREUR ASSOCIATION"
END

* LECTURE NUMERO DE FACTURE AIDE MANDATAIRE
READ ENR_NUMEROFACT FROM F.NUMEROFACT,W_CODEENTITE ELSE
     *PRINT "ERREUR NUMEROFACT"
     STOP
END

* LECTURE CONSTANTESPAIE POUR TAUX HOR. SMIC
READ ENR_CONSTANTESPAIE FROM F.CONSTANTESPAIE,"1" THEN
     * RECHERCHE TX SMIC
     I=1 
     LOOP
	  UNTIL ENR_CONSTANTESPAIE<4,I><=W_PERIODEDEBUT OR ENR_CONSTANTESPAIE<4,I>="" DO
	  I=I+1
     REPEAT
END
W_TAUXSMIC=ENR_CONSTANTESPAIE<3,I>

W_REQVIDE="FAUX"
ENR_FACTURAIDE=""
W_CODEAIDANT=""
W_CODEAIDE=""
W_MONTANTSALPAYER=0
W_NBAIDANT=0
W_CHANGEAIDE=0
W_PASSWRITE=0
W_CODECONTRATPREV=""
W_MONTANTCHGURSSAFPAT=0
W_MONTANTCHGURSSAFSAL=0
W_MONTANTCOTISPREV=0
W_COTISPREVASSO=0
W_PROVISIONCONGESTOTAL=0
W_CUMULFRAISGESTION=0
W_FRAISGESTION=0
W_NBBULLETIN=0
W_NBBULLETIN1=0
W_NBBULLETIN2=0
W_NBBULLETIN3=0
W_VALEURMAJORATION=0
W_VALEURFRAISDOSSIER=0
W_MONTANTCHGURSSAFPAYEESMOIS=0
W_MONTANTCOTISPREVPAYEESMOIS=0
W_NBJOURCONGESCOURS=0
W_PROVISIONCOURS=0
W_MONTANTREPRISECOURS=0
W_ERREURCOTISAN=0
W_MONTANTCOTIS=0
W_MONTANTCOMPLFACT=0
W_MONTANTFACTURE=0
W_MONTANTASSIETTEFRAISGEST=0
W_HRESPAYEES=0
W_MONTANTREPRISEPROV=0
W_MONTANTSALPAYERCOURS=0
W_HEURESALPAYERCOURS=0
W_ASSIETTEFRAISGESTION=""
W_CUMULMONTANTREPRISEPROV=0
W_AFFECTFRAISDOSSIER=0
W_MONTANTPARTBENEF=0
W_NBACCORD=0
ENR_NOMAIDANT=""
W_NUMACCORD=""
W_ACCORDTRI1=""
W_ACCORDSANSRATTRAP=""
W_TOTALHRESPAYEES=0
W_HRESACCORDEES=0
W_MONTANTBRUT=0
W_MONTANTFORFAIT=0
W_FRAISGESTION1=0    
W_FRAISGESTION2=0
W_FRAISGESTION3=0
W_BASEFRAISGESTION=0
W_BASEFRAISGESTION1=0
W_BASEFRAISGESTION2=0
W_BASEFRAISGESTION3=0
W_TAUX=""
W_BASEPARTEMP=0
W_MONTANTCHGAPPELEES=0
W_RANGCOURS=0
W_HEURESAPRENDRE=0
W_DEPENGAGEES=0
W_DIMJF=0
W_DEPT50="0"
W_RESTANT=""
W_SOUMISTVA=0
W_GestionTVA="FAUX"
W_TAUXTVA=0

* RECHERCHE DU TAUX TVA EN TYPE MANDATAIRE
EXECUTE 'TSELECT ACTIVITES AVEC 0 = "':W_CODEENTITE:']" AND AVEC 12 = "M" PAR 0'
EXECUTE "SAUVE-LISTE LISTACTIVITES"
EXECUTE "LISTE LISTACTIVITES" RETURNING W_MSG
SELECT F.ACTIVITES TO LISTACTIVITES

READNEXT CLE FROM LISTACTIVITES THEN
    READ ENR_ACTIVITES FROM F.ACTIVITES,CLE THEN
		W_CODETVA=ENR_ACTIVITES<11>
		READ ENR_TAUXTVA FROM F.TABLES,"TAUXTVA" THEN
			I=1
			LOOP
			UNTIL ENR_TAUXTVA<2,I>=W_CODETVA DO
				I=I+1
			REPEAT
			* modif vanes 17/11/08
			IF ENR_TAUXTVA<4,I> # 0 THEN
				W_TAUXTVA=ENR_TAUXTVA<4,I>
			END
		END
		IF ENR_ACTIVITES<11> # "1" THEN
			W_GestionTVA="VRAI"
		END
		***************
    END ELSE
		W_TAUXTVA=0
    END
END

EXECUTE "EFFACER-LISTE LISTACTIVITES"

* RECHERCHE DU TAUX CHARGES DANS CHGPARTEMP
EXECUTE 'TSELECT CHGPARTEMP'
EXECUTE "SAUVE-LISTE LISTCHGPARTEMP"
EXECUTE "LISTE LISTCHGPARTEMP" RETURNING W_MSG
SELECT F.CHGPARTEMP TO LISTCHGPARTEMP

W_FINCHG="FAUX"
LOOP
UNTIL W_FINCHG="VRAI" DO

READNEXT CLE FROM LISTCHGPARTEMP THEN
    READ ENR_CHGPARTEMP FROM F.CHGPARTEMP,CLE THEN
	 * RECHERCHE DATE EN COURS DE VALIDITE

	 * SI PAS TRIMESTRE
	 IF W_FINTRIM=0 THEN
  	     I=1
	     LOOP	
	          UNTIL ENR_CHGPARTEMP<3,I><=W_PERIODEFINMOIS OR ENR_CHGPARTEMP<3,I>="" DO  
		  I=I+1
	     REPEAT
	     IF CLE="01" THEN W_TAUX<1>=ENR_CHGPARTEMP<2>
	     IF CLE="02" THEN W_TAUX<2>=ENR_CHGPARTEMP<2>
	     IF CLE<>"01" AND CLE<>"02" THEN W_TAUX<3>=W_TAUX<3>+ENR_CHGPARTEMP<2>
	 END ELSE
	     FOR J=1 TO 3
		  * CALCUL DU DERNIER JOUR DU MOIS
		  W_PERIODECOURS=W_PERIODECOURS+J
	          IF W_PERIODECOURS[5,2]>="12" THEN
                      W_PERIODEFINMOIS=ICONV("01/":W_PERIODECOURS[5,2]:"/":W_PERIODECOURS[1,4]+1,"D4/")-1
	          END ELSE
                      W_PERIODEFINMOIS=ICONV("01/":W_PERIODECOURS[5,2]+1:"/":W_PERIODECOURS[1,4],"D4/")-1
	          END

  	          I=1
	          LOOP	
	               UNTIL ENR_CHGPARTEMP<3,I><=W_PERIODEFINMOIS OR ENR_CHGPARTEMP<3,I>="" DO  
		       I=I+1
	          REPEAT
   	          IF CLE="01" THEN W_TAUX<1,J>=ENR_CHGPARTEMP<2>
	          IF CLE="02" THEN W_TAUX<2,J>=ENR_CHGPARTEMP<2>
	          IF CLE<>"01" AND CLE<>"02" THEN W_TAUX<3,J>=W_TAUX<3>+ENR_CHGPARTEMP<2>
	     NEXT
	 END
    END 	
END ELSE
 W_FINCHG="VRAI"
END
REPEAT

EXECUTE "EFFACER-LISTE LISTCHGPARTEMP"

IF W_FINTRIM=0 THEN
     W_PERIODECOURS=W_PERIODEMOIS
END ELSE
     W_PERIODECOURS=W_PERIODEMOIS-2
END

***********************************************************
***********************************************************
* CHARGEMENT DE LA LISTE DES ARTICLES SELECTIONNES

EXECUTE "LISTE LISTEFACTMANDAT" CAPTURING MSG RETURNING MSGCODE

IF MSGCODE<1>=209 THEN 
    *PRINT "ERREUR MSGCODE"
    STOP
END

SELECT F.CONTRAT TO LISTEFACTMANDAT

LOOP
    * LECTURE RESULTAT REQUETE JUSQUE REQUETE = VIDE
    READNEXT CLE FROM LISTEFACTMANDAT ELSE W_REQVIDE="VRAI"
    UNTIL W_REQVIDE="VRAI" DO

    W_CODECONTRAT=CLE        

    READ ENR_CONTRAT FROM F.CONTRAT,W_CODECONTRAT ELSE
        *PRINT "ERREUR CONTRAT"
		STOP
    END
   
    READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CODECONTRAT[1,5] ELSE
       *PRINT "ERREUR CIVILAIDANT"
       STOP
    END


    * TEST SI 1er TOUR
    IF W_CODEAIDANT="" THEN W_CODEAIDANT=CLE[1,5]
    IF W_CODEAIDE="" THEN 
	
		W_CODEAIDE=ENR_CONTRAT<3>

        READ ENR_STATACTAIDE FROM F.STATACTAIDE,W_CODEAIDE:W_CODEENTITE:W_PERIODECOURS ELSE
			ENR_STATACTAIDE=""
        END

		W_CHANGEAIDE=0

        W_ERREURDETAILCALCUL=0

		* CALCUL DES CHG. URSSAF
		GOSUB 20
    END

    * TEST SI CLE AIDE DIFFERENTE
    IF W_CODEAIDE<>ENR_CONTRAT<3> THEN

        GOSUB 100

        * GESTION DES ACCORDS
        GOSUB 99

		IF ENR_ASSOCIATION<31,1><>"" AND ENR_ASSOCIATION<31,1><>0 AND W_AFFECTPOSSIBLE=1 AND W_ERREURDETAILCALCUL=0 THEN
            * GESTION DES COTISATIONS ANNUELLES
            GOSUB 90
			*-- Modifications Matthieu - Le 03/04/2009
			IF ENR_COTISANAIDE<3> # "1" THEN
				WRITE ENR_COTISANAIDE ON F.COTISANAIDE,W_CODEAIDE:W_CODEENTITE
			END
			*-- Fin Modifs Matthieu
        END

		* GESTION DES COMPLEMENTS DE FACTURATION
		GOSUB 80

        W_TOTALHRESPAYEES=0
        W_HEURESAPRENDRE=0

        IF ENR_FACTURAIDE<5><>"" AND W_ERREURDETAILCALCUL=0 THEN 
			* INCREMENTE LE NUMERO DE FACTURE
        	ENR_NUMEROFACT<3>=ENR_NUMEROFACT<3>+1 "R%10"

			* GESTION DES ACOMPTES
			GOSUB 1

        	* ECRITURE ELTSPARTEMP
	        ENR_ELTSPARTEMP<16>=W_PERIODEMOIS
	        WRITE ENR_ELTSPARTEMP ON F.ELTSPARTEMP,W_CODEAIDE
			
			* modif vanes 17/11/08
			iMontTva=1
			W_MontTva=0
			LOOP
			WHILE ENR_FACTURAIDE<5,iMontTva> # "" DO
				IF ENR_FACTURAIDE<16,iMontTva> = "O" THEN
					W_MontTva=W_MontTva+ENR_FACTURAIDE<5,iMontTva>
				END
				iMontTva=iMontTva+1
			REPEAT
			ENR_FACTURAIDE<9>=INT(W_MontTva*ENR_FACTURAIDE<8>/10000+1/2)
			*****			
			
			WRITE ENR_FACTURAIDE ON F.FACTURAIDE,W_CODEAIDE:W_CODEENTITE:W_TYPEACTIVITE:W_PERIODEMOIS:ENR_NUMEROFACT<3>:"0"
		END

        GOSUB 999

        W_CODEAIDE=ENR_CONTRAT<3>
        W_CODEAIDANT=CLE[1,5]

        READ ENR_STATACTAIDE FROM F.STATACTAIDE,W_CODEAIDE:W_CODEENTITE:W_PERIODECOURS ELSE
			ENR_STATACTAIDE=""
        END

        W_ERREURDETAILCALCUL=0

		* CALCUL DES CHG. URSSAF
		GOSUB 20

		* CALCUL DES MONTANTS A PAYER
        GOSUB 10

        W_MONTANTSALPAYER=0

     	W_CHANGEAIDE=1
    END

    * TEST SI CLE AIDANT DIFFERENTE
    IF W_CODEAIDANT<>CLE[1,5] THEN
		W_CHANGEAIDE=0

        W_CODEAIDANT=CLE[1,5]

        * CALCUL DES MONTANTS A PAYER
		GOSUB 10

        W_MONTANTSALPAYER=0

    END ELSE
		IF W_CHANGEAIDE=0 THEN
            * CALCUL DES MONTANTS A PAYER
			GOSUB 10
		END ELSE
			W_CHANGEAIDE=0
		END
    END

    WRITE ENR_CONTRAT ON F.CONTRAT,W_CODECONTRAT

REPEAT

GOSUB 100

* GESTION DES ACCORDS
GOSUB 99

IF ENR_ASSOCIATION<31,1><>"" AND ENR_ASSOCIATION<31,1><>0 AND W_AFFECTPOSSIBLE=1 AND W_ERREURDETAILCALCUL=0 THEN
    * GESTION DES COTISATIONS ANNUELLES
    GOSUB 90
	*-- Modifications Matthieu - Le 03/04/2009
	IF ENR_COTISANAIDE<3> # "1" THEN
		WRITE ENR_COTISANAIDE ON F.COTISANAIDE,W_CODEAIDE:W_CODEENTITE
	END
	*-- Fin Modifs
END

* GESTION DES COMPLEMENTS DE FACTURATION
GOSUB 80

IF ENR_FACTURAIDE<5><>"" AND W_ERREURDETAILCALCUL=0 THEN 
	* INCREMENTE LE NUMERO DE FACTURE
    ENR_NUMEROFACT<3>=ENR_NUMEROFACT<3>+1 "R%10"

	* GESTION DES ACOMPTES
	GOSUB 1

    * ECRITURE ELTSPARTEMP
    ENR_ELTSPARTEMP<16>=W_PERIODEMOIS
	WRITE ENR_ELTSPARTEMP ON F.ELTSPARTEMP,W_CODEAIDE
	
	* modif vanes 17/11/08
	iMontTva=1
	W_MontTva=0
	LOOP
	WHILE ENR_FACTURAIDE<5,iMontTva> # "" DO
		IF ENR_FACTURAIDE<16,iMontTva> = "O" THEN
			W_MontTva=W_MontTva+ENR_FACTURAIDE<5,iMontTva>
		END
		iMontTva=iMontTva+1
	REPEAT
	ENR_FACTURAIDE<9>=INT(W_MontTva*ENR_FACTURAIDE<8>/10000+1/2)
	*****
	
	WRITE ENR_FACTURAIDE ON F.FACTURAIDE,W_CODEAIDE:W_CODEENTITE:W_TYPEACTIVITE:W_PERIODEMOIS:ENR_NUMEROFACT<3>:"0"
END

WRITE ENR_NUMEROFACT ON F.NUMEROFACT,W_CODEENTITE

STOP

***********************************************************
***********************************************************
* GESTION DES ACOMPTES

1 *
        * SI FACTURE NEGATIVE ALORS GENERE UN COMPLEMENT DE FACTURATION
        W_TOTALFACTURE=0
        D=1
        LOOP
         UNTIL ENR_FACTURAIDE<5,D>="" DO
          IF ENR_FACTURAIDE<5,D>#"" THEN 
             W_TOTALFACTURE=W_TOTALFACTURE+ENR_FACTURAIDE<5,D>
	  END
          D=D+1
        REPEAT
	IF W_TOTALFACTURE<0 THEN
	     READ ENR_COMPLFACT FROM F.COMPLFACT, W_CODEAIDE:W_CODEENTITE:"M" ELSE ENR_COMPLFACT=""
	     ENR_COMPLFACT<1,-1>="AVOIR SUR FACTURE ":ENR_NUMEROFACT<3>
	     ENR_COMPLFACT<2,-1>=""
	     ENR_COMPLFACT<3,-1>=""
	     ENR_COMPLFACT<4,-1>=W_TOTALFACTURE
	     ENR_COMPLFACT<5,-1>=""
	     ENR_COMPLFACT<6,-1>=""
	     ENR_COMPLFACT<7,-1>="0"
	     ENR_COMPLFACT<8,-1>=""
	     ENR_COMPLFACT<9,-1>=W_PERIODECOURS

	     WRITE ENR_COMPLFACT ON F.COMPLFACT,W_CODEAIDE:W_CODEENTITE:"M"
	END
RETURN

***********************************************************
***********************************************************
* CALCUL DES MONTANTS A PAYER

10 *

   * SI PAS FIN DE TRIMESTRE
   IF W_FINTRIM=0 THEN

       * TEST SI DERNIER MOIS TRIMESTRE POUR GESTION 195 SMIC
       W_MOISFIN=OCONV(W_PERIODEFINMOIS,"D4/")
       W_MOISFIN=W_MOISFIN[4,2]
       W_MOISDNT=0
       W_TRIMESTRE=0
       IF W_MOISFIN="03" OR W_MOISFIN="06" OR W_MOISFIN="09" OR W_MOISFIN="12" THEN 
           W_MOISDNT=1
           W_ANNEE=W_PERIODECOURS[1,4]
           W_TRIMESTRE=INT(W_MOISFIN/3)
       END ELSE
	   W_MOISDNT=0
	   W_ANNEE=W_PERIODECOURS[1,4]
	   IF W_MOISFIN="01" OR W_MOISFIN="02" OR W_MOISFIN="03" THEN W_TRIMESTRE=1
	   IF W_MOISFIN="04" OR W_MOISFIN="05" OR W_MOISFIN="06" THEN W_TRIMESTRE=2
	   IF W_MOISFIN="07" OR W_MOISFIN="08" OR W_MOISFIN="09" THEN W_TRIMESTRE=3
	   IF W_MOISFIN="10" OR W_MOISFIN="11" OR W_MOISFIN="12" THEN W_TRIMESTRE=4
       END
            
       IF W_MOISFIN="01" OR W_MOISFIN="04" OR W_MOISFIN="07" OR W_MOISFIN="10" THEN W_MOISCOURS=1
       IF W_MOISFIN="02" OR W_MOISFIN="05" OR W_MOISFIN="08" OR W_MOISFIN="11" THEN W_MOISCOURS=2
       IF W_MOISFIN="03" OR W_MOISFIN="06" OR W_MOISFIN="09" OR W_MOISFIN="12" THEN W_MOISCOURS=3

       W_RANGCOURS=1

       W_MONTANTELEMENTS=0
       W_DETAILCALCULVIDE=0
       READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_CODECONTRAT:W_PERIODECOURS ELSE
	   ENR_DETAILCALCUL=""
	   ENR_DETAILCALCUL<7>=0
	   ENR_DETAILCALCUL<21>=0
	   *PRINT "ERREUR DETAILCALCUL":W_CODECONTRAT:W_PERIODECOURS
	   W_DETAILCALCULVIDE=1
       END

       * GESTION 65 X SMIC
       IF ENR_ELTSPARTEMP<9>="02" THEN
           IF ENR_CONTRAT<30>="B" THEN
	    W_BASEPARTEMP=W_BASEPARTEMP+ENR_DETAILCALCUL<7>
           END ELSE
            W_BASEPARTEMP=W_BASEPARTEMP+INT(W_TAUXSMIC*ENR_DETAILCALCUL<6>/100+1/2)
           END
       END ELSE
       	   IF ENR_ELTSPARTEMP<9>="01" THEN
		W_BASEPARTEMP=W_BASEPARTEMP+ENR_DETAILCALCUL<7>
	   END		
       END   

       IF W_GESTEXCLU=1 THEN

            IF ENR_DETAILCALCUL<1>="E" AND ENR_CONTRAT<28>=0 THEN
	      IF W_DETAILCALCULVIDE=0 THEN
                  ***********************************************************

              * LANCEMENT DES TRAITEMENTS
                  GOSUB 300

                  IF ENR_BAREMEPARTEMP<2><>4 THEN 
		       IF ENR_CONTRAT<28>=1 THEN
		           GOSUB 101
		       END ELSE
			   GOSUB 201
		       END
		  END ELSE
		       GOSUB 201
		  END

	  	  GOSUB 500
	      END
	    END ELSE
              IF ENR_DETAILCALCUL<1>="P" AND ENR_CONTRAT<28>=1 THEN
	        IF W_DETAILCALCULVIDE=0 THEN
                  ***********************************************************
                  * LANCEMENT DES TRAITEMENTS
                  GOSUB 300
       
                  IF ENR_BAREMEPARTEMP<2><>4 THEN 
		       IF ENR_CONTRAT<28>=1 THEN
		           GOSUB 101
		       END ELSE
			   GOSUB 201
		       END
		  END ELSE
		       GOSUB 201
		  END
  
	  	  GOSUB 500
	        END
	      END ELSE
	        W_ERREURDETAILCALCUL=1
   	      END
            END
       END ELSE
           IF W_DETAILCALCULVIDE=0 THEN
               ***********************************************************
               * LANCEMENT DES TRAITEMENTS
               GOSUB 300
         
               IF ENR_BAREMEPARTEMP<2><>4 THEN
		    IF ENR_CONTRAT<28>=1 THEN
	                GOSUB 101
		    END ELSE
		        GOSUB 201
   	            END
	       END ELSE	
		    GOSUB 201
	       END

    	       GOSUB 500
           END
       END
   END ELSE
       W_PERIODECOURS=W_PERIODEMOIS-2

       W_RANGCOURS=0

       LOOP
	  UNTIL W_PERIODECOURS=W_PERIODEMOIS+1 DO

	  W_RANGCOURS=W_RANGCOURS+1
	
	  * CALCUL PERIODE DEBUT + FIN DU MOIS EN COURS
	  W_PERIODEDEBUTMOIS=ICONV("01/":W_PERIODECOURS[5,2]:"/":W_PERIODECOURS[1,4],"D4/")
	  IF W_PERIODECOURS[5,2]>="12" THEN
              W_PERIODEFINMOIS=ICONV("01/":W_PERIODECOURS[5,2]:"/":W_PERIODECOURS[1,4]+1,"D4/")-1
	  END ELSE
              W_PERIODEFINMOIS=ICONV("01/":W_PERIODECOURS[5,2]+1:"/":W_PERIODECOURS[1,4],"D4/")-1
	  END

          * TEST SI DERNIER MOIS TRIMESTRE POUR GESTION 195 SMIC
          W_MOISFIN=OCONV(W_PERIODEFINMOIS,"D4/")
          W_MOISFIN=W_MOISFIN[4,2]
          W_MOISDNT=0
          W_TRIMESTRE=0
          IF W_MOISFIN="03" OR W_MOISFIN="06" OR W_MOISFIN="09" OR W_MOISFIN="12" THEN 
              W_MOISDNT=1
              W_ANNEE=W_PERIODECOURS[1,4]
              W_TRIMESTRE=INT(W_MOISFIN/3)
          END ELSE
	      W_MOISDNT=0
	      W_ANNEE=W_PERIODECOURS[1,4]
  	      IF W_MOISFIN="01" OR W_MOISFIN="02" OR W_MOISFIN="03" THEN W_TRIMESTRE=1
	      IF W_MOISFIN="04" OR W_MOISFIN="05" OR W_MOISFIN="06" THEN W_TRIMESTRE=2
	      IF W_MOISFIN="07" OR W_MOISFIN="08" OR W_MOISFIN="09" THEN W_TRIMESTRE=3
	      IF W_MOISFIN="10" OR W_MOISFIN="11" OR W_MOISFIN="12" THEN W_TRIMESTRE=4
          END

          IF W_MOISFIN="01" OR W_MOISFIN="04" OR W_MOISFIN="07" OR W_MOISFIN="10" THEN W_MOISCOURS=1
          IF W_MOISFIN="02" OR W_MOISFIN="05" OR W_MOISFIN="08" OR W_MOISFIN="11" THEN W_MOISCOURS=2
          IF W_MOISFIN="03" OR W_MOISFIN="06" OR W_MOISFIN="09" OR W_MOISFIN="12" THEN W_MOISCOURS=3

          W_TOTALHRESPAYEES=0
          W_HEURESAPRENDRE=0
          W_MONTANTELEMENTS=0
	  W_DETAILCALCULVIDE=0
          READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_CODECONTRAT:W_PERIODECOURS ELSE
	        ENR_DETAILCALCUL=""
	        ENR_DETAILCALCUL<7>=0
	        ENR_DETAILCALCUL<21>=0
	        *PRINT "ERREUR DETAILCALCUL":W_CODECONTRAT:W_PERIODECOURS
	        W_DETAILCALCULVIDE=1
          END

          READ ENR_STATACTAIDE FROM F.STATACTAIDE,W_CODEAIDE:W_CODEENTITE:W_PERIODECOURS ELSE
	        ENR_STATACTAIDE=""
          END

          * GESTION 65 X SMIC
          IF ENR_ELTSPARTEMP<9>="02" THEN
           	IF ENR_CONTRAT<30>="B" THEN
	    		W_BASEPARTEMP=W_BASEPARTEMP+ENR_DETAILCALCUL<7>
           	END ELSE
            		W_BASEPARTEMP=W_BASEPARTEMP+INT(W_TAUXSMIC*ENR_DETAILCALCUL<6>/100+1/2)
           	END
       	  END ELSE
       	    	IF ENR_ELTSPARTEMP<9>="01" THEN
			W_BASEPARTEMP=W_BASEPARTEMP+ENR_DETAILCALCUL<7>
	   	END
          END   

	  IF W_DETAILCALCULVIDE=0 THEN
              ***********************************************************
              * LANCEMENT DES TRAITEMENTS
              GOSUB 300
       
              IF ENR_BAREMEPARTEMP<2><>4 THEN 
	           IF ENR_CONTRAT<28>=1 THEN
		       GOSUB 101
		   END ELSE
		       GOSUB 201
		   END
	      END ELSE
		   GOSUB 201
	      END
  
	      GOSUB 500
	  END

 	  WRITE ENR_STATACTAIDE ON F.STATACTAIDE,W_CODEAIDE:W_CODEENTITE:W_PERIODECOURS 
	    
        W_PERIODECOURS=W_PERIODECOURS+1

	REPEAT

	W_PERIODECOURS=W_PERIODECOURS-1

   END

RETURN

***********************************************************
***********************************************************
* CALCUL DES CHARGES URSSAF APPELLEES PAR L'ASSOCIATION

20 *

   READ ENR_ELTSPARTEMP FROM F.ELTSPARTEMP,W_CODEAIDE ELSE
       *PRINT "ERREUR ELTSPARTEMP"
   END

   * SI 1 CONTRAT DE PREVOYANCE
   IF ENR_ELTSPARTEMP<15><>"" THEN
       W_CODECONTRATPREV=ENR_ELTSPARTEMP<15>

       * LIT LE FICHIER CONTRATSPREV LIE AU CONTRAT DE PREVOYANCE
       READ ENR_CONTRATSPREV FROM F.CONTRATSPREV,W_CODECONTRATPREV ELSE
	   *PRINT "ERREUR CONTRATPREV"
       END
   END

   * SI COTISATION PREV. APPELLEES PAR ASSO 
   IF ENR_ELTSPARTEMP<7>=1 THEN
       W_COTISPREVASSO=1
   END

   * VERIFIE SI DATE DEBUT + RADIATION PREVOYANCE => OK SUR PERIODE

   * SI PAS DATE D'ADHESION
   IF ENR_ELTSPARTEMP<5>="" THEN
       W_COTISPREVASSO=0
   END
   * SI DATE RADIATION < PERIODE FACTURATION
   IF ENR_ELTSPARTEMP<6><>"" THEN
       IF ENR_ELTSPARTEMP<6><W_PERIODEDEBUT THEN
           W_COTISPREVASSO=0
       END
   END
   * SI DATE ADHESION > PERIODE FACTURATION
   IF ENR_ELTSPARTEMP<5>>W_PERIODEFIN THEN
       W_COTISPREVASSO=0
   END
  
RETURN

***********************************************************
***********************************************************
* CALCUL DE LA PROVISION DE CONGES PAYES

30 *

   * TEST SI CONGES PAYES PAS PAYES AU MOIS
   IF ENR_CONTRAT<31>=0 AND ENR_CONTRAT<94>=1 THEN

       * TEST SI CONTRAT ACTIFS AU DERNIER JOUR DE LA PERIODE
       IF ENR_CONTRAT<8>="" OR ENR_CONTRAT<8>>W_PERIODEFIN THEN

	   * CALCUL LE TOTAL DES CHG. PATRONALES	
	   W_TOTALCHGPAT=W_MONTANTCOTISPREVPAYEESMOIS+W_MONTANTCHGURSSAFPAYEESMOIS

	   * CALCUL % CHG. PATRONALES // BRUT
	   W_TAUXCHARGESPAT=W_TOTALCHGPAT/ENR_DETAILCALCUL<7>
	   W_TAUXCHARGESPAT=INT((W_TAUXCHARGESPAT*10000)+1/2)

	   * CALCUL DE L'ANCIENNETE
	   W_BLOCANCIENNETE=ICONV("01/04/2000","D4/")
	   W_ANCIENNETE=INT((W_BLOCANCIENNETE-ENR_CONTRAT<7>)/365)

	   * CALCUL DU TAUX DE PROVISION
	   IF W_ANCIENNETE<5 THEN W_TAUXPROVISION=1000
	   IF W_ANCIENNETE<10 AND W_ANCIENNETE>=5 THEN W_TAUXPROVISION=1032
	   IF W_ANCIENNETE<15 AND W_ANCIENNETE>=10 THEN W_TAUXPROVISION=1064
	   IF W_ANCIENNETE<20 AND W_ANCIENNETE>=15 THEN W_TAUXPROVISION=1096
	   IF W_ANCIENNETE>=20 THEN W_TAUXPROVISION=1128

	   * CALCUL DE LA PROVISION UNIQUEMENT SI PERIODE DERN. BULL <> PERIODE COURS
	   IF W_PERIODECOURS<>ENR_CONTRAT<58> THEN
	       * CALCUL PROVISION
               W_PROVISIONCONGESa=INT(((W_TAUXPROVISION/10000)*ENR_DETAILCALCUL<7>)+1/2)
               W_PROVISIONCONGESb=INT(((W_TAUXCHARGESPAT*W_PROVISIONCONGESa)/10000)+1/2)
	       W_PROVISIONCONGES=INT((W_PROVISIONCONGESa+W_PROVISIONCONGESb)+1/2)

  	       W_PROVISIONCONGESTOTAL=W_PROVISIONCONGESTOTAL+W_PROVISIONCONGES

  	       ENR_CONTRAT<86>=ENR_CONTRAT<86>+W_PROVISIONCONGES
	   END
       END
   END

RETURN

***********************************************************
***********************************************************
* CALCUL DE LA REPRISE DE PROVISION DE CONGES PAYES

40 *

   W_MONTANTREPRISEPROV=0
   W_MONTANTREPRISECOURS=0
   W_MONTANTREPRISECOURS2=0

   IF ENR_CONTRAT<31>=0 AND ENR_CONTRAT<94>=1 THEN

      * TEST SI CONTRAT SE TERMINE SUR PERIODE
      IF ENR_CONTRAT<8><=W_PERIODEFIN AND ENR_CONTRAT<8><>"" OR W_PERIODECOURS=ENR_CONTRAT<58> THEN
           * CALCUL MONTANT REPRISE PROVISION
	   W_MONTANTREPRISEPROV=INT((ENR_CONTRAT<85>+ENR_CONTRAT<86>)+1/2)
           ENR_CONTRAT<85>=0
           ENR_CONTRAT<86>=0
           W_CUMULMONTANTREPRISEPROV=W_CUMULMONTANTREPRISEPROV+W_MONTANTREPRISEPROV
      END ELSE
	   * CALCUL MONTANT REPRISE PROVISION
   	   W_NBJOURABSCONGES=ENR_DETAILCALCUL<47>
	
	   W_NBJOURCONGESMAXI=ENR_CONTRAT<39>+ENR_CONTRAT<41>+ENR_CONTRAT<48>
   	   W_PROVISIONMAXI=ENR_CONTRAT<85>

           IF W_NBJOURABSCONGES<>0 THEN
	       * SI NB MAXI ACQUIS < NB JOUR PRIS
               IF W_NBJOURCONGESMAXI<W_NBJOURABSCONGES THEN
		    W_NBJOURCONGESCOURS=ENR_CONTRAT<44>-ENR_CONTRAT<83>
		    W_PROVISIONCOURS=ENR_CONTRAT<86>
                    IF W_NBJOURCONGESMAXI<>0 THEN 
***   		        W_MONTANTREPRISECOURS=INT((ENR_CONTRAT<85>*((W_NBJOURABSCONGES-W_NBJOURCONGESMAXI)/W_NBJOURCONGESMAXI))+1/2)
   		        W_MONTANTREPRISECOURS=ENR_CONTRAT<85>
			* PREND SUR DROITS EN COURS SI PAS ASSEZ PROVISION
			W_NBJOURABSCONGES=W_NBJOURABSCONGES-W_NBJOURCONGESMAXI
   		        W_MONTANTREPRISECOURS2=INT((ENR_CONTRAT<86>*((W_NBJOURABSCONGES)/W_NBJOURCONGESCOURS))+1/2)	

		        ENR_CONTRAT<85>=ENR_CONTRAT<85>-W_MONTANTREPRISECOURS
                    END ELSE
			IF W_NBJOURABSCONGES<W_NBJOURCONGESCOURS THEN
   		            W_MONTANTREPRISECOURS=INT((ENR_CONTRAT<86>*((W_NBJOURABSCONGES)/W_NBJOURCONGESCOURS))+1/2)
			END
                    END
		     
		    W_MONTANTREPRISEPROV=W_MONTANTREPRISECOURS+W_MONTANTREPRISECOURS2

		    IF W_MONTANTREPRISECOURS2<>0 THEN
             	        ENR_CONTRAT<86>=ENR_CONTRAT<86>-W_MONTANTREPRISECOURS2
		    END ELSE
             	        ENR_CONTRAT<86>=ENR_CONTRAT<86>-W_MONTANTREPRISECOURS
		    END
	            W_CUMULMONTANTREPRISEPROV=W_CUMULMONTANTREPRISEPROV+W_MONTANTREPRISEPROV

	       END ELSE
    	           IF W_NBJOURCONGESMAXI<>0 THEN W_MONTANTREPRISEPROV=INT((W_PROVISIONMAXI*(W_NBJOURABSCONGES/W_NBJOURCONGESMAXI))+1/2)

	           ENR_CONTRAT<85>=ENR_CONTRAT<85>-(W_MONTANTREPRISEPROV-W_MONTANTREPRISECOURS)
***        	   ENR_CONTRAT<86>=ENR_CONTRAT<86>-W_MONTANTREPRISECOURS
	           W_CUMULMONTANTREPRISEPROV=W_CUMULMONTANTREPRISEPROV+W_MONTANTREPRISEPROV	
	       END
        

	 END

         * TEST SI SOLDE PROVISION A FAIRE CE MOIS
 	 IF W_MOISFIN=W_FINCONGES AND W_CLOTCONGES=1 THEN   	   
	       W_MONTANTREPRISEPROV=INT((ENR_CONTRAT<85>+1/2))
 	       ENR_CONTRAT<85>=0
	       W_CUMULMONTANTREPRISEPROV=W_CUMULMONTANTREPRISEPROV+W_MONTANTREPRISEPROV
         END
      END
   END

RETURN

***********************************************************
***********************************************************
* CALCUL DES FRAIS DE GESTION

50 *

    IF ENR_ELTSPARTEMP<13><>"" THEN
        * LECTURE DU DETAIL DU BAREME
        READ ENR_BAREMEPARTEMP FROM F.BAREMEPARTEMP,ENR_ELTSPARTEMP<13> ELSE
	    *PRINT "ERREUR BAREMEPARTEMP"
        END

	* SI FONCTION DU BRUT ACQUIS       
        IF ENR_BAREMEPARTEMP<2>=3 THEN
          IF W_FINTRIM=0 THEN
	      W_BASEFRAISGESTION=W_BASEFRAISGESTION+ENR_DETAILCALCUL<7>
	      W_CUMULFRAISGESTION=W_CUMULFRAISGESTION+ENR_DETAILCALCUL<7>
          END ELSE
            IF W_PERIODECOURS=W_PERIODEMOIS-2 THEN
	      W_BASEFRAISGESTION1=W_BASEFRAISGESTION1+ENR_DETAILCALCUL<7>
              W_FRAISGESTION1=W_FRAISGESTION1+ENR_DETAILCALCUL<7>
            END ELSE
              IF W_PERIODECOURS=W_PERIODEMOIS-1 THEN
	        W_BASEFRAISGESTION2=W_BASEFRAISGESTION2+ENR_DETAILCALCUL<7>
                W_FRAISGESTION2=W_FRAISGESTION2+ENR_DETAILCALCUL<7>
              END ELSE
  	        W_BASEFRAISGESTION3=W_BASEFRAISGESTION3+ENR_DETAILCALCUL<7>
                W_FRAISGESTION3=W_FRAISGESTION3+ENR_DETAILCALCUL<7>
              END
            END
          END
	END

	* SI FONCTION HRES PAYEES  
        IF ENR_BAREMEPARTEMP<2>=2 THEN
          IF W_FINTRIM=0 THEN
	      W_BASEFRAISGESTION=W_BASEFRAISGESTION+ENR_DETAILCALCUL<6>
	      W_CUMULFRAISGESTION=W_CUMULFRAISGESTION+ENR_DETAILCALCUL<6>
          END ELSE
            IF W_PERIODECOURS=W_PERIODEMOIS-2 THEN
	      W_BASEFRAISGESTION1=W_BASEFRAISGESTION1+ENR_DETAILCALCUL<6>
              W_FRAISGESTION1=W_FRAISGESTION1+ENR_DETAILCALCUL<6>
            END ELSE
              IF W_PERIODECOURS=W_PERIODEMOIS-1 THEN
	        W_BASEFRAISGESTION2=W_BASEFRAISGESTION2+ENR_DETAILCALCUL<6>
                W_FRAISGESTION2=W_FRAISGESTION2+ENR_DETAILCALCUL<6>
              END ELSE
 	        W_BASEFRAISGESTION3=W_BASEFRAISGESTION3+ENR_DETAILCALCUL<6>
                W_FRAISGESTION3=W_FRAISGESTION3+ENR_DETAILCALCUL<6>
              END
            END
          END
	END

	* SI FONCTION HRES TRAVAILLEES       
	IF ENR_BAREMEPARTEMP<2>=1 THEN
	    I=1
	    LOOP
	         UNTIL ENR_DETAILCALCUL<2,I>="" DO

	         * LECTURE RUBRIQUE DE SAISIE
  	         READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<2,I> ELSE
		      *PRINT "ERREUR RUBSAISIE"
	         END

  	         * SI RUBRIQUE TYPE M.O.D OU M.O.D J.F
	         IF ENR_RUBSAISIE<2>="3" OR ENR_RUBSAISIE<2>="4" THEN
                 IF W_FINTRIM=0 THEN
		       IF ENR_RUBSAISIE<8>="2" THEN
			    IF ENR_RUBSAISIE<9>>="1000000" THEN
				   W_BASEFRAISGESTION=W_BASEFRAISGESTION+ENR_DETAILCALCUL<3,I>
	  		         W_CUMULFRAISGESTION=W_CUMULFRAISGESTION+ENR_DETAILCALCUL<3,I>
			    END ELSE
				IF ENR_ASSOCIATION<8> = "14017" THEN
				   * Pour Caen, on ne proratise pas les heures 
				   W_BASEFRAISGESTION=W_BASEFRAISGESTION+ENR_DETAILCALCUL<3,I>
	  		         W_CUMULFRAISGESTION=W_CUMULFRAISGESTION+ENR_DETAILCALCUL<3,I>
				END ELSE
				   W_BASEFRAISGESTION=W_BASEFRAISGESTION+INT((ENR_DETAILCALCUL<3,I>*ENR_RUBSAISIE<9>/1000000)+1/2)
	  		         W_CUMULFRAISGESTION=W_CUMULFRAISGESTION+INT((ENR_DETAILCALCUL<3,I>*ENR_RUBSAISIE<9>/1000000)+1/2)
				END
			    END
		       END ELSE
			    W_BASEFRAISGESTION=W_BASEFRAISGESTION+ENR_DETAILCALCUL<3,I>
			    W_CUMULFRAISGESTION=W_CUMULFRAISGESTION+ENR_DETAILCALCUL<3,I>
		       END
                 END ELSE
                   IF W_PERIODECOURS=W_PERIODEMOIS-2 THEN
		       IF ENR_RUBSAISIE<8>="2" THEN
			    IF ENR_RUBSAISIE<9>>="1000000" THEN
				   W_BASEFRAISGESTION1=W_BASEFRAISGESTION1+ENR_DETAILCALCUL<3,I>
	  		         W_FRAISGESTION1=W_FRAISGESTION1+ENR_DETAILCALCUL<3,I>
			    END ELSE
				IF ENR_ASSOCIATION<8> = "14017" THEN
				   * Pour Caen, on ne proratise pas les heures 
				   W_BASEFRAISGESTION=W_BASEFRAISGESTION+ENR_DETAILCALCUL<3,I>
	  		         W_CUMULFRAISGESTION=W_CUMULFRAISGESTION+ENR_DETAILCALCUL<3,I>
				END ELSE
				   W_BASEFRAISGESTION=W_BASEFRAISGESTION+INT((ENR_DETAILCALCUL<3,I>*ENR_RUBSAISIE<9>/1000000)+1/2)
	  		         W_CUMULFRAISGESTION=W_CUMULFRAISGESTION+INT((ENR_DETAILCALCUL<3,I>*ENR_RUBSAISIE<9>/1000000)+1/2)
				END
			    END
		       END ELSE
			    W_BASEFRAISGESTION1=W_BASEFRAISGESTION1+ENR_DETAILCALCUL<3,I>
			    W_FRAISGESTION1=W_FRAISGESTION1+ENR_DETAILCALCUL<3,I>
		       END
                   END ELSE
                     IF W_PERIODECOURS=W_PERIODEMOIS-1 THEN
		       IF ENR_RUBSAISIE<8>="2" THEN
			    IF ENR_RUBSAISIE<9>>="1000000" THEN	
				   W_BASEFRAISGESTION2=W_BASEFRAISGESTION2+ENR_DETAILCALCUL<3,I>
	  		         W_FRAISGESTION2=W_FRAISGESTION2+ENR_DETAILCALCUL<3,I>
			    END ELSE
				IF ENR_ASSOCIATION<8> = "14017" THEN
				   * Pour Caen, on ne proratise pas les heures 
				   W_BASEFRAISGESTION=W_BASEFRAISGESTION+ENR_DETAILCALCUL<3,I>
	  		         W_CUMULFRAISGESTION=W_CUMULFRAISGESTION+ENR_DETAILCALCUL<3,I>
				END ELSE
				   W_BASEFRAISGESTION=W_BASEFRAISGESTION+INT((ENR_DETAILCALCUL<3,I>*ENR_RUBSAISIE<9>/1000000)+1/2)
	  		         W_CUMULFRAISGESTION=W_CUMULFRAISGESTION+INT((ENR_DETAILCALCUL<3,I>*ENR_RUBSAISIE<9>/1000000)+1/2)
				END
			    END
		       END ELSE
			    W_BASEFRAISGESTION2=W_BASEFRAISGESTION2+ENR_DETAILCALCUL<3,I>
			    W_FRAISGESTION2=W_FRAISGESTION2+ENR_DETAILCALCUL<3,I>
		       END
                     END ELSE
		       IF ENR_RUBSAISIE<8>="2" THEN
			    IF ENR_RUBSAISIE<9>>="1000000" THEN
 				   W_BASEFRAISGESTION3=W_BASEFRAISGESTION3+ENR_DETAILCALCUL<3,I>
	  		         W_FRAISGESTION3=W_FRAISGESTION3+ENR_DETAILCALCUL<3,I>
			    END ELSE
				IF ENR_ASSOCIATION<8> = "14017" THEN
				   * Pour Caen, on ne proratise pas les heures 
				   W_BASEFRAISGESTION=W_BASEFRAISGESTION+ENR_DETAILCALCUL<3,I>
	  		         W_CUMULFRAISGESTION=W_CUMULFRAISGESTION+ENR_DETAILCALCUL<3,I>
				END ELSE
				   W_BASEFRAISGESTION=W_BASEFRAISGESTION+INT((ENR_DETAILCALCUL<3,I>*ENR_RUBSAISIE<9>/1000000)+1/2)
	  		         W_CUMULFRAISGESTION=W_CUMULFRAISGESTION+INT((ENR_DETAILCALCUL<3,I>*ENR_RUBSAISIE<9>/1000000)+1/2)
				END
			    END
		       END ELSE
			    W_BASEFRAISGESTION3=W_BASEFRAISGESTION3+ENR_DETAILCALCUL<3,I>
			    W_FRAISGESTION3=W_FRAISGESTION3+ENR_DETAILCALCUL<3,I>
		       END
                     END
                   END
                 END
	         END

  	         I=I+1
   	    REPEAT
	END

	* SI FONCTION DES RUBRIQUES DE SAISIES
	IF ENR_BAREMEPARTEMP<2>=4 THEN
	    I=1
	    LOOP
	         UNTIL ENR_DETAILCALCUL<2,I>="" DO

		 * RECHERCHE SI RUB. PRESENTE DANS BAREMEPARTEMP
		 J=1
		 LOOP
		      UNTIL ENR_BAREMEPARTEMP<9,J>=ENR_DETAILCALCUL<2,I> OR ENR_BAREMEPARTEMP<9,J>="" DO
		      J=J+1
		 REPEAT

		 * SI RUB. PRESENTE
		 IF ENR_BAREMEPARTEMP<9,J>=ENR_DETAILCALCUL<2,I> THEN

		      * RECHERCHE SI RUB. DEJA AFFECTEE
		      GOSUB 200

		      W_ASSIETTEFRAISGESTION<K,1>=ENR_DETAILCALCUL<2,I>
		      IF ENR_BAREMEPARTEMP<10,J>="B" THEN
  		           W_ASSIETTEFRAISGESTION<K,2>=W_ASSIETTEFRAISGESTION<K,2>+INT((ENR_DETAILCALCUL<3,I>*ENR_BAREMEPARTEMP<11,J>/1000)+1/2)
		      END ELSE		      
  		           W_ASSIETTEFRAISGESTION<K,2>=W_ASSIETTEFRAISGESTION<K,2>+INT((ENR_DETAILCALCUL<5,I>*ENR_BAREMEPARTEMP<11,J>/1000)+1/2)
		      END
		      
  		      W_ASSIETTEFRAISGESTION<K,3>=W_ASSIETTEFRAISGESTION<K,3>+ENR_DETAILCALCUL<3,I>
  		      W_ASSIETTEFRAISGESTION<K,4>=ENR_BAREMEPARTEMP<11,J>

		      W_MONTANTASSIETTEFRAISGEST=W_MONTANTASSIETTEFRAISGEST+W_ASSIETTEFRAISGESTION<K,2>
		 END

  	         I=I+1
   	    REPEAT
	END

	* CALCULE LA VALEUR DES FRAIS DE GESTION

	IF ENR_BAREMEPARTEMP<2><>4 AND W_FINTRIM=0 THEN
	     * RECHERCHE RANG DANS BAREME
             I=1
	     LOOP 
	          UNTIL ENR_BAREMEPARTEMP<4,I>>W_CUMULFRAISGESTION AND ENR_BAREMEPARTEMP<3,I><=W_CUMULFRAISGESTION OR ENR_BAREMEPARTEMP<3,I>="" DO
 	          I=I+1
	     REPEAT

  	     * APPLIQUE LA PART FIXE + COMPLEMENT
	   IF ENR_BAREMEPARTEMP<3,I><>"" THEN
	       IF ENR_BAREMEPARTEMP<2>=3 THEN
		       W_FRAISGESTION=ENR_BAREMEPARTEMP<5,I>+((W_CUMULFRAISGESTION-ENR_BAREMEPARTEMP<3,I>)*(ENR_BAREMEPARTEMP<6,I>/10000))
	       END ELSE
		       W_FRAISGESTION=ENR_BAREMEPARTEMP<5,I>+((W_CUMULFRAISGESTION-ENR_BAREMEPARTEMP<3,I>)*(ENR_BAREMEPARTEMP<6,I>/100))
	       END
	       W_FRAISGESTION=INT((W_FRAISGESTION)+1/2)
	    END ELSE
	       W_FRAISGESTION=0
	    END

	END
    END

RETURN

***********************************************************
***********************************************************
* CALCUL MAJORATION PAR BULLETIN

60 *

	W_VALEURMAJORATION=ENR_BAREMEPARTEMP<8>
	IF W_FINTRIM=0 THEN
		W_NBBULLETIN=W_NBBULLETIN+1
	END ELSE
		IF W_PERIODECOURS=W_PERIODEMOIS-2 THEN
			W_NBBULLETIN1=W_NBBULLETIN1+1
		END ELSE
			IF W_PERIODECOURS=W_PERIODEMOIS-1 THEN
				W_NBBULLETIN2=W_NBBULLETIN2+1
            END ELSE
				W_NBBULLETIN3=W_NBBULLETIN3+1
            END
        END
	END

RETURN

***********************************************************
***********************************************************
* CALCUL DES FRAIS D'OUVERTURE DE DOSSIER

70 *

   W_NBFRAISDOSSIER=0

	READ ENR_ACTIVITESAIDE FROM F.ACTIVITESAIDE,W_CODEAIDE ELSE
	     *PRINT "ERREUR ACTIVITESAIDE"
	     ENR_ACTIVITESAIDE=""
	END

	* VERIFIE ACTIVITESAIDE 
	IF ENR_ACTIVITESAIDE<>"" THEN
	     J=1
	     LOOP 
		  UNTIL ENR_ACTIVITESAIDE<1,J>="" DO
		  
		  IF ENR_ACTIVITESAIDE<1,J>[1,3]=W_CODEENTITE THEN
		       * VERIFIE SI ACTIVITES TYPE MANDATAIRE
		       READ ENR_ACTIVITES FROM F.ACTIVITES,ENR_ACTIVITESAIDE<1,J> ELSE
		            *PRINT "ERREUR ACTIVITES"
		       END

		       IF ENR_ACTIVITES<12>="M" THEN
			    IF ENR_ACTIVITESAIDE<2,J>="" THEN				
				 * RECHERCHE DATE DEBUT DANS DETAILCALCUL
				 K=1
				 LOOP
				      UNTIL ENR_DETAILCALCUL<26,K>=ENR_ACTIVITESAIDE<1,J> OR ENR_DETAILCALCUL<26,K>="" DO
				      K=K+1
				 REPEAT 
    			         IF ENR_DETAILCALCUL<26,K><>"" THEN
				      * AFFECTE DATE DEBUT PERIODE
				      ENR_ACTIVITESAIDE<2,J>=ICONV("01/":W_PERIODECOURS[5,2]:"/":W_PERIODECOURS[1,4],"D4/")
					   
				      WRITE ENR_ACTIVITESAIDE ON F.ACTIVITESAIDE,W_CODEAIDE
					ENR_ACTIVITESBISAIDE = ""
					WRITE ENR_ACTIVITESBISAIDE ON F.ACTIVITESBISAIDE, W_CODEAIDE:ENR_ACTIVITESAIDE<1,J>:ENR_ACTIVITESAIDE<2,J>
	
				
                                      IF W_NBFRAISDOSSIER<>-1 OR W_AFFECTFRAISDOSSIER=1 THEN
 				           W_NBFRAISDOSSIER=1
                                           W_VALEURFRAISDOSSIER=ENR_BAREMEPARTEMP<7>*W_NBFRAISDOSSIER
                                      END
                                 END
                           END ELSE
				 IF ENR_ACTIVITESAIDE<2,J><=W_PERIODEFIN AND ENR_ACTIVITESAIDE<2,J>>=W_PERIODEDEBUT THEN
				      W_AFFECTFRAISDOSSIER=1
				      W_NBFRAISDOSSIER=1
				      W_VALEURFRAISDOSSIER=ENR_BAREMEPARTEMP<7>*W_NBFRAISDOSSIER
				 END ELSE
			              IF ENR_ACTIVITESAIDE<2,J><=W_PERIODEDEBUT THEN
					   W_AFFECTFRAISDOSSIER=0
	                                   W_NBFRAISDOSSIER=-1
          	                           W_VALEURFRAISDOSSIER=0
				      END
				 END
                           END
		       END		       
		  END
		  J=J+1
	     REPEAT
	END

RETURN

***********************************************************
***********************************************************
* CALCUL DES COMPLEMENTS DE FACTURATION

80 *

   READ ENR_COMPLFACT FROM F.COMPLFACT,W_CODEAIDE:W_CODEENTITE:"M" THEN

   J=1
   LOOP
	UNTIL ENR_COMPLFACT<1,J>="" DO

	* TEST PERIODE POUR VOIR SI PAS DEJA TRAITE
	IF ENR_COMPLFACT<8,J>="" OR ENR_COMPLFACT<8,J><W_PERIODECOURS THEN
	    IF ENR_COMPLFACT<9,J>="" OR ENR_COMPLFACT<9,J><=W_PERIODECOURS THEN

		GOSUB 109

		W_MONTANTCOMPLFACT=W_MONTANTCOMPLFACT+ENR_COMPLFACT<4,J>

		IF ENR_COMPLFACT<7,J>#"1" AND ENR_COMPLFACT<7,J>#"2" THEN		;* PAS DE REPORT
			ENR_COMPLFACT=DELETE(ENR_COMPLFACT,1,J)
			ENR_COMPLFACT=DELETE(ENR_COMPLFACT,2,J)
			ENR_COMPLFACT=DELETE(ENR_COMPLFACT,3,J)
			ENR_COMPLFACT=DELETE(ENR_COMPLFACT,4,J)
			ENR_COMPLFACT=DELETE(ENR_COMPLFACT,5,J)
			ENR_COMPLFACT=DELETE(ENR_COMPLFACT,6,J)
			ENR_COMPLFACT=DELETE(ENR_COMPLFACT,7,J)
			ENR_COMPLFACT=DELETE(ENR_COMPLFACT,8,J)
			ENR_COMPLFACT=DELETE(ENR_COMPLFACT,9,J)
			* modif vanes 17/11/08
			ENR_COMPLFACT=DELETE(ENR_COMPLFACT,10,J)
			*****
			J=J-1
		END ELSE
			IF ENR_COMPLFACT<7,J>=1 THEN				;* REPORT A 0
				ENR_COMPLFACT<2,J>=""
				ENR_COMPLFACT<3,J>=""
				ENR_COMPLFACT<4,J>=0
				ENR_COMPLFACT<8,J>=W_PERIODECOURS
			END ELSE						;* REPORT
				ENR_COMPLFACT<8,J>=W_PERIODECOURS
			END
			IF ENR_COMPLFACT<9,J> # "" THEN
	    			IF W_PERIODECOURS[5,2]>="12" THEN
		    			ENR_COMPLFACT<9,J> = W_PERIODECOURS[1,4]+1:"01"
	    			END ELSE
		    			ENR_COMPLFACT<9,J> = W_PERIODECOURS+1
	    			END
			END
		END
	    END
	    J=J+1
	END ELSE
		J=J+1
	END
   REPEAT
	
   WRITE ENR_COMPLFACT TO F.COMPLFACT,W_CODEAIDE:W_CODEENTITE:"M"

   IF ENR_COMPLFACT<1>="" THEN DELETE F.COMPLFACT,W_CODEAIDE:W_CODEENTITE:"M"

   END

RETURN

***********************************************************
***********************************************************
* CALCUL DES COTISATIONS ANNUELLES

90 *

   READ ENR_COTISANAIDE FROM F.COTISANAIDE,W_CODEAIDE:W_CODEENTITE ELSE
	ENR_COTISANAIDE=""
	W_ERREURCOTISAN=1
   END

   * TEST SI COTISATION ANNUELLE OU ANNIVERSAIRE
   IF ENR_ASSOCIATION<32,1>="A" THEN	
	* SI MOIS JANVIER OU FICHIER NON EXISTANT
	IF W_PERIODECOURS[5,2]="01" OR W_ERREURCOTISAN=1 THEN
	     W_MONTANTCOTIS=ENR_ASSOCIATION<31,1>
	     * RECHERCHE SI PERIODE PAS AFFECTEE
	     J=1
	     LOOP
		  UNTIL ENR_COTISANAIDE<1,J>=W_PERIODECOURS OR ENR_COTISANAIDE<1,J>="" DO
		  J=J+1
	     REPEAT

	     IF ENR_COTISANAIDE<1,J>="" THEN	
   	          ENR_COTISANAIDE<1,-1>=W_PERIODECOURS
	          ENR_COTISANAIDE<2,-1>=W_MONTANTCOTIS
	     END
	END ELSE
	     * RECHERCHE SI PERIODE PAS AFFECTEE
	     J=1
	     LOOP
		  UNTIL ENR_COTISANAIDE<1,J>[1,4]=W_PERIODECOURS[1,4] OR ENR_COTISANAIDE<1,J>="" DO
		  J=J+1
	     REPEAT

	     * SI PERIODE PAS TROUVEE
 	     IF ENR_COTISANAIDE<1,J>="" THEN
	          W_MONTANTCOTIS=ENR_ASSOCIATION<31,1>
	          ENR_COTISANAIDE<1,-1>=W_PERIODECOURS
	          ENR_COTISANAIDE<2,-1>=W_MONTANTCOTIS
	     END
	END		
	
   END ELSE
	* SI MOIS ANNIVERSAIRE	

        * RECHERCHE SI ANNEE EN COURS DEJA AFFECTEE
	J=1
	LOOP
	     UNTIL ENR_COTISANAIDE<1,J>="" DO
	     J=J+1
	REPEAT

	IF J>1 THEN J=J-1

	* SI PERIODE PAS TROUVEE ALORS RECHERCHE PERIODE -1
	IF ENR_COTISANAIDE<1,J><>"" THEN
	     W_DIFFNBAN=0
	     W_DIFFNBAN=W_PERIODECOURS[1,4]-ENR_COTISANAIDE<1,J>[1,4]
             IF ENR_COTISANAIDE<1,J>[1,4]<W_PERIODECOURS[1,4] OR ENR_COTISANAIDE<1,J>="" THEN
     	          * SI PERIODE -1 PAS TROUVEE
	          IF ENR_COTISANAIDE<1,J><>"" THEN
		       * TEST MOIS PERIODE -1
		       IF W_PERIODECOURS[5,2]>=ENR_COTISANAIDE<1,J>[5,2] OR W_DIFFNBAN>1 THEN
		            W_MONTANTCOTIS=ENR_ASSOCIATION<31,1>
	                    ENR_COTISANAIDE<1,-1>=W_PERIODECOURS
	                    ENR_COTISANAIDE<2,-1>=W_MONTANTCOTIS
		       END
	          END ELSE
                       W_MONTANTCOTIS=ENR_ASSOCIATION<31,1>
	               ENR_COTISANAIDE<1,-1>=W_PERIODECOURS
	               ENR_COTISANAIDE<2,-1>=W_MONTANTCOTIS
	          END
	     END
	END ELSE
             W_MONTANTCOTIS=ENR_ASSOCIATION<31,1>
	     ENR_COTISANAIDE<1,-1>=W_PERIODECOURS
	     ENR_COTISANAIDE<2,-1>=W_MONTANTCOTIS	  
	END
   END

   ***********************************************************
   * CONSTITUTION DU FICHIER FACTURAIDE (APPEL COTISATION)   
   GOSUB 110

RETURN

***********************************************************
***********************************************************
* GESTION DES ACCORDS

99 *

   W_TOTALHRESRETRO="99999"

   L=1
   LOOP
        UNTIL ENR_FACTURAIDE<5,L>="" DO
        W_MONTANTELEMENTS=W_MONTANTELEMENTS+ENR_FACTURAIDE<5,L>
        L=L+1
   REPEAT

   W_MONTANTELEMENTSAV=W_MONTANTELEMENTS

   W_TYPEACCORDANC=0
   W_TYPEACCORD=0
   W_FINACCORD="FAUX"
   W_NBACCORD=0
*****
   W_NBACCORD2=0
   W_ACCORDRATTRAP=""
   W_ACCORDTRI2=""
*****
   W_TYPEORG=""
   W_ACCORDSANSRATTRAP=""
   W_ACCORDTRI1=""
   W_RANGACCORD=0

   * SI GESTION TRIMESTRE
   IF W_FINTRIM=1 THEN
       W_PERIODEDEBUTACC=ICONV("01/":W_PERIODECOURS[5,2]:"/":W_PERIODECOURS[1,4],"D4/")
       IF W_PERIODECOURS[5,2]<>"12" THEN
           W_PERIODEFINACC=ICONV("01/":W_PERIODECOURS[5,2]+1:"/":W_PERIODECOURS[1,4],"D4/")-1
       END ELSE
           W_PERIODEFINACC=ICONV("01/01/":W_PERIODECOURS[1,4]+1,"D4/")-1
       END
   END ELSE
       W_PERIODEDEBUTACC=W_PERIODEDEBUT
       W_PERIODEFINACC=W_PERIODEFIN
   END

   * LECTURE DES ACCORDS DE L'AIDE
   W_NUMACCORD="001"
   
   LOOP
       * LECTURE FICHIER ACCORD
       READ ENR_ACCORD FROM F.ACCORD,W_CODEAIDE:W_NUMACCORD ELSE
            W_FINACCORD="VRAI"
       END
       UNTIL W_FINACCORD="VRAI" DO

       W_CODEORGANISMECHARGE=ENR_ACCORD<1>
       W_CODEACCORD=W_CODEAIDE:W_NUMACCORD

       * LECTURE ORGPRISECHARGE DE L'ACCORD
       READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,ENR_ACCORD<1> ELSE
	    *PRINT "ERREUR ORGPRISECHG":ENR_ACCORD<1>
       END

       * SI ACCORD SUR ENTITE + NON SUPPRIME
       IF ENR_ORGPRISECHARGE<46>=W_CODEENTITE AND ENR_ACCORD<18><>"O" THEN
	    READ ENR_ACTIVITES FROM F.ACTIVITES,ENR_ORGPRISECHARGE<47,1> ELSE
		 *PRINT "ERREUR ACTIVITES"
	    END
	    * SI ACTIVITE MANDATAIRE
	    IF ENR_ACTIVITES<12>="M" THEN
		 * TEST SI ACCORD ACTIF SUR PERIODE (1)
		 IF ENR_ACCORD<5><=W_PERIODEFINACC AND ENR_ACCORD<6>>=W_PERIODEDEBUTACC AND ENR_ACCORD<18><>"O" THEN 

*** RAJOUT // GESTION DES ORGANISMES EXCLUSIVEMENT DIM ET J.F    13/11/2000
		      * TESTE SI ORGANISME DIM. ET J.F EXCLUSIF
		      IF ENR_ORGPRISECHARGE<51>="1" THEN
		           W_RANGACCORD=0
      		      END ELSE
			   W_RANGACCORD=ENR_ACCORD<8>
      	              END

		      * TEST SI HISTORIQUE ACCORD RENSEIGNE
	              IF ENR_ACCORD<14>="" THEN

		           * MISE EN TABLE DES ACCORDS
		           W_NBACCORD2=W_NBACCORD2+1
	   	        
		           W_ACCORDRATTRAP<W_NBACCORD2,1>=W_CODEAIDE:W_NUMACCORD
		           W_ACCORDRATTRAP<W_NBACCORD2,2>=W_RANGACCORD
		           W_ACCORDRATTRAP<W_NBACCORD2,3>=ENR_ACCORD<5>
		           W_ACCORDRATTRAP<W_NBACCORD2,4>=ENR_ACCORD<6>
		           W_ACCORDRATTRAP<W_NBACCORD2,5>=ENR_ACCORD<1>
		      END
			   
		      * MISE EN TABLE DES ACCORDS
		      W_NBACCORD=W_NBACCORD+1
	   	        
		      W_ACCORDSANSRATTRAP<W_NBACCORD,1>=W_CODEAIDE:W_NUMACCORD
		      W_ACCORDSANSRATTRAP<W_NBACCORD,2>=W_RANGACCORD
		      W_ACCORDSANSRATTRAP<W_NBACCORD,3>=ENR_ACCORD<5>
		      W_ACCORDSANSRATTRAP<W_NBACCORD,4>=ENR_ACCORD<6>
		      W_ACCORDSANSRATTRAP<W_NBACCORD,5>=ENR_ACCORD<1>
		     
		 END ELSE
		      IF ENR_ACCORD<14>="" AND ENR_ACCORD<18><>"O" THEN
		           * EFFECTUE EFFET RETROACTIF SUR ACCORD

  		           * TESTE SI ORGANISME DIM. ET J.F EXCLUSIF
		           IF ENR_ORGPRISECHARGE<51>="1" THEN
		                W_RANGACCORD=0
      		           END ELSE
			        W_RANGACCORD=ENR_ACCORD<8>
      	                   END

		           * MISE EN TABLE DES ACCORDS
		           W_NBACCORD2=W_NBACCORD2+1
	   	        
		           W_ACCORDRATTRAP<W_NBACCORD2,1>=W_CODEAIDE:W_NUMACCORD
		           W_ACCORDRATTRAP<W_NBACCORD2,2>=W_RANGACCORD
		           W_ACCORDRATTRAP<W_NBACCORD2,3>=ENR_ACCORD<5>
		           W_ACCORDRATTRAP<W_NBACCORD2,4>=ENR_ACCORD<6>
		           W_ACCORDRATTRAP<W_NBACCORD2,5>=ENR_ACCORD<1>
		      END
		 END
	    END
       END

       W_NUMACCORD=W_NUMACCORD+1 "R%3"
   REPEAT

   IF W_ACCORDRATTRAP<1><>"" THEN
       * TRI DES ACCORDS AVEC RATTRAP
       GOSUB 211
   END

   IF W_ACCORDSANSRATTRAP<1><>"" THEN
       * TRI DES ACCORDS SANS RATTRAP
       GOSUB 210
   END

   * GESTION DROITS SUR ACCORD RETROACTIF
   GOSUB 320

   W_MONTANTELEMENTS=0

   * GESTION DROITS SUR ACCORD
   GOSUB 310

RETURN

***********************************************************
***********************************************************
* ECRITURE DU FICHIER FACTURAIDE

100 *

    IF ENR_BAREMEPARTEMP<2><>4 THEN
        * CONSTITUTION DU FICHIER FACTURAIDE (CHG. URSSAF)
        IF ENR_ELTSPARTEMP<8>="1" THEN GOSUB 102

        * CONSTITUTION DU FICHIER FACTURAIDE (COTIS. PREV.)
        GOSUB 103

        * CONSTITUTION DU FICHIER FACTURAIDE (PROVISION CONGES)
        GOSUB 104

        * CONSTITUTION DU FICHIER FACTURAIDE (REPRISE PROVISION CONGES)
        GOSUB 105
    END ELSE
	ENR_FACTURAIDE<13>=3
    END

    * CONSTITUTION DU FICHIER FACTURAIDE (FRAIS DE GESTION)
    GOSUB 106

    * CONSTITUTION DU FICHIER FACTURAIDE (MAJORATION PAR BULLETIN)
    GOSUB 107

    * CONSTITUTION DU FICHIER FACTURAIDE (FRAIS OUVERTURE DOSSIER)
    GOSUB 108

    * CALCULE LE MONTANT DES DEPENSES ENGAGEES
    J=1
    LOOP
	 UNTIL ENR_FACTURAIDE<5,J>="" DO
	 IF ENR_FACTURAIDE<5,J><>"0" THEN
	      W_DEPENGAGEES=W_DEPENGAGEES+ENR_FACTURAIDE<5,J>
         END
	 J=J+1
    REPEAT

    * VERIFICATION QU'AU MOINS UNE MV EN ATT.5 EST <> DE 0
    W_AFFECTPOSSIBLE=0
    J=1
    LOOP
	 UNTIL ENR_FACTURAIDE<5,J>="" DO
	 IF ENR_FACTURAIDE<5,J><>"0" THEN
	      W_AFFECTPOSSIBLE=1
         END
	 J=J+1
    REPEAT

    * AFFECTATION ATTRIBUT 10
    ENR_FACTURAIDE<10>=ENR_NOMAIDANT<1>

    * ECRITURE FACTURAIDE
    IF ENR_FACTURAIDE<5><>"" AND W_AFFECTPOSSIBLE=1 AND W_ERREURDETAILCALCUL=0 THEN
       	* FAIT LE TOTAL DES ATTRIBUTS 5
*	I=1
*       W_TOTALSOMME=0
*	LOOP
*	     UNTIL ENR_FACTURAIDE<5,I>="" DO
*	     W_TOTALSOMME=W_TOTALSOMME+ENR_FACTURAIDE<5,I>
*	     I=I+1
*	REPEAT

	ENR_FACTURAIDE<8>=W_TAUXTVA
	* modif vanes 17/11/2008
	* ENR_FACTURAIDE<9>=INT((W_SOUMISTVA*W_TAUXTVA/10000)+1/2)
	****
        ENR_FACTURAIDE<11>="0"
       
        * ECRITURE STATACTAIDE
        WRITE ENR_STATACTAIDE ON F.STATACTAIDE,W_CODEAIDE:W_CODEENTITE:W_PERIODECOURS
    END ELSE
	ENR_FACTURAIDE=""
        ENR_FACTURAIDE<11>="0"
    END
RETURN

***********************************************************
***********************************************************
* CONSTITUTION DU FICHIER FACTURAIDE (MONTANT SALAIRE A PAYER)

101 *

    IF W_MONTANTSALPAYERCOURS<>0 THEN
  	W_NBAIDANT=W_NBAIDANT+1

        ENR_FACTURAIDE<1,W_NBAIDANT>=W_PERIODECOURS
        ENR_FACTURAIDE<2,W_NBAIDANT>="SALAIRE VERSE A ":ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>
	IF W_HEURESALPAYERCOURS = 0 THEN
        	ENR_FACTURAIDE<3,W_NBAIDANT>=""
	END ELSE
        	ENR_FACTURAIDE<3,W_NBAIDANT>=W_HEURESALPAYERCOURS
	END
        ENR_FACTURAIDE<4,W_NBAIDANT>=""
        ENR_FACTURAIDE<5,W_NBAIDANT>=W_MONTANTSALPAYERCOURS
        IF ENR_COMPTESPART<3>="" THEN ENR_COMPTESPART<3>=ENR_COMPTESPART<9>
        ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_COMPTESPART<3>
        ENR_FACTURAIDE<7,W_NBAIDANT>=""
	ENR_FACTURAIDE<14,W_NBAIDANT>=0
	ENR_FACTURAIDE<15,W_NBAIDANT>=""
	* modif vanes 17/11/08
	ENR_FACTURAIDE<16,W_NBAIDANT>="N"
	****
    END
    GOSUB 201

RETURN

***********************************************************
***********************************************************
* CONSTITUTION DU FICHIER FACTURAIDE (CHG. URSSAF)

102 *
   
    W_MONTANTDETAIL=0
    W_MONTANTCHGAPPELEES=0

    IF W_MONTANTCHGURSSAFPAT+W_MONTANTCHGURSSAFSAL<>0 THEN
        W_NBAIDANT=W_NBAIDANT+1

        * VERIFICATION SI MOIS DNT POUR GESTION 195 SMIC
	IF W_MOISDNT=1 THEN
	     * LECTURE DETAILCHGPARTEMP
	     READ ENR_DETAILCHGPARTEMP FROM F.DETAILCHGPARTEMP,W_CODEAIDE:W_ANNEE:W_TRIMESTRE THEN
		  * RECUPERATION SOMME COTISEE
		  READ ENR_PROVISIONDNT FROM F.PROVISIONDNT,W_CODEAIDE:W_ANNEE:W_TRIMESTRE ELSE ENR_PROVISIONDNT=""
		  IF ENR_PROVISIONDNT<1>="" THEN ENR_PROVISIONDNT<1>=0
		  IF ENR_PROVISIONDNT<2>="" THEN ENR_PROVISIONDNT<2>=0
		  W_MONTANTDNT=ENR_PROVISIONDNT<1>+ENR_PROVISIONDNT<2>
		  FOR I=6 TO 13
                      W_MONTANTDETAIL=W_MONTANTDETAIL+ENR_DETAILCHGPARTEMP<I>
	        NEXT I	
		  IF ENR_DETAILCHGPARTEMP<5>="" THEN ENR_DETAILCHGPARTEMP<5>=0
		  W_MONTANTDETAIL=W_MONTANTDETAIL*100
		  W_MONTANTCHGAPPELEES=W_MONTANTDETAIL-W_MONTANTDNT-(ENR_DETAILCHGPARTEMP<5>*100)
	     END ELSE
		  READ ENR_PROVISIONDNT FROM F.PROVISIONDNT,W_CODEAIDE:W_ANNEE:W_TRIMESTRE ELSE ENR_PROVISIONDNT=""
		  * TRAITEMENT NORMAL
	 	  * VERIFICATION SI EXO + 70 ANS ET < 65 X SMIC
		  IF ENR_ELTSPARTEMP<9>="02" THEN
	  	      * SI > 65 SMIC
            	      IF W_BASEPARTEMP>(65*W_TAUXSMIC) THEN
		          W_MONTANTCHGAPPELEES=(W_BASEPARTEMP/100*W_TAUX<3,W_RANGCOURS>/100000)+((W_BASEPARTEMP/100-(65*W_TAUXSMIC/100))*W_TAUX<1,W_RANGCOURS>/100000)+((65*W_TAUXSMIC/100)*W_TAUX<2,W_RANGCOURS>/100000)
		          W_MONTANTCHGAPPELEES=INT(W_MONTANTCHGAPPELEES*100+1/2)
	 	      END ELSE
			  * SI EXO + 70 ANS ET < 65 SMIC ALORS MONTANT CHG = CHG PAT + CHG SAL
			  W_MONTANTCHGAPPELEES=W_MONTANTCHGURSSAFPAT+W_MONTANTCHGURSSAFSAL
		      END
		  END ELSE
		      W_MONTANTCHGAPPELEES=W_MONTANTCHGURSSAFPAT+W_MONTANTCHGURSSAFSAL
		  END
	     END

	     * MAJ ATT3 DE PROVISIONDNT + ECRITURE
  	     * ENR_PROVISIONDNT<3>=W_MONTANTCHGAPPELEES
	     * WRITE ENR_PROVISIONDNT ON F.PROVISIONDNT,W_CODEAIDE:W_ANNEE:W_TRIMESTRE

	END ELSE
	     READ ENR_PROVISIONDNT FROM F.PROVISIONDNT,W_CODEAIDE:W_ANNEE:W_TRIMESTRE ELSE ENR_PROVISIONDNT=""
	     * TRAITEMENT NORMAL
 	     * VERIFICATION SI EXO + 70 ANS ET < 65 X SMIC
	     IF ENR_ELTSPARTEMP<9>="02" THEN
	         * SI > 65 SMIC
                 IF W_BASEPARTEMP>(65*W_TAUXSMIC) THEN
		     W_MONTANTCHGAPPELEES=(W_BASEPARTEMP/100*W_TAUX<3,W_RANGCOURS>/100000)+((W_BASEPARTEMP/100-(65*W_TAUXSMIC/100))*W_TAUX<1,W_RANGCOURS>/100000)+((65*W_TAUXSMIC/100)*W_TAUX<2,W_RANGCOURS>/100000)
		     W_MONTANTCHGAPPELEES=INT(W_MONTANTCHGAPPELEES*100+1/2)
	         END
	     END

	     * MAJ ATT3 DE PROVISIONDNT + ECRITURE

	     IF W_MONTANTCHGAPPELEES=0 THEN W_MONTANTCHGAPPELEES=W_MONTANTCHGURSSAFPAT+W_MONTANTCHGURSSAFSAL

  	     * ENR_PROVISIONDNT<W_MOISCOURS>=W_MONTANTCHGAPPELEES
	     * WRITE ENR_PROVISIONDNT ON F.PROVISIONDNT,W_CODEAIDE:W_ANNEE:W_TRIMESTRE
	END 

        W_MONTANTAGED=0
	* VERIFICATION SI EXO AGED
	IF ENR_ELTSPARTEMP<9>="01" AND ENR_ELTSPARTEMP<10><>"" THEN

		W_CHGGLOBALE=W_BASEPARTEMP * ((W_TAUX<3,W_RANGCOURS>+W_TAUX<1,W_RANGCOURS>)/100000)

	     	W_MONTANTAGED=(W_CHGGLOBALE)*((10000-ENR_ELTSPARTEMP<10>)/10000)
	   	W_MONTANTAGED=INT(W_MONTANTAGED+1/2)
	     	* VERIF. SI CHG URSSAF < PLAFOND
	     	IF W_MONTANTAGED > ENR_ELTSPARTEMP<11> THEN
			W_MONTANTAGED = ENR_ELTSPARTEMP<11>
	     	END 
	     	W_MONTANTAGED=W_CHGGLOBALE-W_MONTANTAGED

		* calcul du brut fictif
		W_BrutFictif=W_MONTANTAGED * 100000/(W_TAUX<3,W_RANGCOURS>+W_TAUX<1,W_RANGCOURS>)
		W_BrutFictif=INT(W_BrutFictif+1/2)

		* abattement 15 pts
		W_Abat=W_BrutFictif*0.15
		W_MONTANTAGED=W_MONTANTAGED-W_Abat

		* charge  facturer
		W_MONTANTAGED=INT(W_MONTANTAGED+(1/2))
  	END


        ENR_FACTURAIDE<1,W_NBAIDANT>=W_PERIODECOURS
        ENR_FACTURAIDE<2,W_NBAIDANT>="CHARGES APPELEES PAR L'URSSAF"
        ENR_FACTURAIDE<3,W_NBAIDANT>=""
        ENR_FACTURAIDE<4,W_NBAIDANT>=""
	IF W_MONTANTCHGAPPELEES=0 THEN
	     IF W_MONTANTAGED=0 THEN
                  ENR_FACTURAIDE<5,W_NBAIDANT>=W_MONTANTCHGURSSAFPAT+W_MONTANTCHGURSSAFSAL
	     END ELSE
                  ENR_FACTURAIDE<5,W_NBAIDANT>=W_MONTANTAGED
	     END
	END ELSE
	     IF W_MONTANTAGED=0 THEN
                  ENR_FACTURAIDE<5,W_NBAIDANT>=W_MONTANTCHGAPPELEES
	     END ELSE
                  ENR_FACTURAIDE<5,W_NBAIDANT>=W_MONTANTAGED
	     END             
	END
        IF ENR_COMPTESPART<5>="" THEN ENR_COMPTESPART<5>=ENR_COMPTESPART<9>
        ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_COMPTESPART<5>
        ENR_FACTURAIDE<7,W_NBAIDANT>=""
	ENR_FACTURAIDE<14,W_NBAIDANT>=0
	ENR_FACTURAIDE<15,W_NBAIDANT>=""
	* modif vanes 17/11/08
	ENR_FACTURAIDE<16,W_NBAIDANT>="N"
	****
	
  	ENR_PROVISIONDNT<W_MOISCOURS>=ENR_FACTURAIDE<5,W_NBAIDANT>
	WRITE ENR_PROVISIONDNT ON F.PROVISIONDNT,W_CODEAIDE:W_ANNEE:W_TRIMESTRE

    END

RETURN

***********************************************************
***********************************************************
* CONSTITUTION DU FICHIER FACTURAIDE (COTIS. PREV.)

103 *

    IF W_MONTANTCOTISPREV<>0 THEN
        W_NBAIDANT=W_NBAIDANT+1

        ENR_FACTURAIDE<1,W_NBAIDANT>=W_PERIODECOURS
        ENR_FACTURAIDE<2,W_NBAIDANT>="CHARGES PREVOYANCE"
        ENR_FACTURAIDE<3,W_NBAIDANT>=""
        ENR_FACTURAIDE<4,W_NBAIDANT>=""
        ENR_FACTURAIDE<5,W_NBAIDANT>=W_MONTANTCOTISPREV
        IF ENR_COMPTESPART<6>="" THEN ENR_COMPTESPART<6>=ENR_COMPTESPART<9>
        ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_COMPTESPART<6>
        ENR_FACTURAIDE<7,W_NBAIDANT>=""
		ENR_FACTURAIDE<14,W_NBAIDANT>=0
        ENR_FACTURAIDE<15,W_NBAIDANT>=""
		* modif vanes 17/11/08
		ENR_FACTURAIDE<16,W_NBAIDANT>="N"
		****		
    END

RETURN

***********************************************************
***********************************************************
* CONSTITUTION DU FICHIER FACTURAIDE (PROVISION CONGES)

104 *

    IF W_PROVISIONCONGESTOTAL<>0 THEN
        W_NBAIDANT=W_NBAIDANT+1

        ENR_FACTURAIDE<1,W_NBAIDANT>=W_PERIODECOURS
        ENR_FACTURAIDE<2,W_NBAIDANT>="PROVISION POUR CONGES PAYES"
        ENR_FACTURAIDE<3,W_NBAIDANT>=""
        ENR_FACTURAIDE<4,W_NBAIDANT>=""
        ENR_FACTURAIDE<5,W_NBAIDANT>=W_PROVISIONCONGESTOTAL
        IF ENR_COMPTESPART<4>="" THEN ENR_COMPTESPART<4>=ENR_COMPTESPART<9>
        ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_COMPTESPART<4>
        ENR_FACTURAIDE<7,W_NBAIDANT>=""
		ENR_FACTURAIDE<14,W_NBAIDANT>=0
        ENR_FACTURAIDE<15,W_NBAIDANT>=""
		* modif vanes 17/11/08
		ENR_FACTURAIDE<16,W_NBAIDANT>="N"
		****	
    END

RETURN

***********************************************************
***********************************************************
* CONSTITUTION DU FICHIER FACTURAIDE (REPRISE PROVISION CONGES)

105 *

    IF W_CUMULMONTANTREPRISEPROV<>0 THEN
        W_NBAIDANT=W_NBAIDANT+1

        ENR_FACTURAIDE<1,W_NBAIDANT>=W_PERIODECOURS
        ENR_FACTURAIDE<2,W_NBAIDANT>="REPRISE PROVISIONS POUR CONGES PAYES"
        ENR_FACTURAIDE<3,W_NBAIDANT>=""
        ENR_FACTURAIDE<4,W_NBAIDANT>=""
        ENR_FACTURAIDE<5,W_NBAIDANT>=-W_CUMULMONTANTREPRISEPROV
        IF ENR_COMPTESPART<4>="" THEN ENR_COMPTESPART<4>=ENR_COMPTESPART<9>
        ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_COMPTESPART<4>
        ENR_FACTURAIDE<7,W_NBAIDANT>=""
		ENR_FACTURAIDE<14,W_NBAIDANT>=0
        ENR_FACTURAIDE<15,W_NBAIDANT>=""
		* modif vanes 17/11/08
		ENR_FACTURAIDE<16,W_NBAIDANT>="N"
		****	
    END

RETURN

***********************************************************
***********************************************************
* CONSTITUTION DU FICHIER FACTURAIDE (FRAIS GESTION)

106 *
  IF W_FINTRIM=0 THEN
    IF W_FRAISGESTION<>0 AND ENR_BAREMEPARTEMP<2><>4 THEN
        W_NBAIDANT=W_NBAIDANT+1

        ENR_FACTURAIDE<1,W_NBAIDANT>=W_PERIODECOURS
        ENR_FACTURAIDE<2,W_NBAIDANT>="FRAIS DE GESTION"
        ENR_FACTURAIDE<3,W_NBAIDANT>=W_BASEFRAISGESTION
        ENR_FACTURAIDE<4,W_NBAIDANT>=""
        ENR_FACTURAIDE<5,W_NBAIDANT>=W_FRAISGESTION
        W_SOUMISTVA=W_SOUMISTVA+W_FRAISGESTION
        IF ENR_COMPTESPART<7>="" THEN ENR_COMPTESPART<7>=ENR_COMPTESPART<9>
        ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_COMPTESPART<7>
        ENR_FACTURAIDE<7,W_NBAIDANT>=""
		ENR_FACTURAIDE<14,W_NBAIDANT>=0
        ENR_FACTURAIDE<15,W_NBAIDANT>=""
		* modif vanes 17/11/08
		IF W_GestionTVA="VRAI" THEN
			ENR_FACTURAIDE<16,W_NBAIDANT>="O"
		END ELSE
			ENR_FACTURAIDE<16,W_NBAIDANT>="N"			
		END
		********		
    END ELSE
        IF W_ASSIETTEFRAISGESTION<>0 THEN
	    L=1
	    LOOP
	        UNTIL W_ASSIETTEFRAISGESTION<L,1>="" DO
                W_NBAIDANT=W_NBAIDANT+1
   
                READ ENR_RUBSAISIE FROM F.RUBSAISIE,W_ASSIETTEFRAISGESTION<L,1> ELSE ENR_RUBSAISIE=""
                ENR_FACTURAIDE<1,W_NBAIDANT>=W_PERIODECOURS
                ENR_FACTURAIDE<2,W_NBAIDANT>=ENR_RUBSAISIE<1>
                ENR_FACTURAIDE<3,W_NBAIDANT>=W_ASSIETTEFRAISGESTION<L,3>
                ENR_FACTURAIDE<4,W_NBAIDANT>=W_ASSIETTEFRAISGESTION<L,4>
                ENR_FACTURAIDE<5,W_NBAIDANT>=W_ASSIETTEFRAISGESTION<L,2>
                W_SOUMISTVA=W_SOUMISTVA+W_ASSIETTEFRAISGESTION<L,2>
                IF ENR_COMPTESPART<7>="" THEN ENR_COMPTESPART<7>=ENR_COMPTESPART<9>
                ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_COMPTESPART<7>
                ENR_FACTURAIDE<7,W_NBAIDANT>=""
				ENR_FACTURAIDE<14,W_NBAIDANT>=0
                ENR_FACTURAIDE<15,W_NBAIDANT>=""
				* modif vanes 17/11/08
				IF W_GestionTVA="VRAI" THEN
					ENR_FACTURAIDE<16,W_NBAIDANT>="O"
				END ELSE
					ENR_FACTURAIDE<16,W_NBAIDANT>="N"			
				END
				********				 
                L=L+1
            REPEAT
        END
    END
  END ELSE
	IF ENR_BAREMEPARTEMP<12> = "1" THEN
		IF W_FRAISGESTION1 + W_FRAISGESTION2 + W_FRAISGESTION3 # 0 THEN
			
			W_FRAISGESTIONTRIM = W_FRAISGESTION1 + W_FRAISGESTION2 + W_FRAISGESTION3
			W_BASEFRAISGESTIONTRIM = W_BASEFRAISGESTION1 + W_BASEFRAISGESTION2 + W_BASEFRAISGESTION3
			
			I=1
			LOOP 
			UNTIL ENR_BAREMEPARTEMP<4,I>>W_FRAISGESTIONTRIM AND ENR_BAREMEPARTEMP<3,I><=W_FRAISGESTIONTRIM OR ENR_BAREMEPARTEMP<3,I>="" DO
				I=I+1
			REPEAT
			
			IF ENR_BAREMEPARTEMP<3,I><>"" THEN
				IF ENR_BAREMEPARTEMP<2>=3 THEN
					W_FRAISGESTION=ENR_BAREMEPARTEMP<5,I>+((W_FRAISGESTIONTRIM-ENR_BAREMEPARTEMP<3,I>)*(ENR_BAREMEPARTEMP<6,I>/10000))
				END ELSE
					W_FRAISGESTION=ENR_BAREMEPARTEMP<5,I>+((W_FRAISGESTIONTRIM-ENR_BAREMEPARTEMP<3,I>)*(ENR_BAREMEPARTEMP<6,I>/100))
				END
				W_FRAISGESTION=INT(W_FRAISGESTION+1/2)
			END ELSE
				W_FRAISGESTION=0
			END
			
			W_NBAIDANT=W_NBAIDANT+1
			ENR_FACTURAIDE<1,W_NBAIDANT>=W_PERIODEMOIS
			ENR_FACTURAIDE<2,W_NBAIDANT>="FRAIS DE GESTION"
			ENR_FACTURAIDE<3,W_NBAIDANT>=W_BASEFRAISGESTIONTRIM
			ENR_FACTURAIDE<4,W_NBAIDANT>=""
			ENR_FACTURAIDE<5,W_NBAIDANT>=W_FRAISGESTION
			W_SOUMISTVA=W_SOUMISTVA+W_FRAISGESTION
			
			IF ENR_COMPTESPART<7>="" THEN ENR_COMPTESPART<7>=ENR_COMPTESPART<9>
			
			ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_COMPTESPART<7>
			ENR_FACTURAIDE<7,W_NBAIDANT>=""
			ENR_FACTURAIDE<14,W_NBAIDANT>=0
			ENR_FACTURAIDE<15,W_NBAIDANT>=""
			* modif vanes 17/11/08
			IF W_GestionTVA="VRAI" THEN
				ENR_FACTURAIDE<16,W_NBAIDANT>="O"
			END ELSE
				ENR_FACTURAIDE<16,W_NBAIDANT>="N"
			END
			********
		END
	END ELSE
	    IF W_FRAISGESTION1#0 THEN
	      I=1
	      LOOP 
	        UNTIL ENR_BAREMEPARTEMP<4,I>>W_FRAISGESTION1 AND ENR_BAREMEPARTEMP<3,I><=W_FRAISGESTION1 OR ENR_BAREMEPARTEMP<3,I>="" DO
	         I=I+1
	      REPEAT
	      IF ENR_BAREMEPARTEMP<3,I><>"" THEN
			IF ENR_BAREMEPARTEMP<2>=3 THEN
				W_FRAISGESTION=ENR_BAREMEPARTEMP<5,I>+((W_FRAISGESTION1-ENR_BAREMEPARTEMP<3,I>)*(ENR_BAREMEPARTEMP<6,I>/10000))
			END ELSE
	          W_FRAISGESTION=ENR_BAREMEPARTEMP<5,I>+((W_FRAISGESTION1-ENR_BAREMEPARTEMP<3,I>)*(ENR_BAREMEPARTEMP<6,I>/100))
	        END
	        W_FRAISGESTION=INT(W_FRAISGESTION+1/2)
	      END ELSE
	        W_FRAISGESTION=0
	      END
	      W_NBAIDANT=W_NBAIDANT+1
	      ENR_FACTURAIDE<1,W_NBAIDANT>=W_PERIODEMOIS-2
	      ENR_FACTURAIDE<2,W_NBAIDANT>="FRAIS DE GESTION"
	      ENR_FACTURAIDE<3,W_NBAIDANT>=W_BASEFRAISGESTION1
	      ENR_FACTURAIDE<4,W_NBAIDANT>=""
	      ENR_FACTURAIDE<5,W_NBAIDANT>=W_FRAISGESTION
	      W_SOUMISTVA=W_SOUMISTVA+W_FRAISGESTION
	      IF ENR_COMPTESPART<7>="" THEN ENR_COMPTESPART<7>=ENR_COMPTESPART<9>
	      ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_COMPTESPART<7>
	      ENR_FACTURAIDE<7,W_NBAIDANT>=""
	      ENR_FACTURAIDE<14,W_NBAIDANT>=0
	      ENR_FACTURAIDE<15,W_NBAIDANT>=""
		  * modif vanes 17/11/08
		  IF W_GestionTVA="VRAI" THEN
				ENR_FACTURAIDE<16,W_NBAIDANT>="O"
		  END ELSE
				ENR_FACTURAIDE<16,W_NBAIDANT>="N"
		  END
		  ********		  
	    END
		IF W_FRAISGESTION2#0 THEN
			I=1
			LOOP 
			UNTIL ENR_BAREMEPARTEMP<4,I>>W_FRAISGESTION2 AND ENR_BAREMEPARTEMP<3,I><=W_FRAISGESTION2 OR ENR_BAREMEPARTEMP<3,I>="" DO
				I=I+1
			REPEAT
			IF ENR_BAREMEPARTEMP<3,I><>"" THEN
				IF ENR_BAREMEPARTEMP<2>=3 THEN
					W_FRAISGESTION=ENR_BAREMEPARTEMP<5,I>+((W_FRAISGESTION2-ENR_BAREMEPARTEMP<3,I>)*(ENR_BAREMEPARTEMP<6,I>/10000))
				END ELSE
					W_FRAISGESTION=ENR_BAREMEPARTEMP<5,I>+((W_FRAISGESTION2-ENR_BAREMEPARTEMP<3,I>)*(ENR_BAREMEPARTEMP<6,I>/100))
				END
				W_FRAISGESTION=INT(W_FRAISGESTION+1/2)
			END ELSE
				W_FRAISGESTION=0
			END
	      W_NBAIDANT=W_NBAIDANT+1
	      ENR_FACTURAIDE<1,W_NBAIDANT>=W_PERIODEMOIS-1
	      ENR_FACTURAIDE<2,W_NBAIDANT>="FRAIS DE GESTION"
	      ENR_FACTURAIDE<3,W_NBAIDANT>=W_BASEFRAISGESTION2
	      ENR_FACTURAIDE<4,W_NBAIDANT>=""
	      ENR_FACTURAIDE<5,W_NBAIDANT>=W_FRAISGESTION
	      W_SOUMISTVA=W_SOUMISTVA+W_FRAISGESTION
	      IF ENR_COMPTESPART<7>="" THEN ENR_COMPTESPART<7>=ENR_COMPTESPART<9>
	      ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_COMPTESPART<7>
	      ENR_FACTURAIDE<7,W_NBAIDANT>=""
	      ENR_FACTURAIDE<14,W_NBAIDANT>=0
	      ENR_FACTURAIDE<15,W_NBAIDANT>=""
		  * modif vanes 17/11/08
		  IF W_GestionTVA="VRAI" THEN
				ENR_FACTURAIDE<16,W_NBAIDANT>="O"
		  END ELSE
				ENR_FACTURAIDE<16,W_NBAIDANT>="N"
		  END
		  ********			  
		  
	    END
	    IF W_FRAISGESTION3#0 THEN
	      I=1
	      LOOP 
	        UNTIL ENR_BAREMEPARTEMP<4,I>>W_FRAISGESTION3 AND ENR_BAREMEPARTEMP<3,I><=W_FRAISGESTION3 OR ENR_BAREMEPARTEMP<3,I>="" DO
	         I=I+1
	      REPEAT
	      IF ENR_BAREMEPARTEMP<3,I><>"" THEN
		IF ENR_BAREMEPARTEMP<2>=3 THEN
		  W_FRAISGESTION=ENR_BAREMEPARTEMP<5,I>+((W_FRAISGESTION3-ENR_BAREMEPARTEMP<3,I>)*(ENR_BAREMEPARTEMP<6,I>/10000))
		END ELSE
	          W_FRAISGESTION=ENR_BAREMEPARTEMP<5,I>+((W_FRAISGESTION3-ENR_BAREMEPARTEMP<3,I>)*(ENR_BAREMEPARTEMP<6,I>/100))
	        END
	        W_FRAISGESTION=INT(W_FRAISGESTION+1/2)
	      END ELSE
	        W_FRAISGESTION=0
	      END
	      W_NBAIDANT=W_NBAIDANT+1
	      ENR_FACTURAIDE<1,W_NBAIDANT>=W_PERIODEMOIS
	      ENR_FACTURAIDE<2,W_NBAIDANT>="FRAIS DE GESTION"
	      ENR_FACTURAIDE<3,W_NBAIDANT>=W_BASEFRAISGESTION3
	      ENR_FACTURAIDE<4,W_NBAIDANT>=""
	      ENR_FACTURAIDE<5,W_NBAIDANT>=W_FRAISGESTION
	      W_SOUMISTVA=W_SOUMISTVA+W_FRAISGESTION
	      IF ENR_COMPTESPART<7>="" THEN ENR_COMPTESPART<7>=ENR_COMPTESPART<9>
	      ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_COMPTESPART<7>
	      ENR_FACTURAIDE<7,W_NBAIDANT>=""
	      ENR_FACTURAIDE<14,W_NBAIDANT>=0
	      ENR_FACTURAIDE<15,W_NBAIDANT>=""
		  * modif vanes 17/11/08
		  IF W_GestionTVA="VRAI" THEN
				ENR_FACTURAIDE<16,W_NBAIDANT>="O"
		  END ELSE
				ENR_FACTURAIDE<16,W_NBAIDANT>="N"
		  END
		  ********			  
	    END
	END
  END
RETURN

***********************************************************
***********************************************************
* CONSTITUTION DU FICHIER FACTURAIDE (MAJORATION PAR BULLETIN)

107 *

    IF W_VALEURMAJORATION<>0 AND W_VALEURMAJORATION<>"" THEN
	
		IF W_FINTRIM=0 THEN
			IF W_NBBULLETIN > 1  THEN
				W_NBBULLETIN=W_NBBULLETIN-1	
				W_NBAIDANT=W_NBAIDANT+1

				ENR_FACTURAIDE<1,W_NBAIDANT>=W_PERIODECOURS
				ENR_FACTURAIDE<2,W_NBAIDANT>="MAJORATION PAR BULLETIN SUPPLEMENTAIRE"
				ENR_FACTURAIDE<3,W_NBAIDANT>=W_NBBULLETIN*100
				* PASSAGE A 3 DEC. SI BAREME FCT RUB. SAISIE
				IF ENR_BAREMEPARTEMP<2>=4 THEN
					IF W_VALEURMAJORATION<>"" THEN W_VALEURMAJORATION=W_VALEURMAJORATION*10
				END
				ENR_FACTURAIDE<4,W_NBAIDANT>=W_VALEURMAJORATION
				ENR_FACTURAIDE<5,W_NBAIDANT>=W_NBBULLETIN*W_VALEURMAJORATION
				W_SOUMISTVA=W_SOUMISTVA+ENR_FACTURAIDE<5,W_NBAIDANT>
				IF ENR_COMPTESPART<7>="" THEN ENR_COMPTESPART<7>=ENR_COMPTESPART<9>
				ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_COMPTESPART<7>
				ENR_FACTURAIDE<7,W_NBAIDANT>=""
				ENR_FACTURAIDE<14,W_NBAIDANT>=0
				ENR_FACTURAIDE<15,W_NBAIDANT>=""
				* modif vanes 17/11/08
				IF W_GestionTVA="VRAI" THEN
					ENR_FACTURAIDE<16,W_NBAIDANT>="O"
				END ELSE
					ENR_FACTURAIDE<16,W_NBAIDANT>="N"
				END
				********					
			END
		END ELSE

			IF W_NBBULLETIN1 > 1 THEN
				W_NBAIDANT=W_NBAIDANT+1
				W_NBBULLETIN1=W_NBBULLETIN1-1						
					
				ENR_FACTURAIDE<1,W_NBAIDANT>=W_PERIODEMOIS-2
				ENR_FACTURAIDE<2,W_NBAIDANT>="MAJORATION PAR BULLETIN SUPPLEMENTAIRE"
				ENR_FACTURAIDE<3,W_NBAIDANT>=W_NBBULLETIN1*100
				* PASSAGE A 3 DEC. SI BAREME FCT RUB. SAISIE
				IF ENR_BAREMEPARTEMP<2>=4 THEN
					IF W_VALEURMAJORATION<>"" THEN W_VALEURMAJORATION=W_VALEURMAJORATION*10
				END
				ENR_FACTURAIDE<4,W_NBAIDANT>=W_VALEURMAJORATION
				ENR_FACTURAIDE<5,W_NBAIDANT>=W_NBBULLETIN1*W_VALEURMAJORATION
				W_SOUMISTVA=W_SOUMISTVA+ENR_FACTURAIDE<5,W_NBAIDANT>
				IF ENR_COMPTESPART<7>="" THEN ENR_COMPTESPART<7>=ENR_COMPTESPART<9>
				ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_COMPTESPART<7>
				ENR_FACTURAIDE<7,W_NBAIDANT>=""
				ENR_FACTURAIDE<14,W_NBAIDANT>=0
				ENR_FACTURAIDE<15,W_NBAIDANT>=""
				* modif vanes 17/11/08
				IF W_GestionTVA="VRAI" THEN
					ENR_FACTURAIDE<16,W_NBAIDANT>="O"
				END ELSE
					ENR_FACTURAIDE<16,W_NBAIDANT>="N"
				END
				********					
			END

			IF W_NBBULLETIN2 > 1  THEN
				W_NBAIDANT=W_NBAIDANT+1
				W_NBBULLETIN2=W_NBBULLETIN2-1						
				
				ENR_FACTURAIDE<1,W_NBAIDANT>=W_PERIODEMOIS-1
				ENR_FACTURAIDE<2,W_NBAIDANT>="MAJORATION PAR BULLETIN SUPPLEMENTAIRE"
				ENR_FACTURAIDE<3,W_NBAIDANT>=W_NBBULLETIN2*100
				* PASSAGE A 3 DEC. SI BAREME FCT RUB. SAISIE
				IF ENR_BAREMEPARTEMP<2>=4 THEN
					IF W_VALEURMAJORATION<>"" THEN W_VALEURMAJORATION=W_VALEURMAJORATION*10
				END
				ENR_FACTURAIDE<4,W_NBAIDANT>=W_VALEURMAJORATION
				ENR_FACTURAIDE<5,W_NBAIDANT>=W_NBBULLETIN2*W_VALEURMAJORATION
				W_SOUMISTVA=W_SOUMISTVA+ENR_FACTURAIDE<5,W_NBAIDANT>
				IF ENR_COMPTESPART<7>="" THEN ENR_COMPTESPART<7>=ENR_COMPTESPART<9>
				ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_COMPTESPART<7>
				ENR_FACTURAIDE<7,W_NBAIDANT>=""
				ENR_FACTURAIDE<14,W_NBAIDANT>=0
				ENR_FACTURAIDE<15,W_NBAIDANT>=""
				* modif vanes 17/11/08
				IF W_GestionTVA="VRAI" THEN
					ENR_FACTURAIDE<16,W_NBAIDANT>="O"
				END ELSE
					ENR_FACTURAIDE<16,W_NBAIDANT>="N"
				END
				********					
			END

			IF W_NBBULLETIN3 > 1 THEN
				W_NBAIDANT=W_NBAIDANT+1
				W_NBBULLETIN3=W_NBBULLETIN3-1
					
				ENR_FACTURAIDE<1,W_NBAIDANT>=W_PERIODEMOIS
				ENR_FACTURAIDE<2,W_NBAIDANT>="MAJORATION PAR BULLETIN SUPPLEMENTAIRE"
				ENR_FACTURAIDE<3,W_NBAIDANT>=W_NBBULLETIN3*100
				* PASSAGE A 3 DEC. SI BAREME FCT RUB. SAISIE
				IF ENR_BAREMEPARTEMP<2>=4 THEN
					IF W_VALEURMAJORATION<>"" THEN W_VALEURMAJORATION=W_VALEURMAJORATION*10
				END
				ENR_FACTURAIDE<4,W_NBAIDANT>=W_VALEURMAJORATION
				ENR_FACTURAIDE<5,W_NBAIDANT>=W_NBBULLETIN3*W_VALEURMAJORATION
				W_SOUMISTVA=W_SOUMISTVA+ENR_FACTURAIDE<5,W_NBAIDANT>
				IF ENR_COMPTESPART<7>="" THEN ENR_COMPTESPART<7>=ENR_COMPTESPART<9>
				ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_COMPTESPART<7>
				ENR_FACTURAIDE<7,W_NBAIDANT>=""
				ENR_FACTURAIDE<14,W_NBAIDANT>=0
				ENR_FACTURAIDE<15,W_NBAIDANT>=""
				* modif vanes 17/11/08
				IF W_GestionTVA="VRAI" THEN
					ENR_FACTURAIDE<16,W_NBAIDANT>="O"
				END ELSE
					ENR_FACTURAIDE<16,W_NBAIDANT>="N"
				END
				********					
			END
		END
    END

RETURN

***********************************************************
***********************************************************
* CONSTITUTION DU FICHIER FACTURAIDE (FRAIS OUVERTURE DOSSIER)

108 *

    IF W_VALEURFRAISDOSSIER<>0 THEN
        W_NBAIDANT=W_NBAIDANT+1

        ENR_FACTURAIDE<1,W_NBAIDANT>=W_PERIODECOURS
        ENR_FACTURAIDE<2,W_NBAIDANT>="FRAIS OUVERTURE DE DOSSIER"
        ENR_FACTURAIDE<3,W_NBAIDANT>=""
        ENR_FACTURAIDE<4,W_NBAIDANT>=""
        ENR_FACTURAIDE<5,W_NBAIDANT>=W_VALEURFRAISDOSSIER
        W_SOUMISTVA=W_SOUMISTVA+W_VALEURFRAISDOSSIER
        IF ENR_COMPTESPART<7>="" THEN ENR_COMPTESPART<7>=ENR_COMPTESPART<9>
        ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_COMPTESPART<7>
        ENR_FACTURAIDE<7,W_NBAIDANT>=""
		ENR_FACTURAIDE<14,W_NBAIDANT>=0
        ENR_FACTURAIDE<15,W_NBAIDANT>=""
		* modif vanes 17/11/08
		IF W_GestionTVA="VRAI" THEN
			ENR_FACTURAIDE<16,W_NBAIDANT>="O"
		END ELSE
			ENR_FACTURAIDE<16,W_NBAIDANT>="N"
		END
		********			
    END

RETURN

***********************************************************
***********************************************************
* CONSTITUTION DU FICHIER FACTURAIDE (COMPLEMENTS FACTURATION)

109 *

    IF ENR_COMPLFACT<5,J><>0 THEN
        W_NBAIDANT=W_NBAIDANT+1

        ENR_FACTURAIDE<1,W_NBAIDANT>=ENR_COMPLFACT<9,J>
        ENR_FACTURAIDE<2,W_NBAIDANT>=ENR_COMPLFACT<1,J>
        ENR_FACTURAIDE<3,W_NBAIDANT>=ENR_COMPLFACT<2,J>
		* PASSAGE A 3 DEC. SI BAREME FCT RUB. SAISIE
		IF ENR_BAREMEPARTEMP<2>=4 THEN
			IF ENR_COMPLFACT<3,J><>"" THEN ENR_COMPLFACT<3,J>=ENR_COMPLFACT<3,J>*10
		END
        ENR_FACTURAIDE<4,W_NBAIDANT>=ENR_COMPLFACT<3,J>
        ENR_FACTURAIDE<5,W_NBAIDANT>=ENR_COMPLFACT<4,J>
        W_SOUMISTVA=W_SOUMISTVA+ENR_COMPLFACT<4,J>
        ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_COMPLFACT<5,J>
        ENR_FACTURAIDE<7,W_NBAIDANT>=ENR_COMPLFACT<6,J>

		* ECRITURE VALEUR "SANS INCIDENCE COMPTA" SI COMPLFACT<5>=""
		IF ENR_COMPLFACT<5,J>="" THEN 
			ENR_FACTURAIDE<14,W_NBAIDANT>=1
		END ELSE
			ENR_FACTURAIDE<14,W_NBAIDANT>=0
		END	
        ENR_FACTURAIDE<15,W_NBAIDANT>=""
		* modif vanes 17/11/08
		IF W_GestionTVA="VRAI" AND ENR_COMPLFACT<10,J>="O" THEN
			ENR_FACTURAIDE<16,W_NBAIDANT>="O"
		END ELSE
			ENR_FACTURAIDE<16,W_NBAIDANT>="N"				
		END
		********		
	END

RETURN

***********************************************************
***********************************************************
* CONSTITUTION DU FICHIER FACTURAIDE (APPEL COTISATION)

110 *

*****************************************
* Modif Matthieu
*    IF W_MONTANTCOTIS<>0 THEN
    IF W_MONTANTCOTIS<>0 AND ENR_COTISANAIDE<3> # "1" THEN
        W_NBAIDANT=W_NBAIDANT+1

        ENR_FACTURAIDE<1,W_NBAIDANT>=W_PERIODECOURS
        ENR_FACTURAIDE<2,W_NBAIDANT>="COTISATION ANNUELLE"
        ENR_FACTURAIDE<3,W_NBAIDANT>=""
        ENR_FACTURAIDE<4,W_NBAIDANT>=""
        ENR_FACTURAIDE<5,W_NBAIDANT>=W_MONTANTCOTIS
        IF ENR_COMPTESPART<8>="" THEN ENR_COMPTESPART<8>=ENR_COMPTESPART<9>
        ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_COMPTESPART<8>
        ENR_FACTURAIDE<7,W_NBAIDANT>=""
		ENR_FACTURAIDE<14,W_NBAIDANT>=0
        ENR_FACTURAIDE<15,W_NBAIDANT>=""
		* modif vanes 17/11/08
		ENR_FACTURAIDE<16,W_NBAIDANT>="N"
		****		
    END

RETURN

***********************************************************
***********************************************************
* CONSTITUTION DU FICHIER FACTURORG (ACCORD SUR LE MOIS)
* CONSTITUTION DU FICHIER FACTURAIDE (ACCORD PART. 1)

111 *

    IF W_TYPEORG="H" THEN
		IF W_MONTANTPARTORG2<>0 THEN
			W_NBAIDANT=W_NBAIDANT+1
			ENR_FACTURORG=""
			ENR_FACTURAIDE<1,W_NBAIDANT>=W_PERIODECOURS

***** 22/08/2003 MODIF ASMAD COMMUNAUTE COMMUNE
			IF ENR_ASSOCIATION<1>="A.S.M.A.D." AND W_CODEORGANISMECHARGE = "154" THEN
				ENR_FACTURAIDE<2,W_NBAIDANT>="PAYS ARGENTON/CREUSE-COMMUNAUTE COMMUNE"
			END ELSE
				ENR_FACTURAIDE<2,W_NBAIDANT>="PRISE EN CHARGE ":ENR_ORGPRISECHARGE<1>
			END

***          ENR_FACTURAIDE<2,W_NBAIDANT>="PRISE EN CHARGE ":ENR_ORGPRISECHARGE<1>
***** FIN 22/08/2003 MODIF ASMAD COMMUNAUTE COMMUNE

			ENR_FACTURORG<1>=W_MONTANTHRESBENEF
			ENR_FACTURORG<2>="0"
			ENR_FACTURORG<3>=W_MONTANTPARTBENEF
			ENR_FACTURORG<4>=W_MONTANTPARTORG2
			IF ENR_FACTURORG<4><0 THEN ENR_FACTURORG<4>=-ENR_FACTURORG<4>
			ENR_FACTURORG<14>=W_DEPENGAGEES
*** RAJOUT 23/02/01 DIMINUTION DEPENSES ENGAGEES SI * ACCORDS
			W_DEPENGAGEES=W_DEPENGAGEES+W_MONTANTPARTORG2

			ENR_FACTURAIDE<3,W_NBAIDANT>=-W_MONTANTHRESBENEF
			IF ENR_BAREMEPARTEMP<2><>4 THEN
				ENR_FACTURAIDE<4,W_NBAIDANT>=W_MONTANTPARTORG-W_MONTANTPARTBENEF
			END ELSE
				ENR_FACTURAIDE<4,W_NBAIDANT>=(W_MONTANTPARTORG-W_MONTANTPARTBENEF)*10
			END
			IF ENR_FACTURAIDE<4,W_NBAIDANT><0 THEN ENR_FACTURAIDE<4,W_NBAIDANT>=-ENR_FACTURAIDE<4,W_NBAIDANT>
			IF W_MONTANTPARTORG2>0 THEN
				ENR_FACTURAIDE<5,W_NBAIDANT>=-W_MONTANTPARTORG2
			END ELSE	  
				ENR_FACTURAIDE<5,W_NBAIDANT>=W_MONTANTPARTORG2
			END
			IF ENR_ASSOCIATION<1>="A.S.M.A.D." THEN
				ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_ORGPRISECHARGE<22>
			END ELSE
				ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_COMPTESPART<9>
			END
			ENR_FACTURAIDE<7,W_NBAIDANT>=""
	 
			IF ENR_ORGPRISECHARGE<50>=1 THEN
				ENR_FACTURAIDE<14,W_NBAIDANT>=1
			END ELSE
				ENR_FACTURAIDE<14,W_NBAIDANT>=0
			END
			ENR_FACTURAIDE<15,W_NBAIDANT>=""
			* modif vanes 17/11/08
			ENR_FACTURAIDE<16,W_NBAIDANT>="N"
			****		  
			WRITE ENR_FACTURORG ON F.FACTURORG,W_CODEORGANISMECHARGE:"M":W_CODEACCORD:W_PERIODECOURS:"01"

***** 22/08/2003 MODIF ASMAD COMMUNAUTE COMMUNE
			IF ENR_ASSOCIATION<1>="A.S.M.A.D." AND W_CODEORGANISMECHARGE = "154" THEN
				W_MONTANTHRESBENEF=0
			END
***** FIN 22/08/2003 MODIF ASMAD COMMUNAUTE COMMUNE

		END ELSE
			* MODIF // LE MANS CAR ILS VEULENT UNE FACTURE CAISSE MEME SI = 0
			IF W_MONTANTHRESBENEF#0 THEN
				ENR_FACTURORG=""
				ENR_FACTURORG<1>=W_MONTANTHRESBENEF
				ENR_FACTURORG<2>="0"
				ENR_FACTURORG<3>=W_MONTANTPARTBENEF
				ENR_FACTURORG<4>=W_MONTANTPARTORG2
				IF ENR_FACTURORG<4><0 THEN ENR_FACTURORG<4>=-ENR_FACTURORG<4>
				ENR_FACTURORG<14>=W_DEPENGAGEES
				WRITE ENR_FACTURORG ON F.FACTURORG,W_CODEORGANISMECHARGE:"M":W_CODEACCORD:W_PERIODECOURS:"01"
			END
		END
    END ELSE
		IF W_RESIDUACCORD<>0 THEN
			W_NBAIDANT=W_NBAIDANT+1
			ENR_FACTURORG=""
			ENR_FACTURAIDE<1,W_NBAIDANT>=W_PERIODECOURS

***** 22/08/2003 MODIF ASMAD COMMUNAUTE COMMUNE
			IF ENR_ASSOCIATION<1>="A.S.M.A.D." AND W_CODEORGANISMECHARGE = "154" THEN
				ENR_FACTURAIDE<2,W_NBAIDANT>="PAYS ARGENTON/CREUSE-COMMUNAUTE COMMUNE"
			END ELSE
				ENR_FACTURAIDE<2,W_NBAIDANT>="PRISE EN CHARGE ":ENR_ORGPRISECHARGE<1>
			END

***          ENR_FACTURAIDE<2,W_NBAIDANT>="PRISE EN CHARGE ":ENR_ORGPRISECHARGE<1>
***** FIN 22/08/2003 MODIF ASMAD COMMUNAUTE COMMUNE

*** 11/02/02 : FAIT SUIVRE HRES FRAIS GESTION EN ATT 1 DE FACTURORG
			ENR_FACTURORG<1>=W_BASEFRAISGESTION
			ENR_FACTURORG<2>="0"
			ENR_FACTURORG<3>="0"
			ENR_FACTURORG<4>=W_RESIDUACCORD
			IF ENR_FACTURORG<4><0 THEN ENR_FACTURORG<4>=-ENR_FACTURORG<4>
			ENR_FACTURORG<14>=W_DEPENGAGEES
*** RAJOUT 23/02/01 DIMINUTION DEPENSES ENGAGEES SI * ACCORDS
			W_DEPENGAGEES=W_DEPENGAGEES+W_RESIDUACCORD

			ENR_FACTURAIDE<3,W_NBAIDANT>=""
			ENR_FACTURAIDE<4,W_NBAIDANT>=""
			ENR_FACTURAIDE<5,W_NBAIDANT>=-W_RESIDUACCORD
			IF ENR_ASSOCIATION<1>="A.S.M.A.D." THEN
				ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_ORGPRISECHARGE<22>
			END ELSE
				ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_COMPTESPART<9>
			END
			ENR_FACTURAIDE<7,W_NBAIDANT>=""

			IF ENR_ORGPRISECHARGE<50>=1 THEN
				ENR_FACTURAIDE<14,W_NBAIDANT>=1
			END ELSE
				ENR_FACTURAIDE<14,W_NBAIDANT>=0
			END
			ENR_FACTURAIDE<15,W_NBAIDANT>=""
			* modif vanes 17/11/08
			ENR_FACTURAIDE<16,W_NBAIDANT>="N"
			****				
			WRITE ENR_FACTURORG ON F.FACTURORG,W_CODEORGANISMECHARGE:"M":W_CODEACCORD:W_PERIODECOURS:"01"
		END
    END

RETURN

***********************************************************
***********************************************************
* CONSTITUTION DU FICHIER FACTURORG (ACCORD RETROACTIF)
* CONSTITUTION DU FICHIER FACTURAIDE (ACCORD PART. 2)

112 *

    IF W_TYPEORG="H" THEN
		IF W_MONTANTPARTORG2<>0 THEN
			W_NBAIDANT=W_NBAIDANT+1
			ENR_FACTURORG=""
			ENR_FACTURAIDE<1,W_NBAIDANT>=W_PERIODERETROACTIVE

***** 22/08/2003 MODIF ASMAD COMMUNAUTE COMMUNE
			IF ENR_ASSOCIATION<1>="A.S.M.A.D." AND W_CODEORGANISMECHARGE = "154" THEN
				ENR_FACTURAIDE<2,W_NBAIDANT>="PAYS ARGENTON/CREUSE-COMMUNAUTE COMMUNE"
			END ELSE
				ENR_FACTURAIDE<2,W_NBAIDANT>="PRISE EN CHARGE ":ENR_ORGPRISECHARGE<1>
			END

***          ENR_FACTURAIDE<2,W_NBAIDANT>="PRISE EN CHARGE ":ENR_ORGPRISECHARGE<1>
***** FIN 22/08/2003 MODIF ASMAD COMMUNAUTE COMMUNE

			ENR_FACTURORG<1>=W_MONTANTHRESBENEF
			ENR_FACTURORG<2>="0"
			ENR_FACTURORG<3>=W_MONTANTPARTBENEF
			ENR_FACTURORG<4>=W_MONTANTPARTORG2
			IF ENR_FACTURORG<4><0 THEN ENR_FACTURORG<4>=-ENR_FACTURORG<4>
			ENR_FACTURORG<14>=W_DEPENGAGEES2

			ENR_FACTURAIDE<3,W_NBAIDANT>=-W_MONTANTHRESBENEF
			IF ENR_BAREMEPARTEMP<2><>4 THEN
				ENR_FACTURAIDE<4,W_NBAIDANT>=W_MONTANTPARTORG-W_MONTANTPARTBENEF
			END ELSE
				ENR_FACTURAIDE<4,W_NBAIDANT>=(W_MONTANTPARTORG-W_MONTANTPARTBENEF)*10
			END
			IF ENR_FACTURAIDE<4,W_NBAIDANT><0 THEN ENR_FACTURAIDE<4,W_NBAIDANT>=-ENR_FACTURAIDE<4,W_NBAIDANT>
			IF W_MONTANTPARTORG2>0 THEN
				ENR_FACTURAIDE<5,W_NBAIDANT>=-W_MONTANTPARTORG2
			END ELSE	  
				ENR_FACTURAIDE<5,W_NBAIDANT>=W_MONTANTPARTORG2
			END
			IF ENR_ASSOCIATION<1>="A.S.M.A.D." THEN
				ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_ORGPRISECHARGE<22>
			END ELSE
				ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_COMPTESPART<9>
			END
			ENR_FACTURAIDE<7,W_NBAIDANT>=""

			IF ENR_ORGPRISECHARGE<50>=1 THEN
				ENR_FACTURAIDE<14,W_NBAIDANT>=1
			END ELSE
				ENR_FACTURAIDE<14,W_NBAIDANT>=0
			END
			ENR_FACTURAIDE<15,W_NBAIDANT>=""
			* modif vanes 17/11/08
			ENR_FACTURAIDE<16,W_NBAIDANT>="N"
			****				
			
			WRITE ENR_FACTURORG ON F.FACTURORG,W_CODEORGANISMECHARGE:"M":W_CODEACCORD:W_PERIODERETROACTIVE:"01"
		END ELSE
			ENR_FACTURORG=""
			IF W_MONTANTHRESBENEF#0 THEN
				* MODIF // LE MANS CAR ILS VEULENT UNE FACTURE CAISSE MEME SI = 0
				ENR_FACTURORG<1>=W_MONTANTHRESBENEF
				ENR_FACTURORG<2>="0"
				ENR_FACTURORG<3>=W_MONTANTPARTBENEF
				ENR_FACTURORG<4>=W_MONTANTPARTORG2
				IF ENR_FACTURORG<4><0 THEN ENR_FACTURORG<4>=-ENR_FACTURORG<4>
				ENR_FACTURORG<14>=W_DEPENGAGEES2
			END
			IF ENR_FACTURORG<1>#"" THEN WRITE ENR_FACTURORG ON F.FACTURORG,W_CODEORGANISMECHARGE:"M":W_CODEACCORD:W_PERIODERETROACTIVE:"01"
		END


***** 22/08/2003 MODIF ASMAD COMMUNAUTE COMMUNE
***	  IF ENR_ASSOCIATION<1>="A.S.M.A.D." AND W_CODEORGANISMECHARGE = "154" THEN
***		W_MONTANTHRESBENEF=0
***	  END
***** FIN 22/08/2003 MODIF ASMAD COMMUNAUTE COMMUNE


    END ELSE
		IF W_RESIDUACCORD<>0 THEN
			W_NBAIDANT=W_NBAIDANT+1
			ENR_FACTURORG=""
			ENR_FACTURAIDE<1,W_NBAIDANT>=W_PERIODERETROACTIVE

***** 22/08/2003 MODIF ASMAD COMMUNAUTE COMMUNE
			IF ENR_ASSOCIATION<1>="A.S.M.A.D." AND W_CODEORGANISMECHARGE = "154" THEN
				ENR_FACTURAIDE<2,W_NBAIDANT>="PAYS ARGENTON/CREUSE-COMMUNAUTE COMMUNE"
			END ELSE
				ENR_FACTURAIDE<2,W_NBAIDANT>="PRISE EN CHARGE ":ENR_ORGPRISECHARGE<1>
			END

***          ENR_FACTURAIDE<2,W_NBAIDANT>="PRISE EN CHARGE ":ENR_ORGPRISECHARGE<1>
***** FIN 22/08/2003 MODIF ASMAD COMMUNAUTE COMMUNE

			ENR_FACTURORG<1>="1"
			ENR_FACTURORG<2>="0"
			ENR_FACTURORG<3>="0"
			ENR_FACTURORG<4>=W_RESIDUACCORD
			IF ENR_FACTURORG<4><0 THEN ENR_FACTURORG<4>=-ENR_FACTURORG<4>
			ENR_FACTURORG<14>=W_DEPENGAGEES2

			ENR_FACTURAIDE<3,W_NBAIDANT>=0
			ENR_FACTURAIDE<4,W_NBAIDANT>=""
			ENR_FACTURAIDE<5,W_NBAIDANT>=-W_RESIDUACCORD
			IF ENR_ASSOCIATION<1>="A.S.M.A.D." THEN
				ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_ORGPRISECHARGE<22>
			END ELSE
				ENR_FACTURAIDE<6,W_NBAIDANT>=ENR_COMPTESPART<9>
			END
			ENR_FACTURAIDE<7,W_NBAIDANT>=""

			IF ENR_ORGPRISECHARGE<50>=1 THEN
				ENR_FACTURAIDE<14,W_NBAIDANT>=1
			END ELSE
				ENR_FACTURAIDE<14,W_NBAIDANT>=0
			END
			ENR_FACTURAIDE<15,W_NBAIDANT>=""
			* modif vanes 17/11/08
			ENR_FACTURAIDE<16,W_NBAIDANT>="N"
			****	
			WRITE ENR_FACTURORG ON F.FACTURORG,W_CODEORGANISMECHARGE:"M":W_CODEACCORD:W_PERIODERETROACTIVE:"01"
		END
    END

RETURN

***********************************************************
***********************************************************
* RECHERCHE SI RUB. SAISIE DEJA AFFECTEE // FRAIS GESTION

200 *

    K=1
    LOOP 
	 UNTIL W_ASSIETTEFRAISGESTION<K,1>=ENR_DETAILCALCUL<2,I> OR W_ASSIETTEFRAISGESTION<K,1>="" DO
	 K=K+1
    REPEAT

RETURN

***********************************************************
***********************************************************
* MAJ ATTRIBUT 10 DE FACTURAIDE

201 *

    W_TROUVE="FAUX"
    
    J=1
    LOOP 
	   UNTIL ENR_NOMAIDANT<1,J>="" OR W_TROUVE="VRAI" DO

	   IF ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3><=ENR_NOMAIDANT<2,J> THEN
		  IF ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3><>ENR_NOMAIDANT<2,J> THEN
  		       ENR_NOMAIDANT=INSERT(ENR_NOMAIDANT,1,J;W_CODEAIDANT)
		       ENR_NOMAIDANT=INSERT(ENR_NOMAIDANT,2,J;ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>)
		       W_TROUVE="VRAI"
		  END ELSE
			 W_TROUVE="VRAI"
		  END
	   END

	   J=J+1
    REPEAT

    IF ENR_NOMAIDANT<2,J>="" AND W_TROUVE<>"VRAI" THEN
         ENR_NOMAIDANT<1,-1>=W_CODEAIDANT
	   ENR_NOMAIDANT<2,-1>=ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>
	   W_TROUVE="VRAI"
    END


RETURN

***********************************************************
***********************************************************
* TRI DES ACCORDS SANS RATTRAP. PAR RANG,DATE DEB.,DATE FIN

210 *

    * PARCOURS CHAINE POUR SI ACCORD DE TYPE DIFF. 
    * SI TYPE DIFF. ALORS POSITIONNE HRES EN 1ER
    W_DIFFTYPE=0
    W_ANCIENTYPE=""
    J=1
    LOOP
    	 UNTIL W_ACCORDSANSRATTRAP<J,1>="" DO
	 READ ENR_ACCORD FROM F.ACCORD,W_ACCORDSANSRATTRAP<J,1> ELSE ENR_ACCORD=""
	 READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,ENR_ACCORD<1> ELSE ENR_ORGPRISECHARGE=""

	 IF W_ANCIENTYPE<1>="" THEN W_ANCIENTYPE<1>=ENR_ORGPRISECHARGE<24>
	 IF W_ANCIENTYPE<2>="" THEN W_ANCIENTYPE<2>=W_ACCORDSANSRATTRAP<J,2>

	 IF W_ACCORDSANSRATTRAP<J,2><>"0" THEN
	   IF ENR_ORGPRISECHARGE<24><>W_ANCIENTYPE<1> AND W_ACCORDSANSRATTRAP<J,2>=W_ANCIENTYPE<2> THEN W_DIFFTYPE=1
   	 END

	 IF W_DIFFTYPE=1 THEN EXIT

	 J=J+1
    REPEAT

    IF W_DIFFTYPE=1 THEN
      J=1
      LOOP
    	 UNTIL W_ACCORDSANSRATTRAP<J,1>="" DO
	 READ ENR_ACCORD FROM F.ACCORD,W_ACCORDSANSRATTRAP<J,1> ELSE ENR_ACCORD=""
	 READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,ENR_ACCORD<1> ELSE ENR_ORGPRISECHARGE=""

	 IF ENR_ORGPRISECHARGE<24>="M" THEN W_ACCORDSANSRATTRAP<J,2>=W_ACCORDSANSRATTRAP<J,2>+1

 	 J=J+1
      REPEAT
    END

    W_RANGDEP=0
    W_RANGFIN=0
    * RECHERCHE DES EMPLACEMENTS DES ACCORDS DE RANG XX
    J=1
    LOOP
	 W_RANGDEP=0
	 W_RANGFIN=0
	 UNTIL W_ACCORDSANSRATTRAP<J,1>="" DO

	 * RECHERCHE RANG DEPART + RANG FIN ACCORD DE RANG XX
	 K=1
	 LOOP	
	      UNTIL W_ACCORDTRI1<K,2>="" DO
	      IF W_ACCORDTRI1<K,2>=W_ACCORDSANSRATTRAP<J,2> AND W_RANGDEP=0 THEN 
		W_RANGDEP=K
		EXIT
	      END
	      IF W_ACCORDTRI1<K,2>>W_ACCORDSANSRATTRAP<J,2> AND W_RANGDEP=0 THEN 
		W_RANGFIN=K-1
		EXIT
	      END
		
	      K=K+1
	 REPEAT	 

	 IF W_RANGDEP=0 THEN W_RANGDEP=1
	 IF W_RANGFIN=0 THEN W_RANGFIN=1
	 IF W_ACCORDTRI1<K,2>="" THEN
	      W_RANGDEP=K
	      W_RANGFIN=K
	 END

	 IF W_ACCORDTRI1<1><>"" THEN
	      * SI PAS DATE DE FIN ALORS TRI PAR DATE DEBUT
	      IF W_ACCORDSANSRATTRAP<J,4>="" THEN
		   K=W_RANGDEP
		   LOOP
		        UNTIL W_ACCORDTRI1<K,3>>=W_ACCORDSANSRATTRAP<J,3> OR W_ACCORDTRI1<K,3>="" OR W_RANGFIN=K DO
			K=K+1
		   REPEAT
	      END ELSE	
		   K=W_RANGDEP
		   LOOP
		        UNTIL W_ACCORDTRI1<K,3>>=W_ACCORDSANSRATTRAP<J,3> OR W_ACCORDTRI1<K,3>="" OR W_RANGFIN=K DO
			K=K+1
		   REPEAT

       	           * SI RANG INSERTION TROUVE			
		   IF W_ACCORDTRI1<K,3><>"" THEN
			* TEST SI DATE DEBUT EGALE
			IF W_ACCORDTRI1<K,3>=W_ACCORDSANSRATTRAP<J,3> THEN
				
			     * TRI SUR DATE DE FIN
	   		     LOOP
				  UNTIL W_ACCORDTRI1<K,4><=W_ACCORDSANSRATTRAP<J,4> OR W_ACCORDTRI1<K,4>="" DO
			          K=K+1
		             REPEAT
		        END				
		   END
    	      END

              * SI RANG INSERTION TROUVE	
	      W_ACCORDTRI1=INSERT(W_ACCORDTRI1,K;"")
	      W_ACCORDTRI1=INSERT(W_ACCORDTRI1,K,1;W_ACCORDSANSRATTRAP<J,1>)
	      W_ACCORDTRI1=INSERT(W_ACCORDTRI1,K,2;W_ACCORDSANSRATTRAP<J,2>)
	      W_ACCORDTRI1=INSERT(W_ACCORDTRI1,K,3;W_ACCORDSANSRATTRAP<J,3>)
	      W_ACCORDTRI1=INSERT(W_ACCORDTRI1,K,4;W_ACCORDSANSRATTRAP<J,4>)
	      W_ACCORDTRI1=INSERT(W_ACCORDTRI1,K,5;W_ACCORDSANSRATTRAP<J,5>)
  	 END ELSE
	      W_ACCORDTRI1<1,1>=W_ACCORDSANSRATTRAP<J,1>
	      W_ACCORDTRI1<1,2>=W_ACCORDSANSRATTRAP<J,2>
	      W_ACCORDTRI1<1,3>=W_ACCORDSANSRATTRAP<J,3>
	      W_ACCORDTRI1<1,4>=W_ACCORDSANSRATTRAP<J,4>
	      W_ACCORDTRI1<1,5>=W_ACCORDSANSRATTRAP<J,5>
	 END
         J=J+1
    REPEAT

RETURN

***********************************************************
***********************************************************
* TRI DES ACCORDS AVEC RATTRAP. PAR RANG,DATE DEB.,DATE FIN

211 *

    * PARCOURS CHAINE POUR SI ACCORD DE TYPE DIFF. 
    * SI TYPE DIFF. ALORS POSITIONNE HRES EN 1ER
    W_DIFFTYPE=0
    W_ANCIENTYPE=""
    J=1
    LOOP
    	 UNTIL W_ACCORDRATTRAP<J,1>="" DO
	 READ ENR_ACCORD FROM F.ACCORD,W_ACCORDRATTRAP<J,1> ELSE ENR_ACCORD=""
	 READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,ENR_ACCORD<1> ELSE ENR_ORGPRISECHARGE=""

	 IF W_ANCIENTYPE<1>="" THEN W_ANCIENTYPE<1>=ENR_ORGPRISECHARGE<24>
	 IF W_ANCIENTYPE<2>="" THEN W_ANCIENTYPE<2>=W_ACCORDRATTRAP<J,2>

	 IF W_ACCORDRATTRAP<J,2><>"0" THEN
	   IF ENR_ORGPRISECHARGE<24><>W_ANCIENTYPE<1> AND W_ACCORDRATTRAP<J,2>=W_ANCIENTYPE<2> THEN W_DIFFTYPE=1
   	 END

	 IF W_DIFFTYPE=1 THEN EXIT

	 J=J+1
    REPEAT

    IF W_DIFFTYPE=1 THEN
      J=1
      LOOP
    	 UNTIL W_ACCORDRATTRAP<J,1>="" DO
	 READ ENR_ACCORD FROM F.ACCORD,W_ACCORDRATTRAP<J,1> ELSE ENR_ACCORD=""
	 READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,ENR_ACCORD<1> ELSE ENR_ORGPRISECHARGE=""

	 IF ENR_ORGPRISECHARGE<24>="M" THEN W_ACCORDRATTRAP<J,2>=W_ACCORDRATTRAP<J,2>+1

 	 J=J+1
      REPEAT
    END

    W_RANGDEP=0
    W_RANGFIN=0
    * RECHERCHE DES EMPLACEMENTS DES ACCORDS DE RANG XX
    J=1
    LOOP
	 W_RANGDEP=0
	 W_RANGFIN=0
	 UNTIL W_ACCORDRATTRAP<J,1>="" DO

	 * RECHERCHE RANG DEPART + RANG FIN ACCORD DE RANG XX
	 K=1
	 LOOP	
	      UNTIL W_ACCORDTRI2<K,2>="" DO
	      IF W_ACCORDTRI2<K,2>=W_ACCORDRATTRAP<J,2> AND W_RANGDEP=0 THEN 
		W_RANGDEP=K
		EXIT
	      END
	      IF W_ACCORDTRI2<K,2>>W_ACCORDRATTRAP<J,2> AND W_RANGDEP=0 THEN 
		W_RANGFIN=K-1
		EXIT
	      END
		
	      K=K+1
	 REPEAT	 

	 IF W_RANGDEP=0 THEN W_RANGDEP=1
	 IF W_RANGFIN=0 THEN W_RANGFIN=1
	 IF W_ACCORDTRI2<K,2>="" THEN
	      W_RANGDEP=K
	      W_RANGFIN=K
	 END

	 IF W_ACCORDTRI2<1><>"" THEN
	      * SI PAS DATE DE FIN ALORS TRI PAR DATE DEBUT
	      IF W_ACCORDRATTRAP<J,4>="" THEN
		   K=W_RANGDEP
		   LOOP
		        UNTIL W_ACCORDTRI2<K,3>>=W_ACCORDRATTRAP<J,3> OR W_ACCORDTRI2<K,3>="" OR W_RANGFIN=K DO
			K=K+1
		   REPEAT
	      END ELSE	
		   K=W_RANGDEP
		   LOOP
		        UNTIL W_ACCORDTRI2<K,3>>=W_ACCORDRATTRAP<J,3> OR W_ACCORDTRI2<K,3>="" OR W_RANGFIN=K DO
			K=K+1
		   REPEAT

       	           * SI RANG INSERTION TROUVE			
		   IF W_ACCORDTRI2<K,3><>"" THEN
			* TEST SI DATE DEBUT EGALE
			IF W_ACCORDTRI1<K,3>=W_ACCORDRATTRAP<J,3> THEN
				
			     * TRI SUR DATE DE FIN
	   		     LOOP
				  UNTIL W_ACCORDTRI2<K,4><=W_ACCORDRATTRAP<J,4> OR W_ACCORDTRI2<K,4>="" DO
			          K=K+1
		             REPEAT
		        END				
		   END
    	      END

              * SI RANG INSERTION TROUVE	
	      W_ACCORDTRI2=INSERT(W_ACCORDTRI2,K;"")
	      W_ACCORDTRI2=INSERT(W_ACCORDTRI2,K,1;W_ACCORDRATTRAP<J,1>)
	      W_ACCORDTRI2=INSERT(W_ACCORDTRI2,K,2;W_ACCORDRATTRAP<J,2>)
	      W_ACCORDTRI2=INSERT(W_ACCORDTRI2,K,3;W_ACCORDRATTRAP<J,3>)
	      W_ACCORDTRI2=INSERT(W_ACCORDTRI2,K,4;W_ACCORDRATTRAP<J,4>)
	      W_ACCORDTRI2=INSERT(W_ACCORDTRI2,K,5;W_ACCORDRATTRAP<J,5>)
  	 END ELSE
	      W_ACCORDTRI2<1,1>=W_ACCORDRATTRAP<J,1>
	      W_ACCORDTRI2<1,2>=W_ACCORDRATTRAP<J,2>
	      W_ACCORDTRI2<1,3>=W_ACCORDRATTRAP<J,3>
	      W_ACCORDTRI2<1,4>=W_ACCORDRATTRAP<J,4>
	      W_ACCORDTRI2<1,5>=W_ACCORDRATTRAP<J,5>
	 END
         J=J+1
    REPEAT

RETURN

***********************************************************
***********************************************************
* LANCEMENT DES DIVERS TRAITEMENTS

300 *

   * RECHERCHE SI ACOMPTE
   P=1
   LOOP
	UNTIL ENR_DETAILCALCUL<17,P>="" DO

        IF ENR_DETAILCALCUL<17,P>="816" OR ENR_DETAILCALCUL<17,P>="824" OR ENR_DETAILCALCUL<17,P>="829" OR ENR_DETAILCALCUL<17,P>="844" THEN
	    ENR_DETAILCALCUL<21>=ENR_DETAILCALCUL<21>-ENR_DETAILCALCUL<20,P>
        END

	P=P+1
   REPEAT

*** RAJOUT // GESTION DES ORGANISMES EXCLUSIVEMENT DIM ET J.F    14/11/2000
   * STOCKE LES HRES DIM+J.F
   P=1
   LOOP
	UNTIL ENR_DETAILCALCUL<2,P>="" DO

	READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<2,P> THEN
	    IF ENR_RUBSAISIE<2>="4" THEN
	        W_DIMJF=W_DIMJF+ENR_DETAILCALCUL<3,P>
	    END
	END

	P=P+1
   REPEAT

   * TEST SI PAIEMENT SALAIRE PAR ASSO
   IF ENR_CONTRAT<28>=1 THEN
       ***********************************************************
       * GESTION DES MONTANT SALAIRE A PAYER 
       W_MONTANTSALPAYER=W_MONTANTSALPAYER+ENR_DETAILCALCUL<21>
       W_MONTANTSALPAYERCOURS=ENR_DETAILCALCUL<21>

       READ ENR_BAREMEPARTEMP FROM F.BAREMEPARTEMP,ENR_ELTSPARTEMP<13> THEN
		W_HEURESALPAYERCOURS=0
		IF ENR_BAREMEPARTEMP<2>="3" THEN
    			M=1
    			LOOP	
     			UNTIL ENR_DETAILCALCUL<2,M>="" DO	
				READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<2,M> THEN
	    				IF ENR_RUBSAISIE<2>="3" OR ENR_RUBSAISIE<2>="4" THEN
	        				W_HEURESALPAYERCOURS=W_HEURESALPAYERCOURS+ENR_DETAILCALCUL<3,M>
	    				END
				END
       				 M=M+1
    			REPEAT
		END
       END
   END

   W_TOTALHRESPAYEES=W_TOTALHRESPAYEES+ENR_DETAILCALCUL<6>

* SPECIF ASMAD : COMPTABILISATION DES HEURES A PRENDRE EN COMPTE POUR ORGANISME
*                DE PRISE EN CHARGE 135 MSA AIDE AU MENAGE
***   IF ENR_ASSOCIATION<1>="A.S.M.A.D." THEN
***    M=1
***    LOOP	
***     UNTIL ENR_DETAILCALCUL<2,M>="" DO	
***      IF ENR_DETAILCALCUL<2,M><>"802" AND ENR_DETAILCALCUL<2,M><>"820" AND ENR_DETAILCALCUL<2,M><>"809" AND ENR_DETAILCALCUL<2,M><>"804" AND ENR_DETAILCALCUL<2,M><>"810" THEN
***       W_HEURESAPRENDRE=W_HEURESAPRENDRE+ENR_DETAILCALCUL<3,M>
***      END
***      M=M+1
***    REPEAT
***   END


** SPECIF DEPT 80 + 82 + DEPT 50 + DEPT 72 + DEPT 60 + DEPT 37 + MAUBEUGE + CAMBRAI (MAUBEUGE) + ASMAD : NE TRAVAILLE QUE SUR LES HRES TRAVAILLEES
***** MODIF 22/08/03
   IF ENR_ASSOCIATION<8>[1,2]="60" AND ENR_ASSOCIATION<8>[1,2]="80" OR ENR_ASSOCIATION<8>[1,2]="82" OR ENR_ASSOCIATION<8>[1,2]="50" OR ENR_ASSOCIATION<8>[1,2]="72" OR ENR_ASSOCIATION<8>[1,2]="60" OR ENR_ASSOCIATION<8>[1,2]="37" OR ENR_ASSOCIATION<1>="C.B.A.P.A. OU H" OR ENR_ASSOCIATION<1>="A.S.M.A.D." OR ENR_ASSOCIATION<1>="AIDE ET MULTIPRESENCE" OR ENR_ASSOCIATION<8>="59716" OR ENR_ASSOCIATION<8>="59600" THEN
    W_DEPT50="1"
    M=1
    LOOP	
     UNTIL ENR_DETAILCALCUL<2,M>="" DO	
	READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<2,M> THEN
	    IF ENR_RUBSAISIE<2>="3" OR ENR_RUBSAISIE<2>="4" THEN
	        W_HEURESAPRENDRE=W_HEURESAPRENDRE+ENR_DETAILCALCUL<3,M>
	    END
	END
        M=M+1
    REPEAT
   END ELSE
    W_DEPT50="0"
   END

   ***********************************************************
   * GESTION DES CONTRATS DE PREVOYANCES (CHG. URSSAF+COTIS. PREV)		 
   I=1
   W_MONTANTCHGURSSAFPAYEESMOIS=0
   W_MONTANTCOTISPREVPAYEESMOIS=0
   LOOP
        UNTIL ENR_DETAILCALCUL<8,I>="" DO
	
	* VERIFIE SI RUB. PAS ATTRIBUE A CONTRAT PREVOYANCE
	IF W_CODECONTRATPREV<>"" THEN		
	    J=1
	    LOOP
		 UNTIL ENR_CONTRATSPREV<35,J>=ENR_DETAILCALCUL<8,I> OR ENR_CONTRATSPREV<35,J>="" DO
		 J=J+1
	    REPEAT

	    IF ENR_CONTRATSPREV<35,J><>"" THEN
		 W_ERREURCONTRATPREV=1
	    END ELSE
		 W_ERREURCONTRATPREV=0
	    END
	END ELSE
	    W_ERREURCONTRATPREV=0
	END
	
        * SI PAS ERREUR CONTRATPREV
	IF W_ERREURCONTRATPREV=0 THEN
	    * MONTANT CHARGES URSSAF
	    W_MONTANTCHGURSSAFPAT=W_MONTANTCHGURSSAFPAT+ENR_DETAILCALCUL<14,I>
	    IF ENR_CONTRAT<31>=0 THEN
	         W_MONTANTCHGURSSAFPAYEESMOIS=W_MONTANTCHGURSSAFPAYEESMOIS+ENR_DETAILCALCUL<14,I>
	    END
	    W_MONTANTCHGURSSAFSAL=W_MONTANTCHGURSSAFSAL-ENR_DETAILCALCUL<11,I>
	END ELSE
	    IF W_COTISPREVASSO=1 THEN
		 W_MONTANTCOTISPREV=W_MONTANTCOTISPREV+ENR_DETAILCALCUL<14,I>-ENR_DETAILCALCUL<11,I>
	         IF ENR_CONTRAT<31>=0 THEN
	              W_MONTANTCOTISPREVPAYEESMOIS=W_MONTANTCOTISPREVPAYEESMOIS+ENR_DETAILCALCUL<14,I>
	         END
	    END
	END

	I=I+1
   REPEAT

   ***********************************************************
   * GESTION DES PROVISIONS DE CONGES
   GOSUB 30

   ***********************************************************
   * GESTION DES REPRISES DE PROVISIONS DE CONGES
   GOSUB 40
		
   ***********************************************************
   * GESTION DES FRAIS DE GESTION
   GOSUB 50

   ***********************************************************
   * GESTION DES MAJORATION PAR BULLETINS
   GOSUB 60	

   ***********************************************************
   * GESTION DES FRAIS D'OUVERTURE DE DOSSIER   
   GOSUB 70

RETURN

***********************************************************
***********************************************************
* GESTION DES DROITS SUR ACCORD

310 *

    K=1
    LOOP
	 UNTIL W_ACCORDTRI1<K>="" DO

         W_NBHISTORACCORD=0
         W_RESIDUACCORD=0 
         W_HRESACCORDEES=0
         W_HRESPAYEES=0
 	 W_MONTANTPARTORG=0
 	 W_MONTANTPARTORG2=0
    
         * VERIFIE SI ACCORD DE TYPE MONTANT
         W_CODEORGANISMECHARGE=W_ACCORDTRI1<K,5>
	 W_CODEACCORD=W_ACCORDTRI1<K,1>

*** RAJOUT // GESTION DES ORGANISMES EXCLUSIVEMENT DIM ET J.F    14/11/2000
	 IF W_ACCORDTRI1<K,2>="0" THEN
	      W_TYPEACCORD=1    ;*DIM ET J.F
	      W_TYPEACCORDANC=1
	 END ELSE
	      IF W_TYPEACCORDANC=0 THEN W_DIMJF=0
	      W_TYPEACCORD=0    ;*ACCORD NORMAL
	 END

	 READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,W_CODEORGANISMECHARGE ELSE
	      *PRINT "ERREUR ORGPRISECHARGE"
	 END

	 READ ENR_ACCORD FROM F.ACCORD,W_CODEACCORD ELSE
	      *PRINT "ERREUR ACCORD"
	 END

         W_NBHISTORACCORD=DCOUNT(ENR_ACCORD<17>,CHAR(253))

	 GOSUB 311

	 GOSUB 111	
         K=K+1
    REPEAT    
RETURN

***********************************************************
***********************************************************
* CALCUL DES DROITS ACCORDS (1)

311 *

    W_RESIDUACCORD=0
    W_MONTANTPARTORG2=0
    W_MONTANTPARTBENEF2=0
    W_MONTANTHRESBENEF=0
    W_NBHISTORACCORD=0
    W_RESIDUACCORD=0 
    W_HRESACCORDEES=0
    W_HRESPAYEES=0
    W_MONTANTPARTORG=0
    W_MONTANTPARTORG2=0
    W_HRESASMAD154=0

    W_TYPEORG=ENR_ORGPRISECHARGE<24>

    * RECALCULE LE MONTANT DE LA FACTURE
    W_MONTANTELEMENTS=W_MONTANTELEMENTSAV

    IF ENR_ORGPRISECHARGE<24>="M" THEN
		* SI GESTION DE PLAFOND DES DROITS GLOBAUX         
        IF ENR_ORGPRISECHARGE<19>=3 THEN
			* RECUPERE LES DROITS RESTANTS
			IF ENR_ACCORD<17,1>="" THEN
				W_RESIDUACCORD=ENR_ACCORD<9>
			END ELSE
				W_RESIDUACCORD=ENR_ACCORD<17,1>
			END
        END ELSE
			* SI GESTION DE PLAFOND DES DROITS MENSUEL AVEC REPORT
			IF ENR_ORGPRISECHARGE<19>=1 THEN
				W_RESIDUACCORD=ENR_ACCORD<17,1>+ENR_ACCORD<9>
				
				* Modif Greg - 19/11/09 - DA9171-01
				W_ResiduHreMnt=W_RESIDUACCORD
				W_PeriodeTest=W_PERIODECOURS
				GOSUB 360
				W_RESIDUACCORD=W_ResiduHreMnt
				W_RESIDUACCORDSAVE=W_RESIDUACCORD
				* Fin modif Greg - 19/11/09 - DA9171-01
				
			END ELSE
				* SI GESTION MENSUELLE SANS REPORT
				W_RESIDUACCORD=ENR_ACCORD<9>
			END
        END
		
		IF W_RESIDUACCORD="" THEN W_RESIDUACCORD=0
	
		** 11/09/01  RAJOUT TEST ABATTEMENT CRAM MANDATAIRE
		* MODIF VANESSA 25/02/10
		*IF ENR_ACCORD<21>#"" AND ENR_ACCORD<21>#"10000" THEN
        *    W_MONTANTELEMENTS=INT((W_MONTANTELEMENTS*(ENR_ACCORD<21>/10000))+1/2)
		*END
		W_MontSansPourcent=0
		
		* SI TOTAL MOIS < VALEUR ACCORD
		IF W_MONTANTELEMENTS<W_RESIDUACCORD THEN
			W_MONTANTFACTURE=W_MONTANTFACTURE-W_MONTANTELEMENTS
			* MODIF VANESSA 25/02/10
			IF ENR_ACCORD<21>#"" AND ENR_ACCORD<21>#"10000" THEN
				W_MontSansPourcent=W_MONTANTELEMENTS
				W_RESIDUACCORD=INT((W_MONTANTELEMENTS*(ENR_ACCORD<21>/10000))+1/2)
			END ELSE
				W_MontSansPourcent=W_MONTANTELEMENTS
				W_RESIDUACCORD=W_MONTANTELEMENTS
			END
			W_MONTANTELEMENTS=0
		END ELSE
			* MODIF VANESSA 25/02/10
			W_MontSansPourcent=W_RESIDUACCORD
			IF ENR_ACCORD<21>#"" AND ENR_ACCORD<21>#"10000" THEN
				W_RESIDUACCORD=INT((W_RESIDUACCORD*(ENR_ACCORD<21>/10000))+1/2)
			END
			W_MONTANTFACTURE=W_MONTANTFACTURE+W_MONTANTELEMENTS-W_RESIDUACCORD
			W_MONTANTELEMENTS=W_MONTANTELEMENTS-W_RESIDUACCORD
			W_MONTANTELEMENTSAV=W_MONTANTELEMENTS
		END
		
    END ELSE
		* SPECIF ASMAD + SPECIF 50
		***	IF W_CODEORGANISMECHARGE="135" AND ENR_ASSOCIATION<1>="A.S.M.A.D." THEN
		***	     W_TOTALHRESPAYEES=W_HEURESAPRENDRE
		***	     W_HRESPAYEES=W_TOTALHRESPAYEES
		***        END ELSE
		*** RAJOUT // GESTION DES ORGANISMES EXCLUSIVEMENT DIM ET J.F    14/11/2000
		IF W_TYPEACCORD=1 THEN
			* CALCUL LES HRES PAYEES -> DIM JF
			W_HRESPAYEES=W_DIMJF
		END ELSE
			* CALCUL LES HRES PAYEES
			W_HRESPAYEES=W_TOTALHRESPAYEES ;**+W_RESTANT
			IF W_DEPT50="1" THEN
				IF W_RESTANT=0 THEN 
					W_RESTANT=""
					W_TOTALHRESPAYEES=W_HEURESAPRENDRE
				END ELSE
					IF W_HEURESAPRENDRE<>W_RESTANT THEN 
						W_RESTANT=""
						W_TOTALHRESPAYEES=W_HEURESAPRENDRE ;**+W_RESTANT
					END
				END
				W_HRESPAYEES=W_TOTALHRESPAYEES ;**-W_DIMJF
			END
		END     
		***	END

		* CALCUL LES HRES ACCORDEES
		IF ENR_ORGPRISECHARGE<19>=1 THEN
			W_HRESACCORDEES=ENR_ACCORD<9>+ENR_ACCORD<17,1>
			
			* Modif Greg - 19/11/09 - DA9171-01
			W_ResiduHreMnt=W_HRESACCORDEES
			W_PeriodeTest=W_PERIODECOURS
			GOSUB 360
			W_HRESACCORDEES=W_ResiduHreMnt
			* Fin modif Greg - 19/11/09 - DA9171-01
			
		END ELSE
			IF ENR_ORGPRISECHARGE<19>=2 THEN
				W_HRESACCORDEES=ENR_ACCORD<9>
			END ELSE
				IF ENR_ACCORD<17,1>="" THEN
					W_HRESACCORDEES=ENR_ACCORD<9>
				END ELSE
					W_HRESACCORDEES=ENR_ACCORD<17,1>
				END
			END
		END

        * RECUPERATION PARTICIPATION BENEFICIAIRE
		L=DCOUNT(ENR_ACCORD<11>,CHAR(254))
		LOOP
		UNTIL ENR_ACCORD<11,L><=W_PERIODEFINMOIS OR L=0 DO
			L=L-1
        REPEAT
		IF L<>0 THEN
			IF ENR_ORGPRISECHARGE<48> = "%" THEN
				GOSUB 350
				W_MONTANTPARTBENEF=INT(ENR_ACCORD<10,L> * W_TauxRembOrg / 10000 + 1/2)

			END ELSE
				W_MONTANTPARTBENEF=ENR_ACCORD<13,L>
			END
	    END ELSE
		     W_MONTANTPARTBENEF=0
		END

        * RECUPERATION PARTICIPATION ORGANISME
        W_MONTANTPARTORG=0

        IF W_HRESACCORDEES-W_HRESPAYEES<0 AND W_RESTANT<>0 THEN    ;* SI DIM+JF ALORS W_HRESPAYEES=W_DIMJF.
			W_MONTANTPARTORG2=INT((W_MONTANTPARTORG-W_MONTANTPARTBENEF)*W_HRESACCORDEES/100)
			W_MONTANTPARTBENEF2=INT(W_MONTANTPARTBENEF*W_HRESACCORDEES/100+1/2)
			W_MONTANTHRESBENEF=W_HRESACCORDEES
			W_MONTANTELEMENTS=W_MONTANTELEMENTS-W_MONTANTPARTBENEF2
			W_MONTANTELEMENTSAV=W_MONTANTELEMENTS
			W_TOTALHRESPAYEES=W_TOTALHRESPAYEES-W_HRESACCORDEES
			IF W_RESTANT<>"" THEN
				W_RESTANT=W_RESTANT-W_HRESACCORDEES ;*+(W_HRESPAYEES-W_HRESACCORDEES)
			END ELSE
				***** 22/08/03
				***                W_RESTANT=W_RESTANT+(W_HRESPAYEES-W_HRESACCORDEES)
				IF ENR_ACCORD<1>#"154" AND ENR_ASSOCIATION<1>="A.S.M.A.D." THEN
					W_RESTANT=W_RESTANT+(W_HRESPAYEES-W_HRESACCORDEES)
				END ELSE
					W_RESTANT=W_RESTANT+W_HRESPAYEES
				END
				***** FIN 22/08/03
			END

			W_HEURESAPRENDRE=W_HEURESAPRENDRE-W_HRESACCORDEES
			IF W_TYPEACCORD=1 THEN 
				W_DIMJF=W_DIMJF-W_HRESACCORDEES
				IF W_DIMJF<=0 THEN W_DIMJF=0
			END
		END ELSE
			IF W_RESTANT<>0 THEN
				W_MONTANTPARTORG2=INT((W_MONTANTPARTORG-W_MONTANTPARTBENEF)*W_HRESPAYEES/100)
				W_MONTANTPARTBENEF2=INT(W_MONTANTPARTBENEF*W_HRESPAYEES/100+1/2)
				W_MONTANTHRESBENEF=W_HRESPAYEES
				IF ENR_ACCORD<1>="154" AND ENR_ASSOCIATION<1>="A.S.M.A.D." THEN W_HRESASMAD154=W_HRESPAYEES
				W_MONTANTELEMENTS=W_MONTANTELEMENTS-W_MONTANTPARTBENEF2
				W_MONTANTELEMENTSAV=W_MONTANTELEMENTS
				***	      W_TOTALHRESPAYEES=W_TOTALHRESPAYEES-W_HRESPAYEES
				W_TOTALHRESPAYEES=W_TOTALHRESPAYEES-W_HRESPAYEES+W_HRESASMAD154
				***	      IF W_RESTANT>0 THEN W_HEURESAPRENDRE=W_HEURESAPRENDRE-W_HRESPAYEES
				IF W_RESTANT>0 OR W_RESTANT="" THEN W_HEURESAPRENDRE=W_HEURESAPRENDRE-W_HRESPAYEES+W_HRESASMAD154	
				IF W_TYPEACCORD=1 THEN 
					W_DIMJF=0
				END
			END
		END
		W_MONTANTFACTURE=W_MONTANTFACTURE-W_MONTANTPARTORG2
	END

	IF W_MONTANTPARTORG2<>0 OR W_MONTANTPARTBENEF2<>0 OR W_RESIDUACCORD<>0 THEN
		ENR_ACCORD=INSERT(ENR_ACCORD,14,1;W_PERIODECOURS)
		IF ENR_ORGPRISECHARGE<19>=3 THEN
			IF ENR_ACCORD<17,1>="" THEN ENR_ACCORD<17,1>=ENR_ACCORD<9>
			IF ENR_ORGPRISECHARGE<24>="M" THEN
				* MODIF VANESSA 26/02/10
				*ENR_ACCORD=INSERT(ENR_ACCORD,17,1;ENR_ACCORD<17,1>-W_RESIDUACCORD)
				ENR_ACCORD=INSERT(ENR_ACCORD,17,1;ENR_ACCORD<17,1>-W_MontSansPourcent)
			END ELSE
				ENR_ACCORD=INSERT(ENR_ACCORD,17,1;ENR_ACCORD<17,1>-W_MONTANTHRESBENEF)
			END
		END ELSE
			IF ENR_ORGPRISECHARGE<19>=1 THEN
				* Modif Greg - 23/11/09 - Suite au DA9171-01, les formules ne sont plus bonnes. Elles ont donc t modifies.			
				IF ENR_ORGPRISECHARGE<24>="M" THEN
					* MODIF VANESSA 26/02/10
					*ENR_ACCORD=INSERT(ENR_ACCORD,17,1;ENR_ACCORD<17,1>+ENR_ACCORD<9>-W_RESIDUACCORD)
					*ENR_ACCORD=INSERT(ENR_ACCORD,17,1;W_RESIDUACCORDSAVE-W_RESIDUACCORD)
					ENR_ACCORD=INSERT(ENR_ACCORD,17,1;W_RESIDUACCORDSAVE-W_MontSansPourcent)					
				END ELSE
					*ENR_ACCORD=INSERT(ENR_ACCORD,17,1;ENR_ACCORD<17,1>+ENR_ACCORD<9>-W_MONTANTHRESBENEF)
					ENR_ACCORD=INSERT(ENR_ACCORD,17,1;W_HRESACCORDEES-W_MONTANTHRESBENEF)
				END
			END ELSE
				ENR_ACCORD=INSERT(ENR_ACCORD,17,1;"0")
			END
		END

		* ECRITURE PERIODE EN COURS (ATT 14+15+16)
		IF ENR_ORGPRISECHARGE<24>="H" THEN
			ENR_ACCORD=INSERT(ENR_ACCORD,16,1;W_MONTANTHRESBENEF)
			ENR_ACCORD=INSERT(ENR_ACCORD,15,1;-W_MONTANTPARTORG2)
		END ELSE
			ENR_ACCORD=INSERT(ENR_ACCORD,16,1;"0")
			ENR_ACCORD=INSERT(ENR_ACCORD,15,1;W_RESIDUACCORD)
		END

		IF ENR_ACCORD<16,1> # 0 OR ENR_ACCORD<15,1> # 0 THEN
			WRITE ENR_ACCORD ON F.ACCORD,W_CODEACCORD
		END

	END ELSE
		IF W_MONTANTHRESBENEF # 0 THEN
			ENR_ACCORD=INSERT(ENR_ACCORD,14,1;W_PERIODECOURS)
			ENR_ACCORD=INSERT(ENR_ACCORD,15,1;"0")
			ENR_ACCORD=INSERT(ENR_ACCORD,16,1;W_MONTANTHRESBENEF)
			ENR_ACCORD=INSERT(ENR_ACCORD,17,1;"0")
			WRITE ENR_ACCORD ON F.ACCORD,W_CODEACCORD
		END
	END
		
		
RETURN

***********************************************************
***********************************************************
* CALCUL DES DROITS ACCORDS (2)

312 *

    W_RESIDUACCORD=0
    W_MONTANTPARTORG2=0
    W_MONTANTPARTBENEF2=0
    W_MONTANTHRESBENEF=0
    W_CODEFACTURMODIF=""
    W_MONTANTELEMENTS=0
    W_MONTANTFACTURE=0
    W_DEPENGAGEES2=0
    W_DIMJF2=0

    W_TYPEORG=ENR_ORGPRISECHARGE<24>

    IF W_ACCORDTRI2<M,2>=0 THEN 
        W_TYPEACCORDRETRO=1
    END ELSE
        W_TYPEACCORDRETRO=0
    END 

    IF ENR_ORGPRISECHARGE<24>="M" THEN
		* SI GESTION DE PLAFOND DES DROITS GLOBAUX         
        IF ENR_ORGPRISECHARGE<19>=3 THEN
			* RECUPERE LES DROITS RESTANTS
			IF ENR_ACCORD<17,1>="" THEN
				W_RESIDUACCORD=ENR_ACCORD<9>
			END ELSE
				W_RESIDUACCORD=ENR_ACCORD<17,1>
			END
        END ELSE
			* SI GESTION DE PLAFOND DES DROITS MENSUEL AVEC REPORT
			IF ENR_ORGPRISECHARGE<19>=1 THEN
				W_RESIDUACCORD=ENR_ACCORD<17,1>+ENR_ACCORD<9>
				
				* Modif Greg - 19/11/09 - DA9171-01
				W_ResiduHreMnt=W_RESIDUACCORD
				W_PeriodeTest=W_PERIODETRAITEACC
				GOSUB 360
				W_RESIDUACCORD=W_ResiduHreMnt
				W_RESIDUACCORDSAVE=W_RESIDUACCORD
				* Fin modif Greg - 19/11/09 - DA9171-01
				
			END ELSE
				* SI GESTION MENSUELLE SANS REPORT
				W_RESIDUACCORD=ENR_ACCORD<9>
			END
		END   

		* CALCUL DU MONTANT TOTAL DES FACTURAIDE
		SELECT F.FACTURAIDE TO LISTEFACTURAIDERETRO
 
		IF MSGCODE<1>=209 THEN 
			W_ERREUR=1
			RETURN
		END ELSE	
			W_ERREUR=0
		END

		W_FINFACTURAIDE="FAUX"
		LOOP 
			READNEXT CLE FROM LISTEFACTURAIDERETRO ELSE W_FINFACTURAIDE="VRAI"
		UNTIL W_FINFACTURAIDE="VRAI" DO
			READ ENR_FACTURAIDE2 FROM F.FACTURAIDE,CLE ELSE ENR_FACTURAIDE2=""

			* TEST SI FACTURE MODIFIEE
			IF CLE[26,1]=1 THEN
				W_CODEFACTURMODIF=CLE[1,25]
				W_TRAITE=1
			END ELSE
				IF W_CODEFACTURMODIF=CLE[1,25] THEN
					W_TRAITE=0
				END ELSE
					W_TRAITE=1
				END
			END

			IF W_TRAITE=1 THEN
				L=1
				LOOP
				UNTIL ENR_FACTURAIDE2<5,L>="" DO
					W_MONTANTELEMENTS=W_MONTANTELEMENTS+ENR_FACTURAIDE2<5,L>
					W_DEPENGAGEES2=W_DEPENGAGEES2+ENR_FACTURAIDE2<5,L>
					L=L+1
				REPEAT
			END
		REPEAT

		IF W_RESIDUACCORD="" THEN W_RESIDUACCORD=0

		** 12/09/01  RAJOUT TEST ABATTEMENT CRAM MANDATAIRE
		* MODIF VANESSA 25/02/10
		*IF ENR_ACCORD<21>#"" AND ENR_ACCORD<21>#"10000" THEN
		*	W_MONTANTELEMENTS=INT((W_MONTANTELEMENTS*(ENR_ACCORD<21>/10000))+1/2)
		*END
		W_MontSansPourcent=0
		
		* SI TOTAL MOIS < VALEUR ACCORD
		IF W_MONTANTELEMENTS<W_RESIDUACCORD THEN
			W_MONTANTFACTURE=W_MONTANTFACTURE-W_MONTANTELEMENTS
			* MODIF VANESSA 25/02/10
			IF ENR_ACCORD<21>#"" AND ENR_ACCORD<21>#"10000" THEN
				W_MontSansPourcent=W_MONTANTELEMENTS
				W_RESIDUACCORD=INT((W_MONTANTELEMENTS*(ENR_ACCORD<21>/10000))+1/2)
			END ELSE
				W_MontSansPourcent=W_MONTANTELEMENTS
				W_RESIDUACCORD=W_MONTANTELEMENTS
			END
			W_MONTANTELEMENTS=0
		END ELSE
			* MODIF VANESSA 25/02/10
			W_MontSansPourcent=W_RESIDUACCORD
			IF ENR_ACCORD<21>#"" AND ENR_ACCORD<21>#"10000" THEN
				W_RESIDUACCORD=INT((W_RESIDUACCORD*(ENR_ACCORD<21>/10000))+1/2)
			END
			W_MONTANTFACTURE=W_MONTANTFACTURE+W_MONTANTELEMENTS-W_RESIDUACCORD
			W_MONTANTELEMENTS=W_MONTANTELEMENTS-W_RESIDUACCORD
		END
	END ELSE
		* CALCUL LES HRES PAYEES
		SELECT F.DETAILCALCUL TO LISTEDETAILCALCULRETRO

		IF MSGCODE<1>=209 THEN 
			W_ERREUR=1
			RETURN
		END ELSE	
			W_ERREUR=0
		END

		W_FINDETAILCALCUL="FAUX"
		LOOP 
			READNEXT CLE FROM LISTEDETAILCALCULRETRO ELSE W_FINDETAILCALCUL="VRAI"
		UNTIL W_FINDETAILCALCUL="VRAI" DO
			READ ENR_DETAILCALCUL2 FROM F.DETAILCALCUL,CLE ELSE ENR_DETAILCALCUL2=""

			L=1
			LOOP
			UNTIL ENR_DETAILCALCUL2<2,L>="" DO
				IF W_DEPT50="0" THEN
					IF ENR_DETAILCALCUL2<2,L>#"810" THEN W_HRESPAYEES=W_HRESPAYEES+ENR_DETAILCALCUL2<3,L>
				END ELSE
					READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL2<2,L> THEN
						IF ENR_RUBSAISIE<2>="4" OR ENR_RUBSAISIE<2>="3" THEN		       
							W_HRESPAYEES=W_HRESPAYEES+ENR_DETAILCALCUL2<3,L>
						END
					END
				END
				L=L+1
			REPEAT

			*** RAJOUT // GESTION DES ORGANISMES EXCLUSIVEMENT DIM ET J.F    14/11/2000
			* STOCKE LES HRES DIM+J.F
			P=1
			LOOP
			UNTIL ENR_DETAILCALCUL2<2,P>="" DO
				READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL2<2,P> THEN
					IF ENR_RUBSAISIE<2>="4" THEN
						W_DIMJF2=W_DIMJF2+ENR_DETAILCALCUL2<3,P>
					END
				END
				P=P+1
			REPEAT
		REPEAT

        * SI JAMAIS PASSE
		IF W_TOTALHRESRETRO="99999" THEN 
			W_TOTALHRESRETRO=W_HRESPAYEES
		END

        * CALCUL LES HRES ACCORDEES
		IF ENR_ORGPRISECHARGE<19>=1 THEN
			W_HRESACCORDEES=ENR_ACCORD<9>+ENR_ACCORD<17,1>
			
			* Modif Greg - 19/11/09 - DA9171-01
			W_ResiduHreMnt=W_HRESACCORDEES
			W_PeriodeTest=W_PERIODETRAITEACC
			GOSUB 360
			W_HRESACCORDEES=W_ResiduHreMnt
			* Fin modif Greg - 19/11/09 - DA9171-01
			
		END ELSE
			IF ENR_ORGPRISECHARGE<19>=2 THEN
				W_HRESACCORDEES=ENR_ACCORD<9>
			END ELSE
				IF ENR_ACCORD<17,1>="" THEN
					W_HRESACCORDEES=ENR_ACCORD<9>
				END ELSE
					W_HRESACCORDEES=ENR_ACCORD<17,1>
				END
			END
        END

        * RECUPERATION PARTICIPATION BENEFICIAIRE
		L=DCOUNT(ENR_ACCORD<11>,CHAR(254))
		LOOP
		UNTIL ENR_ACCORD<11,L><=W_PERIODEFINMOIS OR L=0 DO
            L=L-1
        REPEAT
		IF L<>0 THEN
			IF ENR_ORGPRISECHARGE<48> = "%" THEN
				GOSUB 350
				W_MONTANTPARTBENEF=INT(ENR_ACCORD<10,L> * W_TauxRembOrg / 10000 + 1/2)
			END ELSE
				W_MONTANTPARTBENEF=ENR_ACCORD<13,L>
			END		
        END ELSE
		    W_MONTANTPARTBENEF=0
		END

        * RECUPERATION PARTICIPATION ORGANISME
        W_MONTANTPARTORG=0

		IF W_TYPEACCORDRETRO=1 THEN 
			N=1
			LOOP 
	        UNTIL W_ACCORDTRI2<9,N>=W_PERIODETRAITEACC OR W_ACCORDTRI2<9,N>="" DO
				N=N+1
			REPEAT
			IF W_ACCORDTRI2<9,N><>"" THEN
				W_HRESPAYEES=W_DIMJF2-W_ACCORDTRI2<10,N>
			END ELSE
				W_HRESPAYEES=W_DIMJF2
			END
		END ELSE
			N=1
			LOOP 
			UNTIL W_ACCORDTRI2<9,N>=W_PERIODETRAITEACC OR W_ACCORDTRI2<9,N>="" DO
				N=N+1
			REPEAT
			IF W_ACCORDTRI2<9,N><>"" THEN
				W_HRESPAYEES=W_HRESPAYEES-W_ACCORDTRI2<10,N>
			END ELSE
				W_HRESPAYEES=W_TOTALHRESRETRO
			END
		END

        IF W_HRESACCORDEES-W_HRESPAYEES<0 THEN
			W_MONTANTPARTORG2=INT((W_MONTANTPARTORG-W_MONTANTPARTBENEF)*W_HRESACCORDEES/100)
			W_MONTANTPARTBENEF2=INT(W_MONTANTPARTBENEF*W_HRESACCORDEES/100+1/2)
			W_MONTANTHRESBENEF=W_HRESACCORDEES
			W_TOTALHRESRETRO=W_TOTALHRESRETRO-W_HRESACCORDEES
		END ELSE
			W_MONTANTPARTORG2=INT((W_MONTANTPARTORG-W_MONTANTPARTBENEF)*W_HRESPAYEES/100)
			W_MONTANTPARTBENEF2=INT(W_MONTANTPARTBENEF*W_HRESPAYEES/100+1/2)
			W_MONTANTHRESBENEF=W_HRESPAYEES
			W_TOTALHRESRETRO=W_TOTALHRESRETRO-W_HRESPAYEES
		END

        * RECHERCHE SI MOIS DEJA TRAITE
		N=1
		LOOP 
		UNTIL W_ACCORDTRI2<9,N>=W_PERIODETRAITEACC OR W_ACCORDTRI2<9,N>="" DO
			N=N+1
		REPEAT
        IF W_ACCORDTRI2<9,N>="" THEN	
            W_ACCORDTRI2<9,N>=W_PERIODETRAITEACC
            W_ACCORDTRI2<10,N>=W_MONTANTHRESBENEF
        END ELSE
            W_ACCORDTRI2<9,N>=W_PERIODETRAITEACC
            W_ACCORDTRI2<10,N>=W_ACCORDTRI2<10,N>+W_MONTANTHRESBENEF
		END

		W_MONTANTFACTURE=W_MONTANTFACTURE-W_MONTANTPARTORG2

		W_DIMJF2=0
    END

    IF W_MONTANTPARTORG2<>0 OR W_MONTANTPARTBENEF2<>0 OR W_RESIDUACCORD<>0 THEN
        * ECRITURE PERIODE RETROACTIVE (ATT 14+15+16)
        ENR_ACCORD=INSERT(ENR_ACCORD,14,1;W_PERIODETRAITEACC)
        IF ENR_ORGPRISECHARGE<24>="H" THEN
            ENR_ACCORD=INSERT(ENR_ACCORD,16,1;W_MONTANTHRESBENEF)
			ENR_ACCORD=INSERT(ENR_ACCORD,15,1;-W_MONTANTPARTORG2)
			IF ENR_ORGPRISECHARGE<19>=1 THEN	
				* Modif Greg - 23/11/09 - Suite au DA9171-01, les formules ne sont plus bonnes. Elles ont donc t modifies.
				*IF ENR_ACCORD<17,1>="" THEN
				*	ENR_ACCORD=INSERT(ENR_ACCORD,17,1;ENR_ACCORD<9>-W_MONTANTHRESBENEF)
				*END ELSE
				*	ENR_ACCORD=INSERT(ENR_ACCORD,17,1;ENR_ACCORD<17,1>+(ENR_ACCORD<9>-W_MONTANTHRESBENEF))
				*END
				ENR_ACCORD=INSERT(ENR_ACCORD,17,1;W_HRESACCORDEES-W_MONTANTHRESBENEF)
			END
			IF ENR_ORGPRISECHARGE<19>=2 THEN
				ENR_ACCORD=INSERT(ENR_ACCORD,17,1;"0")
			END
		END ELSE
            ENR_ACCORD=INSERT(ENR_ACCORD,16,1;"0")
            ENR_ACCORD=INSERT(ENR_ACCORD,15,1;W_RESIDUACCORD)
			IF ENR_ORGPRISECHARGE<19>=1 THEN
				* Modif Greg - 23/11/09 - Suite au DA9171-01, les formules ne sont plus bonnes. Elles ont donc t modifies.
				* MODIF VANESSA 26/02/10
				*ENR_ACCORD=INSERT(ENR_ACCORD,17,1;ENR_ACCORD<9>-W_MONTANTHRESBENEF)
				*ENR_ACCORD=INSERT(ENR_ACCORD,17,1;W_RESIDUACCORDSAVE-W_RESIDUACCORD)
				ENR_ACCORD=INSERT(ENR_ACCORD,17,1;W_RESIDUACCORDSAVE-W_MontSansPourcent)
			END
			IF ENR_ORGPRISECHARGE<19>=2 THEN
				ENR_ACCORD=INSERT(ENR_ACCORD,17,1;"0")
			END
			IF ENR_ORGPRISECHARGE<19>=3 THEN
				* MODIF VANESSA 26/02/10
				IF ENR_ACCORD<17,1>="" THEN
					*ENR_ACCORD=INSERT(ENR_ACCORD,17,1;ENR_ACCORD<9>-W_RESIDUACCORD)
					ENR_ACCORD=INSERT(ENR_ACCORD,17,1;ENR_ACCORD<9>-W_MontSansPourcent)
				END ELSE
					*ENR_ACCORD=INSERT(ENR_ACCORD,17,1;ENR_ACCORD<17,1>-W_RESIDUACCORD)
					ENR_ACCORD=INSERT(ENR_ACCORD,17,1;ENR_ACCORD<17,1>-W_MontSansPourcent)
				END
			END 
        END
		
		IF ENR_ACCORD<15,1> # 0 OR ENR_ACCORD<16,1> # 0 THEN
			WRITE ENR_ACCORD ON F.ACCORD,W_ACCORDTRI2<M,1>
		END
    END ELSE
		IF W_MONTANTHRESBENEF # 0 THEN
			ENR_ACCORD=INSERT(ENR_ACCORD,14,1;W_PERIODETRAITEACC)
			ENR_ACCORD=INSERT(ENR_ACCORD,15,1;"0")
			ENR_ACCORD=INSERT(ENR_ACCORD,16,1;W_MONTANTHRESBENEF)
			ENR_ACCORD=INSERT(ENR_ACCORD,17,1;"0")
			WRITE ENR_ACCORD ON F.ACCORD,W_ACCORDTRI2<M,1>
		END
    END
RETURN

***********************************************************
***********************************************************
* GESTION DROITS SUR ACCORD RETROACTIF

320 *
 
  M=1
  LOOP
    UNTIL W_ACCORDTRI2<M>="" DO
 
    READ ENR_ACCORD FROM F.ACCORD,W_ACCORDTRI2<M,1> ELSE ENR_ACCORD=""

    * EFFECTUE EFFET RETROACTIF SUR ACCORD
    W_CODEORGANISMECHARGE=ENR_ACCORD<1>
    * LECTURE ORGPRISECHARGE DE L'ACCORD
    READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,ENR_ACCORD<1> ELSE
        *PRINT "ERREUR ORGPRISECHARGE"
    END
	
    * CALCUL DATE DEB. + DATE FIN ACCORD
    W_DATEDEBACC=OCONV(ENR_ACCORD<5>,"D4/")
    W_DATEFINACC=OCONV(ENR_ACCORD<6>,"D4/")
    W_DATEDEBACC=W_DATEDEBACC[7,4]:W_DATEDEBACC[4,2]			
    W_DATEFINACC=W_DATEFINACC[7,4]:W_DATEFINACC[4,2]			

    IF W_PERIODECOURS<=W_DATEFINACC THEN
	IF W_PERIODECOURS[5,2]="01" THEN				
	    W_DATEFINACC=W_PERIODECOURS[1,4]-1:"12"
	END ELSE
	    W_DATEFINACC=W_PERIODECOURS-1
	END
    END

    * PARCOURS TOUTES LES PERIODES DE DEB. ACC. JUSQU'A FIN ACC.
    W_PERIODETRAITEACC=W_DATEDEBACC
    LOOP 
         UNTIL W_PERIODETRAITEACC>W_DATEFINACC DO

  	 W_TOTALHRESRETRO="99999"
	 W_HRESPAYEES=0
	
	 IF ENR_ORGPRISECHARGE<24>="H" THEN
	     * SELECTIONNE DETAILCALCUL ACTIF SUR PERIODE
             EXECUTE 'SSELECT DETAILCALCUL AVEC CodeAideDetailCalcul = "':W_CODEAIDE:'" AND AVEC PeriodeDetailCalcul = "':W_PERIODETRAITEACC:'" AND AVEC CodAssoContratDetailCalcul = "':W_CODEENTITE:'" PAR 0'
             EXECUTE 'SAUVE-LISTE LISTEDETAILCALCULRETRO'
             EXECUTE "LISTE LISTEDETAILCALCULRETRO" CAPTURING MSG RETURNING MSGCODE
 	 END ELSE
	     * SELECTIONNE FACTURAIDE ACTIF SUR PERIODE
	     EXECUTE 'SSELECT FACTURAIDE AVEC CodeAideFact = "':W_CODEAIDE:'" AND AVEC PeriodeCleFactAide = "':W_PERIODETRAITEACC:'" AND AVEC CodeEntiteFact = "':W_CODEENTITE:'" AND AVEC ActiviteFact = "M" PAR-DECR FactureModif'
 	     EXECUTE 'SAUVE-LISTE LISTEFACTURAIDERETRO'
	     EXECUTE "LISTE LISTEFACTURAIDERETRO" CAPTURING MSG RETURNING MSGCODE
	 END

         W_PERIODERETROACTIVE=W_PERIODETRAITEACC

	 GOSUB 312

         IF W_ERREUR=0 THEN GOSUB 112

         EXECUTE 'EFFACER-LISTE LISTEDETAILCALCULRETRO'
	 EXECUTE 'EFFACER-LISTE LISTEFACTURAIDERETRO'

         * TEST SI MOIS DE DECEMBRE
	 IF W_PERIODETRAITEACC[5,2]<>"12" THEN
	     W_PERIODETRAITEACC=W_PERIODETRAITEACC+1
	 END ELSE
	     W_PERIODETRAITEACC=W_PERIODETRAITEACC[1,4]+1:"01"
	 END
    REPEAT
    M=M+1
  REPEAT
RETURN

***********************************************************
***********************************************************
* GENERATION DU FICHIER STATACTAIDE

500 *

    I=1
    LOOP
	 UNTIL ENR_DETAILCALCUL<26,I>="" DO
	 GOSUB 501

         ENR_STATACTAIDE<1,J>=ENR_DETAILCALCUL<26,I>
	 ENR_STATACTAIDE<2,J>=ENR_STATACTAIDE<2,J>+ENR_DETAILCALCUL<25,I>

    	 I=I+1
    REPEAT

RETURN

***********************************************************
***********************************************************
* RECHERCHE SI ACT. DEJA AFFECTEE

501 *

    J=1
    LOOP
	 UNTIL ENR_STATACTAIDE<1,J>=ENR_DETAILCALCUL<26,I> OR ENR_STATACTAIDE<1,J>="" DO
	 J=J+1
    REPEAT

RETURN

***********************************************************
***********************************************************
* REMISE A ZERO DES VARIABLES

999 *
    ENR_FACTURAIDE=""
    W_MONTANTCHGURSSAFPAT=0
    W_MONTANTCHGURSSAFSAL=0
    W_MONTANTCOTISPREV=0
    W_PROVISIONCONGES=0
    W_PROVISIONCONGESa=0
    W_PROVISIONCONGESb=0
    W_PROVISIONCONGESTOTAL=0 	
    W_NBAIDANT=0
    W_PASSWRITE=1
    W_COTISPREVASSO=0
    W_TOTALCHGPAT=0
    W_TAUXCHARGESPAT=0
    W_ANCIENNETE=0
    W_PROVISIONCONGESTOTAL=0
    W_CUMULFRAISGESTION=0
    W_FRAISGESTION=0
    W_NBBULLETIN=0
	W_NBBULLETIN1=0
	W_NBBULLETIN2=0
	W_NBBULLETIN3=0	
    W_VALEURMAJORATION=0
    W_VALEURFRAISDOSSIER=0
    W_MONTANTCHGURSSAFPAYEESMOIS=0
    W_MONTANTCOTISPREVPAYEESMOIS=0
    W_NBJOURCONGESCOURS=0
    W_PROVISIONCOURS=0
    W_MONTANTREPRISECOURS=0
    W_ERREURCOTISAN=0
    W_MONTANTCOTIS=0
    W_MONTANTCOMPLFACT=0
    W_MONTANTASSIETTEFRAISGEST=0
    W_MONTANTFACTURE=0
    W_HRESPAYEES=0
    W_MONTANTREPRISEPROV=0
    W_MONTANTSALPAYERCOURS=0
    W_HEURESALPAYERCOURS=0
    W_ASSIETTEFRAISGESTION=""
    W_CUMULMONTANTREPRISEPROV=0
    W_AFFECTFRAISDOSSIER=0
    W_MONTANTPARTBENEF=0
    W_NBACCORD=0
    ENR_NOMAIDANT=""
**    ENR_STATACTAIDE=""
    W_NUMACCORD=""
    W_ACCORDSANSRATTRAP=""
****
    W_ACCORDRATTRAP=""
****
    W_ACCORDTRI1=""
    W_MONTANTBRUT=0
    W_MONTANTFORFAIT=0 
    W_FRAISGESTION1=0
    W_FRAISGESTION2=0
    W_FRAISGESTION3=0   
    W_BASEFRAISGESTION=0
    W_BASEFRAISGESTION1=0
    W_BASEFRAISGESTION2=0
    W_BASEFRAISGESTION3=0
    W_BASEPARTEMP=0
    W_MONTANTCHGAPPELEES=0
    W_RANGCOURS=0
    W_DEPENGAGEES=0
    W_DIMJF=0
    W_RESTANT=""
    W_SOUMISTVA=0
    W_PERIODECOURS=W_PERIODEMOIS
RETURN

************************************************************************
* Recherche le taux de remboursement de l'organisme
350
   * W_DatePeriode=ICONV("01/":W_PERIODEMOIS[5,2]:W_PERIODEMOIS[1,4],"D4/")
	W_DatePeriode=W_PERIODEDEBUT
*PRINT W_DatePeriode
*PRINT ENR_ORGPRISECHARGE<25>

    W_TauxRembOrg=0
*    W_TauxRembOrgMaj=0
    IF W_DatePeriode >= ENR_ORGPRISECHARGE<25,1> THEN
       	  W_TauxRembOrg=ENR_ORGPRISECHARGE<26,1>
*       	  W_TauxRembOrgMaj=ENR_ORGPRISECHARGE<27,1>
    END ELSE
       iTaux=1
       LOOP
       WHILE W_DatePeriode < ENR_ORGPRISECHARGE<25,iTaux> AND ENR_ORGPRISECHARGE<25,iTaux> # "" DO
          iTaux=iTaux+1
       REPEAT
       IF ENR_ORGPRISECHARGE<25,iTaux> # "" THEN
       	     W_TauxRembOrg=ENR_ORGPRISECHARGE<26,iTaux>
*			 W_TauxRembOrgMaj=ENR_ORGPRISECHARGE<27,iTaux>
       END
    END
*	IF ENR_RUBSAISIE<2>=4 THEN
*		  W_Taux=INT(ENR_ACCORD<10,iTaux> * W_TauxRembOrgMaj / 10000 + 1/2)
*	END ELSE
*		  W_Taux=INT(ENR_ACCORD<10,iTaux> * W_TauxRembOrg / 10000 + 1/2)
*	END

RETURN

************************************************************************
* Modif Greg - 19/11/09 - DA9171-01 - La plupart du temps, la MV 1 correspond bien
*  la priode prcdente. Donc c'est bien ce report qu'il faut prendre. Mais il peut
* arriver soit que la MV 1 ne corresponde pas  la priode prcdente, soit que la MV 1
* n'existe pas car il n'y a pas d'historique. Dans ces 2 cas de figure, les heures
* reportes doivent inclure les heures alloues mensuellement pour les priodes non
* prsentes dans l'historique. Par exemple si l'aid a droit  10H/Mois, qu'on traite
* le mois de septembre et que la dernire facturation date de juillet, alors la MV 1
* correspond  juillet. Il faut donc ajouter aux heures rsiduelles les 10H qui n'ont pas
* t utilises en aout. Si il n'y a pas du tout d'historique, alors il faut prendre
* comme priode de dbut la priode de dbut de l'accord.
* Le mme principe doit s'appliquer quand l'accord est en montant.
************************************************************************
360

	* On dfinit la priode prcdent celle en cours de traitement.
	W_PerResiduFin=""
	IF W_PeriodeTest[5,2] <> "01" THEN
		W_PerResiduFin=W_PeriodeTest-1
	END ELSE
		W_PerResiduFin=W_PeriodeTest[1,4]-1:"12"
	END

	* On dfinit la priode  partir de laquelle on doit calculer un rsidu.
	W_PerResiduDeb=""
	IF ENR_ACCORD<14>="" THEN
		* Si pas d'historique, on prend la priode de dbut de l'accord.
		W_PerResiduDeb=OCONV(ENR_ACCORD<5>,"D4/")
		W_PerResiduDeb=W_PerResiduDeb[7,4]:W_PerResiduDeb[4,2]
	END ELSE
		* Si historique, on prend la dernire priode de l'historique plus 1.
		W_PerResiduDeb=ENR_ACCORD<14,1>
		IF W_PerResiduDeb[5,2]="12" THEN
			W_PerResiduDeb=W_PerResiduDeb[1,4]+1:"01"
		END ELSE
			W_PerResiduDeb=W_PerResiduDeb+1
		END
	END

	* On parcourt les priodes et pour chacune d'elles,
	* on rajoute au rsidu les droits allous.
	* Si on avait dj en MV 1 la priode prcdent celle en cours,
	* alors W_PerResiduDeb est suprieure  W_PerResiduFin. Donc on 
	* ne passe pas dans la boucle, ce qui est correct.
	FOR W_PerResidu = W_PerResiduDeb TO W_PerResiduFin
		* Si le mois est  13, c'est qu'on a chang d'anne.
		* Donc il faut initialise correctement la variable.
		IF W_PerResidu[5,2]="13" THEN
			W_PerResidu=W_PerResidu[1,4]+1:"01"
		END
		* On cumule
		W_ResiduHreMnt=W_ResiduHreMnt+ENR_ACCORD<9>
	NEXT W_PerResidu
	
RETURN