***************************************************
* RATTRAPAGE SALAIRE ET REMPLISSAGE DE RATTSALANT *
* 22/06/2001 ALAIN                                *
***************************************************
EXECUTE "DATE.FORMAT"
***************************
* Ouvertures des fichiers *
***************************
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","RATTSALANT" TO F.RATTSALANT ELSE STOP
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "","PERIODESPAIE" TO F.PERIODESPAIE ELSE STOP
OPEN "","RUBSAISIE" TO F.RUBSAISIE ELSE STOP
OPEN "","CONSTANTESPAIE" TO F.CONSTANTESPAIE ELSE STOP
OPEN "","TEMPO" TO F.TEMPO ELSE STOP
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","ETABLISSEMENT" TO F.ETABLISSEMENT ELSE STOP
OPEN "","CONTRATSPREV" TO F.CONTRATSPREV ELSE STOP

******************************
* Recuperation des arguments *
******************************
PROCREAD ARGUMENTS ELSE PRINT "Procread"
W_ASSOC = FIELD(ARGUMENTS,"|",2)
W_CODCONVCOL = FIELD(ARGUMENTS,"|",3)
W_PERIODEDEB = FIELD(ARGUMENTS,"|",4)
W_PERIODEFIN = FIELD(ARGUMENTS,"|",5)
W_TAUXRAT = FIELD(ARGUMENTS,"|",6)
W_PRISECHGPREC = FIELD(ARGUMENTS,"|",7)

* christophe le 05/01/2007
OPEN "","REGRUBSAISIE" TO F.REGRUBSAISIE ELSE STOP
OPEN "","CONVENTIONCOL" TO F.CONVENTIONCOL ELSE STOP
W_TYPERATT = FIELD(ARGUMENTS,"|",8)
*IF W_TYPERATT= "POINT" THEN
*	W_TAUXRAT=W_TAUXRAT*100
*END
W_HeuresBrutes=0

*********************
* TRAITEMENT GLOBAL *
*********************
W_RESULTAT = ""
TEMP = "VRAI"
READ ENR_TEMPO FROM F.TEMPO,"RATSALANT" ELSE TEMP = "FAUX"
IF TEMP = "VRAI" THEN
 DELETE F.TEMPO,"RATSALANT"
END
ENR_TEMPO = ""
READ ENR_PERIODESPAIE FROM F.PERIODESPAIE,"1" ELSE STOP
READ ENR_CONSTANTESPAIE FROM F.CONSTANTESPAIE,"1" ELSE ENR_CONSTANTESPAIE = ""
W_ASSOCIATION=W_ASSOC
DATEURO = ENR_CONSTANTESPAIE<9>
W_PERIODE = ENR_PERIODESPAIE<1>
MOIS = W_PERIODE[5,2]
AN = W_PERIODE[1,4]
ANF = AN
MOISDEB = MOIS
MOISFIN = MOIS + 1
IF MOISDEB > 12 THEN
 MOISDEB = MOISDEB - 12
 AN = AN + 1
END
IF MOISFIN > 12 THEN
 MOISFIN = MOISFIN - 12
 ANF = ANF + 1
END
MOISDEB = MOISDEB "R(%2)"
MOISFIN = MOISFIN "R(%2)"
W_DATEDEB = ICONV("01/":MOISDEB:"/":AN,"D4/")
W_DATEFIN = ICONV("01/":MOISFIN:"/":ANF,"D4/")
W_DATEFIN= W_DATEFIN - 1

EXECUTE 'SSELECT DETAILCALCUL AVEC ConvColContratDetailCalcul = "':W_CODCONVCOL:'" AND AVEC CodAssoContratDetailCalcul = "':W_ASSOC:'" AND AVEC PeriodeDetailCalcul >= "':W_PERIODEDEB:'" AND AVEC PeriodeDetailCalcul <= "':W_PERIODEFIN:'" PAR CodeAidantDetailCalcul PAR PeriodeDetailCalcul'
EXECUTE 'SAUVE-LISTE W_RESULTAT' 
EXECUTE "LISTE W_RESULTAT" RETURNING MSGCODE

