*PARAMETRES*
*Heures aidant/aid - Saisie globale et/ou dtaille*
*Priode (AAAAMM) |6N|TXT|O*
*Code organisme (999, facultatif) |3N|TXT|N*
*Abonnement (O = Oui, N = non, facultatif) |1X|TXT|N*
*Dtail des organismes (O = Oui, N = non, facultatif) |1X|TXT|N*
*FIN PARAMETRES*

SUBROUTINE HRESAIDANTAIDEGLOBDET(RETURNVAL,PARAMETRES,W_Sortie)
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
*********************************************************************
* 
*********************************************************************
OPEN "","STATAIDE" TO F.STATAIDE ELSE RETURN
OPEN "","DETAILPREST" TO F.DETAILPREST ELSE RETURN
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE RETURN
OPEN "","CIVILAIDE" TO F.CIVILAIDE ELSE RETURN
OPEN "","SECTEUR" TO F.SECTEUR ELSE RETURN
OPEN "","CONTRAT" TO F.CONTRAT ELSE RETURN
OPEN "","AGGIRAIDE" TO F.AGGIRAIDE ELSE RETURN
OPEN "","RUBSAISIE" TO F.RUBSAISIE ELSE RETURN
OPEN "","ACTIVITES" TO F.ACTIVITES ELSE RETURN
OPEN "","ACCORD" TO F.ACCORD ELSE RETURN
OPEN "","ORGPRISECHARGE" TO F.ORGPRISECHARGE ELSE RETURN
* Modif Greg - 03/03/15 - Ajout du responsable
OPEN "","RESPONSABLE" TO F.RESPONSABLE ELSE RETURN
*********************************************************************

W_Periode=PARAMETRES<1>
W_Org = PARAMETRES<2>
W_Abo = OCONV(PARAMETRES<3>,"MCU")
W_DetOrg = OCONV(PARAMETRES<4>,"MCU")

IF W_Abo<>"O" AND W_Abo<>"N" AND W_Abo<>"" THEN
	W_Sortie='Erreur pour le paramtrage "Abonnement".'
	RETURN
END
IF W_DetOrg<>"O" AND W_DetOrg<>"N" AND W_DetOrg<>"" THEN
	W_Sortie='Erreur pour le paramtrage "Abonnement".'
	RETURN
END

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

IF W_DernJourPer="" OR LEN(W_Periode)<>6 THEN
	W_Sortie="Aucun fichier gnr : priode incorrecte."
	RETURN
END

ENR_STATAIDE=""
ENR_DETAILPREST=""
ENR_CIVILAIDANT=""
ENR_CIVILAIDE=""
ENR_SECTEURAIDANT=""
ENR_SECTEURAIDE=""
ENR_CONTRAT=""
ENR_AGGIRAIDE=""
ENR_RUBSAISIE=""
ENR_ACTIVITES=""
ENR_ACCORD=""
ENR_ORGPRISECHARGE=""
ENR_RESPONSABLE=""

