COGL64 — Invio dati fatture al Sistema Tessera Sanitaria (STS)¶
Sorgente: cbl/cogl64.cbl | Program-ID: cogl64 | Tipo: interattivo a griglia (filtri + griglia paginata)
Menu: Lab.Odont. > Fatturazione > Invio dati a STS
Scopo¶
Gestisce l'invio telematico dei dati delle spese sanitarie al Sistema Tessera Sanitaria (STS) dell'Agenzia delle Entrate, per i laboratori odontotecnici. Il programma precarica dalle fatture i documenti da comunicare, li accumula in una tabella di stato dedicata (COGSTSTS), permette di visualizzarne lo stato di invio in griglia e di inviarli — singolarmente o in blocco — verso il web service STS tramite la subroutine COGL64S. Ogni comunicazione (inserimento, variazione, cancellazione, rimborso) viene tracciata in COGSTSDT. Gestisce il consenso/opposizione del cittadino, la cifratura del codice fiscale e il ritorno delle ricevute PDF.
File e tabelle¶
| File | Copybook | Accesso | Scopo |
|---|---|---|---|
| COGSTSTS | cogststs.cpy |
Lettura/scrittura, chiavi k02/k03 |
Stato invio STS per documento: stato invio, ultimo esito, protocollo, importo, consenso, dispositivo, doc rimborsato |
| COGSTSDT | (in cogl64.fd/select) |
Scrittura | Storico dettagliato delle chiamate al servizio (operazione, data/ora, esito, protocollo, errore) |
| COGGEANA | coggeana.cpy |
Lettura | Anagrafica: dati proprietario (fornitore tm-cfg-sts-pro-cod-for), P.IVA, codice fiscale |
| COGAPPOG | (via st-cogappog) |
Lettura sequenziale | Anagrafica appoggio clienti (filtro app-tipo-usl = "P" nel precaricamento) |
| COGFATTU | (via st-cogfattu, chiave k09) |
Lettura sequenziale per cliente/data | Fatture da comunicare |
| COGRACCO | cogracco.cpy (rinominata wac-), chiave k02 |
Lettura | Raccordi fattura↔bolla per risalire alla commessa |
| COGRACBB | cogracbb.cpy, chiave k02 |
Lettura sequenziale | Raccordi bolle (tipo CD commessa, RV reso) per commessa e note di accredito |
| LODCMAGG | (via rd-lodcmagg) |
Lettura | Dati fatturazione commessa laboratorio: codice fiscale, nome/cognome, consenso STS |
| outfil / inpfil | (in select) | I/O binario sequenziale | File di scambio per cifratura CF (input/output openssl) |
| impcli | impcli-rec |
Lettura line sequential | Import CSV codici fiscali cliente (impcli.csv, funzione "Carica IMPCLI") |
Programmi chiamati (CALL)¶
| Programma | Scopo |
|---|---|
| COGL64S | Subroutine di dialogo col web service STS (inserimento/variazione/cancellazione/rimborso/ricevutapdf). All'avvio viene testata la presenza con cogl64s-ope = "test" |
| COGL65 | Dettaglio documento STS (F8 sulla griglia): passa doc, commessa, CF, nome cliente |
| RNEWCONF | Lettura parametri di configurazione (gruppo fatturaz) |
| COPIAF | Copia file client↔server (per cifratura CF e ricevute PDF) |
| C$SYSTEM | Lancio sincrono comandi/batch di cifratura (openssl, base64, decode-to-pdf.bat) |
| DIALOGS | Menu a tasti funzione (invio singola voce, modifica stato) |
| GRIDADMN | Gestione/personalizzazione colonne griglia |
| COGU10W / COGU20W | Formattazione ed editing importi |
Copybook incluse¶
Working storage: feurtab.fd, cogfiles.cpy, cogl64.fd, cogl64.wrk, k-u10.cpy, acucobol.def/iscobol.def, k-personal.cpy, wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, l-copiaf.cpy, utildlg.cpy, cogracco.cpy (leading wac-), cogststs.cpy (leading wrkts-/wr2ts-), wgrid.cpy, utilncnf.cpy, utilgdad.cpy, utils52.cpy, utils65.cpy, utils88.cpy, utilu10.cpy, utilu20.cpy, utilcogl64s.cpy, utilcogl65.cpy
Linkage: wcont.cpy, u-copiaf.cpy, wcont1.cpy
Procedure division: grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, cogl64.prc, dtab.cpy, fscrol2.cpy, utilpggr.cpy, chiavi cogststs.k02, cogststs.k03, cogfattu.k09, cogracbb.k02, cogracco.k02
Logica di elaborazione¶
- Avvio (
apri): apre i file, carica la configurazione (x99-config), verifica la presenza della subroutineCOGL64Scon una chiamata di test. Sests-attivo = "N"esce con "Sistema Non Attivo". - Filtri (
a4,a-tm-*): l'operatore imposta stato invio (I/N/O/T=tutti), intervallo date documento e il flag "Precarico i dati?". - Precaricamento (
precarica-dati, se richiesto): scorreCOGAPPOG(clienti tipo USL "P"), poi le loroCOGFATTUnell'intervallo date. Per ogni fattura risale alla commessa viaCOGRACCO/COGRACBB, leggeLODCMAGGe crea/aggiorna il recordCOGSTSTS, impostando stato invio, importo, consenso, codice fiscale (cifrato), gestione note di accredito/rimborsi. - Griglia (
a-grid-inizio,a-grid): carica in griglia paginata i recordCOGSTSTSper la chiave selezionata (stato/data), mostrando stato invio, stato doc, ultimo invio/esito, protocollo, importo, cliente. - Azioni da griglia:
- F5 — invio singola voce con menu DIALOGS (inserimento / cancellazione / variazione / rimborso).
- F1 — modifica manuale dello stato di una voce (imposta Inviato/Non inviato/Opposizione/Opposizione rimborsato; F9 carica IMPCLI).
- F9 — invio di massa di tutti i non inviati (
esegui-invia-tutti), con logica per stato-doc (I/M/C/R) e gestione rimborsi. - F4 (solo operatore 888) — cancellazione e pulizia dati mostrati (
esegui-cancella-tutti). - F8 — dettaglio documento (COGL65).
- Cifratura CF (
get-encrypted-cf): produce il codice fiscale cifrato+base64 richiesto da STS, tramite comando openssl o batch, con scambio file client/server via COPIAF.
Paragrafi chiave¶
| Paragrafo | Scopo |
|---|---|
apri |
Inizializzazione, config, test presenza COGL64S, costruzione griglia |
x99-config |
Carica i 12 parametri STS del gruppo fatturaz via RNEWCONF |
carica-dati-proprietario |
Legge il proprietario (fornitore) e ne cifra il CF; legge il pincode da env STS-PINCODE |
precarica-dati |
Scansione fatture → creazione/aggiornamento record COGSTSTS |
cerca-commessa |
Risale alla commessa dalla bolla raccordata (COGRACBB tipo CD) |
set-stato-invio-sub-i |
Imposta forzatamente lo stato invio di una voce (F1) |
prepare-cogl64s-sub-i |
Prepara ed esegue la chiamata singola a COGL64S con box di esito |
call-cogl64s-sub-ststs |
Chiamata effettiva a COGL64S, scrittura COGSTSDT e aggiornamento COGSTSTS |
esegui-invia-tutti |
Invio di massa dei documenti non inviati |
esegui-cancella-tutti |
Cancellazione/pulizia di massa (operatore 888) |
get-encrypted-cf |
Cifratura del codice fiscale (openssl/batch + base64) |
decode-ricevuta-pdf |
Decodifica e copia della ricevuta PDF di STS |
parse-impcli |
Import CSV impcli.csv per aggiornare i CF dei clienti |
Parametri di configurazione (RNEWCONF, gruppo fatturaz)¶
| Chiave | Variabile | Scopo |
|---|---|---|
sts-attivo |
tm-cfg-sts-attivo |
"N" disattiva il programma |
sts-proprietario-cod-for |
tm-cfg-sts-pro-cod-for |
Codice fornitore proprietario (titolare invio) |
sts-prg-crypt |
tm-cfg-sts-prg-crypt |
Programma/batch di cifratura CF (openssl) |
sts-key-crypt |
tm-cfg-sts-key-crypt |
Certificato/chiave di cifratura |
sts-tipologia-di-spesa |
tm-cfg-sts-tipologia-spesa |
Tipologia spesa di default |
sts-id-dispositivo |
tm-cfg-sts-id-dispositivo |
ID dispositivo di default |
sts-folder-crypted |
tm-cfg-sts-folder-crypted |
Cartella file cifrati (server) |
sts-pro-cod-reg / sts-pro-cod-asl / sts-pro-cod-ssa |
tm-cfg-sts-pro-cod-* |
Codici regione/ASL/SSA del proprietario |
sts-tipo-url |
tm-cfg-sts-tipo-url |
Tipo URL del servizio (produzione/collaudo) |
sts-tipo-nac |
tm-cfg-sts-tipo-nac |
Tipo documento "nota di accredito" (per gestione rimborsi) |
Note¶
- Lo stato invio in
COGSTSTSassume i valoriI(inviato),N(non inviato),O(opposizione); lo stato docI/M/C/R(inserito/modificato/cancellato/rimborso) guida l'operazione da inviare. - La gestione note di accredito / rimborsi collega la nota (
fat-tip = tm-cfg-sts-tipo-nac) al documento rimborsato (ststs-doc-rimborsato): se hanno lo stesso importo non vengono trasmesse (impostate in opposizione), secondo indicazioni operative storiche annotate nel sorgente. - La funzione F4 di pulizia è riservata all'operatore
888. - La sezione
io-error-routè dichiarata vuota (exit).