 **************************************************************
*Generation du fichier DetailPrestInv a partir de DetailPrest
*Programme chaine a partir d'un projet VB
*Moulin christophe

*rajoute la slection par commune
*Vanes  le 19/02/2002

* Ajout gestion des org. dimanches et JF
* Michal le 09/04/03

* Ajout gestion du listage des accords
* Christophe le 28/10/03

**************************************************************

* Ouvertures des fichiers
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ACCORD" TO F.ACCORD ELSE PRINT "FICHIER ACCORD"
OPEN "","ACCORDPROSP" TO F.ACCORDPROSP ELSE PRINT "FICHIER ACCORDPROSP"
OPEN "","ABSENCESAIDE" TO F.ABSENCESAIDE ELSE PRINT "FICHIER ABSENCESAIDE"
OPEN "","ACTIVITESAIDE" TO F.ACTIVITESAIDE ELSE PRINT "FICHIER ACTIVITESAIDE"
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE PRINT "FICHIER ASSOCIATION"
OPEN "","COMPTEUR" TO F.COMPTEUR ELSE PRINT "FICHIER COMPTEUR"
OPEN "","DEMANDACC" TO F.DEMANDACC ELSE PRINT "FICHIER DEMANDACC"
OPEN "","DETAILPREST" TO F.DETAILPREST ELSE PRINT "FICHIER DETAILPREST"
OPEN "","DETAILPRESTINV" TO F.DETAILPRESTINV ELSE PRINT "FICHIER DETAILPRESTINV"
OPEN "","HRESATTENTE" TO F.HRESATTENTE ELSE PRINT "FICHIER HRESATTENTE"
OPEN "","ORGPRISECHARGE" TO F.ORGPRISECHARGE ELSE PRINT "FICHIER ORGPRISECHARGE"
OPEN "","RESPONSABLE" TO F.RESPONSABLE ELSE PRINT "FICHIER RESPONSABLE"
OPEN "","RUBSAISIE" TO F.RUBSAISIE ELSE PRINT "FICHIER RUBSAISIE"
OPEN "","SECTEUR" TO F.SECTEUR ELSE PRINT "FICHIER SECTEUR"
OPEN "","SUIVACCORDPROSP" TO F.SUIVACCORDPROSP ELSE PRINT "FICHIER SUIVACCORDPROSP"
OPEN "","TEMPCALCULPREAPREST" TO F.TEMPCALCULPREAPREST ELSE PRINT "FICHIER TEMPCALCULPREAPREST"

*********************************************************
* Recuperation des arguments
PROCREAD ARGUMENTS ELSE PRINT "ARGUMENTS"
W_CodAssoc=FIELD(ARGUMENTS," ",2)
*W_CodeSectResp=FIELD(ARGUMENTS," ",3)
*W_RespOrSect=W_CodeSectResp[4,1]
*W_CodeSectResp=W_CodeSectResp[1,3]

W_CodeSectResp=FIELD(ARGUMENTS," ",3)
W_RespOrSect=W_CodeSectResp[1,1]
W_CodeSectResp=W_CodeSectResp[2,LEN(W_CodeSectResp)-1]

IF W_RespOrSect="C" AND W_CodeSectResp # "VID" THEN
   W_CodeSectResp = CONVERT("|"," ",W_CodeSectResp)
END

W_CboAnneeMois=FIELD(ARGUMENTS," ",4)
W_ListeActivites=FIELD(ARGUMENTS," ",5)
W_NbActivites=FIELD(ARGUMENTS," ",6)
W_ImprimeAccord=FIELD(ARGUMENTS," ",7)
W_CodeService=FIELD(ARGUMENTS," ",8)
W_Planning=FIELD(ARGUMENTS," ",9)
W_CodeAideIndPlanning=FIELD(ARGUMENTS," ",10)

*********************************************************
*Initialisation des variables
W_RequeteAccord=""
W_RequeteAccHres=""
W_RequeteActivitesAide=""
W_RequeteHres=""
W_RequetePrest=""
W_RequeteRub=""
W_Fini="FAUX"
W_Temp=""
W_Date=""
W_Len=0
W_LenArrondi=0
W_ChrAArrondir=""
W_CleDetailPrest=""
W_CleDetailPrestPrec=""
W_CleRub=""
W_TabMs=""
i=1
W_PlaceMv=0
W_ResRub=0
W_Rub=""
W_Act=""
W_ResAct=0
W_CodeInvAv=""
ENR_DETAILPRESTINV=""
W_IndiceInv=0
W_Cle=""
j=1
* Variable indiquant si dimanche ou jours feries
W_DimFer="FAUX"
W_IndiceTab=0
k=0
W_RienSelect="FAUX"
W_FiniAct="FAUX"

****************************
* 2 eme partie
W_DateDeb=""
W_DateFin=""
W_RequeteDemandAcc=""
* Tableau dynamique
W_IndPasHeuresSaisie=0
W_IndTropHeures=0 
* Tableau dynamique
* W_TropHeures="" ici
W_CleAct=""
W_Pos=0
W_Cle=""
W_DateInv=""
ENR_TEMPCALCULPREAPREST=""
W_RequeteAcc=""
W_Motif=0
W_Att1Prosp=""
W_CountAtt1=0
ENR_ATTENTEPREST=""
W_ReqProsp=""
W_NbHreRestant=0
******************************************
* Programme principal

   READ ENR_COMPTEUR FROM F.COMPTEUR,"999" ELSE PRINT "READ COMPTEUR"
   IF ENR_COMPTEUR<17>="" OR ENR_COMPTEUR<17>="000" THEN
      W_GestionFede="FAUX"
   END ELSE
      W_GestionFede="VRAI"
   END

   W_Activites=""
   IF W_NbActivites# 1 THEN
      FOR i=1 TO W_NbActivites
         W_Activites=REPLACE(W_Activites,i;FIELD(W_ListeActivites,"|",i))
      NEXT i
   END ELSE
      W_Activites<1>=W_ListeActivites
   END

* Requete RubSaisie
   GOSUB 900

  EXECUTE 'VIDER-FICHIER DATA TEMPCALCULPREAPREST'
  
	* vider le fichier ACCORDPROSP et SUIVACCORDPROSP
	GOSUB  1200
  
* Lancement de l'affectation des heures en attente
   GOSUB 300

   IF W_Planning # "O" THEN
      IF W_GestionFede="FAUX" THEN

         EXECUTE 'VIDER-FICHIER DETAILPRESTINV'

         W_PARAMS=""
         W_SORTIE=""
         W_PARAMS<1>=W_CodAssoc
         W_PARAMS<2>=W_CboAnneeMois
         W_PARAMS<3>=""
         W_PARAMS<4>=W_NbActivites
         W_PARAMS<5>=W_Activites
	   
         CALL GENEREDETAILPRESTINV(W_PARAMS,W_SORTIE)
      END
   END

* 2 eme partie
   GOSUB 20
   IF W_RienSelect="FAUX" THEN
      GOSUB 100
   END ELSE
	ENR_TEMPCALCULPREAPREST = ""
   END 
   WRITE ENR_TEMPCALCULPREAPREST ON F.TEMPCALCULPREAPREST,W_CodAssoc

* Apuration des accord
   GOSUB 400

   EXECUTE 'EFFACER-LISTE W_RequeteRub'

   UNLOCK 0

STOP

********************************************************************
* Listage des rubriques dim Jf
900 

   EXECUTE 'SSELECT RUBSAISIE AVEC 2 = "4" PAR 2'
   EXECUTE 'SAUVE-LISTE W_RequeteRub'
   EXECUTE "LISTE W_RequeteRub" RETURNING MSGCODE
   IF MSGCODE<1>=209 THEN
      W_RienSelect="VRAI"
   END ELSE
      SELECT F.RUBSAISIE TO W_RequeteRub
   END

RETURN

******************************************
* Teste si la rubrique est dim et Jf
910 

   W_FiniRub="FAUX"
   W_ResRub=3
   LOOP
      READNEXT W_CleRub FROM W_RequeteRub ELSE W_FiniRub="VRAI"
   WHILE W_FiniRub#"VRAI" DO
      IF W_CleRub=W_Rub THEN
         W_ResRub=4
         W_FiniRub="VRAI"
      END
   REPEAT

   EXECUTE "LISTE W_RequeteRub" RETURNING MSGCODE
   IF MSGCODE<1>=209 THEN
      W_RequeteRub=""
   END ELSE
      SELECT F.RUBSAISIE TO W_RequeteRub
   END

RETURN

******************************************************************
* 2eme partie
* Requete sur activitesaide
******************************************************************
20 
   W_RienSelect="FAUX"
   W_Temp="SSELECT ACTIVITESAIDE "
   IF LEN(W_CodeAideIndPlanning) = 5 AND NUM(W_CodeAideIndPlanning) = 1 THEN
	   W_Temp=W_Temp:'= "':W_CodeAideIndPlanning:']"'
   END

   IF W_CodeSectResp # "VID" THEN
      IF W_RespOrSect="R" THEN
         W_Temp=W_Temp:'AVEC RespAide = "':W_CodeSectResp:'"'
      END ELSE
         IF W_RespOrSect="S" THEN
            W_Temp=W_Temp:'AVEC SecteurAide = "':W_CodeSectResp:'"'
         END ELSE
            IF W_RespOrSect="C" THEN
               W_Temp=W_Temp:'AVEC LibCommuneAide = "':W_CodeSectResp:'"'
            END
         END
      END
   END

   IF W_CodeService # "0" THEN
      IF W_CodeSectResp # "VID" THEN
         W_Temp=W_Temp:' AND ' 
      END
      IF LEN(W_CodeAideIndPlanning) = 5 AND NUM(W_CodeAideIndPlanning) = 1 THEN
         W_Temp=W_Temp:' ' 
      END
      W_Temp=W_Temp:'AVEC 6 = "':W_CodeService:'"'
   END

   IF W_RespOrSect="R" THEN
      W_Temp=W_Temp:' PAR LibRespAide'
   END ELSE
      IF W_RespOrSect="S" THEN
         W_Temp=W_Temp:' PAR LibSecteurAide'
      END ELSE
         IF W_RespOrSect="C" THEN
            W_Temp=W_Temp:' PAR LibCommuneAide'
         END
      END
   END
   W_Temp=W_Temp:' PAR NomAide PAR @ID'
   W_Temp=W_Temp:' BY.EXP 1 = "':EXTRACT(W_Activites,1):'"'
   FOR i=2 TO W_NbActivites
      W_Temp=W_Temp:' OR = "':EXTRACT(W_Activites,i):'"'
   NEXT i

   EXECUTE W_Temp

   EXECUTE 'SAUVE-LISTE W_RequeteActivitesAide'
   EXECUTE "LISTE W_RequeteActivitesAide" RETURNING MSGCODE
   IF MSGCODE<1>=209 THEN
      W_RienSelect="VRAI"
   END ELSE
      SELECT F.ACTIVITESAIDE TO W_RequeteActivitesAide
   END
   
RETURN

