*PARAMETRES*
*Liste des pointages reus en retard*
*Priode (AAAAMM)|6N|TXT|O*
*FIN PARAMETRES*

SUBROUTINE LISTEPOINTAGESRETARD(RETURNVAL,PARAMETRES,W_Sortie)
****************************************************************
* Ce programme permet de lister les pointages reus en retard. *
* Par exemple les pointages de juin reus en juillet.          *
*                                                              *
* Grgory - 07/07/14                                           *
****************************************************************
EXECUTE "SET-DEC ,"
EXECUTE "SET-THOUS ."
EXECUTE "DATE.FORMAT"

OPEN "", "FUSION" TO F.FUSION ELSE STOP
OPEN "", "TLGPOINTAGE" TO F.TLGPOINTAGE ELSE STOP
OPEN "", "TLGANOPOINTAGE" TO F.TLGANOPOINTAGE ELSE STOP
OPEN "", "CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "", "CIVILAIDE" TO F.CIVILAIDE ELSE STOP
OPEN "", "TLGHISTORPOINTAGE" TO F.TLGHISTORPOINTAGE ELSE STOP

ENR_FUSION=""
ENR_FUSION2=""
ENR_TLGPOINTAGE=""
ENR_TLGANOPOINTAGE=""
ENR_CIVILAIDANT=""
ENR_CIVILAIDE=""
ENR_TLGHISTORPOINTAGE=""

ENR_FUSION2<1>="NumTrans;Code aidant;Nom prnom aidant;Code aid;Nom prnom aid;Date;Heure;Deb ou fin;Date rcup;Heure rcup;Fichier;Date integre paie;Heure integre paie;Obs;Cl interv"

W_Periode = PARAMETRES<1>

GOSUB 5

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

GOSUB 10

IF ENR_FUSION="" THEN
	W_Sortie="Aucun pointage reu en retard."
END ELSE
	GOSUB 20
	
	IF ENR_FUSION2<2><>"" THEN
		W_NomFichier='POINTAGES_':W_Mois1:'_RECUS_':W_Mois2:'.csv'
		WRITE ENR_FUSION2 ON F.FUSION, W_NomFichier
		
		W_Sortie='Fichier "':W_NomFichier:'" gnr dans le rpertoire FUSION de la base de donnes.'
	END ELSE
		W_Sortie="Aucune anomalie trouve."
	END
END

RETURN
******************************************
* Dtermination des libells des mois    *
******************************************
5

	W_Mois1=""
	W_Mois2=""
	IF W_Periode[5,2]="01" THEN
		W_Mois1="JANVIER"
		W_Mois2="FEVRIER"
	END
	IF W_Periode[5,2]="02" THEN
		W_Mois1="FEVRIER"
		W_Mois2="MARS"
	END
	IF W_Periode[5,2]="03" THEN
		W_Mois1="MARS"
		W_Mois2="AVRIL"
	END
	IF W_Periode[5,2]="04" THEN
		W_Mois1="AVRIL"
		W_Mois2="MAI"
	END
	IF W_Periode[5,2]="05" THEN
		W_Mois1="MAI"
		W_Mois2="JUIN"
	END
	IF W_Periode[5,2]="06" THEN
		W_Mois1="JUIN"
		W_Mois2="JUILLET"
	END
	IF W_Periode[5,2]="07" THEN
		W_Mois1="JUILLET"
		W_Mois2="AOUT"
	END
	IF W_Periode[5,2]="08" THEN
		W_Mois1="AOUT"
		W_Mois2="SEPTEMBRE"
	END
	IF W_Periode[5,2]="09" THEN
		W_Mois1="SEPTEMBRE"
		W_Mois2="OCTOBRE"
	END
	IF W_Periode[5,2]="10" THEN
		W_Mois1="OCTOBRE"
		W_Mois2="NOVEMBRE"
	END
	IF W_Periode[5,2]="11" THEN
		W_Mois1="NOVEMBRE"
		W_Mois2="DECEMBRE"
	END
	IF W_Periode[5,2]="12" THEN
		W_Mois1="DECEMBRE"
		W_Mois2="JANVIER"
	END

RETURN
******************************************
* Slection des pointages problmatiques *
******************************************
10
	W_Ind=0

	W_ReqTlg=""
	EXECUTE 'SELECT TLGHISTORPOINTAGE AVEC 3 >= "':W_DateDeb:'" AND <= "':W_DateFin:'" AND AVEC 7 > "':W_DateFin:'"'
	EXECUTE 'SAUVE-LISTE W_ReqTlg'
	EXECUTE 'LISTE W_ReqTlg' RETURNING MSGCODE
	
	IF MSGCODE<1> # "209" THEN
		SELECT F.TLGHISTORPOINTAGE TO W_ReqTlg
		
		W_Fin = "F"
		LOOP
			READNEXT W_Cle FROM W_ReqTlg ELSE W_Fin = "V"
		WHILE W_Fin = "F"
			READ ENR_TLGHISTORPOINTAGE FROM F.TLGHISTORPOINTAGE, W_Cle THEN
				W_Ind=W_Ind+1
				ENR_FUSION<W_Ind,1>=W_Cle
				ENR_FUSION<W_Ind,2>=ENR_TLGHISTORPOINTAGE<1>
				ENR_FUSION<W_Ind,3>=ENR_TLGHISTORPOINTAGE<2>
				ENR_FUSION<W_Ind,4>=ENR_TLGHISTORPOINTAGE<3>
				ENR_FUSION<W_Ind,5>=ENR_TLGHISTORPOINTAGE<4>
				ENR_FUSION<W_Ind,6>=ENR_TLGHISTORPOINTAGE<6>
				ENR_FUSION<W_Ind,7>=ENR_TLGHISTORPOINTAGE<7>
				ENR_FUSION<W_Ind,8>=ENR_TLGHISTORPOINTAGE<8>
				ENR_FUSION<W_Ind,9>=ENR_TLGHISTORPOINTAGE<10>
			END
		REPEAT
	END

	EXECUTE "EFFACER-LISTE W_ReqTlg"
