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¶
- 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. - Reset (
a4): reset maschera, impostazione livello (tm-liv), costruzione del nome del file di transito TRSMATRI#M85$<liv>.<operatore>, preparazione delle due griglie. - 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). - Ricerca via COGU07 (
a-avanti-2): in base atm-opechiama 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. - 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). - 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. - 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). - Gestione griglie (
a-grid2/a-grid3): per ciascuna griglia - aggiunta legame (Ctrl-A + inserimento matricola/SN, poi COGU07crea-link), eliminazione legame (Ctrl-E, COGU07cancella-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
cblconficonRECURSION 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-u07e 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 conmag-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 flagwo-oper = 777abilita la cancellazione matricola (F4). - Dimensione sorgente: circa 3.616 righe (
cbl/cogm85.cbl).