******
* maj du taux horaire dans le contrat de travail
* et calcul des droits aux conges en cours en montant
******
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","GRILLESCC" TO F.GRILLESCC ELSE STOP
OPEN "","PERIODESPAIE" TO F.PERIODESPAIE ELSE STOP
OPEN "","CONVENTIONCOL" TO F.CONVENTIONCOL ELSE STOP
OPEN "","CONSTANTESPAIE" TO F.CONSTANTESPAIE ELSE STOP

READ ENRPERIODESPAIE FROM F.PERIODESPAIE,"1" ELSE STOP
W_PERIODEPAIE=EXTRACT(ENRPERIODESPAIE,1)
IF W_PERIODEPAIE[5,2]="12" THEN
 W_PERIODEPAIEFIN="31 12 ":W_PERIODEPAIE[1,4]
 W_PERIODEPAIEFIN=ICONV(W_PERIODEPAIEFIN,"D4 ")
END ELSE
 W_PERIODEPAIEFIN=W_PERIODEPAIE+1
 W_PERIODEPAIEFIN="01 ":W_PERIODEPAIEFIN[5,2]:" ":W_PERIODEPAIEFIN[1,4]
 W_PERIODEPAIEFIN=ICONV(W_PERIODEPAIEFIN,"D4 ")
 W_PERIODEPAIEFIN=W_PERIODEPAIEFIN-1
END

READ ENR_CONSTANTESPAIE FROM F.CONSTANTESPAIE,"1" ELSE STOP
* RECHERCHE DU PLAFOND SECURITE SOCIALE EN VIGUEUR SUR LA PERIODE
W_FINRECH="NON"
I=1
LOOP
 UNTIL W_FINRECH="OUI" DO
  DatPlafondSecu=EXTRACT(ENR_CONSTANTESPAIE,2,I)
  IF DatPlafondSecu<=W_PERIODEPAIEFIN THEN
   ValPlafondSecu=EXTRACT(ENR_CONSTANTESPAIE,1,I)
   W_FINRECH="OUI"
  END ELSE
   I=I+1
  END
REPEAT

* RECHERCHE DU S.M.I.C. HORAIRE EN VIGUEUR SUR LA PERIODE
W_FINRECH="NON"
I=1
ValSmicHor=0
LOOP
 UNTIL W_FINRECH="OUI" DO
  DatSmicHor=EXTRACT(ENR_CONSTANTESPAIE,4,I)
  IF DatSmicHor<=W_PERIODEPAIEFIN THEN
   ValSmicHor=EXTRACT(ENR_CONSTANTESPAIE,3,I)
   W_FINRECH="OUI"
  END ELSE
   I=I+1
  END
REPEAT
ValSmicHor=ValSmicHor*10

W_DATEDEB="01 ":W_PERIODEPAIE[5,2]:" ":W_PERIODEPAIE[1,4]
W_DATEDEB=ICONV(W_DATEDEB,"D4 ")
EXECUTE 'SELECT CONTRAT AVEC 65 # "O" AND AVEC 1 # "02" AND AVEC 8 = "" OR >= "':W_DATEDEB:'"'

10 READNEXT CLE ELSE STOP

READ ENRCONTRAT FROM F.CONTRAT,CLE ELSE GOTO 10
GrilleContrat=EXTRACT(ENRCONTRAT,20)
DepartGrilContrat=EXTRACT(ENRCONTRAT,21)
JrsSuspContrat=EXTRACT(ENRCONTRAT,70)
ConvColContrat=EXTRACT(ENRCONTRAT,1)
CoefNivContrat=EXTRACT(ENRCONTRAT,22)

