***********************************************************************************
***********************************************************************************
**                                                                               **
** 	INDICATEURS DE CHARGE EN SOIN POUR LE PERSONNEL SALARIE ET LIBERAUX	   **
**                                                                               **
***********************************************************************************
***********************************************************************************

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

***********************************************************************************
**                                                                               **
**                       Ouverture des fichiers                                  **
**                                                                               **
***********************************************************************************
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
OPEN "", "CIVILAIDE" TO F.CIVILAIDE ELSE STOP
OPEN "", "RESPONSABLE" TO F.RESPONSABLE ELSE STOP
OPEN "", "SECTEUR" TO F.SECTEUR ELSE STOP
OPEN "", "SSIADACCORDS" TO F.SSIADACCORDS ELSE STOP
OPEN "", "SSIADCARACTTOURNEE" TO F.SSIADCARACTTOURNEE ELSE STOP
OPEN "", "SSIADPROTOCOLE" TO F.SSIADPROTOCOLE ELSE STOP
OPEN "", "SSIADSOINS" TO F.SSIADSOINS ELSE STOP
OPEN "", "SSIADTOURNEE" TO F.SSIADTOURNEE ELSE STOP
OPEN "", "STATAIDE" TO F.STATAIDE ELSE STOP
OPEN "", "TABLES" TO F.TABLES ELSE STOP
OPEN "", "TPSTEMPO" TO F.TPSTEMPO ELSE STOP

EXECUTE "DATE.FORMAT"
W_RequeteSsiadAccord=""
W_RequeteSsiadTournee =""

***********************************************************************************
**                                                                               **
**                      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 (P=Personnels salaris, I=Infirmiers Libraux) 
W_TypeStat = ENTREE<8>

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

!infos pour lancer PR
W_NomHeure = ENTREE<10>

! La requte dynamique cre
W_Requete=""

W_NbPassage = 0
W_NbPersonneService = 0 
W_NbHeureAS = 0
W_NbHeureI = 0
W_NbAMI = 0

*******************************************************************************
*	   		STATISTIQUES PERSONNELS SALARIES					*
*******************************************************************************
IF W_TypeStat = "P" THEN

W_Requete = 'SELECT SSIADTOURNEE AVEC Association ="':W_Asso:'" AND AVEC DateTournee <= "':W_Fin:'" AND AVEC DateTournee >= "':W_Debut:'"'

IF W_CodeSelect # "" THEN
	IF W_ChoixSelect="A" THEN
   		W_Requete = W_Requete:' AND AVEC CodeActivite = "':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 DateTournee '


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

W_Fini = "Faux"
W_DernierAide = 0
W_LibellePrec = ""
* entete du tableau
   
	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:";Passages;Personnes aides;Heures aides-soignants;Heures infirmiers"
	   


W_Rang =2

LOOP

   READNEXT W_CodeSsiadTournee FROM W_RequeteSsiadTournee ELSE W_Fini = "Vrai"

WHILE W_Fini = "Faux"
   READ ENR_SSIADTOURNEE FROM F.SSIADTOURNEE,W_CodeSsiadTournee THEN

      
	READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_CodeSsiadTournee[4,5] 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	  
		
	   IF W_LibellePrec <> W_Libelle THEN
	   	IF W_LibellePrec <> "" THEN
		   IF W_NbPassage <> 0 THEN	
		   	*on met les infos dans le tableau avant la rupture
		   	W_Tableau<W_Rang,2> = W_NbPassage
		   	W_Tableau<W_Rang,3> = W_NbPersonneService 
		   	W_Tableau<W_Rang,4> = W_NbHeureAS /100
		   	W_Tableau<W_Rang,5> = W_NbHeureI /100

		   	* remise des compteurs  zro
		   	W_NbPassage = 0
		   	W_NbPersonneService = 0 
		   	W_NbHeureAS = 0
		   	W_NbHeureI = 0
		   
	   	   	W_Rang = W_Rang + 1  

		   END 	
	   	END 
	   END

	END

	W_Tableau<W_Rang,1> = W_Libelle

	W_NbPersonneService = W_NbPersonneService +1 
	W_NbPassage = W_NbPassage +1	
	
	*lecture de SSIADCARACTTOURNEE pour le type d'acte et le nb d'intervenants de la tournee

	READ ENR_SSIADCARACTTOURNEE FROM F.SSIADCARACTTOURNEE,W_CodeSsiadTournee[1,3] THEN
	   IF ENR_SSIADCARACTTOURNEE<10> = 2 THEN
		W_NbPassage = W_NbPassage +1
	   END 
	   *duree de l'intervention
	   W_Duree = ENR_SSIADTOURNEE<1> - W_CodeSsiadTournee[14,4] 
	   IF ENR_SSIADCARACTTOURNEE<7> = "S" THEN
		W_NbHeureAS = W_NbHeureAS + W_Duree
	   END ELSE
		W_NbHeureI = W_NbHeureI + W_Duree
	   END
	END
		
	W_LibellePrec = W_Libelle

   END 	
