EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "", "CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "", "DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "", "ABSENCESAIDANT" TO F.ABSENCESAIDANT ELSE STOP
OPEN "", "CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "", "FORMEXPAIDANT" TO F.FORMEXPAIDANT ELSE STOP
OPEN "", "TABLES" TO F.TABLES ELSE STOP

LOOP
PRINT "Type d'activit (P ou M) ?"
INPUT W_TypeAct
W_TypeAct = OCONV(W_TypeAct,"MCU")
WHILE W_TypeAct # "P" AND W_TypeAct # "M"
REPEAT

LOOP
PRINT "Date de fin de priode (JJ/MM/AAAA) ?"
INPUT W_DateFin
W_Date = ICONV(W_DateFin,"D4/")
WHILE W_Date < 10000 OR W_Date > 25000
REPEAT

W_DateDeb = ICONV("01/01/":W_DateFin[7,4],"D4/")
W_MoisFin = W_DateFin[7,4]:W_DateFin[4,2]
W_MoisDeb = W_DateFin[7,4]:"01"
W_DateFin = W_Date


READ ENR_DIPLOMES FROM F.TABLES, "DIPLOMES" ELSE ENR_DIPLOMES = ""

W_Str = 'SELECT CONTRAT AVEC 65 # "O" AND AVEC 7 <= "':W_DateFin:'" AND AVEC 8 >= "':W_DateFin:'" OR = "" AND AVEC 6 = "P" AND AVEC '
IF W_TypeAct = "P" THEN
	W_Str = W_Str:'1 # "02"'
END ELSE
	W_Str = W_Str:'1 = "02"'
END

W_Str = W_Str:' PAR NomPrenomAidantContrat PAR CodeAidant PAR 7'

EXECUTE W_Str
EXECUTE 'SAUVE-LISTE W_Contrats'
EXECUTE 'LISTE W_Contrats' RETURNING MSGCODE
IF MSGCODE<1> # 209 THEN
  SELECT F.CONTRAT TO W_Contrats
  
  W_NbLignes = 999
  PRINTER ON

  W_FinCont = "F"
  W_CodeAidant = ""
  LOOP
	READNEXT W_Cle FROM W_Contrats ELSE W_FinCont = "V"
  WHILE W_FinCont = "F"
     IF W_Cle[1,5] # W_CodeAidant THEN
	IF W_CodeAidant # "" THEN
	   GOSUB 200
	END
	
	W_CodeAidant = W_Cle[1,5]
			

	W_DebutContrat = 99999
	W_Fonction = ""
	W_TypeCont = "CDD"
	W_HresHebdo = 0
	W_SalMois = 0
	W_NbHres = 0
	
	* Chargement tableau absences
	GOSUB 100

     END
     READ ENR_CONTRAT FROM F.CONTRAT, W_Cle THEN
			
	IF INT(ENR_CONTRAT<7>) < W_DebutContrat THEN
	   * On prends la date de dbut du contrat le plus ancien !
	   W_DebutContrat = INT(ENR_CONTRAT<7>)
	END
	
	IF ENR_CONTRAT<4> = "I" THEN
	   W_TypeCont = "CDI"
	END

	W_Fonction = TRIM(ENR_CONTRAT<16>)[1,20]

	* Calcul salaires / nb heures :
	GOSUB 300

	IF (W_FinPer - W_DebPer + 1 - W_NbJrsAbs) # 0 THEN	
	    W_HresHebdo = W_HresHebdo + INT((W_CumulHres* 7) / (W_FinPer - W_DebPer + 1 - W_NbJrsAbs))
	    W_SalMois = W_SalMois + INT(((W_CumulBrut - W_CumulMal)* 30) / (W_FinPer - W_DebPer + 1 - W_NbJrsAbs))
	END ELSE
	    * Rien
	END
	W_NbHres = W_NbHres + W_CumulHres

     END
  REPEAT
  GOSUB 200
END
STOP

100
* Chargement tableau absences
W_TabAbs = ""
W_VMPrevue = ""
W_VMDern = ""

EXECUTE 'SELECT ABSENCESAIDANT AVEC @ID = "':W_CodeAidant:']" AND AVEC NumMotifAidant <= "06" AND AVEC DebAbsAidant <= "':W_DateFin:'" AND AVEC 2 >= "':W_DateDeb:'" OR AVEC @ID = "':W_CodeAidant:']" AND AVEC NumMotifAidant >= "18" PAR DebAbsAidant'
EXECUTE 'SAUVE-LISTE W_Absences'
EXECUTE 'LISTE W_Absences' RETURNING MSGCODE

