Vai al contenuto

ARC013 - Archiviazione remota fatture XML

Sorgente: cbl/arc013.cbl | Tipo: Programma interattivo GUI + elaborazione batch (anche richiamabile via CALL) | Program-ID: ARC013

Menu:

  • Sistema > Archiviazione documentale

Scopo

Copia i file XML delle fatture elettroniche (attive e passive) dalle cartelle di lavoro locali a una cartella "server" di transito, per la loro archiviazione remota (archiviazione ottica documentale). Per ogni fattura elettronica non ancora archiviata individua il file XML prodotto in fase di fatturazione, ne verifica l'esistenza e lo copia rinominandolo con la chiave della fattura.

Il programma opera in due modalita':

  • Batch da menu (dep-tipo = "D"): scandisce tutte le fatture elettroniche presenti, mostra un contatore a video (fatture attive / passive elaborate) e, al termine, segnala eventuali anomalie tramite il log di debug consultabile.
  • Singola fattura (richiamato via CALL da un altro programma): elabora la sola fattura passata nei parametri di linkage (utilarc013.cpy), tipicamente per archiviare al volo una fattura appena emessa/ricevuta.

L'archiviazione avviene solo se la relativa classe di archiviazione ottica (fatture clienti / fatture fornitori) risulta configurata per l'archiviazione remota nell'anagrafica argomenti documentali (COGARGDO).


Struttura del programma

Modalita' di avvio (apri)

  1. z-99-init-program, lettura del parametro wo-parametro in dep-tipo ("D" = esecuzione da menu con maschera).
  2. Se i parametri di linkage indicano una chiamata da altro programma (arc013-called = k-program-id e arc013-caller valorizzato), imposta w-dc-called = "S" e memorizza tipo documento e chiave fattura in w-util-arc013.
  3. x99-confi (lettura configurazioni RNEWCONF), ctr-abil, avvio log di debug (gesdebug-loadconf / gesdebug-apri-principale), rd-azi, open-files, a2-cerca-classe-arc-ott.
  4. Se w-dc-called = "S": esegue elabora-singola, chiude il debug e termina.
  5. Altrimenti: apre la maschera "Archiviazione remota fatture XML" e attende l'interazione (paragrafo a4).

Elaborazione batch (a4 -> a1-01-loop)

  • Se dep-tipo = "D" chiede conferma ("Confermi Archiviazione remota fatture XML ?"): senza F3 termina.
  • Scandisce COGFTETS (testate fatture elettroniche) dall'inizio (st-cogftets-notmin + rdnxt-cogftets).
  • Filtra i record: considera solo ftets-doc-tip = "F" (attiva) o "P" (passiva); scarta i tipi documento di autofattura/integrazione TD16, TD17, TD18, TD19, TD28.
  • Legge la fattura in COGFATTU (per le attive con fat-tip/ann/num, per le passive con fat-chia1 da ftets-key-doc-area); se non trovata registra la segnalazione e prosegue.
  • Legge/crea i dati aggiuntivi in COGFATT2: se assente lo inserisce con fat2-fl-esportata a spazi.
  • Elabora solo le fatture non ancora esportate (fat2-fl-esportata a spazi oppure "E").
  • In base al tipo documento chiama b2-xml-attiva (attiva) o b3-xml-passiva (passiva).
  • Al termine (a1-01-ex): aggiorna i contatori a video, scrive nel log il totale elaborato e, se ci sono segnalazioni, apre la consultazione del log.

Elaborazione singola (elabora-singola)

Legge la fattura da w-arc013-fat, allinea/aggiorna COGFATT2 (azzera fat2-fl-esportata), quindi ricerca la testata elettronica in COGFTETS e invoca b3-xml-passiva (tipo "P") oppure b2-xml-attiva (tipo "F").

Copia del file XML (b2-xml-attiva / b3-xml-passiva)

Entrambi i paragrafi:

  1. Compongono il percorso sorgente del file XML combinando la cartella di output configurata e ftets-nome-assegnato:
  2. Attiva (b2): la cartella dipende da ftets-fte-tipo — canale PA (FPA/AFPA/APPA/NPA/NDPA/PPA) usa edi-output-dir, altrimenti la cartella B2B; per le fatture di consorzio (az-consorzi = "S") o documenti "C" il nome file e' diretto, altrimenti il percorso include sottocartelle AAAA/MM ricavate dalla data documento.
  3. Passiva (b3): usa la cartella backup input intermediario; se arc-fatt-passive = "P" il file gestito e' il .xml.pdf (sostituzione .xml.xml.pdf).
  4. Verificano l'esistenza del file (COPIAF operazione fileinfo); se manca registrano la segnalazione.
  5. Copiano il file (COPIAF operazione copy) nella cartella server di transito, rinominandolo in <path-temp>/<fat-chia1>.xml (minuscolo). Per le passive con arc-fatt-passive = "P" la destinazione diventa .pdf.
  6. Incrementano i contatori tm-nr-attive / tm-nr-passive e aggiornano il video ogni 100 elaborazioni.

