Vai al contenuto

COGB32 - Creazione Distinta Home Banking

Intestazione

Campo Valore
Programma COGB32
Titolo Creazione distinta e archivio home banking
Autore Stefano Ruozzi - Eurosystem
Posizione menu Contabilita' > Home Banking > Creazione Distinta

Scopo e logica generale

COGB32 e' un programma interattivo che crea distinte di pagamento (bonifici o assegni circolari) per l'home banking. Il flusso principale e':

  1. L'utente seleziona tipo pagamento, banca, estrazione, data e descrizione
  2. Il programma legge l'archivio delle disposizioni (HOMEBA), verifica dati anagrafici e bancari
  3. Crea un file di transito raggruppato per anagrafica (HOMEBA2) con gestione descrizioni
  4. Genera un file in formato CBI tradizionale (tracciato record HR/10/16/17/20/30/40/50/60/70/EF)
  5. Genera un file XML conforme allo standard CBI (CBIPaymentRequest, schema 00.04.00)
  6. Stampa il riepilogo, gestisce PDF/email/CRM, e chiama COGB33 per la registrazione contabile

Il programma supporta due tipi di pagamento: B (Bonifico/TRF) e F (F.A.D./CHK - assegno circolare).


Flusso principale

  1. Inizializzazione (a000): controllo abilitazione, apertura file, lettura azienda, caricamento configurazione (x99-confi), preparazione stampa/email/CRM (spec-prepare)
  2. Accept testata (a-tm-tipag -> a-tm-banca -> a-tm-estr -> a-tm-data -> a-tm-desc-banca): acquisizione parametri dall'utente con validazione
  3. Conferma (a-richiesta-conferma): validazione globale dei campi, conferma utente
  4. Anteprima stampa (a020): chiamata COGS54 per configurazione stampa
  5. Conteggio disposizioni (calc-tot / calc-tot-agg): scansione HOMEBA, calcolo totale distinta, verifica dati anagrafici e bancari
  6. Creazione transito (x2-creazione-trs): crea HOMEBA2 (raggruppamento per anagrafica con descrizioni) e HOMEBA3 (ordinamento per data valuta)
  7. Griglia (a-grid -> a-accept-grid): visualizzazione e modifica descrizioni (a-tm-descriz)
  8. Conferma e generazione (aggio-conferma): ricalcolo totali, scansione HOMEBA2, scrittura tracciato CBI su file sequenziale (a100 -> a900), generazione XML (crea-xml), copia file su client, chiamata COGB33

File e tabelle acceduti

File logico Record Modalita' Uso
HOMEBA hom-rec I-O Archivio disposizioni home banking (chiave: tipo+cliente+anno+tipo+partita+progressivo)
HOMEBA2 hom2-rec I-O File transito raggruppato per anagrafica (temporaneo, creato dal programma)
HOMEBA3 hom3-rec I-O File transito ordinato per data valuta (temporaneo, creato dal programma)
HOMEBADE homde-rec I-O Archivio descrizioni personalizzate per anagrafica (temporaneo)
HOME01 home01-rec Output File sequenziale binario per il tracciato CBI tradizionale (bonifici.dat o assegni.dat)
FEURTAB feurtab Input Tabella generica Eurosystem
FLSTA flsta I-O File stampa
COGGEANA ana-rec Input Anagrafica generale (fornitori/clienti)
COGAPPOG app-rec Input Appoggi bancari dell'anagrafica
COGANCAP anc-rec Input Dati aggiuntivi anagrafica (IBAN estero, BIC)
NUTALTRI als-rec Input Anagrafica "altri soggetti"
NUTBANAS ban-rec Input Anagrafica banche
NUTTABEL nuta-rec I-O Numeratori (progressivo distinta: tipo 3, codr 6)
COGTABEL euta-rec Input Tabelle di sistema (tipo 66 per date contabilizzazione)

Chiavi di accesso

  • HOMEBA: chiave primaria hom-chia, chiave alternativa hom-chia1 (nome+valuta+chiave)
  • HOMEBA2: chiave primaria hom2-chia1, chiave alternativa hom2-chia2 (nome+chiave)
  • HOMEBA3: chiave primaria hom3-chia (include data valuta hom3-vadis in chiave)

