*PARAMETRES*
*Extraction des contrats de travail*
*Date de dbut (ex : AAAAMM) |6X|TXT|O*
*Date de fin (ex : AAAAMM) |6X|TXT|O*
*Convention collective (2N - facultatif) |2X|TXT|N*
*FIN PARAMETRES*

***************************************************
* PRX - Permet d'extraire les donnes paie et contrat  partir des detailcalculs en prestaire
* Auteur : Clment
* Date : 
* Modifier le 02/08/2010
* Modifier le 13/01/2011 (Mise en place du PRX)
***************************************************

SUBROUTINE ExtractContrats(RETURNVAL,PARAMETRES,W_Sortie)
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"

OPEN "", "DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "", "FUSION" TO F.FUSION ELSE STOP
OPEN "", "CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "", "CIVILAIDE" TO F.CIVILAIDE ELSE STOP
OPEN "", "ETABLISSEMENT" TO F.ETABLISSEMENT ELSE STOP
OPEN "", "CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "", "ELTSPARTEMP" TO F.ELTSPARTEMP ELSE STOP
OPEN "", "TYPEEXO" TO F.TYPEEXO ELSE STOP
OPEN "","GRILLESCC" TO F.GRILLESCC ELSE STOP
OPEN "","FORMEXPAIDANT" TO F.FORMEXPAIDANT ELSE STOP
OPEN "","TABLES" TO F.TABLES ELSE STOP
OPEN "","PROFIL" TO F.PROFIL ELSE STOP
OPEN "","SECTEUR" TO F.SECTEUR ELSE STOP

READ ENR_FORM FROM F.TABLES, "FORMPRO" ELSE ENR_TYPEEXO = ""
READ ENR_DIPL FROM F.TABLES, "DIPLOMES" ELSE ENR_DIPL = ""
READ ENR_QUALIF FROM F.TABLES, "QUALIF" ELSE ENR_QUALIF=""
READ ENR_REGROUPBUDGET FROM F.TABLES, "REGROUPBUDGET" ELSE ENR_REGROUPBUDGET=""
READ ENR_MOTIFCDD FROM F.TABLES,"MOTIFEMBAUCHE" ELSE ENR_MOTIFCDD=""
READ ENR_MOTIFABS FROM F.TABLES,"ABSENCES" ELSE ENR_MOTIFABS=""
READ ENR_FINCONTRAT FROM F.TABLES, "FINCONTRAT" ELSE ENR_FINCONTRAT= ""

W_PerDeb = ""
W_Frequence=""
W_PerFin = ""
W_DateFin=""
W_DernCont = ""
W_Total = 0
W_TotalSal = 0
W_Dipl = ""
W_Form = ""
W_Exp = ""
W_DateTemp = ""
W_NbJours = ""
W_HresRef = ""
W_CoefContrat=""
W_Lissage=""
W_TotalNet=0
W_TotalPayer=0
W_TypePaiement=""
W_MontantChargesPatro=0
IMotifEmbauche=""

*** Rcupration des paramtres
W_PerDeb = PARAMETRES<1>
W_PerFin = PARAMETRES<2>
W_ConvCol = PARAMETRES<3>

*LOOP
*PRINT "Periode debut ? (AAAAMM)"
*INPUT W_PerDeb
*IF W_PerDeb = "" THEN
*	PRINT "Abandon."
*	STOP
*END

W_DateDeb = "01/":W_PerDeb[5,2]:"/":W_PerDeb[1,4]

*IF ICONV(W_DateDeb,"D4/") = "" OR LEN(W_PerDeb) # 6 THEN
*	PRINT "Saisie incorrecte"
*	W_PerDeb = ""
*END 
*WHILE W_PerDeb = ""
*REPEAT

*W_PerFin = ""
*LOOP
*PRINT "Periode fin ? (AAAAMM)"
*INPUT W_PerFin
*IF W_PerFin = "" THEN
*	PRINT "Abandon."
*	STOP
*END