IF MSGCODE<1> # 209 THEN
  SELECT F.ABSENCESAIDANT TO W_Absences  
   
  W_FinReqAbs = "F"
  LOOP
   READNEXT W_CleAbs FROM W_Absences ELSE W_FinReqAbs = "V"
  WHILE W_FinReqAbs = "F"
	
	IF INT(W_CleAbs[6,2]) >= 18 THEN
	    
	    IF INT(W_CleAbs[8,5]) >= W_DateDeb THEN
		W_VMPrevue = W_CleAbs[8,5]
	    END ELSE
		W_VMDern = W_CleAbs[8,5]
	    END
	END ELSE
	    IF W_CleAbs[6,2] = "02" THEN
		* Mi tps thrapeutique : on ne fait rien
	    END ELSE
	      READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT, W_CleAbs THEN
		W_DebAbs =W_CleAbs[8,5]
		W_FinAbs = ENR_ABSENCESAIDANT<2>
		IF INT(W_DebAbs) < W_DateDeb THEN
			W_DebAbs = W_DateDeb
		END
		IF INT(W_FinAbs) > W_DateFin THEN
			W_FinAbs = W_DateFin
		END
		FOR i = W_DebAbs TO W_FinAbs
			W_TabAbs<i - W_DateDeb + 1> = 1
		NEXT i
	      END
	    END
	END			

  REPEAT
END
RETURN


200
* Traitement donnes aidant
W_FormPrevue = ""
W_FormDern = ""
W_Diplome = ""
READ ENR_FORMEXPAIDANT FROM F.FORMEXPAIDANT, W_CodeAidant THEN
   IF ENR_FORMEXPAIDANT<2> # "" THEN
   	i = 0
   	LOOP
	   i = i + 1
   	WHILE ENR_DIPLOMES<2,i> # ENR_FORMEXPAIDANT<2> AND ENR_DIPLOMES<2,i> # ""
   	REPEAT
   	W_Diplome = ENR_DIPLOMES<3,i>
   END
      


   W_Count = DCOUNT(ENR_FORMEXPAIDANT<5>,CHAR(253))
   
   FOR i = W_Count TO 1 STEP -1
	IF INT(ENR_FORMEXPAIDANT<5,i>) >= W_DateDeb AND W_FormPrevue = "" THEN
		W_FormPrevue = ENR_FORMEXPAIDANT<5,i>
	END
	IF INT(ENR_FORMEXPAIDANT<5,i>) < W_DateDeb OR ENR_FORMEXPAIDANT<5,i> = "" THEN
		W_FormDern = ENR_FORMEXPAIDANT<5,i>
		i = 1
	END
   NEXT i
END

W_Diplome = W_Diplome"L(#5)"

IF INT(W_FormPrevue) # 0 THEN
   W_FormPrevue = OCONV(W_FormPrevue,"D4/")
END ELSE
   W_FormPrevue = ""
END
IF INT(W_FormDern) # 0 THEN
   W_FormDern = OCONV(W_FormDern,"D4/")
END ELSE
   W_FormDern = ""
END


IF INT(W_VMPrevue) # 0 THEN
   W_VMPrevue = OCONV(W_VMPrevue,"D4/")
END ELSE
   W_VMPrevue = ""
END

IF INT(W_VMDern) # 0 THEN
   W_VMDern = OCONV(W_VMDern,"D4/")
END ELSE
   W_VMDern = ""
END


W_DebutContrat = OCONV(W_DebutContrat,"D4/")
W_Fonction =W_Fonction"L(#20)"

W_NbHres = W_NbHres/100
W_SalMois = W_SalMois/100
W_HresHebdo = W_HresHebdo/100

W_NbHres = W_NbHres"R2"
W_HresHebdo = W_HresHebdo"R2"
W_SalMois = W_SalMois"R2"

W_NbHres = W_NbHres"R 6"
W_HresHebdo = W_HresHebdo"R 5"
W_SalMois = W_SalMois"R 7"

READ ENR_CIVILAIDANT FROM F.CIVILAIDANT, W_CodeAidant THEN
	W_NomPrenom = ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>
END
W_NomPrenom = W_NomPrenom"L(#20)"

IF W_NbLignes > 63 THEN
	GOSUB 400
END

