Vai al contenuto

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

  1. 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.
  2. Reset / parametri (a4): svuota griglia e tab-maschera, imposta divisa e tipo prezzo di default ("U" = ultimo acquisto).
  3. 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).
  4. Conferma (a-richiesta-conferma, x-controlla-dati): validazione e conferma.
  5. Estrazione (carica-cogtrans -> elabora): scansione delle merci selezionate, calcolo giacenza/prezzo/valore, scrittura in COGTRANS.
  6. Griglia (a-grid-ini / carica-tab / a-grid): caricamento paginato dal transito in ordine di valore decrescente, con totali e navigazione.
  7. 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 fittizia 999999999 e le merci di classe "S";
  • giacenza: se tm-data = 0 legge 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 .k02 restituisce quindi le merci dalla piu' alta alla piu' bassa per valore.
  • Personalizzazioni aziendali (k-personal.cpy): per gruppo-arena esclude le merci con mer-val = 'E'; per artic-seals esclude gli articoli con giacenza <= 0.
  • Il file di transito e' aperto in output all'ingresso di carica-cogtrans per 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 con delete file alla 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-data risulta commentata: l'attuale flusso a data passa comunque da COGU31 dentro elabora.