********************************************************************
* Gestion de la Requete d'Activitesaide
* Ne selectionne que les activites valide sur la periode concernee
100

   W_CleAncien=""
   W_ActChoisi=""
   W_Temp=W_CboAnneeMois[5,2]
   W_Date=W_Temp:"/":W_CboAnneeMois[1,4]
   W_DateFin=W_Temp+1
   IF W_DateFin=13 THEN
      W_DateFin=ICONV("31/":W_Date,"D4/")
   END ELSE
      W_DateFin=W_DateFin "R%2"
      W_DateFin=ICONV("01/":W_DateFin:"/":W_CboAnneeMois[1,4],"D4/")-1
   END
   W_DateDeb=ICONV("01/":W_Date,"D4/")
   W_FiniAct="FAUX"
   q=0

   LOOP
      READNEXT W_Cle FROM W_RequeteActivitesAide ELSE W_FiniAct="VRAI"
      IF W_CleAncien="" THEN
         W_CleAncien=W_Cle
      END
   WHILE W_FiniAct#"VRAI" DO
      IF W_CleAncien<1,1> # W_Cle<1,1> THEN
         IF W_ActChoisi# "" THEN
            W_CleAct=W_CleAncien<1,1>
            * Lance les requetes Accord et DemAcc + affectation des heures
            GOSUB 210
         END
         q=0
         W_ActChoisi=""
      END
      READ ENR_ACTIVITESAIDE FROM F.ACTIVITESAIDE,W_Cle<1,1> ELSE PRINT "READ ACTIVITESAIDE"
      * Cumul les activites de cet aide
      W_Pos=W_Cle<1,2>
      GOSUB 200
      W_CleAncien=W_Cle
   REPEAT
   
  IF W_ActChoisi# "" THEN
     READ ENR_ACTIVITESAIDE FROM F.ACTIVITESAIDE,W_CleAncien<1,1> ELSE PRINT "READ ACTIVITESAIDE2"
     W_CleAct=W_CleAncien<1,1>
     GOSUB 210
  END

RETURN

**********************************************************************************
* Test si l'activites est valide
200

W_ActAcc=ENR_ACTIVITESAIDE<1,W_Pos>
GOSUB 330  ;* Test si activite choisi sous Vb

IF W_EActChoisi="VRAI" THEN

   IF ENR_ACTIVITESAIDE<2,W_Pos>="" THEN

      * Je prends
      q=q+1
      W_ActChoisi=REPLACE(W_ActChoisi,1,q;ENR_ACTIVITESAIDE<1,W_Pos>)
      W_ActChoisi=REPLACE(W_ActChoisi,2,q;"VRAI")
	W_ActChoisi=REPLACE(W_ActChoisi,3,q;"          ")

   END ELSE

      IF ENR_ACTIVITESAIDE<2,W_Pos> <= W_DateFin THEN
         IF ENR_ACTIVITESAIDE<3,W_Pos> # "" THEN
            IF ENR_ACTIVITESAIDE<3,W_Pos> >= W_DateDeb THEN

               * Je prends
               q=q+1
               W_ActChoisi=REPLACE(W_ActChoisi,1,q;ENR_ACTIVITESAIDE<1,W_Pos>)
               W_ActChoisi=REPLACE(W_ActChoisi,2,q;"FAUX")
		   W_ActChoisi=REPLACE(W_ActChoisi,3,q;OCONV(ENR_ACTIVITESAIDE<2,W_Pos>,"D4/"))
            END

         END ELSE

            * Je prends
             q=q+1
             W_ActChoisi=REPLACE(W_ActChoisi,1,q;ENR_ACTIVITESAIDE<1,W_Pos>)
             W_ActChoisi=REPLACE(W_ActChoisi,2,q;"FAUX")
		 W_ActChoisi=REPLACE(W_ActChoisi,3,q;OCONV(ENR_ACTIVITESAIDE<2,W_Pos>,"D4/"))

         END
      END
   END
END

RETURN

***********************************************************************************
* Lance les requetes Accord et demande d'accord + affectation des heures

210

   * Requete accord
   GOSUB 110
   GOSUB 120
   GOSUB 130

	IF W_Planning = "O" THEN
		*ici mise a jour att 7 du fichier ACCORDPROSP + SUIVACCORDPROSP
		GOSUB 1300
	END
   
   WRITE ENR_TEMPCALCULPREAPREST ON F.TEMPCALCULPREAPREST,W_CodAssoc

RETURN

*****************************************************************************************
* Requete accord
110

   W_PasAccDimJF="VRAI"
   W_PasAccSem="VRAI"

   W_RienSelect="FAUX"

   W_Temp='SSELECT ACCORD AVEC @ID = "':W_CleAct:']" AND AVEC 18 <> "O" AND AVEC NotifOrg = "H" AND AVEC TypeOrg = "P" AND AVEC ActivitesOrg = "':EXTRACT(W_ActChoisi,1,1):'"'

   FOR i=2 TO q
      W_Temp=W_Temp:' OR = "':EXTRACT(W_ActChoisi,1,i):'"'
   NEXT i

   W_Temp=W_Temp:' PAR 8 PAR 5'
   EXECUTE W_Temp
   EXECUTE 'SAUVE-LISTE W_RequeteAccord'
   EXECUTE "LISTE W_RequeteAccord" RETURNING MSGCODE
   IF MSGCODE<1>=209 THEN
      W_RienSelect="VRAI"
   END ELSE
      SELECT F.ACCORD TO W_RequeteAccord
   END
   W_RequeteAcc=""
   W_RequeteImp2=""
   W_RequeteAccImprime=""
   
   * Attention si requete vide...   A TESTER
 IF W_RienSelect#"VRAI" THEN

   W_IndAccAct=0
   W_IndAcc=0
   W_FiniAcc="FAUX"
   W_ActOrg=0
   k=0

   LOOP
      READNEXT W_CleAcc FROM W_RequeteAccord ELSE W_FiniAcc="VRAI"
   WHILE W_FiniAcc#"VRAI" DO

      READ ENR_ACCORD FROM F.ACCORD,W_CleAcc ELSE PRINT "READ ACCORD"
      IF ENR_ACCORD<5> <= W_DateFin THEN
        IF ENR_ACCORD<6> >= W_DateDeb THEN
            * Compris dans la periode
             READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,ENR_ACCORD<1> ELSE PRINT "READ ORGPRISECHARGE"
             j=1
             W_IndAccAct=0
             W_IndAcc=W_IndAcc+1
			 BEGIN CASE
				CASE ENR_ORGPRISECHARGE<51> = "0" OR ENR_ORGPRISECHARGE<51> = ""
             		W_RequeteAcc=REPLACE(W_RequeteAcc,W_IndAcc,4;"0")
                        W_PasAccDimJF="FAUX"
                        W_PasAccSem="FAUX"
			
				CASE 1
             		W_RequeteAcc=REPLACE(W_RequeteAcc,W_IndAcc,4;ENR_ORGPRISECHARGE<51>)
                        IF ENR_ORGPRISECHARGE<51> = 1 THEN
                           W_PasAccDimJF="FAUX"
                        END ELSE
                           W_PasAccSem="FAUX"
                        END
			 END CASE
             W_RequeteAcc=REPLACE(W_RequeteAcc,W_IndAcc,1;W_CleAcc)
			 W_RequeteAcc=REPLACE(W_RequeteAcc,W_IndAcc,5;"")
             LOOP
                W_ActOrg=ENR_ORGPRISECHARGE<47,j>
             WHILE W_ActOrg#"" DO
                FOR k=1 TO q
                   IF W_ActChoisi<1,k>=W_ActOrg THEN
                      W_IndAccAct=W_IndAccAct+1
                      W_RequeteAcc=REPLACE(W_RequeteAcc,W_IndAcc,2,W_IndAccAct;W_ActOrg)
                   END
                NEXT k
                j=j+1
             REPEAT
             IF ENR_ACCORD<19>="" THEN
                ENR_ACCORD<19>="0"
             END
			
             IF ENR_ORGPRISECHARGE<19>=1 THEN
                IF ENR_ACCORD<17,1> # "" THEN
                   W_NbHresAcc=ENR_ACCORD<17,1>+ENR_ACCORD<9>
                END ELSE
                   W_NbHresAcc=ENR_ACCORD<9>
                END
                W_RequeteAcc=REPLACE(W_RequeteAcc,W_IndAcc,3;W_NbHresAcc)
             END ELSE
                IF ENR_ORGPRISECHARGE<19>=2 THEN
					IF ENR_ACCORD<22> # "" THEN
						W_HresAllouees=ENR_ACCORD<22>
					END ELSE
						W_HresAllouees=ENR_ACCORD<9>
					END
					W_RequeteAcc=REPLACE(W_RequeteAcc,W_IndAcc,3;W_HresAllouees)
                END ELSE
					IF ENR_ACCORD<17,1> # "" THEN
						W_NbHresAcc=ENR_ACCORD<17,1>-ENR_ACCORD<19>
						W_RequeteImp2=REPLACE(W_RequeteImp2,W_IndAcc,1;ENR_ACCORD<17,1>)
					END ELSE
						W_NbHresAcc=ENR_ACCORD<9>-ENR_ACCORD<19>
					    W_RequeteImp2=REPLACE(W_RequeteImp2,W_IndAcc,1;ENR_ACCORD<9>)
					END
					W_RequeteAcc=REPLACE(W_RequeteAcc,W_IndAcc,3;W_NbHresAcc)
                END
             END

			 IF ENR_ORGPRISECHARGE<18>="P" AND W_Planning = "O" THEN
				GOSUB 1000
			 END
        END
      END
   REPEAT
 END

W_RequeteAccImprime=W_RequeteAcc

RETURN

*************************************************************************************
* Gestion des demandes d'accord
120

   W_PasDemAccDimJF="VRAI"
   W_PasDemAccSem="VRAI"

    W_RequeteDemAcc=""
    W_IndDemAcc=0
    k=0
    l=0

    READ ENR_DEMANDACC FROM F.DEMANDACC,W_CleAct THEN
       j=1
       LOOP
       WHILE ENR_DEMANDACC<1,j>#"" DO
         IF ENR_DEMANDACC<3,j> <= W_DateFin THEN
            IF ENR_DEMANDACC<4,j> >= W_DateDeb THEN
               * Compris dans la periode
               READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,ENR_DEMANDACC<1,j> ELSE PRINT "READ ORGPRISECHARGE2"
               IF ENR_ORGPRISECHARGE<18>="P" AND ENR_ORGPRISECHARGE<24>="H" THEN
                  l=1
                  W_IndDemAccAct=0
                  W_IndDemAcc=W_IndDemAcc+1
                  W_RequeteDemAcc=REPLACE(W_RequeteDemAcc,W_IndDemAcc,1;ENR_DEMANDACC<5,j>)
				BEGIN CASE
					CASE ENR_ORGPRISECHARGE<51> = "0" OR ENR_ORGPRISECHARGE<51> = ""
             			W_RequeteDemAcc=REPLACE(W_RequeteDemAcc,W_IndDemAcc,3;"0")
                              W_PasDemAccDimJF="FAUX"
                              W_PasDemAccSem="FAUX"
                               
					CASE 1
             			W_RequeteDemAcc=REPLACE(W_RequeteDemAcc,W_IndDemAcc,3;ENR_ORGPRISECHARGE<51>)
                              IF ENR_ORGPRISECHARGE<51> = 1 THEN
                                 W_PasDemAccDimJF="FAUX"
                              END ELSE
                                 W_PasDemAccSem="FAUX"
                              END

				END CASE
                  LOOP
                     W_ActOrg=ENR_ORGPRISECHARGE<47,l>
                  WHILE W_ActOrg#"" DO
                     FOR k=1 TO q
                        IF W_ActChoisi<1,k>=W_ActOrg THEN
                           W_IndDemAccAct=W_IndDemAccAct+1
                           W_RequeteDemAcc=REPLACE(W_RequeteDemAcc,W_IndDemAcc,2,W_IndDemAccAct;W_ActOrg)
                        END
                     NEXT k
                     l=l+1
                  REPEAT
	  
					IF W_Planning = "O" THEN
						GOSUB 1100
						W_RequeteDemAcc=REPLACE(W_RequeteDemAcc,W_IndDemAcc,4;W_CleProsp)
					END
               END
            END
         END
         j=j+1
       REPEAT
    END

