*********************************************************
*  Intgrations des tats de paiement et virements	*
*  Programme chaine  partir d'un projet VB		*
*  Vanessa						*
*  octobre 2005
*********************************************************

* Ouvertures des fichiers

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ACTIVITES" TO F.ACTIVITES ELSE PRINT "OUVERTURE ACTIVITES" ;* en lecture
OPEN "","BROUILLARDDETAIL" TO F.BROUILLARDDETAIL ELSE PRINT "OUVERTURE BROUILLARDDETAIL" ;* en lecture criture
OPEN "","BROUILLARDTETE" TO F.BROUILLARDTETE ELSE PRINT "OUVERTURE BROUILLARDTETE" ;* en lecture criture
OPEN "","INTERVENANTEXT" TO F.INTERVENANTEXT ELSE PRINT "OUVERTURE INTERVENANTEXT" ;* en lecture
OPEN "","JOURNAL" TO F.JOURNAL ELSE PRINT "OUVERTURE JOURNAL" ;* en lecture
OPEN "","PARAMENTITECOMPTA" TO F.PARAMENTITECOMPTA ELSE PRINT "OUVERTURE PARAMENTITECOMPTA" ;* en lecture
OPEN "","PLANCOMPTABLE" TO F.PLANCOMPTABLE ELSE PRINT "OUVERTURE PLANCOMPTABLE" ;* en lecture
OPEN "","SSIADCPTESPART" TO F.SSIADCPTESPART ELSE PRINT "OUVERTURE SSIADCPTESPART" ;* en lecture
OPEN "","SSIADHISTACTINTEXT" TO F.SSIADHISTACTINTEXT ELSE PRINT "OUVERTURE SSIADHISTACTINTEXT" ;* en lecture criture
OPEN "","SSIADPOSITIONETATPAIEMENT" TO F.SSIADPOSITIONETATPAIEMENT ELSE PRINT "OUVERTURE SSIADPOSITIONETATPAIEMENT" ;* en lecture criture
*********************************************************
* initialisation des variables
W_RequeteHist=""
W_Act=""
W_MontDepl=0
W_MontHono=0
W_MontEtat=0
ENR_BROUILLARDDETAIL=""
W_Debit=0
W_Credit=0
W_NumLigne="00001"
W_NumLigneN0="00001"
W_NumLigneN1="00001"
W_SauvePeriode=""
W_SauveDate=""
*********************************************************
* Recuperation des arguments

