*********************************************************
* INTEGRATION DES ECRITURES PAIE EN COMTPA              *
* PREMIER TRAITEMENT MARS 1999          STEPHANE HERVET *
*  --> EXPLOSION COMPTA JRME               AVRIL 2000 *
*  --> MAJ SUITE MODIF STEPHANE              MAI   2000 *
*  --> MODIF AFFECTATION SAISIE DEB. & CRED. JUIN  2000 *
*  --> MAJ SUITE MODIF STEPHANE              JUIN  2000 *
*  --> MODIF REQUETE			     JUILL 2000 *
*  --> MAJ SUITE MODIF STEPHANE              AOUT  2000 *
*********************************************************

*    2   -->   
*    3   -->   
*    4   -->   
*    5   -->
   
*  400   -->   CALCUL DE LA SOMME DES HEURES
*  401   -->   CALCUL DU POURCENTAGE DE REPARTITION (SI PROD.) 
*  402   -->   CALCUL DU POURCENTAGE DE REPARTITION (SI ADM.) 
*  999   -->   INITIALISATION VARIABLES
* 1000   -->   TRAITEMENT DU FICHIERS GENERE
* 1100   -->   TRAITEMENT DES RUBRIQUES DE CHARGE
* 1200   -->   TRAITEMENT DES RUBRIQUES DE SAISIE
*
* 1500   -->   MISE EN TABLEAU
* 1600   -->   ECRITURE BROUILLARDDETAIL
* 1700   -->   ECRITURE FICHIER TEMPO

**************************
* OUVERTURE DES FICHIERS *
**************************
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","TEMPVENTILEDIT" TO F.TEMPVENTILEDIT ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE STOP
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "","RUBSAISIE" TO F.RUBSAISIE ELSE STOP
OPEN "","RUBCHARGE" TO F.RUBCHARGE ELSE STOP
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","ACTIVITES" TO F.ACTIVITES ELSE STOP
OPEN "","TEMPO" TO F.TEMPO ELSE STOP
OPEN "","BROUILLARDDETAIL" TO F.BROUILLARDDETAIL ELSE STOP
OPEN "","COMPTESPARTICULIERS" TO F.COMPTESPARTICULIERS ELSE STOP
OPEN "","TABLES" TO F.TABLES ELSE STOP

*************************************************
* RECUPERATION PARAMETRES PASSES A LA PROCEDURE *
*************************************************
PROCREAD ARGUMENTS ELSE 
    *PRINT "ERREUR PROCREAD"
    STOP
END

W_CODASSOC=FIELD(ARGUMENTS,"|",2)
W_JOURNAL=FIELD(ARGUMENTS,"|",3)
W_PERIODE=FIELD(ARGUMENTS,"|",4)
W_LIGNE=FIELD(ARGUMENTS,"|",5)
W_CLEBROUILLARD=FIELD(ARGUMENTS,"|",6)
W_PERIODECLAIR=FIELD(ARGUMENTS,"|",7)
W_FINPERIODE=FIELD(ARGUMENTS,"|",8)

W_CODEENTITE = W_CODASSOC
W_PERIODECLAIR=W_PERIODE[5,2]:"/":W_PERIODE[3,2] 

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

EXECUTE 'SSELECT DETAILCALCUL AVEC @ID = "':"[":W_PERIODE:'"  AND AVEC CodAssoContratDetailCalcul = "':W_CODASSOC:'" AND AVEC ConvColContratDetailCalcul <> "02" PAR SectionAnalytique PAR PeriodeDetailCalcul'

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

IF MSGCODE<1>=209 THEN STOP
SELECT F.DETAILCALCUL TO LISTEVENTIL


*****************************************************
* LECTURE FICHIERS                        EN BOUCLE *
*****************************************************
W_NBART=0
W_TOTAL=0
W_TOTALBRUT=0
W_RANGPLUSFORT=0
W_RANGACT=0
W_RANGRUB=0
W_RANGSECTION=0
W_TOTALECLATBASE=0
W_TOTALECLATMONT=0
W_TOTALECLATMONTIMP=0
W_TOTALECLATNETPAYER=0
W_TOTALECLATMONTPAYER=0
W_PROD=0
W_ADM=0
ENR_CUMULS=""
ENR_CUMULS2=""
ENR_CUMULSGLOB=""
W_RUBSAISIEDONT=""
W_RUBAPSAISIEDONT=""

W_REQVIDE="FAUX"

W_RUBSAISIE=""
W_TABDYN=""
W_SECTEUR=""
W_TYPEPERSONNEL=""
W_TABSECTANAL=""
W_SECTIONANAL=""
W_SECTIONANALCHARGE=""
W_SECTIONANALAPCHARGE=""
W_TABACTIVITE=""
W_REGROUPBRUT=""
W_REGROUPCHARGE=""
W_REGROUPAPCHARGE=""
W_REGROUPSECTIONANAL=""
W_REGROUPSECTIONANALYTIQUE=""
ENR_SECTDISPO=""

W_RUBSAISIEFORT=""
W_RUBCHARGEFORT1=""
W_RUBCHARGEFORT2=""
W_RUBAPSAISIEFORT=""
W_CUMULSAISIE=0
W_CUMULCHARGE1=0
W_CUMULCHARGE2=0
W_CUMULAPSAISIE=0

W_ECLATDETAIL=""
W_REGROUPECLAT=""

GOSUB 999

* VIDAGE TAMPON
EXECUTE 'VIDER-FICHIER TEMPVENTILEDIT'

* RECUPERATION EVENTUEL COMPTE PARTICULIER REGUL
READ ENR_COMPTESPARTICULIERS FROM F.COMPTESPARTICULIERS,W_CODASSOC THEN
	W_COMPTEATTENTE=ENR_COMPTESPARTICULIERS<10>
END ELSE
	PRINT "COMPTES PARTICULIERS"
END

* LECTURE ASSOCIATION
READ ENR_ASSOCIATION FROM F.ASSOCIATION,W_CODASSOC ELSE 
     *PRINT "ERREUR ENTITE ":W_CODASSOC
     STOP
