*****************************************************
*  GENERATION DES HONORAIRES SSIAD DANS FICHIER TDS *
*  Alain                            Novembre 2005	*
*  Mikael							Septembre 2007	*
*****************************************************

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"

***************************
* Ouvertures des fichiers *
***************************

OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE STOP
OPEN "","ETABLISSEMENT" TO F.ETABLISSEMENT ELSE STOP
OPEN "","INTERVENANTEXT" TO F.INTERVENANTEXT ELSE STOP
OPEN "","SSIADHISTACTINTEXT" TO F.SSIADHISTACTINTEXT ELSE STOP 
OPEN "","TABLES" TO F.TABLES ELSE STOP 
OPEN "","TEMPO" TO F.TEMPO ELSE STOP
OPEN "","TDSHONORAIRES" TO F.TDSHONORAIRES ELSE STOP 

******************************
* Recuperation des arguments *
******************************

PROCREAD ARGUMENTS ELSE STOP
W_Periode=FIELD(ARGUMENTS," ",2)
W_Entite=FIELD(ARGUMENTS," ",3)
W_Etab=FIELD(ARGUMENTS," ",4)
W_User=FIELD(ARGUMENTS," ",5)

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

W_Requete=""
W_Temp=""
W_Rang=1
ITEMPO = 1
ENR_TEMPO=""

   READ ENR_AUTRINTERVENANT FROM F.TABLES,'AUTRINTERVENANT' ELSE ENR_AUTRINTERVENANT =""

   READ ENR_ASSOCIATION FROM F.ASSOCIATION,W_Entite ELSE ENR_ASSOCIATION=""
   * TEST SI DECALAGE PAIE
	IF ENR_ASSOCIATION<25>=0 THEN
      * CALCUL 1ER JOUR ANNEE + DERNIER JOUR ANNEE
      W_DateDebPeriode = ICONV("01/01/":W_Periode,"D4/")
      W_DateFinPeriode = ICONV("31/12/":W_Periode,"D4/")
	END ELSE
      * CALCUL 1ER JOUR DECEMBRE + DERNIER JOUR NOVEMBRE
      W_DateDebPeriode = ICONV("01/12/":W_Periode-1,"D4/")
      W_DateFinPeriode = ICONV("30/11/":W_Periode,"D4/")
	END

	W_Temp='SSELECT SSIADHISTACTINTEXT AVEC CodeEntite = "':W_Entite:'" AND AVEC DatePaie => "':W_DateDebPeriode:'" AND AVEC DatePaie <= "':W_DateFinPeriode:'" PAR NomPrenomInterv'
PRINT W_Temp
DEBUG
	EXECUTE W_Temp
	EXECUTE 'SAUVE-LISTE W_Requete'
	EXECUTE "LISTE W_Requete" RETURNING MSGCODE

	IF MSGCODE<1>#209 THEN
		SELECT F.SSIADHISTACTINTEXT TO W_Requete

		W_End = "FAUX"
		W_Interv = ""
		W_AncInterv = ""
		W_MontHono = 0
		W_MontDep = 0

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

			W_Interv = W_Cle[1,5]

			IF W_Interv # W_AncInterv THEN
				IF W_AncInterv # "" THEN
	         		READ ENR_INTERVENANTEXT FROM F.INTERVENANTEXT,W_AncInterv ELSE ENR_INTERVENANTEXT=""
					GOSUB 200
					GOSUB 100
				END
				W_AncInterv = W_Interv
				W_MontHono = 0
				W_MontDep = 0
			END

	        READ ENR_SSIADHISTACTINTEXT FROM F.SSIADHISTACTINTEXT,W_Cle ELSE ENR_SSIADHISTACTINTEXT=""
	        
			W_Count=DCOUNT(ENR_SSIADHISTACTINTEXT<5>,CHAR(253))
	        FOR i = 1 TO W_Count
				J = 1
				LOOP
				WHILE ENR_SSIADHISTACTINTEXT<5,i,J> # "" DO
					W_MontHono = W_MontHono + ENR_SSIADHISTACTINTEXT<5,i,J>
					W_MontDep = W_MontDep + ENR_SSIADHISTACTINTEXT<6,i,J>
					J = J + 1
				REPEAT
	        NEXT i
		REPEAT
		*mikael le 24/10/2007 DA7035
		*le dernier intervenant extrieur n'tait pas grer et donc gnr
		READ ENR_INTERVENANTEXT FROM F.INTERVENANTEXT,W_AncInterv ELSE ENR_INTERVENANTEXT=""
		GOSUB 200
		GOSUB 100
	END

	DELETE F.TEMPO,"GENEREHONOSSIAD":W_User

	IF ITEMPO = "1" THEN
		ENR_TEMPO<1> = "AUCUNE ANOMALIE"
	END

	WRITE ENR_TEMPO ON F.TEMPO,"GENEREHONOSSIAD":W_User

STOP

