COGZ1C - Gestione modelli allegati (modelli Word per tipo allegato)¶
Sorgente: cbl/cogz1c.cbl | Program-ID: COGZ1C | Tipo: Programma interattivo a griglia editabile con file di transito
Menu: Lab.Odont. > Archivi > Allegati > Gestione modelli allegati
Scopo¶
Gestisce l'associazione tra i codici allegato delle commesse di laboratorio e i modelli Word usati per produrli, oltre al raccordo con i tipi dispositivo ammessi. E' la funzione che governa la stampa "in modalita' Word" degli allegati (dichiarazioni, specifiche di installazione, ecc.): per ogni codice allegato definisce quale documento .doc/.docx utilizzare e a quali tipi di dispositivo si applica.
Il programma lavora su un file di transito (t-grid-det) caricato in una griglia editabile: ogni riga rappresenta un modello (codice allegato, descrizione, percorso del file Word, fino a 5 tipi dispositivo). Al salvataggio le righe modificate/inserite/cancellate vengono riversate sulle tre tabelle persistenti:
- LODMODST — definizione modelli per allegato (tipo allegato + codice allegato -> progressivo modello COGMODST);
- COGMODST — anagrafica modelli Word (descrizione, path, motore W);
- LODRMSTD — raccordo modello <-> tipo dispositivo (con cancellazione logica rlmd-fl-canc).
Il tipo allegato su cui si opera (tm-tipo-allegato, default I) e' fisso per sessione; puo' essere imposto dal chiamante (util-cogz1c).
Il programma puo' funzionare stand-alone (modalita' Aggiornamento) o come chiamato (modalita' Selezione): in modalita' chiamata riceve tipo allegato e tipo dispositivo in input, filtra la griglia e restituisce il codice allegato selezionato in cogz1c-o-cod-allegato.
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | ISAM | Input | Parametri generali azienda (cogfiles.cpy) |
| LODMODST | ISAM | I-O | Definizione modelli per allegato (lmst-tipo-allegato, lmst-cod-allegato, lmst-mdc-prog, lmst-fl-canc) |
| COGMODST | ISAM | I-O | Anagrafica modelli Word (mdc-prog, mdc-tip, mdc-des, mdc-path, mdc-motore, ...) |
| LODRMSTD | ISAM | I-O | Raccordo modello - tipo dispositivo (rlmd-tipo-allegato, rlmd-cod-allegato, rlmd-tipo-dispositivo, rlmd-fl-canc) |
| LODTABEL | ISAM | Input | Tipi dispositivo tipo 8 (lta-tipo=8, lta-cod, lta-08-fl-canc) per validazione |
| t-grid-det | ISAM (temp) | I-O | File di transito della griglia (t-gor-r-rec), creato/cancellato a runtime |
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
cogz1c.select, cogz1c.fd, cogz1c.wrk, cogz1c.tm, cogz1c-01.scr, cogz1c.prc, cogz1c.decla |
Screen Designer |
cogz1c.imppredf-wrk, cogz1c.imppredf, utilimppredf.cpy |
Gestione filtri predefiniti (import/preferiti) |
feurtab.fd, cogfiles.cpy |
FEURTAB |
k-tipi-cogtabel.cpy |
Costanti tipi COGTABEL |
opensave.def, utilopenfile.cpy |
Selezione file (C$OPENSAVEBOX) e apertura file (OPENFILE) |
wgrave, wnscr, wopenf, wstato, cogazien, wgrid |
Working storage standard + dati azienda + griglia |
utilgdad.cpy |
Linkage GRIDADMN |
l-copiaf.cpy, u-copiaf.cpy |
Linkage COPIAF (copia file modello) |
utilz93.cpy |
Linkage COGZ93 (aiuto tipo dispositivo) |
utilu10.cpy, utilu20.cpy |
Linkage subroutine controlli |
utilncnf.cpy |
Linkage RNEWCONF |
utilcogz1c.cpy |
Interfaccia chiamata (util-cogz1c, in linkage section) |
grave, mmmask, opengen, stato, stato1, winmsg |
Copybook fine procedure standard |
Logica¶
Programma basato sul pattern "griglia di dettaglio con file di transito" (prefissi z-grid-det-*, t-gor-r-* generati da Screens): la griglia editabile viene alimentata da un file temporaneo, le modifiche sono marcate riga per riga e riversate sulle tabelle solo alla conferma.
- apri / main:
z-99-init-program,ctr-abil, lettura configurazione (x99-confi->modo-gestione-allegati),rd-azi,open-files; rilevamento modalita' chiamata (cogz1c-called->w-dc-called="S", modalita'S=Selezione, altrimentiA=Aggiornamento); menu pop-up griglia (build-main-popup-grid-det); bitmap custom (ricerca,ottica) e pulsanti "Salva impostazione (CTRL-S)", "Cerca impostazione (CTRL-F)", "Visualizza Modello (F4)";z-prepara-tm-grid,x-trova-col-num-grid-det. - a4: reset maschera,
tm-tipo-allegato(defaultI, o dal chiamante); ordinamento predefinito per codice allegato; caricamento filtro di default (z-imppredf-carica-default);x-imposta-conferma. - a-leggi-dati: apre il transito (
z-grid-det-apri-transito), lo popola (z-grid-det-crea-transito) e lo riordina. - z-grid-det-crea-transito: scorre LODMODST filtrando
lmst-tipo-allegato = tm-tipo-allegatoe per ogni record eseguecarica-dati. - carica-dati: salta i record cancellati (
lmst-fl-canc="C"); se e' richiesto un tipo dispositivo (w-dc-tipo-dispositivo) filtra su LODRMSTD; legge il modello Word da COGMODST (lmst-mdc-prog); riempie il record di transito (z-grid-det-riempi-t-rec) valorizzando fino a 5 tipi dispositivo da LODRMSTD. - a-grid: accept della griglia. ESC esce;
F1modifica configurazione (x99-confi);SF4apre GRIDADMN;SF5esporta in Excel;invioin modalita' Selezione restituiscetm-r-cod-alle (i)incogz1c-o-cod-allegatoed esce;F3(modalita' Aggiornamento) valida tutte le righe (x-controlla-grid-det-tutto) e su conferma esegueb-aggiorna;CTRL-Aaggiunge una riga;CTRL-Emarca/smarca la riga per cancellazione (tm-r-fl-agg="C"); il menu pop-up (funzionik-pmg-primo..k-pmg-ultimo) e' gestito dax-attiva-popup-grid-det. - b-aggiorna: scorre il file di transito; per le righe con
fl-agg="C"esegue la cancellazione logica su LODMODST/LODRMSTD e la cancellazione fisica del modello COGMODST; per le righe modificate (t-gor-r-riga-mod="S") esegue inserimento (b1-inser-record-det) o aggiornamento (b2-aggiorna-record-det). - b1-inser-record-det: crea un nuovo modello su COGMODST (calcolo nuovo
mdc-prog,mdc-tip="COGZ82",mdc-motore="W", pathmdc-tipo-path="R"), scrive LODMODST e i raccordi LODRMSTD per i tipi dispositivo indicati. - b2-aggiorna-record-det: aggiorna descrizione/path del modello COGMODST esistente, riallinea LODMODST e ricostruisce i raccordi LODRMSTD (cancella logicamente i vecchi e riscrive i nuovi tipi dispositivo).
- z-usa-tf-grid-det-ep: gestione tasti sulla colonna corrente: sulla colonna path,
F5apre C$OPENSAVEBOX per scegliere il file Word e lo copia inEXT-MOD-DIRvia COPIAF,F4apre il modello via OPENFILE; sulle colonne tipo dispositivo,F8apre l'aiuto COGZ93. - x-controlla-tm-r-tipo-dis1..5: validano ogni tipo dispositivo contro LODTABEL tipo 8 e avvisano se il tipo e' cancellato (
lta-08-fl-canc="C"). - z-99-exception-form: gestisce
CTRL-F(carica filtro memorizzato) eCTRL-S(salva filtro) tramite il moduloimppredf. - fine / z-chiudi:
z-close-files, close/deletet-grid-det, distruzione menu,exit program.
Configurazioni (RNEWCONF)¶
Percorso ODONTO (pacchetto generale C), letto in x99-confi:
| Chiave | Uso |
|---|---|
| modo-gestione-allegati | Modalita' di gestione allegati (tm-cfg-modo-gestione-allegati) |
CALL¶
| Programma | Scopo |
|---|---|
GRIDADMN |
Gestione/configurazione griglia di dettaglio (util-gdad) |
COGZ93 |
Aiuto/selezione tipo dispositivo (F8 sulle colonne tipo dispositivo) |
COPIAF |
Copia del file modello Word selezionato in EXT-MOD-DIR |
OPENFILE |
Apertura del file modello Word (F4) |
C$OPENSAVEBOX |
Dialog di selezione file (routine di sistema AcuCOBOL) |
W$MENU |
Menu pop-up di griglia (routine di sistema AcuCOBOL) |
RNEWCONF |
Lettura configurazione ODONTO (modo-gestione-allegati) |
Note¶
- Il salvataggio non e' immediato: le modifiche sono accumulate sul file di transito con flag riga (
t-gor-r-fl-agg,t-gor-r-riga-mod) e riversate sulle tre tabelle (LODMODST, COGMODST, LODRMSTD) solo su F3-conferma. La cancellazione e' logica su LODMODST/LODRMSTD (fl-canc="C") ma fisica sull'anagrafica modello COGMODST. - Ogni codice allegato puo' avere al massimo 5 tipi dispositivo associati (
t-gor-r-tipo-dis1..5); oltre il quinto il programma avvisa e tronca il caricamento. - I nuovi modelli COGMODST vengono creati con
mdc-tip="COGZ82",mdc-motore="W"(Word) emdc-tipo-path="R"(path remoto, riferito aEXT-MOD-DIR); il file selezionato viene fisicamente copiato in quella cartella tramite COPIAF. - Le righe con filtro attivo non consentono inserimento/cancellazione (blocco esplicito su
grid-det-filtro-attivo="S"). - Il programma e' riutilizzabile come subroutine di selezione (
util-cogz1c): in modalita' Selezione presenta la griglia filtrata per tipo allegato/dispositivo e restituisce il codice allegato scelto incogz1c-o-cod-allegato.