END

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

    W_NBART=W_NBART+1
    ********************************************
    * LECTURE + AFFECTATION DES DONNEES (READ) *
    ********************************************
    W_CODECONTRAT=CLE[1,8]
    W_CODEAIDANT=CLE[1,5]

    * LECTURE CONTRAT
    READ ENR_CONTRAT FROM F.CONTRAT,W_CODECONTRAT THEN
		IF ENR_CONTRAT<6>="A" THEN
			IF ENR_CONTRAT<104> <= W_PERIODE THEN
				W_Cours="VRAI"
				W_MV=1
			END ELSE
				W_Cours="FAUX"
				W_MV=1
				LOOP 
				UNTIL ENR_CONTRAT<105,W_MV> <= W_PERIODE DO
					W_MV=W_MV+1
				REPEAT
			END
		END
	END ELSE
         *PRINT "ERREUR CONTRAT ":W_CODECONTRAT
         STOP
    END

    * LECTURE DETAILCALCUL
    READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,CLE ELSE
         *PRINT "ERREUR DETAILCALCUL ":CLE
	 STOP
    END

	 **************************************************
	 * GESTION TRI PAR SECTION ANALYTIQUE             *
	 * PARCOURS DES ACTIVITES DES CONTRATS (DE 1 A X) *
	 **************************************************
	 W_NBRUBSAISIE=DCOUNT(ENR_DETAILCALCUL<24>,CHAR(253))

	 W_TABACTIVITE<1>=""
	 W_TABACTIVITE<2>=""
	 W_TABACTIVITE<3>=""

	 W_TOTAL=0
	 W_RANG=1

         IF ENR_CONTRAT<6>="P" THEN
	      * TEST SI ATT 24,25,26 RENSEIGNE
	      IF W_NBRUBSAISIE=0 THEN
		   I=1
		   LOOP 
			UNTIL ENR_DETAILCALCUL<2,I>="" DO
   		        ENR_DETAILCALCUL<24,I>=ENR_DETAILCALCUL<2,I>
			IF ENR_DETAILCALCUL<3,I>="" THEN ENR_DETAILCALCUL<3,I>=0
		        ENR_DETAILCALCUL<25,I>=ENR_DETAILCALCUL<3,I>
		        ENR_DETAILCALCUL<26,I>=ENR_CONTRAT<36,1>
		        ENR_DETAILCALCUL<27,I>=ENR_DETAILCALCUL<5,I>
			I=I+1
		   REPEAT

	   	   W_NBRUBSAISIE=DCOUNT(ENR_DETAILCALCUL<24>,CHAR(253))
	      END		  		

              FOR X=1 TO W_NBRUBSAISIE    
                   * CALCUL SOMME DES HEURES
	           GOSUB 400
      	      NEXT 
	      * CALCUL % REPARTITION
	      GOSUB 401
	 END ELSE
	      * CALCUL % REPARTITION
	      GOSUB 402
	 END	      

         * AFFECTATION FICHIER MATRICE SAISIE
	 GOSUB 2

         * AFFECTATION FICHIER MATRICE CHARGE
	 GOSUB 3

         * AFFECTATION FICHIER MATRICE AP. SAISIE
	 GOSUB 4


    ***************************
    * INCREMENTATION VARIABLE *
    ***************************
    W_TYPEPERSONNEL=ENR_CONTRAT<6>
    W_TABDYN=""
    W_TOUR=W_TOUR+1

REPEAT

J=1
LOOP 
	UNTIL ENR_SECTDISPO<J>="" DO
        GOSUB 5
	J=J+1
	
REPEAT

**************
* TRAITEMENT *
**************

	* TRAITEMENT DES INFOS RECUPERE
	GOSUB 1000

	* ECRITURE BROUILLARDDETAIL
	GOSUB 1600

	* SAUVEGARDE DES INFOS EN TAMPON POUR BROUILLARDTETE
	GOSUB 1700

	* VIDAGE TAMPON
***   	EXECUTE 'VIDER-FICHIER TEMPVENTILEDIT'

STOP

***************************************************
* AFFECTATION FICHIER MATRICE RUB SAISIE (ECLAT.+PROD)
***************************************************
2 *

    I=1
    LOOP
	 UNTIL ENR_DETAILCALCUL<2,I>="" DO

	 W_CUMULSAISIE=ENR_DETAILCALCUL<5,I>

	 W_RUBSAISIEFORT=""

	 * COMPTE LE NBRE DE VALEURS DANS CALCUL %
         W_NBACTIVITEPOURC=DCOUNT(W_TABACTIVITE<1>,CHAR(253))

	 FOR J=1 TO W_NBACTIVITEPOURC
	      * LECTURE RUBRIQUE SAISIE
	      READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<2,I> ELSE ENR_RUBSAISIE=""	

  	      * VERIFIE SI RUB. EXISTE
	      READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,"S":ENR_DETAILCALCUL<2,I>:W_TABACTIVITE<4,J> THEN
		   ENR_TEMPVENTILEDIT<1>=ENR_RUBSAISIE<1>
		   ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(ENR_DETAILCALCUL<3,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   IF ENR_DETAILCALCUL<5,I>>=0 THEN
   		       ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END ELSE
   		       ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,J>/10000-1/2)
		   END
	      END ELSE
		   ENR_TEMPVENTILEDIT=""
		   ENR_TEMPVENTILEDIT<1>=ENR_RUBSAISIE<1>
		   ENR_TEMPVENTILEDIT<2>=INT(ENR_DETAILCALCUL<3,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   IF ENR_DETAILCALCUL<5,I>>=0 THEN
  		       ENR_TEMPVENTILEDIT<3>=INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END ELSE
  		       ENR_TEMPVENTILEDIT<3>=INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,J>/10000-1/2)
		   END
	      END		

	      WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,"S":ENR_DETAILCALCUL<2,I>:W_TABACTIVITE<4,J> 

              IF ENR_DETAILCALCUL<5,I>>=0 THEN
   	           W_CUMULSAISIE=W_CUMULSAISIE-INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,J>/10000+1/2)
	      END ELSE
   	           W_CUMULSAISIE=W_CUMULSAISIE-INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,J>/10000-1/2)
	      END

	      IF W_RUBSAISIEFORT="" THEN
		   W_RUBSAISIEFORT<1>="S":ENR_DETAILCALCUL<2,I>:W_TABACTIVITE<4,J> 
		   W_RUBSAISIEFORT<2>=ENR_TEMPVENTILEDIT<3>
	      END ELSE
		   IF W_RUBSAISIEFORT<2><ENR_TEMPVENTILEDIT<3> THEN
	  	        W_RUBSAISIEFORT<1>="S":ENR_DETAILCALCUL<2,I>:W_TABACTIVITE<4,J> 
		        W_RUBSAISIEFORT<2>=ENR_TEMPVENTILEDIT<3>
		   END
	      END

	      * MAJ FICHIER SECTION ANALYTIQUE DISPO	
	      K=1
	      LOOP
		   UNTIL ENR_SECTDISPO<K>=W_TABACTIVITE<4,J> OR ENR_SECTDISPO<K>="" DO
		   K=K+1
	      REPEAT
	      IF ENR_SECTDISPO<K>="" THEN ENR_SECTDISPO<K>=W_TABACTIVITE<4,J>

	 NEXT

	 IF W_CUMULSAISIE<>0 THEN
              READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_RUBSAISIEFORT<1> THEN	
	           ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+W_CUMULSAISIE
	      END
	      WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,W_RUBSAISIEFORT<1>
	 END

	 I=I+1
    REPEAT

    FOR J=1 TO W_NBACTIVITEPOURC
         * MAJ BASE CUMUL
         READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,"BASE":W_TABACTIVITE<4,J> ELSE ENR_TEMPVENTILEDIT=""
	 ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+INT(ENR_DETAILCALCUL<15>*W_TABACTIVITE<3,J>/10000+1/2)
	 ENR_TEMPVENTILEDIT<4>=ENR_TEMPVENTILEDIT<4>+INT(ENR_DETAILCALCUL<16>*W_TABACTIVITE<3,J>/10000+1/2)
	 ENR_TEMPVENTILEDIT<5>=ENR_TEMPVENTILEDIT<5>+INT(ENR_DETAILCALCUL<21>*W_TABACTIVITE<3,J>/10000+1/2)
         WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,"BASE":W_TABACTIVITE<4,J> 	   
    NEXT

