* -------------------------------------------------------------------
* - MOULINETTE DE RECUPERATION DES INFORMATIONS POUR LE REMPLISSAGE -
* - DU FICHIER EXCEL DE CHIFFRAGE DE LA CONVENTION DE BRANCHE		-
* - 26/07/2010 MATTHIEU : Cration									-
* -------------------------------------------------------------------

EXECUTE "SET-DEC ."
EXECUTE "DATE.FORMAT"

* --------------------------
* - OUVERTURE DES FICHIERS -
* --------------------------

OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE STOP
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","RUBSAISIE" TO F.RUBSAISIE ELSE STOP
OPEN "","FUSION" TO F.FUSION ELSE STOP

* -----------------------------
* - DECLARATION DES VARIABLES -
* -----------------------------

W_DateArrete = ICONV("31/12/2009","D4/")
W_Requete = ""
W_CSV = ""
W_LigneCSV = ""
W_CleDetail = ""
W_CleContrat = ""
W_Departement = ""
W_ConvColl = ""
W_Structure = ""
W_RubSaisie = ""
W_CleRubSaisie = ""
W_Rythme = ""
W_Coeff = ""
W_CompteurBrut = 0
W_CompteurHeures = 0
W_CompteurChargesPat = 0
W_CompteurHeuresDim = 0
W_Anciennete = 0
W_TauxActivite = 0
W_SalaireBrutCharge = 0
W_RESREQ = ""
I = 0

* -----------------------
* - DEBUT DU TRAITEMENT -
* -----------------------

* -- Dtermination des rubriques avec champ d'application  4
W_Requete = 'SSELECT RUBSAISIE AVEC 2="4"'

EXECUTE W_Requete
EXECUTE 'SAUVE-LISTE W_RESREQ'
EXECUTE "LISTE W_RESREQ" RETURNING MSGCODE

IF MSGCODE<1> # 209 THEN
	
	SELECT F.RUBSAISIE TO W_RESREQ
	W_FINI = "FAUX"
	
	LOOP
		READNEXT W_CleRubSaisie FROM W_RESREQ ELSE W_FINI="VRAI"
	WHILE W_FINI = "FAUX" DO
		W_RubSaisie<-1> = W_CleRubSaisie
	REPEAT
	
END

EXECUTE 'EFFACER-LISTE W_RESREQ'

* -- On lance la requete gnral du PRMOUL
W_Requete = 'SSELECT CONTRAT AVEC 7 <= "':W_DateArrete:'" AND AVEC 8 >= "':W_DateArrete:'" OR="" AND AVEC 1="05" AND AVEC 65=""'

EXECUTE W_Requete
EXECUTE 'SAUVE-LISTE W_RESREQ' 
EXECUTE "LISTE W_RESREQ" RETURNING MSGCODE

