*********************************************************
*	TRAITEMENT CONTRAT POUR EDITION      	        *
*             CONTRATS SANS SAISIE                      *
*                                                       *
* JEROME			FEVRIER 2000            *
*      MODIF MANDATAIRE         AVRIL   2000            *
*      MODIF DETAILCALCUL       NOVEMBR 2000  (sub 500) *
*                                                       *
*  STEPHANE                                             *
*      REECRITURE COMPLETE DE                           *
*      LA GESTION INTERMEDIAIRE OCTOBRE 2001            *
*********************************************************

************
* FICHIERS *
************
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","ACTIVITES" TO F.ACTIVITES ELSE STOP
OPEN "","DETAILPREST" TO F.DETAILPREST ELSE STOP
OPEN "","DETAILADMIN" TO F.DETAILADMIN ELSE STOP
OPEN "","DETAILMANDAT" TO F.DETAILMANDAT ELSE STOP
OPEN "","DETAILINTER" TO F.DETAILINTER ELSE STOP
OPEN "","MISSIONSAIDANT" TO F.MISSIONSAIDANT ELSE STOP
OPEN "","TEMPO" TO F.TEMPO ELSE STOP
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","CIVILAIDE" TO F.CIVILAIDE ELSE STOP
OPEN "","SECTEUR" TO F.SECTEUR ELSE STOP
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE STOP
OPEN "","ABSENCESAIDANT" TO F.ABSENCESAIDANT ELSE STOP
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "","TABLES" TO F.TABLES ELSE STOP

******************************
* Recuperation des arguments *
******************************
PROCREAD ARGUMENTS ELSE PRINT "PROCREAD"

W_TYPEACTIVITE=FIELD(ARGUMENTS,"|",2)
W_PERIODE=FIELD(ARGUMENTS,"|",3)
W_JOURJ=FIELD(ARGUMENTS,"|",4)
W_FINPER=FIELD(ARGUMENTS,"|",5)
W_ASSOC=FIELD(ARGUMENTS,"|",6)
W_VALEURCONV=FIELD(ARGUMENTS,"|",7)
W_REQUETE=FIELD(ARGUMENTS,"|",8)

****************************
* Procdures               *
****************************
*   100  -->  PARCOURS REQUETE
*   200  -->  TRAITEMENT CONTRAT
*   300  -->  TRAITEMENT SI ADMINISTRATIF
*   400  -->  TRAITEMENT SI PRODUCTION
*   500  -->  PREPARE ECRITURE DANS TAMPON
*   600  -->  RECHERCHE DES ABSENCES
*   700  -->  SAUVEGARDE DES ABSENCES

****************************
* Initialisation           *
****************************
ENR_CONTRAT=""
ENR_ACTIVITES=""
ENR_DETAILPREST=""
ENR_DETAILADMIN=""
ENR_DETAILMANDAT=""
ENR_DETAILINTER=""
ENR_MISSIONSAIDANT=""
ENR_TEMPO=""
ENR_TEMPO2=""
W_COMPTEUR=""
I=""
K=""
J=""
W_REQUETECONTRAT=""
W_FINI=""
W_CLE=""
ENR_CIVILAIDANT=""
ENR_CIVILAIDE=""
ENR_SECTEUR=""
I_TEMP =""
I_TEMP2=""
ENR_ASSOCIATION=""
ENR_ABSENCESAIDANT=""
W_REQUETEABS=""
I_ABS=""
W_COMPTEURABS=""
W_FINIABS=""
W_VAL=""
*********************
* EXECUTION REQUETE *
*********************

	READ ENR_ASSOCIATION FROM F.ASSOCIATION,W_ASSOC ELSE PRINT "ASSOC"

	I_TEMP=0
	I_TEMP2=0
	EXECUTE W_REQUETE
	EXECUTE 'SAUVE-LISTE W_REQUETECONTRAT'
	EXECUTE "LISTE W_REQUETECONTRAT" RETURNING MSGCODE	
		
	IF MSGCODE<1>#209 THEN
		SELECT F.CONTRAT TO W_REQUETECONTRAT
		* PARCOURS REQUETE
		GOSUB 100
		IF ENR_TEMPO<1>="" THEN
			ENR_TEMPO<1>="RIEN"
		END
		
		WRITE ENR_TEMPO ON F.TEMPO,"SANSSAISIE"


		IF W_TYPEACTIVITE="I" THEN
			IF ENR_TEMPO2<1>="" THEN
				ENR_TEMPO2<1>="RIEN"
			END
			WRITE ENR_TEMPO2 ON F.TEMPO,"SANSMISSION"
		END
	END