RETURN

***************************************************
* AFFECTATION FICHIER MATRICE RUB CHARGE (ECLAT.+PROD)
***************************************************
3 *

    I=1
    LOOP
	 UNTIL ENR_DETAILCALCUL<8,I>="" DO

	 W_CUMULCHARGE1=ENR_DETAILCALCUL<11,I>
	 W_CUMULCHARGE2=ENR_DETAILCALCUL<14,I>

	 W_RUBCHARGEFORT1=""
	 W_RUBCHARGEFORT2=""

	 * COMPTE LE NBRE DE VALEURS DANS CALCUL %
         W_NBACTIVITEPOURC=DCOUNT(W_TABACTIVITE<1>,CHAR(253))

	 FOR J=1 TO W_NBACTIVITEPOURC
	      * LECTURE RUBRIQUE SAISIE
	      READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_DETAILCALCUL<8,I> ELSE ENR_RUBCHARGE=""	

	      * CALCULE PAR AVANCE LES VALEURS A AFFECTER
	      IF ENR_DETAILCALCUL<11,I>>=0 THEN W_TOTALSAL1=INT(ENR_DETAILCALCUL<11,I>*W_TABACTIVITE<3,J>/10000+1/2)
              IF ENR_DETAILCALCUL<11,I><0 THEN W_TOTALSAL1=INT(ENR_DETAILCALCUL<11,I>*W_TABACTIVITE<3,J>/10000-1/2)
              IF ENR_DETAILCALCUL<14,I>>=0 THEN W_TOTALPAT1=INT(ENR_DETAILCALCUL<14,I>*W_TABACTIVITE<3,J>/10000+1/2)
              IF ENR_DETAILCALCUL<14,I><0 THEN W_TOTALPAT1=INT(ENR_DETAILCALCUL<14,I>*W_TABACTIVITE<3,J>/10000-1/2)

  	      * VERIFIE SI RUB. EXISTE
	      READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,"C":ENR_DETAILCALCUL<8,I>:W_TABACTIVITE<4,J> THEN

		   ENR_TEMPVENTILEDIT<1>=ENR_RUBCHARGE<1>
		   IF ENR_DETAILCALCUL<9,I><>"" AND ENR_DETAILCALCUL<9,I><>0 THEN
		        ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(ENR_DETAILCALCUL<9,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END ELSE
		        ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(ENR_DETAILCALCUL<12,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END
		   ENR_TEMPVENTILEDIT<3>=ENR_DETAILCALCUL<10,I>
		   ENR_TEMPVENTILEDIT<4>=ENR_TEMPVENTILEDIT<4>+W_TOTALSAL1
	           IF ENR_DETAILCALCUL<13,I>="" THEN ENR_DETAILCALCUL<13,I>=0
		   ENR_TEMPVENTILEDIT<5>=ENR_DETAILCALCUL<13,I>
		   ENR_TEMPVENTILEDIT<6>=ENR_TEMPVENTILEDIT<6>+W_TOTALPAT1
	      END ELSE
		   ENR_TEMPVENTILEDIT<1>=ENR_RUBCHARGE<1>
		   IF ENR_DETAILCALCUL<9,I><>"" AND ENR_DETAILCALCUL<9,I><>0 THEN
		        ENR_TEMPVENTILEDIT<2>=INT(ENR_DETAILCALCUL<9,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END ELSE
		        ENR_TEMPVENTILEDIT<2>=INT(ENR_DETAILCALCUL<12,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END
		   ENR_TEMPVENTILEDIT<3>=ENR_DETAILCALCUL<10,I>
		   ENR_TEMPVENTILEDIT<4>=W_TOTALSAL1
	           IF ENR_DETAILCALCUL<13,I>="" THEN ENR_DETAILCALCUL<13,I>=0
		   ENR_TEMPVENTILEDIT<5>=ENR_DETAILCALCUL<13,I>
		   ENR_TEMPVENTILEDIT<6>=W_TOTALPAT1
	      END	
   
	      WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,"C":ENR_DETAILCALCUL<8,I>:W_TABACTIVITE<4,J> 

	      W_CUMULCHARGE1=W_CUMULCHARGE1-W_TOTALSAL1
	      W_CUMULCHARGE2=W_CUMULCHARGE2-W_TOTALPAT1

	      IF W_RUBCHARGEFORT1="" THEN
		   W_RUBCHARGEFORT1<1>="C":ENR_DETAILCALCUL<8,I>:W_TABACTIVITE<4,J> 
   	           W_RUBCHARGEFORT1<2>=W_TOTALSAL1
		   W_RUBCHARGEFORT1<3>=W_TOTALPAT1
	      END ELSE
		   IF W_RUBCHARGEFORT1<2><W_TOTALSAL1 OR W_RUBCHARGEFORT1<3><W_TOTALPAT1 THEN
	  	        W_RUBCHARGEFORT1<1>="C":ENR_DETAILCALCUL<8,I>:W_TABACTIVITE<4,J> 
   	                W_RUBCHARGEFORT1<2>=W_TOTALSAL1
		        W_RUBCHARGEFORT1<3>=W_TOTALPAT1
		   END
	      END
	 NEXT

         READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_RUBCHARGEFORT1<1> THEN
	      ENR_TEMPVENTILEDIT<4>=ENR_TEMPVENTILEDIT<4>+W_CUMULCHARGE1
	      ENR_TEMPVENTILEDIT<6>=ENR_TEMPVENTILEDIT<6>+W_CUMULCHARGE2
	 END
	 WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,W_RUBCHARGEFORT1<1>

	 I=I+1
    REPEAT

RETURN
***************************************************
* AFFECTATION FICHIER MATRICE RUB AP. SAISIE (ECLAT.+PROD)
***************************************************
4 *
    I=1
    LOOP
	 UNTIL ENR_DETAILCALCUL<17,I>="" DO

   	 W_CUMULAPSAISIE=ENR_DETAILCALCUL<20,I>

	 W_RUBAPSAISIEFORT=""

	 * COMPTE LE NBRE DE VALEURS DANS CALCUL %
         W_NBACTIVITEPOURC=DCOUNT(W_TABACTIVITE<1>,CHAR(253))
	 FOR J=1 TO W_NBACTIVITEPOURC
	      * LECTURE RUBRIQUE SAISIE
	      READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<17,I> ELSE ENR_RUBSAISIE=""	

  	      * VERIFIE SI RUB. EXISTE
	      READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,"AS":ENR_DETAILCALCUL<17,I>:W_TABACTIVITE<4,J> THEN
		   ENR_TEMPVENTILEDIT<1>=ENR_RUBSAISIE<1>
		   ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(ENR_DETAILCALCUL<18,I>*W_TABACTIVITE<3,J>/10000+1/2)
	           IF ENR_DETAILCALCUL<20,I>>=0 THEN
		        ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+INT(ENR_DETAILCALCUL<20,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END ELSE
		        ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+INT(ENR_DETAILCALCUL<20,I>*W_TABACTIVITE<3,J>/10000-1/2)
		   END
	      END ELSE
		   ENR_TEMPVENTILEDIT=""
		   ENR_TEMPVENTILEDIT<1>=ENR_RUBSAISIE<1>
		   ENR_TEMPVENTILEDIT<2>=INT(ENR_DETAILCALCUL<18,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   IF ENR_DETAILCALCUL<20,I>>=0 THEN
		        ENR_TEMPVENTILEDIT<3>=INT(ENR_DETAILCALCUL<20,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END ELSE
		        ENR_TEMPVENTILEDIT<3>=INT(ENR_DETAILCALCUL<20,I>*W_TABACTIVITE<3,J>/10000-1/2)
		   END
	      END		   
	      WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,"AS":ENR_DETAILCALCUL<17,I>:W_TABACTIVITE<4,J> 

	      IF ENR_DETAILCALCUL<20,I>>=0 THEN
                   W_CUMULAPSAISIE=W_CUMULAPSAISIE-INT(ENR_DETAILCALCUL<20,I>*W_TABACTIVITE<3,J>/10000+1/2)
	      END ELSE
  	           W_CUMULAPSAISIE=W_CUMULAPSAISIE-INT(ENR_DETAILCALCUL<20,I>*W_TABACTIVITE<3,J>/10000-1/2)
              END

	      IF W_RUBAPSAISIEFORT="" THEN
		   W_RUBAPSAISIEFORT<1>="AS":ENR_DETAILCALCUL<17,I>:W_TABACTIVITE<4,J> 
		   W_RUBAPSAISIEFORT<2>=ENR_TEMPVENTILEDIT<3>
	      END ELSE
		   IF W_RUBAPSAISIEFORT<2><ENR_TEMPVENTILEDIT<3> THEN
	  	        W_RUBAPSAISIEFORT<1>="AS":ENR_DETAILCALCUL<17,I>:W_TABACTIVITE<4,J> 
		        W_RUBAPSAISIEFORT<2>=ENR_TEMPVENTILEDIT<3>
		   END
	      END

	 NEXT

         READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_RUBAPSAISIEFORT<1> THEN
  	      ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+W_CUMULAPSAISIE
	 END
	 WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,W_RUBAPSAISIEFORT<1>

	 I=I+1
    REPEAT

RETURN

***************************************************
* ECRITURE PAR SECTION ANAL
***************************************************
5 *

    W_TOTALBRUTHRES=0
    W_TOTALBRUT=0
    W_DERNIERI1=0
    W_DERNIERI2=0

    W_TOTALNET=0
    W_TOTALMONTANT=0
    W_TOTALNET2=0
    W_TOTALMONTANT2=0

    W_RANGNET=0

    W_ETATVENTIL=""

    W_ETATVENTIL<1>=ENR_ASSOCIATION<1>
    W_ETATVENTIL<2>=ENR_ASSOCIATION<3>:" ":ENR_ASSOCIATION<4>:" ":ENR_ASSOCIATION<5>:" ":ENR_ASSOCIATION<6>
    W_ETATVENTIL<3>=ENR_ASSOCIATION<8>:" ":ENR_ASSOCIATION<9>
    W_ETATVENTIL<4>=""
    W_ETATVENTIL<5>=""
        
    W_ETATVENTIL<6,2>=ENR_SECTDISPO<J>

    *************************************
    * TRAITEMENT RUB. SAISIE
    W_DERNIERI=7
    W_ANCIENI=7
	 
    EXECUTE 'SSELECT TEMPVENTILEDIT AVEC @ID = "S]" AND = "[':ENR_SECTDISPO<J>:'" PAR @ID'

    I=2
 	 
    * MAJ FICHIER
    W_TERMINE=0
    LOOP
	 READNEXT CLE ELSE W_TERMINE=1
	 UNTIL W_TERMINE=1 DO

         * LECTURE FICHIER TAMPON
         READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,CLE ELSE ENR_TEMPVENTILEDIT=""

         W_ETATVENTIL<W_ANCIENI,I,1>=CLE[2,3]
         W_ETATVENTIL<W_ANCIENI,I,2>=ENR_TEMPVENTILEDIT<1>
         W_ETATVENTIL<W_ANCIENI,I,3>=ENR_TEMPVENTILEDIT<2>
         W_ETATVENTIL<W_ANCIENI,I,4>=ENR_TEMPVENTILEDIT<3>

	 * CUMUL MONTANT + BASE BRUT
*** modif 16/07/02 : uniquement rubriques type MOD, MOD dim  JF, et Inclus ds brut BASE et montant
***	 IF CLE[2,3]<>"810" THEN W_TOTALBRUTHRES=W_TOTALBRUTHRES+ENR_TEMPVENTILEDIT<2>
	READ ENR_RUBSAI FROM F.RUBSAISIE, CLE[2,3] THEN
		IF ENR_RUBSAI<2> = "3" OR ENR_RUBSAI<2> = "4" OR ENR_RUBSAI<2> = "5" THEN
			W_TOTALBRUTHRES=W_TOTALBRUTHRES+ENR_TEMPVENTILEDIT<2>
		END
	END

	 W_TOTALBRUT=W_TOTALBRUT+ENR_TEMPVENTILEDIT<3>

         W_ANCIENI=W_ANCIENI+1
         IF W_DERNIERI<W_ANCIENI THEN W_DERNIERI=W_ANCIENI
    REPEAT

    IF W_DERNIERI1<W_DERNIERI THEN 
	 W_DERNIERI1=W_DERNIERI
    END ELSE 
	 W_DERNIERI=W_DERNIERI1
    END	

    W_ETATVENTIL<W_DERNIERI+1>="BASE"

    * ECRITURE : TOTAL BRUT, NET IMPOSABLE, NET A PAYER
    READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,"BASE":ENR_SECTDISPO<J> ELSE ENR_TEMPVENTILEDIT=""

    W_ETATVENTIL<W_DERNIERI+2,I,1>=W_TOTALBRUTHRES
    W_ETATVENTIL<W_DERNIERI+2,I,2>=W_TOTALBRUT
    W_ETATVENTIL<W_DERNIERI+3,I>=ENR_TEMPVENTILEDIT<3>

    W_RANGNET=W_DERNIERI+4
 
    W_ETATVENTIL<W_DERNIERI+5>="RUBRIQUE DE CHARGE"

    *************************************
    * TRAITEMENT RUB. CHARGE
    W_ANCIENI=W_DERNIERI+6
	 
    EXECUTE 'SSELECT TEMPVENTILEDIT AVEC @ID = "C]" AND = "[':ENR_SECTDISPO<J>:'" PAR @ID'
 	 
    * MAJ FICHIER
    W_TERMINE=0
    LOOP
         READNEXT CLE ELSE W_TERMINE=1
	 UNTIL W_TERMINE=1 DO

         * LECTURE FICHIER TAMPON
	 READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,CLE ELSE ENR_TEMPVENTILEDIT=""

         W_ETATVENTIL<W_ANCIENI,I,1>=CLE[2,3]
	 W_ETATVENTIL<W_ANCIENI,I,2>=ENR_TEMPVENTILEDIT<1>
	 W_ETATVENTIL<W_ANCIENI,I,3>=ENR_TEMPVENTILEDIT<2>
	 W_ETATVENTIL<W_ANCIENI,I,4>=ENR_TEMPVENTILEDIT<3>
	 W_ETATVENTIL<W_ANCIENI,I,5>=ENR_TEMPVENTILEDIT<4>
	 W_ETATVENTIL<W_ANCIENI,I,6>=ENR_TEMPVENTILEDIT<5>
	 W_ETATVENTIL<W_ANCIENI,I,7>=ENR_TEMPVENTILEDIT<6>

         W_ANCIENI=W_ANCIENI+1
         IF W_DERNIERI<W_ANCIENI THEN W_DERNIERI=W_ANCIENI

         W_TOTALNET=W_TOTALNET+ENR_TEMPVENTILEDIT<4>

    REPEAT

    IF W_DERNIERI2<W_DERNIERI THEN 
	 W_DERNIERI2=W_DERNIERI
    END ELSE 
         W_DERNIERI=W_DERNIERI2
    END	

    W_ETATVENTIL<W_DERNIERI>="RUBRIQUE APRES CHARGE"

    *************************************
    * TRAITEMENT RUB. AP. SAISIE
    W_ANCIENI=W_DERNIERI+1
	 
    EXECUTE 'SSELECT TEMPVENTILEDIT AVEC @ID = "AS]" AND = "[':ENR_SECTDISPO<J>:'" PAR @ID'
 	 
    * MAJ FICHIER
    W_TERMINE=0
    LOOP
         READNEXT CLE ELSE W_TERMINE=1
	 UNTIL W_TERMINE=1 DO

         * LECTURE FICHIER TAMPON
	 READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,CLE ELSE ENR_TEMPVENTILEDIT=""

         W_ETATVENTIL<W_ANCIENI,I,1>=CLE[3,3]
	 W_ETATVENTIL<W_ANCIENI,I,2>=ENR_TEMPVENTILEDIT<1>
	 W_ETATVENTIL<W_ANCIENI,I,3>=ENR_TEMPVENTILEDIT<2>
	 W_ETATVENTIL<W_ANCIENI,I,4>=ENR_TEMPVENTILEDIT<3>

	 W_TOTALMONTANT=W_TOTALMONTANT+ENR_TEMPVENTILEDIT<3>

         W_ANCIENI=W_ANCIENI+1
         IF W_DERNIERI<W_ANCIENI THEN W_DERNIERI=W_ANCIENI
    REPEAT

    W_APNET=0
    IF W_TOTALMONTANT=0 OR W_TOTALMONTANT="" THEN 
	W_APNET=0
    END ELSE
	W_APNET=1
    END

    I=1
    W_TOTALNET2=W_TOTALBRUT+W_TOTALNET

    IF W_APNET=1 THEN
         W_TOTALMONTANT2=W_TOTALNET2+W_TOTALMONTANT
    END ELSE
	 W_TOTALMONTANT2=W_TOTALNET2
    END

    * ECRITURE : NET A PAYER, MONTANT A PAYER
    READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,"BASE":ENR_SECTDISPO<J> ELSE ENR_TEMPVENTILEDIT=""
    W_ETATVENTIL<W_RANGNET,2>=W_TOTALNET2
    W_ETATVENTIL<W_DERNIERI+1,I>=W_TOTALMONTANT2

    WRITE W_ETATVENTIL ON F.TEMPVENTILEDIT,W_CODEENTITE:ENR_SECTDISPO<J>
RETURN


***************************************************
* CALCUL DE LA SOMME DES HEURES
***************************************************
400 *
    I=1

    LOOP 
         UNTIL W_TABACTIVITE<1,I>=ENR_DETAILCALCUL<26,X> OR W_TABACTIVITE<1,I>="" DO
	 I=I+1
    REPEAT

    IF W_TABACTIVITE<1,I>="" THEN
	 W_TABACTIVITE=REPLACE(W_TABACTIVITE,1,I;ENR_DETAILCALCUL<26,X>)
    END 
    W_TABACTIVITE=REPLACE(W_TABACTIVITE,2,I,1;ENR_DETAILCALCUL<24,X>)
    W_TABACTIVITE=REPLACE(W_TABACTIVITE,2,I,2;W_TABACTIVITE<2,I,2>+ENR_DETAILCALCUL<25,X>)
    W_TABACTIVITE=REPLACE(W_TABACTIVITE,2,I,3;W_TABACTIVITE<2,I,3>+ENR_DETAILCALCUL<27,X>)

    W_TOTAL=W_TOTAL+ENR_DETAILCALCUL<25,X>

RETURN

***************************************************
* CALCUL DU POURCENTAGE DE REPARTITION (SI PROD.)
***************************************************
401 *
    I=1
   
    W_TOTALREPART=0
    W_REPARTPLUSFORT=""
    W_REPARTPLUSFAIBLE=""

    W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,1;INT(W_TABACTIVITE<2,1,2>/W_TOTAL*10000+1/2))
    W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,2;1)

    LOOP 
         UNTIL W_TABACTIVITE<2,I,1>="" DO
         W_TABACTIVITE=REPLACE(W_TABACTIVITE,3,I;INT(W_TABACTIVITE<2,I,2>/W_TOTAL*10000+1/2))
	 * AFFECTE SECTION ANAL
	 READ ENR_ACTIVITES FROM F.ACTIVITES,W_TABACTIVITE<1,I> THEN
 	      W_TABACTIVITE<4,I>=ENR_ACTIVITES<2>
	 END

         W_TOTALREPART=W_TOTALREPART+W_TABACTIVITE<3,I>

         * STOCKE LE POURCENTAGE LE + FORT
	 IF INT((W_TABACTIVITE<2,I,2>/W_TOTAL)*10000+1/2)>W_REPARTPLUSFORT<1,1,1> THEN
	      W_REPARTPLUSFORT=REPLACE(W_REPARTPLUSFORT,1,1,1;INT(W_TABACTIVITE<2,I,2>/W_TOTAL*10000+1/2))
              W_REPARTPLUSFORT=REPLACE(W_REPARTPLUSFORT,1,1,2;I)
 	 END

         * STOCKE LE POURCENTAGE LE + FAIBLE
	 IF INT((W_TABACTIVITE<2,I,2>/W_TOTAL)*10000+1/2)<W_REPARTPLUSFAIBLE<1,1,1> THEN
	      W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,1;INT(W_TABACTIVITE<2,I,2>/W_TOTAL*10000+1/2))
              W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,2;I)
 	 END
         I=I+1
    REPEAT

    IF W_TOTALREPART#10000 THEN
	 IF W_TOTALREPART<10000 THEN
	      W_RANGPLUSFORT=W_REPARTPLUSFORT<1,1,2>
 	      W_RANGPLUSFAIBLE=W_REPARTPLUSFAIBLE<1,1,2>

    	      W_TABACTIVITE=REPLACE(W_TABACTIVITE,3,W_RANGPLUSFORT;W_REPARTPLUSFORT<1,1,1>-(W_TOTALREPART-10000))
	 END ELSE
	      W_RANGPLUSFORT=W_REPARTPLUSFORT<1,1,2>
 	      W_RANGPLUSFAIBLE=W_REPARTPLUSFAIBLE<1,1,2>

    	      W_TABACTIVITE=REPLACE(W_TABACTIVITE,3,W_RANGPLUSFAIBLE;W_REPARTPLUSFAIBLE<1,1,1>-(W_TOTALREPART-10000))
	 END
    END ELSE
	 W_RANGPLUSFORT=W_REPARTPLUSFORT<1,1,2>
 	 W_RANGPLUSFAIBLE=W_REPARTPLUSFAIBLE<1,1,2>
    END

    IF W_TABACTIVITE<1,1>="" THEN
	 READ ENR_SECTANAL FROM F.TABLES,"SECTANAL" ELSE ENR_SECTANAL=""

	 W_TABACTIVITE<1,1>=ENR_SECTANAL<2,1>
 	 W_TABACTIVITE<3,1>="10000"
    END

RETURN

***************************************************
* CALCUL DU POURCENTAGE DE REPARTITION (SI ADM.)
***************************************************
402 *
    I=1

    W_TOTALREPART=0
    W_REPARTPLUSFORT=""
    W_REPARTPLUSFAIBLE=""
	
	IF W_Cours="VRAI" THEN
	    W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,1;ENR_CONTRAT<37,I>)
	    W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,2;1)
		
	    LOOP 
	         UNTIL ENR_CONTRAT<36,I>="" DO
			
	         W_TABACTIVITE<1,I>=ENR_CONTRAT<36,I> 
	         W_TABACTIVITE<3,I>=ENR_CONTRAT<37,I>

		 * AFFECTE SECTION ANAL
		 READ ENR_ACTIVITES FROM F.ACTIVITES,W_TABACTIVITE<1,I> THEN
	 	      W_TABACTIVITE<4,I>=ENR_ACTIVITES<2>
		 END

	         * STOCKE LE POURCENTAGE LE + FORT
		 IF ENR_CONTRAT<37,I>>W_REPARTPLUSFORT<1,1> THEN
		      W_REPARTPLUSFORT=REPLACE(W_REPARTPLUSFORT,1,1,1;ENR_CONTRAT<37,I>)
	              W_REPARTPLUSFORT=REPLACE(W_REPARTPLUSFORT,1,1,2;I)
	 	 END

	         * STOCKE LE POURCENTAGE LE + FAIBLE
		 IF ENR_CONTRAT<37,I><W_REPARTPLUSFAIBLE<1,1> THEN
		      W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,1;ENR_CONTRAT<37,I>)
	              W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,2;I)
	 	 END

	         I=I+1
	    REPEAT
	END ELSE
		W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,1;ENR_CONTRAT<107,W_MV,I>)
	    W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,2;1)
	
	    LOOP 
	         UNTIL ENR_CONTRAT<106,W_MV,I>="" DO

	         W_TABACTIVITE<1,I>=ENR_CONTRAT<106,W_MV,I> 
	         W_TABACTIVITE<3,I>=ENR_CONTRAT<107,W_MV,I>

		 * AFFECTE SECTION ANAL
		 READ ENR_ACTIVITES FROM F.ACTIVITES,W_TABACTIVITE<1,I> THEN
	 	      W_TABACTIVITE<4,I>=ENR_ACTIVITES<2>
		 END

	         * STOCKE LE POURCENTAGE LE + FORT
		 IF ENR_CONTRAT<107,W_MV,I>>W_REPARTPLUSFORT<1,1> THEN
		      W_REPARTPLUSFORT=REPLACE(W_REPARTPLUSFORT,1,1,1;ENR_CONTRAT<107,W_MV,I>)
	              W_REPARTPLUSFORT=REPLACE(W_REPARTPLUSFORT,1,1,2;I)
	 	 END

	         * STOCKE LE POURCENTAGE LE + FAIBLE
		 IF ENR_CONTRAT<107,W_MV,I><W_REPARTPLUSFAIBLE<1,1> THEN
		      W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,1;ENR_CONTRAT<107,W_MV,I>)
	              W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,2;I)
	 	 END

	         I=I+1
	    REPEAT	
	
	END
	
    W_RANGPLUSFORT=W_REPARTPLUSFORT<1,1,2>
    W_RANGPLUSFAIBLE=W_REPARTPLUSFAIBLE<1,1,2>

    IF W_TABACTIVITE<3,1>="" THEN
 	 W_TABACTIVITE<3,1>="10000"
    END

