**********************************************************
*  CALCUL DU SALAIRE MOYEN DE PROSPECTIVE
*  Vanessa
*  OCTOBRE 2002
**********************************************************
* Ouvertures des fichiers

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ABSENCESAIDANT" TO F.ABSENCESAIDANT ELSE PRINT "OUVERTURE ABSENCESAIDANT" ;* en lecture
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE PRINT "OUVERTURE CIVILAIDANT" ;* en lecture
OPEN "","CONSTANTESPAIE" TO F.CONSTANTESPAIE ELSE PRINT "OUVERTURE CONSTANTESPAIE" ;* en lecture
OPEN "","CONTRAT" TO F.CONTRAT ELSE PRINT "OUVERTURE CONTRAT" ;* en lecture
OPEN "","CONVENTIONCOL" TO F.CONVENTIONCOL ELSE PRINT "OUVERTURE CONVENTIONCOL" ;* en lecture
OPEN "","ETABLISSEMENT" TO F.ETABLISSEMENT ELSE PRINT "OUVERTURE ETABLISSEMENT" ;* en lecture
OPEN "","GRILLESCC" TO F.GRILLESCC ELSE PRINT "OUVERTURE GRILLESCC" ;* en lecture
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE PRINT "OUVERTURE DETAILCALCUL" ;* en lecture
OPEN "","PERIODESPAIE" TO F.PERIODESPAIE ELSE PRINT "OUVERTURE PERIODESPAIE" ;* en lecture
OPEN "","SECTEUR" TO F.SECTEUR ELSE PRINT "OUVERTURE SECTEUR" ;* en lecture
OPEN "","TEMPO" TO F.TEMPO ELSE PRINT "OUVERTURE TEMPO" ;* en lecture criture

*********************************************************
* initialisation des variables

W_Mois=""
W_An=""
W_Str=""
W_HreMoyMensAcq=0
W_TabSmic=""
W_TabPourc=""
W_TabPoint=""
W_Rang=1
W_Sauve=""
W_Rupture=""
W_GrilleTri=""
W_GrilleHre=0
W_GrilleSalAcq=0
W_GrilleSalPros=0
W_CumulHre=0
W_CumulSalAcq=0
W_CumulSalPros=0
W_TotalHre=0
W_TotalSalAcq=0
W_TotalSalPros=0
ENR_TEMPO=""
W_Tableau=""
W_Tab=""
W_Augment=0
W_TauxHorTemp=0
W_RequeteContr=""
W_RequeteAbs=""
W_CodeGrille=""
W_AncienneCat=""
*********************************************************
* Recuperation des arguments