REPEAT

   *on met les infos dans le tableau 
   W_Tableau<W_Rang,2> = W_NbPassage
   W_Tableau<W_Rang,3> = W_NbPersonneService 
   W_Tableau<W_Rang,4> = W_NbHeureAS /100
   W_Tableau<W_Rang,5> = W_NbHeureI /100


*******************************************************************************
*	   		STATISTIQUES INFIRMIERS LIBERAUX					*
*******************************************************************************

END ELSE

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_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_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:";AMI;Personnes aides"

W_Rang = 2
W_NbAide = 0
W_Fini = "Faux"

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>=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_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
  
		IF W_LibellePrec <> W_Libelle THEN

		   IF W_LibellePrec <> "" THEN
		      IF W_NbPersonneService # 0 THEN
		  	   W_Tableau<W_Rang,2> = W_NbAMI /100
			   W_Tableau<W_Rang,3> = W_NbPersonneService
				
			   W_NbPersonneService = 0
			   W_NbAMI = 0
			   W_Rang = W_Rang + 1
			END   
		   END 
	      END      
	   END
	
 	   W_Tableau<W_Rang,1> = W_Libelle
	   W_NbPersonneService = W_NbPersonneService +1

	   *recherche des protocoles rellement actif
	   W_Parametre = 'AFFICHEPROTOCSSIAD |':W_NomHeure:'||S|':W_Debut:'|':W_Fin:'|||':W_CodeAide:'|AA|'

	   EXECUTE W_Parametre 	   

	   READ ENR_TPSTEMPO FROM F.TPSTEMPO, 'AFFICHEPROTOCSSIAD':W_NomHeure THEN
			
		FOR i=1 TO DCOUNT(ENR_TPSTEMPO,CHAR(254))
		   FOR j=1 TO DCOUNT(ENR_TPSTEMPO<i,1>,CHAR(252))
			IF ENR_TPSTEMPO<i,6,j>[6,2] = "01" THEN
		    	   READ ENR_SSIADPROTOCOLE FROM F.SSIADPROTOCOLE, ENR_TPSTEMPO<i,4,j>[1,21] ELSE ENR_SSIADPROTOCOLE ="" 
			   FOR k = 1 TO DCOUNT(ENR_SSIADPROTOCOLE<3>,CHAR(253))
				READ ENR_SSIADSOINS FROM F.SSIADSOINS, ENR_SSIADPROTOCOLE<3,k> ELSE ENR_SSIADSOINS =""
				*on recupre le nombre d'AMI
				W_NbAMI = W_NbAMI + ENR_SSIADSOINS<3>
			   NEXT 
			END		   	
		   NEXT
		NEXT 
	   END
	   DELETE F.TPSTEMPO,'AFFICHEPROTOCSSIAD':W_NomHeure

	   W_LibellePrec = W_Libelle
	   
	END
   END
 
REPEAT
   *on met les infos dans le tableau
	IF W_NbPersonneService # 0 THEN
	   W_Tableau<W_Rang,2> = W_NbAMI /100
	   W_Tableau<W_Rang,3> = W_NbPersonneService
			
	   W_NbPersonneService = 0
	   W_NbAMI = 0
	   W_Rang = W_Rang + 1
	END 
END 


********************************
* renvoi des informations  VB *
* ou dition d'un fichier csv  * 
********************************
W_Ordre = 0
CONVERT "." TO "," IN W_Tableau   
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 = "SSIADPERIODEREF":"-":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

