Vai al contenuto

COGZD3 - Gestione Proprieta' prestazioni

Sorgente: cbl/cogzd3.cbl | Program-ID: COGZD3 | Tipo: Programma interattivo GUI di gestione tabella (testata + griglia dettaglio)

Menu: Lab.Odont. > Archivi > Tabelle > Proprieta' prestazioni


Scopo

Gestisce l'anagrafica delle "Proprieta' prestazioni" del laboratorio odontotecnico: una tabella con testata (codice + descrizione + descrizione per note) e un dettaglio a griglia di piu' righe (le singole proprieta'), a ciascuna delle quali puo' essere collegato un materiale con relativa unita' di misura e quantita'. La struttura dati e' su tre livelli: testata LODPRMTS, dettaglio LODPRMDT e materiali collegati LODPRMMT.

L'operatore digita il codice proprieta' (con aiuto WINZ21), il programma legge la testata da LODPRMTS distinguendo tra inserimento e variazione (fl-ins-var = "I"/"V"), quindi carica nella griglia le righe di dettaglio esistenti da LODPRMDT, ognuna con l'eventuale materiale abbinato letto da LODPRMMT. La griglia consente aggiunta (Ctrl-A), eliminazione riga (Ctrl-E), spostamento su/giu' (F5/F6) e modifica delle celle; per la cella materiale l'aiuto (F8) richiama COGD89.

Il programma e' richiamabile da altri moduli: se cogzd3-called = k-program-id e cogzd3-caller valorizzato, riceve un codice tabella (cogzd3-tab-cod) e vi si posiziona direttamente all'apertura (w-dc-called = "S").

L'aggiornamento e' di tipo "cancella e riscrivi": poiche' la chiave di sequenza del dettaglio non coincide col campo principale, in b-aggiorna la testata viene aggiornata mentre tutto il dettaglio (righe + materiali) viene prima cancellato (b1-cancella-dettaglio, b11-cancella-materiali) e poi riscritto scorrendo la griglia.

File e tabelle

File/Tabella Tipo Modalita' Descrizione
FEURTAB ISAM Input Parametri generali azienda (cogfiles.cpy)
LODPRMTS ISAM I-O Testata proprieta' prestazioni (ppt-cod, ppt-des, ppt-des-note)
LODPRMDT ISAM I-O Dettaglio proprieta' (ppd-cod, ppd-id, ppd-seq, ppd-des, ppd-des-note); usa chiave 2
LODPRMMT ISAM I-O Materiali collegati alla proprieta' (ppm-cod, ppm-id, ppm-merce, ppm-um, ppm-qta, ppm-fl-qta)
COGMERCI ISAM Input Anagrafica merci per il materiale collegato (mer-chia, mer-descr, mer-um, mer-classe)
COGMERA2 ISAM Input Dati aggiuntivi merce, u.m. di produzione (ma2-um-prod)
COGTABEL ISAM Input Validazione unita' di misura (tipo k-euta-tipo-um)

Copybook utilizzate

Copybook Descrizione
cogzd3.select, cogzd3.fd, cogzd3.wrk, cogzd3-01.scr, cogzd3.prc, cogzd3.decla Screen Designer
feurtab.fd, cogfiles.cpy FEURTAB
k-tipi-cogtabel.cpy Costanti tipi COGTABEL (u.m.)
wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy Working storage standard + dati azienda
wgrid.cpy, utilgdad.cpy Gestione griglia / GRIDADMN
utilg31.cpy Linkage COGG31 (conversione u.m.)
utilu20.cpy Linkage utility U20
utild89.cpy Linkage COGD89 (aiuto materiali)
utils68.cpy Linkage COGS68 (aiuto merce)
utilwinz21.cpy Linkage WINZ21 (aiuto codice tabella)
wcont.cpy, wcont1.cpy Linkage di contorno
utilcogzd3.cpy Parametri di chiamata (cogzd3-called, cogzd3-caller, cogzd3-tab-cod)
grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy Copybook di fine procedure
lodprmdt.k02 Chiave secondaria dettaglio (aggiunta a fine procedure)

