******************************************************
* PROGRAMME DE TRAITEMENT DES STAT AIDES NB DOSSIERS *
*                                                    *
*  Cline                           OCTOBRE  2000    *
*  jrme                           NOVEMBRE 2000    *
*  VANES                            DECEMBRE 2000    *
******************************************************

***************************
* Ouvertures des fichiers *
***************************
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ACTIVITESAIDE" TO F.ACTIVITESAIDE ELSE PRINT "ACTIVITESAIDE"
OPEN "","ACTIVITESBISAIDE" TO F.ACTIVITESBISAIDE ELSE PRINT "ACTIVITESBISAIDE"
OPEN "","STATACTAIDE" TO F.STATACTAIDE ELSE PRINT "STATACTAIDE"
OPEN "","ACTIVITES" TO F.ACTIVITES ELSE PRINT "ACTIVITES"

******************************
* Recuperation des arguments *
******************************
PROCREAD ARGUMENTS ELSE PRINT "Procread"

W_ASSOC=FIELD(ARGUMENTS,"|",2)
W_CODEACTIVITE=FIELD(ARGUMENTS,"|",3)
W_TYPEACTIVITE=FIELD(ARGUMENTS,"|",4)
W_TYPESELECTION=FIELD(ARGUMENTS,"|",5)
W_CODESELECTION=FIELD(ARGUMENTS,"|",6)
W_DEBUT=FIELD(ARGUMENTS,"|",7)
W_FIN=FIELD(ARGUMENTS,"|",8)
W_TYPEETAT=FIELD(ARGUMENTS,"|",9)
W_TYPEEDITION=FIELD(ARGUMENTS,"|",10)
*********************
* TRAITEMENT GLOBAL *
*********************
W_DEBUTPERIODE=W_DEBUT
W_FINPERIODE=W_FIN
W_CODASSOCIATION=W_ASSOC

	W_DEBUT=ICONV("01/":W_DEBUT[5,2]:"/":W_DEBUT[1,4],"D4/")
	W_FIN=ICONV("01/":W_FIN[5,2]:"/":W_FIN[1,4],"D4/")+32
	W_FIN=OCONV(W_FIN,"D4/")
	W_FIN=ICONV("01/":W_FIN[4,7],"D4/")-1
	EXECUTE 'VIDER-FICHIER ACTIVITESBISAIDE'
	W_SELECTION=""
	W_SELECTION2=""

	IF W_CODEACTIVITE = "" THEN
		W_ASSOC=W_ASSOC:"]"
		IF W_TYPESELECTION = "R" THEN
			IF W_CODESELECTION # "" THEN
				W_SELECTION =' AND AVEC CodeResponsableBisAide = "':W_CODESELECTION:'"'
			END
		END ELSE
			IF W_TYPESELECTION = "S" THEN
				IF W_CODESELECTION # "" THEN
					W_SELECTION =' AND AVEC CodeSecteurBisAide = "':W_CODESELECTION:'"'
				END
			END ELSE
				IF W_TYPESELECTION= "C" THEN
					IF W_CODESELECTION # "" THEN
						W_SELECTION =' AND AVEC LibCommuneAide = "':W_CODESELECTION:'"'
					END
				END
			END
		END

		EXECUTE 'SSELECT ACTIVITESAIDE AVEC 1 = "':W_ASSOC:'"':W_SELECTION:' AND AVEC NomAide # '' BY.EXP TypeActivite = "':W_TYPEACTIVITE:'"'
		*PRINT "requete :":'SSELECT ACTIVITESAIDE AVEC 1 = "':W_ASSOC:'" ':W_SELECTION:' BY.EXP TypeActivite = "':W_TYPEACTIVITE:'"'
	END ELSE
		W_ACTIVITE=W_ASSOC:W_CODEACTIVITE
		IF W_TYPESELECTION = "R" THEN
			IF W_CODESELECTION # "" THEN
				W_SELECTION2 ='AVEC CodeResponsableBisAide = "':W_CODESELECTION:'"'			
			END
		END ELSE
			IF W_TYPESELECTION = "S" THEN
				IF W_CODESELECTION # "" THEN
					W_SELECTION2 ='AVEC CodeSecteurBisAide = "':W_CODESELECTION:'"'
				END
			END ELSE
				IF W_TYPESELECTION= "C" THEN
					IF W_CODESELECTION # "" THEN
						* RAJOUTER CODE POUR TRAITEMENT PARIS PAR RAPPORT AUX COMMUNES
						W_SELECTION2 ='AVEC LibCommuneAide = "':W_CODESELECTION:'"'
					END
				END
			END
		END
                IF W_SELECTION2 = "" THEN
		   EXECUTE 'SSELECT ACTIVITESAIDE AVEC NomAide # "':"":'" BY.EXP 1 = "':W_ACTIVITE:'"'
                END ELSE
		   EXECUTE 'SSELECT ACTIVITESAIDE ':W_SELECTION2:' AND AVEC NomAide # "':"":'" BY.EXP  1 = "':W_ACTIVITE:'"'
                END
		*PRINT "requete2 :":'SSELECT ACTIVITESAIDE ':W_SELECTION2:' BY.EXP 1 = "':W_ACTIVITE:'"'		
	END

	EXECUTE 'SAUVE-LISTE W_RESULTAT'
	EXECUTE "LISTE W_RESULTAT" RETURNING MSGCODE	
	
	IF MSGCODE<1> # 209 THEN
		SELECT F.ACTIVITESAIDE TO W_RESULTAT
		GOSUB 100
	END