W_DateFin = "01/":W_PerFin[5,2]:"/":W_PerFin[1,4]

*IF ICONV(W_DateFin,"D4/") = "" OR LEN(W_PerFin) # 6 THEN
*	PRINT "Saisie incorrecte"
*	W_PerFin = ""
*END 
*WHILE W_PerFin = ""
*REPEAT

*PRINT "Saisir convention collective non obligatoire (99)"
*INPUT W_ConvCol

W_DateDeb=ICONV(W_DateDeb,"D4/")
W_DateFin = ICONV(W_DateFin,"D4/") + 32
W_DateFin = OCONV(W_DateFin,"D4/")
W_DateFin = ICONV("01":W_DateFin[3,8],"D4/") - 1

Result = ""

IF W_ConvCol="" THEN
	EXECUTE 'SELECT DETAILCALCUL AVEC PeriodeDetailCalcul >= "':W_PerDeb:'" AND <= "':W_PerFin:'" PAR @ID'
END ELSE
	EXECUTE 'SELECT DETAILCALCUL AVEC ConvColContratDetailCalcul  ="':W_ConvCol:'" AND AVEC PeriodeDetailCalcul >= "':W_PerDeb:'" AND <= "':W_PerFin:'" PAR @ID'
END

Result<1> = "Code;Titre aidant;Nom aidant;Prenom aidant;NIR;Secteur;Libelle secteur;Date naissance;Sexe;Employeur;Type contrat;Type salaire;Accord modulation;Type lissage;Type personnel;Nature;Date debut;Date fin;Nb hres total;Salaire total;Categorie;Qualification professionnelle;ETP;Diplome;Formation;Experience;MotifCDD;Dure du travail;Taux horaire/Coef;Mod. diff mois demand;Mod. solde mois demand;Total Net;Total montant  payer;Profil;Adresse;Compl. adresse;Code postal;Commune;Montant charges patro;Type paiement;Regroup. budget.;Date dpart de grille;Avec jours suspension;Coefficient;Situation Familiale; Personne a charge;Age;Motif Sortie;Date anciennet;Anciennet"

W_Fin = "F"
W_DernCont = ""
LOOP
READNEXT W_Cle ELSE W_Fin ="V" 
WHILE W_Fin = "F"
	IF W_Cle[1,8] # W_DernCont THEN
		IF W_DernCont # "" THEN
		   GOSUB 100
		END
		W_DernCont=W_Cle[1,8]
		W_Total = 0
		W_TotalSal = 0
		W_TotalNet=0
		W_TotalPayer=0	
		W_MontantChargesPatro=0		
	END 
	READ ENR FROM F.DETAILCALCUL, W_Cle THEN
		W_Total = W_Total + ENR<6>
		W_TotalSal = W_TotalSal + ENR<7>
		W_TotalNet=W_TotalNet + ENR<16>
		W_TotalPayer=W_TotalPayer + ENR<21>
		
		W_MaxChargepatro=DCOUNT(ENR<14>,CHAR(253))
		FOR IChargepatro = 1 TO W_MaxChargepatro
			W_MontantChargesPatro=W_MontantChargesPatro + ENR<14,IChargepatro>
		NEXT IChargepatro
		
	END
REPEAT
GOSUB 100
WRITE Result ON F.FUSION, "Contrats":W_PerDeb:"-":W_PerFin:".csv"
W_Sortie = "Le fichier":"Contrats":W_PerDeb:"-":W_PerFin:".csv":"a t gnr dans le rpetoire FUSION"
RETURN

100

READ ENR_CONTRAT FROM F.CONTRAT, W_DernCont THEN
READ ENR_CIVILAIDANT FROM F.CIVILAIDANT, W_DernCont[1,5] ELSE ENR_CIVILAIDANT = ""
READ ENR_FORMEXPAIDANT FROM F.FORMEXPAIDANT, W_DernCont[1,5] ELSE ENR_FORMEXPAIDANT = ""
READ ENR_SECTEUR FROM F.SECTEUR, ENR_CIVILAIDANT<31> ELSE ENR_SECTEUR= ""

