*******************************************************************
* EXTRACTION DES AIDANTS POUR LE SYSTEME DE TELEGESTION DOMIPHONE *
*******************************************************************

SUBROUTINE AIDANTDOMIPHONE(RETURNVAL, ARGUMENTS, OUTPUT)
EXECUTE 'ECLTYPE "P"'
EXECUTE 'DATE.FORMAT'

* Ouvertures des fichiers

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
OPEN "", "ASSOCIATION" TO F.ASSOCIATION ELSE STOP
OPEN "", "CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "", "COMPTEUR" TO F.COMPTEUR ELSE STOP
OPEN "", "CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "", "FUSION" TO F.FUSION ELSE STOP
OPEN "", "SECTEUR" TO F.SECTEUR ELSE STOP
OPEN "", "TLGACTIVITES" TO F.TLGACTIVITES ELSE STOP

*********************************************************
* Recuperation des arguments

W_Systeme=FIELD(ARGUMENTS,"|",1)
W_Type=FIELD(ARGUMENTS,"|",2)
IF W_Type="S" THEN
	W_TypeSelect=FIELD(ARGUMENTS,"|",3)
	W_Select=FIELD(ARGUMENTS,"|",4)
	W_Aidant=FIELD(ARGUMENTS,"|",5)
	W_Aide=FIELD(ARGUMENTS,"|",6)
	W_CodeCommune=FIELD(ARGUMENTS,"|",7)
END

*********************************************************
* PROGRAMME PRINCIPAL

NomFichier=""
W_Cle=""
W_SauveAidant=""

**********************
* paramtre en dur
W_FraisKm="O"
W_MinuteCompl="O"

READ ENR_COMPTEUR FROM F.COMPTEUR,"999" ELSE ENR_COMPTEUR=""

* requete association
GOSUB 40

FOR iAsso=1 TO W_CountAsso
	ENR_FUSION=""

	W_ListeReq=""

	* Requete
	GOSUB 10

	IF MSGCODE<1>#209 THEN

   		SELECT F.CONTRAT TO W_ListeReq
   		GOSUB 20

	END       
  
	IF ENR_FUSION#"" THEN
		W_Cle="AIDANT":W_ListeAsso<iAsso>
		IF W_Type="S" THEN
			BEGIN CASE
				CASE W_TypeSelect="S" 
					W_Cle=W_Cle:"-":W_Select
				CASE W_TypeSelect="C" 
					W_Cle=W_Cle:"-":W_CodeCommune
			END CASE
		END

		W_Cle=W_Cle:"-":TIMEDATE()[19,2]
		BEGIN CASE
			CASE TIMEDATE()[13,3] = "Jan"
				W_Cle=W_Cle:"01"
			CASE TIMEDATE()[13,3] = "Feb"
				W_Cle=W_Cle:"02"
			CASE TIMEDATE()[13,3] = "Mar"
				W_Cle=W_Cle:"03"
			CASE TIMEDATE()[13,3] = "Apr"
				W_Cle=W_Cle:"04"
			CASE TIMEDATE()[13,3] = "May"
				W_Cle=W_Cle:"05"
			CASE TIMEDATE()[13,3] = "Jun"
				W_Cle=W_Cle:"06"
			CASE TIMEDATE()[13,3] = "Jul"
				W_Cle=W_Cle:"07"
			CASE TIMEDATE()[13,3] = "Aug"
				W_Cle=W_Cle:"08"
			CASE TIMEDATE()[13,3] = "Sep"
				W_Cle=W_Cle:"09"
			CASE TIMEDATE()[13,3] = "Oct"
				W_Cle=W_Cle:"10"
			CASE TIMEDATE()[13,3] = "Nov"
				W_Cle=W_Cle:"11"
			CASE TIMEDATE()[13,3] = "Dec"
				W_Cle=W_Cle:"12"
		END CASE
		W_Cle=W_Cle:TIMEDATE()[10,2]:"-":TIMEDATE()[1,2]:TIMEDATE()[4,2]:".csv"

		WRITE ENR_FUSION ON F.FUSION,W_Cle
	END

	NomFichier<DCOUNT(NomFichier,CHAR(254))+1>=W_Cle

NEXT iAsso

ENR_COMPTEUR<21>=W_SauveAidant

WRITE ENR_COMPTEUR ON F.COMPTEUR,"999"

OUTPUT=NomFichier

RETURN

*********************************************************************************
* Requete
10

