Vai al contenuto

COGZS0 - Estrazione informazioni allegati/lotti per WORDMDL (laboratorio)

Sorgente: cbl/cogzs0.cbl | Tipo: Subroutine (CALL) | Program-ID: COGZS0

Menu: non presente in prog.txt (subroutine richiamata dai programmi di stampa documenti del laboratorio odontotecnico).


Scopo

Subroutine per la gestione laboratori odontotecnici che, a partire da una commessa, calcola e deposita due informazioni testuali nei modelli di stampa Word/AreaReport tramite WORDMDL:

  • LOD-DESC-DISP-PREV — descrizione del dispositivo, composta dalle prestazioni "prevalenti" della commessa (con eliminazione dei duplicati).
  • LOD-LOTTI-PREV — descrizione dei materiali/lotti "prevalenti" della commessa; con la personalizzazione TASK-1245 puo' invece riportare le informazioni allegati delle merci (vedi sotto).

E' usata anche per estrazioni dati particolari per il cliente Wilocs (az-personal = "WI").


Interfaccia di chiamata (util-zs0 / utilzs0.cpy)

Campo Tipo Direzione Significato
zs0-commessa 9(10) IN Codice commessa di laboratorio da elaborare
filler x(500) Riservato

La subroutine usa mmsubw.cpy (z-99-init-subroutine / z-99-exit-subroutine) e non gestisce maschere proprie: produce solo i tag per WORDMDL.


Flusso principale (screen-0)

  1. Alla prima invocazione apre i file (open-files), legge la configurazione (x-configurazione) e accetta le informazioni di sistema.
  2. Imposta l'eventuale file di log (solo se tm-cfg-debug = "S"): cogzs0-<data>-<ora>-p<postazione>-o<operatore>.txt in ext-log-dir.
  3. Legge i dati della commessa: LODCMTES (testata commessa, lct-rec), LODPNTES (testata piano, lpt-rec), LODDESCR (descrizione "V0", lde-rec).
  4. a1-estrai-desc-disp-prev — costruisce la descrizione dispositivo e la tabella materiali/lotti prevalenti, e scrive i tag LOD-DESC-DISP-PREV e LOD-LOTTI-PREV.

Calcolo prestazioni/materiali "prevalenti" (a1-estrai-desc-disp-prev)

  1. Scorre LODPNMAT (lmt-rec) della commessa (a1-elabora-lodpnmat): per ogni riga selezionata (lmt-fl-sel = "S" o lmt-fl-aut = "A") distingue prestazioni (lmt-tip = "P") e materiali (lmt-tip = "M").
  2. Prestazioni: a1-aggiungi-prestazione verifica la prevalenza su LODMPDET (mpd-prevalente = "S"), legge la descrizione da COGMERAP (map-desc + map-desc-short) e le accoda alle tabelle tab-prest-prevalenti (tpp-*) e tab-des-prest-prevalenti (tdp-*, deduplicate).
  3. Materiali su fase: legge LODPNRIG/LODCMRIG per reparto e data e li accoda con a12-aggiungi-materiale-a-tabella (filtro prevalenza su LODMPDET).
  4. Per ogni prestazione prevalente cerca i materiali abbinati su COGDBAGG (dbg-tip = "L", a11-cerca-materiali-su-prestazione).
  5. Aggiunge i materiali della gestione "file denti" da LODCMMTA (mpa-rec, mpa-prov = "C").
  6. Compone LOD-DESC-DISP-PREV concatenando le descrizioni prestazioni (tdp-des, separatore "; "); se vuota usa la descrizione del piano/LODDESCR.
  7. Compone LOD-LOTTI-PREV scorrendo la tabella materiali/lotti (tmp-*): per ogni merce legge la descrizione da COGMERAP e, se necessario, cerca il lotto (a13-cerca-lottoCRMANANF/CRMANAGR per il cliente fittizio del reparto, KEYMOMAG/COGMOMAG/COGMOVLT/COGMERLT per il movimento di uscita e il lotto interno).

Dal 13/02/2026, per Wilocs (az-personal = "WI") la stampa del lotto e' soppressa nella concatenazione (- lotto: ... non viene aggiunto).


Esclusione lotti per cliente (CRMS06, info 19)

Prima di scrivere il tag LOD-LOTTI-PREV, il programma legge l'informazione CRM n.19 (k-inf-escludo-lotti) del cliente (lct-med) tramite CRMS06:

  • Wilocs (az-personal = "WI"): l'info 19 attiva (crms06-dato = "1") fa stampare il lotto; se non attiva, registra a log l'esclusione e scrive il tag senza materiali/lotti.
  • Tutti gli altri: l'info 19 attiva esclude la stampa lotti (svuota w-xml-info); se non attiva, scrive il tag normalmente.