IF MSGCODE<1> # 209 THEN
 W_FINI = "FAUX"			
 CLEANC.AIDANT = ""
 CLE.CONTRAT = ""
 CUMULTOT = 0
 SELECT F.DETAILCALCUL TO W_RESULTAT
 LOOP
  READNEXT CLE.DETAILCALCUL FROM W_RESULTAT ELSE W_FINI="VRAI"
  WHILE W_FINI = "FAUX" DO
   READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,CLE.DETAILCALCUL ELSE ENR_DETAILCALCUL = ""
   CLE.AIDANT = CLE.DETAILCALCUL[1,5]
   PERDET = CLE.DETAILCALCUL[9,6]
   MOISDET = PERDET[5,2]
   ANDET = PERDET[1,4]
   W_DATDET = ICONV("01/":MOISDET:"/":ANDET,"D4/")
   
   IF CLE.AIDANT # CLEANC.AIDANT THEN
    READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,CLEANC.AIDANT ELSE ENR_CIVILAIDANT = ""
    K=1
    LOOP
     UNTIL INT(K)>INT(ENR_CIVILAIDANT<41>) DO
      K=K "R%3"
      CLE.CONTRAT=CLEANC.AIDANT:K
      READ ENR_CONTRAT FROM F.CONTRAT,CLE.CONTRAT THEN
       IF (INT(ENR_CONTRAT<7>) <= INT(W_DATEFIN) AND INT(ENR_CONTRAT<8>) >= INT(W_DATEDEB) AND ENR_CONTRAT<1> = W_CODCONVCOL AND ENR_CONTRAT<2> = W_ASSOC AND ENR_CONTRAT<65> # "O") OR (INT(ENR_CONTRAT<7>) <= INT(W_DATEFIN) AND ENR_CONTRAT<8> = "" AND ENR_CONTRAT<1> = W_CODCONVCOL AND ENR_CONTRAT<2> = W_ASSOC AND ENR_CONTRAT<65> # "O") THEN
        IF CUMULTOT # 0 THEN
         READ ENR_RATTSALANT FROM F.RATTSALANT,CLE.CONTRAT ELSE ENR_RATTSALANT = ""
	 IF W_PRISECHGPREC = "1" THEN
          ENR_RATTSALANT<1> = ENR_RATTSALANT<1> + CUMULTOT
	 END ELSE
	  ENR_RATTSALANT<1> = CUMULTOT
	 END
	 WRITE ENR_RATTSALANT TO F.RATTSALANT,CLE.CONTRAT
	 ENR_TEMPO<1> = "VRAI"
	 WRITE ENR_TEMPO TO F.TEMPO,"RATSALANT"
        END
        K=ENR_CIVILAIDANT<41>
       END
      END
      K=K+1
    REPEAT
    CUMULTOT = 0
   END
   
   CLEANC.AIDANT = CLE.AIDANT
   READ ENR_CONTRAT FROM F.CONTRAT,CLE.DETAILCALCUL[1,8] ELSE ENR_CONTRAT = ""
   READ ENR_CONTRATSPREV FROM F.CONTRATSPREV,ENR_CONTRAT<29> ELSE ENR_CONTRATSPREV="" 
   J = 0
   W_TAUHORSMIC = ""
   W_SMIC = "FAUX"
   LOOP
    J = J + 1
    WHILE ENR_CONSTANTESPAIE<4,J> # "" AND W_SMIC = "FAUX" DO
     DATESMIC = OCONV(ENR_CONSTANTESPAIE<4,J>,"D4/")					
     DATESMIC = DATESMIC[7,4]:DATESMIC[4,2]
     IF PERDET => DATESMIC THEN
      W_TAUHORSMIC = ENR_CONSTANTESPAIE<3,J>
      W_TAUHORSMIC = W_TAUHORSMIC * 10
      W_SMIC = "VRAI"
     END
   REPEAT
   IF W_TAUHORSMIC = "" THEN
    W_TAUHORSMIC = ENR_CONSTANTESPAIE<3,(J - 1)>*10
   END
   READ ENR_ETABLISSEMENT FROM F.ETABLISSEMENT,ENR_CONTRAT<3> ELSE ENR_ETABLISSEMENT = ""
   
   * christophe le 05/01/2007
   IF ENR_ETABLISSEMENT<16>  = "" OR ENR_ETABLISSEMENT<16>  = 0 THEN
		W_HORMENSETABL=INT(35*52/12+1/2)
   END ELSE
		W_HORMENSETABL=INT(ENR_ETABLISSEMENT<16>*52/12+1/2)
   END   
   
   IF ENR_ETABLISSEMENT<31> # "" THEN
    IF W_TAUHORSMIC < ENR_ETABLISSEMENT<31>*10 THEN
     W_TAUHORSMIC = ENR_ETABLISSEMENT<31>*10
    END
   END
   CUMUL = 0
   I = 1
   FINTRAIT = "FALSE"
   W_TAUXHOR=""
   W_NOUVTAUHOR=0
   LOOP
    IF ENR_DETAILCALCUL<2,I>="" THEN FINTRAIT = "TRUE"
    UNTIL FINTRAIT = "TRUE" DO
     READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<2,I> ELSE ENR_RUBSAISIE=""
	 
	  READ ENR_REGRUBSAISIE FROM F.REGRUBSAISIE,"RUBRATT" THEN
		W_TrouveRubExclu ="FAUX"
		FOR iRegRub=1 TO DCOUNT(ENR_REGRUBSAISIE,CHAR(254))
			IF ENR_REGRUBSAISIE<iRegRub> = ENR_DETAILCALCUL<2,I> THEN
				W_TrouveRubExclu ="VRAI"
				EXIT
			END
		NEXT iRegRub
		IF W_TrouveRubExclu ="FAUX" THEN
			CUMUL = CUMUL + ENR_DETAILCALCUL<5,I>
		END
	  END ELSE	 
		IF ENR_DETAILCALCUL<2,I>="809" OR ENR_DETAILCALCUL<2,I>="807" OR ENR_DETAILCALCUL<2,I>="808" OR ENR_DETAILCALCUL<2,I>=ENR_CONTRATSPREV<41> OR ENR_DETAILCALCUL<2,I>=ENR_CONTRATSPREV<42> THEN
		 NULL
		END ELSE
		 CUMUL = CUMUL + ENR_DETAILCALCUL<5,I>
		END
	  END
	 
     IF ENR_RUBSAISIE<8>=2 AND W_TAUXHOR="" THEN
      W_POURTAUHOR = ENR_RUBSAISIE<9>
      IF W_POURTAUHOR = 1000000 THEN
       W_TAUHOR = ENR_DETAILCALCUL<4, I>
      END ELSE
       W_TAUHOR = INT((ENR_DETAILCALCUL<4, I> * 1000000) / W_POURTAUHOR + (1/2))
      END
      W_TAUHOR = W_TAUHOR / 10
	  IF W_TYPERATT = "POINT" THEN
	  	*Majoration du taux horaire
		GOSUB 10
		
		W_MajHor=INT((W_TAUXRAT * 10 * PrixPointConvCol / W_HORMENSETABL) + 1/2) 
		W_NOUVTAUHOR = W_TAUHOR + W_MajHor
	
	  END ELSE
		W_NOUVTAUHOR = INT((W_TAUHOR * ( 1 + (W_TAUXRAT/10000)))+(1/2))
	  END
     END
     I=I+1
   REPEAT

   IF W_NOUVTAUHOR > W_TAUHORSMIC THEN
    W_TAUCUM=0
	IF W_TYPERATT = "POINT" THEN

		IF W_TAUHOR <= W_TAUHORSMIC THEN
			W_TAUCUM = W_NOUVTAUHOR - W_TAUHORSMIC
		END ELSE
		 W_TAUCUM=W_MajHor
		END
		CUMULTOT = CUMULTOT + INT(W_TAUCUM / 1000 * ENR_DETAILCALCUL<6> + 1/2)
	END ELSE
		IF W_TAUHOR < W_TAUHORSMIC THEN
		 W_TAUCUM = INT((((W_NOUVTAUHOR / W_TAUHORSMIC ) - 1) * 10000)+(1/2))
		END ELSE
		 W_TAUCUM = W_TAUXRAT
		END
		CUMULTOT = CUMULTOT + INT(((W_TAUCUM/10000) * CUMUL)+(1/2))
	END
   END

***
* CAS CATEGORIE "A" POUR RATTRAPAGE COEEFICIENT DE 238 A 239
*** 
*   W_AVENANT=DCOUNT(ENR_CONTRAT<15>,CHAR(253))
*   W_COEFFICIENT=EXTRACT(ENR_CONTRAT,22,W_AVENANT)
*   IF W_COEFFICIENT="238000" OR W_COEFFICIENT="239000" THEN
*	W_NOUVTAUHOR=INT("23900"*"5115"/W_HORMENSETABL+1/2)
*    IF W_NOUVTAUHOR > W_TAUHORSMIC THEN
*     TAUXCUM=0
*     W_TAUCUM = INT((((W_NOUVTAUHOR / W_TAUHORSMIC ) - 1) * 10000)+(1/2))
*     CUMULTOT = CUMULTOT + INT(((W_TAUCUM/10000) * CUMUL)+(1/2))
*    END
*   END

 REPEAT
END
READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,CLEANC.AIDANT ELSE ENR_CIVILAIDANT = ""
K=1
LOOP
 UNTIL INT(K)>INT(ENR_CIVILAIDANT<41>) DO
  K=K "R%3"
  CLE.CONTRAT=CLEANC.AIDANT:K
  READ ENR_CONTRAT FROM F.CONTRAT,CLE.CONTRAT THEN
   IF (INT(ENR_CONTRAT<7>) <= INT(W_DATEFIN) AND INT(ENR_CONTRAT<8>) >= INT(W_DATEDEB) AND ENR_CONTRAT<1> = W_CODCONVCOL AND ENR_CONTRAT<2> = W_ASSOC AND ENR_CONTRAT<65> # "O") OR (INT(ENR_CONTRAT<7>) <= INT(W_DATEFIN) AND ENR_CONTRAT<8> = "" AND ENR_CONTRAT<1> = W_CODCONVCOL AND ENR_CONTRAT<2> = W_ASSOC AND ENR_CONTRAT<65> # "O") THEN
    IF CUMULTOT # 0 THEN
     READ ENR_RATTSALANT FROM F.RATTSALANT,CLE.CONTRAT ELSE ENR_RATTSALANT = ""
     IF W_PRISECHGPREC = "1" THEN
      ENR_RATTSALANT<1> = ENR_RATTSALANT<1> + CUMULTOT
     END ELSE
      ENR_RATTSALANT<1> = CUMULTOT
     END
     WRITE ENR_RATTSALANT TO F.RATTSALANT,CLE.CONTRAT
     ENR_TEMPO<1> = "VRAI"
     WRITE ENR_TEMPO TO F.TEMPO,"RATSALANT"
    END
    K=ENR_CIVILAIDANT<41>
   END
  END
  K=K+1
REPEAT
EXECUTE 'EFFACER-LISTE W_RESULTAT'
STOP

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

	W_DATDETFIN=W_DATDET+32
	W_DATDETFIN=OCONV(W_DATDETFIN,"D4/")
	W_DATDETFIN=ICONV("01/":W_DATDETFIN[4,7],"D4/")-1

	READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL,ENR_CONTRAT<1> ELSE ENR_CONVENTIONCOL=""
	
   PrixPointConvCol=0
   W_FINRECH="NON"
   Ipt=1
   LOOP
   UNTIL W_FINRECH="OUI" DO
       DatePointConvCol=ENR_CONVENTIONCOL<9,Ipt>
       IF DatePointConvCol<=W_DATDETFIN THEN
          PrixPointConvCol=ENR_CONVENTIONCOL<8,Ipt>
          W_FINRECH="OUI"
       END ELSE
          Ipt=Ipt+1
       END
   REPEAT
RETURN