COGT29 - Classifica valore magazzino¶
Sorgente: cbl/cogt29.cbl | Tipo: Programma interattivo GUI con griglia paginata | Program-ID: COGT29
Menu:
- Magazzino > Controllo Magazzino > Classifica Magazzino
- Statistiche > Classifiche > Valore Magazzino
Scopo¶
Produce la classifica per valore delle merci di un magazzino: per ogni articolo movimentato calcola giacenza, prezzo unitario e valore (giacenza x prezzo), quindi presenta l'elenco in una griglia paginata ordinata per valore decrescente. Riporta i totali di quantita' e valore e i dati dell'ultima entrata / ultima uscita di ogni articolo.
Il calcolo puo' essere fatto alla giacenza attuale (saldi COGSLMAG) o a una data specifica (ricostruzione tramite COGU31). Il prezzo puo' essere l'ultimo prezzo di acquisto o il prezzo medio (via COGL61). Il valore e' espresso nella divisa di conto (conversione via COGU10W).
I dati estratti sono raccolti in un file di transito indicizzato temporaneo (COGTRANS) con chiave secondaria sul valore, che consente la scansione ordinata e la paginazione avanti/indietro.
Struttura del programma¶
Flusso principale¶
- Inizializzazione (
apri):z-99-init-program, abilitazione, lettura azienda, apertura file, avvio log di debug (gesdebug), costruzione nome file di transito#$COGT29.<operatore>, preparazione griglia e ricerca merce (COGS68W), abilitazione tasti F8 aiuto, F3 conferma, Shift-F4 griglia, Shift-F5 export Excel, F9 ricerca avanzata. - Reset / parametri (
a4): svuota griglia etab-maschera, imposta divisa e tipo prezzo di default ("U" = ultimo acquisto). - Accept filtri: magazzino (
a-tm-mag), data (a-tm-data), ordinamento merce (a-tm-ord-mer, via COGU16W), merce da/a (a-tm-merce-ini/a-tm-merce-fin, via COGS68W), tipo prezzo (a-tm-prezzo), ricerca su tutti i movimenti/totale (a-tm-ricerca-totale). - Conferma (
a-richiesta-conferma,x-controlla-dati): validazione e conferma. - Estrazione (
carica-cogtrans->elabora): scansione delle merci selezionate, calcolo giacenza/prezzo/valore, scrittura in COGTRANS. - Griglia (
a-grid-ini/carica-tab/a-grid): caricamento paginato dal transito in ordine di valore decrescente, con totali e navigazione. - Chiusura (
fine): chiude e cancella COGTRANS, chiude il log di debug.
Estrazione (elabora)¶
Ciclo sulle merci (via COGU16W, Set-Estremi / Leggi):
- salta merci con flag giacenza "N" (
map-fl-gia), la merce fittizia999999999e le merci di classe "S"; - giacenza: se
tm-data = 0legge il saldo attuale da COGSLMAG (msal-qta); altrimenti chiama COGU31 per la ricostruzione della giacenza a data (con eventuale valore consolidato); - prezzo: chiama COGL61 con la merce, la data e il magazzino, ottenendo prezzo di acquisto e/o prezzo medio; secondo
tm-prezzo("U" o "M") sceglie il valore e lo converte in divisa di conto (COGU10W, "Cambio"); - valore:
trs-imp = trs-pre * trs-qta-gia, arrotondato (COGU10W, "Arrotonda"); se il periodo e' consolidato usa il valore consolidato di COGU31; - calcola la chiave secondaria per l'ordinamento decrescente:
trs-imp-rev = 99999999999,999999 - trs-imp; - salva ultima uscita / ultima entrata (dati da COGU31) e scrive il record in COGTRANS (
wr-cogtrans); - aggiorna contatori statistici (merci elaborate, movimenti esaminati) e permette l'interruzione con Esc.
Griglia paginata¶
La navigazione usa il pattern standard fscrol2 / utilpggr sul file di transito, con scansione per chiave secondaria (trs-chia2 = trs-imp-rev + trs-merce), quindi in valore decrescente. x-riempi-grid-record formatta merce, UM, giacenza, prezzo, valore (edit via COGU10W) e i documenti/date/quantita' di ultima entrata e ultima uscita.
Tabelle e file¶
| File logico | Chiave / accesso | Descrizione |
|---|---|---|
| FEURTAB | - | Tabella di sistema |
| COGMERCI | dinamico | Anagrafica merci |
| COGMERAP | map-chia |
Anagrafica merci - dati aggiuntivi (flag giacenza map-fl-gia) |
| COGSLMAG | msal-mag1+msal-merce |
Saldi di magazzino (giacenza attuale) |
| COGMAGAZ | magz-tipo+magz-cod |
Anagrafica magazzini (descrizione magz-nome) |
| COGTABEL (via FEURTAB) | - | Tabelle generiche |
| COGTRANS | primaria trs-chia1 (trs-imp+trs-merce); secondaria trs-chia2 (trs-imp-rev+trs-merce) |
File di transito temporaneo #$COGT29.<operatore>: merce, magazzino, UM, giacenza, prezzo, valore, ultima entrata/uscita |
COPY incluse¶
Working-Storage¶
k-personal.cpy, cogt29.wrk, k-u10.cpy, wrk-u10.cpy, wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, UTILU16.CPY, utils68.cpy, wgrid.cpy, utilgdad.cpy, utils52.cpy, utilw15.cpy, utilw27.cpy, utilu31.cpy, utilu10.cpy, utilu20.cpy, utilcogl61.cpy, utilw36.cpy, utilncnf.cpy, utilgesdebug.cpy
Linkage¶
wcont.cpy, utils10.cpy, utilo35.cpy, wcont1.cpy
Procedure Division¶
cogt29.decla, cogt29-01.scr (screen), grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, sendw36.cpy, cogtrans.k01, cogtrans.k02, cogt29.prc, dtab.cpy, fscrol2.cpy, utilpggr.cpy, gesdebug.cpy, msgmerce.cpy
CALL a sottoprogrammi¶
| Programma | Scopo |
|---|---|
| COGU16W | Ordinamento e selezione merci (impostazione estremi e scansione filtrata) |
| COGS68W | Ricerca/help merce (gruppo/sottogruppo/codice) |
| COGL61 | Calcolo prezzo di acquisto / prezzo medio della merce a data e magazzino |
| COGU31 | Ricostruzione giacenza e valore a data, con dati ultima entrata/uscita |
| COGU10W | Cambio divisa, edita e arrotonda importi |
| GRIDADMN | Gestione griglia paginata (Prepara, Svuota, Add-Record, export tipi colonna) |
| AZVALIDA.COB | Validazione data digitata |
| W$FLUSH | Refresh video durante l'elaborazione |
Configurazioni RNEWCONF¶
Il programma include utilncnf.cpy e utilgesdebug.cpy ma non contiene un paragrafo x99-confi che legga chiavi RNEWCONF applicative: la configurazione RNEWCONF e' usata solo dal sottosistema di debug (gesdebug-loadconf).
Note tecniche¶
- Ordinamento per valore: ottenuto memorizzando in COGTRANS il complemento del valore (
trs-imp-rev) come chiave secondaria; la lettura per.k02restituisce quindi le merci dalla piu' alta alla piu' bassa per valore. - Personalizzazioni aziendali (
k-personal.cpy): pergruppo-arenaesclude le merci conmer-val = 'E'; perartic-sealsesclude gli articoli con giacenza <= 0. - Il file di transito e' aperto in output all'ingresso di
carica-cogtransper garantire uso esclusivo per operatore (messaggio "La funzione e' gia' in uso dallo stesso operatore!" in caso di lock), poi riaperto in I-O; cancellato condelete filealla chiusura. - Esporta la griglia in Excel (Shift-F5) tramite GRIDADMN (
Exp-Tipi-Col+z-esporta-paged-grid). - Scrive nel log di debug (
gesdebug-write-sempre) il totale merci movimentate e movimenti esaminati a fine elaborazione. - La modalita' "alla data" con la variante
alla-datarisulta commentata: l'attuale flusso a data passa comunque da COGU31 dentroelabora.