**********************************************************
* Cloture de la paie
* rgularisation des HISTORCUMUL suite  pbs de clture
* Vanessa
*
**********************************************************

* Ouvertures des fichiers 

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","CONTRAT" TO F.CONTRAT ELSE PRINT "OUVERTURE CONTRAT" ;* en criture
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE PRINT "OUVERTURE DETAILCALCUL" ;* en lecture
OPEN "","HISTORCUMUL" TO F.HISTORCUMUL ELSE PRINT "OUVERTURE HISTORCUMUL" ;* en criture
OPEN "","RUBSAISIE" TO F.RUBSAISIE ELSE PRINT "OUVERTURE RUBSAISIE" ;* en lecture
OPEN "","RUBCHARGE" TO F.RUBCHARGE ELSE PRINT "OUVERTURE RUBCHARGE" ;* en lecture
OPEN "","TRANCHE" TO F.TRANCHE ELSE STOP
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE STOP

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

PRINT "Veuillez saisir une priode de dbut sous la forme AAAAMM. Vrifiez que l'entit n'est pas en dcalage de paie."
INPUT W_PerDeb 

PRINT "Veuillez saisir une priode de fin sous la forme AAAAMM"
INPUT W_PerFin

PRINT "Veuillez saisir un type d'activit (P/M)"
INPUT W_Act

PRINT "Veuillez saisir le code entit juridique (3N)"
INPUT W_Entite

PRINT "Veuillez saisir le code aidant (5N, si plusieurs spars par des points virgules)"
INPUT W_ListeAidant

READ ENR_ASSOCIATION FROM F.ASSOCIATION,W_Entite ELSE ENR_ASSOCIATION=""
DECALAGEPAIE=ENR_ASSOCIATION<25>

   W_DateDeb=ICONV("01/":W_PerDeb[5,2]:"/":W_PerDeb[1,4],"D4/")

   W_Mois=W_PerFin[5,2]
   W_An=W_PerFin[1,4]

   W_Mois=W_Mois+1
   IF W_Mois MATCH "1N" THEN W_Mois = "0":W_Mois
   IF W_Mois="13" THEN
      W_Mois="01"
      W_An=W_An+1
   END
   W_DateFin=ICONV("01/":W_Mois:"/":W_An,"D4/")-1
   IF W_Act="P" AND DECALAGEPAIE=1 THEN
    IF W_PerDeb=W_PerFin AND W_PerDeb[5,2]="12" THEN
     W_An=W_PerFin[1,4]+1
    END ELSE
     W_An=W_PerFin[1,4]
    END
   END ELSE
    W_An=W_PerFin[1,4]
   END 

   REQUETECONTRAT=""
   REQUETECUMUL=""
   
iAidant = 1
LOOP
W_Aidant = FIELD(W_ListeAidant,";",iAidant)	
WHILE W_Aidant # ""
   EXECUTE 'SELECT HISTORCUMUL AVEC CodeAidant = "':W_Aidant:'" AND AVEC PeriodeHistCum = "':W_An:'" AND AVEC PrestManda = "':W_Act:'" AND AVEC EmployeurHistCum = "':W_Entite:'"'
   EXECUTE 'SAUVE-LISTE REQUETECUMUL'
   EXECUTE 'LISTE REQUETECUMUL' CAPTURING MSG RETURNING MSGCODE

   IF MSGCODE<1>#209 THEN 

      W_Fini="FAUX"
      SELECT F.HISTORCUMUL TO REQUETECUMUL

      LOOP
         READNEXT W_CleCumul FROM REQUETECUMUL ELSE W_Fini="VRAI"

      WHILE W_Fini="FAUX" DO
         DELETE F.HISTORCUMUL,W_CleCumul

      REPEAT

   END
   W_RequeteContrat='SELECT CONTRAT AVEC CodeAidant = "':W_Aidant:'" AND AVEC 65 # "O" AND AVEC 2 = "':W_Entite:'"'
   IF W_Act#"M" THEN
      W_RequeteContrat=W_RequeteContrat:' AND AVEC 1 # "02"'
   END ELSE
      W_RequeteContrat=W_RequeteContrat:' AND AVEC 1 = "02"'
   END
   W_RequeteContrat=W_RequeteContrat:' AND AVEC 7 <= "':W_DateFin:'" AND AVEC 8 >= "':W_DateDeb:'" OR = ""'
   W_RequeteContrat=W_RequeteContrat:' PAR @ID'

   W_Fini="FAUX"
   EXECUTE W_RequeteContrat
   EXECUTE 'SAUVE-LISTE REQUETECONTRAT'
   EXECUTE 'LISTE REQUETECONTRAT' CAPTURING MSG RETURNING MSGCODE

   IF MSGCODE<1>=209 THEN 
        STOP
   END

   SELECT F.CONTRAT TO REQUETECONTRAT

   LOOP
      READNEXT W_CleContrat FROM REQUETECONTRAT ELSE W_Fini="VRAI" 
   WHILE W_Fini="FAUX" DO
      READ ENR_CONTRAT FROM F.CONTRAT,W_CleContrat THEN
          GOSUB 10 
      END

   REPEAT
