SUBROUTINE SSIADPERIODEACTIVE(RETURNVAL,PARAMETERS,nbr_Jours)

***********************************************************************************
***********************************************************************************
**                                                                               **
** Permet de calculer la priode active avec prise en compte des critres :      **
**       - Priode rfrence                                                     **
**       - Priode de l'accord                                                   **
**       - Priode de l'activit                                                 **
**       - Priode d'absence                                                     **
**	   - Type de selection (SE : service, A : activite, SA : sans )		   **
** 	   - Code de selection									   **
**                                                                               **
** Le 28/05/04                                                  ves+           **
**                                                                               **
** Modif le 07/12/04						Cyprien                    **
** Modification lors de la scission entre MOTIFSORTIE et MOTIFSORTIESID          **
**													   **
** Modif le 27/04/05						Fanny				   **
**                                                                               **
**                                                                               **
***********************************************************************************
***********************************************************************************



***********************************************************************************
**                                                                               **
**                       Ouverture des fichiers                                  **
**                                                                               **
***********************************************************************************
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "", "ACTIVITESAIDE" TO F.ACTIVITESAIDE ELSE STOP
OPEN "", "ACTIVITES" TO F.ACTIVITES ELSE STOP
OPEN "", "AGGIRAIDE" TO F.AGGIRAIDE ELSE STOP
OPEN "", "SSIADABSENCESAIDE" TO F.ABSENCESAIDE ELSE STOP
OPEN "", "SSIADACCORDS" TO F.SSIADACCORDS ELSE STOP




***********************************************************************************
**                                                                               **
**                      Rcupration des arguments                               **
**                                                                               **
***********************************************************************************

! le code de l'accord
W_CodeAccord = PARAMETERS<1>

! Code l'aid
W_CodeAide = W_CodeAccord[1,5]

! Chargement de l'accord en cours
READ ENR_SSIADACCORS FROM F.SSIADACCORDS,W_CodeAccord ELSE ENR_SSIADACCORS = ""


! la date de dbut de priode
W_DebutPeriode = PARAMETERS<2>

! la date de fin de priode
W_FinPeriode = PARAMETERS<3>

! la date de dbut d'accord
W_DebutAccord = ENR_SSIADACCORS<1>

! la date de fin d'accord
W_FinAccord = ENR_SSIADACCORS<2>

! le type de slection Effectif ou Journee
W_Type = PARAMETERS<4>

! le type de selection (A ou SE ou SA) 
W_ChoixSelect = PARAMETERS<5>

! le code de selection
W_CodeSelect = PARAMETERS<6>

IF W_Type="JA" THEN
	W_TabGir=""
	W_TabGir<1>="1000"
	W_TabGir<2>="840"
	W_TabGir<3>="660"
	W_TabGir<4>="420"
	W_TabGir<5>="250"
	W_TabGir<6>="70"

	W_CumulGMP=0

	! GIR de l'aid
	READ ENR_AGGIRAIDE FROM F.AGGIRAIDE,W_CodeAide ELSE ENR_AGGIRAIDE= ""
END

! Chargement des activits de l'aid
READ ENR_ACTIVITESAIDE FROM F.ACTIVITESAIDE,W_CodeAide ELSE ENR_ACTIVITESAIDE= ""

! Chargement des absences de l'aid
READ ENR_ABSENCESAIDE FROM F.ABSENCESAIDE,W_CodeAide ELSE ENR_ABSENCESAIDE = ""


IF W_DebutPeriode > W_DebutAccord THEN
   W_DebutAccord = W_DebutPeriode
END

IF W_FinPeriode < W_FinAccord THEN
   W_FinAccord = W_FinPeriode
END

nbr_Jours = 0

i = W_DebutAccord - 1
LOOP
   i = i + 1