PROCREAD ARGUMENTS ELSE STOP
W_Entite=FIELD(ARGUMENTS,"|",2)
W_Type=FIELD(ARGUMENTS,"|",3)
W_Journal=FIELD(ARGUMENTS,"|",4)
W_Date=FIELD(ARGUMENTS,"|",5)
W_CleBrouillardN0=FIELD(ARGUMENTS,"|",6)
W_CleBrouillardN1=FIELD(ARGUMENTS,"|",7)
*********************************************************
* PROGRAMME PRINCIPAL

	READ ENR_PARAMENTITECOMPTA FROM F.PARAMENTITECOMPTA,W_Entite ELSE ENR_PARAMENTITECOMPTA=""

	READ ENR_SSIADCPTESPART FROM F.SSIADCPTESPART,W_Entite ELSE ENR_SSIADCPTESPART=""

	* vrifie compte d'intgration
	READ ENR_PLANCOMPTABLE FROM F.PLANCOMPTABLE,W_Entite:ENR_SSIADCPTESPART<1> THEN
		W_CpteHono=W_Entite:ENR_SSIADCPTESPART<1>
	END ELSE
		W_CpteHono=W_Entite:ENR_PARAMENTITECOMPTA<12>
	END

	READ ENR_PLANCOMPTABLE FROM F.PLANCOMPTABLE,W_Entite:ENR_SSIADCPTESPART<2> THEN
		W_CpteDepl=W_Entite:ENR_SSIADCPTESPART<2>
	END ELSE
		W_CpteDepl=W_Entite:ENR_PARAMENTITECOMPTA<12>
	END

	* renseigne une table de correspondance entre activit et section analytique
	EXECUTE 'SELECT ACTIVITES AVEC 0 = "':W_Entite:']" AND AVEC 12 = "S"'
	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_Act<i,1>=W_Cle
		W_Act<i,2>=ENR_ACTIVITES<2>
		i=i+1
	REPEAT

	IF W_Type = "V" THEN
		W_DateTemp=W_Date
		IF W_DateTemp < ENR_PARAMENTITECOMPTA<3> THEN
			W_CleBrouillard=W_CleBrouillardN0
		END ELSE
			W_CleBrouillard=W_CleBrouillardN1
		END
	END

	* requete
	READ ENR_SSIADPOSITIONETATPAIEMENT FROM F.SSIADPOSITIONETATPAIEMENT,W_Date ELSE ENR_SSIADPOSITIONETATPAIEMENT=""

	W_Temp='SELECT SSIADHISTACTINTEXT AVEC CodeEntite = "':W_Entite:'"'
	W_Temp=W_Temp:' AND AVEC DatePaie = "':W_Date:'"'

	IF W_Type = "E" THEN
		IF ENR_SSIADPOSITIONETATPAIEMENT<1>="" THEN
			W_Temp=W_Temp:' AND AVEC 10 = "" AND AVEC 7 # ""'
		END ELSE
			W_Temp=W_Temp:' AND AVEC 10 # "" AND AVEC 7 # ""'
		END
	END ELSE
		IF ENR_SSIADPOSITIONETATPAIEMENT<1>="1" THEN
			W_Temp=W_Temp:' AND AVEC 10 = "1" AND AVEC 7 = "V"'
		END ELSE
			IF ENR_SSIADPOSITIONETATPAIEMENT<1>="2" THEN
				W_Temp=W_Temp:' AND AVEC 10 = "2" AND AVEC 7 = "V"'
			END 
		END
	END

	W_Temp=W_Temp:' PAR 8 PAR NumEtatPaie'

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

   	IF MSGCODE<1> # 209 THEN

      		SELECT F.SSIADHISTACTINTEXT TO W_RequeteHist
      		W_Fin="FAUX"
      		LOOP
         		READNEXT W_CleHist FROM W_RequeteHist ELSE W_Fin = "VRAI"
     		WHILE W_Fin = "FAUX" DO
         		READ ENR_SSIADHISTACTINTEXT FROM F.SSIADHISTACTINTEXT,W_CleHist ELSE ENR_SSIADHISTACTINTEXT=""

			IF W_Type = "E" THEN
				GOSUB 10
			END ELSE
				GOSUB 20
			END

		REPEAT

		IF W_Type = "E" THEN
			GOSUB 30
		END ELSE
			GOSUB 40
		END
	END

	IF ENR_SSIADPOSITIONETATPAIEMENT<1>="" THEN
		ENR_SSIADPOSITIONETATPAIEMENT<1>="1"
	END
	IF W_Type="V" THEN
		IF ENR_SSIADPOSITIONETATPAIEMENT<1>="1" THEN
			ENR_SSIADPOSITIONETATPAIEMENT<1>="2"
		END
	END

	WRITE ENR_SSIADPOSITIONETATPAIEMENT ON F.SSIADPOSITIONETATPAIEMENT,W_Date

STOP

