**********************************************************
*  Statistique sur les activits
*  Programme chaine  partir d'un projet VB
*  Vanessa
*  NOVEMBRE 2000
**********************************************************

* Ouvertures des fichiers

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ACTIVITES" TO F.ACTIVITES ELSE PRINT "OUVERTURE ACTIVITES" ;* en lecture
OPEN "","CIVILAIDE" TO F.CIVILAIDE ELSE PRINT "OUVERTURE CIVILAIDE" ;* en lecture
OPEN "","RESPONSABLE" TO F.RESPONSABLE ELSE PRINT "OUVERTURE RESPONSABLE" ;* en lecture
OPEN "","SECTEUR" TO F.SECTEUR ELSE PRINT "OUVERTURE SECTEUR" ;* en lecture
OPEN "","STATACTAIDE" TO F.STATACTAIDE ELSE PRINT "OUVERTURE STATACTAIDE" ;* en lecture
OPEN "","STATAIDE" TO F.STATAIDE ELSE PRINT "OUVERTURE STATAIDE" ;* en lecture criture
OPEN "","TEMPO" TO F.TEMPO ELSE PRINT "OUVERTURE TEMPO" ;* en lecture criture

*********************************************************
* initialisation des variables
ENR_TEMPO=""
W_MV=1
W_Att=1
W_TabActivite=""
W_SauveSelect=""
W_SauvePeriode=""
W_SauveAide=""
W_TabPeriode=""
W_Tab=""
W_RequeteStatAct=""
W_Nb=1
*********************************************************
* Recuperation des arguments