Copybook inclusi

Screen Designer

Copybook Contenuto
cogb32-01.scr Maschera principale (screen section)
cogb32.select SELECT dei file gestiti da Screens
cogb32.fd FD dei file gestiti da Screens
cogb32.wrk Working storage della maschera
cogb32.prc Procedure division della maschera
cogb32.decla Declaratives

Strutture dati

Copybook Contenuto
cogazien.cpy Dati azienda (az-int, az-piva, ecc.)
cogconta.cpy Struttura conti (per date esercizio)
capazien.cpy Capitoli azienda
utilncnf.cpy Struttura parametri RNEWCONF
cxml-wrk.cpy Working storage per generazione XML
cxml-prc.cpy Procedure per generazione XML

Utility e interfacce

Copybook Contenuto
utils52.cpy Calendario (COGS52)
utils54.cpy Gestione stampa (COGS54)
utilcogb33.cpy Interfaccia chiamata COGB33
utilmymail.cpy Interfaccia invio email
utilpost.cpy Interfaccia POSTA
utilsview.cpy Interfaccia SVIEW (conversione PDF)
l-copiaf.cpy / u-copiaf.cpy Interfaccia COPIAF (copia file client/server)
utilgesstr.cpy Interfaccia GESSTR (gestione stringhe/note)
utilwordmdl.cpy Interfaccia WORDMDL (stampa con modello Word)
utilcogpa3.cpy Interfaccia COGPA3
utilcrms07.cpy Interfaccia CRM (CRMS07)
wgrid.cpy / utilgdad.cpy Gestione griglie (GRIDADMN)
utilu06.cpy Interfaccia COGU06 (archiviazione documenti)
utilu10.cpy / utilu20.cpy Utility divisa/formattazione

Programmi chiamati (CALL)

Programma Scopo
RNEWCONF Lettura configurazione (gruppi: contabil, riba, arc-ott, cogesys)
COGS54 Gestione stampa (anteprima, output)
GRIDADMN Amministrazione griglie (preparazione, personalizzazione, esportazione)
COPIAF Copia file tra server e client (XML, PDF)
COGB33 Registrazione contabile della distinta
WIN023.COB Selezione banca da elenco (F8)
GESSTR Gestione stringhe e composizione note
WORDMDL Stampa con modello Word
COGPA3 Stampa con template
SVIEW Conversione file in PDF
POSTA Invio email tramite MYMAIL
CRMS07 Creazione attivita' CRM con allegato
COGU06 Archiviazione documenti nel sistema documentale
COGU03W Utility di supporto
C$SYSTEM Esecuzione comandi di sistema
c$justify Giustificazione stringhe (per valori XML)

Configurazione (RNEWCONF)

Lettura principale (x99-confi)

Chiavi lette dal gruppo contabil (pacchetto A):

# Chiave Destinazione Descrizione
01 homeb-codice-mitt tm-cfg-codice-mitt Codice mittente CBI
02 homeb-cfisc-piva tm-cfg-cfisc-piva Codice fiscale/P.IVA mittente
03 homeb-caus-bonifico tm-cfg-caus-bonif Causale bonifico (numerica)
04 homeb-mod-pag-bonifico tm-cfg-mod-pag-bonif Modalita' pagamento bonifico
05 homeb-caus-assegno tm-cfg-caus-asseg Causale assegno (numerica)
06 homeb-mod-pag-assegno tm-cfg-mod-pag-asseg Modalita' pagamento assegno
25 homeb-to-for tm-cfg-to-for Timeout fornitori
26 homeb-to-cli tm-cfg-to-cli Timeout clienti
27 homeb-to-altri tm-cfg-to-altri Timeout altri soggetti
30 homeb-desc-banca tm-cfg-desc-ban Descrizione default banca
33 homeb-scrivi-spese tm-cfg-fl-spese Flag scrittura spese
34 homeb-spese-conto tm-cfg-conto-spese Conto per spese
35 homeb-caus-iso-bonifico tm-cfg-caus-iso-bonif Causale ISO per bonifico (XML)
36 homeb-caus-iso-assegno tm-cfg-caus-iso-asseg Causale ISO per assegno (XML)
37 homeb-stampa-word tm-cfg-wordmdl-stampa Flag stampa con modello Word