***********************************************************************************
* Si intgration tat de paiement (pour chaque tat de paiement)
10

	W_DateArrete=ENR_SSIADHISTACTINTEXT<8>
	W_DateTemp=W_DateArrete

	W_MoisArrete=OCONV(W_DateTemp,"D4/")[4,2]
	W_AnArrete=OCONV(W_DateTemp,"D4/")[7,4]
	W_PeriodeArrete=W_AnArrete:W_MoisArrete

	IF W_SauvePeriode # W_PeriodeArrete THEN
		IF W_SauvePeriode # "" THEN
			GOSUB 30
			W_Debit=0
			W_Credit=0
			W_MontDepl=0
			W_MontHono=0
		END
		W_SauvePeriode = W_PeriodeArrete
		W_SauveDate=W_DateTemp
	END

	W_MontEtat=0
	W_CountMV=DCOUNT(ENR_SSIADHISTACTINTEXT<1>,CHAR(253))
	FOR i=1 TO W_CountMV
		W_CountSV=DCOUNT(ENR_SSIADHISTACTINTEXT<2,i>,CHAR(252))
		FOR j=1 TO W_CountSV
			k=1
			LOOP
			UNTIL ENR_SSIADHISTACTINTEXT<9,i,j>=W_Act<k,1> OR W_Act<k,1>="" DO
				k=k+1
			REPEAT
			IF W_Act<k,1> # "" THEN
				IF ENR_SSIADHISTACTINTEXT<5,i,j> # "" THEN
					IF W_MontHono<k>="" THEN W_MontHono<k>=0
					W_MontHono<k>=W_MontHono<k>+ENR_SSIADHISTACTINTEXT<5,i,j>
					W_MontEtat=W_MontEtat+ENR_SSIADHISTACTINTEXT<5,i,j>
				END
				IF ENR_SSIADHISTACTINTEXT<6,i,j> # "" THEN
					IF W_MontDepl<k>="" THEN W_MontDepl<k>=0
					W_MontDepl<k>=W_MontDepl<k>+ENR_SSIADHISTACTINTEXT<6,i,j>
					W_MontEtat=W_MontEtat+ENR_SSIADHISTACTINTEXT<6,i,j>
				END

			END
		NEXT j
	NEXT i

	READ ENR_INTERVENANTEXT FROM F.INTERVENANTEXT,W_CleHist[1,5] ELSE ENR_INTERVENANTEXT=""
	k=1
	LOOP
	UNTIL ENR_INTERVENANTEXT<26,k>[1,3]=W_Entite OR ENR_INTERVENANTEXT<26,k>="" DO
		k=k+1
	REPEAT
	IF ENR_INTERVENANTEXT<26,k> # "" THEN
		W_Cpte=ENR_INTERVENANTEXT<26,k>
	END ELSE
		W_Cpte=W_Entite:ENR_PARAMENTITECOMPTA<12>
	END

	IF W_DateArrete < ENR_PARAMENTITECOMPTA<3> THEN
		IF W_DateArrete < ENR_PARAMENTITECOMPTA<1> THEN
			W_An=OCONV(ENR_PARAMENTITECOMPTA<1>,"D4/")[7,4]
			W_DateTemp=ICONV("01/01/":W_An,"D4/")
		END ELSE
			W_DateTemp=W_DateArrete
		END

		W_CleBrouillard=W_CleBrouillardN0:W_NumLigneN0
		W_NumLigneN0=W_NumLigneN0+1 "R%5"
	END ELSE
		IF W_DateArrete > ENR_PARAMENTITECOMPTA<4> THEN
			W_An=OCONV(ENR_PARAMENTITECOMPTA<4>,"D4/")[7,4]
			W_DateTemp=ICONV("31/12/":W_An,"D4/")
		END ELSE
			W_DateTemp=W_DateArrete
		END
		W_CleBrouillard=W_CleBrouillardN1:W_NumLigneN1
		W_NumLigneN1=W_NumLigneN1+1 "R%5"
	END

	ENR_BROUILLARDDETAIL=""
	ENR_BROUILLARDDETAIL<1>=DATE()
	ENR_BROUILLARDDETAIL<2>=W_DateTemp
	ENR_BROUILLARDDETAIL<3>=""
	ENR_BROUILLARDDETAIL<4>=W_Cpte
	ENR_BROUILLARDDETAIL<5>=ENR_INTERVENANTEXT<2>:" ":ENR_INTERVENANTEXT<3>
	ENR_BROUILLARDDETAIL<6>=W_CleHist[6,10]
	ENR_BROUILLARDDETAIL<7>=""
	ENR_BROUILLARDDETAIL<8>=W_MontEtat
	ENR_BROUILLARDDETAIL<9>=""
	ENR_BROUILLARDDETAIL<10>=""
	ENR_BROUILLARDDETAIL<11>=""
	ENR_BROUILLARDDETAIL<12>=""
	ENR_BROUILLARDDETAIL<13>=""
	W_Credit=W_Credit+W_MontEtat

	WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CleBrouillard

	IF ENR_SSIADHISTACTINTEXT<10>="" THEN ENR_SSIADHISTACTINTEXT<10>="1"
	WRITE ENR_SSIADHISTACTINTEXT ON F.SSIADHISTACTINTEXT,W_CleHist

RETURN

