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

SUBROUTINE SSIADSTATENTSOR(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 "", "SSIADSERVICE" TO F.SSIADSERVICE 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>

!Code de la commune pour executer le SSIADREGISTREMED
W_CodeCommune = ENTREE<10>

		   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:";"
		   W_Tableau = W_Tableau:";Nombre de journes finances;Nombre de journes raliss"
		   W_Tableau = W_Tableau:";Nombre de bnficiaires au 1er jour du mois;Nombre d'entres au cours du mois"
		   W_Tableau = W_Tableau:";Nombre de sorties au cours du mois"
		   
		   W_Debut = OCONV(W_Debut,"D4/")
		   W_Fin = OCONV(W_Fin,"D4/") 			
		   i = 0
		   LOOP
			i=i+1
			IF W_Debut[4,2]=13 THEN
			   W_Debut = W_Debut[1,3]:"01/":W_Debut[7,5]+1			
			END
		   WHILE ICONV(W_Debut,"D4/") < ICONV(W_Fin,"D4/")
			W_Tableau<i+1,2> = W_Debut 
			IF W_Debut[4,1] = 0 AND W_Debut[5,1]<> 9 THEN
			   W_Mois = "0":W_Debut[5,1] + 1
			END ELSE
			   W_Mois = W_Debut[4,2] + 1
			END
			W_Debut= W_Debut[1,2]:"/": W_Mois :"/":W_Debut[7,5]	
			
		   REPEAT  
		   W_NbMois = i-1
	
		   i = 1
		   FOR i = 1 TO W_NbMois
			W_Tableau<i+1,3> = 0
			W_Tableau<i+1,4> = 0
			W_Tableau<i+1,5> = 0
			W_Tableau<i+1,6> = 0
			W_Tableau<i+1,7> = 0
		   NEXT i 


		   
            	W_Libelle = ""
            	IF W_ChoixTri = "R" THEN
               	   READ ENR_RESPONSABLE FROM F.RESPONSABLE,W_CodeTri ELSE ENR_RESPONSABLE = ""
               	   W_Libelle = ENR_RESPONSABLE<1>
            	END

            	IF W_ChoixTri = "S" THEN
                     READ ENR_SECTEUR FROM F.SECTEUR,W_CodeTri ELSE ENR_SECTEUR = ""
               	   W_Libelle = ENR_SECTEUR<1>
                  END

            	IF W_ChoixTri = "C" THEN
               	   W_Libelle = W_CodeTri
            	END

		      * libelle de la selection
			FOR j= 1 TO W_NbMois
		   	   W_Tableau<j+1,1> = W_Libelle
			NEXT   
	    	   
		   	
****************************
* REMPLISSAGE 1re COLONNE *
****************************

IF W_ChoixSelect = "SE" THEN
   READ ENR_SSIADSERVICE FROM F.SSIADSERVICE, W_Asso:W_CodeSelect ELSE ENR_SSIADSERVICE =""

   FOR i=1 TO W_NbMois 	
   	FOR j = 1 TO DCOUNT(ENR_SSIADSERVICE <7>,CHAR(253))
	   IF ENR_SSIADSERVICE <7,j> <= ICONV(W_Tableau<i+1,2>,"D4/")  THEN
		IF i < W_NbMois THEN	
	         W_Tableau<i+1,3> = ENR_SSIADSERVICE <8,j>* (ICONV(W_Tableau<i+2,2>,"D4/") -ICONV(W_Tableau<i+1,2>,"D4/"))
	   	END ELSE
		   W_Tableau<i+1,3> = ENR_SSIADSERVICE <8,j>* (ICONV(W_Fin,"D4/")+1 -ICONV(W_Tableau<i+1,2>,"D4/"))
		END
	      EXIT
	   END
      NEXT
   NEXT

END ELSE
   IF W_ChoixSelect = "A" THEN
	READ ENR_ACTIVITES FROM F.ACTIVITES, W_Asso:W_CodeSelect ELSE ENR_ACTIVITE =""
	READ ENR_SSIADSERVICE FROM F.SSIADSERVICE, W_Asso:ENR_ACTIVITES<13> ELSE ENR_SSIADSERVICE =""	
      FOR i=1 TO W_NbMois 	
   	   FOR j = 1 TO DCOUNT(ENR_SSIADSERVICE <7>,CHAR(253))
	      IF ENR_SSIADSERVICE <7,j> <= ICONV(W_Tableau<i+1,2>,"D4/")  THEN
		   IF i < W_NbMois THEN	
	            W_Tableau<i+1,3> = ENR_SSIADSERVICE <8,j>* (ICONV(W_Tableau<i+2,2>,"D4/") -ICONV(W_Tableau<i+1,2>,"D4/"))
		   END ELSE
		      W_Tableau<i+1,3> = ENR_SSIADSERVICE <8,j>* (ICONV(W_Fin,"D4/")+1 -ICONV(W_Tableau<i+1,2>,"D4/"))
		   END
	         EXIT
	      END
         NEXT
      NEXT
	
   END ELSE
	W_RequeteActivites = 'SELECT ACTIVITES AVEC TypeActivite ="':"S":'" ' 
	
	EXECUTE W_RequeteActivites
	SELECT F.ACTIVITES TO W_RequeteActivites
	   LOOP
	      READNEXT W_CodeActivites FROM W_RequeteActivites ELSE W_CodeActivites = ""
	   WHILE W_CodeActivites # ""
		   IF W_CodeActivites[1,3] = W_Asso THEN
		      READ ENR_ACTIVITES FROM F.ACTIVITES,W_CodeActivites ELSE ENR_ACTIVITE =""
		      READ ENR_SSIADSERVICE FROM F.SSIADSERVICE, W_Asso:ENR_ACTIVITES<13> ELSE ENR_SSIADSERVICE =""
		         FOR i=1 TO W_NbMois 
   			      FOR j = 1 TO DCOUNT(ENR_SSIADSERVICE <7>,CHAR(253))
				   IF ENR_SSIADSERVICE <7,j> <= ICONV(W_Tableau<i+1,2>,"D4/")  THEN
				      IF i < W_NbMois THEN	
					   W_Tableau<i+1,3> = W_Tableau<i+1,3> + ENR_SSIADSERVICE <8,j>* (ICONV(W_Tableau<i+2,2>,"D4/") -ICONV(W_Tableau<i+1,2>,"D4/"))
	   			         EXIT
				      END ELSE
		   		         W_Tableau<i+1,3> = W_Tableau<i+1,3> + ENR_SSIADSERVICE <8,j>* (ICONV(W_Fin,"D4/")+1 -ICONV(W_Tableau<i+1,2>,"D4/"))
			   	         EXIT
				      END
	   		         END
      		      NEXT
  		         NEXT
		   END
	   REPEAT
   END	
END 

****************************
* REMPLISSAGE 2me COLONNE *
****************************
FOR i= 1 TO W_NbMois
W_Requete =""
IF i < W_NbMois THEN
   PRINT W_Tableau<i+1,2>
   W_Requete = 'SELECT SSIADACCORDS AVEC 3 ="':W_Asso:']" AND AVEC 1 <= "':ICONV(W_Tableau<i+2,2>,"D4/")-1:'" AND AVEC 2 >= "':ICONV(W_Tableau<i+1,2>,"D4/"):'"'
END ELSE
   W_Requete = 'SELECT SSIADACCORDS AVEC 3 ="':W_Asso:']" AND AVEC 1 <= "':ICONV(W_Fin,"D4/"):'" AND AVEC 2 >= "':ICONV(W_Tableau<i+1,2>,"D4/"):'"'
END

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'

W_RequeteSsiadAccord2 = ""
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"

         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>=ICONV(W_Tableau<i+1,2>,"D4/")
		IF i < W_NbMois THEN
               W_EntreePrActive<3>=ICONV(W_Tableau<i+2,2>,"D4/")-1
            END ELSE
		   W_EntreePrActive<3>= ICONV(W_Fin,"D4/")
		END
		W_EntreePrActive<4>= "J" 
	      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 
         CALL SSIADPERIODEACTIVE ("",W_EntreePrActive,W_NbJours)

	   !l'aid est actif au moins une journe sur la selection
         IF W_NbJours # 0 THEN
	   	W_Tableau<i+1,4> = W_Tableau<i+1,4> + W_NbJours
	   END
	
   REPEAT

NEXT i

****************************
* REMPLISSAGE 3me COLONNE *
****************************
! La requte dynamique cre

W_Requete=""
FOR i=1 TO W_NbMois

   W_Requete = 'SELECT SSIADACCORDS AVEC 3 ="':W_Asso:']" AND AVEC 1 <= "':ICONV(W_Tableau<i+1,2>,"D4/"):'" AND AVEC 2 >= "':ICONV(W_Tableau<i+1,2>,"D4/"):'"'


   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
LOOP

   READNEXT W_CodeSsiadAccords FROM W_RequeteSsiadAccord ELSE W_Fini = "Vrai"

WHILE W_Fini = "Faux"

   IF W_CodeSsiadAccords[1,5] = W_DernierAide 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>=ICONV(W_Tableau<i+1,2>,"D4/")
         W_EntreePrActive<3>=ICONV(W_Tableau<i+1,2>,"D4/")
	   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)
	W_CodeAide=W_CodeSsiadAccords[1,5]
	* l'aid est actif au moins une journe sur la selection
      IF W_Presence # 0 THEN
	   W_Tableau<i+1,5> = W_Tableau<i+1,5> + 1
	END
   END

