********************************************************
* DETAIL DES HRES PRESTATAIRE PAR AIDE
* JUILLET 2001                          
* VANESSA
********************************************************

* OUVERTURE DES FICHIERS

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ACTIVITESAIDE" TO F.ACTIVITESAIDE ELSE STOP
OPEN "","ACTIVITES" TO F.ACTIVITES ELSE STOP
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","CIVILAIDE" TO F.CIVILAIDE ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","DETAILPREST" TO F.DETAILPREST ELSE STOP
OPEN "","DETAILPRESTINV" TO F.DETAILPRESTINV ELSE STOP
OPEN "","RUBSAISIE" TO F.RUBSAISIE ELSE STOP
OPEN "","SECTEUR" TO F.SECTEUR ELSE STOP
OPEN "","TEMPO" TO F.TEMPO ELSE STOP

********************************************************
* RECUPERATION PARAMETRES PASSES A LA PROCEDURE

PROCREAD ARGUMENTS ELSE STOP
W_PERIODE=FIELD(ARGUMENTS," ",2)
W_ENTITE=FIELD(ARGUMENTS," ",3)
W_TRI=FIELD(ARGUMENTS," ",4)

********************************************************
* INITIALISATION DES VARIABLES

* BOOLEEN
W_REQVIDE="FAUX"

* ENTIER
W_RANG=0
W_RANGDET=0
W_TOTALHRES=0

* STRING
W_ANCIENAIDE=""
W_ANCIENSECTEUR=""
W_ANCIENRESP=""
W_ANCIENCOM=""
W_CODEAIDE=""
W_SECTEURACTUEL=""
W_RESPACTUEL=""
W_COMACTUEL=""
W_Temp=""
W_PlaceMV=""
W_Rub=""
W_CodeInvAv=""
W_Activites=""
W_NbActivites=0
W_ReqDetHresPrestAide=""
W_ReqAct=""