Chiavi lette dal gruppo riba (pacchetto C):

# Chiave Descrizione
07 cod-attivita-su-avviso Codice attivita' CRM
08 avviso-mail-oggetto Oggetto email avviso
09-18 avviso-mail-testo (idx 1-10) Testo email avviso (10 righe)
19 fl-pdf-avviso Flag generazione PDF
20 fl-mail-avviso Flag invio email
21 fl-crm-avviso Flag archiviazione CRM
31 cartella-salva-pdf Cartella salvataggio PDF su client

Lettura per banca (x-confi-cuc)

Chiave Sudivisione Descrizione
homeb-mittente-codice-cuc per banca (ncnf-sud = tm-banca) Codice CUC specifico per banca assuntrice

Generazione XML CBI

Struttura del file

Il file XML viene generato nel paragrafo crea-xml e segue lo schema CBIPaymentRequest versione 00.04.00:

CBIPaymentRequest (xmlns: urn:CBI:xsd:CBIPaymentRequest.00.04.00)
  GrpHdr
    MsgId, CreDtTm, NbOfTxs, CtrlSum
    InitgPty > Nm, Id > OrgId > Othr > Id (codice CUC), Issr ("CBI")
  PmtInf
    PmtInfId, PmtMtd (TRF|CHK), BtchBookg (false)
    PmtTpInf > SvcLvl > Cd (SEPA)
    ReqdExctnDt (data esecuzione)
    Dbtr > Nm, Id > OrgId > Othr > Id (IT + P.IVA), Issr (ADE)
    DbtrAcct > Id > IBAN
    DbtrAgt > FinInstnId > ClrSysMmbId > MmbId (ABI banca)
    ChrgBr (SLEV)
    CdtTrfTxInf (1 per beneficiario)
      PmtId > InstrId, EndToEndId
      PmtTpInf > CtgyPurp > Cd (causale ISO)
      Amt > InstdAmt (Ccy="EUR")
      [CdtrAgt > FinInstnId > BIC]  (solo per esteri)
      Cdtr > Nm, PstlAdr > AdrLine (x2)
      CdtrAcct > Id > IBAN
      RmtInf > Ustrd (descrizioni, max 140 car. per elemento)

Paragrafi XML

Paragrafo Funzione
crea-xml Orchestrazione: scansione HOMEBA2, chiamata open/write-testa/write-riga/close
open-xml Apertura file, nodo radice CBIPaymentRequest con namespace e attributi
write-testa-xml Nodo GrpHdr (testata) e PmtInf (info pagamento) con dati azienda/banca
write-riga-xml Nodo CdtTrfTxInf per ogni beneficiario con importo, dati anag., IBAN, descrizioni
close-xml Chiusura nodi aperti e file
add-w-in-str-to-buffer Aggiunge stringa al buffer Ustrd, spezzando a 140 caratteri
write-ustrd-buffer Scrive un elemento Ustrd nel nodo RmtInf
componi-iso-date Formatta data in YYYY-MM-DD
componi-iso-datetime Formatta data/ora in ISO 8601 (YYYY-MM-DDTHH:MI:SS.hhh+02:00)

Le routine XML usano le copybook cxml-wrk.cpy e cxml-prc.cpy con i paragrafi cxml-f-open, cxml-f-add-child, cxml-f-add-sibling, cxml-f-add-attribute, cxml-f-close-child, cxml-f-close.


Tracciato CBI tradizionale

Oltre all'XML, il programma genera anche un file sequenziale binario nel formato CBI tradizionale (record da 120+2 byte):

Record Paragrafo Contenuto
HR (PC) wr-rb Header: codice mittente, ABI destinatario, data creazione
10 wr-10 Disposizione: progressivo, data esecuzione, causale, importo, ABI/CAB mittente e domiciliatario
16 wr-16 IBAN mittente (solo bonifici)
17 wr-17 IBAN beneficiario (solo bonifici)
20 wr-20 Dati ordinante: ragione sociale, C.F./P.IVA
30 wr-30 Dati beneficiario: ragione sociale, C.F./P.IVA
40 wr-40 Indirizzo beneficiario: via, CAP, comune, banca
50/60 wr-50 Descrizioni del pagamento (3 righe per tipo)
70 wr-70 Record di chiusura disposizione
EF wr-eof Footer: totali, contatori record