W_Req=""
W_ReqAcc=""
*********************************************************************

	* Modif Greg - 29/01/15 - Unification du PRX grant la saisie globale et du PRX grant la saisie dtaille + ajout de colonnes
	* Modif Greg - 16/01/15 - Caen avait une colonne Periode, qui reprenait juste la priode entre en paramtre, mais au format MM/AAAA. Le PRX a t envoy dans la v560 mais sans cette colonne.
	*ENR_STATAIDE<-1>="Code aidant;Nom prenom aidant;Adresse Aidant;Code Postal Aidant;Commune aidant;Secteur aidant;Categorie aidant;Heures contrat;Code aide;Nom prenom aide;Adresse aide;Code Postal aide;Commune aide;Secteur aide;Code GIR aide;Heures effectuees;Rub. de saisie;Activite;Periode"
	IF W_DetOrg="O" THEN
		W_Chaine=';Code org.;Libelle org.'
	END ELSE
		W_Chaine=""
	END
	ENR_STATAIDE<-1>="Code aidant;Nom prenom aidant;Adresse Aidant;Code Postal Aidant;Commune aidant;Secteur aidant;Categorie aidant;Heures contrat;Code aide;Nom prenom aide;Adresse aide;Code Postal aide;Commune aide;Secteur aide;Resp. aide;Code GIR aide;Jour;Heures effectuees;Code rub.;Rub. de saisie;Code act.;Activite;Periode":W_Chaine
	

	EXECUTE 'SELECT DETAILPREST AVEC 0 = "[':W_Periode:'" PAR NomPrenomAidantDetailPrest'
	EXECUTE 'SAUVE-LISTE W_Req'
	EXECUTE 'LISTE W_Req' RETURNING MSGCODE

	IF MSGCODE<1> # "209" THEN
		SELECT F.DETAILPREST TO W_Req

		W_Fin = "F"
		LOOP
			READNEXT W_Cle FROM W_Req ELSE W_Fin = "O"
		WHILE W_Fin = "F"
			READ ENR_DETAILPREST FROM F.DETAILPREST, W_Cle THEN
								
				READ ENR_CIVILAIDANT FROM F.CIVILAIDANT, W_Cle[1,5] ELSE ENR_CIVILAIDANT=""
				READ ENR_SECTEURAIDANT FROM F.SECTEUR, ENR_CIVILAIDANT<31> ELSE ENR_SECTEURAIDANT=""
				READ ENR_CONTRAT FROM F.CONTRAT, W_Cle[1,8] ELSE ENR_CONTRAT=""
				W_Addr1 = TRIM(ENR_CIVILAIDANT<5>:" ":ENR_CIVILAIDANT<6>:" ":ENR_CIVILAIDANT<7>:" ":ENR_CIVILAIDANT<8>)
				W_Cat=""
				W_HresContrat=""
				W_Freq=""
				
				FOR J = DCOUNT(ENR_CONTRAT<15>,CHAR(253)) TO 1 STEP -1
					IF ENR_CONTRAT<15,J><= W_DernJourPer THEN
						W_Cat=ENR_CONTRAT<16,J>
						W_HresContrat=ENR_CONTRAT<24,J>
						W_Freq=ENR_CONTRAT<25,J>
						
						BEGIN CASE
							CASE W_Freq="1"
								W_HresContrat=INT(((W_HresContrat*52)/12)+(1/2))/100
							CASE W_Freq="2"
								W_HresContrat=INT(((W_HresContrat*26)/12)+(1/2))/100
							CASE W_Freq="3"
								W_HresContrat=W_HresContrat/100
							CASE W_Freq="4"
								W_HresContrat=INT((W_HresContrat/12)+(1/2))/100
						END CASE
						EXIT
					END
				NEXT J
				
				FOR I = 1 TO DCOUNT(ENR_DETAILPREST<1>,CHAR(253))
					* Modif Greg - 29/01/15 - Unification du PRX grant la saisie globale et du PRX grant la saisie dtaille.
					IF ENR_DETAILPREST<10,I>="" THEN
						GOSUB 10
					END ELSE
						GOSUB 20
					END
				NEXT I
			END
		REPEAT
		
		WRITE ENR_STATAIDE ON F.STATAIDE, "HRESAIDANTAIDE-":W_Periode:".csv"
		W_Sortie="Fichier HRESAIDANTAIDE-":W_Periode:" gnr dans le rpertoire STATAIDE."
	END ELSE
		W_Sortie='Aucune donne sur la priode renseigne.'
	END