PROCREAD ARGUMENTS ELSE STOP
W_Entite=FIELD(ARGUMENTS,"|",2)
W_ConvCol=FIELD(ARGUMENTS,"|",3)
W_SelectDe=FIELD(ARGUMENTS,"|",4)
W_SelectA=FIELD(ARGUMENTS,"|",5)
W_ProsDe=FIELD(ARGUMENTS,"|",6)
W_ProsA=FIELD(ARGUMENTS,"|",7)
W_SmicParam=FIELD(ARGUMENTS,"|",8)
W_Point=FIELD(ARGUMENTS,"|",9)
W_Pourc=FIELD(ARGUMENTS,"|",10)
W_Perso=FIELD(ARGUMENTS,"|",11)
W_Tri=FIELD(ARGUMENTS,"|",12)
W_ZoneTri=FIELD(ARGUMENTS,"|",13)
W_Detail=FIELD(ARGUMENTS,"|",14)
W_GrilOuCat=FIELD(ARGUMENTS,"|",15)
*********************************************************
* PROGRAMME PRINCIPAL

   * efface l'article de TEMPO
   DELETE F.TEMPO,"SALMOYENPROSPECT"

   READ ENR_PERIODESPAIE FROM F.PERIODESPAIE,"1" ELSE ENR_PERIODESPAIE="" 
   W_PERIODEPAIECOURS=ENR_PERIODESPAIE<1>

   W_Mois=ENR_PERIODESPAIE<1>[5,2]+1
   IF W_Mois MATCH "1N" THEN W_Mois = "0":W_Mois
   W_An=ENR_PERIODESPAIE<1>[1,4]
   IF W_Mois="13" THEN
      W_Mois="01"
      W_An=W_An+1
   END
   W_FinPeriodePaie=ICONV("01/":W_Mois:"/":W_An,"D4/")-1

   * dtermination de la valeur du SMIC
   READ ENR_CONSTANTESPAIE FROM F.CONSTANTESPAIE,"1" ELSE ENR_CONSTANTESPAIE="" 

   l=1
   LOOP 
      W_DateSmic = OCONV(ENR_CONSTANTESPAIE<4,l>,"D4/")
      W_DateSmic = W_DateSmic[7,4]:W_DateSmic[4,2]
   WHILE ENR_PERIODESPAIE<1> < W_DateSmic OR W_DateSmic = "" DO
      l=l+1
   REPEAT
   W_Smic=ENR_CONSTANTESPAIE<3,l>*10

   * date de dbut et fin de la priode de prospective
   W_DateDebPros = ICONV("01/":W_ProsDe[5,2]:"/":W_ProsDe[1,4],"D4/")

   W_Mois=W_ProsA[5,2]+1
   IF W_Mois MATCH "1N" THEN W_Mois = "0":W_Mois
   W_An=W_ProsA[1,4]
   IF W_Mois="13" THEN
      W_Mois="01"
      W_An=W_An+1
   END
   W_DateFinPros=ICONV("01/":W_Mois:"/":W_An,"D4/")-1

   * date de dbut et fin de la priode de slection
   W_DateDebSelect = ICONV("01/":W_SelectDe[5,2]:"/":W_SelectDe[1,4],"D4/")

   W_Mois=W_SelectA[5,2]+1
   IF W_Mois MATCH "1N" THEN W_Mois = "0":W_Mois
   W_An=W_SelectA[1,4]
   IF W_Mois="13" THEN
      W_Mois="01"
      W_An=W_An+1
   END
   W_DateFinSelect=ICONV("01/":W_Mois:"/":W_An,"D4/")-1

   * REMPLIT UN TABLEAU AVEC LES VALEURS SMIC
   W_Tableau=W_SmicParam
   GOSUB 200
   W_TabSmic=W_Tab

   * REMPLIT UN TABLEAU AVEC LES VALEURS PRIX DU POINT
   W_Tableau=W_Point
   GOSUB 200
   W_TabPoint=W_Tab

   * REMPLIT UN TABLEAU AVEC LES VALEURS POURCENTAGE MONTANT
   W_Tableau=W_Pourc
   GOSUB 200
   W_TabPourc=W_Tab

   W_Temp = 'SSELECT CONTRAT AVEC 2 = "':W_Entite:'" AND AVEC 65 # "O"'
   IF W_ConvCol # "" THEN
      W_Temp=W_Temp:' AND AVEC 1 = "':W_ConvCol:'"'
   END ELSE
      W_Temp=W_Temp:' AND AVEC 1 # "02"'
   END

   W_Temp=W_Temp:' AND AVEC 7 <= "':W_DateFinPros:'" AND AVEC 8 >= "':W_DateFinPros:'" OR = ""'

   IF W_Perso # "T" THEN
      W_Temp=W_Temp:' AND AVEC 6 = "':W_Perso:'"'
   END 

   IF W_Tri = "S" THEN
      IF W_ZoneTri # "" THEN
         W_Temp=W_Temp:' AND AVEC LibSecteurContrat = "':W_ZoneTri:'"'
      END ELSE
         W_Temp=W_Temp:' PAR LibSecteurContrat'
      END
   END ELSE
      IF W_Tri = "C" THEN
         IF W_ZoneTri # "" THEN
            W_Temp=W_Temp:' AND AVEC LibCommuneAidant = "':W_ZoneTri:'"'
         END ELSE
            W_Temp=W_Temp:' PAR LibCommuneAidant'
         END
      END
   END

   IF W_GrilOuCat="G" THEN
      W_Temp=W_Temp:' PAR DernNumGrilleWContrat PAR NomPrenomAidantContrat'
   END ELSE
	W_Temp=W_Temp:' PAR CcuConvColCc PAR NomPrenomAidantContrat'
   END

   EXECUTE W_Temp
   EXECUTE 'SAUVE-LISTE W_RequeteContr'
   EXECUTE "LISTE W_RequeteContr" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN
      SELECT F.CONTRAT TO W_RequeteContr

      W_Fini = "FAUX"
      LOOP
         READNEXT W_Cle FROM W_RequeteContr ELSE W_Fini = "VRAI"
      WHILE W_Fini = "FAUX" DO
         READ ENR_CONTRAT FROM F.CONTRAT,W_Cle ELSE ENR_CONTRAT=""

         * CALCUL AGE AIDANT
         GOSUB 40

         IF W_OK="VRAI" THEN
            
            * RECHERCHE INFO ETABLISSEMENT
            GOSUB 60

            IF ENR_CONTRAT<5> = "M" THEN
               * CALCUL DU NBRE D'HEURES MOYEN MENSUEL SI CONTRAT MENSUALISE
               GOSUB 10
            END ELSE
               * CALCUL DU NBRE D'HEURES MOYEN MENSUEL SI CONTRAT HORAIRE
               GOSUB 20
            END

            * CALCUL DU SALAIRE MOYEN SUR LA PERIODE EN COURS
            GOSUB 50

            * CALCUL PROSPECTIVE
            GOSUB 70

		IF W_Detail # "S" THEN
            	IF W_Tri = "C" THEN
                  	IF W_Rupture # ENR_CIVILAIDANT<11> AND W_Rupture # "" THEN
	                  	* TOTAL COMMUNE
					IF W_Detail = "L" THEN
      	            		GOSUB 120
					END
            	      END
				W_Rupture=ENR_CIVILAIDANT<11>
	            END ELSE
      	            IF W_Tri = "S" THEN
            	         IF W_Rupture # ENR_CIVILAIDANT<31> AND W_Rupture # "" THEN
                  	      * TOTAL SECTEUR
					IF W_Detail = "L" THEN
	                        	GOSUB 120
					END
	                     END
      	               W_Rupture=ENR_CIVILAIDANT<31>
				END
			END
               ENR_TEMPO<W_Rang,1>=W_Cle[1,5]
               W_NomPrenom=ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>
               IF LEN(W_NomPrenom) > 30 THEN
                  ENR_TEMPO<W_Rang,2>=W_NomPrenom[1,30]
               END ELSE
                  ENR_TEMPO<W_Rang,2>=W_NomPrenom:SPACE(30-LEN(W_NomPrenom))
               END
               ENR_TEMPO<W_Rang,3>=INT(W_HreMoyMensAcq + 1/2)
               ENR_TEMPO<W_Rang,4>=INT(W_SalMoyenMensAcq + 1/2)
               ENR_TEMPO<W_Rang,5>=INT(W_TauxHorAcq + 1/2)
               ENR_TEMPO<W_Rang,6>=INT(W_SalMoyenMensPros + 1/2)
               ENR_TEMPO<W_Rang,7>=INT(W_TauxHorPros + 1/2)
               IF W_Tri # "T" THEN
			IF W_Detail # "G" THEN
	                  ENR_TEMPO<W_Rang,8>=W_Rupture
      	            W_CumulHre=W_CumulHre+INT(W_HreMoyMensAcq + 1/2)
            	      W_CumulSalAcq=W_CumulSalAcq+INT(W_SalMoyenMensAcq + 1/2)*10
                  	W_CumulSalPros=W_CumulSalPros+INT(W_SalMoyenMensPros + 1/2)*10
				IF W_GrilOuCat = "G" THEN
				   	ENR_TEMPO<W_Rang,9>=ENR_CONTRAT<20,DCOUNT(ENR_CONTRAT<15>,CHAR(253))>[3,3]
				END ELSE
					READ ENR_GRILLESCC FROM F.GRILLESCC,ENR_CONTRAT<20,DCOUNT(ENR_CONTRAT<15>,CHAR(253))> THEN
   						ENR_TEMPO<W_Rang,9>=' ':ENR_GRILLESCC<7>:' '
					END ELSE
						ENR_TEMPO<W_Rang,9>='   '
					END
				END
			   END ELSE
				IF W_Tri = "S" THEN
					READ ENR_SECTEUR FROM F.SECTEUR,W_Rupture ELSE ENR_SECTEUR=""
      	            	ENR_TEMPO<W_Rang,8>=ENR_SECTEUR<1>
				END ELSE
      	            	ENR_TEMPO<W_Rang,8>=W_Rupture
				END
			   END
               END
               IF W_GrilOuCat = "G" THEN
			ENR_TEMPO<W_Rang,9>=ENR_CONTRAT<20,DCOUNT(ENR_CONTRAT<15>,CHAR(253))>[3,3]
		   END ELSE
			READ ENR_GRILLESCC FROM F.GRILLESCC,ENR_CONTRAT<20,DCOUNT(ENR_CONTRAT<15>,CHAR(253))> THEN
				ENR_TEMPO<W_Rang,9>=' ':ENR_GRILLESCC<7>:' '
			END ELSE
				ENR_TEMPO<W_Rang,9>='   '
			END
		   END
	
               W_TotalHre = W_TotalHre + INT(W_HreMoyMensAcq + 1/2)
               W_TotalSalAcq = W_TotalSalAcq + INT(W_SalMoyenMensAcq + 1/2)*10
               W_TotalSalPros = W_TotalSalPros + INT(W_SalMoyenMensPros + 1/2)*10

               W_Rang=W_Rang+1

            END ELSE
		   READ ENR_GRILLESCC FROM F.GRILLESCC,ENR_CONTRAT<20,DCOUNT(ENR_CONTRAT<15>,CHAR(253))> ELSE PRINT "GRILLESCC"
		   IF ENR_GRILLESCC<7> # W_AncienneCat THEN
			W_CatDiff = "VRAI"
			W_AncienneCat = ENR_GRILLESCC<7>
                  IF W_Tri = "C" THEN
                     IF W_Rupture # ENR_CIVILAIDANT<11> AND W_Rupture # "" THEN
                        * TOTAL COMMUNE
                        GOSUB 120
		         END ELSE
		   		IF W_GrilleTri # ENR_CONTRAT<20,DCOUNT(ENR_CONTRAT<15>,CHAR(253))>[3,3] THEN
					IF W_GrilleTri # "" THEN
						* TOTAL GRILLE
						GOSUB 140
					END
					W_GrilleTri = ENR_CONTRAT<20,DCOUNT(ENR_CONTRAT<15>,CHAR(253))>[3,3]
					W_CodeGrille = ENR_CONTRAT<20,DCOUNT(ENR_CONTRAT<15>,CHAR(253))>
		   		END
                     END
                     W_Rupture=ENR_CIVILAIDANT<11>
                  END ELSE
                     IF W_Tri = "S" THEN
                        IF W_Rupture # ENR_CIVILAIDANT<31> AND W_Rupture # "" THEN
                           * TOTAL SECTEUR
                           GOSUB 120
			      END ELSE
 		   		   IF W_GrilleTri # ENR_CONTRAT<20,DCOUNT(ENR_CONTRAT<15>,CHAR(253))>[3,3] THEN
					IF W_GrilleTri # "" THEN
						* TOTAL GRILLE
						GOSUB 140
					END
					W_GrilleTri = ENR_CONTRAT<20,DCOUNT(ENR_CONTRAT<15>,CHAR(253))>[3,3]
					W_CodeGrille = ENR_CONTRAT<20,DCOUNT(ENR_CONTRAT<15>,CHAR(253))>
		   		   END
                        END
                        W_Rupture=ENR_CIVILAIDANT<31>
                     END
			END
		   END ELSE
			W_CatDiff = "FAUX"
               END

               IF W_Tri # "T" THEN
                  W_CumulHre=W_CumulHre+INT(W_HreMoyMensAcq + 1/2)
                  W_CumulSalAcq=W_CumulSalAcq+INT(W_SalMoyenMensAcq + 1/2)*10
                  W_CumulSalPros=W_CumulSalPros+INT(W_SalMoyenMensPros + 1/2)*10
		   END ELSE
			IF W_CatDiff = "VRAI" THEN
 		   	   IF W_GrilleTri # ENR_CONTRAT<20,DCOUNT(ENR_CONTRAT<15>,CHAR(253))>[3,3] THEN
				IF W_GrilleTri # "" THEN
					* TOTAL GRILLE
					GOSUB 140
				END
				W_GrilleTri = ENR_CONTRAT<20,DCOUNT(ENR_CONTRAT<15>,CHAR(253))>[3,3]
				W_CodeGrille = ENR_CONTRAT<20,DCOUNT(ENR_CONTRAT<15>,CHAR(253))>			
			   END
		   	END
               END

		   W_GrilleHre = W_GrilleHre + INT(W_HreMoyMensAcq + 1/2)
		   W_GrilleSalAcq = W_GrilleSalAcq + INT(W_SalMoyenMensAcq + 1/2)*10
		   W_GrilleSalPros = W_GrilleSalPros + INT(W_SalMoyenMensPros + 1/2)*10

               W_TotalHre = W_TotalHre + INT(W_HreMoyMensAcq + 1/2)
               W_TotalSalAcq = W_TotalSalAcq + INT(W_SalMoyenMensAcq + 1/2)*10
               W_TotalSalPros = W_TotalSalPros + INT(W_SalMoyenMensPros + 1/2)*10

            END

         END
      REPEAT

      IF ENR_TEMPO<1> # "" THEN
	   IF W_Detail # "G" THEN
		   IF W_Tri = "C" THEN
            	* TOTAL COMMUNE
            	GOSUB 120
        	   END ELSE
            	IF W_Tri = "S" THEN
               		* TOTAL SECTEUR
               		GOSUB 120
	   		END ELSE
				IF W_GrilleTri # "" THEN
					* TOTAL GRILLE
					GOSUB 140
				END
            	END
		   END
	   END
      END ELSE
         IF W_Tri # "T" AND W_ZoneTri # "" AND W_Detail # "G" THEN
            GOSUB 120
         END
      END

	IF W_Detail # "G" THEN
	      * TOTAL GENERAL
      	GOSUB 130
	END ELSE
		GOSUB 700
		CONVERT CHAR(253) TO ';' IN ENR_TEMPO
	END

      WRITE ENR_TEMPO ON F.TEMPO,"SALMOYENPROSPECT"

   END
