Vai al contenuto

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-chia2 include 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) e cogmovlt.k02 (per merce+lotto+magazzino), oltre a cogtrans.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).