*W_Requete = 'SSELECT CONTRAT AVEC 65 = "" AND AVEC 6 = "P" AND AVEC 2 = "':W_ListeAsso<iAsso>:'" AND AVEC CodSecteurContrat = "':W_CodSecteur:']"'
*W_Requete = W_Requete:' AND AVEC 7 <= "':W_DateFinSelect:'" AND AVEC 8 => "':W_DateDebSelect:'" OR = "" PAR 0'

	W_Date=OCONV(DATE(),"D4/")

	W_Mois=W_Date[4,2]
	W_An=W_Date[7,4]
	FOR i=1 TO 2
		W_Mois=W_Mois-1
		IF INT(W_Mois) = 0 THEN
			W_Mois="12"
			W_An=W_An-1
		END
	NEXT i
	W_Date=ICONV("01":"/":W_Mois:"/":W_An,"D4/")-1

	IF W_Type="S" THEN
		BEGIN CASE
			CASE W_TypeSelect="S" 
				W_TempBis=' AND AVEC CodSecteurContrat = "':W_Select:'"'
			CASE W_TypeSelect="C" 
				W_TempBis=' AND AVEC CommunePostAidant = "':W_Select:'"'
			CASE W_TypeSelect="A" 
				W_TempBis=' AND AVEC CodeAidant >= "':W_Aidant:'"'
		END CASE
	END

	W_TempTer=' AND AVEC 2 = "':W_ListeAsso<iAsso>:'"'
	W_TempTer = W_TempTer:' AND AVEC 65 = "" AND AVEC 6 = "P"'

	W_Temp = 'SELECT CONTRAT AVEC 7 <= "':DATE():'" AND AVEC 8 >= "':DATE():'" OR = ""'
	W_Temp=W_Temp:W_TempTer
	IF W_Type="S" THEN
		W_Temp=W_Temp:W_TempBis
	END
	W_Temp = W_Temp:' OR AVEC 7 >= "':DATE():'"' 
	W_Temp=W_Temp:W_TempTer
	IF W_Type="S" THEN
		W_Temp=W_Temp:W_TempBis
	END
	W_Temp = W_Temp:' OR AVEC 8 >= "':W_Date:'"' 
	W_Temp=W_Temp:W_TempTer
	IF W_Type="S" THEN
		W_Temp=W_Temp:W_TempBis
	END

	W_Temp=W_Temp:' PAR @ID'

	EXECUTE W_Temp
	EXECUTE 'SAUVE-LISTE W_ListeReq'
	EXECUTE "LISTE W_ListeReq" RETURNING MSGCODE

RETURN


***********************************************************************************
* Traitement de la slection
20

   W_CodeAidant=""
   W_AncCodeAidant=""
   i=0
   W_Fini="FAUX"
   LOOP
      READNEXT W_CleReq FROM W_ListeReq ELSE W_Fini="VRAI"
   WHILE W_Fini="FAUX" DO
        W_CodeAidant=W_CleReq[1,5]

        IF W_CodeAidant # W_AncCodeAidant THEN
       		READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CodeAidant ELSE ENR_CIVILAIDANT=""
			READ ENR_CONTRAT FROM F.CONTRAT,W_CleReq ELSE ENR_CONTRAT=""
            READ ENR_SECTEUR FROM F.SECTEUR,ENR_CIVILAIDANT<31> ELSE ENR_SECTEUR=""
 
          	IF ENR_CONTRAT<4> = "D" THEN
         		W_TypeContrat="1"
            	END ELSE
               		W_TypeContrat="2"
            	END

            	* Mise en forme adresse 
            	Indice=5
            	Tableau=ENR_CIVILAIDANT
            	GOSUB 30
		
				W_Prestation=""
				W_SauvePrest=""
				W_SauvePrest=ENR_CONTRAT<36>

				W_Count=DCOUNT(ENR_CONTRAT<36>,CHAR(253))
				FOR iAct=1 TO W_Count
					READ ENR_TLGACTIVITES FROM F.TLGACTIVITES,ENR_CONTRAT<36,iAct>[1,3] ELSE ENR_TLGACTIVITES=""
					FOR iAct2=1 TO DCOUNT(ENR_TLGACTIVITES<3>,CHAR(253))
						IF ENR_TLGACTIVITES<3,iAct2> = ENR_CONTRAT<36,iAct> THEN
							W_Prestation=W_Prestation:";":ENR_TLGACTIVITES<2,iAct2>
						END
					NEXT iAct2
				NEXT iAct

				i=i+1