STOP

*********************************************************
* CALCUL DU NBRE D'HEURES MOYEN MENSUEL SI CONTRAT MENSUALISE

10

   W_Count=DCOUNT(ENR_CONTRAT<24>,CHAR(253))

   BEGIN CASE
      CASE ENR_CONTRAT<25,W_Count> = "1"
         W_HreMoyMensAcq = INT((ENR_CONTRAT<24,W_Count>*52/12) + (1/2))
      CASE ENR_CONTRAT<25,W_Count> = "2"
         W_HreMoyMensAcq = INT((ENR_CONTRAT<24,W_Count>*26/12) + (1/2))
      CASE ENR_CONTRAT<25,W_Count> = "3"
         W_HreMoyMensAcq = INT((ENR_CONTRAT<24,W_Count>) + (1/2))
      CASE ENR_CONTRAT<25,W_Count> = "4"
         W_HreMoyMensAcq = INT((ENR_CONTRAT<24,W_Count>/12) + (1/2))
   END CASE

RETURN

*********************************************************
* CALCUL DU NBRE D'HEURES MOYEN MENSUEL SI CONTRAT HORAIRE

20

   W_CumulBrut=0

   FOR i = W_SelectDe TO W_SelectA

      IF i[5,2]="13" THEN
         i=i[1,4]+1:"01"
      END
      READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_Cle:i ELSE ENR_DETAILCALCUL=""
      W_CumulBrut = W_CumulBrut + ENR_DETAILCALCUL<6>
   NEXT i
   
   W_NbJrs = 0
   IF ENR_CONTRAT<7> > W_DateDebSelect THEN
      IF ENR_CONTRAT<8> # "" AND ENR_CONTRAT<8> < W_DateFinSelect THEN
	 W_NbJrs = ENR_CONTRAT<8> - ENR_CONTRAT<7> + 1
      END ELSE
	 W_NbJrs = W_DateFinSelect - ENR_CONTRAT<7> + 1
      END
   END ELSE
      IF ENR_CONTRAT<8> # "" AND ENR_CONTRAT<8> < W_DateFinSelect THEN
	 W_NbJrs = ENR_CONTRAT<8> - W_DateDebSelect + 1
      END ELSE
	 W_NbJrs = W_DateFinSelect - W_DateDebSelect + 1
      END
   END
			
   W_NbJrsAbs = 0
   GOSUB 30
   W_NbJrs = W_NbJrs - W_NbJrsAbs

   W_HreMoyMensAcq = INT(((W_CumulBrut / W_NbJrs) * 30) + (1/2))