REPEAT
   
NEXT i

********************************************
* REMPLISSAGE 4me COLONNE et 5me COLONNE *
********************************************

FOR i=1 TO W_NbMois
   W_Params = ""
   W_Params<1> = W_Asso
   W_Params<2> = W_ChoixSelect:W_CodeSelect
   IF W_ChoixTri="C" THEN
      W_Params<3> = W_ChoixTri:W_CodeCommune
   END ELSE
      W_Params<3> = W_ChoixTri:W_CodeTri
   END
   IF i< W_NbMois THEN
	W_DatFin = ICONV(W_Tableau<i+2,2>,"D4/")-1
      W_Params<4> = W_Tableau<i+1,2>: "|" : OCONV(W_DatFin,"D4/")
   END ELSE
	W_Params<4> = W_Tableau<i+1,2>: "|" : W_Fin
   END 
   *W_Params<5> = ""
   *W_Params<6> = ""
   W_Params<7> = "V"
   W_Params<8> = 1
   W_Params<9> = "CSV"
   W_Params<10> = 0

   W_TabResultat= "" 

   CALL SSIADREGISTREMED("",W_Params,W_TabResultat)

   W_TabResultat = CONVERT(";","",W_TabResultat )
   j=1
   LOOP
      j=j+1
   WHILE W_TabResultat<j,1> # ""
	IF W_ChoixTri = "T" THEN
  	   IF W_TabResultat<j,20> # "" THEN
	      W_Tableau<i+1,6> = W_Tableau<i+1,6> + 1
	   END
	   IF W_TabResultat<j,21> # "" THEN
	      W_Tableau<i+1,7> = W_Tableau<i+1,7> + 1
	   END 
	END ELSE
	   IF W_ChoixTri = "R" THEN
		IF W_TabResultat<j,20> # "" AND W_TabResultat<j,3>=W_Libelle THEN
	         W_Tableau<i+1,6> = W_Tableau<i+1,6> + 1
	      END
	      IF W_TabResultat<j,21> # "" AND W_TabResultat<j,3>=W_Libelle THEN
	         W_Tableau<i+1,7> = W_Tableau<i+1,7> + 1
	      END 
	   END ELSE
		IF W_ChoixTri = "S" THEN
		   IF W_TabResultat<j,20> # "" AND W_TabResultat<j,4>=W_Libelle THEN
	            W_Tableau<i+1,6> = W_Tableau<i+1,6> + 1
	         END
	         IF W_TabResultat<j,21> # "" AND W_TabResultat<j,4>=W_Libelle THEN
	            W_Tableau<i+1,7> = W_Tableau<i+1,7> + 1
	         END 
		END ELSE
		   IF W_TabResultat<j,20> # "" AND W_TabResultat<j,5>=W_Libelle THEN
	            W_Tableau<i+1,6> = W_Tableau<i+1,6> + 1
	         END
	         IF W_TabResultat<j,21> # "" AND W_TabResultat<j,5>=W_Libelle THEN
	            W_Tableau<i+1,7> = W_Tableau<i+1,7> + 1
	         END 
		END
	   END
	END
   REPEAT

