*PARAMETRES*
*Liste aids - Plusieurs interventions par jour*
*Date de dbut de rfrence (JJ/MM/AAAA) |10X|TXT|O*
*Date de fin de rfrence (JJ/MM/AAAA) |10X|TXT|O*
*Nombre minimum d'interventions (si vide, 2 par dfaut) |2N|TXT|N*
*FIN PARAMETRES*

SUBROUTINE PLUSIEURSINTERVSPARJOUR(RETURNVAL,PARAMETRES,W_Sortie)
************************************************
* Ce programme pour Caen a pour objectif de    *
* lister les aids chez lesquels l'association *
* intervient plusieurs fois par jour.          *
*                                              *
* Grgory - 15/11/11                           *
************************************************
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "", "TPSTEMPO" TO F.TPSTEMPO ELSE RETURN
OPEN "", "CIVILAIDE" TO F.CIVILAIDE ELSE RETURN
OPEN "", "CIVILAIDANT" TO F.CIVILAIDANT ELSE RETURN
OPEN "", "FUSION" TO F.FUSION ELSE RETURN

W_DateDeb=ICONV(PARAMETRES<1>,"D4/")
IF W_DateDeb="" THEN
	W_Sortie="Date de dbut incorrecte."
	RETURN
END

W_DateFin=ICONV(PARAMETRES<2>,"D4/")
IF W_DateFin="" THEN
	W_Sortie="Date de fin incorrecte."
	RETURN
END

W_NbIntervMin=PARAMETRES<3>
IF W_NbIntervMin="" THEN W_NbIntervMin=2

ENR_TPSTEMPO=""
ENR_CIVILAIDE=""
ENR_CIVILAIDANT=""
ENR_FUSION=""

W_CleRetour="PLUSIEURSINTERVS":W_DateDeb:W_DateFin
W_Params = "AFFICHEPLANNING |" : W_CleRetour : "||PMIS|":W_DateDeb:"|":W_DateFin:"|S||" : "|EA" : "|"

EXECUTE W_Params

READ ENR_TPSTEMPO FROM F.TPSTEMPO, "AFFICHEPLANNING":W_CleRetour THEN
	ENR_FUSION<1>="Code aide;Nom prenom aide"
	FOR I = W_DateDeb TO W_DateFin
		ENR_FUSION<1>=ENR_FUSION<1>:";":OCONV(I,"D4/")
	NEXT I
	
	W_CodeAide=""
	I = 0
	W_Jour=0
	LOOP
		I = I + 1
		W_Jour=W_Jour+1
	WHILE ENR_TPSTEMPO<I>[1,4] <> "#FIN"
		IF ENR_TPSTEMPO<I>[1,7] = "#Interv" THEN
			* On change d'aid : si l'aid prcdent a t ajout  la liste
			*  un moment donn, il faut faire en sorte que le nombre de colonnes
			* dans le fichier CSV final soit bon.
			GOSUB 10
			
			W_CodeAide=ENR_TPSTEMPO<I>[8,5]
			READ ENR_CIVILAIDE FROM F.CIVILAIDE, W_CodeAide THEN
				W_Jour = -1
			END ELSE
				W_CodeAide=""
			END
		END ELSE
			* On ne fait le traitement que si on est sur une ligne correspondant  un jour.
			IF W_Jour<=W_DateFin-W_DateDeb AND W_CodeAide<>"" THEN
				* On parcourt la ligne pour rechercher les interventions.
				W_NbInterv=0
				J=0
				LOOP
					J=J+1
				WHILE ENR_TPSTEMPO<I,1,J><>""
					* On a trouv une intervention, on la compte
					IF ENR_TPSTEMPO<I,1,J>[1,6]="Interv" THEN W_NbInterv=W_NbInterv+1
				REPEAT
				* On a parcouru la journe. SI on a plusieurs interventions il faut lister l'aid.
				IF W_NbInterv>W_NbIntervMin-1 THEN
					* On vrifie si l'aid a dj t ajout ou pas.
					* Si ce n'est pas le cas il faut crer la ligne avant
					* d'indiquer le nombre d'interventions de la journe.
					W_Ind=DCOUNT(ENR_FUSION,CHAR(254))
					IF ENR_FUSION<W_Ind>[1,5]<>W_CodeAide THEN
						ENR_FUSION<-1>=W_CodeAide:";":ENR_CIVILAIDE<2>:" ":ENR_CIVILAIDE<3>
						W_Ind=W_Ind+1
					END
					
					* On est sur la ligne de l'aid, on gnre les colonnes vides pour
					* arriver sur la colonne correspondant au jour trait.
					FOR K = DCOUNT(ENR_FUSION<W_Ind>,";") TO W_Jour+1
						ENR_FUSION<W_Ind>=ENR_FUSION<W_Ind>:";"
					NEXT K
					
					* On ajoute le nombre d'interventions en bout de ligne.
					ENR_FUSION<W_Ind>=ENR_FUSION<W_Ind>:";":W_NbInterv
				END
			END
		END
	REPEAT
	* On a trait tous les aids. Il faut s'assurer que la dernire ligne a le bon nombre de colonnes.
	GOSUB 10
	
	EXECUTE "DELETE TPSTEMPO AFFICHEPLANNING":W_CleRetour
	
	* Si on a des donnes, on crit le fichier et on renvoie l'info  l'utilisateur.
	IF ENR_FUSION<2><>"" THEN
		W_DateDeb=OCONV(W_DateDeb,"D4/")
		W_DateDeb=W_DateDeb[7,4]:W_DateDeb[4,2]:W_DateDeb[1,2]
		W_DateFin=OCONV(W_DateFin,"D4/")
		W_DateFin=W_DateFin[7,4]:W_DateFin[4,2]:W_DateFin[1,2]
		
		W_Fichier="Liste aids - Plusieurs interventions par jour - ":W_DateDeb:"-":W_DateFin:".csv"
		
		WRITE ENR_FUSION ON F.FUSION, W_Fichier
		W_Sortie='Le fichier "':W_Fichier:'" a t gnr dans le rpertoire FUSION de la base de donnes.'
		RETURN
	END ELSE
		W_Sortie="Aucun aid correspondant aux critres."
		RETURN
	END
END ELSE
	W_Sortie="Aucune intervention correspondant  la priode."
	RETURN
END

RETURN
***************************
10

	* On vrifie qu'on a bien un code aid
	IF W_CodeAide<>"" THEN
		* On vrifie que l'aid correspond bien  la dernire ligne.
		* Cela pour viter d'ajouter un aid qui n'a pas lieu d'tre.
		W_Ind=DCOUNT(ENR_FUSION,CHAR(254))
		IF ENR_FUSION<W_Ind>[1,5]=W_CodeAide THEN
			FOR K = DCOUNT(ENR_FUSION<W_Ind>,";") TO W_DateFin-W_DateDeb+2
				ENR_FUSION<W_Ind>=ENR_FUSION<W_Ind>:";"
			NEXT K
		END
	END

RETURN