*** LISTE LES ACCORDS REDONDANTS SUR UNE PERIODE DE FACTURATION
*** ET PAR TYPE D'ACCORD ET PAR SECTEUR

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ACCORD" TO F.ACCORD ELSE STOP
OPEN "","CIVILAIDE" TO F.CIVILAIDE ELSE STOP
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","DETAILPRESTINV" TO F.DETAILPRESTINV ELSE STOP
OPEN "","ORGPRISECHARGE" TO F.ORGPRISECHARGE ELSE STOP
OPEN "","PERIODESPAIE" TO F.PERIODESPAIE ELSE STOP
OPEN "","SECTEUR" TO F.SECTEUR ELSE STOP

W_RequeteMoul=""

* CREATION NOUVEAU DICTIONNAIRE FICHIER ACCORD
OPEN "DICT","ACCORD" TO F.DICT_ACCORD ELSE STOP

	* DICTIONNAIRE TYPE HEURES
	ENR_DICT_ACCORD=""
	ENR_DICT_ACCORD<1>="V"
	ENR_DICT_ACCORD<2>="OCONV(@ID,":CHAR(34):"T1,5":CHAR(34):":@VM:":CHAR(34):"TORGPRISECHARGE;X;;51":CHAR(34):")"
	ENR_DICT_ACCORD<3>=""
	ENR_DICT_ACCORD<4>="Type heure accord"
	ENR_DICT_ACCORD<5>="1R"
	ENR_DICT_ACCORD<6>="S"
	WRITE ENR_DICT_ACCORD ON F.DICT_ACCORD,"TypeHeuresAcc"


* RECUPERATION PERIODE DE PAIE EN COURS
READ ENR_PERIODESPAIE FROM F.PERIODESPAIE,"1" ELSE ENR_PERIODESPAIE=""

* CONVERSION PERIODE EN DATE
W_DATEDEB=ICONV("01/":ENR_PERIODESPAIE<1>[5,2]:"/":ENR_PERIODESPAIE<1>[1,4],"D4/")
IF ENR_PERIODESPAIE<1>[5,2]="12" THEN
	W_DATEFIN=ICONV("01/":ENR_PERIODESPAIE<1>[5,2]:"/":ENR_PERIODESPAIE<1>[1,4]+1,"D4/")-1
END ELSE
        W_DATEFIN=ICONV("01/":ENR_PERIODESPAIE<1>[5,2]+1:"/":ENR_PERIODESPAIE<1>[1,4],"D4/")-1
END

* SELECTIONNE LE ACCORD ACTIF SUR CETTE PERIODE
*EXECUTE 'SELECT ACCORD AVEC 0 = "04796]" AND AVEC 5 <= "':W_DATEFIN:'" AND AVEC 6 >= "':W_DATEDEB:'" AND AVEC TypeOrg = "P" AND AVEC TypeActOrg = "P" PAR Secteur PAR NomPrenomAide PAR TypeHeuresAcc'
EXECUTE 'SELECT ACCORD AVEC 18 # "O" AND AVEC 5 <= "':W_DATEFIN:'" AND AVEC 6 >= "':W_DATEDEB:'" AND AVEC TypeOrg = "P" AND AVEC TypeActOrg = "P" PAR Secteur PAR NomPrenomAide PAR TypeHeuresAcc'
EXECUTE 'SAUVE-LISTE W_RequeteMoul'
EXECUTE "LISTE W_RequeteMoul" RETURNING MSGCODE

PRINTER ON

W_ImprimeLigne="FAUX"
W_NoPage=0
W_Ligne=0
W_AncienCleAide=""
W_TabAccAide=""
W_AncienCodeSecteur=""
IF MSGCODE<1> # 209 THEN

   SELECT F.ACCORD TO W_RequeteMoul
   W_Fini="FAUX"
   LOOP
      READNEXT W_Cle FROM W_RequeteMoul ELSE W_Fini="VRAI"
   WHILE W_Fini="FAUX" DO
	W_CleAide=W_Cle[1,5]

	IF W_CleAide # W_AncienCleAide AND W_AncienCleAide # "" THEN

		W_EDIT=0

		READ ENR_DETAILPRESTINV FROM F.DETAILPRESTINV,W_AncienCleAide:"004":ENR_PERIODESPAIE<1> THEN
			READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_AncienCleAide ELSE STOP

			W_CodeSecteur=ENR_CIVILAIDE<40>
			W_CodeSecteur=W_CodeSecteur[1,3]
			IF W_AncienCodeSecteur # W_CodeSecteur THEN
				READ ENR_SECTEUR FROM F.SECTEUR,W_CodeSecteur ELSE STOP
				IF W_AncienCodeSecteur # "" THEN
					FOR j=W_Ligne+1 TO 72
						PRINT ""
					NEXT j
				END
				W_NoPage=W_NoPage+1
				GOSUB 20			
			END

			W_AncienCodeSecteur=W_CodeSecteur
			GOSUB 10
			IF W_ImprimeLigne="VRAI" THEN