***********************************************************************************
* Si intgration virement (pour chaque tat de paiement)
20

	W_MontEtat=0

	W_CountMV=DCOUNT(ENR_SSIADHISTACTINTEXT<1>,CHAR(253))
	FOR i=1 TO W_CountMV
		W_CountSV=DCOUNT(ENR_SSIADHISTACTINTEXT<2,i>,CHAR(252))
		FOR j=1 TO W_CountSV
			IF ENR_SSIADHISTACTINTEXT<5,i,j> # "" THEN
				W_MontEtat=W_MontEtat+ENR_SSIADHISTACTINTEXT<5,i,j>
			END
			IF ENR_SSIADHISTACTINTEXT<6,i,j> # "" THEN
				W_MontEtat=W_MontEtat+ENR_SSIADHISTACTINTEXT<6,i,j>
			END

		NEXT j
	NEXT i

	READ ENR_INTERVENANTEXT FROM F.INTERVENANTEXT,W_CleHist[1,5] ELSE ENR_INTERVENANTEXT=""
	k=1
	LOOP
	UNTIL ENR_INTERVENANTEXT<26,k>[1,3]=W_Entite OR ENR_INTERVENANTEXT<26,k>="" DO
		k=k+1
	REPEAT
	IF ENR_INTERVENANTEXT<26,k> # "" THEN
		W_Cpte=ENR_INTERVENANTEXT<26,k>
	END ELSE
		W_Cpte=W_Entite:ENR_PARAMENTITECOMPTA<12>
	END

	ENR_BROUILLARDDETAIL=""
	ENR_BROUILLARDDETAIL<1>=DATE()
	ENR_BROUILLARDDETAIL<2>=W_CleHist[19,5]
	ENR_BROUILLARDDETAIL<3>=""
	ENR_BROUILLARDDETAIL<4>=W_Cpte
	ENR_BROUILLARDDETAIL<5>="VIREMENT INTERVENANT"
	ENR_BROUILLARDDETAIL<6>=W_CleHist[6,10]
	ENR_BROUILLARDDETAIL<7>=W_MontEtat
	ENR_BROUILLARDDETAIL<8>=""
	ENR_BROUILLARDDETAIL<9>=""
	ENR_BROUILLARDDETAIL<10>=""
	ENR_BROUILLARDDETAIL<11>=""
	ENR_BROUILLARDDETAIL<12>=""
	ENR_BROUILLARDDETAIL<13>=""
	W_Debit=W_Debit+W_MontEtat

	WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CleBrouillard:W_NumLigne
	W_NumLigne=W_NumLigne+1 "R%5"

	IF ENR_SSIADHISTACTINTEXT<10>="1" THEN ENR_SSIADHISTACTINTEXT<10>="2"
	WRITE ENR_SSIADHISTACTINTEXT ON F.SSIADHISTACTINTEXT,W_CleHist

RETURN

***********************************************************************************
* Si intgration tat de paiement (fin traitement)
30

	READ ENR_PLANCOMPTABLE FROM F.PLANCOMPTABLE,W_CpteHono ELSE ENR_PLANCOMPTABLE=""
	W_Count=DCOUNT(W_MontHono,CHAR(254))
	FOR i=1 TO W_Count
		IF W_MontHono<i> # "" AND W_MontHono<i> # 0 THEN
			ENR_BROUILLARDDETAIL=""
			ENR_BROUILLARDDETAIL<1>=DATE()
			ENR_BROUILLARDDETAIL<2>=W_SauveDate
			ENR_BROUILLARDDETAIL<3>=""
			ENR_BROUILLARDDETAIL<4>=W_CpteHono
			ENR_BROUILLARDDETAIL<5>=ENR_PLANCOMPTABLE<1>
			ENR_BROUILLARDDETAIL<6>=""
			ENR_BROUILLARDDETAIL<7>=W_MontHono<i>
			ENR_BROUILLARDDETAIL<8>=""
			ENR_BROUILLARDDETAIL<9>=""
			ENR_BROUILLARDDETAIL<10>=""
			ENR_BROUILLARDDETAIL<11>=W_Act<i,2>
			ENR_BROUILLARDDETAIL<12>=""
			ENR_BROUILLARDDETAIL<13>=""
			W_Debit=W_Debit+W_MontHono<i>

			IF W_CleBrouillard[7,1]="0" THEN
				W_CleBrouillard=W_CleBrouillardN0:W_NumLigneN0
				W_NumLigneN0=W_NumLigneN0+1 "R%5"
			END ELSE
				W_CleBrouillard=W_CleBrouillardN1:W_NumLigneN1
				W_NumLigneN1=W_NumLigneN1+1 "R%5"
			END

			WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CleBrouillard

		END
	NEXT i

	READ ENR_PLANCOMPTABLE FROM F.PLANCOMPTABLE,W_CpteDepl ELSE ENR_PLANCOMPTABLE=""
	W_Count=DCOUNT(W_MontDepl,CHAR(254))
	FOR i=1 TO W_Count
		IF W_MontDepl<i> # "" AND W_MontDepl<i> # 0 THEN
			ENR_BROUILLARDDETAIL=""
			ENR_BROUILLARDDETAIL<1>=DATE()
			ENR_BROUILLARDDETAIL<2>=W_SauveDate
			ENR_BROUILLARDDETAIL<3>=""
			ENR_BROUILLARDDETAIL<4>=W_CpteDepl
			ENR_BROUILLARDDETAIL<5>=ENR_PLANCOMPTABLE<1>
			ENR_BROUILLARDDETAIL<6>=""
			ENR_BROUILLARDDETAIL<7>=W_MontDepl<i>
			ENR_BROUILLARDDETAIL<8>=""
			ENR_BROUILLARDDETAIL<9>=""
			ENR_BROUILLARDDETAIL<10>=""
			ENR_BROUILLARDDETAIL<11>=W_Act<i,2>
			ENR_BROUILLARDDETAIL<12>=""
			ENR_BROUILLARDDETAIL<13>=""
			W_Debit=W_Debit+W_MontDepl<i>

			IF W_CleBrouillard[7,1]="0" THEN
				W_CleBrouillard=W_CleBrouillardN0:W_NumLigneN0
				W_NumLigneN0=W_NumLigneN0+1 "R%5"
			END ELSE
				W_CleBrouillard=W_CleBrouillardN1:W_NumLigneN1
				W_NumLigneN1=W_NumLigneN1+1 "R%5"
			END

			WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CleBrouillard

		END
	NEXT i
	
	READ ENR_BROUILLARDTETE FROM F.BROUILLARDTETE,W_CleBrouillard[1,8] ELSE ENR_BROUILLARDTETE=""
	ENR_BROUILLARDTETE<1>=W_CleBrouillard[9,5] "R%5"
	IF ENR_BROUILLARDTETE<2> # "" THEN
		ENR_BROUILLARDTETE<2>=ENR_BROUILLARDTETE<2>+W_Debit
	END ELSE
		ENR_BROUILLARDTETE<2>=W_Debit
	END
	IF ENR_BROUILLARDTETE<3> # "" THEN
		ENR_BROUILLARDTETE<3>=ENR_BROUILLARDTETE<3>+W_Credit
	END ELSE
		ENR_BROUILLARDTETE<3>=W_Credit
	END

	WRITE ENR_BROUILLARDTETE ON F.BROUILLARDTETE,W_CleBrouillard[1,8]

