**********************************************************
*  si aidant sur plusieurs tablissments --> cumuls DADS 
*  par tablissement
*  Vanessa
*  novembre 2003
*
* Modification : 02-03/12/07
* priscilla
* --> Si aidant plusieurs tablissements, afficher que le montant brut le plus lv
**********************************************************

* 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
*ARGUMENTS = "GENECUMULSMULTIETABLDADSU 2007 001 PRISCILLA"
W_Periode=FIELD(ARGUMENTS," ",2)
W_Entite=FIELD(ARGUMENTS," ",3)
W_User=FIELD(ARGUMENTS," ",4)
*********************************************************
* PROGRAMME PRINCIPAL

W_Requete=""
W_RequeteContrat=""
W_RequeteRubCharge=""
W_Temp=""
W_Rang=1
ENR_TEMPO=""
	
	*PG le 29/11/07
	* Chargement des rubriques de taxe sur salaire dans un tableau
	GOSUB 600 
	
	
   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
**AVEC 0 = "02781]" AND **
   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
			   * historcumul est lu avec les codes etab
			   GOSUB 700
            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
		 
		 *Gestion des cumuls brut, on prend seulement le plus fort brut.
		 GOSUB 700
		 
      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

**********************************************************
* PG le 29/11/07

* Gestion des taxes sur salaires : On prend que les rubriques concernes (053, 054, 055)

600

	W_CleTaxeSalaire=""
	W_EndRubCharge=""
	IRubCharge = 0
	W_Temp='SSELECT RUBCHARGE AVEC 16 = "05"'
	W_TabRubCharge=""

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

	IF MSGCODE<1>#209 THEN	
		SELECT F.RUBCHARGE TO W_RequeteRubCharge

		W_EndRubCharge = "FAUX"
		LOOP
		 READNEXT W_CleTaxeSalaire FROM W_RequeteRubCharge ELSE W_EndRubCharge = "VRAI"
		WHILE W_EndRubCharge = "FAUX" DO
			IRubCharge = IRubCharge+1
			W_TabRubCharge<IRubCharge>=W_CleTaxeSalaire
		REPEAT
		W_TabRubCharge<IRubCharge+1>="908"
		W_TabRubCharge<IRubCharge+2>="909"
	END 	
RETURN	

**********************************************************
* PG le 29/11/07

* Gestion cumuls brut : On prend seulement le plus lv.

700
	* Chargement des montants brut par etablissement, 
	*et crire le plus haut montant brut dans un tableau avec code etab

	I_BrutMaxi = 0
	JRubCharge = 0
	W_BrutMaxi = 0

	FOR JRubCharge = 1 TO DCOUNT(ENR_HISTORCUMUL<23>,CHAR(253))
		READ ENR_HISTORCUMULETABL FROM F.HISTORCUMULETABL,ENR_HISTORCUMUL<23,JRubCharge> ELSE ENR_HISTORCUMULETABL=""
		IF ENR_HISTORCUMULETABL<5> > W_BrutMaxi THEN
			W_BrutMaxi = ENR_HISTORCUMULETABL<5>
			I_BrutMaxi = JRubCharge
		END
	NEXT JRubCharge
	
	GOSUB 800
RETURN

**********************************************************
* PG le 29/11/07

* Passage du fichier HISTORCUMUL vers HISTORCUMULETABL pour avoir que le montant brut maxi