iAidant = iAidant + 1
REPEAT
STOP

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

10

   W_CodeAnnee=W_An
   IF ENR_CONTRAT<1>="02" THEN
      W_CleHistorCumul=W_CleContrat[1,5]:W_CodeAnnee:ENR_CONTRAT<3>
   END ELSE 
      W_CleHistorCumul=W_CleContrat[1,5]:W_CodeAnnee:ENR_CONTRAT<2>
   END

	W_Cumul905=0
   
   FOR W_Per = W_PerDeb TO W_PerFin

      IF W_Per[5,2] = "13" THEN
      	 W_Per=W_Per[1,4]+1:"01"
      END

      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_Per THEN W_ENTREESURMOIS="OUI"

      READ ENR_HISTORCUMUL FROM F.HISTORCUMUL,W_CleHistorCumul ELSE ENR_HISTORCUMUL=""
      IF ENR_HISTORCUMUL="" THEN W_ENTREESURMOIS="OUI"
      IF ENR_HISTORCUMUL#"" THEN W_ENTREESURMOIS="NON"
      IF ENR_HISTORCUMUL<5>=0 THEN W_ENTREESURMOIS="OUI"
      IF ENR_HISTORCUMUL<5>="" THEN W_ENTREESURMOIS="OUI"

      READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_CleContrat:W_Per THEN

      IF ENR_HISTORCUMUL<11>="" AND ENR_CONTRAT<7> >= ICONV("01/01/":W_CodeAnnee[1,4],"D4/") AND ENR_CONTRAT<7> <= ICONV("31/12/":W_CodeAnnee[1,4],"D4/") THEN
         ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,11;ENR_CONTRAT<7>)
      END
      IF ENR_HISTORCUMUL<12>="" AND ENR_CONTRAT<8> >= ICONV("01/01/":W_CodeAnnee[1,4],"D4/") AND ENR_CONTRAT<8> <= ICONV("31/12/":W_CodeAnnee[1,4],"D4/") THEN
         ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,12;ENR_CONTRAT<8>)
      END
      IF ENR_HISTORCUMUL<12> # "" AND ENR_CONTRAT<7> # ENR_HISTORCUMUL<11> AND ENR_CONTRAT<7> >= ICONV("01/01/":W_CodeAnnee[1,4],"D4/") AND ENR_CONTRAT<7> <= ICONV("31/12/":W_CodeAnnee[1,4],"D4/") THEN
         ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,13;ENR_CONTRAT<7>)
      END
      IF ENR_HISTORCUMUL<12> # "" AND ENR_CONTRAT<8> # ENR_HISTORCUMUL<12> AND ENR_CONTRAT<8> >= ICONV("01/01/":W_CodeAnnee[1,4],"D4/") AND ENR_CONTRAT<8> <= ICONV("31/12/":W_CodeAnnee[1,4],"D4/") THEN
         ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,14;ENR_CONTRAT<8>)
      END

      ENR_HISTORCUMUL<2>=ENR_HISTORCUMUL<2>+ENR_DETAILCALCUL<6>
 
      IF ENR_DETAILCALCUL<6> >= 6000 THEN
         ENR_HISTORCUMUL<3>=W_Per[5,2]
      END

      ENR_HISTORCUMUL<4>=ENR_HISTORCUMUL<4>+ENR_DETAILCALCUL<29>

      W_CumulBrut=ENR_HISTORCUMUL<5>

      ENR_HISTORCUMUL<5>=ENR_HISTORCUMUL<5>+ENR_DETAILCALCUL<7>
      ENR_HISTORCUMUL<6>=ENR_HISTORCUMUL<6>+ENR_DETAILCALCUL<15>
      ENR_HISTORCUMUL<7>=ENR_HISTORCUMUL<7>+ENR_DETAILCALCUL<16>
 
      W_Temp=DCOUNT(ENR_DETAILCALCUL<2>,CHAR(253))

      FOR i=1 TO W_Temp
     
         READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<2,i> ELSE 
		ENR_RUBSAISIE="" 
		PRINT "Rubsaisie ":ENR_DETAILCALCUL<2,i>
	   END

         IF ENR_RUBSAISIE<2>="3" OR ENR_RUBSAISIE<2>="4" THEN
            ENR_HISTORCUMUL<1>=ENR_HISTORCUMUL<1>+ENR_DETAILCALCUL<3,i>
         END
       
         IF ENR_RUBSAISIE<2>="0" THEN
            ENR_HISTORCUMUL<8>=ENR_HISTORCUMUL<8>+ENR_DETAILCALCUL<5,i>
 
            W_Count=DCOUNT(ENR_HISTORCUMUL<9>,CHAR(253))
 	    IF W_Count < 4 THEN
               W_Passe="FALSE"
               FOR j=1 TO W_Count
                  IF ENR_RUBSAISIE<3>=ENR_HISTORCUMUL<9,j> THEN
                     W_Passe="TRUE"
                  END 
               NEXT j 
               IF W_Passe="FALSE" THEN
	          ENR_HISTORCUMUL<9,W_Count+1>=ENR_RUBSAISIE<3>
	       END
  	    END

         END
      NEXT i

      W_Temp=DCOUNT(ENR_DETAILCALCUL<17>,CHAR(253))
      W_CumulRub=0
      FOR i=1 TO W_Temp
         READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<17,i> ELSE 
		ENR_RUBSAISIE="" 
		PRINT "Rubsaisie ":ENR_DETAILCALCUL<2,i>
	   END

         IF ENR_RUBSAISIE<2>="2" THEN
            ENR_HISTORCUMUL<10>=ENR_HISTORCUMUL<10>+ENR_DETAILCALCUL<20,i>
         END 

         * gestion de la rubrique 832, chomage partiel...
         IF ENR_DETAILCALCUL<17,i> = "832" THEN
	    ENR_HISTORCUMUL<20>=ENR_HISTORCUMUL<20>+ENR_DETAILCALCUL<20,i>
         END

         IF ENR_HISTORCUMUL<20>=0 THEN
            ENR_HISTORCUMUL<20>=""
         END

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

      NEXT i

      * gestion de l'att 21 de HISTORCUMUL
      IF ENR_CONTRAT<1>="02" AND ENR_DETAILCALCUL<1>="E" THEN
	 ENR_HISTORCUMUL<21>=ENR_HISTORCUMUL<21> + (ENR_DETAILCALCUL<21>-W_CumulRub)
      END

      IF ENR_HISTORCUMUL<21>=0 THEN
         ENR_HISTORCUMUL<21>=""
      END

      i=1
      W_ENRHISTORCUMUL=""
      W_Count=DCOUNT(ENR_HISTORCUMUL<15>,CHAR(253))
      FOR j=1 TO W_Count
         W_ENRHISTORCUMUL<1,j>=""
      NEXT j
      W_BASEURSSAFTOT=0
      W_BASEURSSAFPLAF=0
      W_CUMASSURSSAFTOT=0
      W_CUMASSURSSAFPLAF=0

      j=1
      LOOP
      IF W_CUMASSURSSAFPLAF#0 AND W_CUMASSURSSAFTOT#0 THEN j=99
      WHILE ENR_HISTORCUMUL<15,j> # "" DO
       IF W_CUMASSURSSAFPLAF=0 OR W_CUMASSURSSAFTOT=0 THEN
        READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_HISTORCUMUL<15,j> 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_HISTORCUMUL<16,j>
          END
	  IF ENR_TRANCHE<10>="01" THEN
            IF W_CUMASSURSSAFTOT=0 THEN W_CUMASSURSSAFTOT=ENR_HISTORCUMUL<16,j>
          END
        END
       END        
       j=j+1
      REPEAT
      IF W_CUMASSURSSAFTOT=0 AND W_CUMASSURSSAFPLAF=0 THEN W_ENTREESURMOIS="OUI"
      LOOP
      WHILE ENR_DETAILCALCUL<8,i> # "" DO
         j=1
         LOOP
         WHILE ENR_DETAILCALCUL<8,i> # ENR_HISTORCUMUL<15,j> AND ENR_HISTORCUMUL<15,j> # "" DO
            IF W_CUMASSURSSAFPLAF=0 OR W_CUMASSURSSAFTOT=0 THEN
               READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_HISTORCUMUL<15,j> ELSE 
			ENR_RUBCHARGE="" 
			PRINT "Rubcharge ":ENR_HISTORCUMUL<15,j>
	   	   END
	
               IF ENR_RUBCHARGE<16>="01" THEN
	          READ ENR_TRANCHE FROM F.TRANCHE,ENR_RUBCHARGE<2> ELSE
			ENR_TRANCHE = ""
			PRINT "Tranche ":ENR_RUBCHARGE<2>
		    END
                  IF ENR_TRANCHE<10>="02" THEN
                     IF W_CUMASSURSSAFPLAF=0 THEN W_CUMASSURSSAFPLAF=ENR_HISTORCUMUL<16,j>
                  END
	          IF ENR_TRANCHE<10>="01" THEN
                     IF W_CUMASSURSSAFTOT=0 THEN W_CUMASSURSSAFTOT=ENR_HISTORCUMUL<16,j>
                  END
               END
            END        
 	    j=j+1
         REPEAT

		IF ENR_DETAILCALCUL<8,i>="905" THEN W_Cumul905=W_Cumul905+ENR_DETAILCALCUL<9,i>
         READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_DETAILCALCUL<8,i> ELSE 
		ENR_RUBCHARGE=""     
		PRINT "RubCharge ":ENR_DETAILCALCUL<8,i>
	   END
         IF ENR_RUBCHARGE<16>="01" THEN
	    READ ENR_TRANCHE FROM F.TRANCHE,ENR_RUBCHARGE<2> ELSE 
		ENR_TRANCHE=""	
		PRINT "Tranche ":ENR_RUBCHARGE<2>
	    END
	    IF ENR_TRANCHE<10>="02" THEN
               IF W_BASEURSSAFPLAF=0 THEN W_BASEURSSAFPLAF=ENR_DETAILCALCUL<28,i>
            END
	    IF ENR_TRANCHE<10>="01" THEN
               IF W_BASEURSSAFTOT=0 THEN W_BASEURSSAFTOT=ENR_DETAILCALCUL<28,i>
            END
         END
         IF ENR_DETAILCALCUL<8,i>=ENR_HISTORCUMUL<15,j> THEN
            W_ENRHISTORCUMUL<1,j>="1"
            IF ENR_RUBCHARGE<16>="01" THEN
               IF ENR_TRANCHE<10>="02" THEN
                  IF W_CUMASSURSSAFPLAF=0 THEN W_CUMASSURSSAFPLAF=ENR_HISTORCUMUL<16,j>
               END
	       IF ENR_TRANCHE<10>="01" THEN
                  IF W_CUMASSURSSAFTOT=0 THEN W_CUMASSURSSAFTOT=ENR_HISTORCUMUL<16,j>
               END
            END
  	    ENR_HISTORCUMUL<16,j>=ENR_HISTORCUMUL<16,j>+ENR_DETAILCALCUL<28,i>
 	    IF ENR_DETAILCALCUL<9,i>="" THEN  
 	       ENR_HISTORCUMUL<17,j>=ENR_HISTORCUMUL<17,j>+ENR_DETAILCALCUL<12,i>
	    END ELSE
	       ENR_HISTORCUMUL<17,j>=ENR_HISTORCUMUL<17,j>+ENR_DETAILCALCUL<9,i>
	    END
  	    ENR_HISTORCUMUL<18,j>=ENR_HISTORCUMUL<18,j>+ENR_DETAILCALCUL<11,i>
  	    ENR_HISTORCUMUL<19,j>=ENR_HISTORCUMUL<19,j>+ENR_DETAILCALCUL<14,i>
         END ELSE	
            IF ENR_HISTORCUMUL<15,j> = "" THEN
	       W_Count=DCOUNT(ENR_HISTORCUMUL<15>,CHAR(253))
	       ENR_HISTORCUMUL<15,W_Count+1>=ENR_DETAILCALCUL<8,i>
               W_ENRHISTORCUMUL<1,W_Count+1>="0"	      

 	       IF ENR_RUBCHARGE<18>="3" THEN
                  IF ENR_RUBCHARGE<16>="01" THEN
	             ENR_HISTORCUMUL<16,W_Count+1>=ENR_DETAILCALCUL<28,i>
	             IF ENR_DETAILCALCUL<9,i>="" THEN
	                ENR_HISTORCUMUL<17,W_Count+1>=ENR_DETAILCALCUL<12,i>
                     END ELSE
	                ENR_HISTORCUMUL<17,W_Count+1>=ENR_DETAILCALCUL<9,i>
                     END
                  END ELSE
	             ENR_HISTORCUMUL<16,W_Count+1>=W_CumulBrut+ENR_DETAILCALCUL<28,i>
	             IF ENR_DETAILCALCUL<9,i>="" THEN
	                ENR_HISTORCUMUL<17,W_Count+1>=W_CumulBrut+ENR_DETAILCALCUL<12,i>
                     END ELSE
	                ENR_HISTORCUMUL<17,W_Count+1>=W_CumulBrut+ENR_DETAILCALCUL<9,i>
                     END
                  END
	       END ELSE
	          ENR_HISTORCUMUL<16,W_Count+1>=ENR_HISTORCUMUL<16,W_Count+1>+ENR_DETAILCALCUL<28,i>
	          IF ENR_DETAILCALCUL<9,i>="" THEN
	             ENR_HISTORCUMUL<17,W_Count+1>=ENR_HISTORCUMUL<17,W_Count+1>+ENR_DETAILCALCUL<12,i>
                  END ELSE
	             ENR_HISTORCUMUL<17,W_Count+1>=ENR_HISTORCUMUL<17,W_Count+1>+ENR_DETAILCALCUL<9,i>
                  END
  	       END
	       ENR_HISTORCUMUL<18,W_Count+1>=ENR_HISTORCUMUL<18,W_Count+1>+ENR_DETAILCALCUL<11,i>
  	       ENR_HISTORCUMUL<19,W_Count+1>=ENR_HISTORCUMUL<19,W_Count+1>+ENR_DETAILCALCUL<14,i>
	    END
         END		
         i=i+1	
      REPEAT

      * MAJ CUMUL D'ASSIETTE BRUTE (ATT 16 D'HISTORCUMUL) POUR RUBRIQUE URSSAF NON PRESENTE DANS
      * FICHIER DETAILCALCUL
      W_Count=DCOUNT(W_ENRHISTORCUMUL<1>,CHAR(253))
      FOR j=1 TO W_Count
         IF W_ENRHISTORCUMUL<1,j>#"1" THEN
            READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_HISTORCUMUL<15,j> ELSE
			ENR_RUBCHARGE=""
			PRINT "rubcharge ":ENR_HISTORCUMUL<15,j>
		END
            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_HISTORCUMUL<15,j> DO
                        D=D+1
                     REPEAT
                     IF ENR_DETAILCALCUL<49,D>="" THEN
                        IF W_ENRHISTORCUMUL<1,j>="0" THEN
                           IF W_ENTREESURMOIS="NON" THEN ENR_HISTORCUMUL<16,j>=W_CUMASSURSSAFPLAF+W_BASEURSSAFPLAF
                        END ELSE
                           ENR_HISTORCUMUL<16,j>=ENR_HISTORCUMUL<16,j>+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_HISTORCUMUL<15,j> DO
                        D=D+1
                     REPEAT
                     IF ENR_DETAILCALCUL<49,D>="" THEN
                        IF W_ENRHISTORCUMUL<1,j>="0" THEN
                           IF W_ENTREESURMOIS="NON" THEN ENR_HISTORCUMUL<16,j>=W_CUMASSURSSAFTOT+W_BASEURSSAFTOT
                        END ELSE
                           ENR_HISTORCUMUL<16,j>=ENR_HISTORCUMUL<16,j>+W_BASEURSSAFTOT
                        END
                     END
                  END
               END ELSE
			PRINT "Tranche ":ENR_RUBCHARGE<2>
		   END
            END
         END	 
      NEXT j

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

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

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

	IF W_Per = W_PerFin THEN
		W_Max=DCOUNT(ENR_HISTORCUMUL<15>,CHAR(253))
		FOR J=1 TO W_Max
			READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_HISTORCUMUL<15, J> THEN
				IF ENR_RUBCHARGE<12>#"" THEN
					W_ValeurAbsolue=ABS(W_Cumul905)
					ENR_HISTORCUMUL<16, J> = ENR_HISTORCUMUL<16, J> - W_ValeurAbsolue
					ENR_HISTORCUMUL<17, J> = ENR_HISTORCUMUL<17, J> - W_ValeurAbsolue
				END
			END
		NEXT J
	END
	  
      WRITE ENR_HISTORCUMUL ON F.HISTORCUMUL,W_CleHistorCumul

      END

   NEXT W_Per