RETURN

****************************************************************************************
* Affectation des heures
****************************************************************************************
130 

   NbrHeuresPrestInv=0
   NbrHeuresAcc=0
   W_CumulHeures=""
   W_CumulHeuresDimJF=""
   W_HeuresLieesDemAcc=0
	ENR_DETAILPRESTINV=""

   READU ENR_DETAILPRESTINV FROM F.DETAILPRESTINV,W_CleAct:W_CodAssoc:W_CboAnneeMois THEN
      IF W_RequeteAcc="" AND W_RequeteDemAcc="" THEN
         i=1
         LOOP
         * Cumul des heures effectues dans DETAILPRESTINV sur l'activites
         WHILE ENR_DETAILPRESTINV<1,i>#"" DO
            IF ENR_DETAILPRESTINV<2,i>#"" THEN
               FOR k=1 TO q
                 IF ENR_DETAILPRESTINV<4,i> = W_ActChoisi<1,k> THEN
                     IF ENR_DETAILPRESTINV<9,i> = 2 THEN
                        W_CumulHeures=REPLACE(W_CumulHeures,k;W_CumulHeures<k>+ENR_DETAILPRESTINV<3,i>)
                     END ELSE
                        W_CumulHeuresDimJF=REPLACE(W_CumulHeuresDimJF,k;W_CumulHeuresDimJF<k>+ENR_DETAILPRESTINV<3,i>)
                     END
                 END
               NEXT k

            END ELSE
               j=1
               LOOP
               WHILE ENR_DETAILPRESTINV<5,i,j>#"" DO
                  FOR k=1 TO q
                     IF ENR_DETAILPRESTINV<8,i,j> = W_ActChoisi<1,k> THEN
                        IF ENR_DETAILPRESTINV<9,i,j> = 2 THEN
                           W_CumulHeures=REPLACE(W_CumulHeures,k;W_CumulHeures<k>+ENR_DETAILPRESTINV<7,i,j>)
                        END ELSE
                           W_CumulHeuresDimJF=REPLACE(W_CumulHeuresDimJF,k;W_CumulHeuresDimJF<k>+ENR_DETAILPRESTINV<7,i,j>)
                        END
                     END
                  NEXT k
                  j=j+1
               REPEAT
            END
            i=i+1
         REPEAT

         W_Count=DCOUNT(W_CumulHeures,CHAR(254))
	   W_CountHresDimJF = DCOUNT(W_CumulHeuresDimJF,CHAR(254))
	   IF W_Count < W_CountHresDimJF THEN
		W_Count = W_CountHresDimJF
	   END
         FOR i=1 TO W_Count
            IF W_CumulHeures<i> # "" THEN
               W_IndTropHeures=W_IndTropHeures+1
               ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,4,W_IndTropHeures;W_CleAct)
               ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures;W_CumulHeures<i>)
               ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,6,W_IndTropHeures;W_ActChoisi<1,i>)
               ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,7,W_IndTropHeures;4)
               ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,8,W_IndTropHeures;"2")
           END
            IF W_CumulHeuresDimJF<i> # "" THEN
               W_IndTropHeures=W_IndTropHeures+1
               ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,4,W_IndTropHeures;W_CleAct)
               ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures;W_CumulHeuresDimJF<i>)
               ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,6,W_IndTropHeures;W_ActChoisi<1,i>)
               ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,7,W_IndTropHeures;4)
               ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,8,W_IndTropHeures;"1")
           END
         NEXT i

      END ELSE
         i=1
         LOOP
         WHILE ENR_DETAILPRESTINV<1,i>#"" DO
            IF ENR_DETAILPRESTINV<2,i>#"" THEN
               W_HeuresLieesDemAcc=0

               NbrHeuresPrestInv=ENR_DETAILPRESTINV<3,i>
               W_ActPrestInv=ENR_DETAILPRESTINV<4,i>

               * Gestion des Multi-Valeurs de DETAILPRESTINV en Accord
               GOSUB 140

               IF NbrHeuresPrestInv>0 THEN

                  * si il reste des heures non affectees
                  W_Motif=1

                  IF W_RequeteDemAcc#"" THEN

                     GOSUB 150

                     IF NbrHeuresPrestInv>0 THEN
			      * Pas de demande ou demande depasse
                      IF W_Motif = 1 THEN
                        IF (ENR_DETAILPRESTINV<9,i> = 1 AND W_PasAccDimJF ="VRAI" AND W_PasDemAccDimJF ="VRAI") OR (ENR_DETAILPRESTINV<9,i> = 2 AND W_PasAccSem ="VRAI" AND W_PasDemAccSem ="VRAI") THEN
                           W_Motif=4
                        END ELSE
                           W_Motif=1
                        END
                        * Depassement d'accord
                         GOSUB 161
                         IF W_CumulPossible="VRAI" THEN
                            ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,iCumul;ENR_TEMPCALCULPREAPREST<5,iCumul> + NbrHeuresPrestInv)

*                         IF ENR_TEMPCALCULPREAPREST<4,W_IndTropHeures> = W_CleAct AND ENR_TEMPCALCULPREAPREST<6,W_IndTropHeures> = W_ActPrestInv AND ENR_TEMPCALCULPREAPREST<7,W_IndTropHeures> = 1 AND ENR_TEMPCALCULPREAPREST<8,W_IndTropHeures,1> = ENR_DETAILPRESTINV<9,i> THEN
*                            ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures;ENR_TEMPCALCULPREAPREST<5,W_IndTropHeures> + NbrHeuresPrestInv)
                         END ELSE
                            W_IndTropHeures=W_IndTropHeures+1
                            ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,4,W_IndTropHeures,1;W_CleAct)
                            ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures,1;NbrHeuresPrestInv)
                            ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,6,W_IndTropHeures,1;W_ActPrestInv)
                            ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,7,W_IndTropHeures,1;W_Motif)
                            ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,8,W_IndTropHeures,1;ENR_DETAILPRESTINV<9,i>)
                          END
                       END ELSE
                        IF W_Motif = 2 THEN
                           GOSUB 161
                           IF W_CumulPossible="VRAI" THEN
                               ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,iCumul;ENR_TEMPCALCULPREAPREST<5,iCumul> + W_HeuresLieesDemAcc)

*                           IF ENR_TEMPCALCULPREAPREST<4,W_IndTropHeures> = W_CleAct AND ENR_TEMPCALCULPREAPREST<6,W_IndTropHeures> = W_ActPrestInv AND ENR_TEMPCALCULPREAPREST<7,W_IndTropHeures> = 2 AND ENR_TEMPCALCULPREAPREST<8,W_IndTropHeures,1> = ENR_DETAILPRESTINV<9,i> THEN
*                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures;ENR_TEMPCALCULPREAPREST<5,W_IndTropHeures> + W_HeuresLieesDemAcc)
                           END ELSE
                              W_IndTropHeures=W_IndTropHeures+1
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,4,W_IndTropHeures,1;W_CleAct)
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures,1;W_HeuresLieesDemAcc)
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,6,W_IndTropHeures,1;W_ActPrestInv)
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,7,W_IndTropHeures,1;2)
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,8,W_IndTropHeures,1;ENR_DETAILPRESTINV<9,i>)
                            END
                        END ELSE
                           * motif = 3
                           GOSUB 161
                           IF W_CumulPossible="VRAI" THEN
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,iCumul;ENR_TEMPCALCULPREAPREST<5,iCumul> + NbrHeuresPrestInv)

*                           IF ENR_TEMPCALCULPREAPREST<4,W_IndTropHeures> = W_CleAct AND ENR_TEMPCALCULPREAPREST<6,W_IndTropHeures> = W_ActPrestInv AND ENR_TEMPCALCULPREAPREST<7,W_IndTropHeures> = 3 AND ENR_TEMPCALCULPREAPREST<8,W_IndTropHeures,1> = ENR_DETAILPRESTINV<9,i> THEN
*                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures;ENR_TEMPCALCULPREAPREST<5,W_IndTropHeures> + NbrHeuresPrestInv)
                           END ELSE
                              IF W_HeuresLieesDemAcc # 0 THEN
                                W_Motif = 2
                                GOSUB 161
                                IF W_CumulPossible="VRAI" THEN
                                   ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,iCumul;ENR_TEMPCALCULPREAPREST<5,iCumul> + W_HeuresLieesDemAcc)

