Vai al contenuto

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)

  1. ctr-abil (controllo abilitazione) e apertura log di processo (gesdebug-apri-principale).
  2. Lettura parametri di lancio da util-agprg: se agprg-called = "AGPRG-CALLED" valorizza w-dc-called, w-dc-key, w-dc-fl-manuale; l'operazione agprg-ope (upper-case) va in w-dc-ope, agprg-esporta-tutto in w-dc-esporta-tutto.
  3. open-files, rd-azi, lettura data/ora di sistema.
  4. Gate azienda laboratorio: se az-ges-lo not = "S" termina subito (il processo riguarda solo le aziende con gestione laboratorio odontotecnico).
  5. Lettura configurazioni (x99-src-cfg in tab-config).
  6. Gate procedura: se tm-cfg-aglancio-attivo <> "S" termina.
  7. Determinazione tm-id-processo (da agprg-id-processo se passato, altrimenti k-id-processo = 143); tm-cfg-bin-tipo = "P" (PostgreSQL).
  8. Controlli generali: se tm-cfg-attiva-areaapp = "N" termina; se w-dc-ope = "ESPORTA-KEY" ma tm-cfg-agg-online <> "S" termina.
  9. Apertura tabelle DB (x-apri-tabelle-db); se fallisce, log errore e uscita.
  10. Se eseguito in modo schedulato/manuale (w-dc-called = " " o w-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". Per ESPORTA-KEY la direzione e' forzata a "E".
  11. 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:

  1. LODPNTES → ARPLODPNTES: legge/inizializza lo stato in APSTATOSYN (tabella ARPLODPNTES), imposta l'id sincro iniziale e la data/ora ultima esportazione, poi esegue b-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).
  2. LODPDFPR → ARPLODPDFPR: b-esportazione-pdfpr (loop pdfpr-10-loopb-esporta-record-pdfpr).
  3. LODPFSTD → ARPLODPFSTD: b-esportazione-pfstd (loop pfstd-10-loopb-esporta-record-pfstd).
  4. 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"), configurazione aglancio-attivo = "S" e attiva-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