Vai al contenuto

COGP41L - Stampa fattura (PCL-5)

Descrizione

Stampa fattura nella versione standard in linguaggio PCL-5. Sotto-programma di stampa richiamato dalla catena di fatturazione. Non e' a menu utente diretto: viene invocato dai programmi di emissione fattura (COGV60*, COGV82*) come worker di stampa.

Storico modifiche

Disabilitata la soppressione del riferimento intervento in presenza di descrizioni variabili

E' stato asteriscato (commentato, "RIGHE ASTERISCATE PER SCAZZO") il blocco che, per i DDT collegati a un intervento di assistenza esterno (az-assist = "S"), cercava le descrizioni variabili tramite cerca-asncnfat / COGSA6 e, se il testo conteneva "ntervento" con riscontro su asnindmg, impostava w-des-variabile-trovato = "S". E' stata inoltre disattivata la condizione w-des-variabile-trovato = "N" nel test che scrive il riferimento all'intervento.

Effetto: il riferimento all'intervento viene ora scritto sul documento ogni volta che non esiste un riferimento asncnfat (w-asncnfat-trovato = "N"), indipendentemente dalla presenza di descrizioni variabili. La logica precedente (introdotta il 05.04.2017, rivista il 07.07.2025) sopprimeva il riferimento in presenza di descrizioni variabili e causava la mancata stampa del riferimento all'intervento in casi legittimi; per questo e' stata disabilitata.

A corredo, il contatore delle descrizioni variabili wni viene ora azzerato (move zero to wni) prima della ricerca cerca-asncnfat, per evitare che un valore residuo di una riga precedente influenzi il conteggio.

2026-06-30 - TASK-5356: cliente "Privato Consumatore" senza Partita IVA in fattura

Nel ramo di costruzione dell'intestazione documento che valorizza i campi ts5-piva e ts5-cod-fis (dati anagrafici dell'intestatario), e' stato aggiunto un controllo: se il cliente e' marcato come Privato Consumatore (ana-privato = "P"), il campo ts5-piva viene azzerato (move spaces to ts5-piva) anche quando l'anagrafica riporta una partita IVA significativa. Il codice fiscale (ts5-cod-fis) continua invece a essere stampato.

       if ana-privato = "P"
          move spaces       to ts5-piva
       end-if

Effetto: per i clienti privati la fattura non espone la Partita IVA (che per un consumatore finale non deve comparire), evitando incongruenze con l'anagrafica. Il controllo lato fatturazione che segnala l'anomalia all'operatore e' in COGV60NO (stessa TASK-5356).

2026-06-09 - Config prntstfatt / dicit-cortesia con valore "N" sopprime la cortesia SDI

Aggiunto un quarto controllo (oltre ai tre esistenti: tipo documento speciale, cliente estero non San Marino, prefattura) sul flag w-dicit-for-xml che attiva la "dicitura di cortesia di invio allo SDI" sul tracciato XML:

       if tm-cfg-dicit-cortesia = "N"
           move "N" to w-dicit-for-xml
       end-if

La configurazione prntstfatt / dicit-cortesia era gia' letta dal programma in altri due punti (assegnazione dichiarazione di intento e ramo di stampa "C" = cortesia). Con questa modifica un valore esplicito "N" blocca la dicitura anche sul ramo XML generale, indipendentemente dagli altri criteri.

2026-05-29 - TASK-5146: codice valuta a 3 caratteri in totale fattura (PU6525)

