COGZB3 - Materiali di default del medico¶
Sorgente: cbl/cogzb3.cbl | Program-ID: COGZB3 | Tipo: Programma interattivo di gestione tabella (griglia con ordinamento)
Menu: Lab.Odont. > Archivi > Tabelle > Materiali di default
Scopo¶
Gestisce l'elenco dei "materiali di default" che accompagnano tipicamente una prescrizione, distinti per classe di commessa (Protesi / Ortodonzia). Ogni riga di default puo' essere una merce codificata (gruppo/sottogruppo/codice articolo, letta e validata su COGMERCI) oppure una semplice voce descrittiva libera: sono alternative fra loro. Le righe hanno un numero di sequenza (tm-seq) che ne determina l'ordine di presentazione, modificabile con i tasti F5 (sposta su) e F6 (sposta giu).
I dati sono conservati su LODMMDDF (record mdf-rec), la tabella dei materiali del medico di default. La chiave usata per il caricamento e per l'aggiornamento e' la chiave terziaria (mdf-chia3, routine *-chia3 da lodmmddf.k03), filtrata per classe (mdf-classe). Il campo merce del record e' scritto grezzo da tm-merce (gruppo+sottogruppo+codice), la descrizione da tm-descr e la sequenza da tm-seq (mdf-seq/mdf-prog).
La maschera e' una griglia editabile con tre colonne (Descrizione, Merce, Sequenza). Il selettore di classe commessa in testa (tm-classe, gestito con COGS60) determina l'insieme di default caricato. La merce e' immessa/validata tramite il componente COGS68 (aiuto e controllo articolo). L'aggiornamento su file avviene in blocco al momento della conferma (F3), cancellando tutti i default della classe e riscrivendoli dalla griglia corrente.
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | ISAM | Input | Parametri generali azienda (cogfiles.cpy) |
| LODMMDDF | ISAM | I-O | Materiali del medico di default (mdf-classe, mdf-merce, mdf-des, mdf-seq, mdf-prog); accesso via chiave 3 (mdf-chia3) |
| COGMERCI | ISAM | Input | Anagrafica articoli, per validare/descrivere la merce (mer-chia, mer-descr) |
Il numero massimo di righe in griglia e' 300 (k-max-ele-tab).
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
cogzb3.select, cogzb3.fd, cogzb3.wrk, cogzb3-01.scr, cogzb3.prc, cogzb3.decla |
Screen Designer |
feurtab.fd, cogfiles.cpy |
FEURTAB |
k-u10.cpy, wrk-u10.cpy, utilu10.cpy, utilu20.cpy |
Costanti e linkage gestione divise/cambi (COGU10W) |
wstato.cpy, wgrave.cpy, wopenf.cpy, wnscr.cpy, cogazien.cpy |
Working storage standard + dati azienda |
wgrid.cpy, utilgdad.cpy |
Gestione griglia GRIDADMN |
utils98.cpy, utils52.cpy, utils68.cpy |
Linkage componenti COGS98/COGS52/COGS68 |
wcont.cpy, wcont1.cpy |
Linkage di contesto (stringhe) |
GetDCont.cpy |
Routine get-divisa-conto |
lodmmddf.k03 |
Routine I/O chiave terziaria LODMMDDF (*-chia3) |
stato.cpy, stato1.cpy, winmsg.cpy, grave.cpy, opengen.cpy, mmmask.cpy, utilgrid.cpy |
Copybook di fine procedure |
Logica¶
- apri: init programma,
ctr-abil,x-carica-lingua,open-files,rd-azi. Attiva i tasti funzione (Invio/Invio modifica, F5 precedente, F6 successivo, F3 conferma/aggiorna, F8 aiuto, SF4 griglia, Ctrl+A/Ctrl+E). Ricava la divisa di conto (get-divisa-conto), imposta titolo "Materiali del medico di default", prepara COGS68 per il campo merce,rd-msk-pop, forza la modalita' "A" (aggiornamento), prepara la griglia. - a4 / a10: inizializza la maschera con classe di default "P" (protesi), azzera i contatori.
- a-tm-classe: accept del selettore classe commessa (gestito con COGS60); ESC termina il programma.
- a-carica-griglia / a1-carica: scorre LODMMDDF filtrando per classe (
st-lodmmddf-notmin-chia3+rdnxt-lodmmddf), per ogni record legge la merce su COGMERCI per la descrizione articolo, e carica descrizione, merce e sequenza intm-tab. - a30 / a-grid / a-accept-grid: costruisce e visualizza la griglia; se non ci sono righe entra direttamente in inserimento (
flag-primo-inserimento). Gestisce ESC (con conferma, pulisce e torna ina4), eventi mouse (x-test-mouse), SF4 (GRIDADMN), F3 (conferma conaggiornae ritorno ina4), F5/F6 (spostamento riga su/giu cona5-sposta-su/a5-sposta-giu), Invio (modifica riga), Ctrl+A (inserimento, precompilato con la riga precedente), Ctrl+E (eliminazione con conferma, compattamento e rinumerazione delle sequenze). - a-riga-dettaglio: entra nel dettaglio riga; abilita i campi merce e descrizione.
- a-tm-descr: accept della descrizione libera (
x-aiuto-tm-descr, controllox-controlla-tm-descr). - a-tm-cod-tf: gestisce ESC in dettaglio (annulla le modifiche di riga ripristinando
tm-ele-sav). - a-tm-merce: accept del campo merce tramite COGS68 (
z-s68-tm-merce), con controllox-controlla-tm-merce. - x-controlla-tm-merce: valida la merce su COGMERCI (
rd-cogmerci) e impone la regola di alternativa: o merce o descrizione, non entrambe, ma almeno una delle due. - a-fine-dettaglio: conferma il dettaglio (
x-conferma-dettaglio), assegna la sequenza, aggiorna la griglia via GRIDADMN (Add o Modify). - aggiorna / b-aggiorna: alla conferma F3, cancella tutti i record LODMMDDF della classe (
del-lodmmddfin loop) e li riscrive dalla griglia (wr-lodmmddf), riportando classe, merce, descrizione e sequenza (mdf-seq/mdf-prog). - fine / z-chiudi: chiusura file, chiusura finestra,
exit program.
CALL¶
| Programma | Scopo |
|---|---|
GRIDADMN |
Gestione, riempimento e amministrazione colonne della griglia |
COGU10W |
Divisa di conto (get-divisa-conto) ed editazione valori |
I componenti COGS60 (combo), COGS68 (aiuto/controllo merce), COGS52, COGS95 sono invocati tramite le rispettive routine z-s60-*, z-s68-*, z-carica-s52, z-carica-s95 generate da Screen Designer.
Note¶
- Ogni riga e' o una merce codificata o una descrizione libera, mai entrambe: la regola e' imposta in
x-controlla-tm-merce. La merce viene validata su COGMERCI; una merce inesistente blocca la conferma. - L'ordine di presentazione dei default e' governato dalla sequenza (
tm-seq), modificabile con F5/F6; il salvataggio rinumera e riscrive le sequenze comemdf-seq/mdf-prog. - L'aggiornamento su file e' atomico per classe: alla conferma tutti i default della classe vengono cancellati e riscritti dalla griglia. Le modifiche non sono persistite fino alla pressione di F3 (conferma).
- Il record LODMMDDF prevede anche il tipo dispositivo (
mdf-tip-dsp), ma questo programma opera solo sulla classe (mdf-classe): il tipo dispositivo non e' gestito da questa maschera. - Codice terziario di chiave: le routine I/O usate sono la variante
*-chia3(mdf-chia3), inclusa manualmente viacopy "lodmmddf.k03"a fine procedure division. - Stile legacy con
GO TO,PERFORM ... THRUePERFORM VARYING, documentato come e'.