**********
* RECALCUL DES CHARGES URSSAF DES A.A.D. POUR ECLATEMENT ENTRE :
* - EXO EN FONCTION DU PUBLIC
* - EXO EN FONCTION DE L'ACTIVITE
* - PAS D'EXO
* DIDIER - 12/04/2006
**********
EXECUTE "CREER-FICHIER ARCHIVEBULLPREC 3,1"
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE STOP
OPEN "","PERIODESPAIE" TO F.PERIODESPAIE ELSE STOP
OPEN "","RUBCHARGE" TO F.RUBCHARGE ELSE STOP
OPEN "","DETAILCALCULPREC" TO F.DETAILCALCULPREC ELSE STOP
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "","HISTORCUMUL" TO F.HISTORCUMUL ELSE STOP
OPEN "","HISTORCUMULPREC" TO F.HISTORCUMULPREC ELSE STOP
OPEN "","TRANCHE" TO F.TRANCHE ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","COMPTEUR" TO F.COMPTEUR ELSE STOP
OPEN "","_PH_" TO F.TEMPO ELSE STOP
OPEN "","RATEDITBULL" TO F.RATEDITBULL ELSE STOP
OPEN "","ARCHIVEBULL" TO F.ARCHIVEBULL ELSE STOP
OPEN "","ARCHIVEBULLPREC" TO F.ARCHIVEBULLPREC ELSE STOP
ENR_TEMPO=""
ITEMPO=0
PROCREAD W_VARIABLES ELSE STOP
W_CODENTITE=FIELD(W_VARIABLES," ",2)
W_PERIODEDEB=FIELD(W_VARIABLES," ",3)
W_PERIODEFIN=FIELD(W_VARIABLES," ",4)
W_TYPEPERS=FIELD(W_VARIABLES," ",5)
W_TABPROFIL=FIELD(W_VARIABLES," ",6)
EXECUTE "VIDER-FICHIER DATA DETAILCALCULPREC"
EXECUTE "VIDER-FICHIER DATA HISTORCUMULPREC"
EXECUTE "VIDER-FICHIER DATA ARCHIVEBULLPREC"
EXECUTE "VIDER-FICHIER DATA _PH_"
P=1
W_RUPTAIDANT=""
LISTREGULBULL=""
LOOP
 W_PROFIL=FIELD(W_TABPROFIL,"|",P)
 UNTIL W_PROFIL="" DO
  W_REQUETE='TSELECT DETAILCALCUL AVEC PeriodeDetailCalcul >= "':W_PERIODEDEB:'" AND <= "':W_PERIODEFIN:'" AND AVEC ConvColContratDetailCalcul # "02" AND AVEC CodAssoContratDetailCalcul = "':W_CODENTITE:'" AND AVEC ProfilContratDetailCalcul = "':W_PROFIL:'" AND AVEC FonctionContrat = "':W_TYPEPERS:'"'
  W_REQUETE=W_REQUETE:' OR AVEC PeriodeDetailCalcul >= "':W_PERIODEDEB:'" AND <= "':W_PERIODEFIN:'" AND AVEC ConvColContratDetailCalcul # "02" AND AVEC CodAssoContratDetailCalcul = "':W_CODENTITE:'" AND AVEC Profil2ContratDetailCalcul = "':W_PROFIL:'" AND AVEC FonctionContrat = "':W_TYPEPERS:'"'
  W_REQUETE=W_REQUETE:' PAR CodeAidantDetailCalcul PAR PeriodeDetailCalcul'
  EXECUTE W_REQUETE
  EXECUTE 'SAUVE-LISTE LISTREGULBULL'
  EXECUTE 'LISTE LISTREGULBULL' RETURNING W_MSG
  IF W_MSG<1>="209" THEN GOTO 10
  SELECT F.DETAILCALCUL TO LISTREGULBULL
  W_FINI="NON"
  LOOP
   READNEXT W_CLEDETAIL FROM LISTREGULBULL ELSE W_FINI="OUI"
   UNTIL W_FINI="OUI" DO
    IF W_CLEDETAIL[1,5]#W_RUPTAIDANT THEN
     READ ENR_HISTORCUMUL FROM F.HISTORCUMUL,W_CLEDETAIL[1,5]:"2006":W_CODENTITE ELSE ENR_HISTORCUMUL=""
     WRITE ENR_HISTORCUMUL ON F.HISTORCUMULPREC,W_CLEDETAIL[1,5]:"2006":W_CODENTITE
     DELETE F.HISTORCUMUL,W_CLEDETAIL[1,5]:"2006":W_CODENTITE
     W_RUPTAIDANT=W_CLEDETAIL[1,5]
    END
    READ ENR_DETAILCALCULPREC FROM F.DETAILCALCUL,W_CLEDETAIL THEN
     W_IMPOSAVANT=ENR_DETAILCALCULPREC<15>
     W_NETAVANT=ENR_DETAILCALCULPREC<16>
     W_APAYERAVANT=ENR_DETAILCALCULPREC<21>
     WRITE ENR_DETAILCALCULPREC ON F.DETAILCALCULPREC,W_CLEDETAIL
    END
    EXECUTE "CALCULPAIEREGUL R ":W_CODENTITE:" ":W_CLEDETAIL[9,6]:" ":W_CLEDETAIL[1,8]:" 0 0 0"
    W_BULLDIFFERENT="NON"
    READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_CLEDETAIL THEN
     IF ENR_DETAILCALCUL#ENR_DETAILCALCULPREC THEN
      W_BULLDIFFERENT="OUI"
     END
     W_APAYERAPRES=ENR_DETAILCALCUL<21>
     IF W_APAYERAVANT#W_APAYERAPRES THEN
      IF W_APAYERAVANT-1=W_APAYERAPRES OR W_APAYERAVANT-2=W_APAYERAPRES OR W_APAYERAVANT=W_APAYERAPRES-1 OR W_APAYERAVANT=W_APAYERAPRES-2 THEN
       ENR_DETAILCALCUL<15>=W_IMPOSAVANT
       ENR_DETAILCALCUL<16>=W_NETAVANT
       ENR_DETAILCALCUL<21>=W_APAYERAVANT
       WRITE ENR_DETAILCALCUL ON F.DETAILCALCUL,W_CLEDETAIL
      END ELSE
       ITEMPO=ITEMPO+1
       ENR_TEMPO=REPLACE(ENR_TEMPO,ITEMPO;W_CLEDETAIL:" NET AVANT : ":W_APAYERAVANT:"  -  NET APRES : ":W_APAYERAPRES)
       WRITE ENR_DETAILCALCUL ON F.TEMPO,W_CLEDETAIL
       WRITE ENR_DETAILCALCULPREC ON F.DETAILCALCUL,W_CLEDETAIL
       W_BULLDIFFERENT="NON"
      END
     END
     IF W_BULLDIFFERENT="OUI" THEN
      READ ENR_ARCHIVEBULL FROM F.ARCHIVEBULL,W_CLEDETAIL:W_CODENTITE THEN
       WRITE ENR_ARCHIVEBULL ON F.ARCHIVEBULLPREC,W_CLEDETAIL:W_CODENTITE
      END
      CALL GENEREARCHIVEBULLREGUL(W_CLEDETAIL)
      ENR_RATEDITBULL=""
      WRITE ENR_RATEDITBULL ON F.RATEDITBULL,W_CLEDETAIL:W_CODENTITE
     END
    END
    GOSUB 100
  REPEAT