Logica

  • apri / main: z-99-init-program, ctr-abil, ordinamento iniziale w-ord = "C", rd-azi, open-files; rileva chiamata (cogzd3-called); attiva i tasti funzione; carica lingua; rd-msk-pop; z-costruisci-controlli; z-prepara-tm-grid (definizione colonne via GRIDADMN "Prepara").
  • a4: svuota la griglia, carica-ord; se chiamato posiziona tm-tab-cod e x-controlla-tm-tab-cod; z-carica-controlli; x-trova-col-num-tm-tab (individua le colonne).
  • a-tm-tab-cod: accept del codice proprieta'; F8 richiama WINZ21; x-controlla-tm-tab-cod (codice obbligatorio).
  • a-fine-chiave: legge LODPRMTS (rd-lodprmts); imposta fl-ins-var = "V" (esistente, carica descrizioni) o "I" (nuovo); attiva F3 e, se variazione, F4.
  • a-tm-tab-des / a-tm-tab-des-note: accept e validazione delle due descrizioni (entrambe obbligatorie).
  • a-fine-testata: x-controlla-testata, poi carica-griglia (dettaglio esistente) e z-costruisci-tm-tab; attiva i tasti funzione griglia.
  • carica-griglia: scorre LODPRMDT per tm-tab-cod via chiave 2 (st-lodprmdt-notmin-chia2); per ogni riga carica tm-id, tm-seq, descrizioni e legge il primo materiale collegato da LODPRMMT; risolve descrizione/u.m. merce; aggiorna tm-id-max.
  • a-grid / a-accept-grid: gestione griglia; SF4 GRIDADMN; F3 -> a1-aggiorna; Ctrl-A aggiunge riga (nuovo tm-id); Ctrl-E elimina riga (con conferma e controllo abilitazione w-abi-del); z-usa-tf-tm-tab (F8 su cella u.m. -> COGD89); F4 -> cancella-tutto; F5/F6 spostano la riga.
  • a1-aggiorna: x-controlla-tm-tab-tutto; se ok esegue b-aggiorna.
  • b-aggiorna: se testata inesistente wr-lodprmts, poi rwr-lodprmts; b1-cancella-dettaglio; riscrive righe (wr-lodprmdt) e, se presente materiale, wr-lodprmmt.
  • b1-cancella-dettaglio / b11-cancella-materiali: cancellano rispettivamente le righe di dettaglio e i materiali collegati scorrendo per chiave.
  • cancella-tutto: con conferma e controllo w-abi-del, cancella dettaglio (b1-cancella-dettaglio) e testata (del-lodprmts).
  • validazioni cella: x-controlla-tm-mer (merce esistente e di classe "M", ricava u.m. e descrizione), x-controlla-tm-um (u.m. esistente in COGTABEL, conversione via COGG31), x-controlla-tm-qta (quantita' obbligatoria se c'e' materiale).
  • fine / z-chiudi: z-close-files, chiusura finestra, exit program.

CALL

Programma Scopo
GRIDADMN Preparazione/gestione griglia dettaglio
WINZ21 Aiuto ricerca codice proprieta'
COGD89 Aiuto selezione materiale (cella u.m./merce)
COGG31 Conversione unita' di misura (operazione convert.um)

Note

  • L'aggiornamento e' distruttivo sul dettaglio: la routine cancella tutte le righe e i materiali collegati e li riscrive da capo (commento nel sorgente: la chiave di sequenza non coincide col campo principale).
  • Il programma assume un solo materiale per proprieta': in carica-griglia legge solo il primo record LODPRMMT per la coppia ppd-cod/ppd-id (commento esplicito nel sorgente).
  • Il dettaglio LODPRMDT viene scorso con la chiave secondaria (.k02), inclusa manualmente a fine procedure division; solo le righe con descrizione non vuota vengono scritte in aggiornamento.
  • Il materiale nella griglia deve essere di classe "M": in caso contrario x-controlla-tm-mer segnala "Devi selezionare un materiale!!".
  • I controlli di abilitazione utente (w-abi-agg, w-abi-del) bloccano rispettivamente modifica ed eliminazione righe.