**********************************************************
*  si aidant sur plusieurs tablissments --> cumuls DADS 
*  par tablissement
*  Vanessa
*  novembre 2003
*
**********************************************************

* Ouvertures des fichiers
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE PRINT "OUVERTURE ASSOCIATION" ;* en lecture
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE PRINT "OUVERTURE CIVILAIDANT" ;* en lecture
OPEN "","CONTRAT" TO F.CONTRAT ELSE PRINT "OUVERTURE CONTRAT" ;* en lecture
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE PRINT "OUVERTURE DETAILCALCUL" ;* en lecture
OPEN "","ETABLISSEMENT" TO F.ETABLISSEMENT ELSE PRINT "OUVERTURE ETABLISSEMENT" ;* en lecture
OPEN "","HISTORCUMUL" TO F.HISTORCUMUL ELSE PRINT "OUVERTURE HISTORCUMUL" ;* en lecture criture
OPEN "","HISTORCUMULETABL" TO F.HISTORCUMULETABL ELSE PRINT "OUVERTURE HISTORCUMULETABL" ;* en lecture criture
OPEN "","RUBCHARGE" TO F.RUBCHARGE ELSE PRINT "OUVERTURE RUBCHARGE" ;* en lecture 
OPEN "","RUBSAISIE" TO F.RUBSAISIE ELSE PRINT "OUVERTURE RUBSAISIE" ;* en lecture 
OPEN "","TEMPO" TO F.TEMPO ELSE PRINT "OUVERTURE TEMPO" ;* en lecture criture
OPEN "","TRANCHE" TO F.TRANCHE ELSE PRINT "OUVERTURE TRANCHE" ;* en lecture 
*********************************************************
* Recuperation des arguments

PROCREAD ARGUMENTS ELSE STOP
W_Periode=FIELD(ARGUMENTS," ",2)
W_Entite=FIELD(ARGUMENTS," ",3)
W_User=FIELD(ARGUMENTS," ",4)
*********************************************************
* PROGRAMME PRINCIPAL

W_Requete=""
W_RequeteContrat=""
W_Temp=""
W_Rang=1
ENR_TEMPO=""

   W_Temp='SSELECT HISTORCUMUL AVEC EmployeurHistCum = "':W_Entite:'"'
   W_Temp=W_Temp:' AND AVEC PeriodeHistCum = "':W_Periode:'"'
   W_Temp=W_Temp:' AND AVEC 23 # ""'

   EXECUTE W_Temp
   EXECUTE 'SAUVE-LISTE W_Requete'
   EXECUTE "LISTE W_Requete" RETURNING MSGCODE

   IF MSGCODE<1>#209 THEN
      SELECT F.HISTORCUMUL TO W_Requete

      W_End = "FAUX"
      LOOP
         READNEXT W_Cle FROM W_Requete ELSE W_End = "VRAI"
      WHILE W_End = "FAUX" DO
         READ ENR_HISTORCUMUL FROM F.HISTORCUMUL,W_Cle ELSE ENR_HISTORCUMUL=""

         W_Count=DCOUNT(ENR_HISTORCUMUL<23>,CHAR(253))
         FOR i = 1 TO W_Count
            DELETE F.HISTORCUMULETABL,ENR_HISTORCUMUL<23,i>
         NEXT i

         ENR_HISTORCUMUL<23>=""
         WRITE ENR_HISTORCUMUL ON F.HISTORCUMUL,W_Cle

      REPEAT

   END

   DELETE F.TEMPO,"GENEREMULTIETAB":W_User