PROCREAD ARGUMENTS ELSE STOP
W_Entite=FIELD(ARGUMENTS,"|",2)
W_DateDeb=FIELD(ARGUMENTS,"|",3)
W_DateFin=FIELD(ARGUMENTS,"|",4)
W_TypeAct=FIELD(ARGUMENTS,"|",5)
W_Activ=FIELD(ARGUMENTS,"|",6)
W_Selection=FIELD(ARGUMENTS,"|",7)
W_Select=FIELD(ARGUMENTS,"|",8)
W_User=FIELD(ARGUMENTS,"|",9)
W_TypeEdition=FIELD(ARGUMENTS,"|",10)
W_Edition=FIELD(ARGUMENTS,"|",11)
*********************************************************
* PROGRAMME PRINCIPAL

   W_DateDebPer=W_DateDeb
   W_DateFinPer=W_DateFin
   FOR i=1 TO 12
      W_TabPeriode<i>=W_DateDebPer
      IF W_DateDebPer=W_DateFinPer THEN
         EXIT
      END ELSE
     	 W_DateDebPer=W_DateDebPer+1
         IF W_DateDebPer[5,2]="13" THEN
            W_DateDebPer=W_DateDebPer[1,4]+1:"01"
         END
      END
   NEXT i
   W_CountPer=DCOUNT(W_TabPeriode,CHAR(254))

   EXECUTE 'SSELECT ACTIVITES'
   W_End="FAUX"
   i=1

   LOOP
      READNEXT W_Cle ELSE W_End = "VRAI"
   WHILE W_End = "FAUX" DO
      READ ENR_ACTIVITES FROM F.ACTIVITES,W_Cle ELSE ENR_ACTIVITES=""
      W_TabActivite<1,i>=W_Cle
      W_TabActivite<2,i>=ENR_ACTIVITES<12>
      i=i+1
   REPEAT

   W_Temp='SSELECT STATACTAIDE AVEC PeriodeAct <= "':W_DateFin:'"'
   W_Temp=W_Temp:' AND AVEC PeriodeAct >= "':W_DateDeb:'"'

   * entit
   W_Temp=W_Temp:' AND AVEC EntiteAct = "':W_Entite:'"'

   * activit
   W_Temp=W_Temp:' AND AVEC TypeActiviteAct = "':W_TypeAct:'"'
   IF W_Activ # 0 THEN
      W_Temp=W_Temp:' AND AVEC 1 = "':W_Entite:W_Activ:'"'
   END

   * resp, secteur, commune
   IF W_Select # 0 THEN
      BEGIN CASE
         CASE W_Selection="R"
            W_Temp=W_Temp:' AND AVEC RespAct = "':W_Select:'"'
         CASE W_Selection="S"
            W_Temp=W_Temp:' AND AVEC SecteurAct = "':W_Select:'"'
         CASE W_Selection="C"
            W_Temp=W_Temp:' AND AVEC CommuneAct = "':W_Select:'"'
      END CASE
   END ELSE
      BEGIN CASE
         CASE W_Selection="R"
            W_Temp=W_Temp:' PAR NomRespAct'
         CASE W_Selection="S"
            W_Temp=W_Temp:' PAR LibSecteurAct'
         CASE W_Selection="C"
            W_Temp=W_Temp:' PAR CommuneAct'
      END CASE
   END

   IF W_Edition="2" THEN
      W_Temp=W_Temp:' PAR PeriodeAct'
   END ELSE
      W_Temp=W_Temp:' PAR CodeAide PAR PeriodeAct'
   END

   EXECUTE W_Temp
   EXECUTE 'SAUVE-LISTE W_RequeteStatAct'
   EXECUTE "LISTE W_RequeteStatAct" RETURNING MSGCODE

   IF MSGCODE<1>=209 THEN
      STOP
   END ELSE
      SELECT F.STATACTAIDE TO W_RequeteStatAct

      W_End="FAUX"
      W_Premier="FAUX"

      LOOP
         READNEXT W_Cle FROM W_RequeteStatAct ELSE W_End = "VRAI"
      WHILE W_End = "FAUX" DO
         READ ENR_STATACTAIDE FROM F.STATACTAIDE,W_Cle ELSE ENR_STATACTAIDE=""
         READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_Cle[1,5] ELSE ENR_CIVILAIDE=""

         IF W_Premier="FAUX" THEN
            j=1
            LOOP
            UNTIL W_TabPeriode<j>=W_Cle[9,6] OR W_TabPeriode<j>=""
              j=j+1
            REPEAT
            W_MV=W_MV+j

            W_SauvePeriode=W_Cle[9,6] 
            IF W_Selection="R" THEN
               W_SauveSelect=ENR_CIVILAIDE<39>
               ENR_TEMPO<1,1>=W_SauveSelect
            END
            IF W_Selection="S" THEN
               W_SauveSelect=ENR_CIVILAIDE<40>[1,3]
               ENR_TEMPO<1,1>=W_SauveSelect
            END
            IF W_Selection="C" THEN
               W_SauveSelect=ENR_CIVILAIDE<11>
               ENR_TEMPO<1,1>=W_SauveSelect
            END
            W_Premier="VRAI"
         END

         IF W_Selection="T" THEN
            IF W_SauvePeriode # W_Cle[9,6] THEN
               W_SauvePeriode=W_Cle[9,6] 
               W_Att=1
               W_MV=1
               j=1
               LOOP
               UNTIL W_TabPeriode<j>=W_Cle[9,6] OR W_TabPeriode<j>=""
                 j=j+1
               REPEAT
               W_MV=W_MV+j
            END

         END ELSE

            W_Rupture="FAUX"
            IF W_Selection="R" THEN
               IF W_SauveSelect # ENR_CIVILAIDE<39> THEN
                  W_SauveSelect = ENR_CIVILAIDE<39>
                  W_SauvePeriode=W_Cle[9,6] 
                  W_Att=W_Att+1
                  W_MV=1
                  j=1
                  LOOP
                  UNTIL W_TabPeriode<j>=W_Cle[9,6] OR W_TabPeriode<j>=""
                     j=j+1
                  REPEAT
                  W_MV=W_MV+j
                  ENR_TEMPO<W_Att,1>=W_SauveSelect
                  W_Rupture="VRAI"
               END
            END
            IF W_Selection="S" THEN
               IF W_SauveSelect # ENR_CIVILAIDE<40>[1,3] THEN
                  W_SauveSelect = ENR_CIVILAIDE<40>[1,3]
                  W_SauvePeriode=W_Cle[9,6] 
                  W_Att=W_Att+1
                  W_MV=1
                  j=1
                  LOOP
                  UNTIL W_TabPeriode<j>=W_Cle[9,6] OR W_TabPeriode<j>=""
                     j=j+1
                  REPEAT
                  W_MV=W_MV+j
                  ENR_TEMPO<W_Att,1>=W_SauveSelect
                  W_Rupture="VRAI"
               END
            END
            IF W_Selection="C" THEN
               IF W_SauveSelect # ENR_CIVILAIDE<11> THEN
                  W_SauveSelect = ENR_CIVILAIDE<11>
                  W_SauvePeriode=W_Cle[9,6] 
                  W_Att=W_Att+1
                  W_MV=1
                  j=1
                  LOOP
                  UNTIL W_TabPeriode<j>=W_Cle[9,6] OR W_TabPeriode<j>=""
                     j=j+1
                  REPEAT
                  W_MV=W_MV+j
                  ENR_TEMPO<W_Att,1>=W_SauveSelect
                  W_Rupture="VRAI"
               END
            END

            IF W_Rupture = "FAUX" AND W_SauvePeriode # W_Cle[9,6] THEN
               W_SauvePeriode=W_Cle[9,6] 
               W_MV=1
               j=1
               LOOP
               UNTIL W_TabPeriode<j>=W_Cle[9,6] OR W_TabPeriode<j>=""
                  j=j+1
               REPEAT
               W_MV=W_MV+j
            END

         END

         IF W_Edition="2" THEN
            GOSUB 100
         END ELSE
            IF ENR_TEMPO<W_Att,W_MV>="" THEN
               ENR_TEMPO<W_Att,W_MV>=0
            END 
            ENR_TEMPO<W_Att,W_MV>=ENR_TEMPO<W_Att,W_MV>+1
            IF W_SauveAide # W_Cle[1,5] THEN
               W_SauveAide=W_Cle[1,5] 
               IF ENR_TEMPO<W_Att,W_CountPer+2>="" THEN
                  ENR_TEMPO<W_Att,W_CountPer+2>=0
               END 
               ENR_TEMPO<W_Att,W_CountPer+2>=ENR_TEMPO<W_Att,W_CountPer+2>+1
            END
         END

      REPEAT

