SUBROUTINE CalcCoeffTxHor (RETURNVAL,W_Entree,W_Sortie)

************************************************************** 
* Subroutine de calcul des coefficients et taux horaires     *
* juin 2003                                                  *
* Vanessa                                                    * 
************************************************************** 

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE RETURN
OPEN "","CONVENTIONCOL" TO F.CONVENTIONCOL ELSE RETURN
OPEN "","CONTRAT" TO F.CONTRAT ELSE RETURN
OPEN "","ETABLISSEMENT" TO F.ETABLISSEMENT ELSE RETURN
OPEN "","GRILLESCC" TO F.GRILLESCC ELSE RETURN

W_INDICEBASE=0
W_POINTSANC=0
W_COMPLCONV=0

W_CodeContrat=W_Entree<1>
W_NoAvenant=W_Entree<2>
W_PeriodePaie=W_Entree<3>

W_Coeff=0
W_TxHor=0
W_TxHorMaj=0
W_Sortie=""

EXECUTE 'DATE.FORMAT'

READ ENR_CONTRAT FROM F.CONTRAT,W_CodeContrat ELSE ENR_CONTRAT=""
READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL,ENR_CONTRAT<1> ELSE ENR_CONVENTIONCOL=""

GOSUB 10

IF GrilleContrat # "" THEN
   READ ENR_GRILLESCC FROM F.GRILLESCC,GrilleContrat ELSE ENR_GRILLESCC=""
   TypeGrille=ENR_GRILLESCC<5>

   IF W_PeriodePaie <= "200606" AND W_PeriodePaie >= "200307" AND ENR_CONVENTIONCOL<36> = "VRAI" THEN
      W_DEPARTGRILLE=DepartGrilContrat
   END ELSE
      W_DEPARTGRILLE=DepartGrilContrat+INT(ENR_CONTRAT<70>/100)
   END
   W_DEPARTGRILLE=OCONV(W_DEPARTGRILLE,"D4 ")
   W_AncMoins1="FAUX"
   IF W_DEPARTGRILLE[4,2] = "07" AND W_DEPARTGRILLE[1,5] # "01 07" THEN
      W_AncMoins1="VRAI"
   END
   W_DEPARTGRILLE=W_DEPARTGRILLE[7,4]:W_DEPARTGRILLE[4,2]

   IF ENR_CONVENTIONCOL<36> = "VRAI" THEN
      IF W_PeriodePaie < "200607" AND W_PeriodePaie # "200306" THEN
         IF W_PeriodePaie[5,2] < "7" THEN
            W_PeriodePaieBis=W_PeriodePaie[1,4]-1:"07"
            W_NBANNEES=W_PeriodePaieBis-W_DEPARTGRILLE
         END ELSE
            W_PeriodePaieBis=W_PeriodePaie[1,4]:"07"
            W_NBANNEES=W_PeriodePaieBis-W_DEPARTGRILLE
         END
         IF W_AncMoins1="VRAI" THEN
            W_NBANNEES=W_NBANNEES-1
         END
      END ELSE
         W_NBANNEES=W_PeriodePaie-W_DEPARTGRILLE
      END
   END ELSE
      W_NBANNEES=W_PeriodePaie-W_DEPARTGRILLE
   END

   W_NBANNEES=INT(W_NBANNEES/100)
   IF W_NBANNEES<0 THEN W_NBANNEES=0

   IF W_PeriodePaie < "200607" AND W_PeriodePaie # "200306" AND ENR_CONVENTIONCOL<36> = "VRAI" THEN
      IF W_DEPARTGRILLE[5,2]>7 THEN
         W_NBMOIS=12+7-W_DEPARTGRILLE[5,2]
      END ELSE
         W_NBMOIS=7-W_DEPARTGRILLE[5,2]
      END
   END ELSE
      IF W_PeriodePaie[5,2]<W_DEPARTGRILLE[5,2] THEN
         W_NBMOIS=12+W_PeriodePaie[5,2]-W_DEPARTGRILLE[5,2]
      END ELSE
         W_NBMOIS=W_PeriodePaie[5,2]-W_DEPARTGRILLE[5,2]
      END
   END

   W_NBMOIS=INT(W_NBMOIS*100/12+1/2)
   IF W_NBMOIS MATCH "1N" THEN W_NBMOIS="0":W_NBMOIS
   W_NBANNEES=W_NBANNEES:W_NBMOIS
   I=1
   W_FINGRILLE="NON"
   W_TxHor=0
   LOOP
      AncDebGrille=ENR_GRILLESCC<2,I>
      AncFinGrille=ENR_GRILLESCC<3,I>
      ValGrille=ENR_GRILLESCC<4,I>
      IF AncDebGrille="" THEN
         W_FINGRILLE="OUI"
         W_TxHor=ENR_GRILLESCC<4,I-1>
      END
   UNTIL W_FINGRILLE="OUI" DO
      IF AncDebGrille<=W_NBANNEES AND W_NBANNEES<AncFinGrille THEN
         W_TxHor=ValGrille
         W_FINGRILLE="OUI"
      END ELSE
         I=I+1
      END
   REPEAT

   IF ENR_CONTRAT<1>="01" OR ENR_CONTRAT<1>="06" THEN
      I=1
      W_FINGRILLE="NON"
      W_TxHorMaj=0
      LOOP
         AncDebGrille=ENR_GRILLESCC<2,I>
         AncFinGrille=ENR_GRILLESCC<3,I>
         ValGrille=ENR_GRILLESCC<4,I>
         IF AncDebGrille="" THEN
            W_FINGRILLE="OUI"
            W_TxHorMaj=ENR_GRILLESCC<4,I-1>
         END
      UNTIL W_FINGRILLE="OUI" DO
         IF AncDebGrille<=1500 AND 1500<=AncFinGrille THEN
            W_TxHorMaj=ValGrille
            W_FINGRILLE="OUI"
         END ELSE
            I=I+1
         END
      REPEAT
   END ELSE
      W_TxHorMaj=W_TxHor
   END

   W_INDICEBASE=ENR_GRILLESCC<6>
   IF W_INDICEBASE="" THEN W_INDICEBASE=0
   IF W_TxHor # 0 THEN
      IF TypeGrille="C" THEN
         W_Coeff=W_TxHor
         W_POINTSANC=W_TxHor-ENR_GRILLESCC<4,1>
         W_COMPLCONV=ENR_GRILLESCC<4,1>-W_INDICEBASE

         GOSUB 20

         IF ENR_CONTRAT<1> # "02" THEN
            READ ENR_ETABLISSEMENT FROM F.ETABLISSEMENT,ENR_CONTRAT<3> THEN
               HorHebdoEtabl=ENR_ETABLISSEMENT<16>
               W_HORMOISETABL=INT(HorHebdoEtabl*52/12+1/2)
            END
         END

         READ ENR_ASSOCIATION FROM F.ASSOCIATION,ENR_CONTRAT<2> ELSE ENR_ASSOCIATION=""

         *IF ENR_ASSOCIATION<1>="A.S.M.A.D." THEN
         *   W_TxHor=INT((W_TxHor/1000)*PrixPointConvCol*1000/16900+1/2)
         *   W_TxHorMaj=INT((W_TxHorMaj/1000)*PrixPointConvCol*1000/16900+1/2)
         *END ELSE
            W_TxHor=INT((W_TxHor/1000)*PrixPointConvCol*1000/W_HORMOISETABL+1/2)
            W_TxHorMaj=INT((W_TxHorMaj/1000)*PrixPointConvCol*1000/W_HORMOISETABL+1/2)
 	   *END
      END ELSE
         W_Coeff="0"
      END
   END
