**********************************************************
*  gnration des fichiers HISTORCUMUL et DETAILCALCUL  partir 
*  du fichier des CUMULS du logiciel GARDE
*  Vanessa
*  Aot 1999
**********************************************************
* DIFFERENTES PROCEDURES

*  100  -> Lecture et mise en table des contrats de l'aidant
*  200  -> Recherche le contrat actif 
*  300  -> Remplit DETAILCALCUL
*  400  -> Cumule le fichier HISTORCUMUL
*  500  -> Finit d'crire le fichier HISTORCUMUL
*  600  -> Cration du Voc
*  700  -> Suppression du Voc
*  800  -> Rcupration parametres
**********************************************************

EXECUTE 'DATE.FORMAT'

* RECUPERATION PARAM
GOSUB 800

* CREATION VOC
GOSUB 600

* Ouvertures des fichiers

OPEN "","CUMULS" TO F.CUMULS ELSE STOP ;* en lecture
OPEN "","GAD" TO F.GAD ELSE STOP ;* en lecture
OPEN "","EMPLOYEURS" TO F.EMPLOYEURS ELSE STOP ;* en lecture
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP ;* en lecture
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP ;* en lecture criture
OPEN "","HISTORCUMUL" TO F.HISTORCUMUL ELSE STOP ;* en lecture criture
OPEN "","PROFIL" TO F.PROFIL ELSE STOP ;* en lecture
OPEN "","RUBCHARGE" TO F.RUBCHARGE ELSE STOP ;* en lecture
OPEN "","PARAMASSO" TO F.PARAMASSO ELSE STOP ;* en lecture
OPEN "","STATACTAIDE" TO F.STATACTAIDE ELSE STOP ;* en ecriture

READ ENRPARAMASSO FROM F.PARAMASSO,"1" ELSE STOP
I=1
LOOP
 COMPTE=EXTRACT(ENRPARAMASSO,1,I)
 UNTIL COMPTE="" OR COMPTE=W_MODULE DO
  I=I+1
REPEAT
IF COMPTE="" THEN STOP
CODEENTITE=EXTRACT(ENRPARAMASSO,2,I)
CODEACTIVITE=EXTRACT(ENRPARAMASSO,3,I)
CODEACTIVITE=CODEENTITE:CODEACTIVITE

ENR_CONTRAT = ""
ENR_CUMULS = ""
ENR_DETAILCALCUL =""
ENR_HISTORCUMUL = ""
ENR_PROFIL = ""
ENR_RUBCHARGE = ""
W_SauveAidant = ""
W_SauveEmpl = ""
W_SauveAn = ""
W_DatDebDADS = 0
W_CleHistorCumul = ""
W_DatFinDADS = 0
*********************************************************
* PROGRAMME PRINCIPAL

W_Date = OCONV(DATE(),"D4/")
W_AnSys=W_Date[7,4]

W_AnSysPrec=W_AnSys-1
W_AnSysPrec=W_AnSysPrec[3,2]

W_SauveAn = W_AnSysPrec
IF W_SauveAn > 20 THEN
   W_DatDebAn = "19"
END ELSE
   W_DatDebAn = "20"
END

GOSUB 50

EXECUTE 'EFFACER-LISTE LISTCUMULS'

ENR_CONTRAT = ""
ENR_CUMULS = ""
ENR_DETAILCALCUL =""
ENR_HISTORCUMUL = ""
ENR_PROFIL = ""
ENR_RUBCHARGE = ""
W_SauveAidant = ""
W_SauveEmpl = ""
W_SauveAn = ""
W_DatDebDADS = 0
W_CleHistorCumul = ""
W_DatFinDADS = 0
W_AnSysPrec=W_AnSys
W_AnSysPrec=W_AnSysPrec[3,2]

W_SauveAn = W_AnSysPrec
IF W_SauveAn > 20 THEN
   W_DatDebAn = "19"
END ELSE
   W_DatDebAn = "20"
END

GOSUB 50

* SUPPRESSION VOC
GOSUB 700

EXECUTE 'EFFACER-LISTE LISTCUMULS'

STOP