*                                 IF ENR_TEMPCALCULPREAPREST<4,W_IndTropHeures> = W_CleAct AND ENR_TEMPCALCULPREAPREST<6,W_IndTropHeures> = W_ActPrestInv AND ENR_TEMPCALCULPREAPREST<7,W_IndTropHeures> = 2 AND ENR_TEMPCALCULPREAPREST<8,W_IndTropHeures,1> = ENR_DETAILPRESTINV<9,i> THEN
*                                     ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures;ENR_TEMPCALCULPREAPREST<5,W_IndTropHeures> + W_HeuresLieesDemAcc)
                                 END ELSE
                                    W_IndTropHeures=W_IndTropHeures+1
                                    ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,4,W_IndTropHeures,1;W_CleAct)
                                    ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures,1;W_HeuresLieesDemAcc)
                                    ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,6,W_IndTropHeures,1;W_ActPrestInv)
                                    ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,7,W_IndTropHeures,1;2)
                                    ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,8,W_IndTropHeures,1;ENR_DETAILPRESTINV<9,i>)
                                 END
                              END
                              * motif = 3
                              W_IndTropHeures=W_IndTropHeures+1
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,4,W_IndTropHeures,1;W_CleAct)
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures,1;NbrHeuresPrestInv)
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,6,W_IndTropHeures,1;W_ActPrestInv)
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,7,W_IndTropHeures,1;3)
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,8,W_IndTropHeures,1;ENR_DETAILPRESTINV<9,i>)
                           END
                        END
                       END
                     END ELSE
				   * Motif = 2 Demande d'accord a pris les heures restantes
                           IF ENR_TEMPCALCULPREAPREST<4,W_IndTropHeures> = W_CleAct AND ENR_TEMPCALCULPREAPREST<6,W_IndTropHeures> = W_ActPrestInv AND ENR_TEMPCALCULPREAPREST<7,W_IndTropHeures> = 2 AND ENR_TEMPCALCULPREAPREST<8,W_IndTropHeures,1> = ENR_DETAILPRESTINV<9,i> THEN
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures;ENR_TEMPCALCULPREAPREST<5,W_IndTropHeures> + W_HeuresLieesDemAcc)
                           END ELSE
                              W_IndTropHeures=W_IndTropHeures+1
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,4,W_IndTropHeures;W_CleAct)
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures;W_HeuresLieesDemAcc)
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,6,W_IndTropHeures;W_ActPrestInv)
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,7,W_IndTropHeures;W_Motif)
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,8,W_IndTropHeures;ENR_DETAILPRESTINV<9,i>)
                           END
                     END                     
                  END ELSE
                     IF (ENR_DETAILPRESTINV<9,i> = 1 AND W_PasAccDimJF ="VRAI") OR (ENR_DETAILPRESTINV<9,i> = 2 AND W_PasAccSem ="VRAI") THEN
                        W_Motif=4
                     END ELSE
                        W_Motif=1
                     END
                     * Depassement d'accord
                      GOSUB 161
                      IF W_CumulPossible="VRAI" THEN
                         ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,iCumul;ENR_TEMPCALCULPREAPREST<5,iCumul> + NbrHeuresPrestInv)

*                     IF ENR_TEMPCALCULPREAPREST<4,W_IndTropHeures> = W_CleAct AND ENR_TEMPCALCULPREAPREST<6,W_IndTropHeures> = W_ActPrestInv AND ENR_TEMPCALCULPREAPREST<7,W_IndTropHeures> = W_Motif AND ENR_TEMPCALCULPREAPREST<8,W_IndTropHeures,1> = ENR_DETAILPRESTINV<9,i> THEN
*                        ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures;ENR_TEMPCALCULPREAPREST<5,W_IndTropHeures> + NbrHeuresPrestInv)
                     END ELSE
                        W_IndTropHeures=W_IndTropHeures+1
                        ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,4,W_IndTropHeures;W_CleAct)
                        ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures;NbrHeuresPrestInv)
                        ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,6,W_IndTropHeures;W_ActPrestInv)
                        ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,7,W_IndTropHeures;W_Motif)
                        ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,8,W_IndTropHeures;ENR_DETAILPRESTINV<9,i>)
                     END
                  END
               END

            END ELSE

               * Gestion des Sous-Valeurs de DETAILPRESTINV
               GOSUB 160

            END
            i=i+1
         REPEAT

      END
	  
*	IF ENR_ACCORD<19> # 0 THEN
*		ENR_TEMPCALCULPREAPREST<10,W_IndTropHeures,1>=ENR_ACCORD<19>
*		ENR_ACCORD<19>=0
*	END

	IF W_ImprimeAccord=1 AND ENR_TEMPCALCULPREAPREST<4,W_IndTropHeures>=W_CleAct THEN
         GOSUB 131
         ENR_TEMPCALCULPREAPREST<9,W_IndTropHeures,1>=W_ListeAccord
      END

   END ELSE

      * IF W_RequeteDemAcc#"" OR W_RequeteAcc#"" THEN
      READ ENR_ABSENCESAIDE FROM F.ABSENCESAIDE,W_CleAct THEN
         i=1
         W_ABSENCE="NON"
         LOOP
         WHILE ENR_ABSENCESAIDE<1,i>#"" DO
            IF ENR_ABSENCESAIDE<1,i> <= W_DateFin AND ENR_ABSENCESAIDE<2,i> >= W_DateDeb THEN
               * Il a t absence sur une partie du mois
               W_ABSENCE="OUI"
               W_IndPasHeuresSaisie=W_IndPasHeuresSaisie+1
               ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,1,W_IndPasHeuresSaisie;W_CleAct)
               ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,2,W_IndPasHeuresSaisie,1;ENR_ABSENCESAIDE<1,i>)
               ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,2,W_IndPasHeuresSaisie,2;ENR_ABSENCESAIDE<2,i>)
               FOR k=1 TO q
                  ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,3,W_IndPasHeuresSaisie,k;W_ActChoisi<1,k>:W_ActChoisi<3,k>)
               NEXT k
               i=99
            END
            i=i+1
         REPEAT
         IF W_ABSENCE="NON" THEN
            * erreur de saisie d'heures non effectu car aucunes absences
            W_IndPasHeuresSaisie=W_IndPasHeuresSaisie+1
            ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,1,W_IndPasHeuresSaisie;W_CleAct)
            ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,2,W_IndPasHeuresSaisie;"")
            FOR k=1 TO q
                ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,3,W_IndPasHeuresSaisie,k;W_ActChoisi<1,k>:W_ActChoisi<3,k>)
            NEXT k
         END
      END ELSE
         * erreur de saisie d'heures non effectu car aucunes absences
         W_IndPasHeuresSaisie=W_IndPasHeuresSaisie+1
         ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,1,W_IndPasHeuresSaisie;W_CleAncien<1,1>)
         ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,2,W_IndPasHeuresSaisie;"")
         FOR k=1 TO q
             ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,3,W_IndPasHeuresSaisie,k;W_ActChoisi<1,k>:W_ActChoisi<3,k>)
         NEXT k
      END
      * END

   END
   RELEASE F.DETAILPRESTINV
   
RETURN

************************************************************************
* Ecriture des accords dans fichier TEMPCALCULPREAPREST
131

   W_ListeAccord=""
   W_NbRequeteAcc=DCOUNT(W_RequeteAccImprime,CHAR(254))

   FOR iNbAcc = 1 TO W_NbRequeteAcc
	IF W_RequeteImp2<iNbAcc,1> <> 0 OR W_RequeteImp2 = "" THEN

	  READ ENR_ACCORD FROM F.ACCORD,W_RequeteAccImprime<iNbAcc,1> THEN
        READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,ENR_ACCORD<1> THEN
          W_LibOrg=ENR_ORGPRISECHARGE<1>
          W_LibOrg=W_LibOrg[1,40]
          W_LibOrg=W_LibOrg "L#41"
          W_DateDebAcc=OCONV(ENR_ACCORD<5>,"D4/")
          W_DateFinAcc=OCONV(ENR_ACCORD<6>,"D4/")
		  IF W_RequeteImp2 = "" THEN
			W_HeureAcc=W_RequeteAccImprime<iNbAcc,3> "MR2"
		  END ELSE
			W_HeureAcc=W_RequeteImp2<iNbAcc,1> "MR2"
		  END
          W_HeureAcc=W_HeureAcc "R#10"
          IF ENR_ORGPRISECHARGE<19> # 3 THEN
             W_PlafondAcc="AU MOIS      "
          END ELSE
             W_PlafondAcc="SUR L'ACCORD "
          END
          IF ENR_ORGPRISECHARGE<51> = 0 THEN
             W_TypeHeure="TOTALITE   "
          END ELSE
             IF ENR_ORGPRISECHARGE<51> = 1 THEN
                W_TypeHeure="DIMANCHE   "
             END ELSE
                W_TypeHeure="SEMAINE    "
             END
          END
          W_RangAcc=ENR_ACCORD<8>
          W_RangAcc=W_RangAcc[1,4]
          W_RangAcc=W_RangAcc "R#4"

          W_ListeAccord=W_ListeAccord:W_LibOrg:W_DateDebAcc:" ":W_DateFinAcc:" ":W_HeureAcc:" ":W_PlafondAcc:W_TypeHeure:W_RangAcc:"|"
        END
      END
    END
   NEXT iNbAcc

RETURN

************************************************************************
* Gestion des Multi-Valeurs de DETAILPRESTINV pour les accord
140

   W_SortirWhile="FAUX"
   j=1
   LOOP
   UNTIL W_RequeteAcc<j,1> = "" OR W_SortirWhile = "VRAI" DO
      NbrHeuresAcc=W_RequeteAcc<j,3>

      IF NbrHeuresAcc > 0 THEN
         k=1
         LOOP
         WHILE W_RequeteAcc<j,2,k>#""
            IF ENR_DETAILPRESTINV<4,i> = W_RequeteAcc<j,2,k> AND (ENR_DETAILPRESTINV<9,i> = W_RequeteAcc<j,4> OR W_RequeteAcc<j,4> = "0") THEN

               NbrHeuresAcc=NbrHeuresAcc-NbrHeuresPrestInv

               IF NbrHeuresAcc => 0 THEN
                  W_RequeteAcc<j,3>=NbrHeuresAcc
                  NbrHeuresPrestInv=0
                  NbrHeuresAcc=0
                  W_SortirWhile="VRAI"
                  k=99
               END ELSE
                  W_RequeteAcc<j,3>=0
                  NbrHeuresPrestInv=ABS(NbrHeuresAcc)
                  k=99
               END
            END
            k=k+1
         REPEAT
      END ELSE
         NbrHeuresPrestInv=ABS(W_RequeteAcc<j,3>)+NbrHeuresPrestInv
         W_RequeteAcc<j,3>=0
      END
      j=j+1
   REPEAT

RETURN

************************************************************************
* Gestion des Multi-Valeurs de DETAILPRESTINV pour les demandes d'accord
150 

    j=1
    W_SortirWhile="FAUX"
    NbrHeuresDemAcc=0
    W_SauveNbrHeuresDemAcc=""
    W_HeuresLieesDemAcc=0

    LOOP
    UNTIL W_RequeteDemAcc<j,1>="" OR W_SortirWhile="VRAI" DO
       NbrHeuresDemAcc=W_RequeteDemAcc<j,1>
       IF (ENR_DETAILPRESTINV<9,i> = 1 AND W_PasDemAccDimJF ="VRAI") OR (ENR_DETAILPRESTINV<9,i> = 2 AND W_PasDemAccSem ="VRAI") THEN
         W_Motif=1
       END ELSE
         W_Motif=3
       END

       IF NbrHeuresDemAcc>0 THEN
          k=1
          LOOP
          WHILE W_RequeteDemAcc<j,2,k>#"" DO
             IF ENR_DETAILPRESTINV<4,i>=W_RequeteDemAcc<j,2,k> AND (ENR_DETAILPRESTINV<9,i>=W_RequeteDemAcc<j,3> OR W_RequeteDemAcc<j,3> = "0") THEN

                W_SauveNbrHeuresDemAcc=NbrHeuresDemAcc
                NbrHeuresDemAcc=NbrHeuresDemAcc-NbrHeuresPrestInv

                IF NbrHeuresDemAcc => 0 THEN
                   W_Motif=2
                   W_HeuresLieesDemAcc=W_HeuresLieesDemAcc+NbrHeuresPrestInv
                   W_RequeteDemAcc<j,1>=NbrHeuresDemAcc
                   NbrHeuresPrestInv=0
                   W_SortirWhile="VRAI"
                END ELSE
                   W_Motif=3
                   W_HeuresLieesDemAcc=W_HeuresLieesDemAcc+W_SauveNbrHeuresDemAcc
                   W_RequeteDemAcc<j,1>=0
                   NbrHeuresPrestInv=ABS(NbrHeuresDemAcc)
                END
                k=99
             END
             k=k+1
          REPEAT
       END
       j=j+1
    REPEAT

