SWN143 - Esportazione Piani di Fabbricazione¶
Sorgente: cbl/swn143.cbl | Program-ID: SWN143 | Tipo: Subroutine di sincronizzazione (solo esportazione)
Id processo: 143 Nome processo / tabelle stato: ARPLODPNTES, ARPLODPDFPR, ARPLODPFSTD
Scopo¶
Esporta i Piani di Fabbricazione del laboratorio odontotecnico dal gestionale verso le tabelle APP (database KPN/AreaGate). In un'unica esecuzione il programma sincronizza tre archivi correlati:
| AREA (gestionale) | AREAGATE (APP) | Contenuto |
|---|---|---|
| LODPNTES | ARPLODPNTES | Testata del piano di fabbricazione |
| LODPDFPR | ARPLODPDFPR | Righe/dettaglio del piano (prestazioni e componenti) |
| LODPFSTD | ARPLODPFSTD | Fasi standard associate al piano |
Il programma gestisce solo l'esportazione (nessuna importazione: i paragrafi c-importazione/c1-importa/c2-cancella sono presenti ma non operativi). Per ciascuna delle tre tabelle mantiene uno stato di sincronizzazione e un id sincro distinto su APSTATOSYN, cosi' che l'importazione lato API possa avvenire in modo incrementale.
A differenza di SWN142 (esportazione differenziale via LOGAGREC), SWN143 esegue una scansione completa degli archivi sorgente ad ogni ciclo: il sorgente segnala esplicitamente che il giro non e' ottimizzato per la mancanza di una chiave diretta su data/ora di aggiornamento.
File e tabelle¶
| File/Tabella | Modalita' | Descrizione |
|---|---|---|
| FEURTAB | I-O | Tabella generale Eurosystem (nomi fisici file, dati azienda) |
| LODPNTES | Input | Testate piani di fabbricazione (sorgente) |
| LODPDFPR | Input | Righe/dettaglio piani di fabbricazione (sorgente) |
| LODPFSTD | Input | Fasi standard (sorgente) |
| ARPLODPNTES | I-O (DB) | Testate piani su APP (destinazione) |
| ARPLODPDFPR | I-O (DB) | Righe piani su APP (destinazione) |
| ARPLODPFSTD | I-O (DB) | Fasi standard su APP (destinazione) |
| APSTATOSYN | I-O (DB) | Stato sincronizzazione, una riga per ciascuna tabella APP |
| ARPSTPRC | Input (DB) | Parametri processo (limiti record/errori, direzione) |
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
swn143.select, .fd, .wrk, .prc, .decla |
Definizioni generate da Screens |
cogfiles.cpy |
Struttura FEURTAB |
k-tipi-cogtabel.cpy |
Costanti tipi tabella |
costanti-sync.cpy |
Costanti sincronizzazione |
wstato.cpy, wgrave.cpy, wopenf.cpy, wnscr.cpy |
Working standard |
cogazien.cpy |
Dati azienda (verifica az-ges-lo) |
utilswgets.cpy |
Utility sincronizzazione / accesso tabelle DB |
utilgesstr.cpy |
Utility stringhe |
utilgesdebug.cpy, gesdebug.cpy |
Log di processo |
utilncnf.cpy |
Configurazioni RNEWCONF |
utilagprg.cpy |
Linkage parametri lancio (util-agprg) |
mmsubw.cpy |
Framework subroutine (z-99-init/exit-subroutine) |
Costanti di processo¶
78 k-id-processo value 143.
78 k-tabella-statosyn-pntes value "ARPLODPNTES".
78 k-tabella-statosyn-pdfpr value "ARPLODPDFPR".
78 k-tabella-statosyn-pfstd value "ARPLODPFSTD".
L'area tab-maschera mantiene tre id sincro separati (tm-id-sincro-pntes, tm-id-sincro-pdfpr, tm-id-sincro-pfstd) e i quattro contatori standard (tm-r-let, tm-r-agg, tm-r-esp, tm-r-err).
Logica di elaborazione¶
Inizializzazione (m-00)¶
ctr-abil(controllo abilitazione) e apertura log di processo (gesdebug-apri-principale).- Lettura parametri di lancio da
util-agprg: seagprg-called = "AGPRG-CALLED"valorizzaw-dc-called,w-dc-key,w-dc-fl-manuale; l'operazioneagprg-ope(upper-case) va inw-dc-ope,agprg-esporta-tuttoinw-dc-esporta-tutto. open-files,rd-azi, lettura data/ora di sistema.- Gate azienda laboratorio: se
az-ges-lo not = "S"termina subito (il processo riguarda solo le aziende con gestione laboratorio odontotecnico). - Lettura configurazioni (
x99-src-cfgintab-config). - Gate procedura: se
tm-cfg-aglancio-attivo <> "S"termina. - Determinazione
tm-id-processo(daagprg-id-processose passato, altrimentik-id-processo = 143);tm-cfg-bin-tipo = "P"(PostgreSQL). - Controlli generali: se
tm-cfg-attiva-areaapp = "N"termina; sew-dc-ope = "ESPORTA-KEY"matm-cfg-agg-online <> "S"termina. - Apertura tabelle DB (
x-apri-tabelle-db); se fallisce, log errore e uscita. - Se eseguito in modo schedulato/manuale (
w-dc-called = " "ow-dc-fl-manuale = "S"), lettura record processo da ARPSTPRC per ottenere limiti (tm-limita-errori,tm-limita-record) e direzione (tm-direzione);fl-processo-attivo = "S". PerESPORTA-KEYla direzione e' forzata a"E". - Se
tm-direzione = "T"o"E"→b-esportazione; a fine ciclo, log del riepilogo contatori.
Chiusura (fine / z-chiudi)¶
Chiude il processo (x-chiudi-processo) solo se era stato aperto, scrive "Fine processo" sul log, chiude i file e — se il DB era stato aperto in questo processo (fl-dbpg-kpn-aperto-qui = "S") — chiude le tabelle DB, poi exit program.
Esportazione (b-esportazione)¶
Orchestratore che elabora in sequenza le tre tabelle e le relative pulizie:
- LODPNTES → ARPLODPNTES: legge/inizializza lo stato in APSTATOSYN (tabella
ARPLODPNTES), imposta l'id sincro iniziale e la data/ora ultima esportazione, poi esegueb-esportazione-completa(scansione completa LODPNTES). Al termine riscrive lo stato su APSTATOSYN (data/ora ultima sincronizzazione se non e' un'esportazione per chiave, id sincro sempre). - LODPDFPR → ARPLODPDFPR:
b-esportazione-pdfpr(looppdfpr-10-loop→b-esporta-record-pdfpr). - LODPFSTD → ARPLODPFSTD:
b-esportazione-pfstd(looppfstd-10-loop→b-esporta-record-pfstd). - Pulizie:
b-pulizia-pntes,b-pulizia-pdfpr,b-pulizia-pfstd— allineamento/cancellazione logica sulle tabelle APP dei record non piu' presenti nel gestionale.
Esportazione singola tabella¶
Ogni flusso (b-esporta-record, b-esporta-record-pdfpr, b-esporta-record-pfstd):
- confronta il record sorgente con l'eventuale record gia' presente sulla tabella APP (aree di confronto
tm-dati-pntes,tm-dati-pdfpr,tm-dati-pfstd); - inserisce o aggiorna il record APP assegnando un nuovo id sincro crescente prelevato atomicamente da APSTATOSYN;
- aggiorna i contatori
tm-r-let/tm-r-agg/tm-r-esp/tm-r-err.
Pulizia (b-pulizia-*)¶
Per ciascuna tabella APP, la pulizia scandisce i record esistenti e, tramite i paragrafi b-cancella-logica-pntes / b-cancella-logica-pdfpr / b-cancella-logica-pfstd, marca come cancellati (con nuovo id sincro) i record che non hanno piu' riscontro nel gestionale, cosi' che l'importazione lato APP li recepisca come rimossi.
Contatori¶
| Contatore | Significato |
|---|---|
tm-r-let |
Record letti (sorgente) |
tm-r-agg |
Record da esportare (variati) |
tm-r-esp |
Record effettivamente esportati su APP |
tm-r-err |
Record errati / cancellati logicamente |
Il riepilogo viene scritto sul log a fine ciclo: "Record letti: ...; da esportare: ...; esportati: ...; errati: ...".
Configurazioni¶
| Gruppo | Parametro | Uso |
|---|---|---|
| abilita | attiva-areaapp | Attivazione sincronizzazione |
| areaapp | cod-azienda | Codice azienda |
| areaapp | db-log-level | Livello log connessione DB |
| areaapp | agg-postgres-online | Sincronizzazione online (per ESPORTA-KEY) |
| areaapp | aglancio-attivo | Attivazione procedura schedulata |
Note¶
- Il programma e' solo esportazione: il ramo di importazione e' predisposto ma non implementato.
- Prerequisiti di esecuzione: azienda con gestione laboratorio (
az-ges-lo = "S"), configurazioneaglancio-attivo = "S"eattiva-areaapp <> "N". - L'esportazione avviene per scansione completa dei tre archivi (giro non ottimizzato per la mancanza di una chiave data/ora di aggiornamento su LODPNTES/LODPDFPR/LODPFSTD).
- Ogni tabella APP ha uno stato di sincronizzazione e un id sincro indipendenti su APSTATOSYN, tutti relativi allo stesso
id-processo = 143. - Il tipo binario e' fissato a
"P"(PostgreSQL) e le tabelle DB vengono aperte una sola volta prima di qualsiasi operazione (l'ordine configurazioni → apertura DB → elaborazione e' obbligatorio, altrimenti le operazioni su DB falliscono). - Puo' essere lanciato da AGLANCIO (schedulazione), da GESSTPRC (manuale) o in tempo reale con operazione
ESPORTA-KEY.
Documentazione tecnica generata -- 2026-07-15