Vai al contenuto

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-descr ridefinita da euta-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 (a4a10-loopa30)

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-des in cogt70-out-cod/cogt70-out-des e 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 controllo w-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-aggiornab-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-cancelladel-cogtabel
tm-cod = tm-cod-prec e riga modificata (tm-fl-riga-mod = "S") Modifica b2-modificarwr-cogtabel
tm-cod-prec = spaces Inserimento b1-inserisciwr-cogtabel
tm-codtm-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-prec per 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.