* TAB. DYNAMIQUE
ENR_TEMPO=""
ENR_DETAILPRESTINV=""
********************************************************
* PROGRAMME PRINCIPAL

   EXECUTE 'SELECT TEMPO AVEC @ID = "DETHRESPRESTAIDE]"'
   W_FINI="FAUX"

   LOOP
      READNEXT W_CLE ELSE W_FINI="VRAI"
   WHILE W_FINI="FAUX" DO
      DELETE F.TEMPO,W_CLE
   REPEAT

   EXECUTE 'VIDER-FICHIER DETAILPRESTINV'

   GOSUB 20

   W_PARAMS=""
   W_SORTIE=""
   W_PARAMS<1>=W_ENTITE
   W_PARAMS<2>=W_PERIODE
   W_PARAMS<3>=""
   W_PARAMS<4>=W_NbActivites
   W_PARAMS<5>=W_Activites

   CALL GENEREDETAILPRESTINV(W_PARAMS,W_SORTIE)

   W_Temp = 'SSELECT DETAILPRESTINV AVEC @ID = "[':W_PERIODE:'" AND AVEC EntitePrestInv = "':W_ENTITE:'"'
   BEGIN CASE
      CASE W_TRI=1
         W_Temp=W_Temp:' PAR LibSecteur'
      CASE W_TRI=2
         W_Temp=W_Temp:' PAR LibResp'
      CASE W_TRI=3
         W_Temp=W_Temp:' PAR LibCommune'
   END CASE
   W_Temp=W_Temp:' PAR NomAideInv PAR PrenomAideInv'

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

   IF MSGCODE<1> # 209 THEN
      SELECT F.DETAILPRESTINV TO W_ReqDetHresPrestAide

      LOOP
         READNEXT CLE FROM W_ReqDetHresPrestAide ELSE 
            W_REQVIDE="VRAI"
         END
      UNTIL W_REQVIDE="VRAI" DO

         * LECTURE DETAILPRESTINV
         READ ENR_DETAILPRESTINV FROM F.DETAILPRESTINV,CLE ELSE
	    ENR_DETAILPRESTINV=""
         END

         * STOCKE LES CODES AIDE
         W_CODEAIDE=CLE[1,5]

         * LECTURE CIVILAIDE
         READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_CODEAIDE ELSE ENR_CIVILAIDE=""

         * STOCKE LE NOUVEAU SECTEUR
         W_SECTEURACTUEL=ENR_CIVILAIDE<40>[1,3]
         W_RESPACTUEL=ENR_CIVILAIDE<39>
         W_COMACTUEL=ENR_CIVILAIDE<11>

         BEGIN CASE
            CASE W_TRI = "1"
               * TEST SI CHANGEMENT DE SECTEUR

	       IF W_ANCIENSECTEUR # W_SECTEURACTUEL THEN
                  IF W_ANCIENSECTEUR # "" THEN 
                     IF W_RANG # 1 THEN	
	                ENR_TEMPO<W_RANG,6>="TOTAL"
	                ENR_TEMPO<W_RANG,7>=W_TOTALHRES/100
	                W_RANG=W_RANG+1
		     END

   		     WRITE ENR_TEMPO ON F.TEMPO,"DETHRESPRESTAIDE":W_ENTITE:W_PERIODE:W_ANCIENSECTEUR
	 	     ENR_TEMPO=""
		     W_RANG=0
	
		     * AFFECTE LES NOUVELLES DONNEES
		     W_ANCIENAIDE="" 
		     W_ANCIENSECTEUR=W_SECTEURACTUEL
	          END ELSE 	
		     W_ANCIENSECTEUR=W_SECTEURACTUEL
	          END
               END
            CASE W_TRI = "2"	 
               * TEST SI CHANGEMENT DE RESPONSABLE

	       IF W_ANCIENRESP # W_RESPACTUEL THEN
                  IF W_ANCIENRESP # "" THEN 
                     IF W_RANG # 1 THEN	
	                ENR_TEMPO<W_RANG,6>="TOTAL"
	                ENR_TEMPO<W_RANG,7>=W_TOTALHRES/100
	                W_RANG=W_RANG+1
		     END

   		     WRITE ENR_TEMPO ON F.TEMPO,"DETHRESPRESTAIDE":W_ENTITE:W_PERIODE:W_ANCIENRESP
	 	     ENR_TEMPO=""
		     W_RANG=0
	
		     * AFFECTE LES NOUVELLES DONNEES
		     W_ANCIENAIDE="" 
		     W_ANCIENRESP=W_RESPACTUEL
	          END ELSE 	
		     W_ANCIENRESP=W_RESPACTUEL
	          END
               END
            CASE W_TRI = "3"	 
               * TEST SI CHANGEMENT DE COMMUNE

	       IF W_ANCIENCOM # W_COMACTUEL THEN
                  IF W_ANCIENCOM # "" THEN 
                     IF W_RANG # 1 THEN	
	                ENR_TEMPO<W_RANG,6>="TOTAL"
	                ENR_TEMPO<W_RANG,7>=W_TOTALHRES/100
	                W_RANG=W_RANG+1
		     END

   		     WRITE ENR_TEMPO ON F.TEMPO,"DETHRESPRESTAIDE":W_ENTITE:W_PERIODE:W_ANCIENCOM
	 	     ENR_TEMPO=""
		     W_RANG=0
	
		     * AFFECTE LES NOUVELLES DONNEES
		     W_ANCIENAIDE="" 
		     W_ANCIENCOM=W_COMACTUEL
	          END ELSE 	
		     W_ANCIENCOM=W_COMACTUEL
	          END
               END
         END CASE
          
         * TEST SI CHANGEMENT AIDE
         IF W_ANCIENAIDE # W_CODEAIDE THEN

 	    IF W_RANG # 1 THEN	
	       ENR_TEMPO<W_RANG,6>="TOTAL"
	       ENR_TEMPO<W_RANG,7>=W_TOTALHRES/100
	       W_RANG=W_RANG+1
	    END

	    W_TOTALHRES=0
            W_RANGDET=0

	    * ECRITURE NOUVEL AIDE
	    ENR_TEMPO<W_RANG,1>=W_CODEAIDE
	    ENR_TEMPO<W_RANG,2>=ENR_CIVILAIDE<2>:" ":ENR_CIVILAIDE<3>
            ENR_TEMPO<W_RANG,3>=ENR_CIVILAIDE<5>:" ":ENR_CIVILAIDE<6>:" ":ENR_CIVILAIDE<7>:" ":ENR_CIVILAIDE<8>
	    IF ENR_TEMPO<W_RANG,3>="" THEN ENR_TEMPO<W_RANG,3>=ENR_CIVILAIDE<9>
            ENR_TEMPO<W_RANG,4>=ENR_CIVILAIDE<10>:" ":ENR_CIVILAIDE<11>

	    * AFFECTATION DES AIDANTS
	    GOSUB 10

         END ELSE
	    W_RANG=W_RANG+1

	    * AFFECTATION DES AIDANTS
	    GOSUB 10

         END
         
      REPEAT

      IF W_RANG # 1 THEN
         ENR_TEMPO<W_RANG,6>="TOTAL"
         ENR_TEMPO<W_RANG,7>=W_TOTALHRES/100
         W_RANG=W_RANG+1
      END

      * ECRITURE FINALE
      BEGIN CASE
         CASE W_TRI="1"
            WRITE ENR_TEMPO ON F.TEMPO,"DETHRESPRESTAIDE":W_ENTITE:W_PERIODE:W_ANCIENSECTEUR
         CASE W_TRI="2"
            WRITE ENR_TEMPO ON F.TEMPO,"DETHRESPRESTAIDE":W_ENTITE:W_PERIODE:W_ANCIENRESP
         CASE W_TRI="3"
            WRITE ENR_TEMPO ON F.TEMPO,"DETHRESPRESTAIDE":W_ENTITE:W_PERIODE:W_ANCIENCOM
         CASE W_TRI="4"
            WRITE ENR_TEMPO ON F.TEMPO,"DETHRESPRESTAIDE":W_ENTITE:W_PERIODE
      END CASE
   END

   UNLOCK 0