In presenza di valuta estera, la stringa del totale fattura (etichetta PCL PU6525,…;LB <valuta> #;) usava il codice valuta a 2 caratteri (fat-currency). Per valute come GBP, JPY o altre con sigla a 3 caratteri questo era insufficiente.

La logica e' stata cambiata in:

  1. Lettura di cogtabel con euta-tipo = 56 (tabella sigle valute estese) usando fat-currency come chiave;
  2. Se la sigla viene trovata, viene usato euta-ve-sigla (3 caratteri) come etichetta valuta;
  3. Se la sigla non viene trovata, si usa fat-currency come fallback (la riga viene ricostruita in euta-ve-sigla per mantenere uniforme la stringa).

La modifica e' confinata al ramo when other dell'EVALUATE che genera l'etichetta del totale fattura per le valute diverse da Euro.

2026-04-10 - TASK-4523: bolla con righe contenitore, ricalcolo prezzi errato

Per bolle con righe contenitore (trs3-moa-fl-contenitore = 'S') quantita' 1, in casi specifici di arrotondamenti il prezzo risultava diverso dall'importo (con pre-no-sco = prezzo e pre-no-sco != importo). La stampa esponeva quindi un prezzo unitario non coerente con l'importo finale.

Aggiunto controllo prima del trasferimento dati alla riga di stampa: se la riga e' "contenitore" con quantita' 1 e si rileva la discrepanza, trs3-frg-pre-no-sco, trs3-frg-prezzo, wid-pre-no-sco e wid-prezzo vengono forzati a trs3-frg-importo, rendendo prezzo unitario e importo coincidenti.

Tabelle utilizzate

Tabella Accesso Descrizione
FEURTAB Lettura Tabella euristica parametri
COGTRANS Lettura Tabella di transito (records di lavoro)
COGTABEL Lettura Tabella euristica; usata anche con euta-tipo = 56 per sigle valute estese (vedi sopra)
LODTMDES, LODTRDES Lettura Tabelle descrizione laboratorio (per varianti laboratorio della fattura)

Note

  • La copybook cogp41l.select definisce gli assignments dei file
  • Il programma fa parte della famiglia COGP41* di varianti di stampa fattura (COGP41F formato XYZ, COGP41M MR, COGP41SI, COGP41TS, ecc.)

Casistica problemi noti

Codice valuta a 3 caratteri sul totale fattura di cortesia (2026-06-10)

  • Sintomo: La stampa fattura di cortesia esponeva il codice valuta a 2 caratteri (fat-currency) sul totale finale; valute come GBP, JPY o altre sigle a 3 caratteri non venivano stampate correttamente.
  • Causa: Il ramo when other dell'EVALUATE che genera l'etichetta del totale fattura per valute non Euro usava direttamente fat-currency (2 char).
  • Correzione: Lettura di cogtabel con euta-tipo = 56 per ottenere euta-ve-sigla (3 char); fallback su fat-currency se la sigla non e' presente in tabella. Modifica tracciata come TASK-5146.
  • Riferimento: dettaglio bug | ClickUp 869dc2jfz

Partita IVA stampata per clienti "Privato Consumatore" (2026-07-03)

  • Sintomo: la stampa fattura esponeva la Partita IVA anche per clienti marcati "Privato Consumatore", per i quali non deve comparire.
  • Causa: il campo ts5-piva veniva valorizzato dai dati anagrafici indipendentemente dal flag Privato Consumatore.
  • Correzione: nel ramo che valorizza i dati dell'intestatario, se ana-privato = "P" il campo ts5-piva viene azzerato (move spaces to ts5-piva); il codice fiscale (ts5-cod-fis) continua a essere stampato. L'avviso all'operatore sull'incongruenza anagrafica e' gestito da COGV60NO (stessa TASK-5356).
  • Riferimento: dettaglio bug | ClickUp 869dq1zmq

Numero intervento e diciture errate su fatture con piu' interventi (2026-07-31)

  • Sintomo: su fatture con piu' interventi il numero intervento veniva esposto solo sul primo intervento (con il luogo intervento spostato a destra), oppure la dicitura "Riferimento Vs.ordine:" veniva stampata due volte.
  • Causa: una modifica del 06/08/2025 (aggiunta per la ricerca delle descrizioni variabili abbinate ai DDT di assistenza, marcatore/label 160726) non azzerava il contatore interventi wni tra un intervento e il successivo; dal secondo intervento in poi l'esposizione andava in errore.
  • Correzione: ripristinato l'azzeramento di wni per ciascun intervento e commentate (asteriscate) le righe della modifica del 06/08/2025 (label 160726) causa del problema. Rilasciato a Valle Service e Array.
  • Riferimento: dettaglio bug | ClickUp 869e4be63