Vai al contenuto

COGM85 - Visualizzazione e Gestione Matricole e Serial Numbers

Sorgente: cbl/cogm85.cbl | Tipo: Programma interattivo con doppia griglia (Screen Designer), ricorsivo | Program-ID: COGM85

Menu:

  • Magazzino > Visualizzazioni > Serial Numbers > Matricole & SerialNumbers

Scopo

Visualizzazione e gestione delle matricole e dei serial number degli articoli. Data una chiave di ricerca - matricola (anno/numero), serial number, oppure parametri (serial number + fornitore + merce), oppure cliente - il programma recupera la matricola corrispondente e ne mostra il dossier completo: merce, cliente/fornitore, documento di entrata e di uscita, riferimenti fattura/reso, lavorazione, prezzo merce e cauzione, data di garanzia e note aggiuntive.

Oltre alla visualizzazione, gestisce la rete di legami tra matricole (padre/figlio): due griglie affiancate mostrano le matricole padri (di cui la matricola corrente e' figlia) e le matricole figlie (di cui la corrente e' padre). L'operatore puo' creare/eliminare legami, modificare data garanzia e note, stampare etichette e - da voce di menu con wo-oper = 777 - cancellare l'intera matricola.

Il programma e' ricorsivo (richiede cblconfi con RECURSION 1): da una griglia, con F7, si "scende" su una matricola padre o figlia richiamando COGM85 stesso a un livello superiore (m85-liv + 1), permettendo di navigare l'albero dei legami.

Tutta la logica pesante di ricerca, lettura, scrittura e cancellazione delle matricole e dei legami e' delegata al sottoprogramma COGU07, che popola un file di transito TRSMATRI poi letto per riempire le griglie.


Struttura del programma

Flusso principale

  1. Inizializzazione (apri): apertura file, lettura configurazione RNEWCONF (x99-load-config), lettura parametri di chiamata (m85-caller, m85-liv, m85-mat, m85-mat-caller), creazione dei due transiti di griglia ("Padri" e "Figlie"), creazione pulsanti custom (F5 Stampa etichette, F7 Visualizza matricola) e menu contestuali.
  2. Reset (a4): reset maschera, impostazione livello (tm-liv), costruzione del nome del file di transito TRSMATRI #M85$<liv>.<operatore>, preparazione delle due griglie.
  3. Sezione ricerca (a-tm-ope .. a-tm-for): scelta dell'operazione (tm-ope: M=matricola, S=serial number, P=parametri, C=cliente) e immissione della chiave: anno/numero matricola, serial number, merce (COGS68W), cliente/fornitore (COGS65W).
  4. Ricerca via COGU07 (a-avanti-2): in base a tm-ope chiama COGU07 con l'operazione appropriata (cerca-matricola, cerca-sn, win-select-cliente) passando il nome del transito TRSMATRI; COGU07 individua la matricola padre e riempie TRSMATRI con i legami.
  5. Caricamento dossier (a-fine-chiave-ins / carica-dati / carica-maschera-da-u07): valorizza tutti i campi della maschera dai dati restituiti da COGU07 (anagrafiche via COGGEANA, merce via COGMERCI, documenti via COGTESBO, fattura via COGFATTU, prezzo merce/cauzione via COGMOMAG, note via COGDESAG/GESSTR).
  6. Caricamento griglie (carica-griglia-2 / carica-griglia-3): scansione di TRSMATRI per i legami padre (chiave figlia = matricola corrente) e figlia (chiave padre = matricola corrente), riempimento dei rispettivi transiti di griglia.
  7. Gestione campi editabili (a-tm-data-garanzia, a-tm-note): data garanzia e note aggiuntive sono modificabili; la modifica della data garanzia richiama COGU07 (scrivi-matricola), la modifica delle note riscrive COGDESAG (via GESSTR per lo split in righe).
  8. Gestione griglie (a-grid2 / a-grid3): per ciascuna griglia - aggiunta legame (Ctrl-A + inserimento matricola/SN, poi COGU07 crea-link), eliminazione legame (Ctrl-E, COGU07 cancella-link), drill-down ricorsivo (F7, richiama COGM85), stampa etichette (F5, COGP20), export Excel (Shift-F5), personalizzazione colonne (Shift-F4).

Cancellazione matricola

Solo con wo-oper = 777 (voce di menu dedicata) e' attivo F4: con doppia conferma chiama COGU07 cancella-matricola, che elimina la matricola e tutti i suoi riferimenti/legami.

Ricorsione

Con F7 su una riga di griglia, se la matricola selezionata non e' quella chiamante, il programma richiama se stesso (call k-program-id) incrementando il livello (m85-liv + 1) e passando la nuova matricola. Al ritorno si continua sulla griglia. Il nome del transito TRSMATRI include il livello (#M85$<liv>) per non collidere tra istanze annidate.


Tabelle e file