RETURN


*****************************
* MISE A ZERO DES VARIABLES *
*****************************
999 W_BRUTACQUISBASE=0
    W_BRUTACQUISMONT=0
    W_NETIMPOSABLE=0
    W_NETAPAYER=0
    W_MONTANTAPAYER=0
    W_TOTALTAUX=0
    W_TOTALMONT=0
    W_RANGANAL=0
    W_RANGANALRUB=0
    W_NBATTRIBUTECLAT=0
    W_TOTALREPART=0
    W_RUBSAISIECODE=""
    W_RUBSAISIELIB=""
    W_RUBSAISIEBASE=""
    W_RUBSAISIEMONT=""
    W_RUBSAISIEAPCODE=""
    W_RUBSAISIEAPLIB=""
    W_RUBSAISIEAPBASE=""
    W_RUBSAISIEAPMONT=""
    W_RUBCHARGECODE=""
    W_RUBCHARGELIB=""
    W_RUBCHARGEBASE=""
    W_RUBCHARGETAUXPAT=""
    W_RUBCHARGEMONTPAT=""
    W_RUBCHARGETAUXSAL=""
    W_RUBCHARGEMONTSAL=""
    W_RUBCHARGETOTALTAUX=""
    W_RUBCHARGETOTALMONT=""
    W_REPARTPLUSFORT=""
    W_RUBSAISIEDONT=""
    W_RUBAPSAISIEDONT=""
    W_PROD=0
    W_ADM=0
    ENR_CUMULS=""
    ENR_CUMULS2=""
    ENR_CUMULSGLOB=""