IF LEN(ENR_CONTRAT<3>)=5 THEN
READ ENR_CIVILAIDE FROM F.CIVILAIDE, ENR_CONTRAT<3> ELSE ENR_CIVILAIDE = ""
W_Employeur=ENR_CONTRAT<3>:" ":ENR_CIVILAIDE<2>:" ":ENR_CIVILAIDE<3>
END ELSE
READ ENR_ETABLISSEMENT FROM F.ETABLISSEMENT, ENR_CONTRAT<3> ELSE ENR_ETABLISSEMENT= ""
W_Employeur=ENR_CONTRAT<3>:" ":ENR_ETABLISSEMENT<1>:" ":ENR_ETABLISSEMENT<2>
END

W_Dipl = ""
W_Form = ""
W_Exp = ""

W_Profil=""
W_PersACharge=""
W_Soc=""
BEGIN CASE
	CASE ENR_CIVILAIDANT<21>="1"
		W_Soc="Mari"
	CASE ENR_CIVILAIDANT<21>="2"
		W_Soc="Clibataire"
	CASE ENR_CIVILAIDANT<21>="3"
		W_Soc="Veuf"
	CASE ENR_CIVILAIDANT<21>="4"
		W_Soc="Divorc"
	CASE ENR_CIVILAIDANT<21>="5"
		W_Soc="Vie maritale"
	CASE ENR_CIVILAIDANT<21>="6"
		W_Soc="Spar"
	CASE ENR_CIVILAIDANT<21>="7"
		W_Soc="PACS"
END CASE

W_PersACharge=DCOUNT(ENR_CIVILAIDANT<22>,CHAR(253))
W_AgeSalarie=INT((DATE()-ENR_CIVILAIDANT<26>)/365)

READ ENR_PROFIL FROM F.PROFIL,ENR_CONTRAT<26>  ELSE ENR_PROFIL = ""
W_Profil=ENR_CONTRAT<26>:" ":ENR_PROFIL<1>
IF ENR_FORMEXPAIDANT<2> # "" THEN
	i = 0
	LOOP
		i = i + 1
	WHILE ENR_DIPL<2,i> # ENR_FORMEXPAIDANT<2> AND ENR_DIPL<2,i> # ""
	REPEAT
	W_Dipl = ENR_DIPL<3,i>	
END
IF ENR_FORMEXPAIDANT<6> # "" THEN
    W_DateTemp = ""
	i = 0
	LOOP
		i = i + 1
	WHILE ENR_FORMEXPAIDANT<6,i> # ""
		IF ENR_FORMEXPAIDANT<5,i> > W_DateTemp THEN
			W_DateTemp = ENR_FORMEXPAIDANT<5,i>
			W_Form = ENR_FORMEXPAIDANT<6,i>
		END
	REPEAT
	i = 0
	LOOP
		i = i + 1
	WHILE ENR_FORM<2,i> # W_Form AND ENR_FORM<2,i> # ""
	REPEAT
	
	W_Form = ENR_FORM<3,i>	
END
W_Exp = ENR_FORMEXPAIDANT<9>
CONVERT CHAR(253) TO "/" IN W_Exp
i = 0
LOOP
i = i + 1
WHILE ENR_CONTRAT<14,i> # "" AND ENR_CONTRAT<15,i> <= W_DateFin
REPEAT
i = i - 1
BEGIN CASE
	CASE ENR_CONTRAT<25,i> = "1"
	W_Hres = INT(((ENR_CONTRAT<24,i>*52)/12) + (1/2))

	CASE ENR_CONTRAT<25,i> = "2"
	W_Hres = INT(((ENR_CONTRAT<24,i>*26)/12) + (1/2))

	CASE ENR_CONTRAT<25,i> = "3"
	W_Hres = INT(ENR_CONTRAT<24,i> + 1/2)

	CASE ENR_CONTRAT<25,i> = "4"
	W_Hres = INT(((ENR_CONTRAT<24,i>)/12) + (1/2))

	CASE 1
	W_Hres = 0
