***********************************************************************************
***********************************************************************************
**                                                                               **
** Statistiques sur la periode de rfrence                                      **
**                                                                               **
**                                                                               **
** Le 26/04/04                                                  Fanny            **
**                                                                               **
***********************************************************************************
***********************************************************************************

SUBROUTINE SSIADSTATDUREESUIVI(RETURNVAL, ENTREE, SORTIE)
RETURNVAL=1000

***********************************************************************************
**                                                                               **
**                       Ouverture des fichiers                                  **
**                                                                               **
***********************************************************************************
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
OPEN "", "ACTIVITES" TO F.ACTIVITES ELSE STOP
OPEN "", "ACTIVITESAIDE" TO F.ACTIVITESAIDE ELSE STOP
OPEN "", "CIVILAIDE" TO F.CIVILAIDE ELSE STOP
OPEN "", "ENVIRONAIDE" TO F.ENVIRONAIDE ELSE STOP
OPEN "", "RESPONSABLE" TO F.RESPONSABLE ELSE STOP
OPEN "", "SECTEUR" TO F.SECTEUR ELSE STOP
OPEN "", "SSIADACCORDS" TO F.SSIADACCORDS ELSE STOP
OPEN "", "SSIADELEMGEST" TO F.SSIADELEMGEST ELSE STOP
OPEN "", "SSIADREGIME" TO F.SSIADREGIME ELSE STOP
OPEN "", "STATAIDE" TO F.STATAIDE ELSE STOP
OPEN "", "TABLES" TO F.TABLES ELSE STOP

EXECUTE "DATE.FORMAT"
W_RequeteSsiadAccord=""
W_RequeteSsiadAccord2=""

***********************************************************************************
**                                                                               **
**                      Rcupration des arguments                               **
**                                                                               **
***********************************************************************************

! le numro de l'association
W_Asso = ENTREE<1>

! le type de selection (A = activite SE= service SA= sans)
W_ChoixSelect = ENTREE<2>

! le numro de la selection
W_CodeSelect = ENTREE<3>

! le type de slection/tri (R= Responsable, S= Secteur ou C=Commune)
W_ChoixTri = ENTREE<4>

! le code de cette slection (ou le libel pour la commune)
W_CodeTri = ENTREE<5>

! le dbut de la priode de rfrence
W_Debut = ICONV(ENTREE<6>,"D4/")

! la fin   de la priode de rfrence
W_Fin = ICONV(ENTREE<7>,"D4/")

! le type de statistique (ES=Entres/Sorties, DS=Dure du suivi, IL=Intervenants libraux) 
W_TypeStat = ENTREE<8>

! le type d'dition (F=fichier ou S=statistique)
W_Edit = ENTREE<9>

! La requte dynamique cre
W_Requete=""

W_Requete = 'SELECT SSIADACCORDS AVEC 3 ="':W_Asso:']" AND AVEC 1 <= "':W_Fin:'" AND AVEC 2 >= "':W_Fin:'"'

IF W_CodeSelect # "" THEN
	IF W_ChoixSelect="A" THEN
   		W_Requete = W_Requete:' AND AVEC 3 = "':W_Asso:W_CodeSelect:'"'
	END ELSE
		IF W_ChoixSelect="S" THEN
   			W_Requete = W_Requete:' AND AVEC CodeService = "':W_CodeSelect:'"'
		END
	END
END

IF W_ChoixTri = "R" THEN
   IF W_CodeTri # "" THEN

      W_Requete = W_Requete:' AND AVEC CodeResponsable ="':W_CodeTri:'"'
   END ELSE

      W_Requete = W_Requete:' PAR LibResponsable'
   END
END

IF W_ChoixTri = "S" THEN
   IF W_CodeTri # "" THEN

      W_Requete = W_Requete:' AND AVEC CodeSecteur ="':W_CodeTri:'"'
   END ELSE

      W_Requete = W_Requete:' PAR LibSecteur'
   END
END

IF W_ChoixTri = "C" THEN
   IF W_CodeTri # "" THEN

      W_Requete = W_Requete:' AND AVEC Commune ="':W_CodeTri:'"'

   END ELSE

      W_Requete = W_Requete:' PAR Commune'
   END