END ELSE
   W_TxHor=TauxHorContrat
   W_TxHorMaj=TauxHorContrat
END

W_Sortie<1>=W_Coeff
W_Sortie<2>=W_TxHor
W_Sortie<3>=W_TxHorMaj

RETURN

**************************************************************************************
* recherche l'avenant
10

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

IF W_NoAvenant = 0 THEN

   * RECHERCHE DE L'AVENANT A PRENDRE EN COMPTE SUR LA PERIODE 
   W_FINRECH="NON"
   I=DCOUNT(ENR_CONTRAT<15>,CHAR(253))
   W_NoAvenant=I
   LOOP
      IF I=0 THEN W_FINRECH="OUI"
   UNTIL W_FINRECH="OUI" DO
      DatEffetContrat=ENR_CONTRAT<15,I>
      IF DatEffetContrat<=W_PERIODEPAIEFIN THEN
         GrilleContrat=ENR_CONTRAT<20,I>
         DepartGrilContrat=ENR_CONTRAT<21,I>
	   IF DepartGrilContrat = "" THEN
		DepartGrilContrat = ENR_CONTRAT<7>
	   END
         CoefNivContrat=ENR_CONTRAT<22,I>
         TauxHorContrat=ENR_CONTRAT<23,I>
         W_FINRECH="OUI"
         W_NoAvenant=I
      END ELSE
        I=I-1
      END
   REPEAT
END ELSE
   GrilleContrat=ENR_CONTRAT<20,W_NoAvenant>
   DepartGrilContrat=ENR_CONTRAT<21,W_NoAvenant>
   IF DepartGrilContrat = "" THEN
	DepartGrilContrat = ENR_CONTRAT<7>
   END
   CoefNivContrat=ENR_CONTRAT<22,W_NoAvenant>
   TauxHorContrat=ENR_CONTRAT<23,W_NoAvenant>
END

RETURN

**************************************************************************************
* RECHERCHE DU PRIX DU POINT EN VIGUEUR SUR LA PERIODE DE PAIE
20

   PrixPointConvCol=0
   W_FINRECH="NON"
   I=1
   LOOP
   UNTIL W_FINRECH="OUI" DO
       DatePointConvCol=ENR_CONVENTIONCOL<9,I>
       IF DatePointConvCol<=W_PERIODEPAIEFIN THEN
          PrixPointConvCol=ENR_CONVENTIONCOL<8,I>
          W_FINRECH="OUI"
       END ELSE
          I=I+1
       END
   REPEAT

RETURN