STOP

**************************
* PARCOURS DE LA REQUETE *
**************************
100
	W_FINI="FAUX"
	LOOP
		READNEXT W_CLE FROM W_REQUETECONTRAT ELSE W_FINI="VRAI"
	WHILE W_FINI="FAUX" DO
		GOSUB 200
	REPEAT
RETURN

**********************
* TRAITEMENT CONTRAT *
**********************
200
	READ ENR_CONTRAT FROM F.CONTRAT,W_CLE ELSE PRINT "CONTRAT"
        READ ENR_ACTIVITES FROM F.ACTIVITES,ENR_CONTRAT<36,1> ELSE PRINT "ACTIVITES"

	IF W_TYPEACTIVITE<>"I" THEN
		IF ENR_CONTRAT<6> = "A" THEN
			GOSUB 300
		END ELSE
			GOSUB 400
		END
	END ELSE
		GOSUB 1000
	END
RETURN


*********************
* CAS ADMINISTRATIF *
*********************
300
        READ ENR_DETAILADMIN FROM F.DETAILADMIN,W_CLE:W_PERIODE ELSE
		READ ENR_DETAILCALCUL FROM F.DETAILCALCUL ,W_CLE:W_PERIODE ELSE GOSUB 500
	END
RETURN

******************
* CAS PRODUCTION *
******************
400
	BEGIN CASE
		CASE W_TYPEACTIVITE MATCHES "M"
			READ ENR_DETAILMANDAT FROM F.DETAILMANDAT,W_CLE:W_PERIODE ELSE GOSUB 500
		CASE 1
			READ ENR_DETAILPREST FROM F.DETAILPREST,W_CLE:W_PERIODE THEN
				W_COMPTE3=0
				W_COMPTE12=0
				W_COMPTEUR=DCOUNT(ENR_DETAILPREST<2>,CHAR(253))
				FOR K=1 TO W_COMPTEUR
					W_COMPTE3=W_COMPTE3+ENR_DETAILPREST<3,K>
				NEXT K
				IF W_COMPTE3="" THEN
					W_COMPTE3=0
				END
				W_COMPTEUR=DCOUNT(ENR_DETAILPREST<12>,CHAR(253))
				FOR K=1 TO W_COMPTEUR
					L=1
					LOOP
					WHILE ENR_DETAILPREST<12,K,L> # ""
						W_COMPTE12=W_COMPTE12+ENR_DETAILPREST<12,K,L>
						L=L+1
					REPEAT				
				NEXT K
				IF W_COMPTE12="" THEN
					W_COMPTE12=0
				END
			
				IF W_COMPTE3=0 AND W_COMPTE12=0 AND ENR_DETAILPREST<5>="" THEN 
					GOSUB 500
				END
			END ELSE
				GOSUB 500
			END

	END CASE

RETURN

*******************************
* ECRITURE DANS FICHIER TEMPO *
*******************************
500
READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_CLE:W_PERIODE ELSE

	READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CLE[1,5] ELSE PRINT "CIVILAIDANT"

	IF W_TYPEACTIVITE="M"  THEN
		READ ENR_CONTRAT FROM F.CONTRAT,W_CLE ELSE PRINT "CONTRAT"
		READ ENR_CIVILAIDE FROM F.CIVILAIDE,ENR_CONTRAT<3> ELSE PRINT "CIVILAIDE"
		IF W_VALEURCONV="1" THEN
			READ ENR_SECTEUR FROM F.SECTEUR,ENR_CIVILAIDE<40>[1,3] ELSE PRINT "SECTEUR"
		END ELSE
			READ ENR_SECTEUR FROM F.SECTEUR,ENR_CIVILAIDANT<31> ELSE PRINT "SECTEUR"
		END
	END ELSE
		READ ENR_SECTEUR FROM F.SECTEUR,ENR_CIVILAIDANT<31> ELSE PRINT "SECTEUR"
	END

	I_TEMP=I_TEMP+1

	ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP,1;W_CLE[1,5])
	ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP,2;ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>)

	BEGIN CASE
		CASE ENR_ACTIVITES<12> MATCHES "M"
			ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP,3;ENR_CIVILAIDE<2>:" ":ENR_CIVILAIDE<3>)			
			ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP,4;ENR_CONTRAT<7>)
			ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP,5;ENR_CONTRAT<8>)
			ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP,6;ENR_CONTRAT<4>)
		CASE 1
			ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP,3;ENR_ASSOCIATION<1>)		
			ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP,4;ENR_CONTRAT<7>)
			ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP,5;ENR_CONTRAT<8>)
			ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP,6;ENR_CONTRAT<4>)
	END CASE
	
	ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP,7;ENR_SECTEUR<1>)

	* recherche des absences
	GOSUB 600
