All Downloads are FREE. Search and download functionalities are using the official Maven repository.

expsigladb.Procedure.estrai_flusso_per_iban.prc Maven / Gradle / Ivy

There is a newer version: 6.6.11
Show newest version
CREATE OR REPLACE Procedure estrai_flusso_per_iban Is

-- filler a seconda delle dimensioni
filler1                  VARCHAR2(1)  := ' ';
filler5                  VARCHAR2(6)  := '     ';
filler6                  VARCHAR2(6)  := '      ';
filler7                  VARCHAR2(7)  := '       ';
filler10                 VARCHAR2(10) := '          ';
filler12                 VARCHAR2(12) := '            ';
filler15                 VARCHAR2(15) := '               ';
filler16                 VARCHAR2(16) := '                ';
filler20                 VARCHAR2(20) := '                    ';
filler25                 VARCHAR2(25) := '                         ';
filler30                 VARCHAR2(30) := '                              ';
filler70                 VARCHAR2(70) := '                                                                      ';

-- record di testa e di coda
tipo_record              VARCHAR2(2);
mittente                 VARCHAR2(5) := '92E58'; -- CODICE SIA
ricevente                VARCHAR2(5)   := '01005'; -- ABI BANCA DI ALLINEAMENTO
data_creazione           NUMBER(6)   := To_Char(Sysdate, 'DDMMYY');
Nome_supporto            VARCHAR2(20);
campo_a_disposizione     VARCHAR2(6);
numero_disposizioni      NUMBER(7);
numero_record            NUMBER(7);

-- RECORD 12

progressivo_disp         NUMBER(7) := 0;
causale                  NUMBER(5);
Codice_Paese	         VARCHAR2(2);
check_digit	         VARCHAR2(2);
CIN_terzo                CHAR(1);
abi_terzo                VARCHAR2(5);
cab_terzo                VARCHAR2(5);
conto_terzo              VARCHAR2(12 CHAR);
tipo_codice_individuale	 CHAR(1);
codice_individuale	 VARCHAR2(16 CHAR);

-- RECORD 30

stringa_descr_terzo      VARCHAR2(500);
cod_fis                  VARCHAR2(16 CHAR);
CD_ANAGRAFICO            NUMBER(8);
rec_anagrafico           anagrafico%Rowtype;

-- RECORD 70

codice_riferimento       VARCHAR2(15);
descrizione              VARCHAR2(75 CHAR);

indice                   NUMBER := 0;
riga_tabella             VARCHAR2(130 CHAR);

Begin

Nome_supporto := mittente||ricevente||To_Char(Sysdate, 'DDMMYYHH24MI');

-- record di testa

tipo_record := 'AL';
campo_a_disposizione := FILLER6;
riga_tabella := filler1||tipo_record||mittente||ricevente||data_creazione||Nome_supporto||campo_a_disposizione||filler70||filler5;

indice := indice + 1;
Insert Into flusso_invio_iban Values (indice, Riga_tabella);

For ANAG_BANCARIE In (Select BANCA.CD_TERZO, ABI, CAB, NUMERO_CONTO, PG_BANCA
                      From   BANCA, TERZO, ANAGRAFICO
                      Where  BANCA.CD_TERZO = TERZO.CD_TERZO And
                             TERZO.CD_ANAG = ANAGRAFICO.CD_ANAG And
                             ABI IS NOT NULL And
                             CAB IS NOT NULL And
                             NUMERO_CONTO IS NOT NULL And
                             LENGTH(NUMERO_CONTO) <= 12 And
                             FL_CANCELLATO = 'N' And
                             Exists (Select 1
                                     From   RAPPORTO
                                     Where  CD_ANAG = ANAGRAFICO.CD_ANAG And
                                            CD_TIPO_RAPPORTO = 'DIP')
                      Union
                      Select CD_TERZO, ABI, CAB, NUMERO_CONTO, PG_BANCA
                      From   banca
                      Where  ABI Is Not Null And
                             CAB Is Not Null And
                             NUMERO_CONTO Is Not Null And
                             LENGTH(NUMERO_CONTO) <= 12 And
                             fl_cancellato = 'N' And
                             (CD_TERZO, PG_BANCA) In
                             (Select CD_TERZO, PG_BANCA
                              From   mandato_riga
                              Where  esercizio >= 2007)) Loop