************

   READ ENR_ASSOCIATION FROM F.ASSOCIATION,W_Entite ELSE ENR_ASSOCIATION=""
   * TEST SI DECALAGE PAIE
   IF ENR_ASSOCIATION<25>=0 THEN
      * CALCUL 1ER JOUR ANNEE + DERNIER JOUR ANNEE
      W_DateDebPeriode = ICONV("01/01/":W_Periode,"D4/")
      W_DateFinPeriode = ICONV("31/12/":W_Periode,"D4/")
   END ELSE
      * CALCUL 1ER JOUR DECEMBRE + DERNIER JOUR NOVEMBRE
      W_DateDebPeriode = ICONV("01/12/":W_Periode-1,"D4/")
      W_DateFinPeriode = ICONV("30/11/":W_Periode,"D4/")
   END

   W_Temp='SSELECT CONTRAT AVEC 2 = "':W_Entite:'"'
   W_Temp=W_Temp:' AND AVEC 1 # "02" AND AVEC 65 # "O"'
   W_Temp=W_Temp:' AND AVEC 7 <= "':W_DateFinPeriode:'" AND AVEC 8 >= "':W_DateDebPeriode:'" OR = ""'
   W_Temp=W_Temp:' PAR NomPrenomAidantContrat PAR CodeAidant PAR SiretEtabContrat PAR 7'

   EXECUTE W_Temp
   EXECUTE 'SAUVE-LISTE W_RequeteContrat'
   EXECUTE "LISTE W_RequeteContrat" RETURNING MSGCODE

   IF MSGCODE<1>#209 THEN

      SELECT F.CONTRAT TO W_RequeteContrat

      W_End = "FAUX"
      W_SauveAidant=""
      W_SauveCle=""
      W_SauveEtab=""

      W_DebPeriode=OCONV(W_DateDebPeriode,"D4/")
      W_DebPeriode = W_DebPeriode[7,4]:W_DebPeriode[4,2]
      W_FinPeriode=OCONV(W_DateFinPeriode,"D4/")
      W_FinPeriode = W_FinPeriode[7,4]:W_FinPeriode[4,2]

      LOOP
         READNEXT W_Cle FROM W_RequeteContrat ELSE W_End = "VRAI"
      WHILE W_End = "FAUX" DO
         READ ENR_CONTRATBIS FROM F.CONTRAT,W_Cle ELSE ENR_CONTRATBIS=""
	   READ ENR_ETABLISSEMENT FROM F.ETABLISSEMENT,ENR_CONTRATBIS<3> ELSE ENR_ETABLISSEMENT=""
         IF W_SauveAidant="" THEN
            W_SauveAidant=W_Cle[1,5]
         END

         IF W_SauveAidant # W_Cle[1,5] THEN
            W_CountEtab=DCOUNT(W_SauveEtab,CHAR(254))
            IF W_CountEtab >1 THEN
               * MAJ TEMPO
               GOSUB 500
               GOSUB 100
            END

            W_SauveCle=""
            W_SauveEtab=""

            W_SauveCle<1>=W_Cle
            W_SauveEtab<1>=ENR_ETABLISSEMENT<14>
            W_SauveAidant=W_Cle[1,5]

         END ELSE

            W_CountCle=DCOUNT(W_SauveCle,CHAR(254))
            W_SauveCle<W_CountCle+1>=W_Cle

            W_CountEtab=DCOUNT(W_SauveEtab,CHAR(254))
            IF W_SauveEtab<W_CountEtab> # ENR_ETABLISSEMENT<14> THEN
               W_SauveEtab<W_CountEtab+1>=ENR_ETABLISSEMENT<14>
            END

         END

      REPEAT
      W_CountEtab=DCOUNT(W_SauveEtab,CHAR(254))
      IF W_CountEtab >1 THEN
         * MAJ TEMPO
         GOSUB 500
         GOSUB 100
      END

      IF ENR_TEMPO # "" THEN
         WRITE ENR_TEMPO ON F.TEMPO,"GENEREMULTIETAB":W_User
      END
   END 

STOP

********************************************************************************************
* parcourt les DETAILCALCUL si plusieurs tablissements