PRINT W_NomPrenom:" ":W_Fonction:" ":W_DebutContrat"L 10":" ":SPACE(2):W_Diplome:SPACE(2):" ":W_FormDern"L 10":" ":W_FormPrevue"L 10":" ":W_TypeCont:" ":W_HresHebdo:" ":W_SalMois:" ": W_NbHres:" ":W_VMDern"L 10":" ":W_VMPrevue
W_NbLignes = W_NbLignes + 1

RETURN


300
* traitement donnes contrat
W_CumulBrut = 0
W_CumulHres = 0
W_CumulMal = 0


IF INT(ENR_CONTRAT<7>) > (W_DateDeb + 30) THEN
	W_MoisDeb = OCONV(ENR_CONTRAT<7>,"D4/")
	W_MoisDeb = W_MoisDeb[7,4]:W_MoisDeb[4,2]
END ELSE
	W_MoisDeb = OCONV(W_DateDeb,"D4/")
	W_MoisDeb = W_MoisDeb[7,4]:W_MoisDeb[4,2]
END

FOR W_Mois = W_MoisDeb TO W_MoisFin
   READ ENR_DETAILCALCUL FROM F.DETAILCALCUL, W_Cle:W_Mois THEN
     i = 0
     LOOP
	i = i + 1
     WHILE ENR_DETAILCALCUL<2,i> # ""
	IF ENR_DETAILCALCUL<2,i> = "807" OR ENR_DETAILCALCUL<2,i> = "808" THEN
		W_CumulMal = W_CumulMal + ENR_DETAILCALCUL<5,i>
	END
     REPEAT
     W_CumulBrut = W_CumulBrut + ENR_DETAILCALCUL<7>
     W_CumulHres = W_CumulHres + ENR_DETAILCALCUL<6>	

   END
NEXT W_Mois

IF INT(ENR_CONTRAT<7>) > W_DateDeb THEN 
	W_DebPer = ENR_CONTRAT<7>
END ELSE
	W_DebPer = W_DateDeb
END

IF INT(ENR_CONTRAT<8>) < W_DateFin AND ENR_CONTRAT<8> # "" THEN 
	W_FinPer = ENR_CONTRAT<8>
END ELSE
	W_FinPer = W_DateFin
END

W_NbJrsAbs = 0
FOR i = W_DebPer TO W_FinPer
	W_NbJrsAbs = W_NbJrsAbs + INT(W_TabAbs<i - W_DateDeb + 1>)
NEXT i
RETURN

400
IF W_NbLignes # "999" THEN
	PAGE
END
PRINT "Le ":OCONV(DATE(),"D4/")
IF W_TypeAct = "P" THEN
PRINT SPACE(28):"PERSONNEL D'INTERVENTION ACTIF AU ":OCONV(W_DateFin,"D4/"):" - ACTIVITE PRESTATAIRE"
END ELSE
PRINT SPACE(28):"PERSONNEL D'INTERVENTION ACTIF AU ":OCONV(W_DateFin,"D4/"):" - ACTIVITE MANDATAIRE"
END
PRINT " "
PRINT "Nom du salarie":SPACE(20 - 14 + 1):"Fonction":SPACE(20 - 8 +1):"Date d'":SPACE(10 - 7 + 1):"Formation":SPACE(1):"Derniere":SPACE(10-8 + 1):"Formation":SPACE(10 - 9 + 1):"Heures":SPACE(9 - 6 + 1):"Salaire":SPACE(1):"Volume":SPACE(1):"Derniere":SPACE(10 - 8 + 1):"Visite"
PRINT SPACE(20 + 1 + 20 + 1):"entree":SPACE(10-6+1):"initiale":SPACE(9-8 + 1):"formation":SPACE(10-9+1):"prevue":SPACE(10 - 6 + 1):"hebdo -":SPACE(9-7+1):"mensuel":SPACE(7-7+1):"heures":SPACE(1):"visite":SPACE(10 - 6 + 1):"medicale"
PRINT SPACE(20 + 1 + 20 + 1 + 10 + 1 + 9 + 1):"interne":SPACE(10 - 7 + 1):"en ":W_MoisFin[1,4]:SPACE(10 - 7 + 1):"Type   ":SPACE(9-7 + 1):"moyen":SPACE(7-5+1):"global":SPACE(1):"medicale":SPACE(10-8 + 1):"prevue " 
PRINT " "
W_NbLignes = 6
RETURN  