END CASE

W_Hres=W_Hres/100

W_Qualif=ENR_CONTRAT<16,i>

READ ENR_GRILLESCC FROM F.GRILLESCC, ENR_CONTRAT<20,i> THEN
	W_Grille = ENR_GRILLESCC<7>
END ELSE
	W_Grille = ""
END

* Modif Guillaume 12/02/2010 : Ajout de la date de dpart sur la grille
W_DateDepGrille = ENR_CONTRAT<21,i>
W_DateDepGrilleSusp=W_DateDepGrille+(ENR_CONTRAT<70>/100)
W_CoefContrat=INT(ENR_CONTRAT<22,i>/1000)

W_PARAMS=""
W_SORTIE=""
W_PARAMS<1>=W_DernCont
W_PARAMS<2>="0"
W_PARAMS<3>=W_PerFin

CALL CALCCOEFFTXHOR("",W_PARAMS,W_SORTIE)

* sortie 1 = coef, sortie 2 = taux hor...
IF ENR_CONTRAT<8> = "" THEN
	W_datefin = ""
END ELSE
	W_datefin = OCONV(ENR_CONTRAT<8>,"D4/")
END

*mikael 02/09/2010
*gestion motif
W_LibMotif9 = ENR_CONTRAT<9>:" - ":ENR_CONTRAT<10>

CONVERT CHAR(253) TO "/" IN W_LibMotif9

*ATTRIBUT 113
W_LibMotif113=""
W_Max113=DCOUNT(ENR_MOTIFCDD<1>,CHAR(253)) 
	FOR IMotifEmbauche = 1 TO W_Max113
		IF ENR_CONTRAT<113> = ENR_MOTIFCDD<2,IMotifEmbauche> THEN
			W_LibMotif113=ENR_MOTIFCDD<3,IMotifEmbauche> 
		END
	NEXT

W_LibMotif=""
W_LibMotif=W_LibMotif113

*ATTRIBUT 114
ISalRempl = ""
W_LibMotif114=""

W_Max114=""
IF DCOUNT(ENR_CONTRAT<114>,CHAR(253)) # 0 THEN
	W_Max114=DCOUNT(ENR_CONTRAT<114>,CHAR(253)) 
	FOR ISalRempl = 1 TO W_Max114
		READ ENR_CIVILAIDANTREMPL FROM F.CIVILAIDANT, ENR_CONTRAT<114,ISalRempl> THEN
			W_LibMotif114=W_LibMotif114:"-":ENR_CONTRAT<114,ISalRempl>:" ":ENR_CIVILAIDANTREMPL<2>:" ":ENR_CIVILAIDANTREMPL<3>
			IF ENR_CONTRAT<115,ISalRempl> # "" THEN
				IAbs=""
				FOR IAbs=1 TO DCOUNT(ENR_MOTIFABS<2>,CHAR(253))
					IF ENR_CONTRAT<115,ISalRempl>[6,2]=ENR_MOTIFABS<2,IAbs> THEN
						IF W_LibMotif114#"" THEN
							W_LibMotif114=W_LibMotif114:"-":ENR_MOTIFABS<3,IAbs>:" ":OCONV(ENR_CONTRAT<115,ISalRempl>[8,5],"D4/")
						END ELSE
							W_LibMotif114=ENR_MOTIFABS<3,IAbs>:" ":OCONV(ENR_CONTRAT<115,ISalRempl>[8,5],"D4/")
						END
					END
				NEXT
			END
		END
		IF W_LibMotif # "" THEN
			W_LibMotif=W_LibMotif:"/":W_LibMotif114
		END ELSE
			W_LibMotif=W_LibMotif114
		END
	NEXT