RETURN

*******************************************************************************
* Gestion des Sous-Valeurs de DETAILPRESTINV pour les accords 
160
 
   l=1
   LOOP
   WHILE ENR_DETAILPRESTINV<5,i,l> # "" DO

      NbrHeuresPrestInv=ENR_DETAILPRESTINV<7,i,l>
      W_ActPrestInv=ENR_DETAILPRESTINV<8,i,l>
      NbrHeuresAcc=0
      W_SortirWhile="FAUX"

      j=1
      LOOP
      UNTIL W_RequeteAcc<j,1>="" OR W_SortirWhile="VRAI" DO

         NbrHeuresAcc=W_RequeteAcc<j,3>

         IF NbrHeuresAcc > 0 THEN

            k=1
            LOOP
            WHILE W_RequeteAcc<j,2,k>#"" DO
               IF ENR_DETAILPRESTINV<8,i,l>=W_RequeteAcc<j,2,k> AND (ENR_DETAILPRESTINV<9,i,l>=W_RequeteAcc<j,4> OR W_RequeteAcc<j,4> = "0") THEN
                  READ ENR_ACCORD FROM F.ACCORD,W_RequeteAcc<j,1> ELSE PRINT "READ ACCORD2"

                  W_DateInv=ICONV(ENR_DETAILPRESTINV<5,i,l>:"/":W_Date,"D4/")
                  IF ENR_ACCORD<5> <= W_DateInv AND ENR_ACCORD<6> >= W_DateInv THEN   
                  
                     NbrHeuresAcc=NbrHeuresAcc-NbrHeuresPrestInv
					W_SauveInd=j
					
                     IF NbrHeuresAcc => 0 THEN
                        W_RequeteAcc<j,3>=NbrHeuresAcc
                        NbrHeuresPrestInv=0
                        NbrHeuresAcc=0
                        W_SortirWhile="VRAI"
                        k=99
                     END ELSE
                        W_RequeteAcc<j,3>=0
                        NbrHeuresPrestInv=ABS(NbrHeuresAcc)
                        k=99
                     END
                  END
               END
               k=k+1
            REPEAT
         END
         j=j+1
      REPEAT

      IF NbrHeuresPrestInv>0 THEN

         W_Motif=1

         IF W_RequeteDemAcc#"" THEN

            * Sous-Valeurs vers les demandes d'accord

            GOSUB 170

            IF NbrHeuresPrestInv>0 THEN
               * ici faire attention car aucune dem correspondante
                     IF W_Motif = 1 THEN
                        IF (ENR_DETAILPRESTINV<9,i,l> = 1 AND W_PasAccDimJF ="VRAI" AND W_PasDemAccDimJF ="VRAI") OR (ENR_DETAILPRESTINV<9,i,l> = 2 AND W_PasAccSem ="VRAI" AND W_PasDemAccSem ="VRAI") THEN
                           W_Motif=4
                        END ELSE
                           W_Motif=1
                        END
						
						IF W_RequeteDemAcc<W_SauveInd,5>="" THEN
							W_RequeteDemAcc<W_SauveInd,5>=0
						END
						 W_RequeteDemAcc<W_SauveInd,5>=W_RequeteDemAcc<W_SauveInd,5>+NbrHeuresPrestInv
                         GOSUB 161
                         IF W_CumulPossible="VRAI" THEN
                           ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,iCumul;ENR_TEMPCALCULPREAPREST<5,iCumul> + NbrHeuresPrestInv)
*                        IF ENR_TEMPCALCULPREAPREST<4,W_IndTropHeures> = W_CleAct AND ENR_TEMPCALCULPREAPREST<6,W_IndTropHeures> = W_ActPrestInv AND ENR_TEMPCALCULPREAPREST<7,W_IndTropHeures> = 1 AND ENR_TEMPCALCULPREAPREST<8,W_IndTropHeures,1> = ENR_DETAILPRESTINV<9,i,l> THEN
*                           ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures;ENR_TEMPCALCULPREAPREST<5,W_IndTropHeures> + NbrHeuresPrestInv)
                        END ELSE
                           W_IndTropHeures=W_IndTropHeures+1
                           ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,4,W_IndTropHeures,1;W_CleAct)
                           ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures,1;NbrHeuresPrestInv)
                           ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,6,W_IndTropHeures,1;W_ActPrestInv)
                           ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,7,W_IndTropHeures,1;W_Motif)
                           ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,8,W_IndTropHeures,1;ENR_DETAILPRESTINV<9,i,l>)
                        END
                     END ELSE
                        IF W_Motif = 2 THEN

                           GOSUB 161
                           IF W_CumulPossible="VRAI" THEN
                               ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,iCumul;ENR_TEMPCALCULPREAPREST<5,iCumul> + W_HeuresLieesDemAcc)

*                           IF ENR_TEMPCALCULPREAPREST<4,W_IndTropHeures> = W_CleAct AND ENR_TEMPCALCULPREAPREST<6,W_IndTropHeures> = W_ActPrestInv AND ENR_TEMPCALCULPREAPREST<7,W_IndTropHeures> = 2 AND ENR_TEMPCALCULPREAPREST<8,W_IndTropHeures,1> = ENR_DETAILPRESTINV<9,i,l> THEN
*                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures;ENR_TEMPCALCULPREAPREST<5,W_IndTropHeures> + W_HeuresLieesDemAcc)
                           END ELSE
                              W_IndTropHeures=W_IndTropHeures+1
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,4,W_IndTropHeures,1;W_CleAct)
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures,1;W_HeuresLieesDemAcc)
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,6,W_IndTropHeures,1;W_ActPrestInv)
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,7,W_IndTropHeures,1;2)
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,8,W_IndTropHeures,1;ENR_DETAILPRESTINV<9,i,l>)
                           END
                        END ELSE
                           *MOTIF =3
							IF W_RequeteDemAcc<W_SauveInd,5>="" THEN
								W_RequeteDemAcc<W_SauveInd,5>=0
							END
							W_RequeteDemAcc<W_SauveInd,5>=W_RequeteDemAcc<W_SauveInd,5>+NbrHeuresPrestInv
						   
                           GOSUB 161
                           IF W_CumulPossible="VRAI" THEN
                               ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,iCumul;ENR_TEMPCALCULPREAPREST<5,iCumul> + NbrHeuresPrestInv)

*                           IF ENR_TEMPCALCULPREAPREST<4,W_IndTropHeures> = W_CleAct AND ENR_TEMPCALCULPREAPREST<6,W_IndTropHeures> = W_ActPrestInv AND ENR_TEMPCALCULPREAPREST<7,W_IndTropHeures> = 3 AND ENR_TEMPCALCULPREAPREST<8,W_IndTropHeures,1> = ENR_DETAILPRESTINV<9,i,l> THEN
*                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures;ENR_TEMPCALCULPREAPREST<5,W_IndTropHeures> + NbrHeuresPrestInv)
                           END ELSE
                              IF W_HeuresLieesDemAcc # 0 THEN
                                 W_Motif = 2
                                 GOSUB 161
                                 IF W_CumulPossible="VRAI" THEN
                                    ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,iCumul;ENR_TEMPCALCULPREAPREST<5,iCumul> + W_HeuresLieesDemAcc)

*                                 IF ENR_TEMPCALCULPREAPREST<4,W_IndTropHeures> = W_CleAct AND ENR_TEMPCALCULPREAPREST<6,W_IndTropHeures> = W_ActPrestInv AND ENR_TEMPCALCULPREAPREST<7,W_IndTropHeures> = 2 AND ENR_TEMPCALCULPREAPREST<8,W_IndTropHeures,1> = ENR_DETAILPRESTINV<9,i,l> THEN
*                                     ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures;ENR_TEMPCALCULPREAPREST<5,W_IndTropHeures> + W_HeuresLieesDemAcc)
                                 END ELSE
                                    W_IndTropHeures=W_IndTropHeures+1
                                    ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,4,W_IndTropHeures,1;W_CleAct)
                                    ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures,1;W_HeuresLieesDemAcc)
                                    ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,6,W_IndTropHeures,1;W_ActPrestInv)
                                    ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,7,W_IndTropHeures,1;2)
                                    ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,8,W_IndTropHeures,1;ENR_DETAILPRESTINV<9,i,l>)
                                 END
                              END
                              * Motif = 3
                              W_IndTropHeures=W_IndTropHeures+1
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,4,W_IndTropHeures,1;W_CleAct)
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures,1;NbrHeuresPrestInv)
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,6,W_IndTropHeures,1;W_ActPrestInv)
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,7,W_IndTropHeures,1;3)
                              ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,8,W_IndTropHeures,1;ENR_DETAILPRESTINV<9,i,l>)
                           END
                        END
                     END

            END ELSE

               GOSUB 161
               IF W_CumulPossible="VRAI" THEN
                  ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,iCumul;ENR_TEMPCALCULPREAPREST<5,iCumul> + W_HeuresLieesDemAcc)

*                IF ENR_TEMPCALCULPREAPREST<4,W_IndTropHeures> = W_CleAct AND ENR_TEMPCALCULPREAPREST<6,W_IndTropHeures> = W_ActPrestInv AND ENR_TEMPCALCULPREAPREST<7,W_IndTropHeures> = 2 AND ENR_TEMPCALCULPREAPREST<8,W_IndTropHeures,1> = ENR_DETAILPRESTINV<9,i,l> THEN
*                   ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures;ENR_TEMPCALCULPREAPREST<5,W_IndTropHeures> + W_HeuresLieesDemAcc)
                END ELSE
                   W_IndTropHeures=W_IndTropHeures+1
                   ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,4,W_IndTropHeures;W_CleAct)
                   ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures;W_HeuresLieesDemAcc)
                   ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,6,W_IndTropHeures;W_ActPrestInv)
                   ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,7,W_IndTropHeures;2)
                   ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,8,W_IndTropHeures;ENR_DETAILPRESTINV<9,i,l>)
                END
            END                     

         END ELSE

           IF (ENR_DETAILPRESTINV<9,i,l> = 1 AND W_PasAccDimJF ="VRAI") OR (ENR_DETAILPRESTINV<9,i,l> = 2 AND W_PasAccSem ="VRAI") THEN
              W_Motif=4
           END ELSE
              W_Motif=1
           END
		   IF W_RequeteAcc<W_SauveInd,5>="" THEN
				W_RequeteAcc<W_SauveInd,5>=0
		   END
		   W_RequeteAcc<W_SauveInd,5>=W_RequeteAcc<W_SauveInd,5>+NbrHeuresPrestInv
			
            * Depassement d'accord, motif = 1
            GOSUB 161
            IF W_CumulPossible="VRAI" THEN
               ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,iCumul;ENR_TEMPCALCULPREAPREST<5,iCumul> + NbrHeuresPrestInv)

