COGM19 - Stampa LIFO¶
Intestazione¶
| Campo | Valore |
|---|---|
| Programma | COGM19 |
| Titolo | Stampa Valorizzazione Magazzino LIFO |
| Posizione menu | Magazzino > Controllo Magazzino > Lifo > Stampa |
Scopo e logica generale¶
COGM19 e' il programma di stampa della valorizzazione del magazzino con metodo LIFO. Presenta una maschera con parametri di selezione (magazzino, ordinamento, intervallo merci, tipo prezzo, tipo stampa), poi elabora le merci nell'intervallo e produce una stampa a 132 colonne con giacenza, prezzo, residuo LIFO e valore LIFO per 15 anni, con riepilogo finale dei totali per anno.
Il programma condivide la stessa logica di calcolo LIFO di COGM18 (visualizzazione), ma aggiunge il filtro per intervallo merci, l'ordinamento tramite COGU16W, e la stampa paginata.
Flusso principale¶
- Inizializzazione (
a000): controllo abilitazione,z-99-init-program, apertura file, lettura azienda, data di sistema, lettura divisa conto (get-divisa-conto), caricamento lingua, preparazione screen - Accept parametri (
a4→a-tm-mag→a-tm-ord-mer→a-tm-da-merce→a-tm-a-merce→a-tm-costo→a-tm-stampa): a-tm-mag: Magazzino - con aiuto WIN036 (F8). Valida che sia interno (magz-fl-tip = 'I')a-tm-ord-mer: Ordinamento merci - tramite COGS60, valore passato a COGU16Wa-tm-da-merce: Merce iniziale - tramite COGS68W (ricerca merce completa)a-tm-a-merce: Merce finale - tramite COGS68W, con validazione range (u16-ope = "Ctr-range")a-tm-costo: Tipo prezzo (M/U/V) - tramite COGS60a-tm-stampa: Tipo stampa (S/N) - tramite COGS60- Conferma (
a-richiesta-conferma): validazione globale di tutti i campi (x-imposta-conferma) - Selezione stampante (
a-cogs54): tramite COGS54, 132 colonne - Determinazione periodo: in
a4legge tabella tipo 57 record 1 (euta-dc-aa-acc/euta-dc-mm-acc); divisa preimpostata daw-currency-conto - Elaborazione (
st-10→b11-loop): ciclo tramite COGU16W ("Leggi") per scansione merci nell'intervallo/ordinamento selezionato - Per ogni merce (
b11-ela): calcolo LIFO (stessa logica di COGM18), poi stampa se applicabile - Fine stampa (
ela-90): pagina riepilogo totali per anno (st-tot), chiusura stampante - Chiusura (
fine→z-chiudi): chiusura file, cancel COGU16W e COGS50,z-99-exit-program
File e tabelle acceduti¶
| File logico | Record/Copybook | Modalita' | Uso |
|---|---|---|---|
| FEURTAB | cogfiles.cpy |
Input | Tabella Eurosystem (nomi file) |
| (file da cogm19.select/.fd) | - | Input | File specifici del programma (merci, magazzini, consolidato, tabelle) |
| FLSTA | flsta.cpy |
Input | File stampe |
I file specifici sono dichiarati nelle copybook cogm19.select, cogm19.fd e cogm19.wrk generate da Screen Designer.
Copybook¶
File definition e select¶
feurtab.fd/cogfiles.cpy-- file tabella Eurosystemcogm19.select-- SELECT dei file (generato)cogm19.fd-- FD dei file (generato)flsta.fd/flsta.cpy-- file stampe
Working-storage¶
cogm19.wrk-- variabili del programma (generato)k-u10.cpy-- costanti COGU10wstato.cpy,wgrave.cpy,wopenf.cpy,wnscr.cpy-- working-storage standardcogazien.cpy-- dati aziendautils54.cpy,utils50.cpy,utils68.cpy-- utility varieutilu10.cpy,utilu16.cpy,utilu20.cpy-- utility COGU10/COGU16/COGU20utilw36.cpy-- utility selezione magazzino
Linkage¶
wcont.cpy,util021.cpy,wcont1.cpy-- parametri di chiamata
Screen¶
cogm19-01.scr-- definizione screen
Procedure¶
cogm19.decla-- declaratives (generato)cogm19.prc-- procedure standard (generato)stato.cpy,stato1.cpy,grave.cpy,winmsg.cpy-- routine standardopengen.cpy-- apertura file genericammmask.cpy-- gestione maschera standardGetDCont.cpy-- lettura divisa contosendw36.cpy-- chiamata WIN036PRINTER.CPY-- gestione stampante
Logica di elaborazione¶
Scansione merci tramite COGU16W¶
Il programma utilizza COGU16W per la scansione delle merci, passando:
- Operazione "Set-Estremi" per impostare l'intervallo (da/a merce)
- Operazione "Leggi" per leggere la merce successiva
- Operazione "Ctr-range" per validare che merce-da <= merce-a
- Operazione "Popola-ord" per caricare le opzioni di ordinamento
Il campo u16-fl-sel determina l'ordinamento; u16-cm-da/u16-cm-a l'intervallo.
Calcolo LIFO¶
Identico a COGM18. Per ogni merce:
loop-mav: legge COGMEMOR per 15 anni, accumula giacenze e calcola prezziloop-lifo: calcola la distribuzione del residuo LIFO per strato annualeloop-tot: moltiplica prezzo * residuo per ottenere il valore LIFO
Filtro tipo stampa¶
tm-stampa = 'N': stampa solo merci confl-stampa = '*'(almeno untm-tot-lifo(k) > 0)tm-stampa = 'S': stampa tutte le merci (comportamento standard)
Il flag fl-stampa viene impostato in loop-mag.
Formato stampa¶
- Testata (
testa/testa2): titolo, data, pagina, intervallo merci (Da/A con descrizione da COGS50), magazzino - Intestazione anno (
st-anno): riga con gli anni (fino a 10 per riga nella stampa dettagliata COGM19) - Dettaglio (
st-lifo): per ogni anno:dt1-anno,dt1-gia(giacenza),dt1-pre(prezzo, editato via COGU10W), residuo LIFO per anno (dt1-lifo, fino a 10 colonne),dt1-tot(valore LIFO, editato via COGU10W) - Riepilogo (
st-tot): per ogni anno:dt2-anno,dt2-tot(totale magazzino, editato via COGU10W) - Cambio pagina ogni 3-4 articoli (
ctr-testa, sogliactr-rig > 3)
Chiamate esterne¶
| Programma | Modalita' | Descrizione |
|---|---|---|
COGU10W |
CALL | Gestione divise: conversione cambio, arrotondamento, display/edit valori |
COGU16W |
CALL | Scansione merci con ordinamento e filtro intervallo |
COGS50 |
CALL | Composizione stringa descrizione merce |
COGS54 |
CALL | Gestione stampante (selezione, apertura, chiusura) |
COGS60 |
CALL (via z-s60-*) | Selezione opzione combo (ordinamento, tipo prezzo, tipo stampa) |
COGS68W |
CALL (via z-s68-*) | Selezione merce con ricerca |
WIN036 |
CALL (via sendw36) | Selezione magazzino |
Variabili principali (tab-maschera)¶
| Campo | Descrizione |
|---|---|
tm-mag |
Codice magazzino selezionato |
tm-mag-des |
Descrizione magazzino |
tm-divisa |
Divisa (preimpostata da w-currency-conto) |
tm-ord-mer |
Tipo ordinamento merci |
tm-da-merce / tm-a-merce |
Intervallo merci (gru+sot+cod) |
tm-costo |
Tipo prezzo: M/U/V |
tm-stampa |
Tipo stampa: S/N |
tm-anno-ini / tm-anno-fin |
Intervallo anni (15 anni) |
tm-aa-lifo(k) |
Anno per strato k |
tm-gia-lifo(k) |
Giacenza per strato k |
tm-pre-lifo(k) |
Prezzo acquisto per strato k |
tm-tot-lifo(k) |
Valore LIFO per strato k |
tm-res-lifo(k, k1) |
Residuo LIFO: strato k, anno acquisto k1 |
tm1-tot-lifo(k) |
Totale magazzino per strato k (accumulatore riepilogo) |
Differenze rispetto a COGM18¶
| Aspetto | COGM18 | COGM19 |
|---|---|---|
| Modalita' | Visualizzazione interattiva | Stampa batch |
| Interfaccia | Display/accept a carattere diretto | Screen Designer (cogm19-01.scr) |
| Intervallo merci | Tutte (scansione sequenziale) | Selezionabile (Da/A merce) |
| Ordinamento | Sequenziale per codice | Configurabile tramite COGU16W |
| Tipo stampa | - | S (tutte) / N (solo con valore) |
| Creazione archivio | Si' (F7) | No |
| Valore totale magazzino | Si' (F5, popup) | Si' (riepilogo a fine stampa) |
| Gestione divise | COGU10 (no W) | COGU10W |
| Gestione merci | COGS68 | COGS68W + COGU16W |
Note implementative¶
- Il programma usa
PERFORM ... THRUestensivamente (pattern legacy), condiviso con COGM18 - La tabella
tab-mascheracontiene una matrice 15x15 per i residui LIFO (225 elementi) - L'interfaccia usa Screen Designer (
cogm19-01.scr) con gestione eventi mouse (x-test-mouse) - La stampa dei residui LIFO nel dettaglio mostra fino a 10 colonne anno per riga
- La divisa viene preimpostata da
get-divisa-conto(divisa del conto contabile dell'azienda)