********************************************
* Traitement des virements SSIAD	   *
*					   *
* GREGORY		OCTOBRE     2004   *
********************************************

************
* FICHIERS *
************
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ACTIVITES" TO F.ACTIVITES ELSE STOP
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE STOP
OPEN "","INTERVENANTEXT" TO F.INTERVENANTEXT ELSE STOP
OPEN "","SSIADHISTACTINTEXT" TO F.SSIADHISTACTINTEXT ELSE STOP
OPEN "","TEMPO" TO F.TEMPO ELSE STOP
OPEN "","VIREMENT" TO F.VIREMENT ELSE STOP

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

W_ReqHist=FIELD(ARGUMENTS,"|",2)
W_Indice=FIELD(ARGUMENTS,"|",3)
W_CodeAsso=FIELD(ARGUMENTS,"|",4)
W_ReeditOuOK=FIELD(ARGUMENTS,"|",5)

****************************
* Procdures               *
****************************
*   100  -->  Remplissage tableau listage
*   200  -->  Recherche code
*   400  -->  Remplir donnes virement
*   500  -->  Gestion Requete DetailCalcul

****************************
* Initialisation           *
****************************

	ENR_VIREMENT=""

	ENR_TEMPO=""

	READ ENR_ASSOCIATION FROM F.ASSOCIATION,W_CodeAsso ELSE STOP

	IPOSITION=0
	W_PositionTableau=0

	W_TabTemp = ""
	I=0
	W_Ind=1
	LOOP
		I=I+1
	WHILE W_ReqHist[W_Ind,23]#""
		W_TabTemp<I>=W_ReqHist[W_Ind,23]
		W_Ind = W_Ind+24
	REPEAT

	I=0
	LOOP
		I=I+1
	WHILE W_TabTemp<I>#""
		W_ReqHist<I>=W_TabTemp<I>
	REPEAT

	GOSUB 100

	IF W_ReeditOuOK="OK" AND ENR_VIREMENT#"" THEN
		WRITE ENR_VIREMENT ON F.VIREMENT,W_CodeFichier
	END

	IF W_ReeditOuOK="OK" THEN
		ENR_RAPPORT=""
		ENR_RAPPORT<1>=W_NbrVirements
		ENR_RAPPORT<2>=W_CumulTotal
       		ENR_RAPPORT<3>=W_CodeFichier
		WRITE ENR_RAPPORT ON F.TEMPO,"RAPPORTSSIAD"
	END

	IF ENR_TEMPO="" THEN ENR_TEMPO<1>="NEANT"
	WRITE ENR_TEMPO ON F.TEMPO,"VIREMSSIAD"

STOP