*            	ENR_FUSION<i>=";":ENR_CIVILAIDANT<1>:";":ENR_CIVILAIDANT<2>:";":ENR_CIVILAIDANT<3>:";":MiseEnFormeAdresse1
*            	ENR_FUSION<i>=ENR_FUSION<i>:";":ENR_CIVILAIDANT<9>:";":ENR_SECTEUR<1>:";":ENR_CIVILAIDANT<10>:";":ENR_CIVILAIDANT<11>:";":W_FraisKm:";":W_MinuteCompl:";":ENR_CIVILAIDANT<12>
*            	ENR_FUSION<i>=ENR_FUSION<i>:";;":W_TypeContrat:";":W_CodeAidant:W_Prestation


            	ENR_FUSION<i>=";":ENR_CIVILAIDANT<1>:";":ENR_CIVILAIDANT<2>:";":ENR_CIVILAIDANT<3>:";"
            	ENR_FUSION<i>=ENR_FUSION<i>:";;":ENR_SECTEUR<1>:";;;":W_FraisKm:";":W_MinuteCompl:";"
            	ENR_FUSION<i>=ENR_FUSION<i>:";;;":W_CodeAidant:W_Prestation

			IF W_SauveAidant="" THEN
				W_SauveAidant=W_CodeAidant
			END ELSE
				IF W_CodeAidant > W_SauveAidant THEN
					W_SauveAidant=W_CodeAidant
				END
			END

		END ELSE
			READ ENR_CONTRAT FROM F.CONTRAT,W_CleReq ELSE ENR_CONTRAT=""
			W_Prestation=""
			W_Count=DCOUNT(ENR_CONTRAT<36>,CHAR(253))
			FOR iAct=1 TO W_Count
				k=1
				LOOP
				UNTIL ENR_CONTRAT<36,iAct>=W_SauvePrest<k> OR W_SauvePrest<k>=""
					k=k+1
				REPEAT
				IF W_SauvePrest<k>="" THEN
					READ ENR_TLGACTIVITES FROM F.TLGACTIVITES,ENR_CONTRAT<36,iAct>[1,3] ELSE ENR_TLGACTIVITES=""
					FOR iAct2=1 TO DCOUNT(ENR_TLGACTIVITES<3>,CHAR(253))
						IF ENR_TLGACTIVITES<3,iAct2> = ENR_CONTRAT<36,iAct> THEN
							W_Prestation=W_Prestation:";":ENR_TLGACTIVITES<2,iAct2>
						END
					NEXT iAct2					
					W_SauvePrest<k>=ENR_CONTRAT<36,iAct>
				END
			NEXT iAct
	        ENR_FUSION<i>=ENR_FUSION<i>:W_Prestation
			
	    END

	W_AncCodeAidant=W_CodeAidant
   REPEAT
   
 RETURN

************************************************************************
* Mise en forme adresse 
30

    MiseEnFormeAdresse1 = ""

    IF Tableau<Indice> # "" THEN
        MiseEnFormeAdresse1 = Tableau<Indice>:" "
    END
    
    IF Tableau<Indice + 1> # "" THEN
        MiseEnFormeAdresse1 = MiseEnFormeAdresse1:Tableau<Indice + 1> :" "
    END
    
    IF Tableau<Indice + 2> # "" THEN
        MiseEnFormeAdresse1 = MiseEnFormeAdresse1:Tableau<Indice + 2> :" "
    END
    
    IF Tableau<Indice + 3> # "" THEN
        MiseEnFormeAdresse1 = MiseEnFormeAdresse1:Tableau<Indice + 3>
    END

RETURN

************************************************************************
* REQUETE ASSOCIATION
40

	W_Asso=""
	W_ListeAsso=""

	W_Requete = 'SELECT ASSOCIATION AVEC 38 = "':W_Systeme:'" PAR 0'

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

	IF MSGCODE<1> # 209 THEN
		SELECT F.ASSOCIATION TO W_Asso

   		W_Fini="FAUX"
   		LOOP
      			READNEXT W_CleAsso FROM W_Asso ELSE W_Fini="VRAI"
   		WHILE W_Fini="FAUX" DO
			W_ListeAsso<DCOUNT(W_ListeAsso,CHAR(254))+1>=W_CleAsso
		REPEAT
	END

	W_CountAsso=DCOUNT(W_ListeAsso,CHAR(254))

RETURN
