**********************************************************
*  Cotisation automatique  0, si  0 sur exercice prcdent
*DA8012-01
*  JC
*  Fvrier 2008
**********************************************************


*Ouverture des fichiers

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","FUSION" TO F.FUSION ELSE STOP

*EXECUTE 'SELECT CIVILAIDANT8>"14656"'
EXECUTE ' SELECT CONTRAT AVEC 1#"02" AND AVEC 65="" AND AVEC 8>"14660" OR  AVEC 1#"02" AND AVEC 65="" AND AVEC 8=""  PAR 0 '

W_FIN=0
Result = ""
W_CptaCharge=0
W_Type=""
W_CptHommeC=0
W_CptHomme=0
W_CptaFemmeC=0
W_CptaFemme=0
W_CptAgeC=0
W_CptAge=0
W_CptEnfant0C=0
W_CptEnfant1C=0
W_CptEnfant2C=0
W_CptEnfant3C=0
W_CptEnfant0=0
W_CptEnfant1=0
W_CptEnfant2=0
W_CptEnfant3=0
W_CptEnfantM0C=0
W_CptEnfantM1C=0
W_CptEnfantM2C=0
W_CptEnfantM3C=0
W_CptEnfantM0=0
W_CptEnfantM1=0
W_CptEnfantM2=0
W_CptEnfantM3=0

W_AgeMoyen=0
W_AgeMoyenC=0

w_DateJour="15/02/2008"
W_CodeAidant=""

LOOP
READNEXT CLE ELSE W_FIN=1
UNTIL W_FIN=1 DO
*Vrification si l'aidant a plusieurs contrat. Ai ce possible?
			IF CLE[1,5]<>W_CodeAidant  THEN 
				READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,CLE[1,5] THEN
				W_CodeAidant=CLE[1,5]
					GOSUB 100
					GOSUB 200
					GOSUB 300
					GOSUB 400
				END
			END
REPEAT

	Result<1>=";Collgue Cadre;Collgue non Cadre"
	Result<2>="Nombre de salaris;":W_CptaFemmeC+W_CptHommeC:";":W_CptaFemme+W_CptHomme
	Result<3>="  -dont femmes;":W_CptaFemmeC:";":W_CptaFemme
	Result<4>="  -dont hommes;":W_CptHommeC:";":W_CptHomme
	IF (W_CptaFemmeC+W_CptHommeC)=0 THEN
		W_CptaFemmeC=1
	END ELSE
		IF (W_CptaFemme+W_CptHomme)=0 THEN
			W_CptaFemme=1
		END
	END
	Result<5>="Age moyen des salaris;":INT(W_AgeMoyenC/(W_CptaFemmeC+W_CptHommeC)+1/2):";":INT(W_AgeMoyen/(W_CptaFemme+W_CptHomme)+1/2)
	Result<6>="Clibataires, veufs, divorcs, sans enfant  charge;":W_CptEnfant0C:";":W_CptEnfant0
	Result<7>="Clibataires, veufs, divorcs, avec 1 enfant  charge;":W_CptEnfant1C:";":W_CptEnfant1
	Result<8>="Clibataires, veufs, divorcs, avec 2 enfant  charge;":W_CptEnfant2C:";":W_CptEnfant2
	Result<9>="Clibataires, veufs, divorcs, avec 3 enfant  charge et +;":W_CptEnfant3C:";":W_CptEnfant3
	Result<10>="Maris, union libre, sans enfant  charge;":W_CptEnfantM0C:";":W_CptEnfantM0
	Result<11>="Maris, union libre, avec 1 enfant  charge;":W_CptEnfantM1C:";":W_CptEnfantM1
	Result<12>="Maris, union libre, avec 2 enfant  charge;":W_CptEnfantM2C:";":W_CptEnfantM2
	Result<13>="Maris, union libre, avec 3 enfant  charge et +;":W_CptEnfantM3C:";":W_CptEnfantM3

	WRITE Result ON F.FUSION, "ComplementaireSante.csv"
	
STOP

*******************
*Statut salarie
*******************
100

W_Type="NC"
	READ ENR_CONTRAT FROM F.CONTRAT, CLE THEN
		IF ENR_CONTRAT<17>[1,2]=37 THEN
			W_Type="C"
		END
	END
RETURN