RETURN

*********************************************************
* DETERMINATION DU NOMBRE DE JOURS D'ABSENCE DANS LA PERIODE

30

   W_Str = 'SELECT ABSENCESAIDANT AVEC @ID = "':W_Cle[1,5]:']" AND AVEC DebAbsAidant <= "':W_DateFinSelect:'" AND AVEC 2 >= "':W_DateDebSelect:'" AND AVEC NumMotifAidant <= "06" OR = "12" OR = "13" OR = "17" OR = "22" OR = "23"'

   EXECUTE W_Str
   EXECUTE 'SAUVE-LISTE W_RequeteAbs'
   EXECUTE "LISTE W_RequeteAbs" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.ABSENCESAIDANT TO W_RequeteAbs

      W_End = "FAUX"
      LOOP
         READNEXT W_CleAbs FROM W_RequeteAbs ELSE W_End = "VRAI"
      WHILE W_End = "FAUX" DO
         READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT,W_CleAbs ELSE ENR_ABSENCESAIDANT=""

	 W_NbJrsAbsCours = INT(W_CleAbs[8,5])
	 IF W_NbJrsAbsCours > W_DateDebSelect THEN
	    IF ENR_ABSENCESAIDANT<2> < W_DateFinSelect THEN
	       W_NbJrsAbsCours = ENR_ABSENCESAIDANT<2> - W_NbJrsAbsCours + 1
	    END ELSE
	       W_NbJrsAbsCours = W_DateFinSelect - W_NbJrsAbsCours + 1
	    END
         END ELSE
	    IF ENR_ABSENCESAIDANT<2> < W_DateFinSelect THEN
	       W_NbJrsAbsCours = ENR_ABSENCESAIDANT<2> - W_DateDebSelect + 1
	    END ELSE
	       W_NbJrsAbsCours = W_DateFinSelect - W_DateDebSelect + 1
	    END
	 END
         IF W_CleAbs[6,2] = "03" THEN
	    W_NbJrsAbsCours = INT(W_NbJrsAbsCours/2)
         END
	 W_NbJrsAbs = W_NbJrsAbs + W_NbJrsAbsCours
      REPEAT
   END

