Vai al contenuto

COGM119 -- Stampa Bollato LIFO

Sorgente: cbl/cogm119.cbl | Program-ID: COGM119 | Menu: Magazzino > Controllo Magazzino > Lifo > Stampa Bollato

Descrizione

Programma GUI di stampa che produce il tabulato dell'archivio LIFO destinato al libro bollato (registro delle valorizzazioni LIFO). L'utente seleziona magazzino (interno) e anno LIFO, e il tipo di estrazione (tutti, oppure solo rottamati / non rottamati). Il programma scorre l'archivio LIFO del magazzino/anno indicati, stampa per ogni articolo tipo, descrizione, unita' di misura, giacenza, prezzo e valore, e a fine stampa riporta i totali generali distinti tra prodotti Finiti/Semilavorati, Materie Prime e totale LIFO. La destinazione di stampa e' scelta tramite COGS54.

File e tabelle

File/Tabella Accesso Descrizione
FEURTAB (COGTABEL) Read Tabella generale
COGMLIFO Read Archivio LIFO: scansione per magazzino/anno (st-cogmlifo-notmin, rdnxt-cogmlifo); campi valore, prezzo, quantita', divisa, padre, rottamato
COGMERCI Read Anagrafica articoli: descrizione e unita' di misura (rd-mer / rd-cogmerci)
COGMAGAZ Read Anagrafica magazzini: validazione e verifica che il magazzino sia interno (rd-cogmagaz, magz-fl-tip = "I")
FLSTA Output File sequenziale di stampa (riga, tracciati testa1, det1, det2)

Sottoprogrammi chiamati

Programma Scopo
COGS54 Gestione destinazione stampa (stampante/anteprima/file); fornisce anche s54-stm-lin per il calcolo del salto pagina e la chiusura finale (s54-after-print = "S")
COGS50 Composizione della descrizione estesa dell'articolo (s50-str -> dt1-descr); apertura ("O") a inizio e chiusura ("C") a fine programma
COGU10W Servizi divisa/valorizzazione: recupero divisa di conto (GetDivisaConto), edit importi (Edita) e conversione al cambio (Cambio) per gli accumulatori totali
COGU16 (utilu16.cpy) Parametri di lettura descrizioni articolo (u16-lettura passato a COGS50)
WIN036 Selezione magazzino (F8) tramite sendw36.cpy

Logica di elaborazione

  1. Apertura (apri): init programma, lettura azienda, apertura file, recupero divisa di conto via COGU10W, costruzione maschera "Stampa Bollato LIFO".
  2. Accept:
  3. a-tm-mag: magazzino. Vuoto = "Tutti i magazzini"; se valorizzato deve esistere ed essere di tipo interno ("I"). F8 apre WIN036.
  4. a-tm-da-aa: anno LIFO, obbligatorio e non inferiore al 1988.
  5. a-tm-rottam: tipo estrazione (default "T" = tutti; altrimenti filtra per lif-rottamato).
  6. Conferma stampa (a222): chiama COGS54 (s54-chr-stampa = 132) per la destinazione; con F3 avvia la stampa.
  7. Estrazione e stampa:
  8. Posiziona su COGMLIFO per magazzino/anno (st-cogmlifo-notmin) e scorre (x9-10).
  9. Interrompe quando cambia magazzino o anno rispetto ai valori richiesti. Salta i record che non rispettano il filtro rottamato (se diverso da "T").
  10. Alla prima riga stampa l'intestazione (testa) con data "31/12/anno".
  11. Per ogni articolo: legge la descrizione via COGS50, l'unita' di misura da COGMERCI, edita prezzo e valore in divisa (COGU10W "Edita") e scrive la riga det1. Controlla il salto pagina (ctr-testa) in base a s54-stm-lin.
  12. Accumula i totali convertiti al cambio: w-tot-lifo (generale), w-tot-prime (articoli con lif-padre spaces = materie prime) e w-tot-finiti (con lif-padre valorizzato = finiti/semilavorati).
  13. Totali (x9-90): stampa la riga det2 con i tre totali (Finiti/Semilavorati, Materie Prime, Generale LIFO) racchiusa tra righe di asterischi.
  14. Chiusura (x9-99 / z-chiudi): finalizza la stampa (COGS54), chiude COGS50 e i file.

Note

  • Nel sorgente e' presente un blocco commentato ("old/new") che documenta una variante di scansione multi-magazzino (tm-mag = spaces): la logica attiva interrompe invece la scansione al primo magazzino/anno non corrispondente, quindi la stampa e' effettivamente per singolo magazzino/anno.
  • Il campo lif-padre distingue prodotti finiti/semilavorati (valorizzato) da materie prime (spaces).
  • La divisa di conto e la valorizzazione sono gestite interamente da COGU10W, con edit a lunghezza fissa (prezzo 14, valore 18 caratteri).