COGSA3B - Generazione XML fatturazione elettronica (dati bolle e fatture)¶
| Campo | Valore |
|---|---|
| Sorgente | cbl/cogsa3b.cbl |
| Tipo | Subroutine |
| Chiamato da | COGSA3 (generazione FatturaPA) |
| Righe sorgente | ~16.700 |
Descrizione¶
Subroutine per la generazione del file XML conforme allo standard FatturaPA (fatturazione
elettronica verso pubblica amministrazione e privati). Si occupa della sezione relativa ai
dati di bolle e fatture: genera i nodi XML DatiBeniServizi con le righe di dettaglio,
i riferimenti ai DDT, i dati di ricezione, e le informazioni su prezzi, quantita', IVA,
sconti e maggiorazioni.
Utilizza il formato FatturaPA versione 1.2.1 (fatturapa_v1.2.1).
File e tabelle¶
| File/Tabella | Tipo | Descrizione |
|---|---|---|
| FEURTAB (cogfiles) | Input | Parametri generali azienda |
Tabelle da cogsa3b.select |
I-O | Tabelle gestionale (anagrafica, merci, testate, righe bolle, ecc.) |
| LODTMDES | I-O | File temporaneo descrizioni |
| LODTRDES | I-O | File temporaneo righe descrizioni |
| COGTRANS | I-O | File transitorio indicizzato con 3 chiavi (bolla, ordinamento, progressivo) |
| OUTFIL | Output | File XML di uscita (record da 8000 byte, line sequential) |
Copybook principali¶
| Copybook | Descrizione |
|---|---|
| cogsa3b.wrk / .select / .fd / .prc / .decla | Screen Designer: working, select, fd, procedure, declaratives |
| fatturapa_v1.2.1.sl / .fd | Schema e tracciato FatturaPA v1.2.1 |
| k-u10.cpy | Costanti per conversione divisa |
| k-personal.cpy | Costanti personalizzazioni aziendali |
| k-tipi-cogtabel.cpy | Costanti tipi tabella |
| costanti-tgls.cpy | Costanti TGL |
| wrk-u10.cpy | Working per conversione divisa |
| l-base64.cpy / u-base64.cpy | Linkage e utilita' per codifica Base64 |
| l-copiaf.cpy / u-copiaf.cpy | Linkage e utilita' per copia file |
| utilcogsa3.cpy | Interfaccia del programma (linkage) |
| utilcogsa6.cpy | Interfaccia COGSA6 |
| utilgesstr.cpy | Interfaccia GESSTR (manipolazione stringhe) |
| utilsview.cpy | Interfaccia SVIEW (visualizzatore) |
| utilgesdebug.cpy | Interfaccia gestione debug |
| womaggio.cpy | Gestione omaggi |
| desport.cpy | Descrizione portafoglio |
Chiamate a sottoprogrammi¶
| Programma | Scopo |
|---|---|
| COGS90 | Inizializzazione/utilita' |
| RNEWCONF | Lettura configurazioni (2 chiamate) |
| COPIAF | Copia file |
| base64 | Codifica Base64 per allegati |
| SVIEW | Visualizzatore file |
| COGP41 | Stampa |
| GESSTR | Manipolazione stringhe (6+ chiamate) |
| COGZS1 | Estrazione dati laboratorio |
| C$JUSTIFY | Giustificazione stringhe |
Logica di elaborazione¶
Struttura XML generata¶
Il programma genera la sezione DatiBeniServizi del tracciato FatturaPA, che contiene:
- DettaglioLinee: una riga per ogni riga di bolla/fattura con numero linea, descrizione, quantita', prezzo unitario, prezzo totale, aliquota IVA, sconti/maggiorazioni.
- DatiRicezione: riferimenti ai documenti di ricezione (max 9).
- DatiDDT: riferimenti ai DDT collegati (max 9).
- RiferimentoNumeroLinea: collegamento tra righe fattura e righe DDT (max 200).
- TipoCessionePrestazione: tipo cessione/prestazione (AB = sconto, AC = premio).
TASK-4919 (2026-05-26): conversione simbolo Euro nelle descrizioni articolo¶
Nelle descrizioni articolo (dag-desc letto da COGDESAG), il carattere _ viene convertito in E prima dell'emissione XML. Il carattere underscore rappresenta nel gestionale il simbolo € (storicamente sostituito con _ per evitare problemi di encoding nei tracciati). In FatturaPA il simbolo Euro non e' accettato dai validatori dei commercialisti.
La sostituzione e' applicata tramite INSPECT dag-desc REPLACING ALL "_" BY "E" in tutti i paragrafi che valorizzano le descrizioni linea della FatturaPA:
ric-desc-sost-sub-widx61-agg-dag-to-descrizione-tipo1x61-agg-dag-to-descrizione-tipo2- loop di lettura COGDESAG nei paragrafi
bool-scrivi-riga-valorizzata/x62-agg-dag-beni-servizi - altri loop di descrizioni aggiuntive (incluso il blocco GSM
az-personal = k-personal-gsm)
La conversione interessa la sola fase XML: il dato originale su COGDESAG resta con il carattere _.
TASK-4671: rimozione TipoCessionePrestazione per righe "No Merci" con Deduzione¶
Nelle fatture o note di credito con righe "No Merci" (servizi, spese accessorie) che presentano
una riga in "Deduzione", il tag <TipoCessionePrestazione> non viene piu' emesso.
Precedentemente, il programma impostava:
"AB"(sconto) secon-fl-segno = "-"econ-tipob1 = "S""AC"(premio) secon-fl-segno = "-"econ-tipob1 = "Q"
Questa logica e' stata commentata perche' il tag, pur non essendo obbligatorio, causava
problemi nella validazione da parte dei commercialisti. Ora per queste righe il campo
TipoCessionePrestazione viene sempre azzerato a spaces.
La logica originale per le righe "merci" standard (con segno -) resta invariata in
altri punti del programma dove TipoCessionePrestazione viene ancora valorizzato con
"AB" in base alle condizioni specifiche della riga.
Note¶
- Il sorgente e' molto esteso (~16.700 righe) a causa della complessita' dello schema FatturaPA e delle numerose casistiche (fatture, note di credito, autofatture, omaggi, ecc.).
- Il programma utilizza
mmsubw.cpy(subroutine), confermando che e' chiamato da COGSA3. - Il file COGTRANS ha un tracciato inline (non da copybook) con chiave primaria composta da bolla + progressivo e due chiavi alternate per ordinamento.
- La codifica Base64 e' usata per allegare documenti (PDF, immagini) direttamente nel file XML della fattura elettronica.