*            IF ENR_TEMPCALCULPREAPREST<4,W_IndTropHeures> = W_CleAct AND ENR_TEMPCALCULPREAPREST<6,W_IndTropHeures> = W_ActPrestInv AND ENR_TEMPCALCULPREAPREST<7,W_IndTropHeures> = 1 AND ENR_TEMPCALCULPREAPREST<8,W_IndTropHeures,1> = ENR_DETAILPRESTINV<9,i,l> THEN
*               ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures;ENR_TEMPCALCULPREAPREST<5,W_IndTropHeures> + NbrHeuresPrestInv)
            END ELSE
               W_IndTropHeures=W_IndTropHeures+1
               ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,4,W_IndTropHeures;W_CleAct)
               ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,5,W_IndTropHeures;NbrHeuresPrestInv)
               ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,6,W_IndTropHeures;W_ActPrestInv)
               ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,7,W_IndTropHeures;W_Motif)
               ENR_TEMPCALCULPREAPREST=REPLACE(ENR_TEMPCALCULPREAPREST,8,W_IndTropHeures;ENR_DETAILPRESTINV<9,i,l>)
            END
			
         END
      END

      l=l+1
   REPEAT

RETURN

************************************************************************
* 
161

W_CumulPossible="FAUX"
iCumul=W_IndTropHeures
LOOP
WHILE ENR_TEMPCALCULPREAPREST<4,iCumul> = W_CleAct AND iCumul # 0 DO
   IF ENR_TEMPCALCULPREAPREST<6,iCumul> = W_ActPrestInv AND ENR_TEMPCALCULPREAPREST<7,iCumul> = W_Motif AND ENR_TEMPCALCULPREAPREST<8,iCumul,1> = ENR_DETAILPRESTINV<9,i,l> THEN
      W_CumulPossible="VRAI"
      EXIT      
   END
   iCumul=iCumul-1
REPEAT

RETURN

************************************************************************
* Gestion des Multi-Valeurs de DETAILPRESTINV pour les demandes d'accord
170 

    j=1
    W_SortirWhile="FAUX"
    NbrHeuresDemAcc=0
    W_SauveNbrHeuresDemAcc=""
    W_HeuresLieesDemAcc=0
	
    LOOP
    UNTIL W_RequeteDemAcc<j,1>="" OR W_SortirWhile="VRAI" DO
	
       NbrHeuresDemAcc=W_RequeteDemAcc<j,1>
		
       IF (ENR_DETAILPRESTINV<9,i,l> = 1 AND W_PasDemAccDimJF ="VRAI") OR (ENR_DETAILPRESTINV<9,i,l> = 2 AND W_PasDemAccSem ="VRAI") THEN
         W_Motif=1
       END ELSE
         W_Motif=3
       END
		
       IF NbrHeuresDemAcc>0 THEN
          k=1
          LOOP
          WHILE W_RequeteDemAcc<j,2,k>#"" DO
             IF ENR_DETAILPRESTINV<8,i,l>=W_RequeteDemAcc<j,2,k> AND (ENR_DETAILPRESTINV<9,i,l>=W_RequeteDemAcc<j,3> OR W_RequeteDemAcc<j,3> = "0") THEN

                W_SauveNbrHeuresDemAcc=NbrHeuresDemAcc
                NbrHeuresDemAcc=NbrHeuresDemAcc-NbrHeuresPrestInv
				W_SauveInd=j
                IF NbrHeuresDemAcc => 0 THEN
                   W_Motif=2
                   W_HeuresLieesDemAcc=W_HeuresLieesDemAcc+NbrHeuresPrestInv
                   W_RequeteDemAcc<j,1>=NbrHeuresDemAcc
                   NbrHeuresPrestInv=0
                   * NbrHeuresDemAcc=0
                   W_SortirWhile="VRAI"
                END ELSE
                   W_Motif=3
                   W_HeuresLieesDemAcc=W_HeuresLieesDemAcc+W_SauveNbrHeuresDemAcc
                   W_RequeteDemAcc<j,1>=0
                   NbrHeuresPrestInv=ABS(NbrHeuresDemAcc)
                END
                k=99
             END
             k=k+1
          REPEAT
       END
       j=j+1
    REPEAT

RETURN

***************************************************************************
* Traitement des heures en attente                                        *
***************************************************************************
300 

    IF W_RespOrSect # "A" THEN
       IF W_RespOrSect="R" THEN
          W_TempHres='SSELECT HRESATTENTE AVEC EntiteHresAttente = "':W_CodAssoc:'" AND AVEC CodeRespHresAttente = "':W_CodeSectResp:'"'
       END ELSE
	  IF W_RespOrSect="C" THEN
             W_TempHres='SSELECT HRESATTENTE AVEC EntiteHresAttente = "':W_CodAssoc:'" AND AVEC CommuneHresAttente = "':W_CodeSectResp:']"'
          END ELSE
             W_TempHres='SSELECT HRESATTENTE AVEC EntiteHresAttente = "':W_CodAssoc:'" AND AVEC CodeSectHresAttente = "':W_CodeSectResp:']"'
          END
       END
    END ELSE
	IF LEN(W_CodeAideIndPlanning) = 5 AND NUM(W_CodeAideIndPlanning) = 1 THEN
		W_TempHres='SSELECT HRESATTENTE = "':W_CodeAideIndPlanning:']" AVEC EntiteHresAttente = "':W_CodAssoc:'"'
	END ELSE
	      W_TempHres='SSELECT HRESATTENTE AVEC EntiteHresAttente = "':W_CodAssoc:'"' 
	END
    END

    IF W_CodeService # "0" THEN
       W_TempHres=W_TempHres:' AND AVEC 6 = "':W_CodeService:'"'
    END

    W_TempHres=W_TempHres:' PAR @ID'
   
    EXECUTE W_TempHres
    EXECUTE 'SAUVE-LISTE W_RequeteHres'
    EXECUTE "LISTE W_RequeteHres" RETURNING MSGCODE
    IF MSGCODE<1> # 209 THEN
       SELECT F.HRESATTENTE TO W_RequeteHres
       GOSUB 310
    END
	
RETURN

*****************************************************************************
310

   W_DatDebHres=""
   W_DatFinHres=""
   W_FiniHres="FAUX"
   W_FiniAcc="FAUX"

   W_CleHresAttAv=""
   
   LOOP
      READNEXT W_CleHresAtt FROM W_RequeteHres ELSE W_FiniHres="VRAI" 
   WHILE W_FiniHres # "VRAI"
      W_DatDebHres=W_CleHresAtt[13,2]:"/":W_CleHresAtt[9,4]
	IF W_CleHresAtt[13,2] # "12" THEN
      W_DatFinHres=W_CleHresAtt[13,2]+1:"/":W_CleHresAtt[9,4]
	END ELSE
	* janvier anne suivante
	W_DatFinHres="01/":W_CleHresAtt[9,4]+1
	END
      W_DatFinHres=ICONV("01/":W_DatFinHres,"D4/")-1
      W_DatDebHres=ICONV("01/":W_DatDebHres,"D4/")

      READ ENR_HRESATTENTE FROM F.HRESATTENTE,W_CleHresAtt ELSE PRINT "READ HRESATTENTE"
      GOSUB 800 
	  
      EXECUTE 'SSELECT ACCORD AVEC @ID = "':W_CleHresAtt[1,5]:']" AND AVEC 18 <> "O" AND AVEC NotifOrg = "H" AND AVEC TypeOrg = "P"  PAR 8 PAR 5'
      EXECUTE 'SAUVE-LISTE W_RequeteAccHres'
      EXECUTE "LISTE W_RequeteAccHres" RETURNING MSGCODE
      IF MSGCODE<1> # 209 THEN
         SELECT F.ACCORD TO W_RequeteAccHres
         W_FiniAcc="FAUX"
      END ELSE
         W_FiniAcc="VRAI"
      END
	  
		 * Parcours quand mme les heures en attente pour l'indiquer sur l'tat	  
		 GOSUB 321
	  
      LOOP
         READNEXT W_CleAcc FROM W_RequeteAccHres ELSE W_FiniAcc="VRAI"
      WHILE W_FiniAcc#"VRAI" DO
         READ ENR_ACCORD FROM F.ACCORD,W_CleAcc ELSE PRINT "READ ACCORD3"
         IF ENR_ACCORD<5> <= W_DatFinHres THEN
            IF ENR_ACCORD<6> >= W_DatDebHres THEN
               * Accord compris dans la periode
               READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,ENR_ACCORD<1> ELSE PRINT "READ ORGPRISECHARGE3"
               IF ENR_ORGPRISECHARGE<19> = 3 THEN
			      IF ENR_ACCORD<17,1> # "0" THEN
					GOSUB 320
					IF ENR_ACCORD<19> # "" THEN

						WRITE ENR_ACCORD ON F.ACCORD,W_CleAcc
					END
				  END
               END
            END
         END
      REPEAT
	  W_CleHresAttAv=W_CleHresAtt
   REPEAT
RETURN

*****************************************************************************
321

	IF W_CleHresAttAv[1,5] # W_CleHresAtt[1,5] THEN
		IF W_CleHresAttAv # "" THEN

			WRITE ENR_ATTENTEPREST ON F.TEMPCALCULPREAPREST,W_CleHresAttAv[1,5]
		END
		ENR_ATTENTEPREST=""
		ENR_ATTENTEPREST<1>=0
	END
	
   i=1
   * Parcours des articles de HRESATTENTES
   LOOP
   WHILE ENR_HRESATTENTE<1,i> # "" DO 
       IF ENR_HRESATTENTE<2,i> # "" THEN
			ENR_ATTENTEPREST<1>=ENR_ATTENTEPREST<1>+ENR_HRESATTENTE<3,i>
      END ELSE
          k=1
          LOOP
          WHILE ENR_HRESATTENTE<5,i,k> # "" DO
				ENR_ATTENTEPREST<1>=ENR_ATTENTEPREST<1>+ENR_HRESATTENTE<7,i,k>
             k=k+1
          REPEAT
       END
       i=i+1
   REPEAT
   
RETURN

*****************************************************************************
320

*	IF W_CleHresAttAv[1,5] # W_CleHresAtt[1,5] THEN
*		IF W_CleHresAttAv # "" THEN
*
*			WRITE ENR_ATTENTEPREST ON F.TEMPCALCULPREAPREST,W_CleHresAttAv[1,5]
*		END
*		ENR_ATTENTEPREST=""
*		ENR_ATTENTEPREST<1>=0
*	END

*	W_1Fois="VRAI"
	
   W_ActAcc=""
   i=1
   * Parcours des articles de HRESATTENTES
   LOOP
   WHILE ENR_HRESATTENTE<1,i> # "" DO 
       IF ENR_HRESATTENTE<2,i> # "" THEN
          W_ActAcc=ENR_HRESATTENTE<4,i>
          GOSUB 330  ;* Test si activite choisi sous Vb
	    W_Rub = ENR_HRESATTENTE<2,i>
	    GOSUB 910 ;* Teste si rubrique de type MOD Dim & JF