END

W_Requete = W_Requete:' PAR CodeAide PAR 1'

EXECUTE W_Requete
EXECUTE 'SAUVE-LISTE W_RequeteSsiadAccord'
EXECUTE "LISTE W_RequeteSsiadAccord" RETURNING MSGCODE
IF MSGCODE<1>=209 THEN
   * Sortie de la SUBROUTINE
   RETURNVAL=2000
   RETURN
END ELSE
   SELECT F.SSIADACCORDS TO W_RequeteSsiadAccord
END

W_Fini = "Faux"
W_DernierAide = 0

		   W_Tableau=""
               BEGIN CASE
                  CASE W_ChoixTri ="R"
			   W_Tableau = "Responsable"
                  CASE W_ChoixTri ="S"
			   W_Tableau = "Secteur"
                  CASE W_ChoixTri ="C"
			   W_Tableau = "Commune"
		      CASE 1
			   W_Tableau = "Totalit"
               END CASE
		   W_Tableau = W_Tableau:";Duree du suivi"
		   W_Tableau = W_Tableau:";Nombre de bnficiaires au ":OCONV(W_Fin,"D4/")
		   W_Tableau = W_Tableau:";Nombre de sorties de prise en charge en ":OCONV(W_Fin,"D4/")
		   
		   READ ENR_TABLES FROM F.TABLES, "DUREESUIVISID" ELSE ENR_TABLES = ""	
		   FOR i=1 TO DCOUNT(ENR_TABLES<2>,CHAR(253))
		   	   W_Tableau<i+1,2> = ENR_TABLES<2,i>
			   W_Tableau<i+1,3> = 0 
			   W_Tableau<i+1,4> = 0
		   NEXT
		   

****************************
* REMPLISSAGE 1re COLONNE *
****************************

W_LibellePrec =""
LOOP

   READNEXT W_CodeSsiadAccords FROM W_RequeteSsiadAccord ELSE W_Fini = "Vrai"

WHILE W_Fini = "Faux"

   IF W_CodeSsiadAccords[1,5] = W_DernierAide AND W_TypeStat = "DS" AND W_Presence # 0 THEN
   END ELSE

      W_DernierAide = W_CodeSsiadAccords[1,5]

      W_EntreePrActive=""
      READ ENR_SSIADACCORDS FROM F.SSIADACCORDS,W_CodeSsiadAccords THEN
         W_EntreePrActive<1>=W_CodeSsiadAccords 
         W_EntreePrActive<2>=W_Fin
         W_EntreePrActive<3>=W_Fin
         W_EntreePrActive<4>= "E" 
	   W_EntreePrActive<5>=W_ChoixSelect
	   IF W_ChoixSelect = "A" THEN
	   	W_EntreePrActive<6>=W_Asso:W_CodeSelect
	   END ELSE
		W_EntreePrActive<6>=W_CodeSelect
	   END
      END


      ! Appel de la fonction de calcul du nombre de jour ou de la prsence (E = prsent)
      CALL SSIADPERIODEACTIVE ("",W_EntreePrActive,W_Presence)

	* l'aid est actif au moins une journe sur la selection
      IF W_Presence # 0 THEN
	   W_CodeAide=W_CodeSsiadAccords[1,5]

	   READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_CodeAide THEN
            W_Libelle = ""
            IF W_ChoixTri = "R" THEN
               READ ENR_RESPONSABLE FROM F.RESPONSABLE,ENR_CIVILAIDE<39> ELSE ENR_RESPONSABLE = ""
               W_Libelle = ENR_RESPONSABLE<1>
            END

            IF W_ChoixTri = "S" THEN
               READ ENR_SECTEUR FROM F.SECTEUR,ENR_CIVILAIDE<40>[1,3] ELSE ENR_SECTEUR = ""
               W_Libelle = ENR_SECTEUR<1>
            END

            IF W_ChoixTri = "C" THEN
               W_Libelle = ENR_CIVILAIDE<11>
            END
	
		* libelle de la selection
		FOR j= 1 TO DCOUNT(ENR_TABLES<2>,CHAR(253))
		   W_Tableau<j+1,1> = W_Libelle
		NEXT   
		
		* Date de la dernire entre
		READ ENR_ACTIVITESAIDE FROM F.ACTIVITESAIDE, W_CodeAide ELSE ENR_ACTIVITESAIDE =""
		
		
		FOR i=1 TO DCOUNT(ENR_ACTIVITESAIDE<1>,CHAR(253))
		   W_NbJours = 0
		   READ ENR_ACTIVITES FROM F.ACTIVITES, ENR_ACTIVITESAIDE<1,i> ELSE ENR_ACTIVITES =""

		   IF ENR_ACTIVITES<12> = "S" THEN
			IF W_ChoixSelect = "A" THEN
			   IF ENR_ACTIVITESAIDE<1,i> = W_Asso:W_CodeSelect THEN 
				W_NbJours = W_Fin - ENR_ACTIVITESAIDE<2,i>
				EXIT
			   END
			END ELSE
			   IF W_ChoixSelect = "SE" THEN
			     	IF ENR_ACTIVITES<13> = W_CodeSelect THEN
				   W_NbJours  = W_Fin - ENR_ACTIVITESAIDE<2,i>
				   EXIT		
				END
			   END ELSE
				W_NbJours  = W_Fin - ENR_ACTIVITESAIDE<2,i>
				EXIT
			   END
		      END
               END
		NEXT i
		FOR j= 1 TO DCOUNT(ENR_TABLES<2>,CHAR(253))
		   IF W_NbJours >= ENR_TABLES<3,j> AND W_NbJours< ENR_TABLES<4,j> THEN
			W_Tableau<j+1,3>= W_Tableau<j+1,3> + 1
			EXIT  
		   END 
		NEXT
	   END
	END
   END