RETURN

*********************************************************
* CALCUL AGE AIDANT

40

   W_OK = "FAUX"
   READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_Cle[1,5] ELSE ENR_CIVILAIDANT=""

   W_DateNais=OCONV(ENR_CIVILAIDANT<26>,"D4/")
   W_PeriodeNais=W_DateNais[7,4]+65:W_DateNais[4,2]

   IF W_PeriodeNais >= W_ProsA THEN
      W_OK = "VRAI"
   END ELSE
      W_OK = "FAUX"
   END

RETURN

*********************************************************
* CALCUL DU SALAIRE MOYEN SUR LA PERIODE EN COURS

50

   W_TauxHor=0

   * RECHERCHE DE L'AVENANT A PRENDRE EN COMPTE SUR LA PERIODE 
   W_Periode=W_FinPeriodePaie
   GOSUB 80

   W_PARAMS=""
   W_SORTIE=""
   W_PARAMS<1>=W_Cle
   W_PARAMS<2>=i
   W_PARAMS<3>=ENR_PERIODESPAIE<1>

   CALL CALCCOEFFTXHOR("",W_PARAMS,W_SORTIE)

   W_COEFF=W_SORTIE<1>
   W_TauxHor=W_SORTIE<2>
   W_TAUXHORDIMJF=W_SORTIE<3>

   IF W_TauxHor < W_Smic THEN
      W_TauxHor=W_Smic
   END

   W_TauxHorAcq = W_TauxHor
   W_SalMoyenMensAcq = W_HreMoyMensAcq * W_TauxHorAcq / 1000

RETURN

*********************************************************
* RECHERCHE INFO ETABLISSEMENT

60

   READ ENR_ETABLISSEMENT FROM F.ETABLISSEMENT,ENR_CONTRAT<3> ELSE ENR_ETABLISSEMENT=""

   HorHebdoEtabl=ENR_ETABLISSEMENT<16>
   W_HORMOISETABL=INT(HorHebdoEtabl*52/12+1/2)

   TauxHor35H=ENR_ETABLISSEMENT<31>*10
   IF TauxHor35H="" THEN TauxHor35H=0

   W_Smic=ENR_CONSTANTESPAIE<3,l>*10

   IF W_Smic < TauxHor35H THEN
      W_Smic=TauxHor35H
   END

RETURN

*********************************************************
* CALCUL PROSPECTIVE