END

RETURN


********************************
* RECHERCHE DES ABSENCESAIDANT *
********************************
600
	EXECUTE 'SSELECT ABSENCESAIDANT AVEC CodeAidant = "':W_CLE[1,5]:'" AND AVEC DebAbsAidant <= "':W_JOURJ:'" AND AVEC 2 >= "':W_FINPER:'" OR = "':"":'" PAR-DECR DebAbsAidant'
	EXECUTE 'SAUVE-LISTE W_REQUETEABS'
	EXECUTE "LISTE W_REQUETEABS" RETURNING MSGCODE	
	
	IF MSGCODE<1>#209 THEN
		SELECT F.ABSENCESAIDANT TO W_REQUETEABS
		* PARCOURS REQUETE
		GOSUB 700
	END
RETURN

**********************
* SAUVEGARDE ABSENCE *
**********************
700
	W_VAL=0
	W_FINIABS="FAUX"

	LOOP
		READNEXT W_CLEABS FROM W_REQUETEABS ELSE W_FINIABS="VRAI"
		W_VAL=W_VAL+1
	WHILE W_FINIABS="FAUX" DO

		IF W_VAL#1 THEN
			ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP+1,1;"")
			ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP+1,2;"")
			ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP+1,3;"")
			ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP+1,4;"")
			ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP+1,5;"")
			ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP+1,6;"")
			ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP+1,7;ENR_TEMPO<I_TEMP,7>)
			I_TEMP=I_TEMP+1
		END

		READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT,W_CLEABS ELSE PRINT "ABSENCES"		
		ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP,8;W_CLEABS[8,5])
		ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP,9;ENR_ABSENCESAIDANT<2>)



		READ ENR_TABLES FROM F.TABLES, "ABSENCES" ELSE ENR_TABLES = "" 

		FOR J = 1 TO DCOUNT(ENR_TABLES<2>,CHAR(253))  
			IF W_CLEABS[6,2] = J "R%2" THEN
				ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP,10;ENR_TABLES<3,J>)
				EXIT
			END 
		NEXT J

	REPEAT
RETURN



***********************************************************
* ECRITURE DANS FICHIER TEMPO INTERMEDIAIRE (SANS SAISIE) *
***********************************************************
1000

	ENR_MISSIONSAIDANT=""
	ENR_DETAILINTER=""
	ENR_DETAILCALCUL=""
	ENR_SECTEUR=""

	* SI PAS DETAILCALCUL
	READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_CLE:W_PERIODE THEN
		READ ENR_MISSIONSAIDANT FROM F.MISSIONSAIDANT,W_CLE[1,5] ELSE ENR_MISSIONSAIDANT=""
		READ ENR_SECTEUR FROM F.SECTEUR,ENR_CIVILAIDANT<31> ELSE ENR_SECTEUR=""
		GOSUB 1001
	END ELSE
		READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CLE[1,5] ELSE ENR_CIVILAIDANT=""
		READ ENR_SECTEUR FROM F.SECTEUR,ENR_CIVILAIDANT<31> ELSE ENR_SECTEUR=""

		READ ENR_MISSIONSAIDANT FROM F.MISSIONSAIDANT,W_CLE[1,5] THEN
			GOSUB 1001
		END ELSE	
			I_TEMP2=I_TEMP2+1
			ENR_TEMPO2=REPLACE(ENR_TEMPO2,I_TEMP2,1;W_CLE[1,5])
			ENR_TEMPO2=REPLACE(ENR_TEMPO2,I_TEMP2,2;ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>)				
			ENR_TEMPO2=REPLACE(ENR_TEMPO2,I_TEMP2,3;ENR_ASSOCIATION<1>)		
			ENR_TEMPO2=REPLACE(ENR_TEMPO2,I_TEMP2,4;ENR_CONTRAT<7>)
			ENR_TEMPO2=REPLACE(ENR_TEMPO2,I_TEMP2,5;ENR_CONTRAT<8>)
			ENR_TEMPO2=REPLACE(ENR_TEMPO2,I_TEMP2,6;ENR_CONTRAT<4>)						
			ENR_TEMPO2=REPLACE(ENR_TEMPO2,I_TEMP2,7;ENR_SECTEUR<1>)

			GOSUB 601
		END
	END