RETURN

*********************************************************
*********************************************************
11 *

      I=1
      LOOP
       UNTIL ENR_DETAILCALCUL<49,I>="" DO
         * RECHERCHE DANS HISTORCUMUL
	 K=1
	 LOOP 
          UNTIL ENR_HISTORCUMUL<15,K>=ENR_DETAILCALCUL<49,I> OR ENR_HISTORCUMUL<15,K>="" DO
	   K=K+1
	 REPEAT
	 * SI RUB TROUVEE DANS HISTORCUMUL
         IF ENR_DETAILCALCUL<50,I>="" THEN ENR_DETAILCALCUL<50,I>=0
	 IF ENR_HISTORCUMUL<15,K><>"" THEN
          ENR_HISTORCUMUL<16,K>=ENR_HISTORCUMUL<16,K>+ENR_DETAILCALCUL<50,I>
	 END ELSE
	  ENR_HISTORCUMUL<15,-1>=ENR_DETAILCALCUL<49,I>
          READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_DETAILCALCUL<49,I> 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_HISTORCUMUL<16,-1>=ENR_DETAILCALCUL<50,I>
             END ELSE
              ENR_HISTORCUMUL<16,-1>=W_CUMASSURSSAFPLAF+ENR_DETAILCALCUL<50,I>
             END
            END ELSE
             IF ENR_TRANCHE<10>="01" THEN
              IF W_ENTREESURMOIS="OUI" THEN
               ENR_HISTORCUMUL<16,-1>=ENR_DETAILCALCUL<50,I>
              END ELSE
               ENR_HISTORCUMUL<16,-1>=W_CUMASSURSSAFTOT+ENR_DETAILCALCUL<50,I>
              END
             END ELSE
              ENR_HISTORCUMUL<16,-1>=ENR_DETAILCALCUL<50,I>
             END
            END
           END
          END ELSE
           ENR_HISTORCUMUL<16,-1>=ENR_DETAILCALCUL<50,I>
          END
	  ENR_HISTORCUMUL<17,-1>="0"
	  ENR_HISTORCUMUL<18,-1>="0"
	  ENR_HISTORCUMUL<19,-1>="0"
	 END
         I=I+1
      REPEAT

RETURN