70

   W_CumulSalaire=0
   W_NbMoisPros=0
   FOR k = W_ProsDe TO W_ProsA
      IF k[5,2]="13" THEN
         k=k[1,4]+1:"01"
      END
      W_NbMoisPros = W_NbMoisPros + 1

      * date de dbut et fin de la priode traite
      W_DateDeb = ICONV("01/":k[5,2]:"/":k[1,4],"D4/")

      W_Mois=k[5,2]+1
      IF W_Mois MATCH "1N" THEN W_Mois = "0":W_Mois
      W_An=k[1,4]
      IF W_Mois="13" THEN
         W_Mois="01"
         W_An=W_An+1
      END
      W_DateFin=ICONV("01/":W_Mois:"/":W_An,"D4/")-1

      W_TauxHor=0
      W_TauxHorPros=0

      * RECHERCHE DE L'AVENANT A PRENDRE EN COMPTE SUR LA PERIODE 
      W_Periode=W_DateFin
      GOSUB 80
 

      IF ENR_CONTRAT<20,i> # "" THEN
	 W_PERIODEBUTOIR=k
	 W_GRILLE=ENR_CONTRAT<20,i>
         READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL,ENR_CONTRAT<1> ELSE ENR_CONVENTIONCOL=""
	 CcuConvCol=ENR_CONVENTIONCOL<36>
	 W_JOURSSUSPENSION=INT(ENR_CONTRAT<70>/100)
	 W_DateDepGrille=ENR_CONTRAT<21,i>
	 IF CcuConvCol#"VRAI" THEN
	    W_DateDepGrille=W_DateDepGrille+W_JOURSSUSPENSION
	 END ELSE
	    W_DATEANC=W_DateDepGrille
	    GOSUB 300
	    W_DateDepGrille=W_DATEANC+W_JOURSSUSPENSION
 	 END

         W_DateDepGrille=OCONV(W_DateDepGrille,"D4/")
   	 W_AncMoins1="FAUX"
   	 IF W_DateDepGrille[4,2] = "07" AND W_DateDepGrille[1,5] # "01/07" THEN
      	  W_AncMoins1="VRAI"
   	 END
         W_DateDepGrille=W_DateDepGrille[7,4]:W_DateDepGrille[4,2]
         W_NbAnnees=W_PERIODEBUTOIR-W_DateDepGrille
         W_NbAnnees=INT(W_NbAnnees/100)
         IF W_AncMoins1="VRAI" AND CcuConvCol="VRAI" AND W_PERIODEBUTOIR<200607 THEN
            W_NbAnnees=W_NbAnnees-1
         END
         IF W_NbAnnees < 0 THEN W_NbAnnees = 0
         IF W_PERIODEBUTOIR[5,2] < W_DateDepGrille[5,2] THEN
            W_NbMois = 12 + W_PERIODEBUTOIR[5,2]-W_DateDepGrille[5,2]
         END ELSE
            W_NbMois = W_PERIODEBUTOIR[5,2]-W_DateDepGrille[5,2]
         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
         * RECHERCHE DE LA GRILLE 
         READ ENR_GRILLESCC FROM F.GRILLESCC,W_GRILLE ELSE ENR_GRILLESCC=""
         GOSUB 90

         IF W_TauxHor # 0 THEN
            IF ENR_GRILLESCC<5>="C" THEN

               W_Tab=0
               PrixPointConvCol=0
               IF W_TabPoint # "" THEN
                  W_Periode=W_DateFin
                  W_Tab=W_TabPoint
                  W_Var=0
                  * RECHERCHE DU PRIX DU POINT EN VIGUEUR DANS LES PROSPECTIVES
                  GOSUB 110
                  PrixPointConvCol=W_Var
               END
               
               IF PrixPointConvCol = 0 	THEN
                  W_Periode=W_DateFin
                  * RECHERCHE DU PRIX DU POINT EN VIGUEUR DANS LA CCN
                  GOSUB 100
               END

               W_TauxHor=INT((W_TauxHor/1000)*PrixPointConvCol*1000/W_HORMOISETABL+1/2)
            END ELSE

               * RECALCULE LE TAUX HORAIRE EN FONCTION DU POURCENTAGE D'EVOLUTION DES GRILLES EN MONTANT
               IF W_TabPourc # "" THEN
                  W_FINRECH="NON"
                  W_Augment=0
                  j=1
                  LOOP
                  UNTIL W_FINRECH="OUI" OR W_TabPourc<j>="" DO
                     IF W_TabPourc<j,1><=W_DateFin THEN
                        W_Augment=INT((W_TauxHor * W_TabPourc<j,2> / 100)/100 + (1/2))
                        W_TauxHor=W_TauxHor+W_Augment
                        j=j+1
                     END ELSE
                        W_FINRECH="OUI"
                     END
                  REPEAT
               END
            END   
         END

      END ELSE
         W_TauxHor=ENR_CONTRAT<23,i>
      END

      W_TxSmic=0

      IF W_TabSmic # "" THEN
         W_Periode=W_DateFin
         W_Tab=W_TabSmic
         W_Var=0
         * RECHERCHE DU SMIC HORAIRE DANS LES PROSPECTIVES
         GOSUB 110
         W_TxSmic=W_Var*10
      END

      IF W_Smic < W_TxSmic THEN
         W_Smic=W_TxSmic
      END
      IF W_TauxHor < W_Smic THEN
         W_TauxHor=W_Smic
      END

      W_TauxHorPros=W_TauxHor

      * calcule le salaire de la priode
      W_SalPeriode = W_TauxHorPros * W_HreMoyMensAcq 

      * cumule les salaires sur les priodes de prospective
      W_CumulSalaire = W_CumulSalaire + W_SalPeriode
     
   NEXT k

   * CALCUL DU SALAIRE MOYEN MENSUEL ET DU TAUX HORAIRE MOYEN
   W_SalMoyenMensPros = W_CumulSalaire / W_NbMoisPros

   W_TauxHorPros = (INT(W_SalMoyenMensPros/1000 + 1/2) / W_HreMoyMensAcq) * 1000

   W_SalMoyenMensPros = W_SalMoyenMensPros / 1000

RETURN

*********************************************************
* RECHERCHE DE L'AVENANT A PRENDRE EN COMPTE SUR LA PERIODE 

80

   W_FINRECH="NON"
   i=DCOUNT(ENR_CONTRAT<15>,CHAR(253))
   LOOP
      IF i=0 THEN W_FINRECH="OUI"
   UNTIL W_FINRECH="OUI" DO
      IF ENR_CONTRAT<15,i><=W_Periode THEN
         W_FINRECH="OUI"
      END ELSE
        i=i-1
      END
   REPEAT

RETURN

*********************************************************
* RECHERCHE DE LA GRILLE 

90

   i=1
   W_FinGrille="NON"
   W_TauxHor=0
   LOOP
      AncDebGrille=ENR_GRILLESCC<2,i>
      AncFinGrille=ENR_GRILLESCC<3,i>
      ValGrille=ENR_GRILLESCC<4,i>
      IF AncDebGrille="" THEN
       W_TauxHor=ENR_GRILLESCC<4,i-1>
       W_FinGrille="OUI"
      END
   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

RETURN

*********************************************************
* RECHERCHE DU PRIX DU POINT EN VIGUEUR DANS LA CCN

100

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

*********************************************************
* RECHERCHE DE LA VALEUR EN VIGUEUR DANS LES PROSPECTIVES