* imprime les entetes de lignes et de colonnes 
* fait les totaux

	 IF W_Selection="T" THEN
            W_Tab<1,1>=""
	 END ELSE
	    IF W_Selection="C" THEN
	       W_Tab<1,1>="COMMUNE"
	    END ELSE
	       IF W_Selection="R" THEN
		  W_Tab<1,1>="RESPONSABLE"
	       END ELSE
		  IF W_Selection>="S" THEN
		     W_Tab<1,1>="SECTEUR"
		  END
	       END 
	    END
	 END

	 FOR i = W_DateDeb TO W_DateFin
	    IF i[5,2]="13" THEN
 	       i=i[1,4]+1:"01"
	    END
	    W_Nb=W_Nb+1
	    W_Tab<1,W_Nb>=i[5,2]:"/":i[3,2]
            IF W_TypeEdition="2" THEN
	       GOSUB 200
            END
	 NEXT i
	 W_Tab<1,W_Nb+1>="TOTAL"

         ENR_TEMPO=INSERT(ENR_TEMPO,1;W_Tab)

* total ligne
	 W_Count=DCOUNT(ENR_TEMPO,CHAR(254))
	 FOR i = 2 TO W_Count
	    IF W_Selection="R" THEN
               READ ENR_RESPONSABLE FROM F.RESPONSABLE,ENR_TEMPO<i,1> ELSE ENR_RESPONSABLE=""
	       ENR_TEMPO<i,1>=ENR_RESPONSABLE<1>
	    END ELSE
	       IF W_Selection="S" THEN
                  READ ENR_SECTEUR FROM F.SECTEUR,ENR_TEMPO<i,1> ELSE ENR_SECTEUR=""
	          ENR_TEMPO<i,1>=ENR_SECTEUR<1>
	       END ELSE
	          IF W_Selection="T" THEN
	             ENR_TEMPO<i,1>="TOTAL"
                  END
               END
   	    END
            IF W_Edition="2" THEN
   	       W_CountCol=DCOUNT(ENR_TEMPO<1>,CHAR(253))
               W_TotalLigne=0
	       FOR j = 2 TO W_CountCol-1
	          ENR_TEMPO<i,j>=INT((ENR_TEMPO<i,j>/100)+(1/2))
                  W_TotalLigne = W_TotalLigne + ENR_TEMPO<i,j>
	       NEXT j
	       ENR_TEMPO<i,j>=W_TotalLigne
            END

	 NEXT i

         IF W_Selection # "T" THEN
	    ENR_TEMPO<i,1>="TOTAL"

