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 nomeMASKOPER.ARCe apertura tentata (settafl-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 conCOGU10W(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-prfda 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 chiamainseriscioaggiorna. - inserisci / aggiorna: scrivono COGTABEL tipo 36 (anagrafica), LODTABEL tipo 2 (costo/divisa/flag/commessa) e riportano
tm-fl-valsu 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 TOePERFORM ... 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 primariamop-chia.