110

   W_FINRECH="NON"
   j=1
   LOOP
   UNTIL W_FINRECH="OUI" OR W_Tab<j>="" DO
      IF W_Tab<j,1><=W_Periode THEN
         W_Var=W_Tab<j,2>
         j=j+1
      END ELSE
         W_FINRECH="OUI"
      END
   REPEAT

RETURN

*********************************************************
* IMPRIME TOTAL RUPTURE

120
   IF W_Tri = "C" THEN
      W_Nom=W_Rupture
   END ELSE
      READ ENR_SECTEUR FROM F.SECTEUR,W_Rupture ELSE ENR_SECTEUR=""
      W_Nom=ENR_SECTEUR<1>
   END
   
   IF W_Detail = "S" THEN
	GOSUB 140
   END

   ENR_TEMPO<W_Rang,1>=""
   IF LEN(W_Nom) > 30 THEN
      ENR_TEMPO<W_Rang,2>=W_Nom[1,30]
   END ELSE
      ENR_TEMPO<W_Rang,2>=W_Nom:SPACE(30-LEN(W_Nom))
   END
   ENR_TEMPO<W_Rang,3>=W_CumulHre
   ENR_TEMPO<W_Rang,4>=INT(W_CumulSalAcq/10 + 1/2)
   W_TauxHorTemp = W_CumulSalAcq / W_CumulHre
   ENR_TEMPO<W_Rang,5>=INT(W_TauxHorTemp*100 + 1/2)
   ENR_TEMPO<W_Rang,6>=INT(W_CumulSalPros/10 + 1/2)
   W_TauxHorTemp = W_CumulSalPros / W_CumulHre
   ENR_TEMPO<W_Rang,7>=INT(W_TauxHorTemp*100 + 1/2)
   ENR_TEMPO<W_Rang,8>=W_Rupture

   W_CumulHre=0
   W_CumulSalAcq=0
   W_CumulSalPros=0

   W_Rang=W_Rang+1
   W_GrilleTri = ENR_CONTRAT<20,DCOUNT(ENR_CONTRAT<15>,CHAR(253))>[3,3]
   W_CodeGrille = ENR_CONTRAT<20,DCOUNT(ENR_CONTRAT<15>,CHAR(253))>

RETURN

*********************************************************
* IMPRIME TOTAL GENERAL

130

   ENR_TEMPO<W_Rang,1>=""
   ENR_TEMPO<W_Rang,2>="TOTAL GENERAL                 "
   ENR_TEMPO<W_Rang,3>=W_TotalHre
   ENR_TEMPO<W_Rang,4>=INT(W_TotalSalAcq/10 + 1/2)
   W_TauxHorTemp = W_TotalSalAcq / W_TotalHre
   ENR_TEMPO<W_Rang,5>=INT(W_TauxHorTemp*100 + 1/2)
   ENR_TEMPO<W_Rang,6>=INT(W_TotalSalPros/10 + 1/2)
   W_TauxHorTemp = W_TotalSalPros / W_TotalHre
   ENR_TEMPO<W_Rang,7>=INT(W_TauxHorTemp*100 + 1/2)

RETURN

*********************************************************
* IMPRIME TOTAL RUPTURE GRILLE

140
   IF W_Tri = "C" THEN
      W_NomGril=W_Rupture
   END ELSE
      READ ENR_SECTEUR FROM F.SECTEUR,W_Rupture ELSE ENR_SECTEUR=""
      W_NomGril=ENR_SECTEUR<1>
   END

   ENR_TEMPO<W_Rang,1>=""
   IF LEN(W_NomGril) > 30 THEN
      ENR_TEMPO<W_Rang,2>=W_NomGril[1,30]
   END ELSE
      ENR_TEMPO<W_Rang,2>=W_NomGril:SPACE(30-LEN(W_NomGril))
   END
   ENR_TEMPO<W_Rang,3>=W_GrilleHre
   ENR_TEMPO<W_Rang,4>=INT(W_GrilleSalAcq/10 + 1/2)
   W_TauxHorTemp = W_GrilleSalAcq / W_GrilleHre
   ENR_TEMPO<W_Rang,5>=INT(W_TauxHorTemp*100 + 1/2)
   ENR_TEMPO<W_Rang,6>=INT(W_GrilleSalPros/10 + 1/2)
   W_TauxHorTemp = W_GrilleSalPros / W_GrilleHre
   ENR_TEMPO<W_Rang,7>=INT(W_TauxHorTemp*100 + 1/2)
   ENR_TEMPO<W_Rang,8>=W_Rupture
   IF W_GrilOuCat = "G" THEN
      ENR_TEMPO<W_Rang,9>=W_GrilleTri
   END ELSE
	READ ENR_GRILLESCC FROM F.GRILLESCC,W_CodeGrille THEN
	   ENR_TEMPO<W_Rang,9>=' ':ENR_GRILLESCC<7>:' '
	END ELSE
	   ENR_TEMPO<W_Rang,9>='   '
	END
   END

   W_GrilleHre=0
   W_GrilleSalAcq=0
   W_GrilleSalPros=0

   W_Rang=W_Rang+1

RETURN

*********************************************************
* REMPLIT UN TABLEAU AVEC LES VALEURS DE PROSPECTIVE

200

   i=1
   W_Tab=""
   W_TabTemp=FIELD(W_Tableau,"-",1)
   LOOP
   UNTIL W_TabTemp="" DO

      W_Tab<i,1>=FIELD(W_TabTemp," ",1)
      W_Tab<i,2>=FIELD(W_TabTemp," ",2)

      i=i+1
      W_TabTemp=FIELD(W_Tableau,"-",i)
   REPEAT