100

   W_CountCle=DCOUNT(W_SauveCle,CHAR(254))
   W_SauveEtab=""

   FOR i = 1 TO W_CountCle

      READ ENR_CONTRAT FROM F.CONTRAT,W_SauveCle<i> ELSE ENR_CONTRAT=""

      W_CleEtab=W_SauveCle<i>[1,5]:W_Periode:ENR_CONTRAT<3>
      READ ENR_HISTORCUMULETABL FROM F.HISTORCUMULETABL,W_CleEtab ELSE ENR_HISTORCUMULETABL=""
	READ ENR_ETABLISSEMENT FROM F.ETABLISSEMENT,ENR_CONTRAT<3> ELSE ENR_ETABLISSEMENT=""

      IF W_SauveEtab # ENR_ETABLISSEMENT<14> THEN
         GOSUB 400
      END

      W_DateDebContrat=OCONV(ENR_CONTRAT<7>,"D4/")
      W_DateDebContrat = W_DateDebContrat[7,4]:W_DateDebContrat[4,2]
      IF ENR_CONTRAT<8> # "" THEN
         W_DateFinContrat=OCONV(ENR_CONTRAT<8>,"D4/")
         W_DateFinContrat = W_DateFinContrat[7,4]:W_DateFinContrat[4,2]
      END ELSE
         W_DateFinContrat = W_FinPeriode
      END
      
      IF W_DebPeriode < W_DateDebContrat THEN
         W_DateDeb=W_DateDebContrat
      END ELSE
         W_DateDeb=W_DebPeriode
      END
      IF W_FinPeriode > W_DateFinContrat THEN
         W_DateFin=W_DateFinContrat
      END ELSE
         W_DateFin=W_FinPeriode
      END

      FOR j= W_DateDeb TO W_DateFin

         READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_SauveCle<i>:j ELSE ENR_DETAILCALCUL=""


         GOSUB 200

         IF j[5,2]="12" THEN
            j=j[1,4]+1:"00"
         END

      NEXT j

      W_SauveEtab=ENR_ETABLISSEMENT<14>

   NEXT i

RETURN

*********************************************************
*********************************************************
* MAJ du fichier HISTORCUMUL