STOP

********************************************************
* AFFECTATION DES AIDES AUX AIDANTS

10 *

    W_RANGDET=1

    LOOP 
	 UNTIL ENR_DETAILPRESTINV<1,W_RANGDET>="" DO

         * LECTURE CONTRAT
         READ ENR_CONTRAT FROM F.CONTRAT,ENR_DETAILPRESTINV<1,W_RANGDET> ELSE ENR_CONTRAT=""

         * LECTURE CIVILAIDANT 
         READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,ENR_DETAILPRESTINV<1,W_RANGDET>[1,5] ELSE ENR_CIVILAIDANT=""

	   NBHRES = 0
	   IF ENR_DETAILPRESTINV<3,W_RANGDET> # "" THEN
		NBHRES = ENR_DETAILPRESTINV<3,W_RANGDET>
	   END ELSE
		IHRES = 1
		LOOP
		UNTIL ENR_DETAILPRESTINV<7,W_RANGDET,IHRES> = "" DO
			NBHRES = NBHRES + ENR_DETAILPRESTINV<7,W_RANGDET,IHRES>
			IHRES = IHRES + 1
		REPEAT
	   END

         ENR_TEMPO<W_RANG,5>=ENR_DETAILPRESTINV<1,W_RANGDET>[1,5]
         ENR_TEMPO<W_RANG,6>=ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>
         ENR_TEMPO<W_RANG,7>=NBHRES/100

         * LECTURE ACTIVITE DE L'AIDE
         READ ENR_ACTIVITESAIDE FROM F.ACTIVITESAIDE,W_CODEAIDE ELSE ENR_ACTIVITESAIDE=""
         IF ENR_ACTIVITESAIDE<5>="1" THEN
            ENR_TEMPO<W_RANG,8>=""
         END ELSE
	    ENR_TEMPO<W_RANG,8>="NON"
         END

         W_TOTALHRES=W_TOTALHRES+NBHRES

	 W_RANG=W_RANG+1
         W_RANGDET=W_RANGDET+1
    REPEAT
RETURN

********************************************************
* REQUETE SUR LES ACTIVITES

20 

   W_Temp = 'SSELECT ACTIVITES AVEC @ID = "':W_ENTITE:']" AND AVEC 12 = "P" PAR @ID'

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

   IF MSGCODE<1> # 209 THEN

      W_FINI="FAUX"
      k=0

      SELECT F.ACTIVITES TO W_ReqAct

      LOOP
         READNEXT W_CleAct FROM W_ReqAct ELSE W_FINI="VRAI"
      WHILE W_FINI = "FAUX" DO
         k=k+1
         W_Activites<k>=W_CleAct
      REPEAT
   END

   W_NbActivites=k

RETURN