****** traitement
50 EXECUTE 'SSELECT CUMULS AVEC PERIODE >= "':W_AnSysPrec:'01" AND AVEC PERIODE <= "':W_AnSysPrec:'12" PAR CODEGAD PAR CODEEMPL PAR PERIODE'
   EXECUTE 'SAUVE-LISTE LISTCUMULS'   
   EXECUTE 'LISTE LISTCUMULS' RETURNING W_MSG
   IF W_MSG <1> # "209" THEN
      SELECT F.CUMULS TO LISTCUMULS
   END ELSE
      PRINT " A PAS"
      STOP
   END

   W_Fini = "FAUX"      

   LOOP

      READNEXT W_CleCumul FROM LISTCUMULS ELSE W_Fini = "VRAI"

      IF W_SauveAidant # W_CleCumul[1,5] THEN
         IF W_SauveAidant # "" THEN
            W_CleHistorCumul = W_NouvCodeAidant:W_DatDebAn:W_SauveAn:W_NouvCodeEmpl
            WRITE ENR_HISTORCUMUL ON F.HISTORCUMUL,W_CleHistorCumul
            ENR_HISTORCUMUL = ""
         END
         W_SauveAidant = W_CleCumul[1,5]
         READ ENR_GAD FROM F.GAD,W_SauveAidant ELSE ENR_GAD=""
         W_NouvCodeAidant = ENR_GAD<60>
         W_SauveEmpl = W_CleCumul[6,4]
         READ ENR_EMPLOYEURS FROM F.EMPLOYEURS,W_SauveEmpl ELSE ENR_EMPLOYEURS=""
         W_NouvCodeEmpl = ENR_EMPLOYEURS<50>
         GOSUB 100
      END

      IF W_SauveEmpl # W_CleCumul[6,4] THEN
         IF W_SauveEmpl # "" THEN
            W_CleHistorCumul = W_NouvCodeAidant:W_DatDebAn:W_SauveAn:W_NouvCodeEmpl
            WRITE ENR_HISTORCUMUL ON F.HISTORCUMUL,W_CleHistorCumul
            ENR_HISTORCUMUL = ""
         END
         W_SauveEmpl = W_CleCumul[6,4]
         READ ENR_EMPLOYEURS FROM F.EMPLOYEURS,W_SauveEmpl ELSE ENR_EMPLOYEURS=""
         W_NouvCodeEmpl = ENR_EMPLOYEURS<50>
      END

   WHILE W_Fini = "FAUX" DO

      IF W_RequeteContrat # "" THEN
         READ ENR_CUMULS FROM F.CUMULS,W_CleCumul ELSE ENR_CUMULS=""

         W_PERIODE=W_CleCumul[10,4]
         IF W_PERIODE<1000 THEN W_PERIODE="20":W_PERIODE ELSE W_PERIODE="19":W_PERIODE
         READ ENR_STATACTAIDE FROM F.STATACTAIDE,W_NouvCodeEmpl:CODEENTITE:W_PERIODE ELSE ENR_STATACTAIDE=""
         W_HEURESSTATACTAIDE=EXTRACT(ENR_CUMULS,8)
         
         D=1
         LOOP
          ActStatActAide=EXTRACT(ENR_STATACTAIDE,1,D)
          UNTIL ActStatActAide="" OR ActStatActAide=CODEACTIVITE DO
           D=D+1
         REPEAT

         IF ActStatActAide="" THEN
          ENR_STATACTAIDE=REPLACE(ENR_STATACTAIDE,1,-1;CODEACTIVITE)
          ENR_STATACTAIDE=REPLACE(ENR_STATACTAIDE,2,-1;W_HEURESSTATACTAIDE)
         END ELSE
          HeuresStatActAide=EXTRACT(ENR_STATACTAIDE,2,D)
          IF HeuresStatActAide="" THEN HeuresStatActAide=0
          HeuresStatActAide=HeuresStatActAide+W_HEURESSTATACTAIDE
          ENR_STATACTAIDE=REPLACE(ENR_STATACTAIDE,2,D;HeuresStatActAide)
         END

         WRITE ENR_STATACTAIDE ON F.STATACTAIDE,W_NouvCodeEmpl:CODEENTITE:W_PERIODE

         GOSUB 200
         GOSUB 400

      END

   REPEAT

RETURN

*********************************************************
*  Lecture et chargement de la table des contrats

100

   * Lecture des contrats de travail
   W_End = "FAUX"
   j=1
   W_Rang = 1
   W_RequeteContrat = ""

   LOOP 
      W_CleContrat = W_NouvCodeAidant:j "R%3"

      READ ENR_CONTRAT FROM F.CONTRAT,W_CleContrat ELSE W_End = "VRAI"
   WHILE W_End = "FAUX" DO
      IF ENR_CONTRAT<1> = "02" THEN
         W_RequeteContrat = REPLACE(W_RequeteContrat,W_Rang,1;W_CleContrat)
         W_RequeteContrat = REPLACE(W_RequeteContrat,W_Rang,2;ENR_CONTRAT<7>)
         W_RequeteContrat = REPLACE(W_RequeteContrat,W_Rang,3;ENR_CONTRAT<8>)
         W_RequeteContrat = REPLACE(W_RequeteContrat,W_Rang,4;ENR_CONTRAT<26>)
         W_RequeteContrat = REPLACE(W_RequeteContrat,W_Rang,5;ENR_CONTRAT<3>)
         W_Rang = W_Rang + 1
      END
      j=j+1
   REPEAT

