* Permet d'extraire les donnes paie et contrat
*  partir des detailcalculs en prestaire
* modification  02/08/2010

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=""


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. mois demand;Mod. dernier mois;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"
STOP

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
i = 0
LOOP
i = i + 1
WHILE ENR_CONTRAT<76,i> # ""
	* Modif Greg - 10/01/11 - Le W_SoldeModul donnait le solde du dernier mois
	* de paie trait. W_ModulMois permettra maintenant d'avoir le solde  la fin
	* de la priode entre en paramtre.
	* Si la priode se termine sur l'anne de modulation en cours, on travaille
	* sur le suivi de contrat en cours.
	* Si la priode se termine sur l'anne de modulation prcdente, on travaille
	* sur le suivi de contrat prcdent.	
	* Sinon, on ne calcule pas de solde. Il y a aura dans le fichier uniquement le
	* solde du dernier mois de paie trait pour le contrat.
	IF W_PerFin<ENR_CONTRAT<76,1> THEN
		* On fait en sorte de ne pas lancer la seconde boucle si on a dj
		* calcul le solde.
		IF W_MoisDemande="NON" THEN
			IF W_PerFin>=ENR_CONTRAT<71,1> THEN
				j=0
				LOOP
					j=j+1
				WHILE ENR_CONTRAT<71,j><>""
					IF W_MoisDemande="NON" THEN
						W_ModulMois=W_ModulMois+ENR_CONTRAT<75,j> - ENR_CONTRAT<99,j>
						IF ENR_CONTRAT<71,j>=W_PerFin THEN
							W_MoisDemande="OUI"
							* On force la sortie de la boucle.
							j=999
						END
					END				
				REPEAT
			END
		END
	END ELSE
		IF W_MoisDemande="NON" THEN
			W_ModulMois=W_ModulMois+ENR_CONTRAT<80,i> - ENR_CONTRAT<100,i>
			IF ENR_CONTRAT<76,i>=W_PerFin THEN W_MoisDemande="OUI"
		END
	END
	* Fin modif Greg - 10/01/11
	W_SoldeModul = W_SoldeModul + ENR_CONTRAT<80,i> - ENR_CONTRAT<100,i>
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