IF MSGCODE<1> # 209 THEN
	
	SELECT F.CONTRAT TO W_RESREQ
	W_FINI = "FAUX"
	
	LOOP
		READNEXT W_CleContrat FROM W_RESREQ ELSE W_FINI="VRAI"
	WHILE W_FINI = "FAUX" DO
	
		READ ENR_CONTRAT FROM F.CONTRAT, W_CleContrat ELSE ENR_CONTRAT = ""
	
		* -- Remise  zro des variables globales au salari
		W_CompteurBrut = 0
		W_CompteurHeures = 0
		W_CompteurChargesPat = 0
		W_CompteurHeuresDim = 0
		
		* -- Rcupration du dpartement
		READ ENR_ASSOCIATION FROM F.ASSOCIATION, ENR_CONTRAT<2> THEN
			W_Departement = ENR_ASSOCIATION<8>[1,2]
			W_Structure = ENR_ASSOCIATION<1>
		END
		
		ENR_ASSOCIATION = ""
		
		* -- Convention Collective du salari
		IF ENR_CONTRAT<1> = "01" THEN
			W_ConvColl = "CCN_83"
		END
		
		IF ENR_CONTRAT<1> = "05" THEN
			W_ConvColl = "CCN_70"
		END
		
		* -- Date de naissance du salari
		READ ENR_CIVILAIDANT FROM F.CIVILAIDANT, W_CleContrat[1,5] THEN
			W_DateNaissance = OCONV(ENR_CIVILAIDANT<26>,"D4/")
		END
		ENR_CIVILAIDANT = ""
		
		* -- Anciennet
		W_Anciennete = 0
		IF ENR_CONTRAT<97> # "" AND ENR_CONTRAT<97> < ENR_CONTRAT<7> THEN
			W_Anciennete = INT((ENR_CONTRAT<7>-ENR_CONTRAT<97>)/365)
		END
		
		* -- Catgorie de personnel
		W_CategoriePerso = ENR_CONTRAT<108,DCOUNT(ENR_CONTRAT<108>,CHAR(253))>
		
		* -- On parcours tout les DETAILCALCUL de l'anne 2009 pour ce contrat
		FOR i = 200901 TO 200912
			
			W_CleDetail = W_CleContrat:i
			ENR_DETAILCALCUL = ""
			
			READ ENR_DETAILCALCUL FROM F.DETAILCALCUL, W_CleDetail THEN
				* -- Brut
				W_CompteurBrut = W_CompteurBrut + (ENR_DETAILCALCUL<7> / 100)
				* -- Heures payes
				W_CompteurHeures = W_CompteurHeures + (ENR_DETAILCALCUL<6> / 100)
				* -- Charges patronales
				FOR j = 1 TO DCOUNT(ENR_DETAILCALCUL<14>,CHAR(253))
					W_CompteurChargesPat = W_CompteurChargesPat + (ENR_DETAILCALCUL<14,j> / 100)
				NEXT j
				* -- Heures dimanches et JF
				FOR j = 1 TO DCOUNT(ENR_DETAILCALCUL<2>,CHAR(253))
					FOR k = 1 TO DCOUNT(W_RubSaisie,CHAR(254))
						IF ENR_DETAILCALCUL<2,j> = W_RubSaisie<k> THEN W_CompteurHeuresDim = W_CompteurHeuresDim + (ENR_DETAILCALCUL<3,j> / 100)
					NEXT k
				NEXT j
			END
			
		NEXT i
		
		* -- Rythme de travail & taux d'activit
		W_TauxActivite = (W_CompteurHeures / 1820) * 100
		IF W_TauxActivite >= 100 THEN
			W_Rythme = "temps plein"
		END ELSE
			W_Rythme = "temps partiel"
		END
		
		* -- Taux d'activit
		IF W_TauxActivite > 100 THEN
			W_TauxActivite = 1
		END ELSE
			* -- Comme la case excel  un format pourcentage il faut lui donner au format dcimal (1 = 100%)
			W_TauxActivite = W_TauxActivite / 100
		END
		
		* -- Coefficient actuel du contrat
		W_Coeff = ENR_CONTRAT<22,DCOUNT(ENR_CONTRAT<22>,CHAR(253))>
		W_Coeff = W_Coeff / 1000
		
		* -- Salaire brut charg
		W_SalaireBrutCharge = W_CompteurBrut + W_CompteurChargesPat
		
		* -- Gnration de la ligne dans le fichier CSV
		W_LigneCSV = W_Departement:";":W_Structure:";":W_ConvColl:";":":":W_CleContrat[1,5]:";":W_DateNaissance:";"
		W_LigneCSV = W_LigneCSV:OCONV(ENR_CONTRAT<7>,"D4/"):";":W_Anciennete:";;":W_CategoriePerso:";"
		W_LigneCSV = W_LigneCSV:"CD":ENR_CONTRAT<4>:";":W_Rythme:";":W_TauxActivite:";":W_Coeff:";"
		W_LigneCSV = W_LigneCSV:W_CompteurBrut:";":W_SalaireBrutCharge:";;;;":W_CompteurHeuresDim:";;;;non"
		
		W_CSV<-1> = W_LigneCSV
		
	REPEAT
	
END

EXECUTE 'EFFACER-LISTE W_RESREQ'

* -- Si on a quelque-chose dans le rsultat du traitement, on enregistre le tout dans le fichier CSV
IF W_CSV # "" THEN
	WRITE W_CSV ON F.FUSION,"InfosConvCollBranche.csv"
	PRINT "Le fichier 'InfosConvCollBranche.csv' a t gnr dans le dossier FUSION de la base de donnes."
END

STOP