I file vengono salvati come bonifici.dat/bonifici.arc o assegni.dat/assegni.arc nella directory temporanea.


Logica di business

Selezione disposizioni (calc-tot)

  1. Scansione sequenziale di HOMEBA
  2. Filtra solo record con hom-sos = 'X' o "C"
  3. Per bonifici: filtra per tipo estrazione (tutti o solo fornitori con ABI banca)
  4. Calcola importo netto: hom-impo - hom-rita - hom-anti - hom-nac - hom-altro-forn
  5. Esclude disposizioni con importo netto non positivo
  6. Verifica dati anagrafici e bancari, segnala anomalie (ABI mancante, C/C mancante, indirizzo incompleto per FAD)

Raggruppamento per anagrafica (x2-creazione-trs)

  1. Copia disposizioni in HOMEBA3 (con data valuta in chiave per ordinamento)
  2. Scansione HOMEBA3: raggruppa per anagrafica (tipo+codice) e data valuta
  3. Per ogni raggruppamento: somma importi, compone tabella fatture/acconti/note accredito
  4. Compone automaticamente le descrizioni (es. "BONIFICO A PAG.TO VS/FATT. 123, 456")
  5. Scrive record raggruppato in HOMEBA2
  6. Se esistono descrizioni personalizzate (HOMEBADE), le riprende

Stampa PDF / Email / CRM (stampa-pdf-email-crm)

Per ogni beneficiario, se configurato:

  1. Genera la stampa individuale (con COGS54 e opzionalmente WORDMDL)
  2. Converte in PDF (tramite SVIEW)
  3. Invia email (tramite POSTA/MYMAIL) con PDF allegato
  4. Archivia nel CRM (tramite CRMS07 + COGU06)

Post-elaborazione

  1. Incrementa il progressivo distinta su NUTTABEL (tipo 3, codr 6)
  2. Copia il file XML nella cartella client configurata
  3. Chiama COGB33 per la registrazione contabile, passando: descrizione banca, tipo pagamento, numero distinta

Variabili di stato principali

Variabile Descrizione
tm-tipag Tipo pagamento: "B" bonifico, "F" FAD
tm-estr Tipo estrazione: "T" tutti
tm-banca Codice banca assuntrice
tm-data Data esecuzione distinta
tm-desc-banca Descrizione contropartita banca
w-dist Numero progressivo distinta
w-ctr-dis Contatore disposizioni nella distinta
w-imp-dis Importo totale distinta
w-imp-for Importo totale per fornitore corrente
ctr-riba Contatore record/transazioni
ctr-trx Contatore transazioni per XML
totimpo Totale importi per tracciato CBI
fl-cal Flag "trovate disposizioni"
thema Stato elaborazione (0=inizio, 99=in corso)

Storico modifiche

Data Descrizione
28/03/2026 Correzione lettura configurazione CUC (x-confi-cuc): aggiunto ncnf-tab all'initialize per evitare che residui della lettura precedente inquinino i parametri CUC per banca
28/03/2026 Cambio versione schema CBI: namespace XML aggiornato da CBIPaymentRequest.00.04.01 a CBIPaymentRequest.00.04.00 (sia schemaLocation che xmlns). Allineamento alla versione 00.04.00 dello standard CBI effettivamente supportata dalle banche
01/04/2026 Rimosso campo ReqdExctnDt dall'XML: il campo ReqdExctnDt (Requested Execution Date, nodo 2.5) e' stato commentato dalla generazione XML write-testa-xml. La data di esecuzione richiesta non viene piu' inserita a livello di testata del blocco di pagamento
13/04/2010 Gestione importi negativi (note accredito): disposizioni con hom-segno = "D" ora detratte dal totale anziche' escluse
01/01/2014 Aggiunto campo hom-paage / hom2-paage per gestione agenzie
04/07/2008 Aggiunto supporto record 16/17 (IBAN) nel tracciato CBI tradizionale
28/01/2014 Campo tr10-dat-esec-disp valorizzato con data esecuzione
05/11/2014 Aggiunta copia file XML su path client configurabile