SUBROUTINE COMPTEURSPOINTAGESTLG(RETURNVAL,PARAMETRES,W_Sortie)

EXECUTE 'DATE.FORMAT'
EXECUTE 'SET-DEC ,'
EXECUTE "SET-THOUS ."
OPEN "", "DOMITIME" TO F.DOMITIME ELSE RETURN
OPEN "", "ASSOCIATION" TO F.ASSOCIATION ELSE RETURN
OPEN "", "TLGPOINTAGE" TO F.TLGPOINTAGE ELSE RETURN

* Modif Greg - 14/05/13 - Je ne sais pas pourquoi, au Mans  ne fonctionne plus
* depuis qu'ils ont leur nouveau serveur. Aprs test, le problme est que la
* variable PARAMETRES est initialise  0. Ca n'avait pas encore pos problme
* jusque l mais pourquoi pas. Par contre, les tests ont montr que si on se
* contente d'ajouter un test PARAMETRES<>"0",  ne fonctionne pas. Car la
* variable est initialise  ce moment l, ce qui n'empche pas de passer le test.
* Il faut donc provoquer l'initialisation avant, sans pour autant effacer les paramtres
* si il y en a. Le plus simple est donc d'utiliser un print. Si la variable est renseigne,
*  affiche les paramtres, sinon,  l'initialise  0.
* 
* IL NE FAUT DONC SURTOUT PAS SUPPRIMER CE PRINT QUI A UNE IMPORTANCE CAPITALE
* POUR LE BON FONCTIONNEMENT DE LA SUITE DU PROGRAMME.
PRINT PARAMETRES

IF PARAMETRES<>"" AND PARAMETRES<>"0" THEN
	W_Periode=PARAMETRES<1>
END ELSE
	W_Periode=OCONV(DATE(),"D4/")
	W_Periode=W_Periode[7,4]:W_Periode[4,2]
	W_Periode=W_Periode-1
	IF W_Periode[5,2]="00" THEN W_Periode=W_Periode[1,4]-1:"12"
END

ENR_DOMITIME=""
ENR_ASSOCIATION=""
ENR_TLGPOINTAGE=""

W_DateDeb=""
W_DateFin=""
	
W_DateDeb=ICONV("01/":W_Periode[5,2]:"/":W_Periode[1,4],"D4/")
W_DateFin=W_DateDeb+32
W_DateFin=OCONV(W_DateFin,"D4/")
W_DateFin=ICONV("01/":W_DateFin[4,7],"D4/")

* Modif Greg - 26/03/15 - Il faut compter le nombre d'aidant utilisant la tlgestion mobile.
TAB_AIDANT=""

ENR_DOMITIME<-1>="Date et heure de gnration : ":TIMEDATE()

* Pointages PRESTATAIRES - Debut
W_Requete='SELECT TLGPOINTAGE AVEC TypeActivite = "P" AND AVEC 3 >= "':W_DateDeb:'" AND < "':W_DateFin:'" AND AVEC 1 <> ""'
W_Att=1
GOSUB 10
ENR_DOMITIME<-1>="Prestataire - Dbut - ":W_Nb
ENR_DOMITIME<-1>="Prestataire mobile - Dbut - ":W_NbMobile
	
* Pointages PRESTATAIRES - Fin
W_Requete='SELECT TLGPOINTAGE AVEC TypeActivite = "P" AND AVEC 3 >= "':W_DateDeb:'" AND < "':W_DateFin:'" AND AVEC 2 <> ""'
W_Att=2
GOSUB 10
ENR_DOMITIME<-1>="Prestataire - Fin - ":W_Nb
ENR_DOMITIME<-1>="Prestataire mobile - Fin - ":W_NbMobile

* Pointages MANDATAIRES - Debut
W_Requete='SELECT TLGPOINTAGE AVEC TypeActivite = "M" AND AVEC 3 >= "':W_DateDeb:'" AND < "':W_DateFin:'" AND AVEC 1 <> ""'
W_Att=1
GOSUB 10
ENR_DOMITIME<-1>="Mandataire - Dbut - ":W_Nb
ENR_DOMITIME<-1>="Mandataire mobile - Dbut - ":W_NbMobile

