Vai al contenuto

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

  1. 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
  2. Accept parametri (a4a-tm-maga-tm-ord-mera-tm-da-mercea-tm-a-mercea-tm-costoa-tm-stampa):
  3. a-tm-mag: Magazzino - con aiuto WIN036 (F8). Valida che sia interno (magz-fl-tip = 'I')
  4. a-tm-ord-mer: Ordinamento merci - tramite COGS60, valore passato a COGU16W
  5. a-tm-da-merce: Merce iniziale - tramite COGS68W (ricerca merce completa)
  6. a-tm-a-merce: Merce finale - tramite COGS68W, con validazione range (u16-ope = "Ctr-range")
  7. a-tm-costo: Tipo prezzo (M/U/V) - tramite COGS60
  8. a-tm-stampa: Tipo stampa (S/N) - tramite COGS60
  9. Conferma (a-richiesta-conferma): validazione globale di tutti i campi (x-imposta-conferma)
  10. Selezione stampante (a-cogs54): tramite COGS54, 132 colonne
  11. Determinazione periodo: in a4 legge tabella tipo 57 record 1 (euta-dc-aa-acc/euta-dc-mm-acc); divisa preimpostata da w-currency-conto
  12. Elaborazione (st-10b11-loop): ciclo tramite COGU16W ("Leggi") per scansione merci nell'intervallo/ordinamento selezionato
  13. Per ogni merce (b11-ela): calcolo LIFO (stessa logica di COGM18), poi stampa se applicabile
  14. Fine stampa (ela-90): pagina riepilogo totali per anno (st-tot), chiusura stampante
  15. Chiusura (finez-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 Eurosystem
  • cogm19.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 COGU10
  • wstato.cpy, wgrave.cpy, wopenf.cpy, wnscr.cpy -- working-storage standard
  • cogazien.cpy -- dati azienda
  • utils54.cpy, utils50.cpy, utils68.cpy -- utility varie
  • utilu10.cpy, utilu16.cpy, utilu20.cpy -- utility COGU10/COGU16/COGU20
  • utilw36.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 standard
  • opengen.cpy -- apertura file generica
  • mmmask.cpy -- gestione maschera standard
  • GetDCont.cpy -- lettura divisa conto
  • sendw36.cpy -- chiamata WIN036
  • PRINTER.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:

  1. loop-mav: legge COGMEMOR per 15 anni, accumula giacenze e calcola prezzi
  2. loop-lifo: calcola la distribuzione del residuo LIFO per strato annuale
  3. loop-tot: moltiplica prezzo * residuo per ottenere il valore LIFO

Filtro tipo stampa

  • tm-stampa = 'N': stampa solo merci con fl-stampa = '*' (almeno un tm-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, soglia ctr-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 ... THRU estensivamente (pattern legacy), condiviso con COGM18
  • La tabella tab-maschera contiene 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)