*** GENERE UN FICHIER CSV DES AIDANTS AVEC LES ELEMENTS SUIVANTS :
*** - CODE
*** - NOM PRENOM
*** - BRUT CUMULES SUR PERIODE
*** - CHARGES PATRO CUMULEES SUR PERIODE
*** - HEURES PRODUITES CUMULEES SUR PERIODE
*** - HEURES CAISSES
*** 30/09/03 STEPHANE

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ACCORD" TO F.ACCORD ELSE STOP
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "","FUSION" TO F.FUSION ELSE STOP
OPEN "","HRESHISTOR" TO F.HRESHISTOR ELSE STOP
OPEN "","ORGPRISECHARGE" TO F.ORGPRISECHARGE ELSE STOP

OPEN "","AIDANTORGPC" TO F.AIDANTORGPC ELSE 
	EXECUTE 'CREATE.FILE AIDANTORGPC 1,1'
	OPEN "","AIDANTORGPC" TO F.AIDANTORGPC ELSE STOP

	* CREATION DICTIONNAIRE
	OPEN "DICT","AIDANTORGPC" TO F.DICT_AIDANTORGPC ELSE STOP

	* DICTIONNAIRE NOM 
	ENR_DICT_AIDANTORGPC=""
	ENR_DICT_AIDANTORGPC<1>="V"
	ENR_DICT_AIDANTORGPC<2>="OCONV(@ID,":CHAR(34):"T1,5":CHAR(34):":@VM:":CHAR(34):"TCIVILAIDANT;X;;2":CHAR(34):")"
	ENR_DICT_AIDANTORGPC<3>=""
	ENR_DICT_AIDANTORGPC<4>="Nom prenom"
	ENR_DICT_AIDANTORGPC<5>="50L"
	ENR_DICT_AIDANTORGPC<6>="S"
	WRITE ENR_DICT_AIDANTORGPC ON F.DICT_AIDANTORGPC,"NomAidant"

	* DICTIONNAIRE PRENOM
	ENR_DICT_AIDANTORGPC=""
	ENR_DICT_AIDANTORGPC<1>="V"
	ENR_DICT_AIDANTORGPC<2>="OCONV(@ID,":CHAR(34):"T1,5":CHAR(34):":@VM:":CHAR(34):"TCIVILAIDANT;X;;3":CHAR(34):")"
	ENR_DICT_AIDANTORGPC<3>=""
	ENR_DICT_AIDANTORGPC<4>="Nom prenom"
	ENR_DICT_AIDANTORGPC<5>="50L"
	ENR_DICT_AIDANTORGPC<6>="S"
	WRITE ENR_DICT_AIDANTORGPC ON F.DICT_AIDANTORGPC,"PrenomAidant"


	* DICTIONNAIRE NOM + PRENOM
	ENR_DICT_AIDANTORGPC=""
	ENR_DICT_AIDANTORGPC<1>="V"
	ENR_DICT_AIDANTORGPC<2>="SUBR('-CATS',SUBR('-CATS',NomAidant,":CHAR(34):" ":CHAR(34):"),PrenomAidant)"
	ENR_DICT_AIDANTORGPC<3>=""
	ENR_DICT_AIDANTORGPC<4>="Nom prenom"
	ENR_DICT_AIDANTORGPC<5>="50L"
	ENR_DICT_AIDANTORGPC<6>="S"
	WRITE ENR_DICT_AIDANTORGPC ON F.DICT_AIDANTORGPC,"NomPrenom"
END

1
PRINT "CODE ORGANISME (XXX)"
INPUT W_CODEORG
READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,W_CODEORG ELSE GOSUB 1

2 
PRINT "PERIODE DEBUT (AAAAMM)"
INPUT W_PERIODEDEBUT

3
PRINT "PERIODE FIN (AAAAMM)"
INPUT W_PERIODEFIN

IF W_PERIODEFIN<W_PERIODEDEBUT THEN GOSUB 2


* CONVERSION PERIODE EN DATE
W_DATEDEB=ICONV("01/":W_PERIODEDEBUT[5,2]:"/":W_PERIODEDEBUT[1,4],"D4/")
IF W_PERIODEFIN[5,2]="12" THEN
	W_DATEFIN=ICONV("01/":W_PERIODEFIN[5,2]:"/":W_PERIODEFIN[1,4]+1,"D4/")-1
END ELSE
        W_DATEFIN=ICONV("01/":W_PERIODEFIN[5,2]+1:"/":W_PERIODEFIN[1,4],"D4/")-1
END


* INITIALISATION VARIABLE
LISTEACCORDAPA=""
LISTEAIDANTORGPC=""
LISTEDETAILCALCUL=""
ENR_FUSION=""
EXECUTE 'VIDER-FICHIER AIDANTORGPC'

* TRAITEMENT ACCORD A LA CAISSE
EXECUTE 'SELECT ACCORD AVEC 1 = "':W_CODEORG:'" AND AVEC 18 = "" AND AVEC 5 <= "':W_DATEFIN:'" AND AVEC 6 >= "':W_DATEDEB:'"'
EXECUTE "SAUVE-LISTE LISTEACCORDAPA"
EXECUTE "LISTE LISTEACCORDAPA" CAPTURING MSG RETURNING MSGCODE

IF MSGCODE<1>=209 THEN STOP
    
