Vai al contenuto

COGI54 - Legame Servizi vari a Merci

Sorgente: cbl/cogi54.cbl | Program-ID: COGI54 | Tipo: Programma interattivo (editor tabella con griglia, modalita' aggiornamento/selezione)

Menu: Magazzino > Archivi & Tabelle > Varie > Legame Servizi vari a Merci


Scopo

Gestisce l'associazione tra un codice "servizio vario" (prestazione) e una merce. I legami sono mantenuti su COGTABEL con tipo FM (k-euta-tipo): ogni riga collega una prestazione (euta-prest) a una merce (euta-merce) e ha un codice progressivo (euta-codr) generato automaticamente in fase di salvataggio.

Pattern standard "editor tabella" con griglia editabile e duplice modalita' aggiornamento/selezione. La modalita' selezione (chiamata esterna via w-dc-called = "S") e' predisposta ma attualmente disattivata nel codice (il ramo cogi54-called/cogi54-caller e' commentato in apri).


Struttura della maschera

Screen definita in cogi54-01.scr. Maschera a griglia unica (e-tm-tab), array tm-righe (max k-max-ele-tab = 500).

Colonne della griglia (tab-maschera / tm-grid-dati-ele):

  • tm-prest: codice prestazione (servizio vario)
  • tm-merce-cm: codice merce collegata (gestito via COGS68W, aiuto merce)
  • tm-cod: codice progressivo del legame (euta-codr)

Tasti funzione:

  • F3: in modalita' aggiornamento salva la tabella e torna in selezione; in modalita' selezione passa in aggiornamento (o conferma la selezione se chiamato esternamente).
  • Invio: in modalita' selezione conferma l'elemento corrente e ritorna.
  • Ctrl+A / Ctrl+E: aggiungi / elimina (marca) una riga (solo in modalita' aggiornamento).
  • S-F4: GRIDADMN per personalizzazione griglia.
  • F8 aiuto, F9 ricerca avanzata.

La marcatura di eliminazione imposta tm-stato (i) = "D" (riga colorata con w-color-cancellato); la cancellazione effettiva avviene al salvataggio.


Logica di elaborazione

Apertura (apri): init programma, apertura file, lettura azienda, impostazione tasti funzione. Titolo maschera forzato a "Legame Servizi vari a Merci". Modalita' impostata ad "A" (aggiornamento) salvo il ramo selezione (commentato).

Caricamento griglia (a4 / a10-loop): start su COGTABEL con euta-tipo = "FM" (st-cogtabel-notmin), scan in sequenza fino a rottura del tipo o a k-max-ele-tab. Per ogni record carica euta-prest, euta-merce, euta-codr nella griglia.

Gestione griglia (a-grid / a-accept-grid): accept sulla griglia con gestione eventi mouse (x-test-mouse), doppio click/invio, S-F4 (GRIDADMN), F3, Invio, Ctrl+A, Ctrl+E.

Salvataggio (a1-aggiorna / b-aggiorna):

  1. Valida tutte le righe (x-controlla-tm-tab-tutto).
  2. Cancella e riscrive tutto: scandisce COGTABEL tipo FM e cancella ogni record esistente (del-cogtabel), poi reinserisce le righe correnti della griglia.
  3. Per ogni riga non marcata "D" (b1-inserisci): scrive un nuovo record con euta-codr = w-cod; in caso di chiave duplicata (w-verbo-invalido) incrementa w-cod e riprova finche' la write ha successo. Il codice progressivo e' quindi assegnato in cascata e non conservato dall'utente.

Controllo cancellazione (c1-ctrl-canc): verifica solo che la griglia non sia vuota; non ci sono dipendenze da altri archivi.


File utilizzati

File/Tabella Tipo Modalita' Descrizione
FEURTAB ISAM Input Parametri generali azienda
COGTABEL (euta-rec) ISAM I-O Tabella generica; tipo FM = legame prestazione/merce (record principale)

La chiave usata e' euta-tipo + euta-codr (chiave primaria); la scansione di caricamento e cancellazione avviene per tipo.

Programmi chiamati

Programma Utilizzo
GRIDADMN Preparazione e personalizzazione griglia (S-F4)
COGS68W (via utils68/z-s68-tm-merce) Aiuto e selezione codice merce sulla cella merce

Le routine di lettura/scrittura COGTABEL (st-cogtabel-notmin, rdnxt-cogtabel, wr-cogtabel, del-cogtabel) sono generate nel copybook cogi54.prc.

Copybook principali

Copybook Contenuto
cogi54.select, cogi54.fd, cogi54.wrk, cogi54-01.scr, cogi54.prc, cogi54.decla Screen Designer: select, FD, working, screen, procedure, declaratives
cogfiles.cpy Layout FEURTAB
wgrave, wnscr, wopenf, wstato, cogazien Working storage standard + dati azienda
wgrid.cpy, utilgdad.cpy Working griglia + linkage GRIDADMN
utile04.cpy Linkage COGE04 (utility generica)
utils68.cpy Linkage COGS68W (aiuto merce)
wcont.cpy, wcont1.cpy Linkage standard
grave, mmmask, opengen, stato, stato1, winmsg Copybook standard di fine procedure

Note tecniche

  • Il tipo COGTABEL e' definito da k-euta-tipo = "FM".
  • Il salvataggio adotta la strategia "cancella tutto e riscrivi": tutti i record tipo FM vengono eliminati e ricreati dalla griglia. I codici progressivi (euta-codr) non sono stabili tra due salvataggi.
  • La write in b1-inserisci gira in loop perform until w-verbo-ok incrementando w-cod su chiave duplicata: garantisce un codice libero ma non preserva l'eventuale codice originale.
  • Massimo righe griglia: k-max-ele-tab = 500.
  • Il colore delle righe cancellate e' w-color-cancellato (valore "2465").
  • Le routine c1-ctrl-canc, b-aggiorna, b1-inserisci sono richiamate con PERFORM ... THRU verso i paragrafi ex-* (pattern legacy presente nel sorgente originale).