10 P=P+1
REPEAT
READ ENR_COMPTEUR FROM F.COMPTEUR,W_CODENTITE ELSE ENR_COMPTEUR=""
ENR_COMPTEUR<1>=ENR_COMPTEUR<1>:W_TYPEPERS
WRITE ENR_COMPTEUR ON F.COMPTEUR,W_CODENTITE
WRITE ENR_TEMPO ON F.TEMPO,"REGUL":W_CODENTITE
EXECUTE 'EFFACER-LISTE LISTREGULBULL'
STOP
**********
* CLOTURE DE PAIE INDIVIDUELLE
**********
100 W_ENTREESURMOIS="NON"
READ ENR_CONTRAT FROM F.CONTRAT,W_CLEDETAIL[1,8] ELSE ENR_CONTRAT=""
W_DATEDEBCONTRAT=ENR_CONTRAT<8>
W_DATEDEBCONTRAT=OCONV(W_DATEDEBCONTRAT,"D4 ")
W_DATEDEBCONTRAT=W_DATEDEBCONTRAT[7,4]:W_DATEDEBCONTRAT[4,2]
IF W_DATEDEBCONTRAT=W_CLEDETAIL[9,6] THEN W_ENTREESURMOIS="OUI"
W_CleHistorCumul=W_CLEDETAIL[1,5]:"2006":W_CODENTITE
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"
ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,1;ENR_HISTORCUMUL<1>+ENR_DETAILCALCUL<6>)
ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,2;ENR_HISTORCUMUL<2>+ENR_DETAILCALCUL<6>)
ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,4;ENR_HISTORCUMUL<4>+ENR_DETAILCALCUL<29>)
W_CumulBrut=ENR_HISTORCUMUL<5>
ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,5;ENR_HISTORCUMUL<5>+ENR_DETAILCALCUL<7>)
ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,6;ENR_HISTORCUMUL<6>+ENR_DETAILCALCUL<15>)
ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,7;ENR_HISTORCUMUL<7>+ENR_DETAILCALCUL<16>)
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="" 
     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
  READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_DETAILCALCUL<8,i> 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,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=REPLACE(ENR_HISTORCUMUL,16,j;ENR_HISTORCUMUL<16,j>+ENR_DETAILCALCUL<28,i>)
   IF ENR_DETAILCALCUL<9,i>="" THEN  
    ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,17,j;ENR_HISTORCUMUL<17,j>+ENR_DETAILCALCUL<12,i>)
   END ELSE
    ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,17,j;ENR_HISTORCUMUL<17,j>+ENR_DETAILCALCUL<9,i>)
   END
   ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,18,j;ENR_HISTORCUMUL<18,j>+ENR_DETAILCALCUL<11,i>)
   ENR_HISTORCUMUL=REPLACE(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=REPLACE(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=REPLACE(ENR_HISTORCUMUL,16,W_Count+1;ENR_DETAILCALCUL<28,i>)
      IF ENR_DETAILCALCUL<9,i>="" THEN
       ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,17,W_Count+1;ENR_DETAILCALCUL<12,i>)
      END ELSE
       ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,17,W_Count+1;ENR_DETAILCALCUL<9,i>)
      END
     END ELSE
      ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,16,W_Count+1;W_CumulBrut+ENR_DETAILCALCUL<28,i>)
      IF ENR_DETAILCALCUL<9,i>="" THEN
       ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,17,W_Count+1;W_CumulBrut+ENR_DETAILCALCUL<12,i>)
      END ELSE
       ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,17,W_Count+1;W_CumulBrut+ENR_DETAILCALCUL<9,i>)
      END
     END
    END ELSE
     ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,16,W_Count+1;ENR_HISTORCUMUL<16,W_Count+1>+ENR_DETAILCALCUL<28,i>)
     IF ENR_DETAILCALCUL<9,i>="" THEN
      ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,17,W_Count+1;ENR_HISTORCUMUL<17,W_Count+1>+ENR_DETAILCALCUL<12,i>)
     END ELSE
      ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,17,W_Count+1;ENR_HISTORCUMUL<17,W_Count+1>+ENR_DETAILCALCUL<9,i>)
     END
    END
    ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,18,W_Count+1;ENR_HISTORCUMUL<18,W_Count+1>+ENR_DETAILCALCUL<11,i>)
    ENR_HISTORCUMUL=REPLACE(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=""
  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=REPLACE(ENR_HISTORCUMUL,16,j;W_CUMASSURSSAFPLAF+W_BASEURSSAFPLAF)
      END ELSE
       ENR_HISTORCUMUL=REPLACE(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=REPLACE(ENR_HISTORCUMUL,16,j;W_CUMASSURSSAFTOT+W_BASEURSSAFTOT)
      END ELSE
       ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,16,j;ENR_HISTORCUMUL<16,j>+W_BASEURSSAFTOT)
      END
     END
    END
   END
  END
 END	 
NEXT j
W_RUBAFFECT=""
* MAJ HISTORCUMUL POUR RUBRIQUES DE CHARGE A 0 (ATT 49 ET 50 DE DETAILCALCUL)
I=1
LOOP
 UNTIL ENR_DETAILCALCUL<49,I>="" DO
  K=1
  LOOP 
   UNTIL ENR_HISTORCUMUL<15,K>=ENR_DETAILCALCUL<49,I> OR ENR_HISTORCUMUL<15,K>="" DO
    K=K+1
  REPEAT
  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
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 
WRITE ENR_HISTORCUMUL ON F.HISTORCUMUL,W_CleHistorCumul
RETURN