****				PRINT ""
****				W_Ligne=W_Ligne+1
				IF W_Ligne>=65 THEN
					FOR j=W_Ligne+1 TO 72
						PRINT ""
					NEXT j
					W_NoPage=W_NoPage+1
					GOSUB 20
				END
			END

			IF W_ImprimeLigne="VRAI" THEN GOSUB 99

			W_ImprimeLigne="FAUX"
		END

		W_TabAccAide=""
	END

      READ ENR_ACCORD FROM F.ACCORD,W_Cle ELSE STOP

      READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,ENR_ACCORD<1> THEN
		IF ENR_ORGPRISECHARGE<51>="" OR ENR_ORGPRISECHARGE<51>="0" THEN
			W_TabAccAide<1,-1>=W_Cle
		END ELSE
			IF ENR_ORGPRISECHARGE<51>="1" THEN
				W_TabAccAide<2,-1>=W_Cle
			END ELSE
				W_TabAccAide<3,-1>=W_Cle
			END
		END
	END
	
	W_AncienCleAide=W_CleAide

   REPEAT

	READ ENR_DETAILPRESTINV FROM F.DETAILPRESTINV,W_AncienCleAide:"004":ENR_PERIODESPAIE<1> THEN
		READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_AncienCleAide ELSE STOP
		W_CodeSecteur=ENR_CIVILAIDE<40>
		W_CodeSecteur=W_CodeSecteur[1,3]
		IF W_AncienCodeSecteur # W_CodeSecteur THEN
			READ ENR_SECTEUR FROM F.SECTEUR,W_CodeSecteur ELSE STOP
			W_NoPage=W_NoPage+1
			GOSUB 20
		END
	
		W_AncienCodeSecteur=W_CodeSecteur
		GOSUB 10

		IF W_Count1>1 OR W_Count2>1 OR W_Count3>1 THEN GOSUB 99
	END
END

STOP
*************************************************************************************
* Impression des donnees
10 

	W_Count1=DCOUNT(W_TabAccAide<1>,CHAR(253))
	IF W_Count1 > 1 THEN
		FOR i=1 TO W_Count1
		      READ ENR_ACCORD FROM F.ACCORD,W_TabAccAide<1,i> ELSE STOP
		      READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,ENR_ACCORD<1> ELSE STOP
			W_Type="TOT."
			GOSUB 30
		NEXT i
	END

	W_Count2=DCOUNT(W_TabAccAide<2>,CHAR(253))
	IF W_Count2 > 1 THEN
		FOR i=1 TO W_Count2
		      READ ENR_ACCORD FROM F.ACCORD,W_TabAccAide<2,i> ELSE STOP
		      READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,ENR_ACCORD<1> ELSE STOP
			W_Type="DJF."
			GOSUB 30
		NEXT i
	END

	W_Count3=DCOUNT(W_TabAccAide<3>,CHAR(253))
	IF W_Count3 > 1 THEN
		FOR i=1 TO W_Count3
		      READ ENR_ACCORD FROM F.ACCORD,W_TabAccAide<3,i> ELSE STOP
		      READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,ENR_ACCORD<1> ELSE STOP
			W_Type="SEM."
			GOSUB 30
		NEXT i
	END

	IF W_TabAccAide<1> # "" AND  W_TabAccAide<2> # "" THEN
		IF W_Count1 < 2 THEN 
			FOR i=1 TO W_Count1
			      READ ENR_ACCORD FROM F.ACCORD,W_TabAccAide<1,i> ELSE STOP
			      READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,ENR_ACCORD<1> ELSE STOP
				W_Type="TOT."
				GOSUB 30
			NEXT i
		END
		IF W_Count2 < 2 THEN 
			FOR i=1 TO W_Count2
			      READ ENR_ACCORD FROM F.ACCORD,W_TabAccAide<2,i> ELSE STOP
			      READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,ENR_ACCORD<1> ELSE STOP
				W_Type="DJF."
				GOSUB 30
			NEXT i
		END
	END
	
	IF W_TabAccAide<1> # "" AND  W_TabAccAide<3> # "" THEN
		IF W_Count1 < 2 THEN 
			FOR i=1 TO W_Count1
			      READ ENR_ACCORD FROM F.ACCORD,W_TabAccAide<1,i> ELSE STOP
			      READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,ENR_ACCORD<1> ELSE STOP
				W_Type="TOT."
				GOSUB 30
			NEXT i
		END
		IF W_Count3 < 2 THEN 
			FOR i=1 TO W_Count3
			      READ ENR_ACCORD FROM F.ACCORD,W_TabAccAide<3,i> ELSE STOP
			      READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,ENR_ACCORD<1> ELSE STOP
				W_Type="SEM."
				GOSUB 30
			NEXT i
		END
	END		

