COGR17 — Ricostruzione prezzo ultimo acquisto (P.U.A.)¶
Sorgente: cbl/cogr17.cbl | Tipo: Programma di menu / elaborazione (richiamabile) | Program-ID: COGR17
Menu: Magazzino > Controllo Magazzino > Consolidamento Magazzino [Calcolo Prezzo Ult.Acquisto] ; Magazzino > Inventario [Calcolo Prezzo Ultimo Acquisto] ; Sistema > Archivi > Ricostruzioni [Prezzo Ult.Acquisto]
Scopo¶
COGR17 ricalcola (ricostruisce) il prezzo ultimo acquisto delle merci a una certa data. Per ogni merce nel range richiesto:
- cerca l'ultimo carico "significativo" scandendo i movimenti di magazzino;
- calcola il prezzo dalla riga di documento trovata (media sulle righe della stessa merce nella bolla, componente trasporto inclusa, con eventuale conversione di divisa);
- se non trova un movimento utile, puo' ripiegare sul primo ordine fornitore aperto della merce;
- aggiorna il prezzo ultimo acquisto e la relativa data sull'anagrafica merce (
COGMERCI) e memorizza il P.U.A. annuale sul consolidato magazzino (COGMEMOR).
Il programma puo' essere lanciato interattivamente (maschera con range merci, sede, data limite, opzioni prezzo svalutato / considera prima nota) oppure richiamato da altri programmi in modalita' "silent" su una singola merce/magazzino/data (linkage utilr17.cpy).
File e tabelle principali¶
| File/Tabella | Copybook | Uso |
|---|---|---|
| COGMERCI | cogfiles.cpy (mer-rec) |
Anagrafica merce: lettura ed aggiornamento di mer-prezacq, mer-currency, mer-data-pua, mer-data-agg |
| COGMOMAG | cogfiles.cpy (mag-rec) + cogmomag.k03, cogmomag.k04 |
Movimenti di magazzino: ricerca ultimo carico significativo (chiavi secondarie per merce/data) |
| COGMAGAZ | cogfiles.cpy (magz-rec) |
Magazzini: filtro sede, flag abilitazione calcolo p.m. (magz-fl-pre), divisa sede |
| COGTESBO | cogfiles.cpy (tes-rec) |
Testata bolla del movimento: causale e cambio |
| COGTABEL | cogfiles.cpy (euta-rec, tipo 15) |
Causali: flag euta-cb-con-pm (concorre al prezzo medio, valori A/U) |
| COGMEMOR | cogfiles.cpy (mav-rec) |
Consolidato annuale merce/magazzino: P.U.A. e prezzo svalutato per anno |
| COGRIGOR | cogfiles.cpy (ror-rec) + cogrigor.k04 |
Righe ordine fornitore: fallback prezzo da ordine |
| COGTESOR | cogfiles.cpy (tor-rec) |
Testata ordine fornitore (magazzino, cambio, divisa) |
Flusso principale¶
main / apri— init; se richiamato (r17-called = "COGR17-CALLED") legge merce/magazzino/data dal linkage, risolve la sede viaCOGMAGAZe apre i file una sola volta.- Modalita' richiamata: imposta
tab-mascheracon i valori del linkage ed esegue direttamenteb-elaborasu una singola merce, poifine-ok. - Modalita' interattiva: maschera con accept di data limite (
a-tm-data), sede (a-tm-sede, aiuto F8 viasend-w36), data memorizzazione (a-tm-data-mem), ordinamento (a-tm-ord-mer), range da/a merce (a-tm-da-merce/a-tm-a-merce, via COGS68W/COGU16W), prezzo svalutato (a-tm-pre-sval), considera prima nota (a-tm-fl-pn). Con F3 →a-fine-dati→ conferma →b-elabora. b-elabora— legge la divisa sede; per ogni merce del range (fornita da COGU16W in interattivo, singola in richiamato):- salta le merci di classe "Servizio";
b1-ctr-puacerca l'ultimo carico significativo;- se il P.U.A. resta zero, secondo configurazione (
uso-of-su-pua) tentab3-cerca-da-ordine; c-aggiorna-consolidatoaggiorna il consolidato annuale;- se richiesto prezzo svalutato applica
b2-prezzo-svalutato; b-30-aggriscriveCOGMERCI(salvo personalizzazioneSI/SIEE non richiamata) eagg-prezzo-medio.b1-ctr-pua/tratta-movimenti— scandisceCOGMAGAZ(sede + flag prezzo) e per ogni magazzino risale i movimentiCOGMOMAG(chiave 3,rdprv) cercando il movimento piu' recente con causale che concorre al p.m., quantita' non nulla e prezzo significativo.b11-calcola-prezzo— sulla bolla del movimento trovato somma tutte le righe della stessa merce: calcola valore/quantita', gestisce entrata/uscita, componente trasporto, coerenza divise, poi arrotonda e converte alla divisa sede (via COGU10W).b3-cerca-da-ordine/b31-calcola-prezzo— fallback: dal primo ordine fornitore aperto della merce (COGRIGORchiave 4 +COGTESOR), media prezzo netto (sconti applicati) e trasporto, convertiti alla divisa sede.c1-calcola/c11-cerca-consolidato— determina e memorizza suCOGMEMORil P.U.A. dell'anno; se assente ripiega sull'anno precedente o sumer-prezacq; aggiorna solo se data = fine anno o anno corrente.agg-prezzo-medio— chiama COGL62 per registrare il P.U.A. calcolato e "pulire" i prezzi successivi fino alla data limite.
Sottoprogrammi chiamati¶
| Programma | Ruolo |
|---|---|
| COGL62 | Scrittura/pulizia prezzo ultimo acquisto della merce (destinazione finale del calcolo) |
| COGU10W | Cambio divisa, arrotondamento ed editing degli importi/prezzi |
| COGU16W | Gestione ordinamento e scansione del range merci (z-u16) |
COGS68W (z-s68-*) |
Aiuto/selezione merce (Y* — gestore ausiliario) |
| RNEWCONF | Lettura configurazione uso-of-su-pua |
| DIALOGS / box-msg / vbx-msg | Dialoghi e messaggistica |
COGS52 / COGS60 / COGS93 / COGS95 (z-carica-*) |
Gestione controlli maschera (Y*) |
| SEND-W36 | Aiuto magazzino sede (sendw36.cpy) |
Configurazioni (RNEWCONF)¶
| Pacchetto | Gruppo | Chiave | Uso |
|---|---|---|---|
| C | mag-val | uso-of-su-pua | Se il P.U.A. da movimenti e' zero, stabilisce se cercare da ordine fornitore: SEMPRE, SOLO-ATTUALE (solo se data = odierna), altrimenti mai |
Note¶
- Il "movimento significativo" richiede: causale con
euta-cb-con-pm=AoU(tipo tabella 15), quantita' non nulla, prezzo non nullo, movimento di tipo bollaC(oppurePin entrata se attiva l'opzione "considera prima nota"tm-fl-pn = S). - Le merci di classe "Servizio" (
mer-classe = "S") sono escluse dal calcolo. - Personalizzazione SIEE (
az-personal = "SI"): se il programma non e' richiamato, il P.U.A. non viene riscritto suCOGMERCI(solo suCOGMEMOR), per non sovrascrivere un valore inserito manualmente. - PBUG-547 (nota nel sorgente):
mav-pre-acqnon viene aggiornato quandow-puae' zero, per non sovrascrivere un valore inserito a mano. - Gestione divise: il calcolo tiene conto del cambio esercizio contabile non coincidente con l'anno solare; il consolidato memorizza il prezzo nella divisa di conto valida a fine anno consolidato.
- Chiavi secondarie di
COGMOMAG(.k03,.k04) eCOGRIGOR(.k04) sono incluse manualmente a fine procedure division (non generate da Screens).