STOP

********************
* PARCOURS REQUETE *
********************
100
	W_AIDEANCIEN=""
	W_FINI="FAUX"
	LOOP
		READNEXT W_CLE FROM W_RESULTAT ELSE W_FINI="VRAI"
	WHILE W_FINI="FAUX" DO
		W_AIDE=W_CLE<1,1>
		W_AIDE=W_AIDE[1,5]
		
		IF W_AIDEANCIEN # W_AIDE THEN
			READ ENR_ACTIVITESAIDE FROM F.ACTIVITESAIDE,W_AIDE ELSE PRINT "ActivitesAide"
			W_AIDEANCIEN=W_AIDE
		END
		POSITION=W_CLE<1,2>
		GOSUB 200
	REPEAT
RETURN

*******************************************************
* EXECUTION TRAITEMENT SELON ACTIF DEBUTANT FINISSANT *
*******************************************************
200
	BEGIN CASE
		CASE W_TYPEETAT MATCHES "A"
			GOSUB 300
		CASE W_TYPEETAT MATCHES "D"
			GOSUB 400
		CASE W_TYPEETAT MATCHES "F"
			GOSUB 500
	END CASE

RETURN

*************************
* TRAITEMENT POUR ACTIF *
*************************
300
	IF ENR_ACTIVITESAIDE<2,POSITION> # "" AND ENR_ACTIVITESAIDE<3,POSITION> # "" THEN

		IF ENR_ACTIVITESAIDE<2,POSITION> <= W_FIN AND ENR_ACTIVITESAIDE<3,POSITION> >= W_DEBUT THEN
			
			GOSUB 600
		END
	END ELSE
		IF ENR_ACTIVITESAIDE<2,POSITION> # "" THEN 

			IF ENR_ACTIVITESAIDE<2,POSITION> <= W_FIN THEN

				GOSUB 600
			END
		END
	END
RETURN


***********************
* TRAITEMENT DEBUTANT *
***********************
400
	IF ENR_ACTIVITESAIDE<2,POSITION> >= W_DEBUT AND ENR_ACTIVITESAIDE<2,POSITION> <= W_FIN THEN
		GOSUB 700
	END
RETURN


************************
* TRAITEMENT FINISSANT *
************************
500
	IF ENR_ACTIVITESAIDE<3,POSITION> # "" THEN
		IF ENR_ACTIVITESAIDE<3,POSITION> >= W_DEBUT AND ENR_ACTIVITESAIDE<3,POSITION> <= W_FIN THEN
			GOSUB 800
		END
	END
RETURN


