Vai al contenuto

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 in tm-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 in a4), eventi mouse (x-test-mouse), SF4 (GRIDADMN), F3 (conferma con aggiorna e ritorno in a4), F5/F6 (spostamento riga su/giu con a5-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, controllo x-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 controllo x-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-lodmmddf in 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 come mdf-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 via copy "lodmmddf.k03" a fine procedure division.
  • Stile legacy con GO TO, PERFORM ... THRU e PERFORM VARYING, documentato come e'.