RETURN


***********************************
* TRAITEMENT DU FICHIER RESULTANT *
***********************************
1000

	* SELECTION TEMPVENTILEDIT
	EXECUTE 'SSELECT TEMPVENTILEDIT AVEC @ID = "':W_CODASSOC:"]":'"'
	EXECUTE 'SAUVE-LISTE W_REQUETEVENTIL'
	EXECUTE "LISTE W_REQUETEVENTIL" RETURNING MSGCODE	

	IF MSGCODE<1>#209 THEN
		W_POSITION=0
		W_CUMULDEBIT=0
		W_CUMULCREDIT=0

		SELECT F.TEMPVENTILEDIT TO W_REQUETEVENTIL

		W_FINI="FAUX"
		* PARCOURS DES CLES
		LOOP

			READNEXT W_CLE FROM W_REQUETEVENTIL ELSE W_FINI="VRAI"
			WHILE W_FINI="FAUX" DO
			READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_CLE ELSE PRINT "TEMPVENTILEDIT"			
			W_NBSECTANAL=DCOUNT(ENR_TEMPVENTILEDIT<6>,CHAR(253))
			W_NBLIGNEVAL=DCOUNT(ENR_TEMPVENTILEDIT,CHAR(254))
			W_SECTANAL=W_CLE[4,3]

			FOR ISA=1 TO W_NBSECTANAL

				IF ENR_TEMPVENTILEDIT<6,ISA>#"" THEN

					W_LIGNETRAIT=7

					*TRAITEMENT RUBRIQUE SAISIE
					LOOP
					WHILE ENR_TEMPVENTILEDIT<W_LIGNETRAIT>#"" AND W_LIGNETRAIT<=W_NBLIGNEVAL
						GOSUB 1200
						W_LIGNETRAIT=W_LIGNETRAIT+1
					REPEAT

					*RECHERCHE RUBRIQUE DE CHARGE
					LOOP
					WHILE ENR_TEMPVENTILEDIT<W_LIGNETRAIT>#"RUBRIQUE DE CHARGE" AND W_LIGNETRAIT<=W_NBLIGNEVAL
						W_LIGNETRAIT=W_LIGNETRAIT+1
					REPEAT

					W_LIGNETRAIT=W_LIGNETRAIT+1

					*TRAITEMENT RUBRIQUE CHARGE
					LOOP
					WHILE ENR_TEMPVENTILEDIT<W_LIGNETRAIT>#"RUBRIQUE APRES CHARGE" AND W_LIGNETRAIT<=W_NBLIGNEVAL
						GOSUB 1100
						W_LIGNETRAIT=W_LIGNETRAIT+1
					REPEAT
				
					W_LIGNETRAIT=W_LIGNETRAIT+1
					*TRAITEMENT RUBRIQUE AP CHARGE
					LOOP
					WHILE ENR_TEMPVENTILEDIT<W_LIGNETRAIT>#"" AND W_LIGNETRAIT<=W_NBLIGNEVAL
						GOSUB 1200
						W_LIGNETRAIT=W_LIGNETRAIT+1
					REPEAT	
		
				END

			NEXT ISA

		REPEAT
	END