200

   W_CodeAidant=W_SauveCle<i>
   W_ENTREESURMOIS="NON"
   W_DATEDEBCONTRAT=ENR_CONTRAT<7>
   W_DATEDEBCONTRAT=OCONV(W_DATEDEBCONTRAT,"D4 ")
   W_DATEDEBCONTRAT=W_DATEDEBCONTRAT[7,4]:W_DATEDEBCONTRAT[4,2]
   IF W_DATEDEBCONTRAT=W_Periode THEN W_ENTREESURMOIS="OUI"

   IF ENR_HISTORCUMULETABL="" THEN W_ENTREESURMOIS="OUI"
   IF ENR_HISTORCUMULETABL#"" THEN W_ENTREESURMOIS="NON"
   IF ENR_HISTORCUMULETABL<5>=0 THEN W_ENTREESURMOIS="OUI"

   IF ENR_HISTORCUMULETABL<11>="" AND ENR_CONTRAT<7> >= W_DateDebPeriode AND ENR_CONTRAT<7> <= W_DateFinPeriode THEN
      ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,11;ENR_CONTRAT<7>)
   END
   IF ENR_CONTRAT<8> # "" THEN
      IF ENR_HISTORCUMULETABL<12>="" AND ENR_CONTRAT<8> >= W_DateDebPeriode AND ENR_CONTRAT<8> <= W_DateFinPeriode THEN
         ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,12;ENR_CONTRAT<8>)
      END
   END
   IF ENR_HISTORCUMULETABL<11> # "" AND ENR_CONTRAT<7> # ENR_HISTORCUMULETABL<11> AND ENR_CONTRAT<7> >= W_DateDebPeriode AND ENR_CONTRAT<7> <= W_DateFinPeriode THEN
      ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,13;ENR_CONTRAT<7>)
   END
   IF ENR_CONTRAT<8> # "" THEN
      IF ENR_HISTORCUMULETABL<12> # "" AND ENR_CONTRAT<8> # ENR_HISTORCUMULETABL<12> AND ENR_CONTRAT<8> >= W_DateDebPeriode AND ENR_CONTRAT<8> <= W_DateFinPeriode THEN
         ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,14;ENR_CONTRAT<8>)
      END
   END

   ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,2;ENR_HISTORCUMULETABL<2>+ENR_DETAILCALCUL<6>)

  IF ENR_DETAILCALCUL<6> >= 6000 THEN
     ENR_HISTORCUMULETABL<3>=j[5,2]
  END

  ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,4;ENR_HISTORCUMULETABL<4>+ENR_DETAILCALCUL<29>)
  W_CumulBrut=ENR_HISTORCUMULETABL<5>
  ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,5;ENR_HISTORCUMULETABL<5>+ENR_DETAILCALCUL<7>)
  ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,6;ENR_HISTORCUMULETABL<6>+ENR_DETAILCALCUL<15>)
  ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,7;ENR_HISTORCUMULETABL<7>+ENR_DETAILCALCUL<16>)

  W_Temp=DCOUNT(ENR_DETAILCALCUL<2>,CHAR(253))

  FOR k=1 TO W_Temp
     
     READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<2,k> ELSE ENR_RUBSAISIE="" 

     IF ENR_RUBSAISIE<2>="3" OR ENR_RUBSAISIE<2>="4" THEN
        ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,1;ENR_HISTORCUMULETABL<1>+ENR_DETAILCALCUL<3,k>)
     END
     
     IF ENR_RUBSAISIE<2>="0" THEN
        ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,8;ENR_HISTORCUMULETABL<8>+ENR_DETAILCALCUL<5,k>)

        W_Count=DCOUNT(ENR_HISTORCUMULETABL<9>,CHAR(253))
	IF ENR_RUBSAISIE<3>="" THEN
           ENR_RUBSAISIE<3>="A"
	END
	IF W_Count < 4 THEN
           W_Passe="FALSE"
           FOR l=1 TO W_Count
               IF ENR_RUBSAISIE<3>=ENR_HISTORCUMULETABL<9,l> THEN
                   W_Passe="TRUE"
               END 
           NEXT l 
           IF W_Passe="FALSE" THEN
	     ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,9,W_Count+1;ENR_RUBSAISIE<3>)
	   END
 	END

     END

   NEXT k

   W_Temp=DCOUNT(ENR_DETAILCALCUL<17>,CHAR(253))
   W_CumulRub=0
   FOR k=1 TO W_Temp
      READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<17,k> ELSE ENR_RUBSAISIE="" 
      IF ENR_RUBSAISIE<2>="2" THEN
         ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,10;ENR_HISTORCUMULETABL<10>+ENR_DETAILCALCUL<20,k>)

         W_Count=DCOUNT(ENR_HISTORCUMULETABL<22>,CHAR(253))
 	 IF ENR_RUBSAISIE<17>="" THEN
            ENR_RUBSAISIE<17>="R"
	 END
	 IF W_Count < 4 THEN
            W_Passe="FALSE"
            FOR l=1 TO W_Count
               IF ENR_RUBSAISIE<17>=ENR_HISTORCUMULETABL<22,l> THEN
                  W_Passe="TRUE"
               END 
            NEXT l 
            IF W_Passe="FALSE" THEN
	       ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,22,W_Count+1;ENR_RUBSAISIE<17>)
	    END
 	 END
      END

      * gestion de la rubrique 832, chomage partiel...
      IF ENR_DETAILCALCUL<17,k> = "832" THEN
         IF ENR_HISTORCUMULETABL<20> = "" THEN
	    ENR_HISTORCUMULETABL = REPLACE(ENR_HISTORCUMULETABL,20;ENR_DETAILCALCUL<20,k>)
	 END ELSE
	    ENR_HISTORCUMULETABL = REPLACE(ENR_HISTORCUMULETABL,20;ENR_HISTORCUMULETABL<20> + ENR_DETAILCALCUL<20,k>)
	 END
      END

      * gestion de l'att 21 de HISTORCUMUL
      IF ENR_CONTRAT<1>="02" AND ENR_DETAILCALCUL<1>="E" THEN
         IF ENR_DETAILCALCUL<17,k> = "816" OR ENR_DETAILCALCUL<17,k> = "824" OR ENR_DETAILCALCUL<17,k> = "829" THEN
            W_CumulRub = W_CumulRub + ENR_DETAILCALCUL<20,k>
         END
      END


   NEXT k

   * gestion de l'att 21 de HISTORCUMUL
   IF ENR_CONTRAT<1>="02" AND ENR_DETAILCALCUL<1>="E" THEN

      IF ENR_HISTORCUMULETABL<21> = "" THEN
 	 ENR_HISTORCUMULETABL = REPLACE(ENR_HISTORCUMULETABL,21;ENR_DETAILCALCUL<21>-W_CumulRub)
      END ELSE
	 ENR_HISTORCUMULETABL = REPLACE(ENR_HISTORCUMULETABL,21; ENR_HISTORCUMULETABL<21> + (ENR_DETAILCALCUL<21>-W_CumulRub))
      END
   END

   k=1
   W_ENRHISTORCUMUL=""
   W_Count=DCOUNT(ENR_HISTORCUMULETABL<15>,CHAR(253))
   FOR l=1 TO W_Count
      W_ENRHISTORCUMUL<1,l>=""
   NEXT l
   W_BASEURSSAFTOT=0
   W_BASEURSSAFPLAF=0
   W_CUMASSURSSAFTOT=0
   W_CUMASSURSSAFPLAF=0
   LOOP
   WHILE ENR_DETAILCALCUL<8,k> # "" DO
      l=1
      LOOP
      WHILE ENR_DETAILCALCUL<8,k> # ENR_HISTORCUMULETABL<15,l> AND ENR_HISTORCUMULETABL<15,l> # "" DO
         IF W_CUMASSURSSAFPLAF=0 OR W_CUMASSURSSAFTOT=0 THEN
            READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_HISTORCUMULETABL<15,l> ELSE ENR_RUBCHARGE="" 
            IF ENR_RUBCHARGE<16>="01" THEN
	       READ ENR_TRANCHE FROM F.TRANCHE,ENR_RUBCHARGE<2> ELSE ENR_TRANCHE=""
               IF ENR_TRANCHE<10>="02" THEN
                  IF W_CUMASSURSSAFPLAF=0 THEN W_CUMASSURSSAFPLAF=ENR_HISTORCUMULETABL<16,l>
               END
	       IF ENR_TRANCHE<10>="01" THEN
                  IF W_CUMASSURSSAFTOT=0 THEN W_CUMASSURSSAFTOT=ENR_HISTORCUMULETABL<16,l>
               END
            END
         END        
         l=l+1
      REPEAT

      READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_DETAILCALCUL<8,k> ELSE ENR_RUBCHARGE=""     
      IF ENR_RUBCHARGE<16>="01" THEN
	 READ ENR_TRANCHE FROM F.TRANCHE,ENR_RUBCHARGE<2> ELSE ENR_TRANCHE=""
	 IF ENR_TRANCHE<10>="02" THEN
            IF W_BASEURSSAFPLAF=0 THEN W_BASEURSSAFPLAF=ENR_DETAILCALCUL<28,k>
         END
	 IF ENR_TRANCHE<10>="01" THEN
            IF W_BASEURSSAFTOT=0 THEN W_BASEURSSAFTOT=ENR_DETAILCALCUL<28,k>
         END
      END

      IF ENR_DETAILCALCUL<8,k>=ENR_HISTORCUMULETABL<15,l> THEN
         W_ENRHISTORCUMUL<1,l>="1"
         IF ENR_RUBCHARGE<16>="01" THEN
            IF ENR_TRANCHE<10>="02" THEN
               IF W_CUMASSURSSAFPLAF=0 THEN W_CUMASSURSSAFPLAF=ENR_HISTORCUMULETABL<16,l>
            END
	    IF ENR_TRANCHE<10>="01" THEN
               IF W_CUMASSURSSAFTOT=0 THEN W_CUMASSURSSAFTOT=ENR_HISTORCUMULETABL<16,l>
            END
         END
  	 ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,16,l;ENR_HISTORCUMULETABL<16,l>+ENR_DETAILCALCUL<28,k>)
	 IF ENR_DETAILCALCUL<9,k>="" THEN  
 	    ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,17,l;ENR_HISTORCUMULETABL<17,l>+ENR_DETAILCALCUL<12,k>)
	 END ELSE
	    ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,17,l;ENR_HISTORCUMULETABL<17,l>+ENR_DETAILCALCUL<9,k>)
	 END
  	 ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,18,l;ENR_HISTORCUMULETABL<18,l>+ENR_DETAILCALCUL<11,k>)
         ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,19,l;ENR_HISTORCUMULETABL<19,l>+ENR_DETAILCALCUL<14,k>)
      END ELSE	
         IF ENR_HISTORCUMULETABL<15,l> = "" THEN
	    W_Count=DCOUNT(ENR_HISTORCUMULETABL<15>,CHAR(253))
	    ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,15,W_Count+1;ENR_DETAILCALCUL<8,k>)
            W_ENRHISTORCUMUL<1,W_Count+1>="0"	      

	    IF ENR_RUBCHARGE<18>="3" THEN
               IF ENR_RUBCHARGE<16>="01" THEN
	          ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,16,W_Count+1;ENR_DETAILCALCUL<28,k>)
	          IF ENR_DETAILCALCUL<9,k>="" THEN
	             ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,17,W_Count+1;ENR_DETAILCALCUL<12,k>)
                  END ELSE
	             ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,17,W_Count+1;ENR_DETAILCALCUL<9,k>)
                  END
               END ELSE
	          ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,16,W_Count+1;W_CumulBrut+ENR_DETAILCALCUL<28,k>)
	          IF ENR_DETAILCALCUL<9,k>="" THEN
	             ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,17,W_Count+1;W_CumulBrut+ENR_DETAILCALCUL<12,k>)
                  END ELSE
	             ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,17,W_Count+1;W_CumulBrut+ENR_DETAILCALCUL<9,k>)
                  END
               END
	    END ELSE
	       ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,16,W_Count+1;ENR_HISTORCUMULETABL<16,W_Count+1>+ENR_DETAILCALCUL<28,k>)
	       IF ENR_DETAILCALCUL<9,k>="" THEN
	          ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,17,W_Count+1;ENR_HISTORCUMULETABL<17,W_Count+1>+ENR_DETAILCALCUL<12,k>)
               END ELSE
	          ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,17,W_Count+1;ENR_HISTORCUMULETABL<17,W_Count+1>+ENR_DETAILCALCUL<9,k>)
               END
  	    END
	    ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,18,W_Count+1;ENR_HISTORCUMULETABL<18,W_Count+1>+ENR_DETAILCALCUL<11,k>)
  	    ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,19,W_Count+1;ENR_HISTORCUMULETABL<19,W_Count+1>+ENR_DETAILCALCUL<14,k>)
	 END
      END		
      k=k+1	
   REPEAT

   * MAJ CUMUL D'ASSIETTE BRUTE (ATT 16 D'HISTORCUMULETABL) POUR RUBRIQUE URSSAF NON PRESENTE DANS
   * FICHIER DETAILCALCUL
   W_Count=DCOUNT(W_ENRHISTORCUMUL<1>,CHAR(253))
   FOR k=1 TO W_Count
      IF W_ENRHISTORCUMUL<1,k>#"1" THEN
         READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_HISTORCUMULETABL<15,k> ELSE ENR_RUBCHARGE=""
         IF ENR_RUBCHARGE<16>="01" THEN
	    READ ENR_TRANCHE FROM F.TRANCHE,ENR_RUBCHARGE<2> THEN
	       IF ENR_TRANCHE<10>="02" THEN
                  D=1
                  LOOP
                  UNTIL ENR_DETAILCALCUL<49,D>="" OR ENR_DETAILCALCUL<49,D>=ENR_HISTORCUMULETABL<15,k> DO
                     D=D+1
                  REPEAT
                  IF ENR_DETAILCALCUL<49,D>="" THEN
                     IF W_ENRHISTORCUMUL<1,k>="0" THEN
                        IF W_ENTREESURMOIS="NON" THEN ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,16,k;W_CUMASSURSSAFPLAF+W_BASEURSSAFPLAF)
                     END ELSE
                        ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,16,k;ENR_HISTORCUMULETABL<16,k>+W_BASEURSSAFPLAF)
                     END
                  END
               END
	       IF ENR_TRANCHE<10>="01" THEN
                  D=1
                  LOOP
                  UNTIL ENR_DETAILCALCUL<49,D>="" OR ENR_DETAILCALCUL<49,D>=ENR_HISTORCUMULETABL<15,k> DO
                     D=D+1
                  REPEAT
                  IF ENR_DETAILCALCUL<49,D>="" THEN
                     IF W_ENRHISTORCUMUL<1,k>="0" THEN
                        IF W_ENTREESURMOIS="NON" THEN ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,16,k;W_CUMASSURSSAFTOT+W_BASEURSSAFTOT)
                     END ELSE
                        ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,16,k;ENR_HISTORCUMULETABL<16,k>+W_BASEURSSAFTOT)
                     END
                  END
               END
            END
         END
      END	 
   NEXT j

   W_RUBAFFECT=""
   * MAJ HISTORCUMULETABL POUR RUBRIQUES DE CHARGE A 0 (ATT 49 ET 50 DE DETAILCALCUL)
   GOSUB 300

   IF ENR_HISTORCUMULETABL<8> = "" THEN
      ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,8;"0")
   END 

   IF ENR_HISTORCUMULETABL<10> = "" THEN
      ENR_HISTORCUMULETABL=REPLACE(ENR_HISTORCUMULETABL,10;"0")
   END 


   WRITE ENR_HISTORCUMULETABL ON F.HISTORCUMULETABL,W_CleEtab