*************************************
* ENREGISTREMENT DANS TDSHONORAIRES *
*************************************
100
   W_RequeteTds = ""

   W_Nom = ENR_INTERVENANTEXT<2>:' ':ENR_INTERVENANTEXT<3>
   W_Nom = W_Nom[1,50]

   W_Temp='SSELECT TDSHONORAIRES AVEC 32 = "':W_Entite:W_Etab:'" AND AVEC 0 = "':W_Periode:W_Entite:']" AND AVEC 1 = "':W_Nom:'" OR AVEC 32 = "':W_Entite:W_Etab:'" AND AVEC 0 = "':W_Periode:W_Entite:']" AND AVEC 1 = "':ENR_INTERVENANTEXT<2>:'" AND AVEC 31 = "':ENR_INTERVENANTEXT<3>:'"'

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

	IF MSGCODE<1>#209 THEN
		SELECT F.TDSHONORAIRES TO W_RequeteTds
		READNEXT W_CleTds FROM W_RequeteTds ELSE W_FIN = "VRAI"
	END ELSE
	
		W_RequeteTds = ""

	   	W_Temp='SSELECT TDSHONORAIRES AVEC 0 = "':W_Periode:W_Entite:']" PAR-DECR NumOrdreTDS'

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

		IF MSGCODE<1>#209 THEN
	      	SELECT F.TDSHONORAIRES TO W_RequeteTds
	      	READNEXT W_CleTds FROM W_RequeteTds ELSE W_FIN = "VRAI"
			W_NumOrdre = W_CleTds[8,3]
			W_NumOrdre = W_NumOrdre+1
			W_NumOrdre = W_NumOrdre "R(%3)"
			W_CleTds = W_Periode:W_Entite:W_NumOrdre
		END ELSE
			W_CleTds = W_Periode:W_Entite:'001'
		END
   END 

   WRITE ENR_TDS ON F.TDSHONORAIRES,W_CleTds

RETURN

**************************************
* GENERATION DE L ENREGISTREMENT TDS *
**************************************
200

	ENR_TDS = ""

	ENR_TDS<1> = ENR_INTERVENANTEXT<2>:' ':ENR_INTERVENANTEXT<3>
	ENR_TDS<1> = ENR_TDS<1>[1,50]
	IF ENR_INTERVENANTEXT<24> # "" THEN
		ENR_TDS<3> = ENR_INTERVENANTEXT<24>
		ENR_TDS<2> = "O"
		ENR_TDS<31> = ""
	END ELSE
		ENR_TDS<3> = ""
		ENR_TDS<2> = "N"
		ENR_TDS<1> = ENR_INTERVENANTEXT<2>
		ENR_TDS<31> = ENR_INTERVENANTEXT<3>
		ENR_TEMPO<ITEMPO> =  'ANOMALIE SIRET SUR INTERVENANT : ':W_AncInterv:' ':ENR_INTERVENANTEXT<2>:' ':ENR_INTERVENANTEXT<3>
		ITEMPO = ITEMPO + 1
	END
	ENR_TDS<4> = ENR_INTERVENANTEXT<4>
	ENR_TDS<5> = ENR_INTERVENANTEXT<5>
	ENR_TDS<6> = ENR_INTERVENANTEXT<6>
	ENR_TDS<7> = ENR_INTERVENANTEXT<7>
	ENR_TDS<8> = ENR_INTERVENANTEXT<8>
	ENR_TDS<9> = ENR_INTERVENANTEXT<9>
	ENR_TDS<10> = ENR_INTERVENANTEXT<10>
	ENR_TDS<11> = ENR_INTERVENANTEXT<11>
	ENR_TDS<12> = ENR_INTERVENANTEXT<12>
	ENR_TDS<13> = ENR_INTERVENANTEXT<13>
	ENR_TDS<14> = ENR_INTERVENANTEXT<14>
	ENR_TDS<15> = ENR_INTERVENANTEXT<15>
	ENR_TDS<16> = INT(W_MontHono/100)
	ENR_TDS<17> = "0"
	ENR_TDS<18> = "0"
	ENR_TDS<19> = "0"
	ENR_TDS<20> = "0"
	ENR_TDS<21> = "0"
	ENR_TDS<22> = "0"
	ENR_TDS<23> = "0"
	ENR_TDS<24> = "0"
	ENR_TDS<25> = "0"
	ENR_TDS<26> = ""
	ENR_TDS<27> = INT(W_MontDep/100)
	ENR_TDS<28> = "R"
	ENR_TDS<29> = "0"
	ENR_TDS<30> = ""
	ENR_TDS<32> = W_Entite:W_Etab
	
	IF ENR_INTERVENANTEXT<25> # "" THEN
		ENR_TDS<33> = ENR_INTERVENANTEXT<25>[1,30]
	END ELSE
		ITAB = 1
		LOOP
		WHILE ENR_AUTRINTERVENANT<2,ITAB> # "" AND ENR_AUTRINTERVENANT<2,ITAB> # ENR_INTERVENANTEXT<1> DO
			ITAB = ITAB + 1
		REPEAT
		IF ENR_AUTRINTERVENANT<2,ITAB> # "" THEN
			ENR_TDS<33> = ENR_AUTRINTERVENANT<3,ITAB>
			ENR_TDS<33> = ENR_TDS<33>[1,30]
		END
	END

RETURN