RETURN

*********************************************************
*  Recherche le contrat actif

200

   W_Mois = W_CleCumul[12,2]
   W_An = W_DatDebAn:W_SauveAn
   W_DatDebPeriode = ICONV("01/":W_Mois:"/":W_An,"D4/")
   W_Mois = W_Mois + 1
   IF W_Mois = "13" THEN
      W_Mois = "01"
      W_An = W_An + 1
   END
   W_DatFinPeriode = ICONV("01/":W_Mois:"/":W_An,"D4/")-1

   j=1 
   W_Fin = "FAUX"

   LOOP
   UNTIL W_RequeteContrat<j,1> = "" OR W_Fin = "VRAI" DO

      IF W_RequeteContrat<j,5> = W_NouvCodeEmpl AND W_RequeteContrat<j,2> <= W_DatFinPeriode THEN
       IF W_RequeteContrat<j,3> = "" THEN
        GOSUB 300         
        W_Fin = "VRAI"
       END ELSE 
        IF W_RequeteContrat<j,3> >= W_DatDebPeriode THEN
         GOSUB 300         
         W_Fin = "VRAI"
        END
       END
      END
      j=j+1
   REPEAT

RETURN

*********************************************************
*  Remplit DETAILCALCUL

300

   W_CleDetailCalcul = W_RequeteContrat<j,1>:W_DatDebAn:W_CleCumul[10,4]

   ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,1;"P")
   ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,6;ENR_CUMULS<9>)
   ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,7;ENR_CUMULS<10>)
   ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,8;"020")	
   ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,9;ENR_CUMULS<10>)	
   ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,10;"3010")
   PRECOMPTEASSEDIC=INT(ENR_CUMULS<10>*301/10000+1/2)	
   ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,11;PRECOMPTEASSEDIC)	
   ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,12;ENR_CUMULS<10>)	
   ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,13;"0")	
   ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,14;"0")	
   ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,15;ENR_CUMULS<11>)
   ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,16;ENR_CUMULS<13>)
   IF ENR_CUMULS<14> # "" THEN
      ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,21;ENR_CUMULS<14>)
   END ELSE
      ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,21;ENR_CUMULS<13>)
   END
   ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,29;"0")
   ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,30;"0")
   ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,31;"0")
   ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,32;"0")
   ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,41;"0")
   ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,42;"0")
   ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,43;"0")
   ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,44;"0")
   ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,45;"0")
   ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,46;"0")
   ENR_DETAILCALCUL = REPLACE(ENR_DETAILCALCUL,47;"0")

   WRITE ENR_DETAILCALCUL ON F.DETAILCALCUL,W_CleDetailCalcul

RETURN

*********************************************************
*  Cumule du fichier HISTORCUMUL

400

   
   ENR_HISTORCUMUL = REPLACE(ENR_HISTORCUMUL,1;ENR_HISTORCUMUL<1> + ENR_CUMULS<8>)
   ENR_HISTORCUMUL = REPLACE(ENR_HISTORCUMUL,2;ENR_HISTORCUMUL<2> + ENR_CUMULS<9>)
   IF ENR_CUMULS<9> > 12000 AND ENR_HISTORCUMUL<3> < W_CleCumul[12,2] THEN
      ENR_HISTORCUMUL = REPLACE(ENR_HISTORCUMUL,3;W_CleCumul[12,2])
   END

   FOR k = 4 TO 7
      IF ENR_HISTORCUMUL<k>="" THEN
         ENR_HISTORCUMUL<k>=0
      END
   NEXT k

   ENR_HISTORCUMUL = REPLACE(ENR_HISTORCUMUL,4;ENR_HISTORCUMUL<4> + ENR_CUMULS<10>)
   ENR_HISTORCUMUL = REPLACE(ENR_HISTORCUMUL,5;ENR_HISTORCUMUL<5> + ENR_CUMULS<10>)
   ENR_HISTORCUMUL = REPLACE(ENR_HISTORCUMUL,6;ENR_HISTORCUMUL<6> + ENR_CUMULS<11>)
   ENR_HISTORCUMUL = REPLACE(ENR_HISTORCUMUL,7;ENR_HISTORCUMUL<7> + ENR_CUMULS<14>)
   ENR_HISTORCUMUL = REPLACE(ENR_HISTORCUMUL,8;"0")
   ENR_HISTORCUMUL = REPLACE(ENR_HISTORCUMUL,10;"0")

   GOSUB 500

RETURN

*********************************************************
*  Finit l'criture du fichier HISTORCUMUL