WHILE i <= W_FinAccord

   j = 0
   FinJ = "Faux"
   LOOP
      j = j + 1
   WHILE j <= DCOUNT(ENR_ACTIVITESAIDE<1>,CHAR(253)) AND FinJ = "Faux"
	READ ENR_ACTIVITES FROM F.ACTIVITES, ENR_ACTIVITESAIDE<1,j> ELSE ENR_ACTIVITES =""

	W_FinActivite = ENR_ACTIVITESAIDE<3,j> 
	IF W_FinActivite = "" THEN
	   W_FinActivite= 99999
	END

	IF ENR_ACTIVITES<12> = "S" THEN

	   IF W_ChoixSelect = "A" THEN

		IF ENR_ACTIVITESAIDE<1,j> = W_CodeSelect THEN

               IF ENR_ACTIVITESAIDE<2,j> <= i AND i <= W_FinActivite THEN
                  k = 0
                  LOOP
                     k = k + 1

                  WHILE (i < ENR_ABSENCESAIDE<1,k> OR i > ENR_ABSENCESAIDE<2,k>) AND k <= DCOUNT(ENR_ABSENCESAIDE<1>,CHAR(253))
			REPEAT

                  IF (i < ENR_ABSENCESAIDE<1,k> AND i > ENR_ABSENCESAIDE<2,k>) OR ENR_ABSENCESAIDE<1,k> = "" OR ENR_ABSENCESAIDE<2,k> = "" THEN

                     nbr_Jours = nbr_Jours + 1
		     GOSUB 10

                     FinJ = "Vrai"

                     IF W_Type = "E" THEN
                        RETURN
                     END
                  END
               END
		
	        END
	   END ELSE
		   IF W_ChoixSelect = "SE" THEN
			IF ENR_ACTIVITES<13> = W_CodeSelect THEN
			   IF ENR_ACTIVITESAIDE<2,j> <= i AND i <= W_FinActivite THEN

                        k = 0
                        LOOP
                           k = k + 1

                        WHILE (i < ENR_ABSENCESAIDE<1,k> OR i > ENR_ABSENCESAIDE<2,k>) AND k <= DCOUNT(ENR_ABSENCESAIDE<1>,CHAR(253)) REPEAT

                        IF (i < ENR_ABSENCESAIDE<1,k> AND i > ENR_ABSENCESAIDE<2,k>) OR ENR_ABSENCESAIDE<1,k> = "" OR ENR_ABSENCESAIDE<2,k> = "" THEN

                           nbr_Jours = nbr_Jours + 1
			   GOSUB 10

                           FinJ = "Vrai"

                           IF W_Type = "E" THEN
                              RETURN
                           END
                        END
                     END
		   	END 
		   END ELSE

			IF ENR_ACTIVITESAIDE<2,j> <= i AND i <= W_FinActivite THEN

                     k = 0
                     LOOP
                        k = k + 1

                     WHILE (i < ENR_ABSENCESAIDE<1,k> OR i > ENR_ABSENCESAIDE<2,k>) AND k <= DCOUNT(ENR_ABSENCESAIDE<1>,CHAR(253)) REPEAT

                     IF (i < ENR_ABSENCESAIDE<1,k> AND i > ENR_ABSENCESAIDE<2,k>) OR ENR_ABSENCESAIDE<1,k> = "" OR ENR_ABSENCESAIDE<2,k> = "" THEN

                        nbr_Jours = nbr_Jours + 1
			GOSUB 10

                        FinJ = "Vrai"

                        IF W_Type = "E" THEN
                           RETURN
                        END
                     END
                  END
		   END 	
		*END
	   END

	END 
   REPEAT
REPEAT

! renvoi de "nbr-jours", le nombre de jours a VB
IF W_Type="JA" THEN
	nbr_Jours=nbr_Jours:";":W_CumulGMP
END

RETURN

********************************************************************************
* CUMUL DU NOMBRE DE POINTS GMP
10

IF W_Type="JA" THEN

	IF i >= ENR_AGGIRAIDE<18> THEN
		W_CumulGMP=W_CumulGMP+W_TabGir<ENR_AGGIRAIDE<19>>
	END ELSE

		l=1
		LOOP
		UNTIL i >= ENR_AGGIRAIDE<39,l> OR ENR_AGGIRAIDE<39,l>="" DO 
			l=l+1
		REPEAT
		IF ENR_AGGIRAIDE<39,l> # "" THEN
			W_CumulGMP=W_CumulGMP+W_TabGir<ENR_AGGIRAIDE<40,l>>
		END

	END

END

RETURN