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':
- L'utente seleziona tipo pagamento, banca, estrazione, data e descrizione
- Il programma legge l'archivio delle disposizioni (HOMEBA), verifica dati anagrafici e bancari
- Crea un file di transito raggruppato per anagrafica (HOMEBA2) con gestione descrizioni
- Genera un file in formato CBI tradizionale (tracciato record HR/10/16/17/20/30/40/50/60/70/EF)
- Genera un file XML conforme allo standard CBI (CBIPaymentRequest, schema 00.04.00)
- 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
- Inizializzazione (
a000): controllo abilitazione, apertura file, lettura azienda, caricamento configurazione (x99-confi), preparazione stampa/email/CRM (spec-prepare)
- Accept testata (
a-tm-tipag -> a-tm-banca -> a-tm-estr -> a-tm-data -> a-tm-desc-banca): acquisizione parametri dall'utente con validazione
- Conferma (
a-richiesta-conferma): validazione globale dei campi, conferma utente
- Anteprima stampa (
a020): chiamata COGS54 per configurazione stampa
- Conteggio disposizioni (
calc-tot / calc-tot-agg): scansione HOMEBA, calcolo totale distinta, verifica dati anagrafici e bancari
- Creazione transito (
x2-creazione-trs): crea HOMEBA2 (raggruppamento per anagrafica con descrizioni) e HOMEBA3 (ordinamento per data valuta)
- Griglia (
a-grid -> a-accept-grid): visualizzazione e modifica descrizioni (a-tm-descriz)
- 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)
- Scansione sequenziale di HOMEBA
- Filtra solo record con
hom-sos = 'X' o "C"
- Per bonifici: filtra per tipo estrazione (tutti o solo fornitori con ABI banca)
- Calcola importo netto:
hom-impo - hom-rita - hom-anti - hom-nac - hom-altro-forn
- Esclude disposizioni con importo netto non positivo
- Verifica dati anagrafici e bancari, segnala anomalie (ABI mancante, C/C mancante, indirizzo incompleto per FAD)
Raggruppamento per anagrafica (x2-creazione-trs)
- Copia disposizioni in HOMEBA3 (con data valuta in chiave per ordinamento)
- Scansione HOMEBA3: raggruppa per anagrafica (tipo+codice) e data valuta
- Per ogni raggruppamento: somma importi, compone tabella fatture/acconti/note accredito
- Compone automaticamente le descrizioni (es. "BONIFICO A PAG.TO VS/FATT. 123, 456")
- Scrive record raggruppato in HOMEBA2
- Se esistono descrizioni personalizzate (HOMEBADE), le riprende
Stampa PDF / Email / CRM (stampa-pdf-email-crm)
Per ogni beneficiario, se configurato:
- Genera la stampa individuale (con COGS54 e opzionalmente WORDMDL)
- Converte in PDF (tramite SVIEW)
- Invia email (tramite POSTA/MYMAIL) con PDF allegato
- Archivia nel CRM (tramite CRMS07 + COGU06)
Post-elaborazione
- Incrementa il progressivo distinta su NUTTABEL (tipo 3, codr 6)
- Copia il file XML nella cartella client configurata
- 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 |