**********************************************************
*  APURATION FICHIER DES PLANNINGS
*  CELINE
*  AOUT 2001
**********************************************************

* Ouvertures des fichiers

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","TPSDETAILINTERV" TO F.TPSDETAILINTERV ELSE PRINT "OUVERTURE TPSDETAILINTERV" ;* en lecture
OPEN "","CONTRAT" TO F.CONTRAT ELSE PRINT "OUVERTURE CONTRAT" ;* en lecture
OPEN "","ACTIVITESAIDE" TO F.ACTIVITESAIDE ELSE PRINT "OUVERTURE ACTIVITESAIDE" ;* en lecture
OPEN "","ACTIVITES" TO F.ACTIVITES ELSE PRINT "OUVERTURE ACTIVITES" ;*EN LECTURE
OPEN "","ABSENCESAIDANT" TO F.ABSENCESAIDANT ELSE PRINT "OUVERTURE ABSENCESAIDANT" ;*EN LECTURE
*********************************************************
* initialisation des variables

W_DateFin=""
W_TabAct=""
i=0
j=0
W_CountAct=""
W_CountActFic=""
*********************************************************
* Recuperation des arguments

PROCREAD ARGUMENTS ELSE STOP


W_Periode=FIELD(ARGUMENTS," ",2)                                     
W_Assoc=FIELD(ARGUMENTS," ",3)

*********************************************************
* PROGRAMME PRINCIPAL
*********************************************************

************************************************************************************************************
* slectionne les interventions qui ont une date de dbut infrieure  " la date systme - priode choisie"*
************************************************************************************************************


   W_Temp='SSELECT TPSDETAILINTERV AVEC DateDebInterv < "':W_Periode:'" AND AVEC 7 = "':W_Assoc:'" '


   W_Temp=W_Temp:' PAR CodeAidant PAR DateDebInterv'

*PRINT "W_Temp :":W_Temp
*DEBUG

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

   IF MSGCODE<1>=209 THEN
      STOP
   END ELSE
      SELECT F.TPSDETAILINTERV TO W_RequeteInterv

      W_End="FAUX"
     
      LOOP
         READNEXT W_Cle FROM W_RequeteInterv ELSE W_End = "VRAI"
      WHILE W_End = "FAUX" DO


**********************************************************************
*regarde si les cls slectionnes ont une date de fin d'intervention*
*si pas date de fin regarde les contrats
**********************************************************************

        READ ENR_TPSDETAILINTERV FROM F.TPSDETAILINTERV,W_Cle ELSE ENR_TPSDETAILINTERV=""


	W_DateFin="FAUX"

	IF ENR_TPSDETAILINTERV<1> = "" THEN
		READ ENR_ACTIVITES FROM F.ACTIVITES,ENR_TPSDETAILINTERV<10,1> ELSE ENR_ACTIVITES=""

*PRINT "W_CLE :":W_Cle
*DEBUG

		GOSUB 100

		IF W_DateFin="VRAI" THEN

*PRINT "W_DateFin :":W_DateFin
*DEBUG
			DELETE F.TPSDETAILINTERV,W_Cle

		END ELSE

*PRINT "ENR_ACTIVITES<12> :":"P"
*DEBUG
			IF ENR_ACTIVITES<12>="P" THEN
				GOSUB 200
			END


			GOSUB 300
		END
	END ELSE
		IF ENR_TPSDETAILINTERV<1> < W_Periode THEN
			DELETE F.TPSDETAILINTERV,W_Cle
		END
	END
      REPEAT
   END

STOP

************************************************************************************
* REGARDE S'IL Y A UNE DATE DE FIN DE CONTRAT
************************************************************************************
100
		READ ENR_CONTRAT FROM F.CONTRAT,ENR_TPSDETAILINTERV<13> ELSE ENR_CONTRAT=""
