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)¶
- Alla prima invocazione apre i file (
open-files), legge la configurazione (x-configurazione) e accetta le informazioni di sistema. - Imposta l'eventuale file di log (solo se
tm-cfg-debug = "S"):cogzs0-<data>-<ora>-p<postazione>-o<operatore>.txtinext-log-dir. - Legge i dati della commessa:
LODCMTES(testata commessa,lct-rec),LODPNTES(testata piano,lpt-rec),LODDESCR(descrizione "V0",lde-rec). a1-estrai-desc-disp-prev— costruisce la descrizione dispositivo e la tabella materiali/lotti prevalenti, e scrive i tagLOD-DESC-DISP-PREVeLOD-LOTTI-PREV.
Calcolo prestazioni/materiali "prevalenti" (a1-estrai-desc-disp-prev)¶
- Scorre
LODPNMAT(lmt-rec) della commessa (a1-elabora-lodpnmat): per ogni riga selezionata (lmt-fl-sel = "S"olmt-fl-aut = "A") distingue prestazioni (lmt-tip = "P") e materiali (lmt-tip = "M"). - Prestazioni:
a1-aggiungi-prestazioneverifica la prevalenza suLODMPDET(mpd-prevalente = "S"), legge la descrizione daCOGMERAP(map-desc+map-desc-short) e le accoda alle tabelletab-prest-prevalenti(tpp-*) etab-des-prest-prevalenti(tdp-*, deduplicate). - Materiali su fase: legge
LODPNRIG/LODCMRIGper reparto e data e li accoda cona12-aggiungi-materiale-a-tabella(filtro prevalenza suLODMPDET). - Per ogni prestazione prevalente cerca i materiali abbinati su
COGDBAGG(dbg-tip = "L",a11-cerca-materiali-su-prestazione). - Aggiunge i materiali della gestione "file denti" da
LODCMMTA(mpa-rec,mpa-prov = "C"). - Compone
LOD-DESC-DISP-PREVconcatenando le descrizioni prestazioni (tdp-des, separatore"; "); se vuota usa la descrizione del piano/LODDESCR. - Compone
LOD-LOTTI-PREVscorrendo la tabella materiali/lotti (tmp-*): per ogni merce legge la descrizione daCOGMERAPe, se necessario, cerca il lotto (a13-cerca-lotto→CRMANANF/CRMANAGRper il cliente fittizio del reparto,KEYMOMAG/COGMOMAG/COGMOVLT/COGMERLTper 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:
- Scorre
LODMATSE(lmse-rec) perlmse-commessa = zs0-commessa(loopcerca-10-loop), saltando le righe senza merce (lmse-merce = " 00000"). - Per ogni merce legge
LODINFALper chiave 3 (lodinfal.k03) connfa-merce = lmse-merce,nfa-info = tm-cfg-info-allegati-merci,nfa-prog = low-values: se trova il record (nfa-merce/nfa-infocoincidenti) ne estrae la descrizione allegatonfa-des. - 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. - 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-prevalentediLODMPDET. - 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. |