COGD89 — Gestione unita' misura¶
Sorgente: cbl/cogd89.cbl | Program-ID: COGD89 | Tipo: Gestione tabella con griglia editabile (modo A)
Menu: Magazzino > Archivi & Tabelle > Tabelle > Gestione unita' misura
Scopo¶
Gestisce la tabella delle unita' di misura su COGTABEL (tipo k-euta-tipo-um definito in k-tipi-cogtabel.cpy). Usa il pattern "griglia modo A": griglia con editing diretto sulle celle, file di transito per ordinamento/filtri, e aggiornamento chirurgico (solo righe modificate). Supporta modalita' selezione (via linkage util-d89) e aggiornamento.
Struttura della maschera¶
Screen definita in cogd89-01.scr. Maschera con griglia editabile e supporto popup menu contestuale.
Griglia (e-grid-det)¶
Colonne (gestite tramite file di transito t-grid-det):
- t-gor-r-cod: codice unita' di misura
- t-gor-r-des: descrizione
- t-gor-r-n-dec: numero decimali
- t-gor-r-cod-prec: codice precedente (per gestione cancellazione)
- t-gor-r-riga-mod: flag riga modificata ("S"/"N")
In modalita' selezione la griglia e' read-only (begin-entry -> fail-terminate nel paragrafo z-event-grid-det-ep).
Logica di elaborazione¶
Inizializzazione¶
- Legge azienda, apre files.
- Determina modalita': selezione "S" (se
d89-called = k-program-ided89-callervalorizzato) o aggiornamento "A". - Imposta tasti funzione (Ctrl+A, Ctrl+E, Shift+F4, Shift+F5; F3 aggiorna/selezione/modifica in base al contesto).
- Prepara griglia tramite GRIDADMN, costruisce menu contestuale popup (
build-main-popup-grid-det). - Carica lingua, imposta filtro predefinito (
z-imppredf-carica-default).
Caricamento dati (z-grid-det-crea-transito)¶
- Inizializza file di transito.
- Legge COGTABEL sequenzialmente partendo da tipo
k-euta-tipo-um. - Per ogni record con tipo corrispondente:
- Copia
euta-codint-gor-r-codet-gor-r-cod-prec. - Copia
euta-um-desint-gor-r-des. - Copia
euta-um-n-decint-gor-r-n-dec. - Inserisce nel file di transito.
- Riordina il file di transito. Se il filtro non produce risultati, lo annulla.
Gestione griglia (a-grid)¶
- La griglia supporta editing diretto:
z-99-begin-entry-grid-detvalida quali colonne sono editabili,z-99-finish-entry-grid-detgestisce la fine dell'editing. - Invio in selezione: restituisce
d89-out-coded89-out-des. - F3: in aggiornamento diretto salva (
b-aggiorna); se chiamato in selezione, alterna tra "S" e "A" (con richiesta salvataggio se ci sono modifiche). - Ctrl+A: inserisce nuova riga (
z-grid-det-nuova-riga), non possibile con filtro attivo. - Ctrl+E: svuota la riga corrente (logicamente la cancella), non possibile con filtro attivo.
- Shift+F4: gestione griglia (GRIDADMN).
- Shift+F5: esportazione Excel.
- Popup menu: gestito tramite
x-attiva-popup-grid-detcon valori exception 151-199.
Aggiornamento (b-aggiorna)¶
Scorre il file di transito e per ogni riga:
- Cancellazione: se t-gor-r-cod-prec valorizzato ma t-gor-r-cod vuoto, legge e cancella il record da COGTABEL.
- Modifica/Inserimento: se t-gor-r-riga-mod = "S" e codice valorizzato, chiama b-aggiorna-record:
1. Legge COGTABEL con tipo k-euta-tipo-um e codice.
2. Se non esiste, esegue wr-cogtabel; se esiste, fa rwr-cogtabel.
3. Copia t-gor-r-des in euta-um-des, t-gor-r-n-dec in euta-um-n-dec.
Validazione campi¶
x-controlla-tm-r-des: descrizione obbligatoria.x-controlla-tm-r-n-dec: massimo 3 decimali.
File utilizzati¶
| File | Tipo | Descrizione |
|---|---|---|
COGTABEL (feurtab) |
I-O | Tabella generica; tipo k-euta-tipo-um = unita' di misura |
| t-grid-det | Temp I-O | File di transito per griglia (creato/gestito automaticamente) |
Programmi chiamati¶
| Programma | Scopo |
|---|---|
| GRIDADMN | Gestione griglia (preparazione, personalizzazione) |
| W$MENU | Menu popup contestuale |
Copybook principali¶
| Copybook | Contenuto |
|---|---|
cogd89.select |
Select del programma |
cogd89.fd |
FD file aggiuntivi |
cogd89.wrk |
Working-storage generata |
cogd89.tm |
Dati modificabili della griglia (inclusi in tab-maschera) |
cogd89-01.scr |
Screen section |
cogd89.decla |
Declaratives |
cogd89.prc |
Procedure di servizio |
cogd89.imppredf |
Gestione filtri predefiniti |
cogd89.imppredf-wrk |
Working filtri predefiniti |
cogfiles.cpy |
FD COGTABEL |
feurtab.fd |
Select COGTABEL |
k-tipi-cogtabel.cpy |
Costanti tipi COGTABEL (include k-euta-tipo-um) |
utild89.cpy |
Linkage per scambio dati (selezione) |
utilgdad.cpy |
Interfaccia GRIDADMN |
wgrid.cpy |
Variabili gestione griglia |
utilimppredf.cpy |
Gestione impostazioni predefinite |
Note tecniche¶
- Questo programma usa il pattern "griglia modo A" con editing diretto sulle celle (a differenza di COGK37 e COGE18 che usano frame di dettaglio separato).
- L'aggiornamento e' "chirurgico": al salvataggio, solo le righe con
t-gor-r-riga-mod = "S"vengono scritte su COGTABEL. - La cancellazione e' logica: si svuota il codice nella riga; al salvataggio il record viene eliminato dal file quando
t-gor-r-cod-prece' valorizzato mat-gor-r-code' vuoto. - Il file di transito
t-grid-dete' gestito dalle copy standard (cogd89.prc) e supporta filtri sul transito o sulla griglia (k-filtro-su-griglia/k-filtro-su-transito). - I filtri predefiniti vengono caricati all'apertura e gestiti tramite le copy
cogd89.imppredf*. - Il menu contestuale popup e' costruito in
build-main-popup-grid-dete attivato con right-click sulla griglia.