COGZ50 -- Stato Commessa (Laboratorio Odontotecnico)¶
Sorgente: cbl/cogz50.cbl | Tipo: Programma interattivo a griglia (testata + dettaglio fasi) | Program-ID: COGZ50
Menu:
- Lab.Odont. > Operativo > Stato Commessa
- Clinica > Gestione clinica > Commessa studio
Scopo¶
E' lo strumento centrale di gestione del ciclo di vita di una commessa di laboratorio odontotecnico. Visualizza un riassunto dello stato di avanzamento della commessa (cosa e' richiesto, cosa e' stato eseguito, a che punto e' la lavorazione) sotto forma di griglia di fasi, e funge da hub per lanciare i programmi che gestiscono le singole fasi (prescrizione, progetto, preparazione, preventivo, avanzamento, sub-fornitura, documento accompagnatorio, allegati, etichettatura, certificato di garanzia, archiviazione, ecc.).
Il programma identifica la commessa tramite prescrizione (studio/paziente/progressivo) oppure tramite numero commessa, ricostruisce lo stato leggendo numerosi archivi del laboratorio, e presenta una griglia di voci con la rispettiva descrizione e valore (Eseguita, In corso, Sospesa, Chiusa, Evasa, Richiesta, ecc.). Premendo Invio su una voce viene lanciato il programma corrispondente.
Puo' essere richiamato in modalita' standalone (da menu) oppure come sottoprogramma (campo z50-called = "COGZ50-CALLED"), con commessa/prescrizione gia' impostate dal chiamante (es. da COGZD1).
Interfaccia (linkage)¶
Il programma riceve stringhe (linkage standard wcont/wcont1) e usa l'area di interscambio utilz50.cpy (util-z50):
| Campo | Tipo | Descrizione |
|---|---|---|
z50-called |
x | "COGZ50-CALLED" se invocato come sottoprogramma |
z50-caller |
x(8) | Program-ID del chiamante |
z50-commessa |
x(10) | Numero commessa da caricare |
z50-prescrizione |
studio/paziente/pro | Chiave prescrizione |
z50-self-call |
x | Impostato a "S" per ri-richiamarsi (flusso commessa-fast da COGZD1) |
I dati ricevuti vengono copiati in w-dati-called (w-dc-called, w-dc-caller, w-dc-commessa, w-dc-prescrizione).
Struttura della maschera¶
La form (cogz50-01.scr) e' organizzata in quattro aree:
| Area | Contenuto |
|---|---|
| Barra strumenti | Pulsanti custom (contestuali) caricati da bitmap labodonto, labodonto2, varie, clipot |
| Testata | Campi identificativi commessa (tm-cli, tm-paziente, tm-pro, tm-num, dottore, date, data spedizione, RNC, blocco amministrativo) |
| Dettaglio | Descrizione e valore della voce selezionata in griglia (e-tm-descr, e-tm-valore) |
| Griglia | e-tm-tab -- elenco delle fasi (tab-voci, max k-td-voci-size = 16 voci) |
La griglia e' gestita tramite GRIDADMN (personalizzazione colonne) e il sottoprogramma di gestione campi testata COGS98W (util-s98).
Voci della griglia (tab-voci)¶
| Indice | Voce | Stato derivato da |
|---|---|---|
| 1 | Prescrizione | sempre "Eseguita" |
| 2 | Pre-progettazione | lcg-fl-fase-pre-prog (solo se tm-cfg-modalita-prog = "C") |
| 3 | Stesura Progetto | lpm-fl-progetto, lct-fl-prg |
| 4 | Preparazione Commessa | lpm-stato (A/U/C/F/E) |
| 5 | Stesura Preventivo | lpm-fl-preventivo, raccordo COGRACBB tipo "CV" |
| 6 | Stampa Fasi di Lavorazione | lct-fl-sta |
| 7 | Avanzamento Commessa | lpm-stato (In corso/Sospesa/Chiusa/Evasa/Presso fornitore/Bloccata) |
| 8 | Sub-fornitura | lpm-stato = "F" o ricerca LODSUBFR chiuse |
| 9 | Creazione Documento Accomp. | raccordo COGRACBB tipo "CD" |
| 10 | Allegati | lct-fl-all |
| 11 | Etichettatura | lct-fl-eti |
12 (k-td-voce-eti-disp-alt) |
Etichetta alternativa | lct-fl-eti (solo se tm-cfg-eti-disp-alt = "S") |
13 (k-td-voce-cert-gar) |
Stampa Certificato Garanzia | lcg-fl-cert-gar (solo se tm-cfg-zd7-stampa = "S") |
14 (k-td-voce-pdf-standard) |
Creazione Piano Standard | lct-fl-std |
15 (k-td-voce-arc-doc) |
Archiviazione Documenti | lct-fl-arc |
16 (k-td-voce-doc-mag) |
Documenti di magazzino | solo se tm-cfg-scarico-automatico = "S" |
TASK-5278 -- "Cliente su portale" (marcatori 230626)¶
Quando un cliente e' registrato sul portale Areagate (AreaAPP), lo Stato Commessa lo segnala a video con l'indicazione "Cliente su portale". La novita' introduce un nuovo campo di maschera e una lettura puntuale verso l'anagrafica di frontiera Areagate.
Componenti aggiunti¶
- Campo maschera:
tm-cliente-portale pic x(18)(intab-maschera), visualizzato tramitedisplay e-tm-cliente-portale. - Variabile di chiave anagrafica:
w-ana-chia(w-ana-tipo pic x(01)+w-ana-cod pic 9(05)). - Configurazione: nuova chiave
abilita / attiva-areaapp->tm-cfg-attiva-areaapp(vedi sezione Configurazione). - Copybook: incluso
utilagprg.cpy(areautil-agprg), interfaccia di chiamata aSWN070.
Logica (paragrafo a-fine-dati, dopo x2-archiviazione-automatica)¶
if tm-cfg-attiva-areaapp = "S"
move k-ana-tipo-cli to w-ana-tipo
move tm-cli to w-ana-cod
initialize util-agprg
move "AGPRG-CALLED" to agprg-called
move w-ana-chia to agprg-key
move "LETTURA-KEY" to agprg-ope
call "SWN070" using stringhe util-agprg ...
cancel "SWN070"
if agprg-rana-cliente-portale = "S"
move "Cliente su portale" to tm-cliente-portale
display e-tm-cliente-portale
end-if
end-if
La verifica avviene una sola volta, al caricamento dei dati della commessa (a-fine-dati), solo se la configurazione aziendale attiva-areaapp vale "S". La chiave passata e' tipo "C" + codice cliente (k-ana-tipo-cli da costanti-labod.cpy). SWN070 esegue, in modalita' LETTURA-KEY, una lettura diretta su ARPANAGR e restituisce nel campo agprg-rana-cliente-portale il flag rana-cliente-portale; se vale "S", lo Stato Commessa mostra l'etichetta. Il campo tm-cliente-portale viene azzerato a ogni reset maschera (a4).
Vedi anche SWN070 -- Clienti per il dettaglio dell'operazione LETTURA-KEY.
Programmi chiamati (CALL)¶
| Programma | Innesco | Scopo |
|---|---|---|
| SWN070 | a-fine-dati (se tm-cfg-attiva-areaapp = "S") |
Operazione LETTURA-KEY su ARPANAGR: restituisce il flag "cliente su portale" (TASK-5278) |
| COGS98W | gestione campi testata (z-s98-tm-presc) |
Accept/validazione/visualizzazione campi commessa e prescrizione |
| GRIDADMN | z-prepara-tm-grid, z-costruisci-grid, S-F4 |
Gestione/personalizzazione griglia |
| RNEWCONF | x99-confi, x99-confi-operatore |
Lettura parametri di configurazione |
| COGZ40 | F6 / Invio voce 1 | Prescrizione medica |
| COGZ48 | Invio voce 3 | Stesura progetto |
| COGZDA | Invio voce 2 (se tm-cfg-modalita-prog = "C") |
Macro/pre-progettazione |
| COGZ43 | Invio voce 5 | Stesura preventivo |
| COGZ45 / COGZ49 | Invio voce 7 | Avanzamento commessa (a step "ST" -> COGZ45, altrimenti COGZ49) |
| COGZB6 / COGZ84 | Invio voce 6 | Stampa fasi (Wilocs -> COGZB6, altrimenti COGZ84) |
| COGZAC | Invio voce 8 | Sub-fornitura |
| COGZ61 | Invio voce 9 | Creazione documento accompagnatorio |
| COGZ90 / COGZAJ | Invio voce 11 / 12 | Etichettatura / etichetta alternativa |
| COGZ52 | Invio voce 14 | Creazione piano standard |
| COGZ62 | Invio voce 15 | Archiviazione documenti |
| COGZAH | Invio voce 16 (se tm-cfg-scarico-automatico = "S") |
Documenti di magazzino |
| COGZSD | a1-allegati (voce 10) |
Stampa degli allegati della commessa |
| COGZ41 / COGZD1 / APOZD1 | a3-preparazione |
Preparazione commessa (standard/evoluta/studio) |
| COGZS3 | stato-commessa |
Verifica se l'etichettatura e' richiesta |
| WINZ04 / WINZ07 | a3-preparazione |
Selezione/richiesta piano di fabbricazione (PDF) |
| COGZ39 | F4 | Gestione rapporti di non conformita' (RNC) |
| COGZ67 | F5 | Dati di chiusura commessa |
| COGZ54 | F2 (materiale consegnato) | Gestione materiali consegnati dal cliente |
| COGZAP | F11 (cliente speciale) | Visualizzazione autorizzazione sblocco cliente speciale |
| COGZ51 | F7 | Fascicolo tecnico digitale |
| COGZC8 | F6 (su griglia) | Pianificazione produzione (impegno) |
| COGY26 | F9 (personalizzazione Lori) | Gestione etichette pazienti |
| COGZD7 | voce 13 | Stampa certificato di garanzia |
| COGG32 | S-F7 | Gestione contatti dello studio |
| BROWSER | S-F8 | Apertura area riservata Odontosoft |
| GRIDADMN | S-F4 | Amministrazione colonne griglia |
| C$LIST-DIRECTORY | x2-archiviazione-automatica |
Scansione cartella allegati da archiviare |
| RENAME | a12-crea-archivio |
Rinomina file allegato per Dentalabor |
| DIALOGS | accept-dialogs |
Scelta stampa/invio su disco |
File e tabelle utilizzati¶
I file sono dichiarati in cogz50.select / cogz50.fd (gestione I/O standard tramite cogz50.prc).
| File | Copybook | Scopo |
|---|---|---|
| LODPRESC | lodpresc.cpy (+ lodpresc.k04) |
Prescrizioni: stato commessa, dottore, date, flag progetto/preventivo/estratta |
| LODCMTES | testata commessa | Flag eseguito (stampa fasi, allegati, etichette, archiviazione, std), blocco amministrativo (lct-att-amm), cassetta |
| LODCMAGG | dati aggiuntivi commessa | Flag pre-progettazione, certificato garanzia, data stampa, priorita', commessa-studio |
| LODCMAG2 | dati aggiuntivi 2 | Data/ora spedizione (lc2-data-sped/lc2-ora-sped), id prescrizione |
| LODCMRIG | righe commessa | Fasi/trasferimenti (data fine, sede consegna, stato) |
| LODRAPNC | (+ lodrapnc.k02) |
Rapporti di non conformita' |
| LODSUBFR | sub-forniture | Stato sub-forniture |
| LODPFSTD | (+ lodpfstd.k02) |
Piani di fabbricazione standard (per cliente/tipo dispositivo) |
| LODPDFPR | prestazioni collegate al PDF (per decidere progettazione evoluta) | |
| COGRACBB | cogracbb.cpy |
Raccordi bollettini lotto (preventivo "CV", documento "CD") |
| COGMAGAZ | cogmagaz.cpy |
Magazzini/sedi (multisede) |
| ARPANAGR | -- | Anagrafica di frontiera Areagate, consultata indirettamente via SWN070 (TASK-5278) |
Configurazione (RNEWCONF)¶
Le configurazioni generali sono caricate in x99-confi con ncnf-pnt = 14 (pacchetto passato da 13 a 14 chiavi con TASK-5278). La suddivisione e' per magazzino (ncnf-tip-sud = "M", ncnf-sud = az-main-mag).
| # | Gruppo | Chiave | Variabile | Effetto |
|---|---|---|---|---|
| 1 | ODONTO | AVANZAMENTO-COMMESSA | tm-cfg-tip-ava |
Tipo avanzamento ("ST" -> COGZ45) |
| 2 | ODONTO | PERCORSO-INVIO-ALLEGATI | tm-cfg-path-archivia |
Percorso invio allegati (Dentalabor) |
| 3 | ABILITA | LABOD-PROGETTAZIONE | tm-cfg-modalita-prog |
Modalita' progettazione (A/C) |
| 4 | LABPREPARA | MODO-RICERCA-PIANI | tm-cfg-ricerca-piani |
SELEZIONE / RICHIESTA piano |
| 5 | ODONTO | MODO-STAMPA-ALLEGATI | tm-cfg-modo-allegati |
Modo stampa allegati |
| 6 | ODONTO | ZD7-STAMPA-CERTIFICATO-GARANZIA | tm-cfg-zd7-stampa |
Abilita certificato garanzia (voce 13) |
| 7 | LABPREPARA | COMMESSA-FAST | tm-cfg-commessa-fast |
Flusso commessa-fast (self-call da COGZD1) |
| 8 | ABILITA | LABOD-IMPEGNI | tm-cfg-labod-impegni |
Abilita pulsante impegno (F6) |
| 9 | ODONTO | SCARICO-MATERIALI-AUTOMATICO | tm-cfg-scarico-automatico |
Abilita voce 16 / scarico magazzino |
| 10 | ODONTO | STAMPA-ETICHETTA-DISP-ALT | tm-cfg-eti-disp-alt |
Abilita etichetta alternativa (voce 12) |
| 11 | ABILITA | LAB-ODONT-ORDINE | tm-cfg-abilita-ordine |
Abilita ricerca ordine (F7) |
| 12 | labpresc | path-archiviazione-auto | tm-cfg-path-archiviazione-auto |
Percorso archiviazione automatica allegati |
| 13 | odonto | gestione-multi-sede | tm-cfg-multisede |
Gestione multisede (sedi trasferimento) |
| 14 | abilita | attiva-areaapp | tm-cfg-attiva-areaapp |
TASK-5278: se "S" abilita la verifica "Cliente su portale" via SWN070 |
Configurazione dipendente dall'operatore (x99-confi-operatore, ncnf-sud = wo-oper):
| Gruppo | Chiave | Variabile | Effetto |
|---|---|---|---|
| apo | operatore-clinica-su-lab | tm-cfg-clinica-ope |
Clinica assegnata all'operatore (controllo appartenenza commessa) |
Copybook inclusi¶
Working Storage¶
feurtab.fd, cogfiles.cpy, cogz50.select, cogz50.fd, cogz50.wrk, k-personal.cpy, costanti-labod.cpy, wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, wgrid.cpy, utilgdad.cpy, utildlg.cpy, utilbrws.cpy, utils52.cpy, utils54.cpy, utils93.cpy, utils98.cpy, utilz39.cpy, utilz62.cpy, utilzs3.cpy, utilwz04.cpy, utilwz07.cpy, utilcogzac.cpy, utilcogzah.cpy, utilcogzc8.cpy, utilapozd1.cpy, utilcogzap.cpy, utilcogzda.cpy, utilagprg.cpy (TASK-5278), acucobol.def, utilzsd.cpy, utilncnf.cpy
Linkage Section¶
wcont.cpy, utilg32.cpy, utilz40.cpy, utilz41.cpy, utilz43.cpy, utilz45.cpy, utilz48.cpy, utilz49.cpy, utilz50.cpy, utilz51.cpy, utilz52.cpy, utilz54.cpy, utilz61.cpy, utilz67.cpy, utilz82.cpy, utilz84.cpy, utilz89.cpy, utilz90.cpy, utilzaj.cpy, utilzb6.cpy, utilzd1.cpy, utilzd7.cpy, utily26.cpy, wcont1.cpy
Procedure Division¶
cogz50.decla, grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, cogz50.prc, utilgrid.cpy, e le chiavi secondarie lodpresc.k04, lodrapnc.k02, lodpfstd.k02
Paragrafi chiave (PROCEDURE DIVISION)¶
| Paragrafo | Scopo |
|---|---|
apri |
Inizializzazione: apre file, carica configurazioni (x99-confi/x99-confi-operatore), crea pulsanti custom, prepara griglia |
a4 |
Reset completo maschera (tab-maschera, incluso tm-cliente-portale) |
a-tm-cli |
Accept campi testata (studio/paziente/pro/num) tramite COGS98W; gestione F6 (nuova prescrizione), F1 (config), S-F8 (browser) |
a-fine-intestazione |
Controllo intestazione (x-controlla-intestazione) |
a-fine-dati |
Cerca prescrizione, archiviazione automatica e verifica "Cliente su portale" via SWN070 (TASK-5278) |
x2-archiviazione-automatica |
Scansione cartella per allegati da archiviare (C$LIST-DIRECTORY) |
cerca-presc |
Carica la prescrizione/commessa, controllo clinica, date, data spedizione, multisede; chiama stato-commessa |
stato-commessa |
Ricostruisce lo stato di tutte le voci della griglia leggendo gli archivi; promozione automatica a "Evasa" |
a-pre-grid / a-grid / a-accept-grid |
Costruzione e gestione interattiva della griglia, tasti funzione, Invio sulle voci |
a1-allegati |
Stampa allegati via COGZSD; aggiorna flag su LODCMTES/LODPRESC/LODCMAG2 |
a3-preparazione |
Sceglie il programma di preparazione (COGZ41/COGZD1/APOZD1) in base a configurazione e modalita' |
a4-sblocca-commessa |
Rimozione blocco amministrativo (F2 con cliente speciale) |
x99-confi |
Carica le 14 chiavi di configurazione tramite RNEWCONF |
x99-confi-operatore |
Carica la configurazione clinica dipendente dall'operatore |
accept-data-stampa |
Accept della data stampa allegati (F10) |
call-zd7 |
Stampa certificato di garanzia (COGZD7) e aggiorna flag su LODCMAGG |
fine / z-chiudi |
Chiusura file, cancellazione COGS98W, uscita programma |
Regole di business principali¶
- Identificazione commessa: per prescrizione (studio/paziente/pro) o per numero commessa; se chiamato con commessa ma senza studio, risale alla prescrizione via
LODPRESCchiave 4. - Controllo clinica: in ambienti di gruppo, se l'operatore e' assegnato a una clinica (
tm-cfg-clinica-ope), la commessa viene mostrata solo se i primi due caratteri del numero corrispondono alla clinica. - Stato fasi: ogni voce della griglia deriva il proprio valore da flag specifici degli archivi del laboratorio (vedi tabella voci).
- Evasione automatica: se
lpm-stato = "C", allegati eseguiti e (etichetta eseguita o non richiesta), lo stato viene promosso a"E"(Evasa) e riscritto su LODPRESC. - Fasi condizionali: pre-progettazione, etichetta alternativa, certificato garanzia e documenti di magazzino sono visibili solo con la rispettiva configurazione.
- Cliente su portale (TASK-5278): se
attiva-areaapp = "S", al caricamento della commessa viene interrogatoARPANAGRvia SWN070 (LETTURA-KEY); se il cliente risulta registrato sul portale Areagate (rana-cliente-portale = "S"), compare l'etichetta "Cliente su portale".
Storico modifiche¶
| Data | Descrizione |
|---|---|
| 2026-06-24 | TASK-5278 "Cliente su portale": aggiunto campo maschera tm-cliente-portale, variabile chiave w-ana-chia, copybook utilagprg.cpy e nuova chiave di configurazione abilita/attiva-areaapp (tm-cfg-attiva-areaapp, pacchetto RNEWCONF da 13 a 14 chiavi, indice 14). In a-fine-dati, dopo l'archiviazione automatica, se la configurazione e' attiva si interroga SWN070 con operazione LETTURA-KEY (chiave = tipo "C" + codice cliente) per leggere ARPANAGR; se agprg-rana-cliente-portale = "S" viene mostrata a video l'indicazione "Cliente su portale". |