NEXT i
*WRITE W_TabResultat ON F.STATAIDE, "Debug.txt"

W_Mois = ""
W_Annee = ""

FOR i=1 TO W_NbMois 
   W_Mois = W_Tableau<i+1,2>[4,2]
   W_Annee = W_Tableau<i+1,2>[7,4]
 
   BEGIN CASE
   CASE W_Mois = "1"
      W_Tableau<i+1,2> = "janvier ":W_Annee 
   CASE W_Mois = "2"
	W_Tableau<i+1,2> = "fvrier ":W_Annee 
   CASE W_Mois = "3"
	W_Tableau<i+1,2> = "mars ":W_Annee 
   CASE W_Mois = "4"
      W_Tableau<i+1,2> = "avril ":W_Annee 
   CASE W_Mois = "5"
      W_Tableau<i+1,2> = "mai ":W_Annee 
   CASE W_Mois = "6"
      W_Tableau<i+1,2> = "juin ":W_Annee 
   CASE W_Mois = "7"
      W_Tableau<i+1,2> = "juillet ":W_Annee 
   CASE W_Mois = "8"
      W_Tableau<i+1,2> = "aot ":W_Annee 
   CASE W_Mois = "9"
      W_Tableau<i+1,2> = "septembre ":W_Annee 
   CASE W_Mois = "10"
      W_Tableau<i+1,2> = "octobre ":W_Annee 
   CASE W_Mois = "11"
      W_Tableau<i+1,2> = "novembre ":W_Annee 
   CASE W_Mois = "12"
      W_Tableau<i+1,2> = "dcembre ":W_Annee 
   END CASE
     		   
NEXT


********************************
* 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 = "SSIADSTATENTSOR":"-":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