END

IF W_LibMotif9 # "" THEN
	W_LibMotif=W_LibMotif:"-":W_LibMotif9
END

W_HresRef = 182000
IF ENR_CONTRAT<7> > W_DateDeb THEN
	IF W_datefin # "" AND ICONV(W_datefin,"D4/") < W_DateFin THEN
		W_NbJours = ICONV(W_datefin,"D4/") - ENR_CONTRAT<7> + 1
		W_HresRef = INT(W_HresRef * W_NbJours /365 + 1/2)
	END ELSE
		W_NbJours = W_DateFin - ENR_CONTRAT<7> + 1
		W_HresRef = INT(W_HresRef * W_NbJours /365 + 1/2)
	END
END ELSE
	IF W_datefin # "" AND ICONV(W_datefin,"D4/") < W_DateFin THEN
		W_NbJours = ICONV(W_datefin,"D4/") - W_DateDeb + 1
		W_HresRef = INT(W_HresRef * W_NbJours /365 + 1/2)
	END ELSE
		W_NbJours = W_DateFin - W_DateDeb + 1
		W_HresRef = INT(W_HresRef * W_NbJours /365 + 1/2)		
	END
END

IF ENR_CONTRAT<5>= "M" THEN
	W_TypeSal = "Mensualise"
END ELSE
	W_TypeSal = "Horaire"
END


IF ENR_CONTRAT<68,i>= "1" THEN
	W_Lissage = "oui"
END ELSE
	W_Lissage = "non"
END
IF ENR_CONTRAT<69,i>= "C" THEN
	W_TypeLissage = "Modul"
END ELSE
	IF ENR_CONTRAT<69,i>= "S" THEN
		W_TypeLissage = "Sans mod"
	END ELSE
		W_TypeLissage = "limit au crdit d heures"
	END
END



W_PourCent = INT(W_Total/W_HresRef * 100 + 1/2)

W_MoisDemande="NON"
W_ModulMois=0
W_SoldeModul = 0

IF W_PerFin<ENR_CONTRAT<76,1> THEN
    W_AttModul = 71
    W_AttRegulModul = 99
END ELSE
    W_AttModul = 76
    W_AttRegulModul = 100
END

i = 0
LOOP
    i = i + 1
WHILE ENR_CONTRAT<W_AttModul,i> # ""
* Modif Guillaume 04/03/2011 : Il y a eu erreur sur la demande, tout ce qui tait demand, c'est :
* - la variation de la modulation sur le dernier mois demand (Priode fin)
* - le solde de la modulation sur le dernier mois demand (Priode fin)

	IF W_PerFin >= ENR_CONTRAT<W_AttModul,i> THEN	
	   W_SoldeModul = W_SoldeModul + ENR_CONTRAT<W_AttModul + 4,i> - ENR_CONTRAT<W_AttRegulModul,i>
	   W_ModulMois = ENR_CONTRAT<W_AttModul + 4,i>
    END
REPEAT

W_Adresse=""
IF ENR_CIVILAIDANT<5><>"" THEN W_Adresse = ENR_CIVILAIDANT<5>:" "
IF ENR_CIVILAIDANT<6><>"" THEN W_Adresse = W_Adresse:ENR_CIVILAIDANT<6>:" "
IF ENR_CIVILAIDANT<7><>"" THEN W_Adresse = W_Adresse:ENR_CIVILAIDANT<7>:" "
IF ENR_CIVILAIDANT<8><>"" THEN W_Adresse = W_Adresse:ENR_CIVILAIDANT<8>
W_Adresse=TRIM(W_Adresse)

IF ENR_CONTRAT<27>="1" THEN
	W_TypePaiement = "Virement Bancaire"
END ELSE
	IF ENR_CONTRAT<27>="2" THEN
		W_TypePaiement = "Chques"
	END ELSE
		W_TypePaiement = "Espces"
	END
END