RETURN
**********
* SIMULATION CLOTURE PAIE JUIN SI APPLICATION CCU
**********
300 IF W_PERIODEPAIECOURS<200407 THEN
 IF k>=200307 AND k<=200406 THEN
  W_JOURSSUSPENSION=0
  W_PERIODEBUTOIR=200307
 END ELSE
  IF k>=200407 AND k<=200506 THEN
   GOSUB 400
   W_JOURSSUSPENSION=0
   W_PERIODEBUTOIR=200407
  END ELSE
   GOSUB 400
   W_JOURSSUSPENSION=0
   GOSUB 500
   IF k>=200507 AND k<=200606 THEN W_PERIODEBUTOIR=200507
  END
 END
END ELSE
 IF W_PERIODEPAIECOURS<200507 THEN
  IF k>=200407 AND k<=200506 THEN
   W_JOURSSUSPENSION=0
   W_PERIODEBUTOIR=200407
  END ELSE
   GOSUB 500
   W_JOURSSUSPENSION=0
   IF k>=200507 AND k<=200606 THEN W_PERIODEBUTOIR=200507
  END
 END ELSE
  IF W_PERIODEPAIECOURS<200607 THEN
   IF k>=200507 AND k<=200606 THEN W_PERIODEBUTOIR=200507
  END
 END
END
RETURN
**********
* SIMULTATION CLOTURE JUIN 2004
**********
400 W_DATEANC=OCONV(W_DATEANC,"D4/")
IF W_GRILLE[3,1] = "1" THEN
 IF W_GRILLE[4,2] = "00" AND ENR_CONTRAT<7> > "12966" THEN
  W_NOUVAN = W_DATEANC[7,4] + 1
  W_DATEANC = W_DATEANC[1,6]:W_NOUVAN
 END ELSE
  IF ENR_CONTRAT<7> > "12966" THEN
   W_NOUVAN = W_DATEANC[7,4] + 2
   W_DATEANC = W_DATEANC[1,6]:W_NOUVAN
  END ELSE
   IF W_GRILLE[4,2] = "00" OR  W_GRILLE[4,2] = "01" OR W_GRILLE[4,2] = "02" OR W_GRILLE[4,2] = "03" THEN
    W_NOUVAN = W_DATEANC[7,4] - 1
    W_DATEANC = W_DATEANC[1,6]:W_NOUVAN
   END
  END
 END
 W_GRILLE = W_GRILLE[1,2]:'2':W_GRILLE[4,2]
END
W_DATEANC=ICONV(W_DATEANC,"D4/")
RETURN
**********
* SIMULATION CLOTURE JUIN 2005
**********
500 W_DATEANC=OCONV(W_DATEANC,"D4/")
IF W_GRILLE[3,1] = "2" THEN
 IF W_GRILLE[4,2] # "00" AND ENR_CONTRAT<7> > "13332" THEN
  W_NOUVAN = W_DATEANC[7,4] + 1
  W_DATEANC = W_DATEANC[1,6]:W_NOUVAN
 END ELSE
  IF ENR_CONTRAT<7> <= "13332" THEN
   IF W_GRILLE[4,2] = "00" OR W_GRILLE[4,2] = "01" OR W_GRILLE[4,2] = "02" OR W_GRILLE[4,2] = "03" THEN
    W_NOUVAN = W_DATEANC[7,4] - 1
    W_DATEANC = W_DATEANC[1,6]:W_NOUVAN
   END
  END
 END
 W_GRILLE = W_GRILLE[1,2]:'3':W_GRILLE[4,2]
END
W_DATEANC=ICONV(W_DATEANC,"D4/")
RETURN

**********
* CRETION FICHIER CSV
**********
700
IPAR = 1

ENR_TEMPO2 = ""
ENR_TEMPO2<1,1> = "Code"
ENR_TEMPO2<1,2> = "Nom prnom"
IF W_GrilOuCat = "G" THEN
   ENR_TEMPO2<1,3> = "Grille"
END ELSE
   ENR_TEMPO2<1,3> = " Cat. "
END
ENR_TEMPO2<1,4> = "Heures mens"
ENR_TEMPO2<1,5> = "Sal moyen mens acquis"
ENR_TEMPO2<1,6> = "Taux hor acquis"
ENR_TEMPO2<1,7> = "Sal moyen mens prosp"
ENR_TEMPO2<1,8> = "Taux hor prosp"
ENR_TEMPO2<1,9> = "Libell tri/selection"

LOOP
WHILE ENR_TEMPO<IPAR> # "" DO
	ENR_TEMPO2<IPAR+1,1> = ENR_TEMPO<IPAR,1>
	ENR_TEMPO2<IPAR+1,2> = ENR_TEMPO<IPAR,2>
	ENR_TEMPO2<IPAR+1,3> = ENR_TEMPO<IPAR,9>
	ENR_TEMPO2<IPAR+1,4> = ENR_TEMPO<IPAR,3>/100
	ENR_TEMPO2<IPAR+1,5> = ENR_TEMPO<IPAR,4>/100
	ENR_TEMPO2<IPAR+1,6> = ENR_TEMPO<IPAR,5>/1000
	ENR_TEMPO2<IPAR+1,7> = ENR_TEMPO<IPAR,6>/100
	ENR_TEMPO2<IPAR+1,8> = ENR_TEMPO<IPAR,7>/1000
	ENR_TEMPO2<IPAR+1,9> = ENR_TEMPO<IPAR,8>
	IPAR = IPAR + 1
REPEAT

ENR_TEMPO = ""
ENR_TEMPO = ENR_TEMPO2

RETURN