W_LibellePrec = W_Libelle

REPEAT

****************************
* REMPLISSAGE 2me COLONNE *
****************************

W_Requete =""
W_Requete = 'SELECT SSIADACCORDS AVEC 3 ="':W_Asso:']" AND AVEC 1 <= "':W_Fin:'" AND AVEC 2 >= "':W_Debut:'"'

IF W_CodeSelect # "" THEN
	IF W_ChoixSelect="A" THEN
   		W_Requete = W_Requete:' AND AVEC 3 = "':W_Asso:W_CodeSelect:'"'
	END ELSE
		IF W_ChoixSelect="S" THEN
   			W_Requete = W_Requete:' AND AVEC CodeService = "':W_CodeSelect:'"'
		END
	END
END

IF W_ChoixTri = "R" THEN
   IF W_CodeTri # "" THEN

      W_Requete = W_Requete:' AND AVEC CodeResponsable ="':W_CodeTri:'"'
   END ELSE

      W_Requete = W_Requete:' PAR LibResponsable'
   END
END

IF W_ChoixTri = "S" THEN
   IF W_CodeTri # "" THEN

      W_Requete = W_Requete:' AND AVEC CodeSecteur ="':W_CodeTri:'"'
   END ELSE

      W_Requete = W_Requete:' PAR LibSecteur'
   END
END

IF W_ChoixTri = "C" THEN
   IF W_CodeTri # "" THEN

      W_Requete = W_Requete:' AND AVEC Commune ="':W_CodeTri:'"'

   END ELSE

      W_Requete = W_Requete:' PAR Commune'
   END
END

W_Requete = W_Requete:' PAR CodeAide PAR 1'

EXECUTE W_Requete
EXECUTE 'SAUVE-LISTE W_RequeteSsiadAccord2'
EXECUTE "LISTE W_RequeteSsiadAccord2" RETURNING MSGCODE
IF MSGCODE<1>=209 THEN
   * Sortie de la SUBROUTINE
   RETURNVAL=2000
   RETURN
END ELSE
   SELECT F.SSIADACCORDS TO W_RequeteSsiadAccord2
END

W_Fini = "Faux"
W_DernierAide = 0

LOOP

   READNEXT W_CodeSsiadAccords2 FROM W_RequeteSsiadAccord2 ELSE W_Fini = "Vrai"