RETURN

***********************************************************************************
* Si intgration virement (fin traitement)
40

	READ ENR_JOURNAL FROM F.JOURNAL,W_CleBrouillard[1,5] ELSE ENR_JOURNAL=""
	IF ENR_JOURNAL<3> # "" THEN
		W_Cpte=ENR_JOURNAL<3>
	END ELSE
		W_Cpte=W_Entite:ENR_PARAMENTITECOMPTA<12>
	END

	ENR_BROUILLARDDETAIL=""
	ENR_BROUILLARDDETAIL<1>=DATE()
	ENR_BROUILLARDDETAIL<2>=W_Date
	ENR_BROUILLARDDETAIL<3>=""
	ENR_BROUILLARDDETAIL<4>=W_Cpte
	ENR_BROUILLARDDETAIL<5>="VIREMENTS INTERVENANTS SSIAD"
	ENR_BROUILLARDDETAIL<6>=""
	ENR_BROUILLARDDETAIL<7>=""
	ENR_BROUILLARDDETAIL<8>=W_Debit
	ENR_BROUILLARDDETAIL<9>=""
	ENR_BROUILLARDDETAIL<10>=""
	ENR_BROUILLARDDETAIL<11>=""
	ENR_BROUILLARDDETAIL<12>=""
	ENR_BROUILLARDDETAIL<13>=""

	WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CleBrouillard:W_NumLigne

	READ ENR_BROUILLARDTETE FROM F.BROUILLARDTETE,W_CleBrouillard ELSE ENR_BROUILLARDTETE=""
	ENR_BROUILLARDTETE<1>=W_NumLigne
	IF ENR_BROUILLARDTETE<2> # "" THEN
		ENR_BROUILLARDTETE<2>=ENR_BROUILLARDTETE<2>+W_Debit
	END ELSE
		ENR_BROUILLARDTETE<2>=W_Debit
	END
	IF ENR_BROUILLARDTETE<3> # "" THEN
		ENR_BROUILLARDTETE<3>=ENR_BROUILLARDTETE<3>+W_Debit
	END ELSE
		ENR_BROUILLARDTETE<3>=W_Debit
	END

	WRITE ENR_BROUILLARDTETE ON F.BROUILLARDTETE,W_CleBrouillard

RETURN