800
	I_TabRubCharge = 0
	I_TabRubChargeSupp = 0
	I_RubChargeEtabl = 1
	I_Etabl = 1
	I_SuppRubCharge = 1
	
	********************************
	*Copie des rubriques de charges*
	********************************
	
	READ ENR_HISTORCUMULETABL FROM F.HISTORCUMULETABL,ENR_HISTORCUMUL<23,I_BrutMaxi> ELSE ENR_HISTORCUMULETABL=""
	
	FOR I_TabRubCharge = 1 TO DCOUNT(W_TabRubCharge,CHAR(254))
		I_RubChargeEtabl=1
		LOOP
		WHILE ENR_HISTORCUMUL<15,I_RubChargeEtabl> # W_TabRubCharge<I_TabRubCharge> AND ENR_HISTORCUMUL<15,I_RubChargeEtabl> # ""  DO
			I_RubChargeEtabl = I_RubChargeEtabl+1
		REPEAT
		IF ENR_HISTORCUMUL<15,I_RubChargeEtabl> # "" THEN
			I_Etabl=1
			LOOP
			WHILE ENR_HISTORCUMUL<15,I_RubChargeEtabl> # ENR_HISTORCUMULETABL<15,I_Etabl> AND ENR_HISTORCUMULETABL<15,I_Etabl> # ""  DO
				I_Etabl = I_Etabl+1
			REPEAT
			ENR_HISTORCUMULETABL<16,I_Etabl> = ENR_HISTORCUMUL<16,I_RubChargeEtabl>
			ENR_HISTORCUMULETABL<17,I_Etabl> = ENR_HISTORCUMUL<17,I_RubChargeEtabl>
			ENR_HISTORCUMULETABL<18,I_Etabl> = ENR_HISTORCUMUL<18,I_RubChargeEtabl>
			ENR_HISTORCUMULETABL<19,I_Etabl> = ENR_HISTORCUMUL<19,I_RubChargeEtabl>
			*ENR_HISTORCUMULETABL<24,I_Etabl> = ENR_HISTORCUMUL<24,I_RubChargeEtabl>
			*ENR_HISTORCUMULETABL<25,I_Etabl> = ENR_HISTORCUMUL<25,I_RubChargeEtabl>
			*ENR_HISTORCUMULETABL<26,I_Etabl> = ENR_HISTORCUMUL<26,I_RubChargeEtabl>
			*ENR_HISTORCUMULETABL<27,I_Etabl> = ENR_HISTORCUMUL<27,I_RubChargeEtabl>
			*ENR_HISTORCUMULETABL<28,I_Etabl> = ENR_HISTORCUMUL<28,I_RubChargeEtabl>
			*ENR_HISTORCUMULETABL<29,I_Etabl> = ENR_HISTORCUMUL<29,I_RubChargeEtabl>
		END
	NEXT I_TabRubCharge
	
	ENR_HISTORCUMULETABL<24> = ENR_HISTORCUMUL<24>
	ENR_HISTORCUMULETABL<25> = ENR_HISTORCUMUL<25>
	ENR_HISTORCUMULETABL<26> = ENR_HISTORCUMUL<26>
	ENR_HISTORCUMULETABL<27> = ENR_HISTORCUMUL<27>
	ENR_HISTORCUMULETABL<28> = ENR_HISTORCUMUL<28>
	ENR_HISTORCUMULETABL<29> = ENR_HISTORCUMUL<29>
	WRITE ENR_HISTORCUMULETABL ON F.HISTORCUMULETABL,ENR_HISTORCUMUL<23,I_BrutMaxi>
	
	**************************************************
	*Suppression des rubriques charges non concernes*
	**************************************************
	FOR I_23 = 1 TO DCOUNT(ENR_HISTORCUMUL<23>,CHAR(253))
			
		IF I_BrutMaxi # I_23 THEN
		
			READ ENR_HISTORCUMULETABL FROM F.HISTORCUMULETABL,ENR_HISTORCUMUL<23,I_23> ELSE ENR_HISTORCUMULETABL=""
			FOR I_TabRubChargeSupp = 1 TO DCOUNT(W_TabRubCharge,CHAR(254)) 
				I_SuppRubCharge=1
				LOOP
				WHILE ENR_HISTORCUMULETABL<15,I_SuppRubCharge> # W_TabRubCharge<I_TabRubChargeSupp> AND ENR_HISTORCUMULETABL<15,I_SuppRubCharge> # ""  DO
					I_SuppRubCharge = I_SuppRubCharge+1
				REPEAT
				IF ENR_HISTORCUMULETABL<15,I_SuppRubCharge> # "" THEN
					*** DELETE 				
					ENR_HISTORCUMULETABL = DELETE(ENR_HISTORCUMULETABL,15,I_SuppRubCharge)
					ENR_HISTORCUMULETABL = DELETE(ENR_HISTORCUMULETABL,16,I_SuppRubCharge)
					ENR_HISTORCUMULETABL = DELETE(ENR_HISTORCUMULETABL,17,I_SuppRubCharge)
					ENR_HISTORCUMULETABL = DELETE(ENR_HISTORCUMULETABL,18,I_SuppRubCharge)
					ENR_HISTORCUMULETABL = DELETE(ENR_HISTORCUMULETABL,19,I_SuppRubCharge)
					ENR_HISTORCUMULETABL = DELETE(ENR_HISTORCUMULETABL,24)
					ENR_HISTORCUMULETABL = DELETE(ENR_HISTORCUMULETABL,25)
					ENR_HISTORCUMULETABL = DELETE(ENR_HISTORCUMULETABL,26)
					ENR_HISTORCUMULETABL = DELETE(ENR_HISTORCUMULETABL,27)
					ENR_HISTORCUMULETABL = DELETE(ENR_HISTORCUMULETABL,28)
					ENR_HISTORCUMULETABL = DELETE(ENR_HISTORCUMULETABL,29)
				END	
			NEXT I_TabRubChargeSupp
			WRITE ENR_HISTORCUMULETABL ON F.HISTORCUMULETABL,ENR_HISTORCUMUL<23,I_23>
		END
		
	NEXT I_23
	
RETURN	