Vai al contenuto

COGZ15 - Tabella Operatori di laboratorio

Sorgente: cbl/cogz15.cbl | Program-ID: COGZ15 | Tipo: Programma interattivo di gestione tabella (griglia paginata)

Menu: Lab.Odont. > Archivi > Tabelle > Operatori


Scopo

Gestisce l'anagrafica degli operatori del laboratorio odontotecnico: codice operatore, descrizione, periferica di stampa assegnata, flag "responsabile di commessa", costo orario, commessa memorizzata e flag di cancellazione logica/sospensione. La maschera e' una griglia paginata (list-box paged) con dettaglio di riga in inserimento/modifica/eliminazione.

Tecnicamente il programma appoggia i dati su due tabelle diverse redatte sullo stesso file FEURTAB: la parte anagrafica (descrizione, periferica) e' scritta su COGTABEL tipo 36 (record euta-*, euta-mag = "O"), mentre i dati economici e gestionali (costo orario in divisa, divisa, flag responsabile, flag sospesa, commessa) sono su LODTABEL tipo 2 (record lta-tipo-02, chiave lta-codr = codice operatore). Il flag di cancellazione logica (tm-fl-val) e' riportato anche su PRNTOPER (ptop-fl-val), l'archivio operatori di stampa condiviso col resto del gestionale.

All'avvio il programma allinea COGTABEL agli operatori presenti in PRNTOPER (d-cerca-oper): per ogni operatore di stampa non ancora presente su COGTABEL crea il record con descrizione e periferica di default. E' inoltre disponibile la funzione F1 (b-copia) che copia gli operatori dal file esterno MASKOPER.ARC (copybook MASKOPER.CPY) su COGTABEL, quando tale file e' presente nella directory operatore.

I costi orari sono normalizzati in divisa di conto tramite COGU10W: se il costo memorizzato su LODTABEL e' in divisa diversa da quella di conto corrente (w-currency-conto, ottenuta con GetDivisaConto), viene convertito prima di essere mostrato in griglia (rd1-ft-go).

File e tabelle

File/Tabella Tipo Modalita' Descrizione
FEURTAB ISAM Input Parametri generali azienda (cogfiles.cpy)
COGTABEL ISAM I-O Anagrafica operatore tipo 36 (euta-tipo=36, euta-mag="O", euta-mag1=codice, euta-ope-des, euta-ope-prf)
LODTABEL ISAM I-O Dati economici operatore tipo 2 (lta-codr, lta-02-costo, lta-02-currency, lta-02-fl-resp, lta-02-fl-sosp, lta-02-commessa)
PRNTOPER ISAM I-O Operatori di stampa; sorgente di allineamento e destinazione del flag validita' (ptop-cod, ptop-des, ptop-prf, ptop-fl-val, ptop-fl-amm)
PRNTPERF ISAM Input Periferiche di stampa per controllo/descrizione (ptpf-cod, ptpf-des)
MASKOPER ISAM (MASKOPER.ARC) Input Archivio operatori esterno per copia iniziale F1 (mop-ope, mop-des)

L'apertura di MASKOPER e' opzionale: se il file <ext-ope-dir>/MASKOPER.ARC esiste (fl-msk = "S") viene abilitata la funzione di copia F1, altrimenti la funzione resta nascosta.

Copybook utilizzate

Copybook Descrizione
cogz15.select, cogz15.fd, cogz15.wrk, cogz15-01.scr, cogz15.prc, cogz15.decla Screen Designer
feurtab.fd, cogfiles.cpy FEURTAB
MASKOPER.CPY, maskoper.k01 Record e routine I/O archivio operatori esterno
k-u10.cpy Costanti gestione divise/cambi
wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy Working storage standard + dati azienda
wgrid.cpy, utilgdad.cpy Gestione griglia GRIDADMN
utilu10.cpy, utilt24.cpy, utilw73.cpy Linkage COGU10W (divise), COGT24 (help periferiche), WIN073 (help operatori)
wcont.cpy, wcont1.cpy Linkage di contesto (stringhe)
grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy Copybook di fine procedure
dtab.cpy, fscrol2.cpy, utilpggr.cpy Gestione tabella dati / scroll / griglia paginata