RETURN

*************************************************************************************
* Entete page
20 
	PRINT "Date : ":OCONV(DATE(),"D4/"):SPACE(50):"Page : ":W_NoPage
	PRINT ""
	PRINT ""
	PRINT SPACE(17):"LISTE DES ACCORDS REDONDANTS SUR ":ENR_PERIODESPAIE[5,2]:"/":ENR_PERIODESPAIE[1,4]
	PRINT ""
	PRINT ""
	PRINT "SECTEUR : ":W_CodeSecteur:" ":ENR_SECTEUR<1>
	PRINT ""
	PRINT ""
	PRINT "Code  Nom-Prenom Aide      Organisme prise en charge Db. accord Fin Accord Type"
	PRINT ""
	W_Ligne=11	
RETURN

*************************************************************************************
* Ligne
30 
	W_ImprimeLigne="VRAI"

	W_NomPrenomAide=ENR_CIVILAIDE<2>:" ":ENR_CIVILAIDE<3>
	W_NomPrenomAide=W_NomPrenomAide[1,20]
	W_NomPrenomAide=W_NomPrenomAide "L#21"

	W_LibOrganisme=ENR_ORGPRISECHARGE<1>
	W_LibOrganisme=W_LibOrganisme[1,25]
	W_LibOrganisme=W_LibOrganisme"L#26"

	W_DateDebAcc=OCONV(ENR_ACCORD<5>,"D4/")
	W_DateFinAcc=OCONV(ENR_ACCORD<6>,"D4/")

	PRINT W_AncienCleAide:" ":W_NomPrenomAide:W_LibOrganisme:W_DateDebAcc:"  ":W_DateFinAcc:" ":W_Type
	W_Ligne=W_Ligne+1
	IF W_Ligne>=65 THEN
		FOR j=W_Ligne+1 TO 72
			PRINT ""
		NEXT j
		W_NoPage=W_NoPage+1
		GOSUB 20
	END

RETURN

*************************************************************************************
* Ligne AIDANT
99 

	W_LIGNEAIDANT="->"
	W_NBLIGNE=1

	I=1
	LOOP
		UNTIL ENR_DETAILPRESTINV<1,I>="" DO

		READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,ENR_DETAILPRESTINV<1,I>[1,5] ELSE ENR_CIVILAIDANT=""
	
		W_DETAILAIDANT=""				
		W_DETAILAIDANT=ENR_DETAILPRESTINV<1,I>[1,5]:" ":ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>

**		W_LIGNEAIDANT=W_LIGNEAIDANT:W_DETAILAIDANT[1,25]:SPACE(25-LEN(W_DETAILAIDANT[1,25])):"/"
		IF LEN(W_LIGNEAIDANT:W_DETAILAIDANT[1,25])>(80*W_NBLIGNE) THEN 
			W_LIGNEAIDANT=W_LIGNEAIDANT:CHAR(13):CHAR(10):"->":W_DETAILAIDANT[1,25]:SPACE(25-LEN(W_DETAILAIDANT[1,25])):"/"
			W_NBLIGNE=W_NBLIGNE+1
			W_Ligne=W_Ligne+1
		END ELSE
			W_LIGNEAIDANT=W_LIGNEAIDANT:W_DETAILAIDANT[1,25]:SPACE(25-LEN(W_DETAILAIDANT[1,25])):"/"
		END
		
		I=I+1
	REPEAT	

	PRINT W_LIGNEAIDANT
	W_Ligne=W_Ligne+1
	PRINT " "
	W_Ligne=W_Ligne+1

RETURN