TASK-1245 — Informazioni allegati delle merci da LODMATSE

Quando la configurazione e' abilitata (odonto/modo-materiali-allegati = "A" e odonto/info-allegati-merci valorizzata), il contenuto del tag LOD-LOTTI-PREV non e' la descrizione materiali/lotti standard, ma le descrizioni allegati delle merci della commessa. La logica e' nel paragrafo cerca-lodmatse:

  1. Scorre LODMATSE (lmse-rec) per lmse-commessa = zs0-commessa (loop cerca-10-loop), saltando le righe senza merce (lmse-merce = " 00000").
  2. Per ogni merce legge LODINFAL per chiave 3 (lodinfal.k03) con nfa-merce = lmse-merce, nfa-info = tm-cfg-info-allegati-merci, nfa-prog = low-values: se trova il record (nfa-merce/nfa-info coincidenti) ne estrae la descrizione allegato nfa-des.
  3. Deduplica le descrizioni gia' considerate tramite la tabella tab-nfa-des (wt-nfa-des, max 99 elementi): se la descrizione e' nuova la aggiunge, altrimenti salta alla merce successiva.
  4. Accoda le descrizioni distinte in w-xml-info, separate da "; ".

In pratica, il documento di stampa riporta l'elenco (senza ripetizioni) delle informazioni allegati associate alle merci effettivamente selezionate per la commessa, anziche' i lotti.


File e tabelle

File Copybook Uso
LODCMTES (lodfiles) Testata commessa (lct-rec): piano, cliente/medico (lct-med)
LODPNTES (lodfiles) Testata piano (lpt-rec): descrizione
LODDESCR (lodfiles) Descrizioni estese (lde-rec, tipo "V0")
LODPNMAT (lodfiles) Righe materiali/prestazioni del piano (lmt-rec)
LODPNRIG / LODCMRIG (lodfiles) Fasi/righe commessa: reparto, data inizio
LODCMMTA (lodfiles) Materiali "file denti" (mpa-rec)
LODMPDET (lodfiles) Dettaglio merce: flag prevalente (mpd-prevalente)
COGMERAP (lodfiles) Anagrafica merce-AP: descrizioni (map-desc, map-desc-short, map-reparto)
COGDBAGG (lodfiles) Abbinamenti materiali-prestazione (dbg-tip = "L")
CRMANANF / CRMANAGR crmananf.k02 Nominativi CRM (cliente fittizio del reparto, info 18)
KEYMOMAG / COGMOMAG keymomag.k02 Movimenti magazzino (ricerca uscita per merce/cliente)
COGMOVLT / COGMERLT (lodfiles) Lotti di movimento / lotti merce (lotto interno → lotto)
LODMATSE lodmatse.* (TASK-1245) Materiali generici selezionati per la commessa (lmse-rec)
LODINFAL lodinfal.*, lodinfal.k03 (TASK-1245) Informazioni allegati merce (nfa-merce, nfa-info, nfa-des)
logfile locale Log di debug (solo se tm-cfg-debug = "S")

Chiamate a sottoprogrammi

Programma Scopo
WORDMDL Deposito dei tag XML (Aggiungi-XML) nei modelli di stampa
CRMS06 Lettura informazione CRM n.19 (esclusione lotti) del cliente
RNEWCONF Lettura configurazioni (x-configurazione)

Configurazioni (RNEWCONF, x-configurazione)

Gruppo Chiave Variabile Effetto
COGESYS DEBUG tm-cfg-debug "S" = scrive il file di log di debug
odonto modo-materiali-allegati tm-cfg-modo-materiali-allegati "A" = il tag LOD-LOTTI-PREV riporta le info allegati delle merci (TASK-1245)
odonto info-allegati-merci tm-cfg-info-allegati-merci Codice informazione allegati (nfa-info) da leggere su LODINFAL

Note

  • E' una subroutine: nessuna pagina di documentazione utente (non a menu).
  • Il calcolo delle prestazioni/materiali "prevalenti" si basa sul flag mpd-prevalente di LODMPDET.
  • Programma affine: COGZS9 - Generazione XML stampe laboratorio.

Storico modifiche

Data Descrizione
2026-06-30 Prima documentazione.
2026-06-29 TASK-1245: nuove configurazioni odonto/modo-materiali-allegati e odonto/info-allegati-merci. Quando modo-materiali-allegati = "A" e info-allegati-merci e' valorizzata, il tag LOD-LOTTI-PREV viene composto (paragrafo cerca-lodmatse) scorrendo LODMATSE per la commessa e leggendo le descrizioni allegati delle merci da LODINFAL (chiave 3), con deduplica via tab-nfa-des. Aggiunta la copy lodinfal.k03.