File logico Prefisso Accesso Descrizione
FEURTAB - Input Tabella di sistema (feurtab.fd)
TRSMATRI tmt- I-O (temp) File di transito indicizzato dei legami matricola padre/figlia, popolato da COGU07; nome univoco #M85$<liv>.<operatore>. Letto (chiavi .k01 e .k04) per riempire le griglie Padri/Figlie
COGMATRI mtr- Input Anagrafica matricole (verifica esistenza e lettura serial number mtr-sn)
COGGEANA ana- Input Anagrafica clienti/fornitori (descrizioni)
COGMERCI mer- Input Anagrafica merci (descrizione merce)
COGTESBO tes- Input Testate bolle/documenti (documento di entrata/uscita, tipo cliente/fornitore)
COGMOMAG mag- Input Movimenti di magazzino (prezzo merce e valore cauzione, gruppo "CA")
COGFATTU fat- Input Fatture (data fattura del riferimento fattura di uscita)
COGDESAG dag- I-O Descrizioni aggiuntive di riga (dag-r-m = "T", per matricola): note aggiuntive lette e riscritte

Le altre tabelle (documenti, anagrafiche, movimenti matricola/legami) sono lette internamente da COGU07, che restituisce i dati aggregati nell'area util-u07 e nel transito TRSMATRI.


COPY incluse

Working-Storage

cogm85.wrk, k-tipi-cogtabel.cpy, k-personal.cpy, wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, wgrid.cpy, utilgdad.cpy, utilncnf.cpy, utilu10.cpy, k-u10.cpy, wrk-u10.cpy, utilu20.cpy, utilu07.cpy, utils52.cpy, utils65.cpy, utils68.cpy, utilgesstr.cpy, utildlg.cpy

File section

feurtab.fd, cogfiles.cpy, cogm85.fd, trsmatri.fd, trsmatri.cpy

Linkage

wcont.cpy (con redefine util-m85: m85-liv, m85-mat, m85-mat-caller, m85-caller), utilp20.cpy (interfaccia COGP20), wcont1.cpy

Screen / Procedure Division

cogm85-01.scr, cogm85.decla (con trsmatri nelle declaratives), grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, getdcont.cpy, chiavi trsmatri.k01 e trsmatri.k04, cogm85.prc


CALL a sottoprogrammi

Programma Scopo
COGU07 Motore matricole/legami: ricerca (cerca-matricola, cerca-sn, win-select-cliente), gestione legami (crea-link, cancella-link), scrittura (scrivi-matricola), cancellazione (cancella-matricola); popola il transito TRSMATRI
GRIDADMN Gestione delle due griglie paginate (Padri / Figlie)
RNEWCONF Lettura configurazioni
COGS65W Ricerca/help anagrafica cliente e fornitore
COGS68W Ricerca/help merce (via utils68.cpy)
COGP20 Stampa etichette matricola (F5, via utilp20.cpy)
GESSTR Composizione/scomposizione delle note aggiuntive in righe (COGDESAG)
W$MENU Menu contestuale griglia (right-click)

Configurazioni RNEWCONF

Lette nel paragrafo x99-load-config (pacchetto "C", percorso configurazione COGM85.CNF):

Chiave Campo Descrizione
GESTIONE LEGAMI tm-cfg-ges-link Modalita' di gestione dei legami tra matricole. Valori ammessi "M" o "S"; se diverso viene forzato a "M" di default

Note tecniche

  • Programma ricorsivo: la testata del sorgente segnala che COGM85 necessita di cblconfi con RECURSION 1. La ricorsione (F7 su griglia) permette di navigare l'albero padre/figlio delle matricole; ogni livello usa un proprio transito TRSMATRI (#M85$<liv>) e la maschera mostra "Liv. n".
  • Delega a COGU07: il programma e' essenzialmente un front-end grafico su COGU07; tutta la ricerca, la lettura aggregata del dossier matricola e la manutenzione dei legami passa da COGU07 tramite l'area util-u07 e il transito TRSMATRI. Cio' evita di duplicare la logica di attraversamento di documenti, movimenti e legami.
  • Prezzo merce e cauzione (search-prezzo-merce-e-cauzione): scandisce COGMOMAG del documento di uscita per estrarre il prezzo della merce della matricola e, separatamente, il valore della cauzione (righe con mag-gru3 = "CA").
  • Note su COGDESAG: le note aggiuntive della matricola sono memorizzate su COGDESAG con dag-r-m = "T" e chiave matricola; in lettura vengono ricomposte con GESSTR (COMPONI-NOTE), in scrittura scomposte in righe da 40 caratteri (SCOMPONI-NOTE) dopo cancellazione delle precedenti.
  • Personalizzazioni aziendali: per az-personal "VE"/"OP" l'operazione di default all'ingresso e' impostata a "S" (ricerca per serial number). Il flag wo-oper = 777 abilita la cancellazione matricola (F4).
  • Dimensione sorgente: circa 3.616 righe (cbl/cogm85.cbl).