RETURN


***********************
* RUBRIQUE DE CHARGES *
***********************
* MAJ DEBIT-CREDIT RUBRIQUE DE CHARGE
* VOIR SI VALEUR AU BON ENDROIT POUR DEBIT ET CREDIT...
1100

	READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,1> ELSE PRINT "RUBCHARGE"
		
	IF ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,5> >= 0 THEN
		IF LEN (ENR_RUBCHARGE<20>) < 10 THEN		;* ORIGINE = ATT 21
			ENR_RUBCHARGE<20> = W_COMPTEATTENTE
		END
		W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<20>:W_SECTANAL
		W_DEBIT=0
		W_CREDIT=ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,5>
	END ELSE
		IF ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,5> < 0 THEN
			IF LEN (ENR_RUBCHARGE<20>) < 10 THEN
				ENR_RUBCHARGE<20> = W_COMPTEATTENTE
			END
			W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<20>:W_SECTANAL
			W_DEBIT=ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,5> * -1
			W_CREDIT=0
		END
	END

	IF ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,5> # 0 AND ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,5> # "" THEN
		
		GOSUB 1500
		
		IF W_DEBIT=0 THEN
			IF LEN (ENR_RUBCHARGE<21>) < 10 THEN		;* ORIGINE = ATT 20
				ENR_RUBCHARGE<21> = W_COMPTEATTENTE
			END
			W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<21>:W_SECTANAL						
			W_DEBIT=W_CREDIT
			W_CREDIT=0
		END ELSE
			IF LEN (ENR_RUBCHARGE<21>) < 10 THEN
				ENR_RUBCHARGE<21> = W_COMPTEATTENTE
			END
			W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<21>:W_SECTANAL
			W_CREDIT=W_DEBIT
			W_DEBIT=0
		END
		GOSUB 1500
	END

	IF ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,7> > 0 THEN
		IF LEN (ENR_RUBCHARGE<23>) < 10 THEN
			ENR_RUBCHARGE<23> = W_COMPTEATTENTE
		END
		W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<23>:W_SECTANAL
		W_DEBIT=0
		W_CREDIT=ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,7>
	END ELSE
		IF ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,7> <0 THEN
			IF ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,1><>"900" AND ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,1><>"902" AND ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,1><>"903" AND ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,1><>"904" AND ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,1><>"907" THEN
				IF LEN (ENR_RUBCHARGE<23>) < 10 THEN		;* ORIGINE = ATT 22
					ENR_RUBCHARGE<23> = W_COMPTEATTENTE
				END
				W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<23>:W_SECTANAL
				W_DEBIT=ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,7> * -1
			END ELSE
				IF LEN (ENR_RUBCHARGE<22>) < 10 THEN
					ENR_RUBCHARGE<22> = W_COMPTEATTENTE
				END
				W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<22>:W_SECTANAL
				W_DEBIT=ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,7> * -1
			END		
			W_CREDIT=0
		END
	END

	IF ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,7> # 0 AND ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,7> # "" THEN
		GOSUB 1500
		IF W_DEBIT=0 THEN
			IF LEN (ENR_RUBCHARGE<22>) < 10 THEN
				ENR_RUBCHARGE<22> = W_COMPTEATTENTE
			END
			W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<22>:W_SECTANAL						
			W_DEBIT=W_CREDIT
			W_CREDIT=0
		END ELSE
  		    IF ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,1><>"900" AND ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,1><>"902" AND ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,1><>"903" AND ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,1><>"904" AND ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,1><>"907" THEN
			IF LEN (ENR_RUBCHARGE<22>) < 10 THEN		;* ORIGINE = ATT 23
				ENR_RUBCHARGE<22> = W_COMPTEATTENTE
			END
			W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<22>:W_SECTANAL
			W_CREDIT=W_DEBIT
			W_DEBIT=0
		    END ELSE
			IF LEN (ENR_RUBCHARGE<23>) < 10 THEN	
				ENR_RUBCHARGE<23> = W_COMPTEATTENTE
			END
			W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<23>:W_SECTANAL
			W_CREDIT=W_DEBIT
			W_DEBIT=0
		    END
		END

		GOSUB 1500
	END