********************************
* GESTION REQUETE DETAILCALCUL *
********************************
100
    W_Cumul = 0
    W_CumulPage = 0
    W_CumulTotal = 0
    W_NbrVirements = 0
    I=0
    J=0

    W_CLEANC=""
    W_Indice=W_Indice-1
    LOOP
	W_Indice=W_Indice+1
    WHILE W_ReqHist<W_Indice>#"" DO
	W_CLEPRINC = W_ReqHist<W_Indice>
	W_CLEPREC = W_CLEPRINC
	IF W_CLEANC = "" THEN W_CLEANC = W_CLEPRINC
	READ ENR_INTERVENANTEXT FROM F.INTERVENANTEXT, W_CLEANC[1,5] ELSE PRINT "Erreur INTERVENANTEXT"
	READ ENR_SSIADHISTACTINTEXT FROM F.SSIADHISTACTINTEXT, W_ReqHist<W_Indice> ELSE PRINT "Erreur SSIADHISTACTINTEXT"
	W_NumEtat=W_CLEANC[6,10]

       	IF (W_CLEPRINC[1,5]) # (W_CLEANC[1,5]) THEN
		IF W_Cumul>0 THEN
			GOSUB 200
			IF ENR_INTERVENANTEXT<19>#"" THEN GOSUB 400
			W_Cumul=0
		END
	END
	W_CLEANC=W_CLEPRINC 

		I=0
		LOOP
			I=I+1
		WHILE ENR_SSIADHISTACTINTEXT<2,I>#"" DO
			J=0
			LOOP
				J=J+1
			WHILE ENR_SSIADHISTACTINTEXT<2,I,J>#"" DO
				IF (W_ReeditOuOK = "OK" AND ENR_SSIADHISTACTINTEXT<7>="") OR (W_ReeditOuOK = "REEDIT" AND ENR_SSIADHISTACTINTEXT<7>="V") THEN
					W_Cumul=W_Cumul+ENR_SSIADHISTACTINTEXT<5,I,J>
	                                IF ENR_SSIADHISTACTINTEXT<6,I,J> # "" THEN
        	                            W_Cumul = W_Cumul + ENR_SSIADHISTACTINTEXT<6,I,J>
                	                END					

				END
			REPEAT


		REPEAT
		IF W_ReeditOuOK = "OK" AND ENR_SSIADHISTACTINTEXT<7>="" THEN
			ENR_SSIADHISTACTINTEXT<7>="V"
		END

	WRITE ENR_SSIADHISTACTINTEXT ON F.SSIADHISTACTINTEXT, W_ReqHist<W_Indice>
    REPEAT

    READ ENR_INTERVENANTEXT FROM F.INTERVENANTEXT, W_CLEANC[1,5] ELSE PRINT "Erreur INTERVENANTEXT"
    IF W_Cumul > 0 THEN
	W_NumEtat=W_CLEANC[6,10]
	GOSUB 200
	IF ENR_INTERVENANTEXT<19>#"" THEN GOSUB 400
    END

    *Total
    IF ENR_VIREMENT<1>#"" THEN
	ENR_VIREMENT<W_NbrVirements+2> = "0802":SPACE(8):W_NumEmet:SPACE(84):W_CumulTotal "R%16":SPACE(42)
    END

RETURN

********************************
* REPLISSAGE DONNEES VIREMENTS *
********************************
200 
        
    IF W_NbrVirements = 0 THEN
    	W_DateRec = OCONV(@DATE,"D4/")
    	W_DateRec=W_DateRec[7,4]:W_DateRec[4,2]:W_DateRec[1,2]
    	W_CodeFichier = W_DateRec:W_CodeAsso
    	RechercheCode = W_CodeFichier:"1"
    	GOSUB 300
    	W_CodeFichier="SSIAD":RechercheCode

	ENR_VIREMENT=""

	IF ENR_SSIADHISTACTINTEXT<9,1,1>="" THEN
		IF LEN(ENR_ASSOCIATION<21>) = 6 THEN
			W_NumEmet = ENR_ASSOCIATION<21>
		END ELSE
			W_NumEmet = "000000"
		END
		IF LEN(ENR_ASSOCIATION<18>) = 5 THEN
			W_CodeGuichet = ENR_ASSOCIATION<18>
		END ELSE
			W_CodeGuichet = "00000"
		END
		IF LEN(ENR_ASSOCIATION<19>) = 11 THEN
			W_NumCompte = ENR_ASSOCIATION<19>
		END ELSE
			W_NumCompte = "00000000000"
		END
		IF LEN(ENR_ASSOCIATION<17>) = 5 THEN
			W_CodeEtabli = ENR_ASSOCIATION<17>
		END ELSE
			W_CodeEtabli = "00000"
		END
	END ELSE
    		READ ENR_ACTIVITES FROM F.ACTIVITES,ENR_SSIADHISTACTINTEXT<9,1,1> THEN
            		IF LEN(ENR_ACTIVITES<9>) = 6 THEN
                		W_NumEmet = ENR_ACTIVITES<9>
            		END ELSE
                		W_NumEmet = "000000"
            		END
            		IF LEN(ENR_ACTIVITES<6>) = 5 THEN
                		W_CodeGuichet = ENR_ACTIVITES<6>
            		END ELSE
                		W_CodeGuichet = "00000"
           		END
            		IF LEN(ENR_ACTIVITES<7>) = 11 THEN
                		W_NumCompte = ENR_ACTIVITES<7>
            		END ELSE
                		W_NumCompte = "00000000000"
            		END
            		IF LEN (ENR_ACTIVITES<5>) = 5 THEN
                		W_CodeEtabli = ENR_ACTIVITES<5>
            		END ELSE
                		W_CodeEtabli = "00000"
            		END
		END
	END

    	W_DATEEM = OCONV(@DATE,"D4/")
    	W_DATEEM=W_DATEEM[1,2]:W_DATEEM[4,2]:W_DATEEM[10,1]
	W_Monnaie = "E"
        ENR_VIREMENT<1> = "0302":SPACE(8):W_NumEmet:SPACE(7):W_DATEEM:ENR_ASSOCIATION<1>[1,23] "L#24":SPACE(26):W_Monnaie:SPACE(5):W_CodeGuichet:W_NumCompte:SPACE(47):W_CodeEtabli:SPACE(6)
    END

    IF ENR_INTERVENANTEXT<19>#"" THEN 
	W_NbrVirements = W_NbrVirements + 1
 	IF LEN(ENR_INTERVENANTEXT<19>) = 5 THEN
 		W_CodBanq = ENR_INTERVENANTEXT<19>
	END ELSE
       		W_CodBanq = "00000"
	END
	IF LEN(ENR_INTERVENANTEXT<20>) = 5 THEN
		W_CodGuichet = ENR_INTERVENANTEXT<20>
	END ELSE
		W_CodGuichet = "00000"
	END
	IF LEN(ENR_INTERVENANTEXT<21>) = 11 THEN
		W_NoCpte = ENR_INTERVENANTEXT<21>
	END ELSE
		W_NoCpte = "00000000000"
	END
	W_LibelleDest = "HONORAIRES ":ENR_ASSOCIATION<1>

	ENR_VIREMENT<W_NbrVirements+1> = "0602":SPACE(8):W_NumEmet:SPACE(7):W_CLEANC[1,5]:(ENR_INTERVENANTEXT<2>:" ":ENR_INTERVENANTEXT<3>)[1,23] "L#24":ENR_INTERVENANTEXT<17>[1,19] "L#20":SPACE(12):W_CodGuichet:W_NoCpte:W_Cumul "R%16":W_LibelleDest "L#31":W_CodBanq:SPACE(6)
	W_CumulTotal = W_CumulTotal+W_Cumul
    END

