********************************************************
* GESTION MAGNETIQUE DU FICHIER PROD'HOME VERSION 2002 *
* VERSION PRESTATAIRE + INTERMEDIAIRE                  *
* AVRIL 2002                           STEPHANE HERVET *
********************************************************


* ----------- OUVERTURE DES FICHIERS -----------
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE STOP
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","COMMUNES" TO F.COMMUNES ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","ETABLISSEMENT" TO F.ETABLISSEMENT ELSE STOP
OPEN "","PRUDCASPARTICULIERS" TO F.PRUDCASPARTICULIERS ELSE STOP
OPEN "","PRUDHOME" TO F.PRUDHOME ELSE STOP
OPEN "","TEMPO" TO F.TEMPO ELSE STOP


* ----------- TABLEAU RECAPITULATIF DES GOSUBS -----------
* - 000  - PROCEDURE "DRAPEAU DE DEBUT"                  -
* - 020  - PROCEDURE "ENREGIST. ENTETE"                  -
* - 200  - PROCEDURE "DETAIL  SALARIES"                  -
* - 300  - PROCEDURE "ENREGIST. DE FIN"                  -
* - 990  - PROCEDURE "DRAPEAU  DE  FIN"                  -
* - 999  - INITIALISATION DES VARIABLES                  -
* - 1000 - SELECTION DES CONTRATS ACTIF                  -
* - 2000 - GENERATION FICHIER JOURNAL                    -
* --------------------------------------------------------


* ----------- RECUPERATION DES PARAMETRES PASSES DE VB -----------
PROCREAD PARAMETRES ELSE STOP

W_RANGENTITE=INDEX(PARAMETRES," ",1)
W_CODEASSO=PARAMETRES[W_RANGENTITE+1,3]

W_RANGACT=INDEX(PARAMETRES," ",2)
W_TYPEACTIVITE=PARAMETRES[W_RANGACT+1,1]

W_DATECONTRAT="12507"		;*29/03/2002



* ----------- LANCEMENT DU TRAITEMENT -----------
READ ENR_ASSOCIATION FROM F.ASSOCIATION,W_CODEASSO ELSE ENR_ASSOCIATION=""

GOSUB 999

GOSUB 1000

GOSUB 000

LOOP
	READNEXT CLECONTRAT FROM PRUDHOME ELSE W_FIN=1
	UNTIL W_FIN=1 DO

	READ ENR_CONTRAT FROM F.CONTRAT,CLECONTRAT ELSE ENR_CONTRAT=""
	READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,CLECONTRAT[1,5] ELSE ENR_CIVILAIDANT=""
	READ ENR_PRUDCASPARTICULIERS FROM F.PRUDCASPARTICULIERS,CLECONTRAT[1,5] ELSE
		ENR_PRUDCASPARTICULIERS=""
		ENR_PRUDCASPARTICULIERS<1>="1"
		ENR_PRUDCASPARTICULIERS<2>="4"
		ENR_PRUDCASPARTICULIERS<3>="2"
	END

	* TEST CHANGEMENT ETABLISSEMENT NE PRESTATAIRE
	IF W_TYPEACTIVITE="P" THEN
		IF W_ANCIENETAB # ENR_CONTRAT<3> THEN
			W_ANCIENETAB=ENR_CONTRAT<3>
	
			GOSUB 300
			GOSUB 020
		END
	END

	GOSUB 200

REPEAT

GOSUB 300
GOSUB 990
WRITE ENR_PRUDHOME ON F.PRUDHOME,"PRUD2002":W_CODEASSO

GOSUB 2000

STOP



* ----------------------------------------
* ----------- DEBUT DES GOSUBS -----------
* ----------------------------------------


* ----------- PROCEDURE "DRAPEAU DE DEBUT" -----------
000 * 

	* LECTURE ETABLISSEMENT NUMERO 001
	READ ENR_ETABLISSEMENT FROM F.ETABLISSEMENT,W_CODEASSO:"001" ELSE ENR_ETABLISSEMENT=""

	ENR_PRUDHOME<W_NBLIGNE>="0000000000000000000000 ":ENR_ETABLISSEMENT<14>:SPACE(527)	
	W_NBLIGNE=W_NBLIGNE+1

	W_ANCIENETAB=W_CODEASSO:"001"

	GOSUB 020

RETURN