* total colonne
	    W_CountCol=DCOUNT(ENR_TEMPO<1>,CHAR(253))
	    FOR i = 2 TO W_CountCol
	        W_CountLigne=DCOUNT(ENR_TEMPO,CHAR(254))
                W_TotalCol=0
	        FOR j = 2 TO W_CountLigne-1
                    W_TotalCol = W_TotalCol + ENR_TEMPO<j,i>
	        NEXT j
	        ENR_TEMPO<j,i>=W_TotalCol
            NEXT i
         END

      IF W_TypeEdition="2" THEN
	 W_Ordre=1
   	 W_Date=OCONV(DATE(),"D4/")
   	 W_Date=ICONV(W_Date,"MCN")

         IF W_Edition="2" THEN
 	    W_CleFichier="STATACTIVITEPARTYPE-":W_Entite:"-":W_Date:"-"
         END ELSE
 	    W_CleFichier="STATAIDESACTIFS-":W_Entite:"-":W_Date:"-"
         END

	 READ ENR_STATAIDE FROM F.STATAIDE,W_CleFichier:W_Ordre:".csv" ELSE ENR_STATAIDE=""

	 LOOP
	 UNTIL ENR_STATAIDE=""
	    W_Ordre=W_Ordre+1
	    READ ENR_STATAIDE FROM F.STATAIDE,W_CleFichier:W_Ordre:".csv" ELSE ENR_STATAIDE=""
	 REPEAT

   	 CONVERT "" TO ";" IN ENR_TEMPO

	 WRITE ENR_TEMPO TO F.STATAIDE,W_CleFichier:W_Ordre:".csv"

	 WRITE W_CleFichier:W_Ordre:".csv" TO F.TEMPO,"STATACT":W_User

      END ELSE
         WRITE ENR_TEMPO ON F.TEMPO,"STATACT":W_User
      END

   END

STOP

********************************************************************************************
* traitement du STATACTAIDE

100

   IF ENR_TEMPO<W_Att,W_MV>="" THEN
      ENR_TEMPO<W_Att,W_MV>=0
   END 

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

   FOR i = 1 TO W_Count

      IF W_Activ # 0 THEN
         IF ENR_STATACTAIDE<1,i>=W_Entite:W_Activ THEN
            ENR_TEMPO<W_Att,W_MV>=ENR_TEMPO<W_Att,W_MV>+ENR_STATACTAIDE<2,i>
         END
      END ELSE
         j=1
         LOOP
         UNTIL W_TabActivite<1,j>="" OR W_TabActivite<1,j>=ENR_STATACTAIDE<1,i> DO
            j=j+1
         REPEAT
         IF W_TabActivite<2,j> = W_TypeAct THEN
            ENR_TEMPO<W_Att,W_MV>=ENR_TEMPO<W_Att,W_MV>+ENR_STATACTAIDE<2,i>
         END

      END

   NEXT i

RETURN

***************************************
* Tables de correspondance des mois   

200

	BEGIN CASE 
      		CASE W_Tab<1,W_Nb>[1,2] = "01"
         		W_Tab<1,W_Nb> = "janvier ":W_Tab<1,W_Nb>[4,2]
      		CASE W_Tab<1,W_Nb>[1,2] = "02"
         		W_Tab<1,W_Nb> = "fvrier ":W_Tab<1,W_Nb>[4,2]
      		CASE W_Tab<1,W_Nb>[1,2] = "03"
       			W_Tab<1,W_Nb> = "mars ":W_Tab<1,W_Nb>[4,2]
      		CASE W_Tab<1,W_Nb>[1,2] = "04"
			W_Tab<1,W_Nb> = "avril ":W_Tab<1,W_Nb>[4,2]
      		CASE W_Tab<1,W_Nb>[1,2] = "05"
        		W_Tab<1,W_Nb> = "mai ":W_Tab<1,W_Nb>[4,2]
      		CASE W_Tab<1,W_Nb>[1,2] = "06"
         		W_Tab<1,W_Nb> = "juin ":W_Tab<1,W_Nb>[4,2]
      		CASE W_Tab<1,W_Nb>[1,2] = "07"
         		W_Tab<1,W_Nb> = "juillet ":W_Tab<1,W_Nb>[4,2]
      		CASE W_Tab<1,W_Nb>[1,2] = "08"
         		W_Tab<1,W_Nb> = "aot ":W_Tab<1,W_Nb>[4,2]
      		CASE W_Tab<1,W_Nb>[1,2] = "09"
         		W_Tab<1,W_Nb> = "septembre ":W_Tab<1,W_Nb>[4,2]
      		CASE W_Tab<1,W_Nb>[1,2] = "10"
         		W_Tab<1,W_Nb> = "octobre ":W_Tab<1,W_Nb>[4,2]
      		CASE W_Tab<1,W_Nb>[1,2] = "11"
         		W_Tab<1,W_Nb> = "novembre ":W_Tab<1,W_Nb>[4,2]
      		CASE W_Tab<1,W_Nb>[1,2] = "12"
         		W_Tab<1,W_Nb> = "dcembre ":W_Tab<1,W_Nb>[4,2]
   	END CASE

RETURN
