*****************************************************
* MOULINETTE DE MISE A JOUR DES CONGES              * 
* CONGES -> CONTRAT                                 *
*                                                   *
* SPECIF ST-LO + OCTEVILLE                          *
*                                                   *
* 06 FEVRIER 2001                   STEPHANE HERVET *
*****************************************************

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

* DEBUT DU TRAITEMENT
EXECUTE 'SSELECT CONGES'
EXECUTE 'SAUVE-LISTE CONGES'
EXECUTE "LISTE CONGES" RETURNING MSGCODE

SELECT F.CONGES TO CONGES
W_REQVIDE=0

PRINTER ON

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

     * LANCEMENT TRAITEMENT
     GOSUB 1       
     
REPEAT

PRINTER OFF

STOP

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

1 *
     * RECUPERATION NOUVEAU CODE AIDE
     READ ENR_EMPL FROM F.EMPL,CLE.CONGES[1,4] ELSE 
	 PRINT "EMPLOYEUR INEXISTANT :":CLE.CONGES[1,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.CONGES[5,5] ELSE 
	 PRINT "SALARIE INEXISTANT :":CLE.CONGES[5,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 <= "12055" AND AVEC 8 >= "12055" 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.CONGES[5,5]:" CHEZ ":CLE.CONGES[1,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 CONGES

4 *

     READ ENRCONGES FROM F.CONGES,CLE.CONGES ELSE ENR_CONGES=""

     TAUX.HORAIRE=INT((ENR_CONTRAT<23,DCOUNT(ENR_CONTRAT<23>,CHAR(253))>/10)+1/2)

     IF ENR_CONTRAT<94>="0" THEN
	 PRINT "ATT 94 DU CONTRAT ":W_NEWCONTRAT:" EST = 0 POUR : ANCIEN ":CLE.CONGES[5,5]:" CHEZ ":CLE.CONGES[1,4]:" NOUVEAU ":W_NEWAIDANT:" CHEZ ":W_NEWAIDE
	 RETURN
     END
 
     IF TAUX.HORAIRE="" OR TAUX.HORAIRE=0 THEN
         PRINT "PAS DE TAUX HORAIRE SUR CONTRAT ":W_NEWCONTRAT
     END

     CP1=EXTRACT(ENRCONGES,1)
     CP2=EXTRACT(ENRCONGES,2)
     CP3=EXTRACT(ENRCONGES,3)
     CP4=EXTRACT(ENRCONGES,4)
     CP5=EXTRACT(ENRCONGES,5)
     CP6=EXTRACT(ENRCONGES,6)
     CP7=EXTRACT(ENRCONGES,7)
     CP.CONSO=INT(CP1/100+1/2)
     ENR_CONTRAT=REPLACE(ENR_CONTRAT,38;CP.CONSO)
     IF CP1<>"0" AND CP2<>"0" THEN
        CP.RESTANT=INT(CP3/(CP2/CP1)+1/2)
     END ELSE
        CP.RESTANT="0"
     END
     ENR_CONTRAT=REPLACE(ENR_CONTRAT,39;CP.RESTANT)
     IF CP1<>"0" THEN
        CP.JOUROUVRABLE=INT(CP2/CP1*100+1/2)
     END ELSE
        CP.JOUROUVRABLE="0"
     END
     ENR_CONTRAT=REPLACE(ENR_CONTRAT,43;CP.JOUROUVRABLE)
     IF TAUX.HORAIRE<>"0" OR TAUX.HORAIRE<>"" THEN 
	VALHEURES=INT(CP.JOUROUVRABLE*100/TAUX.HORAIRE+1/2)
        ENR_CONTRAT=REPLACE(ENR_CONTRAT,42;VALHEURES)
     END ELSE
	ENR_CONTRAT<42>=0
     END
     ENR_CONTRAT=REPLACE(ENR_CONTRAT,44;CP5)
     ENR_CONTRAT=REPLACE(ENR_CONTRAT,46;CP6)
     IF TAUX.HORAIRE<>"0" OR TAUX.HORAIRE<>"" THEN 
	CP.ENCOURSH=INT(CP6*100/TAUX.HORAIRE+1/2)
        ENR_CONTRAT=REPLACE(ENR_CONTRAT,45;CP.ENCOURSH)
     END ELSE
	ENR_CONTRAT<45>=0
     END
     ENR_CONTRAT=REPLACE(ENR_CONTRAT,85;CP4)
     ENR_CONTRAT=REPLACE(ENR_CONTRAT,86;CP7)
     ENR_CONTRAT=REPLACE(ENR_CONTRAT,94;"1")      

     *WRITE ENR_CONTRAT ON F.CONTRAT,W_NEWCONTRAT

RETURN