RETURN

*********************************************************
*********************************************************
300 *

   k=1
   LOOP
   UNTIL ENR_DETAILCALCUL<49,k>="" DO
      * RECHERCHE DANS HISTORCUMULETABL
      l=1
      LOOP 
      UNTIL ENR_HISTORCUMULETABL<15,l>=ENR_DETAILCALCUL<49,k> OR ENR_HISTORCUMULETABL<15,l>="" DO
         l=l+1
      REPEAT
      * SI RUB TROUVEE DANS HISTORCUMULETABL
      IF ENR_DETAILCALCUL<50,k>="" THEN ENR_DETAILCALCUL<50,k>=0
      IF ENR_HISTORCUMULETABL<15,l><>"" THEN
         ENR_HISTORCUMULETABL<16,l>=ENR_HISTORCUMULETABL<16,l>+ENR_DETAILCALCUL<50,k>
      END ELSE
         ENR_HISTORCUMULETABL<15,-1>=ENR_DETAILCALCUL<49,k>
         READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_DETAILCALCUL<49,k> ELSE ENR_RUBCHARGE=""
         IF ENR_RUBCHARGE<16>="01" THEN
            READ ENR_TRANCHE FROM F.TRANCHE,ENR_RUBCHARGE<2> THEN
               IF ENR_TRANCHE<10>="02" THEN
                  IF W_ENTREESURMOIS="OUI" THEN
                     ENR_HISTORCUMULETABL<16,-1>=ENR_DETAILCALCUL<50,k>
                  END ELSE
                     ENR_HISTORCUMULETABL<16,-1>=W_CUMASSURSSAFPLAF+ENR_DETAILCALCUL<50,k>
                  END
               END ELSE
                  IF ENR_TRANCHE<10>="01" THEN
                     IF W_ENTREESURMOIS="OUI" THEN
                        ENR_HISTORCUMULETABL<16,-1>=ENR_DETAILCALCUL<50,k>
                     END ELSE
                        ENR_HISTORCUMULETABL<16,-1>=W_CUMASSURSSAFTOT+ENR_DETAILCALCUL<50,k>
                     END
                  END ELSE
                     ENR_HISTORCUMULETABL<16,-1>=ENR_DETAILCALCUL<50,k>
                  END
               END
            END
         END ELSE
            ENR_HISTORCUMULETABL<16,-1>=ENR_DETAILCALCUL<50,k>
         END
         ENR_HISTORCUMULETABL<17,-1>="0"
	 ENR_HISTORCUMULETABL<18,-1>="0"
	 ENR_HISTORCUMULETABL<19,-1>="0"
      END

      k=k+1

   REPEAT