*		IF W_1Fois="VRAI" THEN
*			ENR_ATTENTEPREST<1>=ENR_ATTENTEPREST<1>+ENR_HRESATTENTE<3,i>
*		END
		
          IF W_EActChoisi="VRAI" THEN
             j=1
             LOOP
                W_ActOrg=ENR_ORGPRISECHARGE<47,j>
             WHILE W_ActOrg#"" DO
                IF W_ActAcc=W_ActOrg THEN

		     IF INT(ENR_ORGPRISECHARGE<51>) # INT(W_ResRub - 2) THEN 
			* on n'a pas (W_resrub = 4 et Org(51) = 2) ni (W_resrub = 3 et Org(51) = 1)
			* c'est a dire org dim Jf et rub semaine ou l'inverse. 
					IF ENR_HRESATTENTE<10,i>="" THEN
						IF ENR_ACCORD<19>="" THEN
							ENR_ACCORD=REPLACE(ENR_ACCORD,19;ENR_HRESATTENTE<3,i>)
						END ELSE
							ENR_ACCORD=REPLACE(ENR_ACCORD,19;ENR_ACCORD<19>+ENR_HRESATTENTE<3,i>)
						END
						ENR_HRESATTENTE<10,i>="1"
				   END
				   
                   IF ENR_ACCORD<19> < 0 THEN
                      * Accord consomme
                      ENR_ACCORD=REPLACE(ENR_ACCORD,19;0)
                   END
                   j=999
		     END
                END
               j=j+1
             REPEAT
          END
       END ELSE
          k=1
          LOOP
          WHILE ENR_HRESATTENTE<5,i,k> # "" DO
             W_ActAcc=ENR_HRESATTENTE<8,i,k>
             GOSUB 330  ;* Test si activite choisi sous Vb
		 W_Rub = ENR_HRESATTENTE<6,i,k>
	       GOSUB 910 ;* Teste si rubrique de type MOD Dim & JF
*	   		IF W_1Fois="VRAI" THEN
*				ENR_ATTENTEPREST<1>=ENR_ATTENTEPREST<1>+ENR_HRESATTENTE<7,i,k>
*			END
             IF W_EActChoisi="VRAI" THEN
                j=1
                LOOP
                   W_ActOrg=ENR_ORGPRISECHARGE<47,j>
                WHILE W_ActOrg#"" DO
                   IF W_ActAcc=W_ActOrg THEN
			  IF INT(ENR_ORGPRISECHARGE<51>) # INT(W_ResRub - 2) THEN 
			   * on n'a pas (W_resrub = 4 et Org(51) = 2) ni (W_resrub = 3 et Org(51) = 1)
			   * c'est a dire (org dim & Jf et rub semaine) ni (l'inverse).
					IF ENR_HRESATTENTE<10,i,k>="" THEN
                      IF ENR_ACCORD<19>="" THEN
                         ENR_ACCORD=REPLACE(ENR_ACCORD,19;ENR_HRESATTENTE<7,i,k>)
                      END ELSE
                         ENR_ACCORD=REPLACE(ENR_ACCORD,19;ENR_ACCORD<19>+ENR_HRESATTENTE<7,i,k>)
                      END
					  ENR_HRESATTENTE<10,i,k>="1"
					END  
					  
                      IF ENR_ACCORD<19> < 0 THEN
                         * Accord consomme
                         ENR_ACCORD=REPLACE(ENR_ACCORD,19;0)
                     END
                     j=999
                    END
                   END
                   j=j+1
                REPEAT
             END
             k=k+1
          REPEAT
       END
       i=i+1
   REPEAT
   
*	W_1Fois="FAUX"
   
RETURN

***************************************************************************
* Verifie si l'activite appartient aux activites choisi par l'utilisateur
330

   W_EActChoisi="FAUX"
   FOR kEAct=1 TO W_NbActivites
      IF W_Activites<kEAct>=W_ActAcc THEN
         W_EActChoisi="VRAI"
         EXIT
      END
   NEXT kEAct

RETURN

***************************************************************************
* Apuration des accord
***************************************************************************
400

   W_FiniAcc="FAUX"
   EXECUTE 'SSELECT ACCORD AVEC 19 # ""'
   LOOP
      READNEXT W_CleAcc ELSE W_FiniAcc="VRAI"
   WHILE W_FiniAcc#"VRAI" DO
      WRITEV "" ON F.ACCORD,W_CleAcc,19
   REPEAT

RETURN

*********************************************************************
* Trie le tableau HRESATTENTE : replace les rubriques dim JF en 1er

800

   W_Count=DCOUNT(ENR_HRESATTENTE<1>,CHAR(253))
   FOR ICount=1 TO W_Count

      IF ENR_HRESATTENTE<2,ICount> # "" THEN
         W_Rub=ENR_HRESATTENTE<2,ICount>

         GOSUB 910
         IF W_ResRub=4 THEN
            GOSUB 810
         END
      END ELSE
         IF ENR_HRESATTENTE<5,ICount> # "" THEN
            W_CountSV=DCOUNT(ENR_HRESATTENTE<5,ICount>,CHAR(252))

            W_Dim="FAUX"
            FOR ICountSV=1 TO W_CountSV
               W_Rub=ENR_HRESATTENTE<6,ICount,ICountSV>
               GOSUB 910
               IF W_ResRub=4 THEN
                  W_Dim="VRAI"
                  EXIT
               END
            NEXT ICountSV

            IF W_Dim="VRAI" THEN
               GOSUB 810
            END
         END
      END
   NEXT ICount

RETURN

*********************************************************************
* insert MV

810

   ENR_HRESATTENTE=INSERT(ENR_HRESATTENTE,1,1;ENR_HRESATTENTE<1,ICount>)
   ENR_HRESATTENTE=INSERT(ENR_HRESATTENTE,2,1;ENR_HRESATTENTE<2,ICount>)
   ENR_HRESATTENTE=INSERT(ENR_HRESATTENTE,3,1;ENR_HRESATTENTE<3,ICount>)
   ENR_HRESATTENTE=INSERT(ENR_HRESATTENTE,4,1;ENR_HRESATTENTE<4,ICount>)
   ENR_HRESATTENTE=INSERT(ENR_HRESATTENTE,5,1;ENR_HRESATTENTE<5,ICount>)
   ENR_HRESATTENTE=INSERT(ENR_HRESATTENTE,6,1;ENR_HRESATTENTE<6,ICount>)
   ENR_HRESATTENTE=INSERT(ENR_HRESATTENTE,7,1;ENR_HRESATTENTE<7,ICount>)
   ENR_HRESATTENTE=INSERT(ENR_HRESATTENTE,8,1;ENR_HRESATTENTE<8,ICount>)

   ENR_HRESATTENTE=DELETE(ENR_HRESATTENTE,1,ICount+1)
   ENR_HRESATTENTE=DELETE(ENR_HRESATTENTE,2,ICount+1)
   ENR_HRESATTENTE=DELETE(ENR_HRESATTENTE,3,ICount+1)
   ENR_HRESATTENTE=DELETE(ENR_HRESATTENTE,4,ICount+1)
   ENR_HRESATTENTE=DELETE(ENR_HRESATTENTE,5,ICount+1)
   ENR_HRESATTENTE=DELETE(ENR_HRESATTENTE,6,ICount+1)
   ENR_HRESATTENTE=DELETE(ENR_HRESATTENTE,7,ICount+1)
   ENR_HRESATTENTE=DELETE(ENR_HRESATTENTE,8,ICount+1)
	
RETURN

*********************************************************************
* REMPLIT ACCORDPROSP A PARTIR DES ACCORDS

1000

	W_CodeTemp=W_CleAcc[6,3]
	W_CodeTemp=W_CodeTemp "R%4"
	W_CleProsp=W_CleAcc[1,5]:W_CodeTemp:W_CboAnneeMois
	
	ENR_ACCORDPROSP=""
	ENR_ACCORDPROSP<1>=ENR_ACCORD<1>
	ENR_ACCORDPROSP<2>=ENR_ACCORD<5>
	ENR_ACCORDPROSP<3>=ENR_ACCORD<6>
	IF ENR_ORGPRISECHARGE<19>="2" THEN
		ENR_ACCORDPROSP<4>=ENR_ACCORD<9>
	END ELSE
		IF ENR_ORGPRISECHARGE<19>="1" THEN
			IF W_CboAnneeMois <= ENR_ACCORD<14,1> THEN
				* rien
			END ELSE
				W_DernPer=ENR_ACCORD<14,1>+1
				IF W_DernPer[5,2]="13" THEN
					W_DernPer=W_DernPer[1,4]+1:"01"
				END
				IF W_CboAnneeMois = W_DernPer THEN
					ENR_ACCORDPROSP<4>=ENR_ACCORD<9>+ENR_ACCORD<17,1>
				END ELSE
					IF W_CboAnneeMois > W_DernPer THEN
						ENR_ACCORDPROSP<4>=ENR_ACCORD<9>
						W_CleAnt=W_CleProsp-1
						IF W_CleAnt[14,2]="00" THEN
							W_CleAnt=W_CleAnt[1,13]-1:"12"
						END
						W_CleAnt=W_CleAnt "R%15"
					    READ ENR_ACCORDPROSPANT FROM F.ACCORDPROSP,W_CleAnt THEN
							ENR_ACCORDPROSP<4>=ENR_ACCORDPROSP<4>+ENR_ACCORDPROSPANT<4>
							ENR_ACCORDPROSP<4>=ENR_ACCORDPROSP<4>-ENR_ACCORDPROSPANT<7>
						END
					END
				END
			END
		END ELSE
			IF ENR_ORGPRISECHARGE<19>="3" THEN
				IF W_CboAnneeMois <= ENR_ACCORD<14,1> THEN
					* rien
				END ELSE
					W_DernPer=ENR_ACCORD<14,1>+1
					IF W_DernPer[5,2]="13" THEN
						W_DernPer=W_DernPer[1,4]+1:"01"
					END
					IF W_CboAnneeMois = W_DernPer THEN
						ENR_ACCORDPROSP<4>=ENR_ACCORD<17,1>
					END ELSE
						IF W_CboAnneeMois > W_DernPer THEN
							W_CleAnt=W_CleProsp-1
							IF W_CleAnt[14,2]="00" THEN
								W_CleAnt=W_CleAnt[1,13]-1:"12"
							END
							W_CleAnt=W_CleAnt "R%15"
							READ ENR_ACCORDPROSPANT FROM F.ACCORDPROSP,W_CleAnt THEN
								ENR_ACCORDPROSP<4>=ENR_ACCORDPROSPANT<4>-ENR_ACCORDPROSPANT<7>
							END ELSE
								ENR_ACCORDPROSP<4>=	ENR_ACCORD<9>
							END
						END
					END
				END
			END
		END
	END
	ENR_ACCORDPROSP<5>=ENR_ACCORD<8>
	IF ENR_ORGPRISECHARGE<19>="2" OR ENR_ORGPRISECHARGE<19>="1" THEN
		ENR_ACCORDPROSP<6>=	"1"
	END ELSE
		ENR_ACCORDPROSP<6>=	"2"
	END
	ENR_ACCORDPROSP<7>=ENR_ACCORDPROSP<4>
	ENR_ACCORDPROSP<8>=""
	
	WRITE ENR_ACCORDPROSP ON F.ACCORDPROSP,W_CleProsp

	W_CountAtt1=W_CountAtt1+1
	W_Att1Prosp<W_CountAtt1>=W_CleProsp
	