RETURN
*******************************
* Traitement saisie globale   *
*******************************
10

	READ ENR_CIVILAIDE FROM F.CIVILAIDE, ENR_DETAILPREST<1,I> ELSE ENR_CIVILAIDE=""
	READ ENR_SECTEURAIDE FROM F.SECTEUR, ENR_CIVILAIDE<40>[1,3] ELSE ENR_SECTEURAIDE=""
	READ ENR_AGGIRAIDE FROM F.AGGIRAIDE, ENR_DETAILPREST<1,I> ELSE ENR_AGGIRAIDE=""
	READ ENR_RUBSAISIE FROM F.RUBSAISIE, ENR_DETAILPREST<2,I> ELSE ENR_RUBSAISIE=""
	READ ENR_ACTIVITES FROM F.ACTIVITES, ENR_DETAILPREST<4,I> ELSE ENR_ACTIVITES=""
	READ ENR_RESPONSABLE FROM F.RESPONSABLE, ENR_CIVILAIDE<39> ELSE ENR_RESPONSABLE=""
	
	W_HresDetail=ENR_DETAILPREST<3,I>/100

	W_CodeGir=""
	
	IF ENR_AGGIRAIDE<18> <= W_DernJourPer THEN
		W_CodeGir=ENR_AGGIRAIDE<19>:ENR_AGGIRAIDE<20>
	END ELSE
		FOR J = 1 TO DCOUNT(ENR_AGGIRAIDE<39>,CHAR(253))
			IF ENR_AGGIRAIDE<39,J><=W_DernJourPer THEN
				W_CodeGir=ENR_AGGIRAIDE<40,J>:ENR_AGGIRAIDE<41,J>
				EXIT
			END
		NEXT J
		IF W_CodeGir= "" THEN
			W_CodeGir=ENR_AGGIRAIDE<19>:ENR_AGGIRAIDE<20>
		END
	END
	W_Addr2 = TRIM(ENR_CIVILAIDE<5>:" ":ENR_CIVILAIDE<6>:" ":ENR_CIVILAIDE<7>:" ":ENR_CIVILAIDE<8>)

	* Modif Greg - 29/01/15 - Gestion abonnement
	IF W_Org # "" OR W_Abo="O" THEN
		W_Accord="NON"
	
		* Modif Greg - 29/01/15 - En consquence de l'unification des 2 PRX d'origine, la variable W_Deb est maintenant initialise  chaque fois, car elle peut varier
		* (sachant que dans le PRX d'origine de la saisie dtaille, c'tait mal gr :  prenait le premier jour du mois et non pas le jour de l'intervention).
		W_Deb="01/":W_Periode[5,2]:"/":W_Periode[1,4]
		W_Deb=ICONV(W_Deb,"D4/")
			
		W_Act=ENR_DETAILPREST<4,I>
		W_SubAppel="10"
		GOSUB 30
	END
	
	IF (W_DetOrg<>"O" AND W_Accord="OUI") OR (W_Org="" AND W_Abo<>"O") THEN
		ENR_STATAIDE<-1>=W_Cle[1,5]:';':ENR_CIVILAIDANT<2>:' ':ENR_CIVILAIDANT<3>:';':W_Addr1:';':ENR_CIVILAIDANT<10>:';':ENR_CIVILAIDANT<11>:';':ENR_SECTEURAIDANT<1>:';':W_Cat:';':W_HresContrat:';':ENR_DETAILPREST<1,I>:';':ENR_CIVILAIDE<2>:' ':ENR_CIVILAIDE<3>:';':W_Addr2:';':ENR_CIVILAIDE<10>:';':ENR_CIVILAIDE<11>:';':ENR_SECTEURAIDE<1>:';':ENR_RESPONSABLE<1>:';':W_CodeGir:';;':W_HresDetail:';':ENR_DETAILPREST<2,I>:';':ENR_RUBSAISIE<1>:';':ENR_DETAILPREST<4,I>:';':ENR_ACTIVITES<1>:';':W_Periode[5,2]:"/":W_Periode[1,4]
	END
	
RETURN
*******************************
* Traitement saisie dtaille *
*******************************
20

	READ ENR_CIVILAIDE FROM F.CIVILAIDE, ENR_DETAILPREST<1,I> ELSE ENR_CIVILAIDE=""
	READ ENR_SECTEURAIDE FROM F.SECTEUR, ENR_CIVILAIDE<40>[1,3] ELSE ENR_SECTEURAIDE=""
	READ ENR_AGGIRAIDE FROM F.AGGIRAIDE, ENR_DETAILPREST<1,I> ELSE ENR_AGGIRAIDE=""
	READ ENR_RESPONSABLE FROM F.RESPONSABLE, ENR_CIVILAIDE<39> ELSE ENR_RESPONSABLE=""

	W_CodeGir=""
	
	IF ENR_AGGIRAIDE<18> <= W_DernJourPer THEN
		W_CodeGir=ENR_AGGIRAIDE<19>:ENR_AGGIRAIDE<20>
	END ELSE
		FOR J = 1 TO DCOUNT(ENR_AGGIRAIDE<39>,CHAR(253))
			IF ENR_AGGIRAIDE<39,J><=W_DernJourPer THEN
				W_CodeGir=ENR_AGGIRAIDE<40,J>:ENR_AGGIRAIDE<41,J>
				EXIT
			END
		NEXT J
		IF W_CodeGir= "" THEN
			W_CodeGir=ENR_AGGIRAIDE<19>:ENR_AGGIRAIDE<20>
		END
	END					
	
	FOR J = 1 TO DCOUNT(ENR_DETAILPREST<10,I>,CHAR(252))
		W_HresDetail=ENR_DETAILPREST<12,I,J>/100
		READ ENR_RUBSAISIE FROM F.RUBSAISIE, ENR_DETAILPREST<11,I,J> ELSE ENR_RUBSAISIE=""
		READ ENR_ACTIVITES FROM F.ACTIVITES, ENR_DETAILPREST<13,I,J> ELSE ENR_ACTIVITES=""		
		W_Addr2 = TRIM(ENR_CIVILAIDE<5>:" ":ENR_CIVILAIDE<6>:" ":ENR_CIVILAIDE<7>:" ":ENR_CIVILAIDE<8>)
	
		W_Jour = ENR_DETAILPREST<10,I,J>
	
		* Modif Greg - 29/01/15 - Gestion abonnement
		IF W_Org # "" OR W_Abo="O" THEN
			W_Accord="NON"
		
			* Modif Greg - 29/01/15 - En consquence de l'unification des 2 PRX d'origine, la variable W_Deb est maintenant initialise  chaque fois, car elle peut varier
			* (sachant que dans le PRX d'origine de la saisie dtaille, c'tait mal gr :  prenait le premier jour du mois et non pas le jour de l'intervention).
			W_Deb=W_Jour:"/":W_Periode[5,2]:"/":W_Periode[1,4]
			W_Deb=ICONV(W_Deb,"D4/")
			
			W_Act=ENR_DETAILPREST<13,I,J>
			W_SubAppel="20"
			GOSUB 30
		END
		
		IF (W_DetOrg<>"O" AND W_Accord="OUI") OR (W_Org="" AND W_Abo<>"O") THEN
			ENR_STATAIDE<-1>=W_Cle[1,5]:';':ENR_CIVILAIDANT<2>:' ':ENR_CIVILAIDANT<3>:';':W_Addr1:';':ENR_CIVILAIDANT<10>:';':ENR_CIVILAIDANT<11>:';':ENR_SECTEURAIDANT<1>:';':W_Cat:';':W_HresContrat:';':ENR_DETAILPREST<1,I>:';':ENR_CIVILAIDE<2>:' ':ENR_CIVILAIDE<3>:';':W_Addr2:';':ENR_CIVILAIDE<10>:';':ENR_CIVILAIDE<11>:';':ENR_SECTEURAIDE<1>:';':ENR_RESPONSABLE<1>:';':W_CodeGir:';':W_Jour:';':W_HresDetail:';':ENR_DETAILPREST<11,I,J>:';':ENR_RUBSAISIE<1>:';':ENR_DETAILPREST<13,I,J>:';':ENR_ACTIVITES<1>:';':W_Periode[5,2]:"/":W_Periode[1,4]
		END
	NEXT J

RETURN
*******************************
* Vrification accord         *
*******************************
30

	W_RequeteAcc = 'SELECT ACCORD AVEC CodAcc = "':ENR_DETAILPREST<1,I>:']" AND AVEC 5 <= "':W_DernJourPer:'" AND AVEC 6 >= "':W_Deb:'"'
	IF W_Org<>"" THEN
		W_RequeteAcc = W_RequeteAcc:' AND AVEC 1 = "':W_Org:'"'
	END
	
	IF W_Abo = "O" THEN
		W_RequeteAcc = W_RequeteAcc:' AND AVEC Abonnement = "1"'
	END

	W_RESULTATA=""
	EXECUTE W_RequeteAcc
	EXECUTE 'SAUVE-LISTE W_RESULTATA' 
	EXECUTE "LISTE W_RESULTATA" RETURNING MSGCODES

	IF MSGCODES<1> # 209 THEN
		SELECT F.ACCORD TO W_RESULTATA

		W_FinAcc = "F"
		LOOP
			READNEXT W_CleAcc FROM W_RESULTATA ELSE W_FinAcc = "O"
		WHILE W_FinAcc = "F"
			READ ENR_ACCORD FROM F.ACCORD, W_CleAcc THEN
				READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE, ENR_ACCORD<1> THEN
					FOR IAct = 1 TO DCOUNT(ENR_ORGPRISECHARGE<47>,CHAR(253))
						IF W_Act = ENR_ORGPRISECHARGE<47,IAct> THEN
							IF W_DetOrg="O" THEN
								IF W_SubAppel="10" THEN
									ENR_STATAIDE<-1>=W_Cle[1,5]:';':ENR_CIVILAIDANT<2>:' ':ENR_CIVILAIDANT<3>:';':W_Addr1:';':ENR_CIVILAIDANT<10>:';':ENR_CIVILAIDANT<11>:';':ENR_SECTEURAIDANT<1>:';':W_Cat:';':W_HresContrat:';':ENR_DETAILPREST<1,I>:';':ENR_CIVILAIDE<2>:' ':ENR_CIVILAIDE<3>:';':W_Addr2:';':ENR_CIVILAIDE<10>:';':ENR_CIVILAIDE<11>:';':ENR_SECTEURAIDE<1>:';':W_CodeGir:';;':W_HresDetail:';':ENR_DETAILPREST<2,I>:';':ENR_RUBSAISIE<1>:';':ENR_DETAILPREST<4,I>:';':ENR_ACTIVITES<1>:';':W_Periode[5,2]:"/":W_Periode[1,4]:';':ENR_ACCORD<1>:';':ENR_ORGPRISECHARGE<1>
								END ELSE
									ENR_STATAIDE<-1>=W_Cle[1,5]:';':ENR_CIVILAIDANT<2>:' ':ENR_CIVILAIDANT<3>:';':W_Addr1:';':ENR_CIVILAIDANT<10>:';':ENR_CIVILAIDANT<11>:';':ENR_SECTEURAIDANT<1>:';':W_Cat:';':W_HresContrat:';':ENR_DETAILPREST<1,I>:';':ENR_CIVILAIDE<2>:' ':ENR_CIVILAIDE<3>:';':W_Addr2:';':ENR_CIVILAIDE<10>:';':ENR_CIVILAIDE<11>:';':ENR_SECTEURAIDE<1>:';':W_CodeGir:';':W_Jour:';':W_HresDetail:';':ENR_DETAILPREST<11,I,J>:';':ENR_RUBSAISIE<1>:';':ENR_DETAILPREST<13,I,J>:';':ENR_ACTIVITES<1>:';':W_Periode[5,2]:"/":W_Periode[1,4]:';':ENR_ACCORD<1>:';':ENR_ORGPRISECHARGE<1>
								END
							END
						
							W_Accord="OUI"
							EXIT
						END
					NEXT IAct
				END
			END
		REPEAT
	END
	
	EXECUTE 'EFFACER-LISTE W_RESULTATA'

RETURN