RETURN


**********************
* RUBRIQUE DE SAISIE *
**********************
1200
	READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,1> ELSE PRINT "RUBSAISIE"
	IF LEN (ENR_RUBSAISIE<12>) < 10 THEN
		ENR_RUBSAISIE<12> = W_COMPTEATTENTE
	END
	W_COMPTE=W_CODASSOC:ENR_RUBSAISIE<12>:W_SECTANAL

	W_DEBIT=0
	W_CREDIT=0

	W_SIGNE=ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,4>

	IF W_SIGNE > 0 THEN
		IF ENR_RUBSAISIE<5>="+" THEN
			W_DEBIT=ABS(ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,4>)
		END ELSE
			W_CREDIT=ABS(ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,4>)
		END
	END ELSE
		IF ENR_RUBSAISIE<5>="-" THEN
			W_DEBIT=ABS(ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,4>)
		END ELSE
			W_CREDIT=ABS(ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,4>)
		END
	END

	GOSUB 1500

	IF LEN (ENR_RUBSAISIE<13>) < 10 THEN
		ENR_RUBSAISIE<13> = W_COMPTEATTENTE
	END

	IF W_DEBIT=0 THEN
		W_COMPTE=W_CODASSOC:ENR_RUBSAISIE<13>:W_SECTANAL
		W_DEBIT=W_CREDIT
		W_CREDIT=0
	END ELSE
		W_COMPTE=W_CODASSOC:ENR_RUBSAISIE<13>:W_SECTANAL
		W_CREDIT=W_DEBIT
		W_DEBIT=0
	END

	GOSUB 1500