500

   W_An = W_CleCumul[10,2]
   IF W_An > 20 THEN
      W_An = "19":W_An
   END ELSE
      W_An = "20":W_An
   END
   W_DatDebDADS = ICONV("01/01/":W_An,"D4/")
   W_DatFinDADS = ICONV("31/12/":W_An,"D4/")

   W_Stop = "FAUX"
   j=1

   LOOP

   UNTIL W_RequeteContrat<j,1> = "" OR W_Stop = "VRAI" DO
      IF W_RequeteContrat<j,5> = W_NouvCodeEmpl AND W_RequeteContrat<j,2> <= W_DatFinDADS THEN
       IF W_RequeteContrat<j,3> = "" THEN
        READ ENR_PROFIL FROM F.PROFIL,W_RequeteContrat<j,4> THEN
         W_Count = DCOUNT(ENR_PROFIL<3>,CHAR(253))
         FOR k = 1 TO W_Count
          ENR_HISTORCUMUL = REPLACE(ENR_HISTORCUMUL,15,k;ENR_PROFIL<3,k>)  
         NEXT k       
         W_Stop = "VRAI"
        END
       END ELSE
        IF W_RequeteContrat<j,3> >= W_DatDebDADS THEN  
         READ ENR_PROFIL FROM F.PROFIL,W_RequeteContrat<j,4> THEN
          W_Count = DCOUNT(ENR_PROFIL<3>,CHAR(253))
          FOR k = 1 TO W_Count
           ENR_HISTORCUMUL = REPLACE(ENR_HISTORCUMUL,15,k;ENR_PROFIL<3,k>)  
          NEXT k       
          W_Stop = "VRAI"
         END
        END
       END
      END
      j=j+1
   REPEAT

   W_Count = DCOUNT(ENR_HISTORCUMUL<15>,CHAR(253))
   FOR i = 1 TO W_Count
      READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_HISTORCUMUL<15,i> ELSE ENR_RUBCHARGE=""
      W_CountAtt1 = DCOUNT(ENR_CUMULS<1>,CHAR(253))
      IF ENR_RUBCHARGE<13> # "" THEN
         FOR j = 1 TO W_CountAtt1
            IF ENR_CUMULS<1,j> = "400" THEN
               ENR_HISTORCUMUL<16,i> = ENR_HISTORCUMUL<16,i> + ENR_CUMULS<3,j>
               EXIT
            END
         NEXT j
      END ELSE
         FOR j = 1 TO W_CountAtt1
            IF ENR_CUMULS<1,j> = "401" THEN
               ENR_HISTORCUMUL<16,i> = ENR_HISTORCUMUL<16,i> + ENR_CUMULS<3,j>
               EXIT
            END
         NEXT j
      END
      ENR_HISTORCUMUL = REPLACE(ENR_HISTORCUMUL,17,i;ENR_HISTORCUMUL<16,i>)
      ENR_HISTORCUMUL = REPLACE(ENR_HISTORCUMUL,18,i;"0")
      ENR_HISTORCUMUL = REPLACE(ENR_HISTORCUMUL,19,i;"0")
   NEXT i

RETURN

*************************************************************
* CREATION VOC                                              

600 

	OPEN "","VOC" TO F.VOC ELSE STOP

	ENR_VOC=""
	ENR_VOC=REPLACE(ENR_VOC,1;"F")
	ENR_VOC=REPLACE(ENR_VOC,2;"D:\TRANSFERT\":W_MODULE:"\CUMULS")
	ENR_VOC=REPLACE(ENR_VOC,3;"D:\TRANSFERT\":W_MODULE:"\D_CUMULS")
	WRITE ENR_VOC ON F.VOC,"CUMULS"

	ENR_VOC=""
	ENR_VOC=REPLACE(ENR_VOC,1;"F")
	ENR_VOC=REPLACE(ENR_VOC,2;"D:\TRANSFERT\":W_MODULE:"\GAD")
	ENR_VOC=REPLACE(ENR_VOC,3;"D:\TRANSFERT\":W_MODULE:"\D_GAD")
	WRITE ENR_VOC ON F.VOC,"GAD"

	ENR_VOC=""
	ENR_VOC=REPLACE(ENR_VOC,1;"F")
	ENR_VOC=REPLACE(ENR_VOC,2;"D:\TRANSFERT\":W_MODULE:"\EMPLOYEURS")
	ENR_VOC=REPLACE(ENR_VOC,3;"D:\TRANSFERT\":W_MODULE:"\D_EMPLOYEURS")
	WRITE ENR_VOC ON F.VOC,"EMPLOYEURS"

RETURN

*************************************************************
* SUPPRESSION VOC                                           

700 
	DELETE F.VOC,"CUMULS"
	DELETE F.VOC,"GAD"
	DELETE F.VOC,"EMPLOYEURS"

RETURN

*********************************************************
* RECUPERATION DES PARAMETRES				

800 

	PROCREAD MODULE ELSE STOP
	W_MODULE=FIELD(MODULE," ",2)

RETURN