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¶
- Apertura (
apri/a4): carica config, crea il transito indicizzatotransito, imposta i default (movimenti "U", valorizzazione "U", classe "M", periodo di 7 giorni; reparto-da-merce "S" per la personalizzazione Lorilabors). - 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.
- Stampa (
stampa): apre il dispositivo via COGS54, poi carica il transito (b-carica) e stampa (c-stampa). - Caricamento (
b-carica→b1-movimenti): scandisce COGTESBO per data; per ogni bolla legge la causale (COGTABEL tipo 15) e i movimenti COGMOMAG. Il paragrafob1-movimentiapplica, secondotm-movimenti, i filtri per tipo anagrafico (cliente/fornitore daeuta-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 secondotm-cfg-pn-val(via COGL61). - 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 datm-valorizzazione(valore movimento / prezzo medio / ultimo acquisto). Alla fine stampa il totale generale. - 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
transitoe' 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 ... THRUe blocchiif ... go toa cascata: codice legacy pre-convenzioni.