COGT70 — Qualita' articoli¶
Sorgente: cbl/cogt70.cbl | Tipo: Programma interattivo a griglia (anche richiamabile come selettore) | Program-ID: COGT70
Menu: Magazzino > Archivi & Tabelle > Tabelle > Qualita' articoli
Scopo¶
Gestisce la tabella "Qualita' articoli", ovvero l'elenco codificato delle qualità attribuibili agli articoli. Ogni voce è composta da un codice, una descrizione ed eventuale codice host (per la sincronizzazione con sistemi esterni).
I dati sono memorizzati nella tabella generalizzata COGTABEL (record euta) con tipo euta-tipo-x = "FV". Oltre alla gestione autonoma (inserimento/modifica/cancellazione), COGT70 può essere richiamato da un altro programma come selettore: in tal caso restituisce al chiamante il codice e la descrizione della qualità scelta.
File e tabelle principali¶
| File/Tabella | Copybook | Uso |
|---|---|---|
| COGTABEL | cogtabel.cpy (via feurtab) |
Tabelle generalizzate; questo programma tratta i record con euta-tipo-x = "FV" |
| COGAZIEN | cogazien.cpy |
Dati azienda |
util-cogt70 (linkage) |
utilcogt70.cpy |
Area di dialogo con il chiamante |
Griglia tm-tab (grid editabile tm-grid-dati) |
(Screens) | Righe qualità in memoria (max k-max-ele-tab = 500) |
Struttura dei record COGTABEL (tipo "FV")¶
euta-tipo-x = "FV"(chiave, primi 2 char);euta-cod= codice qualità (tm-cod, 2 char significativi);euta-descrridefinita daeuta-qualita-art:euta-qla-des(descrizione,tm-des) +euta-qla-codice-host(codice host,tm-cod-host).
Area di dialogo util-cogt70 (utilcogt70.cpy)¶
| Campo | Uso |
|---|---|
cogt70-caller |
Program-ID del chiamante (se valorizzato → modalità selettore) |
cogt70-called |
Deve valere "COGT70" per attivare la modalità selettore |
cogt70-out-cod |
In uscita: codice qualità selezionato |
cogt70-out-des |
In uscita: descrizione qualità selezionata |
Flusso di elaborazione¶
Determinazione modalità (main)¶
All'avvio il programma verifica util-cogt70: se cogt70-called = "COGT70" e cogt70-caller not = spaces, imposta w-dc-called = "S" e parte in modalità selezione (a-modalita = "S"); altrimenti parte in aggiornamento (a-modalita = "A"). I tasti funzione attivi cambiano di conseguenza (F3-selezione/F3-modifica in modalità richiamata, F3-aggiorna in modalità autonoma).
Caricamento griglia (a4 → a10-loop → a30)¶
st-cogtabel-notmin posizionato su euta-tipo-x = "FV", poi loop rdnxt-cogtabel. Il loop si ferma quando euta-tipo-x <> "FV", e per ogni record valorizza una riga della griglia editabile: tm-cod e tm-cod-prec = euta-cod, tm-des = euta-qla-des, tm-cod-host = euta-qla-codice-host. Il campo tm-cod-prec conserva il codice originale della riga ed è il perno della logica di aggiornamento.
Gestione griglia (a-grid / a-accept-grid)¶
- INVIO / doppio click in modalità selezione → restituisce
tm-cod/tm-desincogt70-out-cod/cogt70-out-dese chiude; - CTRL-A (solo aggiornamento) → aggiunge una riga vuota alla griglia (
z-aggiungi-riga-tm-tab); - CTRL-E (solo aggiornamento) → azzera la riga corrente conservando
tm-cod-prec(per marcarla come cancellazione), previo controllow-abi-del; - F3 → in modalità autonoma esegue l'aggiornamento (
a1-aggiorna) e, se ok, esce; in modalità richiamata commuta tra selezione e aggiornamento (con eventuale salvataggio pendente).
La modifica di una cella è consentita solo su codici già esistenti se l'utente ha w-abi-agg (controllo in z-event-tm-tab-ep).
Aggiornamento tabella (a1-aggiorna → b-aggiorna)¶
Prima si validano tutte le righe (x-controlla-tm-tab-tutto, che richiama x-controlla-tm-cod — no codici duplicati — e x-controlla-tm-des — descrizione obbligatoria). Poi b-aggiorna scorre la griglia e, confrontando tm-cod con tm-cod-prec, decide l'operazione:
| Condizione | Operazione | Paragrafo |
|---|---|---|
tm-cod = spaces e tm-cod-prec valorizzato |
Cancellazione | b3-cancella → del-cogtabel |
tm-cod = tm-cod-prec e riga modificata (tm-fl-riga-mod = "S") |
Modifica | b2-modifica → rwr-cogtabel |
tm-cod-prec = spaces |
Inserimento | b1-inserisci → wr-cogtabel |
tm-cod ≠ tm-cod-prec (entrambi valorizzati) |
Cancella + reinserisci | b3-cancella + b1-inserisci |
In inserimento, se il codice esiste già viene chiesta conferma di sovrascrittura; in modifica, se il codice non esiste più viene chiesto se ricrearlo.
Chiamate a sottoprogrammi¶
| CALL | Scopo |
|---|---|
GRIDADMN |
Gestione griglia editabile (preparazione colonne, svuota/personalizza) |
Il programma sfrutta il framework di griglia editabile Screens (z-99-accept-tm-tab, x-trova-col-num-tm-tab, z-usa-tf-tm-tab, x-modify-riga-tm-tab, ecc.) e le copy standard mmmask.cpy, wgrid.cpy, utilgdad.cpy.
Note¶
- La logica di aggiornamento non riscrive l'intera tabella: confronta riga per riga
tm-cod/tm-cod-precper applicare solo le differenze (insert/update/delete/rename). Il rename è realizzato come cancellazione del codice vecchio + inserimento del nuovo. - Il numero massimo di qualità gestibili in griglia è 500 (
k-max-ele-tab). - I paragrafi di gestione tf per cella (
z-usa-tf-tm-tab-ep,z-gestione-tf-tm-tab-ep,z-tm-tab-cod-be-ep) sono presenti ma vuoti/commentati: questa tabella non ha campi con aiuto o F-key dedicate a livello di cella.