* ----------- PROCEDURE "ENREGIST. ENTETE" -----------
020 * 

	W_CODEINSEE="00000"
	* FRACTION ETABLISSEMENT
	* SI ATT 25 = "" ALORS FRACT. = "00" SINON FRACT. = ATT 25
	IF W_ANCIENETAB # W_CODEASSO:"001" THEN READ ENR_ETABLISSEMENT FROM F.ETABLISSEMENT,W_ANCIENETAB ELSE ENR_ETABLISSEMENT=""
	IF ENR_ETABLISSEMENT<25>#"" THEN
		W_FRACTION=ENR_ETABLISSEMENT<25>
	END ELSE
		W_FRACTION="00"
	END

	* RECHERCHE CODE INSEE COMMUNE
	GOSUB 021

	* SI PAS ADRESSE ETAB DANS FICHIER ALORS PREND ADRESSE ASSO
	IF ENR_ETABLISSEMENT<9>="" THEN
		ENR_ETABLISSEMENT<3>=ENR_ASSOCIATION<3>
		ENR_ETABLISSEMENT<4>=ENR_ASSOCIATION<4>
		ENR_ETABLISSEMENT<5>=ENR_ASSOCIATION<5>
		ENR_ETABLISSEMENT<6>=ENR_ASSOCIATION<6>
		ENR_ETABLISSEMENT<7>=ENR_ASSOCIATION<7>
		ENR_ETABLISSEMENT<8>=ENR_ASSOCIATION<8>
		ENR_ETABLISSEMENT<9>=ENR_ASSOCIATION<9>
	END

	* MISE EN FORME DES DONNEES
	ENR_ETABLISSEMENT<2>=ENR_ETABLISSEMENT<2>[1,50] "L#50"
	ENR_ETABLISSEMENT<7>=ENR_ETABLISSEMENT<7>[1,32] "L#32"
	ENR_ETABLISSEMENT<3>=ENR_ETABLISSEMENT<3>[1,4] "L#4"
	ENR_ETABLISSEMENT<4>=ENR_ETABLISSEMENT<4>[1,1] "L#1"
	W_ADRESSE=""
	W_ADRESSE=ENR_ETABLISSEMENT<5>:" ":ENR_ETABLISSEMENT<6>
	W_ADRESSE=W_ADRESSE[1,26] "L#26"
	ENR_ETABLISSEMENT<9>=ENR_ETABLISSEMENT<9>[1,26] "L#26"
	
	ENR_PRUDHOME<W_NBLIGNE>=ENR_ETABLISSEMENT<14>:W_FRACTION:"   020":ENR_ETABLISSEMENT<14>:ENR_ETABLISSEMENT<15>:SPACE(56)
	ENR_PRUDHOME<W_NBLIGNE>=ENR_PRUDHOME<W_NBLIGNE>:ENR_ETABLISSEMENT<2>:ENR_ETABLISSEMENT<7>:" ":ENR_ETABLISSEMENT<3>
	ENR_PRUDHOME<W_NBLIGNE>=ENR_PRUDHOME<W_NBLIGNE>:ENR_ETABLISSEMENT<4>:" ":W_ADRESSE:W_CODEINSEE:" ":ENR_ETABLISSEMENT<9>
	ENR_PRUDHOME<W_NBLIGNE>=ENR_PRUDHOME<W_NBLIGNE>:ENR_ETABLISSEMENT<8>:" ":ENR_ETABLISSEMENT<9>:SPACE(289)
	W_NBLIGNE=W_NBLIGNE+1	
	W_NBETAB=W_NBETAB+1

	W_DETAILETAB<W_NBETAB,1>=ENR_ETABLISSEMENT<8>[1,2]
	W_DETAILETAB<W_NBETAB,2>=ENR_ETABLISSEMENT<14>[1,14]
	W_DETAILETAB<W_NBETAB,3>="4"
	W_DETAILETAB<W_NBETAB,4>=ENR_ETABLISSEMENT<2>[1,61]
	W_DETAILETAB<W_NBETAB,5>=ENR_ETABLISSEMENT<1>[1,61]
	W_DETAILETAB<W_NBETAB,6>=ENR_ETABLISSEMENT<3>:" ":W_ADRESSE
	W_DETAILETAB<W_NBETAB,6>=W_DETAILETAB<W_NBETAB,6>[1,61]
	W_DETAILETAB<W_NBETAB,7>=ENR_ETABLISSEMENT<7>[1,61]
	W_DETAILETAB<W_NBETAB,8>=ENR_ETABLISSEMENT<8>:" ":ENR_ETABLISSEMENT<9>
	W_DETAILETAB<W_NBETAB,8>=W_DETAILETAB<W_NBETAB,8>[1,61]