RETURN

*********************************************************
* MAJ du fichier HISTORCUMUL ATT 23

400

   W_CleHistor=W_CleEtab[1,12]
   READ ENR_HISTORCUMUL FROM F.HISTORCUMUL,W_CleHistor ELSE ENR_HISTORCUMUL=""

   IF ENR_HISTORCUMUL<23>="" THEN
      ENR_HISTORCUMUL<23>=W_CleEtab
   END ELSE
      W_Count=DCOUNT(ENR_HISTORCUMUL<23>,CHAR(253))
      ENR_HISTORCUMUL<23,W_Count+1>=W_CleEtab
   END

   WRITE ENR_HISTORCUMUL ON F.HISTORCUMUL,W_CleHistor

RETURN

*********************************************************
* MAJ du fichier TEMPO 

500

   READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_SauveAidant ELSE ENR_CIVILAIDANT=""

   ENR_TEMPO<W_Rang,1>=W_SauveAidant
   W_NomPrenom=ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>
   ENR_TEMPO<W_Rang,2>=W_NomPrenom[1,40]

   FOR i = 1 TO W_CountEtab
      READ ENR_ETABLISSEMENT FROM F.ETABLISSEMENT,W_SauveEtab<i> ELSE ENR_ETABLISSEMENT=""
      W_Etab=ENR_ETABLISSEMENT<1>[1,30]
      ENR_TEMPO<W_Rang,3>=W_SauveEtab<i>:" ":W_Etab
      W_Rang=W_Rang+1
   NEXT i

RETURN