RETURN

*************************************************************
* ECRITURE DANS FICHIER TEMPO INTERMEDIAIRE (SANS MISSIONS) *
*************************************************************
1001

	W_COMPTEUR=DCOUNT(ENR_MISSIONSAIDANT<2>,CHAR(253))
	FOR K=1 TO W_COMPTEUR
		IF ENR_MISSIONSAIDANT<2,K> <= W_JOURJ AND (ENR_MISSIONSAIDANT<3,K> >= W_FINPER OR ENR_MISSIONSAIDANT<3,K>="") AND ENR_MISSIONSAIDANT<13,K> = W_ASSOC THEN
			READ ENR_DETAILINTER FROM F.DETAILINTER,W_CLE:ENR_MISSIONSAIDANT<11,K>:W_PERIODE THEN
				* RIEN A FAIRE
			END ELSE
				READ ENR_CIVILAIDE FROM F.CIVILAIDE,ENR_MISSIONSAIDANT<1,K> THEN
					I_TEMP=I_TEMP+1
					ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP,1;W_CLE[1,5])
					ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP,2;ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>)
					ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP,3;ENR_CIVILAIDE<2>:" ":ENR_CIVILAIDE<3>)		
					ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP,4;ENR_MISSIONSAIDANT<2,K>)
					ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP,5;ENR_MISSIONSAIDANT<3,K>)
					ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP,6;ENR_CONTRAT<4>)			
					ENR_TEMPO=REPLACE(ENR_TEMPO,I_TEMP,7;ENR_SECTEUR<1>)
			
					GOSUB 600
				END
			END
		END
	NEXT K

RETURN

********************************
* RECHERCHE DES ABSENCESAIDANT *
********************************
601
	EXECUTE 'SSELECT ABSENCESAIDANT AVEC CodeAidant = "':W_CLE[1,5]:'" AND AVEC DebAbsAidant <= "':W_JOURJ:'" AND AVEC 2 >= "':W_FINPER:'" OR = "':"":'" PAR-DECR DebAbsAidant'
	EXECUTE 'SAUVE-LISTE W_REQUETEABS'
	EXECUTE "LISTE W_REQUETEABS" RETURNING MSGCODE	
	
	IF MSGCODE<1>#209 THEN
		SELECT F.ABSENCESAIDANT TO W_REQUETEABS
		* PARCOURS REQUETE
		GOSUB 701
	END
RETURN

**********************
* SAUVEGARDE ABSENCE *
**********************
701
	W_VAL=0
	W_FINIABS="FAUX"

	LOOP
		READNEXT W_CLEABS FROM W_REQUETEABS ELSE W_FINIABS="VRAI"
		W_VAL=W_VAL+1
	WHILE W_FINIABS="FAUX" DO

		IF W_VAL#1 THEN
			ENR_TEMPO2=REPLACE(ENR_TEMPO2,I_TEMP2+1,1;"")
			ENR_TEMPO2=REPLACE(ENR_TEMPO2,I_TEMP2+1,2;"")
			ENR_TEMPO2=REPLACE(ENR_TEMPO2,I_TEMP2+1,3;"")
			ENR_TEMPO2=REPLACE(ENR_TEMPO2,I_TEMP2+1,4;"")
			ENR_TEMPO2=REPLACE(ENR_TEMPO2,I_TEMP2+1,5;"")
			ENR_TEMPO2=REPLACE(ENR_TEMPO2,I_TEMP2+1,6;"")
			ENR_TEMPO2=REPLACE(ENR_TEMPO2,I_TEMP2+1,7;ENR_TEMPO2<I_TEMP2,7>)
			I_TEMP2=I_TEMP2+1
		END

		READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT,W_CLEABS ELSE PRINT "ABSENCES"		
		ENR_TEMPO2=REPLACE(ENR_TEMPO2,I_TEMP2,8;W_CLEABS[8,5])

		ENR_TEMPO2=REPLACE(ENR_TEMPO2,I_TEMP2,9;ENR_ABSENCESAIDANT<2>)


		READ ENR_TABLES FROM F.TABLES, "ABSENCES" ELSE ENR_TABLES = ""

		FOR J = 1 TO  DCOUNT(ENR_TABLES<2>,CHAR(253))
			IF W_CLEABS[6,2] = J "R%2" THEN
				ENR_TEMPO2=REPLACE(ENR_TEMPO2,I_TEMP2,10;ENR_TABLES<3,J>)
				EXIT
			END
		NEXT J

		
	REPEAT
RETURN