***********************************
* ECRITURE DES INFOS (POUR ACTIF) *
***********************************
600

	ENR_ACTIVITESBISAIDE=""
	W_POSITION=1

	FOR IACTIVITE = W_DEBUTPERIODE TO W_FINPERIODE

		IF IACTIVITE[5,2]="13" THEN
			IACTIVITE=IACTIVITE[1,4]+1:"01"
		END 

		READ ENR_STATACTAIDE FROM F.STATACTAIDE,W_AIDE:W_CODASSOCIATION:IACTIVITE THEN

			W_NBSTAT=DCOUNT(ENR_STATACTAIDE<1>,CHAR(253))

			FOR ISTAT=1 TO W_NBSTAT
				IF W_CODEACTIVITE # "" AND ENR_STATACTAIDE<1,ISTAT>=W_CODASSOCIATION:W_CODEACTIVITE THEN
					ENR_ACTIVITESBISAIDE<1,W_POSITION>=IACTIVITE
					ENR_ACTIVITESBISAIDE<2,W_POSITION>=ENR_ACTIVITESAIDE<2,POSITION>
					ENR_ACTIVITESBISAIDE<3,W_POSITION>=ENR_ACTIVITESAIDE<3,POSITION>
					ENR_ACTIVITESBISAIDE<4,W_POSITION>=ENR_ACTIVITESAIDE<4,POSITION>
					ENR_ACTIVITESBISAIDE<5,W_POSITION>=ENR_ACTIVITESAIDE<1,POSITION>
					W_POSITION=W_POSITION+1
				END ELSE
					READ ENR_ACTIVITES FROM F.ACTIVITES,ENR_STATACTAIDE<1,ISTAT> THEN
						IF ENR_ACTIVITES<12> = W_TYPEACTIVITE THEN
							ENR_ACTIVITESBISAIDE<1,W_POSITION>=IACTIVITE
							ENR_ACTIVITESBISAIDE<2,W_POSITION>=ENR_ACTIVITESAIDE<2,POSITION>
							ENR_ACTIVITESBISAIDE<3,W_POSITION>=ENR_ACTIVITESAIDE<3,POSITION>
							ENR_ACTIVITESBISAIDE<4,W_POSITION>=ENR_ACTIVITESAIDE<4,POSITION>
							ENR_ACTIVITESBISAIDE<5,W_POSITION>=ENR_ACTIVITESAIDE<1,POSITION>
							W_POSITION=W_POSITION+1
							EXIT
						END
					END 
				END

			NEXT ISTAT

		END	

	NEXT IACTIVITE

	IF W_POSITION > 1 THEN
		WRITE ENR_ACTIVITESBISAIDE TO F.ACTIVITESBISAIDE,W_AIDE
	END

RETURN

**************************************
* ECRITURE DES INFOS (POUR DEBUTANT) *
**************************************
700

	ENR_ACTIVITESBISAIDE=""
        W_Passe="FAUX"

        W_Per=OCONV(ENR_ACTIVITESAIDE<2,POSITION>,"D4/")
        W_Per=W_Per[7,4]:W_Per[4,2]

        IF W_DEBUTPERIODE <= W_Per AND W_FINPERIODE >= W_Per THEN

*	   FOR IACTIVITE = W_Per TO W_FINPERIODE

*	      IF IACTIVITE[5,2]="13" THEN
*		 IACTIVITE=IACTIVITE[1,4]+1:"01"
*	      END 

              READ ENR_STATACTAIDE FROM F.STATACTAIDE,W_AIDE:W_CODASSOCIATION:W_Per THEN

		 W_NBSTAT=DCOUNT(ENR_STATACTAIDE<1>,CHAR(253))

		 FOR ISTAT=1 TO W_NBSTAT

		    IF W_CODEACTIVITE # "" AND ENR_STATACTAIDE<1,ISTAT>=W_CODASSOCIATION:W_CODEACTIVITE THEN

		       ENR_ACTIVITESBISAIDE<1,1>=W_Per
		       ENR_ACTIVITESBISAIDE<2,1>=ENR_ACTIVITESAIDE<2,POSITION>
		       ENR_ACTIVITESBISAIDE<3,1>=ENR_ACTIVITESAIDE<3,POSITION>
		       ENR_ACTIVITESBISAIDE<4,1>=ENR_ACTIVITESAIDE<4,POSITION>
		       ENR_ACTIVITESBISAIDE<5,1>=ENR_ACTIVITESAIDE<1,POSITION>
 		       W_Passe="VRAI"
	 	       EXIT
                    END ELSE

 		       READ ENR_ACTIVITES FROM F.ACTIVITES,ENR_STATACTAIDE<1,ISTAT> THEN
		          IF ENR_ACTIVITES<12> = W_TYPEACTIVITE THEN
		             ENR_ACTIVITESBISAIDE<1,1>=W_Per
		             ENR_ACTIVITESBISAIDE<2,1>=ENR_ACTIVITESAIDE<2,POSITION>
		             ENR_ACTIVITESBISAIDE<3,1>=ENR_ACTIVITESAIDE<3,POSITION>
		             ENR_ACTIVITESBISAIDE<4,1>=ENR_ACTIVITESAIDE<4,POSITION>
		             ENR_ACTIVITESBISAIDE<5,1>=ENR_ACTIVITESAIDE<1,POSITION>
                             W_Passe="VRAI"
		             EXIT  
                          END
                       END
                    END
		 NEXT ISTAT

              END
             
