Vai al contenuto

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-wid
  • x61-agg-dag-to-descrizione-tipo1
  • x61-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) se con-fl-segno = "-" e con-tipob1 = "S"
  • "AC" (premio) se con-fl-segno = "-" e con-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.