RETURN

******************
* RECHERCHE CODE *
******************
300
    READ ENR_VIREMENT FROM F.VIREMENT,"SSIAD":RechercheCode THEN
    	RechercheCode = RechercheCode + 1
        GOSUB 300
    END
RETURN

*******************************
* REMPLISSAGE TABLEAU LISTAGE *
*******************************
400

    IPOSITION=IPOSITION+1

    ENR_TEMPO<IPOSITION>=W_CLEANC[1,5]:SPACE(1):(ENR_INTERVENANTEXT<2>:" ":ENR_INTERVENANTEXT<3>)[1,24] "L#25"
        
    *Banque
    ENR_TEMPO<IPOSITION>=ENR_TEMPO<IPOSITION>:" ":ENR_INTERVENANTEXT<18>[1,23] "L#24"
    *Donnees sur le compte
    ENR_TEMPO<IPOSITION>=ENR_TEMPO<IPOSITION>:" ":ENR_INTERVENANTEXT<17>[1,24] "L#25"
    ENR_TEMPO<IPOSITION>=ENR_TEMPO<IPOSITION>:SPACE(1):W_CodBanq
    ENR_TEMPO<IPOSITION>=ENR_TEMPO<IPOSITION>:SPACE(1):W_CodGuichet
    ENR_TEMPO<IPOSITION>=ENR_TEMPO<IPOSITION>:SPACE(1):W_NoCpte
    ENR_TEMPO<IPOSITION>=ENR_TEMPO<IPOSITION>:" ":ENR_INTERVENANTEXT<22> "L%2"

    * n etat paiement
    ENR_TEMPO<IPOSITION>=ENR_TEMPO<IPOSITION>:" ":W_NumEtat*1:SPACE(10-LEN(W_NumEtat*1))
    *Montant  payer
    ENR_TEMPO<IPOSITION>=ENR_TEMPO<IPOSITION>:" ":SPACE(8-LEN(W_Cumul)):W_Cumul

RETURN