*              IF W_Passe="VRAI" THEN
*                 EXIT
*              END
*	   NEXT IACTIVITE

        END

	IF W_Passe = "VRAI" THEN
		WRITE ENR_ACTIVITESBISAIDE TO F.ACTIVITESBISAIDE,W_AIDE
	END

RETURN

***************************************
* ECRITURE DES INFOS (POUR FINISSANT) *
***************************************
800

	ENR_ACTIVITESBISAIDE=""
        W_Passe="FAUX"

        W_Per=OCONV(ENR_ACTIVITESAIDE<3,POSITION>,"D4/")
        W_Per=W_Per[7,4]:W_Per[4,2]

        IF W_DEBUTPERIODE <= W_Per AND W_FINPERIODE >= W_Per THEN

*	   FOR IACTIVITE = W_FINPERIODE TO W_DEBUTPERIODE STEP -1

*	      IF IACTIVITE[5,2]="00" THEN
*		 IACTIVITE=IACTIVITE[1,4]-1:"12"
*	      END 
              READ ENR_STATACTAIDE FROM F.STATACTAIDE,W_AIDE:W_CODASSOCIATION:W_Per THEN

		 W_NBSTAT=DCOUNT(ENR_STATACTAIDE<1>,CHAR(253))

		 FOR ISTAT=1 TO W_NBSTAT

		    IF W_CODEACTIVITE # "" AND ENR_STATACTAIDE<1,ISTAT>=W_CODASSOCIATION:W_CODEACTIVITE THEN

		       ENR_ACTIVITESBISAIDE<1,1>=W_Per
		       ENR_ACTIVITESBISAIDE<2,1>=ENR_ACTIVITESAIDE<2,POSITION>
		       ENR_ACTIVITESBISAIDE<3,1>=ENR_ACTIVITESAIDE<3,POSITION>
		       ENR_ACTIVITESBISAIDE<4,1>=ENR_ACTIVITESAIDE<4,POSITION>
		       ENR_ACTIVITESBISAIDE<5,1>=ENR_ACTIVITESAIDE<1,POSITION>
 		       W_Passe="VRAI"
	 	       EXIT
                    END ELSE

 		       READ ENR_ACTIVITES FROM F.ACTIVITES,ENR_STATACTAIDE<1,ISTAT> THEN
		          IF ENR_ACTIVITES<12> = W_TYPEACTIVITE THEN
		             ENR_ACTIVITESBISAIDE<1,1>=W_Per
		             ENR_ACTIVITESBISAIDE<2,1>=ENR_ACTIVITESAIDE<2,POSITION>
		             ENR_ACTIVITESBISAIDE<3,1>=ENR_ACTIVITESAIDE<3,POSITION>
		             ENR_ACTIVITESBISAIDE<4,1>=ENR_ACTIVITESAIDE<4,POSITION>
		             ENR_ACTIVITESBISAIDE<5,1>=ENR_ACTIVITESAIDE<1,POSITION>
                             W_Passe="VRAI"
		             EXIT  
                          END
                       END
                    END
		 NEXT ISTAT

              END
             
*              IF W_Passe="VRAI" THEN
*                 EXIT
*              END
*	   NEXT IACTIVITE

        END

	IF W_Passe = "VRAI" THEN
		WRITE ENR_ACTIVITESBISAIDE TO F.ACTIVITESBISAIDE,W_AIDE
	END

RETURN