WHILE W_Fini = "Faux"

   IF W_CodeSsiadAccords2[1,5] = W_DernierAide AND W_TypeStat = "DS" AND W_Presence # 0 THEN
   END ELSE

      W_DernierAide = W_CodeSsiadAccords2[1,5]

      W_EntreePrActive=""
      READ ENR_SSIADACCORDS2 FROM F.SSIADACCORDS,W_CodeSsiadAccords2 THEN
         W_EntreePrActive<1>=W_CodeSsiadAccords2 
         W_EntreePrActive<2>=W_Debut
         W_EntreePrActive<3>=W_Fin
         W_EntreePrActive<4>= "E" 
	   W_EntreePrActive<5>=W_ChoixSelect
	   IF W_ChoixSelect = "A" THEN
	   	W_EntreePrActive<6>=W_Asso:W_CodeSelect
	   END ELSE
		W_EntreePrActive<6>=W_CodeSelect
	   END

      END

      ! Appel de la fonction de calcul du nombre de jour ou de la prsence (E = prsent)
      CALL SSIADPERIODEACTIVE ("",W_EntreePrActive,W_Presence)

	!l'aid est actif au moins une journe sur la selection
      IF W_Presence # 0 THEN

	   W_CodeAide=W_CodeSsiadAccords2[1,5] 
		
		* Date de la dernire entre
		READ ENR_ACTIVITESAIDE FROM F.ACTIVITESAIDE, W_CodeAide ELSE ENR_ACTIVITESAIDE =""
		
		
		FOR i=1 TO DCOUNT(ENR_ACTIVITESAIDE<1>,CHAR(253))
		   W_NbJours = 0
		   READ ENR_ACTIVITES FROM F.ACTIVITES, ENR_ACTIVITESAIDE<1,i> ELSE ENR_ACTIVITES =""

		   IF ENR_ACTIVITES<12> = "S" THEN
			IF ENR_ACTIVITESAIDE<3,i> #"" THEN
			   IF W_Debut=< ENR_ACTIVITESAIDE<3,i> AND W_Fin >= ENR_ACTIVITESAIDE<3,i> THEN
			      IF W_ChoixSelect = "A" THEN
			         IF ENR_ACTIVITESAIDE<1,i> = W_Asso:W_CodeSelect THEN 
				      W_NbJours = ENR_ACTIVITESAIDE<3,i>  - ENR_ACTIVITESAIDE<2,i>
			         END
			      END ELSE
			         IF W_ChoixSelect = "SE" THEN
			     	      IF ENR_ACTIVITES<13> = W_CodeSelect THEN
				         W_NbJours  = ENR_ACTIVITESAIDE<3,i> - ENR_ACTIVITESAIDE<2,i>		
				      END
			         END ELSE
				      W_NbJours  = ENR_ACTIVITESAIDE<3,i>  - ENR_ACTIVITESAIDE<2,i>
			         END
		            END
			   END 
			END
               END
		   FOR j= 1 TO DCOUNT(ENR_TABLES<2>,CHAR(253))	
		      IF W_NbJours > ENR_TABLES<3,j> AND W_NbJours< ENR_TABLES<4,j> THEN
			   W_Tableau<j+1,4>= W_Tableau<j+1,4> + 1 
		      END
		   NEXT
		NEXT i
		
	END
   END

REPEAT


********************************
* renvoi des informations  VB *
* ou dition d'un fichier csv  * 
********************************
W_Ordre = 0
IF W_Edit = "F" THEN

   CONVERT CHAR(253) TO ";" IN W_Tableau

   W_Date = OCONV(DATE(),"D4/")
   W_Date = ICONV(W_Date,"MCN")
   W_Date=W_Date[5,4]:W_Date[3,2]:W_Date[1,2]

   W_ClefFichier = "SSIADSTATDUREESUIVI":"-":W_Asso:"-":W_Date:"-"

   W_Ordre = 0
   LOOP
      W_Ordre = W_Ordre + 1
      READ ENR_STATAIDE FROM F.STATAIDE,W_ClefFichier:W_Ordre:".csv" ELSE ENR_STATAIDE = ""
   UNTIL ENR_STATAIDE = ""
   REPEAT

   WRITE W_Tableau TO F.STATAIDE,W_ClefFichier:W_Ordre:".csv"

END

SORTIE=W_Tableau
W_Ordre= W_Ordre "R%3"
RETURNVAL=3:W_Ordre
RETURN