RETURN


**********************
* REMPLISSAGE COMPTE *
**********************
* REMPLISSAGE TABLEAU MEMO SERVANT POUR ECRITURE
1500
	W_TROUVECOMPTE="FAUX"
	IF W_COMPTE[4,1]#6 AND W_COMPTE[4,1]#7 THEN
		W_COMPTE=W_COMPTE[1,13]:"000"
	END	

	* SAUVEGARDE POUR REMPLISSAGE AU PREMIER PASSAGE
	IF W_POSITION=0 THEN

		W_POSITION=W_POSITION+1
		W_TABLEAU<W_POSITION,1>=W_COMPTE
		W_TABLEAU<W_POSITION,2>=W_DEBIT
        	W_TABLEAU<W_POSITION,3>=W_CREDIT
		W_TROUVECOMPTE="VRAI"

	END ELSE

		W_COMPTETAB=DCOUNT(W_TABLEAU,CHAR(254))
					
		* PARCOURS DES SECTION DEJA RENSEIGNE
		FOR ITAB=1 TO W_COMPTETAB

			* CORRESPONDANCE AVEC SECTION EXISTANT DEJA
			IF W_TABLEAU<ITAB,1>=W_COMPTE THEN

				W_TABLEAU<ITAB,2>=W_TABLEAU<ITAB,2>+W_DEBIT
				W_TABLEAU<ITAB,3>=W_TABLEAU<ITAB,3>+W_CREDIT
				W_TROUVECOMPTE="VRAI"
				EXIT
			END

		NEXT ITAB

		IF W_TROUVECOMPTE="FAUX" THEN

			W_COMPTETAB=W_COMPTETAB+1
			W_TABLEAU<W_COMPTETAB,1>=W_COMPTE
			W_TABLEAU<W_COMPTETAB,2>=W_DEBIT
			W_TABLEAU<W_COMPTETAB,3>=W_CREDIT

		END
	END

RETURN


*****************************
* ECRITURE BROUILLARDDETAIL *
*****************************
* ECRITURE DU TABLEAU
1600
	W_COMPTETAB=DCOUNT(W_TABLEAU,CHAR(254))

	* BOUCLE D'ECRITURE
	FOR ITAB=1 TO W_COMPTETAB
		W_VALEUR=W_TABLEAU<ITAB,2>-W_TABLEAU<ITAB,3>
		IF W_VALEUR # 0 THEN
			ENR_BROUILLARDDETAIL=""
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,1;DATE())
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,2;W_FINPERIODE)
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,3;"")
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_TABLEAU<ITAB,1>[1,13])
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;"SALAIRES : ":W_PERIODECLAIR)

			IF W_VALEUR >= 0 THEN
				ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;W_VALEUR)
				W_CUMULDEBIT=W_CUMULDEBIT+W_VALEUR
			END ELSE
				ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_VALEUR*-1)
				W_CUMULCREDIT=W_CUMULCREDIT+(W_VALEUR*-1)
			END

			IF W_TABLEAU<ITAB,1>[4,1]="6" OR W_TABLEAU<ITAB,1>[4,1]="7" THEN
				ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,11;W_TABLEAU<ITAB,1>[14,3])
			END

			W_LIGNE=W_LIGNE+1
			W_LIGNE=W_LIGNE "R%5"
			WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CLEBROUILLARD:W_LIGNE
		END
	NEXT ITAB
RETURN


********************************************************************
* SAUVEGARDE DANS TEMPO POUR RECUP VB POUR ECRITURE BROUILLARDTETE *
********************************************************************
1700
	ENR_TEMPO=""
	ENR_TEMPO=REPLACE(ENR_TEMPO,1;W_LIGNE)
	ENR_TEMPO=REPLACE(ENR_TEMPO,2;W_CUMULDEBIT)
	ENR_TEMPO=REPLACE(ENR_TEMPO,3;W_CUMULCREDIT)
	WRITE ENR_TEMPO ON F.TEMPO,"INTEGRECRPAIE"
RETURN