* TRAITEMENT PARCOURS DES ACCORDS
W_FIN=0

SELECT F.ACCORD TO LISTEACCORDAPA

LOOP
	READNEXT CLE FROM LISTEACCORDAPA ELSE W_FIN=1
	UNTIL W_FIN=1 DO

	READ ENR_ACCORD FROM F.ACCORD,CLE ELSE ENR_ACCORD=""

	* PARCOURS DES PERIODES HISTORIQUES
	I=1
	LOOP
		UNTIL ENR_ACCORD<14,I>="" DO

		* SI PERIODE HISTORIQUE COMPRISE DANS INTERVALLE ALORS TRAITEMENT
		IF ENR_ACCORD<14,I> >= W_PERIODEDEBUT AND ENR_ACCORD<14,I> <= W_PERIODEFIN THEN GOSUB 10

		I=I+1
	REPEAT
REPEAT


* TRAITEMENT FICHIER AIDANTORGPC / DETAILCALCUL
EXECUTE 'SSELECT AIDANTORGPC PAR NomPrenom PAR @ID'
EXECUTE "SAUVE-LISTE LISTEAIDANTORGPC"
EXECUTE "LISTE LISTEAIDANTORGPC" CAPTURING MSG RETURNING MSGCODE

IF MSGCODE<1>=209 THEN STOP
    
* TRAITEMENT PARCOURS DES AIDANTORGPC
W_FIN=0

SELECT F.AIDANTORGPC TO LISTEAIDANTORGPC

Z=1
LOOP
	READNEXT CLEORGPC FROM LISTEAIDANTORGPC ELSE W_FIN=1
	UNTIL W_FIN=1 DO

	READ ENR_AIDANTORGPC FROM F.AIDANTORGPC,CLEORGPC ELSE ENR_AIDANTORGPC=""
	READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,CLEORGPC ELSE ENR_CIVILAIDANT=""

	* TRAITEMENT FICHIER DETAILCALCUL
	GOSUB 20

	* ECRITURE FICHIER FUSION
	GOSUB 30
REPEAT

WRITE ENR_FUSION ON F.FUSION,"APATOULOUSE.CSV"

STOP

**********************************************
* TRAITEMENT DES ACCORDS PERIODE / PERIODE
10 *

	READ ENR_HRESHISTOR FROM F.HRESHISTOR,CLE[1,5]:"001":ENR_ACCORD<14,I> ELSE ENR_HRESHISTOR=""

	J=1
	LOOP
		UNTIL ENR_HRESHISTOR<1,J>="" DO
		
		* LECTURE + MAJ + ECRITURE TAMPON AIDANTORGPC
		ENR_AIDANTORGPC=""
		READ ENR_AIDANTORGPC FROM F.AIDANTORGPC,ENR_HRESHISTOR<1,J> ELSE ENR_AIDANTORGPC=""
		ENR_AIDANTORGPC<1>=ENR_AIDANTORGPC<1>+ENR_HRESHISTOR<2,J>
		WRITE ENR_AIDANTORGPC ON F.AIDANTORGPC,ENR_HRESHISTOR<1,J>
	
		J=J+1
	REPEAT
RETURN


**********************************************
* TRAITEMENT DETAILCALCUL / AIDANTORGPC
20 *

	EXECUTE 'SELECT DETAILCALCUL AVEC 0 = "':CLEORGPC:']" AND AVEC PeriodeDetailCalcul >= "':W_PERIODEDEBUT:'" AND <= "':W_PERIODEFIN:'"'
	EXECUTE "SAUVE-LISTE LISTEDETAILCALCUL"
	EXECUTE "LISTE LISTEDETAILCALCUL" CAPTURING MSG RETURNING MSGCODE

	IF MSGCODE<1>=209 THEN STOP
    
	SELECT F.DETAILCALCUL TO LISTEDETAILCALCUL
	
	W_FINDC=0

	W_MONTANT7=0
	W_MONTANT14=0
	W_MONTANT25=0
		
	LOOP
		READNEXT CLEDC FROM LISTEDETAILCALCUL ELSE W_FINDC=1
		UNTIL W_FINDC=1 DO

		READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,CLEDC ELSE ENR_DETAILCALCUL=""
		
		W_MONTANT7=W_MONTANT7+ENR_DETAILCALCUL<7>

		* CUMULE ATT 14
		K=1
		LOOP
			UNTIL ENR_DETAILCALCUL<8,K>="" DO

			W_MONTANT14=W_MONTANT14+ENR_DETAILCALCUL<14,K>

			K=K+1
		REPEAT	
		
		* CUMULE ATT 25
		K=1
		LOOP
			UNTIL ENR_DETAILCALCUL<25,K>="" DO

			W_MONTANT25=W_MONTANT25+ENR_DETAILCALCUL<25,K>

			K=K+1
		REPEAT	

	REPEAT
RETURN


**********************************************
* ECRITURE FICHIER FUSION
30 *

	IF ENR_FUSION<1>="" THEN ENR_FUSION<1>="Code aidant;Nom prenom aidant;brut cumule sur periodes;charges patro. cumulees sur periodes;heures produites sur periodes;heures caisse"
	
	ENR_FUSION<-1>=CLEORGPC:";":ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>:";":W_MONTANT7/100:";":W_MONTANT14/100:";":W_MONTANT25/100:";":ENR_AIDANTORGPC<1>/100

RETURN	