RETURN

* ----------- RECHERCHE CODE INSEE ETABLI. -----------
021 * 

	EXECUTE 'SELECT COMMUNES AVEC 1 = "[':ENR_ETABLISSEMENT<9>:']"'
	EXECUTE 'SAUVE-LISTE INSEEETAB'
	EXECUTE 'LISTE INSEEETAB' CAPTURING MSGCODE RETURNING MSGCODE

	IF MSGCODE<1>=209 THEN 
		W_CODEINSEE="00000"
		RETURN
	END

	SELECT F.COMMUNES TO INSEEETAB

	W_FININSEE=0
	LOOP
		READNEXT CLEINSEE FROM INSEEETAB ELSE W_FININSEE=1
		W_CODEINSEE=CLEINSEE
		UNTIL W_CODEINSEE#"00000" OR W_FININSEE=1 DO
	REPEAT


RETURN

* ----------- PROCEDURE "DETAIL  SALARIES" -----------
200 * 

	* MISE EN FORME DES DONNEES
	ENR_CIVILAIDANT<28>=ENR_CIVILAIDANT<28>[1,2] "R%2"
	ENR_CIVILAIDANT<27>=ENR_CIVILAIDANT<27>[1,26] "L#26"
	ENR_CIVILAIDANT<2>=ENR_CIVILAIDANT<2>[1,30] "L#30"
	ENR_CIVILAIDANT<3>=ENR_CIVILAIDANT<3>[1,20] "L#20"
	ENR_CIVILAIDANT<4>=ENR_CIVILAIDANT<4>[1,30] "L#30"

	* MISE EN FORME CODE SECU
	ENR_CIVILAIDANT<17>=CONVERT(" ","",ENR_CIVILAIDANT<17>)
	ENR_CIVILAIDANT<17>=ENR_CIVILAIDANT<17> "L%13"
	ENR_CIVILAIDANT<18>=ENR_CIVILAIDANT<18> "L%2"

	* MISE EN FORME DDN
	W_DDN=OCONV(ENR_CIVILAIDANT<26>,"D2/")
	W_DDN=CONVERT("/","",W_DDN)	

	W_ADRESSEAIDANT=""
	W_ADRESSEAIDANT2=""
	ENR_CIVILAIDANT<5>=ENR_CIVILAIDANT<5>[1,4] "L#4"
	ENR_CIVILAIDANT<6>=ENR_CIVILAIDANT<6>[1,1] "L#1"
	ENR_CIVILAIDANT<9>=ENR_CIVILAIDANT<9>[1,32] "L#32"
	ENR_CIVILAIDANT<11>=ENR_CIVILAIDANT<11>[1,26] "L#26"
	ENR_CIVILAIDANT<39>=ENR_CIVILAIDANT<39> "R%5"
	W_ADRESSEAIDANT=ENR_CIVILAIDANT<7>:" ":ENR_CIVILAIDANT<8>
	W_ADRESSEAIDANT=W_ADRESSEAIDANT[1,26] "L#26"	

	W_ADRESSEAIDANT2=ENR_CIVILAIDANT<9>:" ":ENR_CIVILAIDANT<5>:ENR_CIVILAIDANT<6>:" ":W_ADRESSEAIDANT:ENR_CIVILAIDANT<39>:" ":ENR_CIVILAIDANT<11>
	W_ADRESSEAIDANT2=W_ADRESSEAIDANT2:ENR_CIVILAIDANT<10>:" ":ENR_CIVILAIDANT<11>:SPACE(232)
	
	ENR_PRUDHOME<W_NBLIGNE>=ENR_ETABLISSEMENT<14>:W_FRACTION:"   200":SPACE(10):ENR_CIVILAIDANT<17>:ENR_CIVILAIDANT<18>
	ENR_PRUDHOME<W_NBLIGNE>=ENR_PRUDHOME<W_NBLIGNE>:W_DDN:ENR_CIVILAIDANT<28>:"   ":ENR_CIVILAIDANT<27>
	ENR_PRUDHOME<W_NBLIGNE>=ENR_PRUDHOME<W_NBLIGNE>:"   ":ENR_CIVILAIDANT<4>:ENR_CIVILAIDANT<3>:ENR_CIVILAIDANT<2>
	ENR_PRUDHOME<W_NBLIGNE>=ENR_PRUDHOME<W_NBLIGNE>:W_ADRESSEAIDANT2:ENR_PRUDCASPARTICULIERS<1>:ENR_PRUDCASPARTICULIERS<2>
	ENR_PRUDHOME<W_NBLIGNE>=ENR_PRUDHOME<W_NBLIGNE>:ENR_PRUDCASPARTICULIERS<3>:SPACE(33)
	W_NBLIGNE=W_NBLIGNE+1
	W_NBSAL<W_NBETAB>=W_NBSAL<W_NBETAB>+1
	W_NBSALTOTAL=W_NBSALTOTAL+1

