*****************************************************
* MOULINETTE DE MISE A JOUR DES DETAILCALCUL        * 
* CUMULS -> DETAILCALCUL                            *
*                                                   *
* SPECIF ST-LO + OCTEVILLE                          *
*                                                   *
* 08 FEVRIER 2001                   STEPHANE HERVET *
*****************************************************

* OUVERTURE DES FICHIERS
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ARCHIVEBULL" TO F.ARCHIVEBULL ELSE STOP
OPEN "","CUMULS" TO F.CUMULS ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "","EMPLOYEURS" TO F.EMPL ELSE STOP
OPEN "","GAD" TO F.GAD ELSE STOP

W_PERIODETRAIT="0011"

PRINTER ON

0

W_DEBUTMOIS="01/":W_PERIODETRAIT[3,2]:"/":W_PERIODETRAIT[1,2]
W_DEBUTMOIS=ICONV(W_DEBUTMOIS,"D2/")
IF W_PERIODETRAIT[3,2]="12" THEN
    W_PERIODETRAIT2[1,2]=W_PERIODETRAIT[1,2]+1 "R(%2)"
    W_FINMOIS="01/01/":W_PERIODETRAIT2[1,2]
END ELSE 
    W_PERIODETRAIT2=W_PERIODETRAIT+1 "R(%4)"
    W_FINMOIS="01/":W_PERIODETRAIT2[3,2]:"/":W_PERIODETRAIT2[1,2]
END
W_FINMOIS=ICONV(W_FINMOIS,"D2/")-1

PRINT "PERIODE DE TRAITEMENT :":W_PERIODETRAIT
PRINT ""

* DEBUT DU TRAITEMENT
EXECUTE 'SELECT CUMULS AVEC PERIODE = "':W_PERIODETRAIT:'"'
EXECUTE 'SAUVE-LISTE CUMULS'
EXECUTE "LISTE CUMULS" RETURNING MSGCODE

SELECT F.CUMULS TO CUMULS
W_REQVIDE=0


* PARCOURS TOUS LES ARTICLES DE CUMULS
LOOP
     READNEXT CLE.CUMULS FROM CUMULS ELSE W_REQVIDE=1
     UNTIL W_REQVIDE=1 DO

     * LANCEMENT TRAITEMENT
     GOSUB 1       
     
REPEAT

W_PERIODETRAIT=W_PERIODETRAIT+1
IF W_PERIODETRAIT="0012" THEN GOTO 0

PRINTER OFF

STOP

*****************************************************
* RECUP NOUVEAU CODE AIDE

1 *
     * RECUPERATION NOUVEAU CODE AIDE
     READ ENR_EMPL FROM F.EMPL,CLE.CUMULS[6,4] ELSE 
	 PRINT "EMPLOYEUR INEXISTANT :":CLE.CUMULS[6,4]
	 RETURN
     END

     W_NEWAIDE=ENR_EMPL<50>

     GOSUB 2

RETURN

*****************************************************
* RECUP NOUVEAU CODE AIDANT

2 *
     * RECUPERATION NOUVEAU CODE AIDE
     READ ENR_GAD FROM F.GAD,CLE.CUMULS[1,5] ELSE 
	 PRINT "SALARIE INEXISTANT :":CLE.CUMULS[1,5]
	 RETURN
     END

     W_NEWAIDANT=ENR_GAD<60>

     GOSUB 3

RETURN

*****************************************************
* RECUP CONTRAT DU COUPLE (ACTIF AU 01/01/01)

3 *

     EXECUTE 'SSELECT CONTRAT AVEC 0 = "':W_NEWAIDANT:']" AND AVEC 3 = "':W_NEWAIDE:'" AND AVEC 7 <= "':W_FINMOIS:'" AND AVEC 8 >= "':W_DEBUTMOIS:'" OR = "" AND AVEC 65 <> "O"'
     EXECUTE 'SAUVE-LISTE CONTRAT'
     EXECUTE "LISTE CONTRAT" RETURNING MSGCODE
  
     IF MSGCODE<1>="209" THEN 
	 PRINT "PAS DE CONTRAT : ANCIEN ":CLE.CUMULS[1,5]:" CHEZ ":CLE.CUMULS[6,4]:" NOUVEAU ":W_NEWAIDANT:" CHEZ ":W_NEWAIDE
	 RETURN
     END

     SELECT F.CONTRAT TO CONTRAT

     * TEST SI UN SEUL CONTRAT
     READNEXT CLE.CONTRAT FROM CONTRAT THEN W_NEWCONTRAT=CLE.CONTRAT
     READNEXT CLE.CONTRAT FROM CONTRAT THEN
	 PRINT "PLUSIEURS CONTRATS POUR LE COUPLE ":W_NEWAIDANT:" CHEZ ":W_NEWAIDE
	 RETURN
     END

     READ ENR_CONTRAT FROM F.CONTRAT,W_NEWCONTRAT ELSE ENR_CONTRAT=""

     GOSUB 4

RETURN

*****************************************************
* TRAITEMENT MAJ DES CUMULS

4 *

     READ ENR_CUMULS FROM F.CUMULS,CLE.CUMULS ELSE ENR_CUMULS=""
 
     READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_NEWCONTRAT:"20":W_PERIODETRAIT ELSE ENR_DETAILCALCUL=""

     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_NEWCONTRAT:"20":W_PERIODETRAIT
*    DELETE F.ARCHIVEBULL,W_NEWCONTRAT:"20":W_PERIODETRAIT
RETURN