W_RegroupBudget=""
FOR IQualif = 1 TO DCOUNT(ENR_QUALIF<2>,CHAR(253))
	IF W_Qualif=ENR_QUALIF<2,IQualif> THEN
		FOR IRegroup=1 TO DCOUNT(ENR_REGROUPBUDGET<2>,CHAR(253))
			IF ENR_QUALIF<4,IQualif>=ENR_REGROUPBUDGET<2,IRegroup> THEN
				W_RegroupBudget=ENR_REGROUPBUDGET<3,IRegroup>
				EXIT
			END
		NEXT
		EXIT
	END
NEXT

W_MotifFinContrat =""
W_Max = DCOUNT(ENR_FINCONTRAT<2>,CHAR(253))
FOR iFinContrat = 1 TO W_Max
  IF ENR_FINCONTRAT<2,iFinContrat> = ENR_CONTRAT<49> THEN
    W_MotifFinContrat = ENR_FINCONTRAT<3,iFinContrat>
  END
NEXT iFinContrat

W_Anciennete=""
W_N1=OCONV(DATE(),"D4/")[7,4]
W_M1=OCONV(DATE(),"D4/")[4,2]
IF ENR_CONTRAT<97> THEN
	W_N2=OCONV(ENR_CONTRAT<97>,"D4/")[7,4]
	W_M2=OCONV(ENR_CONTRAT<97>,"D4/")[4,2]
END ELSE
	W_N2=OCONV(ENR_CONTRAT<7>,"D4/")[7,4]
	W_M2=OCONV(ENR_CONTRAT<7>,"D4/")[4,2]
END

W_N=W_N1-W_N2
IF W_M1<W_M2 THEN
	W_N=W_N-1
	W_M=12-W_M2+W_M1
END ELSE
	W_M=W_M1-W_M2
END
W_Anciennete=W_N:" an(s) ":W_M:" mois"

Result<-1>= W_DernCont[1,5]:";":ENR_CIVILAIDANT<1>:";":ENR_CIVILAIDANT<2>:";":ENR_CIVILAIDANT<3>:";":ENR_CIVILAIDANT<17>:" ":ENR_CIVILAIDANT<18>:";":ENR_CIVILAIDANT<31>:";":ENR_SECTEUR<1>:";":OCONV(ENR_CIVILAIDANT<26>,"D4/"):";":ENR_CIVILAIDANT<16>:";":W_Employeur:";":ENR_CONTRAT<4>:";":W_TypeSal:";":W_Lissage:";":W_TypeLissage:";":ENR_CONTRAT<6>:";":ENR_CONTRAT<13>:";":OCONV(ENR_CONTRAT<7>,"D4/"):";":W_datefin:";":OCONV(W_Total,"MR2"):";":OCONV(W_TotalSal,"MR2"):";":W_Grille:";":W_Qualif:";":OCONV(W_PourCent,"MR2"):";":W_Dipl:";":W_Form:";":W_Exp:";":W_LibMotif:";":W_Hres:";":OCONV(W_SORTIE<2>,"MR3"):";":OCONV(W_ModulMois,"MR2"):";":OCONV(W_SoldeModul,"MR2"):";":OCONV(W_TotalNet,"MR2"):";":OCONV(W_TotalPayer,"MR2"):";":W_Profil:";":W_Adresse:";":ENR_CIVILAIDANT<9>:";":ENR_CIVILAIDANT<10>:";":ENR_CIVILAIDANT<11>:";":OCONV(W_MontantChargesPatro,"MR2"):";":W_TypePaiement:";":W_RegroupBudget:";":OCONV(W_DateDepGrille,"D4/"):";":OCONV(W_DateDepGrilleSusp,"D4/"):";":W_CoefContrat:";":W_PersACharge:";":W_Soc:";":W_AgeSalarie:";":W_MotifFinContrat:";":OCONV(ENR_CONTRAT<97>,"D4/"):";":W_Anciennete
END
RETURN