RETURN

* ----------- PROCEDURE "ENREGIST. DE FIN" -----------
300 * 

	W_NBSAL<W_NBETAB>=W_NBSAL<W_NBETAB> "R%6"

	ENR_PRUDHOME<W_NBLIGNE>=ENR_ETABLISSEMENT<14>:W_FRACTION:"   300":SPACE(312):W_NBSAL<W_NBETAB>:SPACE(224)
	W_NBLIGNE=W_NBLIGNE+1

RETURN

* ----------- PROCEDURE "DRAPEAU  DE  FIN" -----------
990 * 

	ENR_PRUDHOME<W_NBLIGNE>="9999999999999999999990":SPACE(542)

RETURN

* ----------- INITIALISATION DES VARIABLES -----------
999 *

	ENR_PRUDHOME=""
	W_NBLIGNE=1
	W_FIN=0
	W_ANCIENETAB=""
	W_NBSAL=0
	W_NBETAB=0
	W_CODEINSEE="00000"
	PRUDHOME=""
	INSEEETAB=""
	ENR_TEMPO=""
	W_NBSALTOTAL=0
	W_DETAILETAB=""
	
RETURN

* ----------- SELECTION DES CONTRATS ACTIF -----------
1000 *

		EXECUTE 'SELECT CONTRAT AVEC 1 # "02" AND AVEC 2 = "':W_CODEASSO:'" AND AVEC TypeActivite = "':W_TYPEACTIVITE:'" AND AVEC 7 <= "':W_DATECONTRAT:'" AND AVEC 8 >= "':W_DATECONTRAT:'" OR = "" AND AVEC 65 # "O" PAR 3 PAR NomPrenomAidantContrat'
		EXECUTE "SAUVE-LISTE PRUDHOME"
		EXECUTE "LISTE PRUDHOME" CAPTURING MSGCODE RETURNING MSGCODE

		IF MSGCODE<1>=209 THEN STOP

		SELECT F.CONTRAT TO PRUDHOME

RETURN

* ----------- GENERATION FICHIER  JOURNAL -----------
2000 * 

	ENR_TEMPO<1>=ENR_ASSOCIATION<14>[1,9]
	ENR_TEMPO<2>=ENR_ASSOCIATION<2>[1,48]
	ENR_TEMPO<3>=ENR_ASSOCIATION<3>:" ":ENR_ASSOCIATION<4>:" ":ENR_ASSOCIATION<5>:" ":ENR_ASSOCIATION<6>
	ENR_TEMPO<3>=ENR_TEMPO<3>[1,48]
	ENR_TEMPO<4>=ENR_ASSOCIATION<7>[1,48]
	ENR_TEMPO<5>=ENR_ASSOCIATION<8>:" ":ENR_ASSOCIATION<9>
	ENR_TEMPO<5>=ENR_TEMPO<5>[1,48]

	ENR_TEMPO<6>=ENR_ASSOCIATION<30>[1,30]
	ENR_TEMPO<7>=ENR_ASSOCIATION<12>
	ENR_TEMPO<8>=ENR_ASSOCIATION<13>
	ENR_TEMPO<9>=W_NBSALTOTAL
	ENR_TEMPO<10>=DCOUNT(W_NBSAL,CHAR(254))
	
	I=1
	J=11
	LOOP
		UNTIL W_DETAILETAB<I,1>="" DO	
		
		* AFFECTE LES EFFECTIFS A CHAQUE ETABLISSEMENT
		W_DETAILETAB<I,9>=INT(W_NBSAL<I>)
		ENR_TEMPO<J>=W_DETAILETAB<I>
		J=J+1
		I=I+1
	REPEAT

	WRITE ENR_TEMPO ON F.TEMPO,"PRUDHOME"
RETURN
