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 inizialew-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 posizionatm-tab-codex-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); impostafl-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, poicarica-griglia(dettaglio esistente) ez-costruisci-tm-tab; attiva i tasti funzione griglia. - carica-griglia: scorre
LODPRMDTpertm-tab-codvia chiave 2 (st-lodprmdt-notmin-chia2); per ogni riga caricatm-id,tm-seq, descrizioni e legge il primo materiale collegato daLODPRMMT; risolve descrizione/u.m. merce; aggiornatm-id-max. - a-grid / a-accept-grid: gestione griglia; SF4 GRIDADMN; F3 ->
a1-aggiorna; Ctrl-A aggiunge riga (nuovotm-id); Ctrl-E elimina riga (con conferma e controllo abilitazionew-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 esegueb-aggiorna. - b-aggiorna: se testata inesistente
wr-lodprmts, poirwr-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-griglialegge solo il primo recordLODPRMMTper la coppiappd-cod/ppd-id(commento esplicito nel sorgente). - Il dettaglio
LODPRMDTviene 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-mersegnala "Devi selezionare un materiale!!". - I controlli di abilitazione utente (
w-abi-agg,w-abi-del) bloccano rispettivamente modifica ed eliminazione righe.