*PRINT "ENR_TPSDETAILINTERV<13> :":ENR_TPSDETAILINTERV<13>
*PRINT "ENR_CONTRAT<96> :":ENR_CONTRAT<96>
*PRINT "ENR_CONTRAT<8> :":ENR_CONTRAT<8>
*DEBUG
			IF ENR_CONTRAT<96> <> "" THEN
				IF INT(ENR_CONTRAT<96>) < INT(W_Periode) THEN
					W_DateFin="VRAI"
				END
			END ELSE
				IF ENR_CONTRAT<8> <> "" THEN
					IF INT(ENR_CONTRAT<8>) < INT(W_Periode) THEN
						W_DateFin="VRAI"
					END
				END
			END
RETURN

*********************************************************************************************
* REGARDE S'IL Y A UNE DATE DE FIN D'ACTIVITE, SI OUI SUPPRIME LA MULTIVALEUR CORRESPONDANTE
*********************************************************************************************

200
	W_CountActFic=DCOUNT(ENR_TPSDETAILINTERV<2>,CHAR(253))

*PRINT "W_CountActFic :":W_CountActFic
*DEBUG

	FOR i=1 TO W_CountActFic
		IF W_TabAct <> "" THEN
			W_CountAct=DCOUNT(W_TabAct,CHAR(254))
			FOR j=1 TO W_CountAct
				IF W_TabAct<j,1> <> ENR_TPSDETAILINTERV<10,i> AND W_TabAct<j+1,1>="" THEN
					W_TabAct<j+1,1>=ENR_TPSDETAILINTERV<10,i>
				END ELSE
					EXIT 
				END	
			NEXT j
		END ELSE
			W_TabAct<1,1>=ENR_TPSDETAILINTERV<10,i>
		END
	NEXT i

**PRINT "W_Cle[6,5] :":W_Cle[6,5]
*DEBUG

	READ ENR_ACTIVITESAIDE FROM F.ACTIVITESAIDE,W_Cle[6,5] ELSE ENR_ACTIVITESAIDE=""					
				
	W_CountAct=DCOUNT(W_TabAct,CHAR(254))
	W_CountActFic=DCOUNT(ENR_ACTIVITESAIDE<1>,CHAR(253))
	FOR j=1 TO W_CountAct					
		FOR i=1 TO W_CountActFic	
			IF W_TabAct<j,1>=ENR_ACTIVITESAIDE<1,i> THEN
				IF ENR_ACTIVITESAIDE<3,i><>"" THEN
					IF ENR_ACTIVITESAIDE<3,i> < W_Periode THEN
						W_TabAct<j,2>=ENR_ACTIVITESAIDE<3,i>
						W_DateFin="VRAI"
					END
				END
			END
		NEXT i	
	NEXT j

	IF W_DateFin="VRAI" THEN
		W_CountAct=DCOUNT(W_TabAct,CHAR(254))
		W_CountActFic=DCOUNT(ENR_TPSDETAILINTERV<10>,CHAR(253))					
		FOR j=1 TO W_CountAct
			FOR i=1 TO W_CountActFic
				IF W_TabAct<j,1>=ENR_TPSDETAILINTERV<10,i> THEN
					ENR_TPSDETAILINTERV=DELETE(ENR_TPSDETAILINTERV,10,i)
					EXIT 
				END	
			NEXT i
		NEXT j
	END
RETURN

*********************************************************************************
* S'IL S'AGIT D'UN REMPLACEMENT, ON REGARDE S'IL Y A UNE DATE DE FIN D'ABSENCE
*********************************************************************************
300
			IF ENR_TPSDETAILINTERV<>"" THEN
				IF ENR_TPSDETAILINTERV<12> <> "" THEN
					READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT,ENR_TPSDETAILINTERV<12> ELSE ENR_ABSENCESAIDANT=""										
					IF ENR_ABSENCESAIDANT<2> <> "" THEN
						IF ENR_ABSENCESAIDANT<2> < W_Periode THEN
							DELETE F.TPSDETAILINTERV,W_Cle
						END
					END
				END ELSE
					DELETE F.TPSDETAILINTERV,W_Cle
				END
			END
RETURN
