Vai al contenuto

COGM99 — Stampa Movimenti per Reparto

Sorgente: cbl/cogm99.cbl | Program-ID: cogm99 | Tipo: Programma di stampa a spool (report tabellare) con file di transito

Menu: Lab.Odont. > Statistiche > Movimenti per Reparto


Scopo

Produce una stampa dei movimenti di magazzino di un periodo, raggruppati per reparto e per merce, con quantita' e valorizzazione. Per ogni combinazione reparto/merce accumula la quantita' netta (segno secondo entrata/uscita e tipo movimento) e il valore, poi stampa un elenco ordinato per reparto con un totale valore per reparto e un totale generale finale.

L'operatore sceglie la tipologia di movimenti da considerare (tutte le uscite, uscite interne, vendita, tutte le entrate, entrate interne, entrate da acquisto), la classe merce (solo materiali, solo prestazioni, tutto), il criterio di valorizzazione (ultimo prezzo di acquisto, prezzo medio, valore del movimento) e — se attiva la gestione multisede — la sede/magazzino.


File e tabelle

File Copybook Accesso Scopo
feurtab cogfiles.cpy / cogm99.fd Lettura Tabella archivi
COGTESBO (via .select) Lettura sequenziale per data (chia2) Testate bolla — scansione del periodo
COGMOMAG Lettura sequenziale (chia) Movimenti di magazzino della bolla
COGTABEL Lettura Causale bolla (tipo 15), reparto (tipo 85)
COGMERCI Lettura Anagrafica merci (descrizione, classe)
COGMERAP Lettura Appendice merce (reparto di default)
COGMOAGG Lettura Dati agg. movimento (sede, per multisede)
COGMAGAZ Lettura Anagrafica magazzino/sede (descrizione)
transito (FD interno trs-rec) I/O indicizzato temporaneo Accumulatore reparto+merce → quantita'/valore (#$COGM99.oper)
flsta flsta.cpy Stato file

Programmi chiamati (CALL)

Programma Scopo
RNEWCONF Lettura configurazione
COGS54 Gestione dispositivo di stampa
COGU10W Edit/cambio/arrotondamento importi in divisa conto
COGL61 Prezzo ultimo acquisto e prezzo medio della merce
COGW36 (via send-w36) selezione sede/magazzino (F8)
DTPRG / PRGDT Conversione data↔progressivo (default periodo +7 giorni)

Copybook incluse

cogm99.wrk, wstato.cpy, wgrave.cpy, wopenf.cpy, wnscr.cpy, cogazien.cpy, utils52.cpy, utils54.cpy, utilncnf.cpy, utilu10.cpy, utilcogl61.cpy, utilw36.cpy, k-personal.cpy; linkage wcont.cpy, wcont1.cpy; screen cogm99-01.scr; procedure grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, sendw36.cpy, cogm99.prc, chiave cogtesbo.k02.


Parametri di configurazione (RNEWCONF)

Gruppo Chiave Variabile Effetto
PROGCOGM99 euta-descr tm-cfg-pn-val Valorizzazione dei movimenti interni non valorizzati ("U" = ultimo acquisto, "M" = medio, "N" = nessuna); default "N"
odonto gestione-multi-sede tm-cfg-multisede "S" = abilita il filtro/visualizzazione per sede

Logica di elaborazione

  1. Apertura (apri/a4): carica config, crea il transito indicizzato transito, imposta i default (movimenti "U", valorizzazione "U", classe "M", periodo di 7 giorni; reparto-da-merce "S" per la personalizzazione Lorilabors).
  2. Filtri (accept vari): data inizio/fine, tipo movimenti, classe merce, valorizzazione, "reparto da anagrafica merci?", sede (solo se multisede). F3 conferma e avvia la stampa.
  3. Stampa (stampa): apre il dispositivo via COGS54, poi carica il transito (b-carica) e stampa (c-stampa).
  4. Caricamento (b-caricab1-movimenti): scandisce COGTESBO per data; per ogni bolla legge la causale (COGTABEL tipo 15) e i movimenti COGMOMAG. Il paragrafo b1-movimenti applica, secondo tm-movimenti, i filtri per tipo anagrafico (cliente/fornitore da euta-cb-cli-for), tipo bolla (P/T per i movimenti interni) e fatturabilita' (euta-cb-con-fat), determinando il segno del movimento. Filtra su classe merce e su sede (COGMOAGG). Accumula quantita'/valore nel record di transito (reparto da COGMERAP o dal movimento), valorizzando i movimenti interni non valorizzati secondo tm-cfg-pn-val (via COGL61).
  5. Stampa report (c-stampa / c-intesta): scandisce il transito per chiave (reparto+merce); a ogni rottura di reparto stampa il totale valore di reparto e reintesta la pagina se necessario. La valorizzazione della riga dipende da tm-valorizzazione (valore movimento / prezzo medio / ultimo acquisto). Alla fine stampa il totale generale.
  6. Chiusura (fine/z-chiudi): chiude i file, cancella COGL61.

Paragrafi chiave

Paragrafo Scopo
apri / a4 Inizializzazione, config, default filtri, creazione transito
a-tm-* Accept dei filtri (data, movimenti, classe, valorizzazione, reparto-da-merce, sede)
a-richiesta-conferma Validazione e avvio stampa
stampa Apertura COGS54, caricamento e stampa
b-carica / b1-movimenti Scansione bolle e accumulo movimenti nel transito
c-stampa / c-intesta Stampa report con rotture per reparto e totali
x-imposta-conferma / x-controlla-tm-* Validazione campi
z-u10-* Chiamate COGU10W per edit/cambio importi
x99-cfg Lettura configurazione

Note

  • Il transito transito e' un accumulatore indicizzato (chiave reparto+merce): i movimenti vengono letti (read ... invalid write) e aggiornati (rewrite), quindi la stampa espone il saldo per merce/reparto.
  • Il caso di valorizzazione "V" (valore movimento) ricalcola il prezzo unitario come valore/quantita'; "M"/"U" ricalcolano il valore come quantita' × prezzo medio/ultimo.
  • Il sorgente usa GO TO, PERFORM ... THRU e blocchi if ... go to a cascata: codice legacy pre-convenzioni.