L'archiviazione attiva viene eseguita solo se w-classe-arc-ott-c = "S" (classe fatture clienti abilitata all'archiviazione remota).

Ricerca classi archiviazione ottica (a2-cerca-classe-arc-ott)

Scandisce COGARGDO a livello "1" e legge il flag arg-archiviazione-remota per le classi k-arcott-classe-fatture-fornitori (→ w-classe-arc-ott-f) e k-arcott-classe-fatture-clienti (→ w-classe-arc-ott-c).


Tabelle e file

File logico Chiave / accesso Descrizione
FEURTAB - Tabella di sistema
COGFTETS primaria; secondaria .k06 (ftets-key-doc-area) Testate fatture elettroniche (tipo documento, tipo FTE, nome file assegnato, data)
COGFATTU fat-tip+fat-ann+fat-num / fat-chia1 Testate fatture (attive e passive)
COGFATT2 fat2-tip+fat2-ann+fat2-num Dati aggiuntivi fattura (flag esportata fat2-fl-esportata)
COGARGDO arg-livello+arg-classe Anagrafica argomenti/classi documentali (flag arg-archiviazione-remota)

COPY incluse

Working-Storage

arc013.wrk, arc013.imppredf-wrk, arc013.tm, l-copiaf.cpy, wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, utilncnf.cpy, utilimppredf.cpy, utildlg.cpy, utilgesdebug.cpy, utilgesstr.cpy, costanti-arcott.cpy

Linkage

wcont.cpy, u-copiaf.cpy, utilarc013.cpy, wcont1.cpy

Procedure Division

arc013.decla, arc013-01.scr (screen), grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, gesdebug.cpy, cogftets.k06, arc013.prc, arc013.imppredf


CALL a sottoprogrammi

Programma Scopo
COPIAF Verifica esistenza (fileinfo), copia (copy) ed eventuale cancellazione (delete) dei file XML tra postazione client e cartella server
RNEWCONF Lettura delle chiavi di configurazione (percorsi cartelle e opzioni)

Configurazioni RNEWCONF

Lette nel paragrafo x99-confi (pacchetto coge):

Gruppo Chiave Uso
arc-ott path-temp-fatture Cartella server di transito per i file XML archiviati (se vuota: TMP-DIR/park/fatture)
fatturaz edi-output-dir Cartella di output XML per il canale PA/EDI
fatturaz fte-cartella-output-b2b Cartella di output XML per il canale B2B (default = edi-output-dir se vuota)
fatturaz fte-cartella-bkp-input-altro-ges Cartella backup input "altro gestionale" (documenti tipo "C")
fatturaz fte-cartella-bkp-input-intermediario Cartella backup input intermediario (fatture passive)
arc-ott arc-fatt-passive Se "P", per le passive gestisce il PDF affiancato (.xml.pdf.pdf) anziche' l'XML

Riferimenti: arc-ott, fatturaz.


Note tecniche

  • Idempotenza: vengono considerate solo le fatture con fat2-fl-esportata a spazi o "E"; le fatture gia' archiviate sono saltate.
  • Filtro tipi documento: gli autoconsumi/integrazioni TD16TD19 e TD28 sono esclusi dall'archiviazione remota.
  • Percorso attive con sottocartelle data: per le fatture non di consorzio il percorso sorgente include l'anno e il mese della data documento (AAAA/MM), coerente con la struttura di output della fatturazione elettronica.
  • Variante fatture passive PDF (arc-fatt-passive = "P", modifica Mauro 16.10.2025): quando attiva, il file effettivamente copiato e' il PDF (.xml.pdf) e la destinazione assume estensione .pdf.
  • Segnalazioni: ogni anomalia (fattura non trovata, XML mancante, copia fallita) e' scritta nel log di debug (gesdebug-write-errore) e imposta c-segnalazioni = "S"; da menu, al termine, viene proposta la consultazione del log.
  • Il programma non aggiorna direttamente fat2-fl-esportata a valore "esportata": si limita a leggere/creare COGFATT2; l'effettivo avanzamento dello stato di archiviazione e' demandato ai processi a valle che consumano la cartella server di transito.