* Pointages MANDATAIRES - Fin
W_Requete='SELECT TLGPOINTAGE AVEC TypeActivite = "M" AND AVEC 3 >= "':W_DateDeb:'" AND < "':W_DateFin:'" AND AVEC 2 <> ""'
W_Att=2
GOSUB 10
ENR_DOMITIME<-1>="Mandataire - Fin - ":W_Nb
ENR_DOMITIME<-1>="Mandataire mobile - Fin - ":W_NbMobile

ENR_DOMITIME<-1>=""
ENR_DOMITIME<-1>="Nombre d'aidants utilisant la tlgestion mobile : ":DCOUNT(TAB_AIDANT,CHAR(254))

READ ENR_ASSOCIATION FROM F.ASSOCIATION, "001" ELSE ENR_ASSOCIATION=""
W_NomFichier="LOGISFIL-":ENR_ASSOCIATION<9>:"-":ENR_ASSOCIATION<1>:"-":W_Periode:".txt"
W_ChaineAVerifier=W_NomFichier
GOSUB 1000
W_NomFichier=W_ChaineVerifiee

WRITE ENR_DOMITIME ON F.DOMITIME, W_NomFichier

W_Sortie=W_NomFichier

RETURN
*************************************
* Requte
*************************************
10

	W_Nb=0
	W_NbMobile=0
	W_ReqCpteTlg=""
	
	EXECUTE W_Requete
	EXECUTE 'SAUVE-LISTE W_ReqCpteTlg'
	EXECUTE 'LISTE W_ReqCpteTlg' RETURNING MSGCODE
	
	IF MSGCODE<1> # "209" THEN
		SELECT F.TLGPOINTAGE TO W_ReqCpteTlg
		
		W_FinTlg = "F"
		LOOP
			READNEXT W_CleTlg FROM W_ReqCpteTlg ELSE W_FinTlg = "V"
		WHILE W_FinTlg = "F"
			* Modif Greg - 27/08/14 - Il ne faut pas compter les pointages Penbase.
			* Pour cela il faut lire l'enregistrement et vrifier si il y a un D ou un F
			* dans le numro de transaction : Penbase est le seul  utiliser des lettres
			* dans ces numros (D = Dbut, F = Fin).
			* J'ajoute du coup la variable W_Att, afin de savoir sur quel att. travailler.
			* Modif Greg - 04/09/14 - Ajout de la lettre M (utilise par Penbase pour les pointages
			* manuels). Cela permet de filtrer un minimum dans les vieux fichiers o il n'y avait pas
			* encore les lettres D et F.
			* Modif Greg - 16/03/15 - Finalemen on compte les pointages mobiles, mais dans un compteur
			* spcifique. Donc ajout du END ELSE.
			READ ENR_TLGPOINTAGE FROM F.TLGPOINTAGE, W_CleTlg THEN
				IF INDEX(ENR_TLGPOINTAGE<W_Att>,"D",1) = 0 AND INDEX(ENR_TLGPOINTAGE<W_Att>,"F",1) = 0 AND INDEX(ENR_TLGPOINTAGE<W_Att>,"M",1) = 0 THEN
					W_Nb=W_Nb+1
				END ELSE
					W_NbMobile=W_NbMobile+1
					
					IF INDEX(TAB_AIDANT,W_CleTlg[3,5],1) = 0 THEN
						TAB_AIDANT<-1>=W_CleTlg[3,5]
					END
				END
			END
		REPEAT
	END

	EXECUTE "EFFACER-LISTE W_ReqCpteTlg"

RETURN
******************************************************************
*  Remplacement de caractres interdits dans les noms de fichier *
******************************************************************
******************************************************************
1000

    W_ChaineVerifiee = W_ChaineAVerifier
    
    W_ChaineVerifiee = CONVERT("/", "_",W_ChaineVerifiee)
    W_ChaineVerifiee = CONVERT("\", "_",W_ChaineVerifiee)
    W_ChaineVerifiee = CONVERT("*", "_",W_ChaineVerifiee)
    W_ChaineVerifiee = CONVERT("?", "_",W_ChaineVerifiee)
    W_ChaineVerifiee = CONVERT(":", "_",W_ChaineVerifiee)
    W_ChaineVerifiee = CONVERT('"', "_",W_ChaineVerifiee)
    W_ChaineVerifiee = CONVERT("<", "_",W_ChaineVerifiee)
    W_ChaineVerifiee = CONVERT(">", "_",W_ChaineVerifiee)
    W_ChaineVerifiee = CONVERT("|", "_",W_ChaineVerifiee)

RETURN