progressivo_disp := progressivo_disp + 1;

-- record 12

tipo_record := '12';
CAUSALE     := '90717';

tipo_codice_individuale := '5';
codice_individuale := ANAG_BANCARIE.CD_TERZO;

RIGA_TABELLA := FILLER1||tipo_record||Lpad(progressivo_disp, 7, '0')||filler6||FILLER12||CAUSALE||FILLER10||'  '||'  '||ricevente||
                FILLER16||' '||ANAG_BANCARIE.ABI||ANAG_BANCARIE.CAB||Rpad(ANAG_BANCARIE.NUMERO_CONTO, 12, ' ')||mittente||
                tipo_codice_individuale||Rpad(codice_individuale, 16, ' ')||FILLER7;

indice := indice + 1;
Insert Into flusso_invio_iban Values (indice, Riga_tabella);

-- record 30

tipo_record := '30';

Select denominazione_sede --||' '||via_sede||' '||NUMERO_CIVICO_SEDE||' '||DS_COMUNE
        , cd_anag
Into   stringa_descr_terzo, cd_anagrafico
From   terzo, comune
Where  cd_terzo = ANAG_BANCARIE.cd_terzo And
       terzo.pg_comune_sede = comune.pg_comune;

-- QUESTA ISTRUZIONE O RIEMPIE A DESTRA DI SPAZI FINO A 74 CARATTERI O SE ? PI? LUNGA TRONCA A 74
stringa_descr_terzo := Rpad(stringa_descr_terzo, 74, ' ');

Select *
Into   rec_anagrafico
From   anagrafico
Where  cd_anag = cd_anagrafico;

If rec_anagrafico.ti_entita = 'F' And Length(rec_anagrafico.CODICE_FISCALE) = 16 Then
  COD_FIS := rec_anagrafico.CODICE_FISCALE;
End If;

RIGA_TABELLA := FILLER1||tipo_record||Lpad(progressivo_disp, 7, '0')||Lpad(Substr(stringa_descr_terzo, 1, 30), 30, ' ')||
                Lpad(Substr(stringa_descr_terzo, 31, 30), 30, ' ')||Lpad(Substr(stringa_descr_terzo, 61, 14), 14, ' ')||Nvl(COD_FIS, '                ')||filler20;

indice := indice + 1;

Insert Into flusso_invio_iban Values (indice, Riga_tabella);


-- record 70

tipo_record := '70';

codice_riferimento := filler15;
descrizione  := Rpad('IBAN CD_TERZO '||ANAG_BANCARIE.cd_terzo||' PG_BANCA '||ANAG_BANCARIE.PG_BANCA||': ABI '||ANAG_BANCARIE.ABI||' CAB '||ANAG_BANCARIE.CAB||' C/C '||ANAG_BANCARIE.NUMERO_CONTO, 75, ' ');

RIGA_TABELLA := FILLER1||tipo_record||Lpad(progressivo_disp, 7, '0')||codice_riferimento||descrizione||FILLER20;

indice := indice + 1;
Insert Into flusso_invio_iban Values (indice, Riga_tabella);

End Loop;

-- record di coda

tipo_record := 'EF';

RIGA_TABELLA := FILLER1||tipo_record||mittente||ricevente||data_creazione||Nome_supporto||FILLER6||Lpad(progressivo_disp, 7, '0')||FILLER30||Lpad(INDICE+1, 7, '0')||
                FILLER25||filler6;

indice := indice + 1;
Insert Into flusso_invio_iban Values (indice, Riga_tabella);


Commit;

End;
/






© 2015 - 2024 Weber Informatics LLC | Privacy Policy