Vai al contenuto

COGM118 - Gestione Archivio LIFO

Panoramica

Programma interattivo a carattere (interfaccia testuale su maschera fissa 24x80, non a griglia GUI) per la consultazione e la manutenzione dell'archivio di valorizzazione LIFO del magazzino (file COGMLIFO). Consente di scorrere, per magazzino e anno LIFO, i valori LIFO di ciascuna merce (giacenza del 15mo elemento, valore, prezzo e flag rottamato), di modificarne prezzo e stato di rottamazione, e di calcolare i totali di valore LIFO (generale, rottamati, non rottamati).

E' l'archivio prodotto dalla valorizzazione LIFO annuale del magazzino: per ogni combinazione magazzino/anno/merce mantiene la giacenza LIFO, il relativo valore e prezzo unitario e l'indicazione se la merce e' prodotto finito o materia prima e se e' rottamata. Il programma permette la consultazione e la rettifica puntuale (in rewrite) di questi valori.

Posizione nel menu

Menu Percorso
Magazzino Controllo Magazzino > Lifo > Gestione Archivio

Struttura del programma

File e tabelle utilizzati

File/Tabella Tipo Descrizione
FEURTAB Input Tabella di sistema
COGTABEL Input Tabella generica
COGMERCI Input Anagrafica merci (descrizione)
COGMAGAZ (COGMAGA2) Input Anagrafica magazzini (descrizione magazzino)
COGMLIFO I-O Archivio valorizzazione LIFO: fonte primaria; letto in scansione e aggiornato in rewrite

Copybook principali

Copybook Descrizione
cogtabel.fd / cogmerci.fd / cogmaga2.fd / cogmlifo.fd File Description delle tabelle
cogtabel.cpy / cogmerci.cpy / cogmaga2.cpy / cogmlifo.cpy Layout record delle tabelle
cogtabel.k01 / cogmerci.k01 / cogmaga2.k01 / cogmlifo.k01 Chiavi primarie
cogazien.cpy Dati azienda
utils21.cpy Interfaccia campo a scelta S/N (COGS21) per il flag rottamato
utils52.cpy Interfaccia campo data/anno (COGS52)
utils60.cpy Interfaccia campo a lista/combo (COGS60) per la divisa
utils68.cpy Interfaccia ricerca merce (COGS68)
utilu10.cpy Interfaccia edita/arrotonda/cambio importi in divisa (COGU10)
utilw36.cpy / sendw36.cpy Interfaccia e chiamata all'help magazzino (COGW36)
tstfun2.cpy Gestione tasti funzione di scorrimento tabella a carattere
mmmask.cpy / dtab.cpy / open1.cpy Utility maschera, tabelle e apertura file
wstato / wgrave / wopenf / wnscr Working storage standard

La maschera video e' definita direttamente nel sorgente nella struttura mm-1 (24 righe da 80 caratteri con cornici a caratteri semigrafici), non tramite Screen Designer.

Chiamate a sottoprogrammi (CALL)

Programma Scopo
COGS52 Gestione/validazione del campo anno LIFO
COGS60 Selezione della divisa (Lira/Euro)
COGS68 Ricerca/help merce (per la visualizzazione e per il salto a una merce)
COGS21 Immissione del flag "merce rottamata" (S/N)
COGU10 Edita, arrotonda e converte importi (valore/prezzo/totali) nella divisa scelta
COGW36 Help/ricerca magazzino (via sendw36)

Logica di elaborazione

1. Inizializzazione (a000 / a4)

Controlla l'abilitazione, apre i file, legge i dati azienda e imposta la maschera mm-1 (24x80). Il paragrafo a4 visualizza la maschera, il titolo "Gestione Archivio LIFO" e la barra dei tasti funzione (ESC = Esci), azzera il contatore righe e la struttura tab-maschera.

2. Richiesta parametri (a20 / a30 / a40 / a90)

  • a20 / a20-mag: richiesta magazzino, con help F8 tramite COGW36; spazio = tutti i magazzini, altrimenti verifica l'esistenza in COGMAGAZ e ne mostra la descrizione;
  • a30: richiesta anno LIFO tramite COGS52;
  • a40: richiesta divisa tramite COGS60 (opzioni "Lira" L01 / "Euro" E01);
  • a90: conferma (acc-conf / F3) per procedere alla visualizzazione.

3. Visualizzazione e scorrimento (b-visualizza)

