COGMA9 - Visualizzazione lotti merce in scadenza¶
Panoramica¶
Programma interattivo GUI che visualizza in una griglia paginata i lotti di merce con relativa data di scadenza, filtrati per intervallo di date di scadenza, magazzino, merce ed eventuale fornitore di acquisto. E' una visualizzazione di sola consultazione: estrae i lotti attivi dall'anagrafica lotti (COGMERLT), li raccoglie in un file di transito temporaneo e li presenta in griglia con quantita', data di scadenza e data di produzione, senza aggiornare gli archivi.
Il filtro principale e' l'intervallo di date di scadenza ("Da data" / "A data", entrambe obbligatorie): la scansione dei lotti parte proprio dalla chiave per data di scadenza (cogmerlt.k04), cosi' da elencare i lotti in ordine di scadenza. Se viene indicato un fornitore, il programma risale al fornitore di acquisto del lotto attraverso i movimenti di lotto (COGMOVLT) e la testata bolla di carico (COGTESBO).
Posizione nel menu¶
| Menu | Percorso |
|---|---|
| Magazzino | Giacenze & Sottoscorta > Lotti merce > Lotti in scadenza |
Struttura del programma¶
File e tabelle utilizzati¶
| File/Tabella | Tipo | Descrizione |
|---|---|---|
| FEURTAB | Input | Tabella di sistema |
| COGMERCI | Input | Anagrafica merci (controllo esistenza merce) |
| COGGEANA | Input | Anagrafica fornitori/clienti (controllo fornitore, descrizione) |
| COGMAGAZ | Input | Anagrafica magazzini (descrizione magazzino) |
| COGTESBO | Input | Testate bolle/documenti (usata per risalire al fornitore di carico) |
| COGMERLT | I-O | Anagrafica lotti merce (fonte primaria dell'estrazione, scansione per data di scadenza via .k04) |
| COGMOVLT | Input | Movimenti di lotto (usati per collegare il lotto alla testata di carico via .k02) |
| COGTRANS | I-O (temp) | File di transito indicizzato, nome univoco per operatore, che raccoglie i lotti estratti prima di popolare la griglia |
| EXP-GRID | Output | File sequenziale per l'export Excel della griglia |
Il file COGMERLT viene aperto una prima volta dalla routine standard e poi richiuso e riaperto esplicitamente in i-o in coda al paragrafo apri.
Copybook principali¶
| Copybook | Descrizione |
|---|---|
| cogma9.select / cogma9.fd | SELECT e File Description (generati da Screens) |
| cogma9.wrk / cogma9.prc / cogma9.decla | Working storage, procedure di I/O e declaratives generati |
| cogma9-01.scr | Screen section |
| cogmerlt.k04 | Chiave secondaria lotti (per data di scadenza) - inclusa manualmente |
| cogmovlt.k02 | Chiave secondaria movimenti di lotto - inclusa manualmente |
| cogtrans.k01 / cogtrans.k02 | Chiave primaria e secondaria del transito |
| k-u10.cpy | Costanti per COGU10 |
| cogazien.cpy | Dati azienda |
| wgrid.cpy / utilgdad.cpy / fscrol2.cpy / utilpggr.cpy | Gestione griglia e paginazione (GRIDADMN) |
| utils52.cpy / utils65.cpy / utils68.cpy | Interfacce data (COGS52), ricerca anagrafica (COGS65W) e merce (COGS68W) |
| utilw36.cpy / sendw36.cpy | Interfaccia e chiamata all'help magazzino (COGW36) |
| dtab.cpy | Utility tabelle |
| wstato / wgrave / wopenf / wnscr | Working storage standard |
Chiamate a sottoprogrammi (CALL)¶
| Programma | Scopo |
|---|---|
| GRIDADMN | Gestione e personalizzazione della griglia paginata |
| COGS65W | Ricerca/help anagrafica fornitore |
| COGS68W | Ricerca/help merce (gruppo/sottogruppo/codice) |
| COGS52 | Gestione/validazione campo data (via utils52) |
| COGW36 | Help/ricerca magazzino (via sendw36) |
Logica di elaborazione¶
1. Inizializzazione (apri)¶
Controlla l'abilitazione (ctr-abil), inizializza il programma, legge i dati azienda (rd-azi), apre i file e costruisce il nome univoco del file di transito COGTRANS combinando directory temporanea, slash del sistema operativo, prefisso #$, k-program-id e operatore. Attiva i tasti funzione previsti (F3 conferma, F4 cancella, F8 aiuto/movimenti, F9 stampa/ricerca avanzata, Shift-F4 griglia, Shift-F5 esporta Excel). Imposta il titolo "Visualizzazione lotti in scadenza", prepara i controlli e la griglia (z-costruisci-controlli, z-prepara-tm-grid). In coda richiude e riapre COGMERLT in i-o.
2. Reset (a4)¶
Svuota la griglia e la struttura tab-maschera, azzera il contatore n-m, carica i controlli (z-carica-controlli) e ricostruisce la griglia vuota; riattiva il tasto F3 di conferma.
3. Accept dei filtri¶
Serie di paragrafi a-tm-* per l'immissione dei parametri di ricerca, con navigazione F2 (indietro) / F3 (conferma diretta, salta a a-fine-dati) / mouse (x-test-mouse):
a-tm-da-data/a-tm-a-data: date di scadenza, gestite via COGS52 con calendario (F8); entrambe obbligatorie, con controllo che "Da data" non sia maggiore di "A data";a-tm-mag: magazzino, con help F8 tramite COGW36 (send-w36); spazio = tutti i magazzini;a-tm-for: fornitore, gestito via COGS65W;a-tm-merce: merce (gruppo/sottogruppo/codice), gestita via COGS68W.
Ogni campo ha il proprio paragrafo x-controlla-tm-* di validazione; x-controlla-dati li richiama tutti in cascata per la validazione complessiva.
4. Estrazione dati (a-fine-dati / carica-file)¶
Dopo la validazione complessiva (x-controlla-dati) e la conferma (acc-conf / F3), il programma richiude e ricrea il file di transito COGTRANS (con gestione dell'errore stato 93 = funzione gia' in uso con lo stesso operatore) e lo riapre in i-o, quindi esegue carica-file.
In carica-file:
- inizializza il record lotti, imposta mlt-data-scad = tm-da-data ed esegue la start per chiave secondaria data di scadenza (st-cogmerlt-notmin-chia4);
- leggi-cogmerlt legge il lotto successivo (rdnxt-cogmerlt) e determina la fine scansione quando la data di scadenza supera tm-a-data;
- tratta-cogmerlt seleziona il lotto se e' attivo (mlt-stato = "A"), se il magazzino corrisponde al filtro (o filtro vuoto) e se la merce corrisponde al filtro (o filtro nullo);
- se e' stato indicato un fornitore, richiama a1-cerca-fornitore e scarta il lotto se il fornitore di acquisto non coincide;
- per i lotti selezionati scrive il record nel transito COGTRANS (wr-cogtrans), valorizzando trs-chia1 con la chiave del lotto e trs-chia2 con data di scadenza + chiave (per l'ordinamento per scadenza).
5. Ricerca del fornitore di acquisto (a1-cerca-fornitore)¶
Dato un lotto, scandisce i movimenti di lotto COGMOVLT per merce+lotto+magazzino (chiave secondaria .k02): al primo movimento di tipo carico (mvl-tip = "C") legge la testata bolla collegata in COGTESBO (tes-chia3 = mvl-chiave-testa) e restituisce in a1-for il codice fornitore (tes-nonno).
6. Caricamento griglia (a-fine-dati-called / z-costruisci-grid / x-riempi-grid-record)¶
Le routine di paginazione (fscrol2 / utilpggr / GRIDADMN) rileggono il transito COGTRANS per chiave secondaria (per data di scadenza) e riempiono la struttura tab-maschera. Per ogni riga, x-riempi-grid-record rilegge il lotto in COGMERLT (rd-cogmerlt) e valorizza il record video grid-record con: merce, magazzino e sua descrizione (da COGMAGAZ), progressivo lotto, codice lotto, quantita', data di scadenza e data di produzione (formattate gg/mm/aaaa). Se nessun lotto viene trovato viene mostrato "Nessun movimento trovato".
7. Interazione sulla griglia (a-grid)¶
Gestisce ESC (uscita), Shift-F4 (personalizzazione colonne via GRIDADMN), Shift-F5 (export Excel su EXP-GRID) e Pag su/giu' (paginazione avanti/indietro sul transito, con avvisi di fine dati).
8. Chiusura (fine / z-chiudi)¶
Chiude i file, chiude ed elimina il file di transito COGTRANS, annulla COGS68W, chiude la finestra ed esce.
Note tecniche¶
- File di transito: COGTRANS e' indicizzato con doppia chiave;
trs-chia2include la data di scadenza come prefisso in modo che la griglia elenchi i lotti in ordine di scadenza. Il nome file e' univoco per operatore ed e' creato all'ingresso e cancellato in uscita. In fase di conferma il nome viene ricostruito con il prefisso#$trscogma9.seguito dall'operatore. - Chiave di estrazione: la fonte primaria e' COGMERLT scandita per data di scadenza (
cogmerlt.k04); vengono considerati solo i lotti con stato attivo (mlt-stato = "A"). - Chiavi secondarie incluse manualmente:
cogmerlt.k04(per data scadenza) ecogmovlt.k02(per merce+lotto+magazzino), oltre acogtrans.k01/cogtrans.k02, sono aggiunte in coda alla procedure division. - Filtro fornitore: il fornitore non e' un campo dell'anagrafica lotti; viene ricavato risalendo dal lotto al movimento di carico (COGMOVLT tipo "C") e da questo alla testata bolla (COGTESBO), leggendone
tes-nonno. Il messaggio di errore del campo fornitore recita "Lavorante errato". - Controllo di configurazione disabilitato: nel sorgente e' presente, ma commentato, un controllo che richiederebbe la configurazione "Gestione Lotti" impostata a "C" (Completa) per accedere al programma; attualmente e' inattivo.
- PERFORM THRU legacy: il programma usa alcuni
PERFORM ... THRU(es.carica-file thru ex-carica-file,cstato thru ex-cstato) tipici dello stile precedente alle convenzioni attuali. - Dimensione sorgente: circa 1.278 righe (
cbl/cogma9.cbl).