*******************
*Calcul Nbr Homme et de Femme
*******************
200
	IF ENR_CIVILAIDANT<16>= "M" THEN
		IF W_Type="C" THEN
			W_CptHommeC=W_CptHommeC + 1
		END ELSE
			W_CptHomme=W_CptHomme + 1
		END
	END ELSE
		IF W_Type="C" THEN
			W_CptaFemmeC=W_CptaFemmeC + 1
		END ELSE
			W_CptaFemme=W_CptaFemme + 1
		END
	END
RETURN


*******************
*Calcul Age moyen
*******************
300
	W_Age=""
	W_AgeC=""
	W_Age=w_DateJour[7,4]-OCONV(ENR_CIVILAIDANT<26>,"D4/")[7,4]
	W_AgeC=w_DateJour[7,4]-OCONV(ENR_CIVILAIDANT<26>,"D4/")[7,4]
	IF OCONV(ENR_CIVILAIDANT<26>,"D4/")[4,2] > w_DateJour[4,2] THEN
		*IF W_Type="C" THEN
			W_AgeC=W_AgeC-1
		*END ELSE
			W_Age=W_Age-1
		*END
	END ELSE
		IF OCONV(ENR_CIVILAIDANT<26>,"D4/")[4,2] = w_DateJour[4,2] THEN
			IF OCONV(ENR_CIVILAIDANT<26>,"D4/")[1,2] > w_DateJour[1,2] THEN
				*IF W_Type="C" THEN
					W_AgeC=W_AgeC-1
				*END ELSE
					W_Age=W_Age-1
				*END
			END
		END
	END
	IF W_Type="C" THEN
		W_AgeMoyenC=W_AgeMoyenC+W_Age
	END ELSE
		W_AgeMoyen=W_AgeMoyen+W_Age
	END
	*PRINT OCONV(ENR_CIVILAIDANT<26>,"D4/"):" ":W_Age
RETURN



*******************
*Calcul Enfant  charges
*******************
400
*Mari=1
*Clibataire=2
*Veuf=3
*Divorc=4
*Vie Maritale=5
*Spar=6
*Pacs=7

W_Enfant=0
	IF ENR_CIVILAIDANT<21> = "1" OR ENR_CIVILAIDANT<21> = "5" OR ENR_CIVILAIDANT<21> = "7" THEN
		W_Count=DCOUNT(ENR_CIVILAIDANT<25>,CHAR(253))
		FOR I=1 TO W_Count
			IF ENR_CIVILAIDANT<25,I>=1 THEN
				W_Enfant=W_Enfant+1
			END
		NEXT I
		BEGIN CASE 
			CASE W_Enfant=0
				IF W_Type="C" THEN
					W_CptEnfantM0C=W_CptEnfantM0C+1
				END ELSE
					W_CptEnfantM0=W_CptEnfantM0+1
				END
			CASE W_Enfant=1
				IF W_Type="C" THEN
					W_CptEnfantM1C=W_CptEnfantM1C+1
				END ELSE
					W_CptEnfantM1=W_CptEnfantM1+1
				END
			CASE W_Enfant=2
				IF W_Type="C" THEN
					W_CptEnfantM2C=W_CptEnfantM2C+1
				END ELSE
					W_CptEnfantM2=W_CptEnfantM2+1
				END
			CASE W_Enfant>2
				IF W_Type="C" THEN
					W_CptEnfantM3C=W_CptEnfantM3C+1
				END ELSE
					W_CptEnfantM3=W_CptEnfantM3+1
				END
		END CASE
	END ELSE 
		W_Count=DCOUNT(ENR_CIVILAIDANT<25>,CHAR(253))
		FOR I=1 TO W_Count
			IF ENR_CIVILAIDANT<25,I>=1 THEN
				W_Enfant=W_Enfant+1
			END
		NEXT I
		BEGIN CASE 
			CASE W_Enfant=0
				IF W_Type="C" THEN
					W_CptEnfant0C=W_CptEnfant0C+1
				END ELSE
					W_CptEnfant0=W_CptEnfant0+1
				END
			CASE W_Enfant=1
				IF W_Type="C" THEN
					W_CptEnfant1C=W_CptEnfant1C+1
				END ELSE
					W_CptEnfant1=W_CptEnfant1+1
				END
			CASE W_Enfant=2
				IF W_Type="C" THEN
					W_CptEnfant2C=W_CptEnfant2C+1
				END ELSE
					W_CptEnfant2=W_CptEnfant2+1
				END
			CASE W_Enfant>2
				IF W_Type="C" THEN
					W_CptEnfant3C=W_CptEnfant3C+1
				END ELSE
					W_CptEnfant3=W_CptEnfant3+1
				END
		END CASE	
	END


RETURN
