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 routinerst-next/rst-previous/src-next/src-previouse la copybooktstfun2per lo scorrimento. - Aggiornamento archivio: e' l'unico dei quattro programmi documentati in questo gruppo che modifica gli archivi: apre COGMLIFO in
i-oe ne esegue ilrewriteper 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 (campotm-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): chiavelif-chia1= magazzino + anno + merce;lif-padredistingue 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 ... THRUe diGO TOdi navigazione tra paragrafi, secondo lo stile precedente alle convenzioni attuali del codebase. - Dimensione sorgente: circa 1.040 righe (
cbl/cogm118.cbl).