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¶
- Apertura (
apri): init programma, lettura azienda, apertura file, recupero divisa di conto via COGU10W, costruzione maschera "Stampa Bollato LIFO". - Accept:
a-tm-mag: magazzino. Vuoto = "Tutti i magazzini"; se valorizzato deve esistere ed essere di tipo interno ("I"). F8 apre WIN036.a-tm-da-aa: anno LIFO, obbligatorio e non inferiore al 1988.a-tm-rottam: tipo estrazione (default "T" = tutti; altrimenti filtra perlif-rottamato).- Conferma stampa (
a222): chiama COGS54 (s54-chr-stampa = 132) per la destinazione; con F3 avvia la stampa. - Estrazione e stampa:
- Posiziona su COGMLIFO per magazzino/anno (
st-cogmlifo-notmin) e scorre (x9-10). - Interrompe quando cambia magazzino o anno rispetto ai valori richiesti. Salta i record che non rispettano il filtro rottamato (se diverso da "T").
- Alla prima riga stampa l'intestazione (
testa) con data "31/12/anno". - 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 as54-stm-lin. - Accumula i totali convertiti al cambio:
w-tot-lifo(generale),w-tot-prime(articoli conlif-padrespaces = materie prime) ew-tot-finiti(conlif-padrevalorizzato = finiti/semilavorati). - Totali (
x9-90): stampa la rigadet2con i tre totali (Finiti/Semilavorati, Materie Prime, Generale LIFO) racchiusa tra righe di asterischi. - 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-padredistingue 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).