Logica

  • apri: init programma, ctr-abil, open-files, costruzione del nome MASKOPER.ARC e apertura tentata (setta fl-msk), rd-azi. Attivazione tasti funzione (F1 copia, SF4 griglia, SF5 export Excel, Ctrl+A/Ctrl+E, Invio modifica, F3 conferma, F8 aiuto). Ricava la divisa di conto con COGU10W (GetDivisaConto), imposta titolo "Operatori", rd-msk-pop, prepara la griglia (z-prepara-tm-grid). Legge da PRNTOPER il flag amministratore dell'operatore corrente.
  • a4: svuota la griglia, x-status-bar-init, d-cerca-oper (allineamento COGTABEL da PRNTOPER).
  • d-cerca-oper: scorre PRNTOPER; per ogni operatore non presente su COGTABEL tipo 36 lo crea con euta-ope-des/euta-ope-prf da PRNTOPER.
  • vis-tabella-ini / vis-tabella-disp: carica e visualizza la griglia paginata (x-spaginamento-start, z-costruisci-grid, z-99-accept-paged-grid); gestisce eventi mouse (x-test-mouse), page-up/down, export Excel (SF5), amministrazione colonne griglia (SF4 GRIDADMN), Invio (modifica riga), Ctrl+A (inserimento), Ctrl+E (eliminazione con conferma).
  • a-riga-dettaglio: entra nel dettaglio; in modifica legge/locka COGTABEL (rd-cogtabel-lk), in inserimento inizializza la riga.
  • a-tm-ope / a-tm-desc / a-tm-fl-val / a-tm-prf / a-tm-fl-resp / a-tm-costo / a-tm-commessa: accept dei singoli campi con relativi x-controlla-*. F8 su codice operatore apre WIN073 (help operatori); F8 su periferica apre COGT24 (help periferiche); il costo e' editato/convertito con COGU10W.
  • a-fine-dettaglio: valida il dettaglio (x-controlla-dettaglio), chiede conferma, aggiorna la griglia via GRIDADMN, poi verifica esistenza record e chiama inserisci o aggiorna.
  • inserisci / aggiorna: scrivono COGTABEL tipo 36 (anagrafica), LODTABEL tipo 2 (costo/divisa/flag/commessa) e riportano tm-fl-val su PRNTOPER (ptop-fl-val); in inserimento, se l'operatore non esiste su PRNTOPER lo crea.
  • c-cancella: elimina il record da COGTABEL (del-cogtabel) e da LODTABEL (del-lodtabel).
  • b-copia / b1-copia-ok: copia gli operatori mancanti da MASKOPER a COGTABEL tipo 36.
  • fine / z-chiudi: chiusura file, chiusura MASKOPER, chiusura finestra, exit program.

CALL

Programma Scopo
COGU10W Divisa di conto (GetDivisaConto), editazione e conversione del costo orario
GRIDADMN Gestione/riempimento della griglia paginata
COGT24 Help di selezione periferica (F8 su campo periferica)
WIN073 Help di selezione operatore (F8 su campo operatore)
GRIDADMN (SF4) Amministrazione colonne della griglia

Note

  • Doppia sorgente dati: anagrafica su COGTABEL tipo 36 (euta-mag = "O"), dati economici su LODTABEL tipo 2. Un guasto di allineamento tra le due si traduce in righe con costo/flag azzerati (in aggiornamento il record LODTABEL viene rigenerato se assente).
  • Il campo costo e' conservato in divisa (lta-02-currency): la griglia mostra sempre il valore convertito nella divisa di conto corrente, quindi la cifra visualizzata puo' differire da quella salvata se le divise non coincidono.
  • Il flag di validita'/cancellazione (tm-fl-val) e' l'unico dato propagato su PRNTOPER: la disattivazione dell'operatore agisce quindi anche sull'archivio operatori di stampa condiviso.
  • Il codice usa ancora ampiamente GO TO e PERFORM ... THRU (stile legacy della maschera a griglia paginata); struttura non conforme alle convenzioni attuali ma qui documentata come e'.
  • La chiave secondaria maskoper.k01 (routine I/O) e' inclusa a fine procedure division; MASKOPER usa la sola chiave primaria mop-chia.