**********************************************************
*  moulinette de mise  jour des cumuls DADS

*  Vanessa
*  avril 2002

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

* Ouvertures des fichiers

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","HISTORCUMUL" TO F.HISTORCUMUL ELSE PRINT "OUVERTURE HISTORCUMUL" 
OPEN "","RUBCHARGE" TO F.RUBCHARGE ELSE PRINT "OUVERTURE RUBCHARGE" 
OPEN "","TRANCHE" TO F.TRANCHE ELSE PRINT "OUVERTURE TRANCHE"

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

* initialisation des variables
W_CumulAssietteBrut=""

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

* PROGRAMME PRINCIPAL

   EXECUTE 'SELECT HISTORCUMUL AVEC PeriodeHistCum = "2002"'
   EXECUTE 'SAUVE-LISTE W_RequeteHistCum'
   EXECUTE "LISTE W_RequeteHistCum" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.HISTORCUMUL TO W_RequeteHistCum

      W_Fin="FAUX"

      LOOP
         READNEXT W_Cle FROM W_RequeteHistCum ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         READ ENR_HISTORCUMUL FROM F.HISTORCUMUL,W_Cle ELSE ENR_HISTORCUMUL=""
         W_Count=DCOUNT(ENR_HISTORCUMUL<15>,CHAR(253))

	 W_CumulAssietteBrut=""

         * sauvegarde le cumul d'assiette brute de la 1re rubrique avec type de charge = ASSEDIC
         FOR i = 1 TO W_Count
            READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_HISTORCUMUL<15,i> ELSE ENR_RUBCHARGE=""
            IF ENR_RUBCHARGE<16> = "02" THEN
               W_CumulAssietteBrut = ENR_HISTORCUMUL<16,i>
               EXIT
            END
         NEXT i
         IF W_CumulAssietteBrut = "" THEN
            W_CumulAssietteBrut = ENR_HISTORCUMUL<5>
         END
          
         W_Premier="FAUX"
         FOR i = 1 TO W_Count
            READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_HISTORCUMUL<15,i> ELSE ENR_RUBCHARGE=""

            * pour chaque rubcharge de type URSSAF, si cumul assiette brute = cumul base cotisation et 
            * cumul assiette brute > cumul brut, alors on met en cumul assiette brute et cumul base cotisation
            * le montant sauvegard ci-dessus
            IF ENR_RUBCHARGE<16> = "01" THEN
               IF ENR_HISTORCUMUL<16,i> = ENR_HISTORCUMUL<17,i> AND INT(ENR_HISTORCUMUL<16,i>) > INT(ENR_HISTORCUMUL<5>) THEN
                  ENR_HISTORCUMUL<16,i> = W_CumulAssietteBrut
                  ENR_HISTORCUMUL<17,i> = W_CumulAssietteBrut
               END

               * sauvegarde le cumul d'assiette brute de la 1re rubrique URSSAF totalit
               IF W_Premier="FAUX" THEN
                  READ ENR_TRANCHE FROM F.TRANCHE,ENR_RUBCHARGE<2> ELSE ENR_TRANCHE=""
                  IF ENR_TRANCHE<10> = "01" THEN
                     W_CumulAssietteBrut = ENR_HISTORCUMUL<16,i>
                     W_Premier="VRAI"
                  END
               END

            END

         NEXT i

         * mettre le montant sauvegard ci-dessus en cumul assiette brute des rubriques de tranche B
         FOR i = 1 TO W_Count
            READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_HISTORCUMUL<15,i> ELSE ENR_RUBCHARGE=""
            READ ENR_TRANCHE FROM F.TRANCHE,ENR_RUBCHARGE<2> ELSE ENR_TRANCHE=""
            IF ENR_TRANCHE<10> = "03" THEN
               ENR_HISTORCUMUL<16,i> = W_CumulAssietteBrut
            END
         NEXT i

         WRITE ENR_HISTORCUMUL ON F.HISTORCUMUL,W_Cle

      REPEAT
   END

STOP