* RECHERCHE DU PRIX DU POINT EN VIGUEUR SUR LA PERIODE DE PAIE
READ ENRCONVENTIONCOL FROM F.CONVENTIONCOL,ConvColContrat ELSE STOP
PrixPointConvCol=0
W_FINRECH="NON"
I=1
LOOP
 UNTIL W_FINRECH="OUI" DO
  DatePointConvCol=EXTRACT(ENRCONVENTIONCOL,9,I)
  IF DatePointConvCol<=W_PERIODEPAIEFIN THEN
   PrixPointConvCol=EXTRACT(ENRCONVENTIONCOL,8,I)
   W_FINRECH="OUI"
  END ELSE
   I=I+1
  END
REPEAT

* RECHERCHE DU TAUX HORAIRE
IF GrilleContrat#"" THEN
 READ ENR_GRILLESCC FROM F.GRILLESCC,GrilleContrat ELSE ENR_GRILLESCC=""
 TypeGrille=EXTRACT(ENR_GRILLESCC,5)
 W_DEPARTGRILLE=DepartGrilContrat+JrsSuspContrat
 W_DEPARTGRILLE=OCONV(W_DEPARTGRILLE,"D4 ")
 W_DEPARTGRILLE=W_DEPARTGRILLE[7,4]:W_DEPARTGRILLE[4,2]
 W_NBANNEES=W_PERIODEPAIE-W_DEPARTGRILLE
 W_NBANNEES=INT(W_NBANNEES/100)*100
 I=1
 W_FINGRILLE="NON"
 W_TAUXHOR=0
 LOOP
  AncDebGrille=EXTRACT(ENR_GRILLESCC,2,I)
  AncFinGrille=EXTRACT(ENR_GRILLESCC,3,I)
  ValGrille=EXTRACT(ENR_GRILLESCC,4,I)
  IF AncDebGrille="" THEN W_FINGRILLE="OUI"
  UNTIL W_FINGRILLE="OUI" DO
   IF AncDebGrille<=W_NBANNEES AND W_NBANNEES<AncFinGrille THEN
    W_TAUXHOR=ValGrille
    W_FINGRILLE="OUI"
   END ELSE
    I=I+1
   END
 REPEAT
 IF W_TAUXHOR#0 THEN
  IF TypeGrille="C" THEN
   IF CoefNivContrat#INT(W_TAUXHOR/1000) THEN
    ENRCONTRAT=REPLACE(ENRCONTRAT,22;INT(W_TAUXHOR/1000))
   END
   W_TAUXHOR=INT((W_TAUXHOR/1000)*PrixPointConvCol*10/169+1/2)
   ENRCONTRAT=REPLACE(ENRCONTRAT,23;W_TAUXHOR)
   IF W_TAUXHOR<ValSmicHor THEN W_TAUXHOR=ValSmicHor
   GOSUB 100
   WRITE ENRCONTRAT ON F.CONTRAT,CLE
  END ELSE
   IF CoefNivContrat#W_TAUXHOR THEN
    ENRCONTRAT=REPLACE(ENRCONTRAT,23;W_TAUXHOR)
    IF W_TAUXHOR<ValSmicHor THEN W_TAUXHOR=ValSmicHor
    GOSUB 100
    WRITE ENRCONTRAT ON F.CONTRAT,CLE
   END
  END
 END
END ELSE
 W_TAUXHOR=EXTRACT(ENRCONTRAT,23)
 IF W_TAUXHOR<ValSmicHor THEN W_TAUXHOR=ValSmicHor
 GOSUB 100
 WRITE ENRCONTRAT ON F.CONTRAT,CLE
END
GOTO 10

****** maj att 43 et 46 du fichier CONTRAT
100 JrOuvrHContrat=EXTRACT(ENRCONTRAT,42)
JrOuvrMContrat=INT(JrOuvrHContrat*W_TAUXHOR/1000+1/2)
ENRCONTRAT=REPLACE(ENRCONTRAT,43;JrOuvrMContrat)
CPCoursHContrat=EXTRACT(ENRCONTRAT,45)
CPCoursMContrat=INT(CPCoursHContrat*W_TAUXHOR/1000+1/2)
ENRCONTRAT=REPLACE(ENRCONTRAT,46;CPCoursMContrat)
RETURN