RETURN

*********************************************************************
* REMPLIT ACCORDPROSP A PARTIR DES DEMANDES D'ACCORD

1100

	W_CodeTemp=1000+j
	W_CleProsp=W_CleAct:W_CodeTemp:W_CboAnneeMois
	
	ENR_ACCORDPROSP=""
	ENR_ACCORDPROSP<1>=ENR_DEMANDACC<1,j>
	ENR_ACCORDPROSP<2>=ENR_DEMANDACC<3,j>
	ENR_ACCORDPROSP<3>=ENR_DEMANDACC<4,j>
	ENR_ACCORDPROSP<4>=ENR_DEMANDACC<5,j>
	ENR_ACCORDPROSP<5>="1"
	IF ENR_ORGPRISECHARGE<19>="2" OR ENR_ORGPRISECHARGE<19>="1" THEN
		ENR_ACCORDPROSP<6>=	"1"
	END ELSE
		ENR_ACCORDPROSP<6>=	"2"
	END
	ENR_ACCORDPROSP<7>=ENR_ACCORDPROSP<4>
	ENR_ACCORDPROSP<8>=""
	
	WRITE ENR_ACCORDPROSP ON F.ACCORDPROSP,W_CleProsp
	
	W_CountAtt1=W_CountAtt1+1
	W_Att1Prosp<W_CountAtt1>=W_CleProsp
	
RETURN

*********************************************************************
* VIDE FICHIER ACCORDPROSP ET SUIVACCORDPROSP

1200

W_ReqTemp = 'SSELECT ACCORDPROSP AVEC 0 = "[':W_CboAnneeMois:'"'
IF LEN(W_CodeAideIndPlanning) = 5 AND NUM(W_CodeAideIndPlanning) = 1 THEN
	W_ReqTemp=W_ReqTemp:' AND AVEC 0 = "':W_CodeAideIndPlanning:']"'
END
EXECUTE W_ReqTemp
EXECUTE 'SAUVE-LISTE W_ReqProsp'
EXECUTE "LISTE W_ReqProsp" RETURNING MSGCODE

IF MSGCODE<1>#209 THEN
    SELECT F.ACCORDPROSP TO W_ReqProsp
	
	W_FinProsp="FAUX"
	LOOP
		READNEXT W_CleProsp FROM W_ReqProsp ELSE W_FinProsp="VRAI"
	WHILE W_FinProsp # "VRAI" DO
		DELETE F.ACCORDPROSP,W_CleProsp
	REPEAT
	
END

W_ReqTemp = 'SSELECT SUIVACCORDPROSP AVEC 0 = "[':W_CboAnneeMois:'"'
IF LEN(W_CodeAideIndPlanning) = 5 AND NUM(W_CodeAideIndPlanning) = 1 THEN
	W_ReqTemp=W_ReqTemp:' AND AVEC 0 = "':W_CodeAideIndPlanning:']"'
END
EXECUTE W_ReqTemp
EXECUTE 'SAUVE-LISTE W_ReqProsp'
EXECUTE "LISTE W_ReqProsp" RETURNING MSGCODE

IF MSGCODE<1>#209 THEN
    SELECT F.SUIVACCORDPROSP TO W_ReqProsp
	
	W_FinProsp="FAUX"
	LOOP
		READNEXT W_CleProsp FROM W_ReqProsp ELSE W_FinProsp="VRAI"
	WHILE W_FinProsp # "VRAI" DO
		DELETE F.SUIVACCORDPROSP,W_CleProsp
	REPEAT
	
END

RETURN

*********************************************************************
* MAJ ATT 7 DE ACCORDPROSP + MAJ SUIVACCORDPROSP

1300

	j=1
	LOOP
	UNTIL W_RequeteAcc<j,1> = "" DO
		W_CleTemp=W_RequeteAcc<j,1>[1,5]:"0":W_RequeteAcc<j,1>[6,3]:W_CboAnneeMois
		READ ENR_ACCORDPROSP FROM F.ACCORDPROSP,W_CleTemp ELSE PRINT "READ ACCORDPROSP"
		IF W_RequeteAcc<j,5> # "" THEN
			ENR_ACCORDPROSP<7>=ENR_ACCORDPROSP<7>+W_RequeteAcc<j,5>
		END ELSE
			ENR_ACCORDPROSP<7>=ENR_ACCORDPROSP<7>-W_RequeteAcc<j,3>
		END
		ENR_ACCORDPROSP<8>=	ENR_ACCORDPROSP<7>-ENR_ACCORDPROSP<4>
		WRITE ENR_ACCORDPROSP ON F.ACCORDPROSP,W_CleTemp
		j=j+1
	REPEAT
	
	j=1
	LOOP
	UNTIL W_RequeteDemAcc<j,1> = "" DO
		READ ENR_ACCORDPROSP FROM F.ACCORDPROSP,W_RequeteDemAcc<j,4> ELSE PRINT "READ ACCORDPROSP"
		IF W_RequeteDemAcc<j,5> # "" THEN
			ENR_ACCORDPROSP<7>=ENR_ACCORDPROSP<7>+W_RequeteDemAcc<j,5>
		END ELSE
			ENR_ACCORDPROSP<7>=ENR_ACCORDPROSP<7>-W_RequeteDemAcc<j,1>
		END
		ENR_ACCORDPROSP<8>=	ENR_ACCORDPROSP<7>-ENR_ACCORDPROSP<4>
		WRITE ENR_ACCORDPROSP ON F.ACCORDPROSP,W_RequeteDemAcc<j,4>
		j=j+1
	REPEAT
	
	IF W_Att1Prosp="" THEN
		IF ENR_DETAILPRESTINV="" THEN
			W_CleProsp=W_CleAct:"9999":W_CboAnneeMois
			ENR_ACCORDPROSP<1>=""
			ENR_ACCORDPROSP<2>=""
			ENR_ACCORDPROSP<3>=""
			ENR_ACCORDPROSP<4>=0
			ENR_ACCORDPROSP<5>=""
			ENR_ACCORDPROSP<6>=""
			ENR_ACCORDPROSP<7>=0
			ENR_ACCORDPROSP<8>=0
		END ELSE
			W_CleProsp=W_CleAct:"0000":W_CboAnneeMois
			ENR_ACCORDPROSP<1>=""
			ENR_ACCORDPROSP<2>=""
			ENR_ACCORDPROSP<3>=""
			ENR_ACCORDPROSP<4>=0
			GOSUB 1400
			ENR_ACCORDPROSP<5>=""
			ENR_ACCORDPROSP<6>=""
			ENR_ACCORDPROSP<7>=W_TotalHre
			ENR_ACCORDPROSP<8>=ENR_ACCORDPROSP<7>
		END
		
		W_CountAtt1=1
		W_Att1Prosp<1>=W_CleProsp
		WRITE ENR_ACCORDPROSP ON F.ACCORDPROSP,W_CleProsp
	END
	
	ENR_SUIVACCORDPROSP=""
	W_CleSuivProsp=W_Att1Prosp<1>[1,5]:W_CboAnneeMois
	
	FOR iAtt1=1 TO W_CountAtt1
		ENR_SUIVACCORDPROSP<1,iAtt1>=W_Att1Prosp<iAtt1>
	NEXT iAtt1
	W_CountPrestInv=DCOUNT(ENR_DETAILPRESTINV<1>,CHAR(253))
	FOR iPrest=1 TO W_CountPrestInv
		W_HreSemaine=0
		W_HreDim=0
		ENR_SUIVACCORDPROSP<2,iPrest>=ENR_DETAILPRESTINV<1,iPrest>[1,5]
		W_CountSV=DCOUNT(ENR_DETAILPRESTINV<6,iPrest>,CHAR(252))
		FOR iSV=1 TO W_CountSV
			READ ENR_RUB FROM F.RUBSAISIE,ENR_DETAILPRESTINV<6,iPrest,iSV> ELSE ENR_RUB=""
			IF ENR_RUB<2>="3" THEN
				W_HreSemaine=W_HreSemaine+ENR_DETAILPRESTINV<7,iPrest,iSV>
			END ELSE
				W_HreDim=W_HreDim+ENR_DETAILPRESTINV<7,iPrest,iSV>
			END
		NEXT iSV
		W_SV=1
		IF W_HreSemaine # 0 THEN
			ENR_SUIVACCORDPROSP<3,iPrest,W_SV>="1"
			ENR_SUIVACCORDPROSP<4,iPrest,W_SV>=W_HreSemaine
			W_SV=W_SV+1
		END
		IF W_HreDim # 0 THEN
			ENR_SUIVACCORDPROSP<3,iPrest,W_SV>="2"
			ENR_SUIVACCORDPROSP<4,iPrest,W_SV>=W_HreDim
		END
	NEXT iPrest
	
	IF (ENR_DETAILPRESTINV<10>#"" AND ENR_DETAILPRESTINV<10>#0) OR (ENR_DETAILPRESTINV<11>#"" AND ENR_DETAILPRESTINV<11>#0) THEN
		ENR_SUIVACCORDPROSP<5>="1"
	END ELSE
		ENR_SUIVACCORDPROSP<5>="0"
	END
	IF ENR_DETAILPRESTINV<10>#"" AND ENR_DETAILPRESTINV<10>#0 THEN
		ENR_SUIVACCORDPROSP<6>=ENR_DETAILPRESTINV<10>
	END
	IF ENR_DETAILPRESTINV<11>#"" AND ENR_DETAILPRESTINV<11>#0 THEN
		ENR_SUIVACCORDPROSP<7>=ENR_DETAILPRESTINV<11>
	END
	ENR_SUIVACCORDPROSP<8>=""
	
	WRITE ENR_SUIVACCORDPROSP ON F.SUIVACCORDPROSP,W_CleSuivProsp

	W_Att1Prosp=""
	W_CountAtt1=0
	
RETURN

*********************************************************************
* TOTAL HEURES DETAILPRESTINV

1400

	W_TotalHre=0
	W_CountPrestInv=DCOUNT(ENR_DETAILPRESTINV<7>,CHAR(253))
	FOR iPrest=1 TO W_CountPrestInv
		W_CountSV=DCOUNT(ENR_DETAILPRESTINV<7,iPrest>,CHAR(252))
		FOR iSV=1 TO W_CountSV
			IF ENR_DETAILPRESTINV<7,iPrest,iSV> # "" THEN
				W_TotalHre=W_TotalHre+ENR_DETAILPRESTINV<7,iPrest,iSV>
			END
		NEXT iSV
	NEXT iPrest
	
RETURN