Imposta il record LIFO con magazzino e anno richiesti ed esegue una restart in avanti (rst-next) sull'archivio COGMLIFO. Riempie una pagina di massimo 15 righe (t-size = 15) nella struttura tab-maschera, saltando i record non coerenti con il magazzino o l'anno filtrati (x2-controlli-read). Per ogni riga (x31-fill-tab) legge la descrizione merce da COGMERCI e, se la divisa dell'archivio (lif-currency) e' diversa da quella scelta, converte valore e prezzo tramite COGU10 (operazione "Cambio").

La navigazione avviene con le frecce su/giu' per lo spostamento cella e con Pag su/giu' per il cambio pagina (rst-next / rst-previous, che gestiscono le restart in avanti e all'indietro sull'archivio, con avviso se non ci sono ulteriori movimenti). I tasti funzione disponibili sono:

  • F5 = Gestione Prezzo/Rottamato (x5-prezzo);
  • F6 = Ricerca Merce, cioe' salto a una merce (b12-jump-des);
  • F9 = Totali (x9-totali).

4. Modifica prezzo e flag rottamato (x5-prezzo)

Sulla riga selezionata richiede il nuovo prezzo tramite COGU10 (con controllo che non sia zero), ricalcola il valore come prezzo * quantita' (tmr-valore = tmr-prezzo * tmr-qta, arrotondato via COGU10), quindi richiede il flag "merce rottamata" (N/S) tramite COGS21. Rilegge il record LIFO da COGMLIFO (rd-lif): se la divisa dell'archivio coincide con quella scelta scrive direttamente i nuovi valore e prezzo, altrimenti li riconverte nella divisa dell'archivio (COGU10 operazione "Cambio") prima di scriverli; aggiorna anche il flag rottamato. Infine esegue il rewrite del record su COGMLIFO.

5. Salto a una merce (b12-jump-des)

Apre una finestra pop-up "Ricerca Merce" con help COGS68 e, selezionata la merce, riposiziona la scansione dell'archivio LIFO su quella merce (start su lif-merce decrementato di 1 seguito da rst-next).

6. Calcolo totali (x9-totali)

Scandisce l'intero archivio COGMLIFO per magazzino e anno filtrati, convertendo ogni valore nella divisa scelta tramite COGU10 quando necessario, e accumula tre totali: generale (w-totgen), non rottamati (w-totnorot, dove lif-rottamato = "N") e rottamati (w-totrot). I tre totali vengono mostrati in un box messaggi editati con COGU10.

7. Chiusura (fine / z-chiudi)

Chiude le tabelle COGTABEL, COGMERCI, COGMAGAZ, COGMLIFO, chiude la finestra ed esce.

Note tecniche

  • Interfaccia a carattere: a differenza dei programmi di visualizzazione piu' recenti (che usano griglia GUI e GRIDADMN), COGM118 e' un programma a maschera testuale fissa. La tabella a video e' gestita con paginazione manuale a 15 righe (t-size/t-start) tramite le routine rst-next/rst-previous/src-next/src-previous e la copybook tstfun2 per lo scorrimento.
  • Aggiornamento archivio: e' l'unico dei quattro programmi documentati in questo gruppo che modifica gli archivi: apre COGMLIFO in i-o e ne esegue il rewrite per rettificare prezzo, valore e flag rottamato di una singola merce.
  • Gestione divisa: l'archivio memorizza la propria divisa in lif-currency; tutte le visualizzazioni e i calcoli avvengono nella divisa scelta dall'operatore (campo tm-divisa, valori L01/E01) con conversione tramite COGU10 quando le divise differiscono. In fase di rettifica i valori vengono riconvertiti nella divisa originale dell'archivio prima della scrittura.
  • Struttura del record LIFO (cogmlifo.cpy): chiave lif-chia1 = magazzino + anno + merce; lif-padre distingue prodotto finito ("P") da materia prima (spazio); lif-qta = giacenza LIFO (15mo elemento); lif-prezzo = prezzo LIFO (valore/qta); lif-valore = valore LIFO; lif-rottamato = flag S/N.
  • PERFORM THRU e GO TO legacy: il programma fa ampio uso di PERFORM ... THRU e di GO TO di navigazione tra paragrafi, secondo lo stile precedente alle convenzioni attuali del codebase.
  • Dimensione sorgente: circa 1.040 righe (cbl/cogm118.cbl).