RETURN
******************************************
* Vrification des interventions         *
******************************************
20

	FOR I = 1 TO DCOUNT(ENR_FUSION,CHAR(254))
		READ ENR_CIVILAIDANT FROM F.CIVILAIDANT, ENR_FUSION<I,2>[3,5] ELSE ENR_CIVILAIDANT=""
		READ ENR_CIVILAIDE FROM F.CIVILAIDE, ENR_FUSION<I,3> "R%5" ELSE ENR_CIVILAIDE=""
		
		W_Ligne=""
		
		IF ENR_FUSION<I,6>="1" THEN
			W_DebFin="Dbut"
		END ELSE
			W_DebFin="Fin"
		END
		
		W_ReqTlg=""
		EXECUTE 'SELECT TLGPOINTAGE AVEC 1 = "':ENR_FUSION<I,1>:'" OR AVEC 2 = "':ENR_FUSION<I,1>:'"'
		EXECUTE 'SAUVE-LISTE W_ReqTlg'
		EXECUTE 'LISTE W_ReqTlg' RETURNING MSGCODE

		IF MSGCODE<1> # "209" THEN
			SELECT F.TLGPOINTAGE TO W_ReqTlg

			W_Fin = "F"
			LOOP
				READNEXT W_Cle FROM W_ReqTlg ELSE W_Fin = "O"
			WHILE W_Fin = "F"
				READ ENR_TLGPOINTAGE FROM F.TLGPOINTAGE, W_Cle THEN
					W_Ligne=ENR_FUSION<I,1>:';':ENR_FUSION<I,2>[3,5]:';':ENR_CIVILAIDANT<2>:' ':ENR_CIVILAIDANT<3>:';':ENR_FUSION<I,3> "R%5":';':ENR_CIVILAIDE<2>:' ':ENR_CIVILAIDE<3>:';'
					W_Ligne=W_Ligne:OCONV(ENR_FUSION<I,4>,"D4/"):';':ENR_FUSION<I,5>:';':W_DebFin:';':OCONV(ENR_FUSION<I,7>,"D4/"):';':ENR_FUSION<I,8>:';':ENR_FUSION<I,9>:';'
					IF ENR_TLGPOINTAGE<14>="" THEN
						W_Ligne=W_Ligne:';;Non intgr'
					END ELSE
						W_Ligne=W_Ligne:OCONV(ENR_TLGPOINTAGE<14>,"D4/"):';':ENR_TLGPOINTAGE<15>:';'
					END
					
					W_Ligne=W_Ligne:';':W_Cle
				END
			REPEAT
		END
		
		EXECUTE "EFFACER-LISTE W_ReqTlg"
		
		IF W_Ligne="" THEN
			READ ENR_TLGANOPOINTAGE FROM F.TLGANOPOINTAGE, ENR_FUSION<I,1> THEN
				W_Ligne=ENR_FUSION<I,1>:';':ENR_FUSION<I,2>[3,5]:';':ENR_CIVILAIDANT<2>:' ':ENR_CIVILAIDANT<3>:';':ENR_FUSION<I,3> "R%5":';':ENR_CIVILAIDE<2>:' ':ENR_CIVILAIDE<3>:';'
				W_Ligne=W_Ligne:OCONV(ENR_FUSION<I,4>,"D4/"):';':ENR_FUSION<I,5>:';':W_DebFin:';':OCONV(ENR_FUSION<I,7>,"D4/"):';':ENR_FUSION<I,8>:';':ENR_FUSION<I,9>:';;;En anomalie;'
			END
		END
		
		IF W_Ligne="" THEN
			W_Ligne=ENR_FUSION<I,1>:';':ENR_FUSION<I,2>[3,5]:';':ENR_CIVILAIDANT<2>:' ':ENR_CIVILAIDANT<3>:';':ENR_FUSION<I,3> "R%5":';':ENR_CIVILAIDE<2>:' ':ENR_CIVILAIDE<3>:';'
			W_Ligne=W_Ligne:OCONV(ENR_FUSION<I,4>,"D4/"):';':ENR_FUSION<I,5>:';':W_DebFin:';':OCONV(ENR_FUSION<I,7>,"D4/"):';':ENR_FUSION<I,8>:';':ENR_FUSION<I,9>:';;;Non trouv;'
		END		
		
		IF W_Ligne<>"" THEN
			ENR_FUSION2<-1>=W_Ligne
		END
	NEXT I

RETURN