Vai al contenuto

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:

  1. cerca l'ultimo carico "significativo" scandendo i movimenti di magazzino;
  2. calcola il prezzo dalla riga di documento trovata (media sulle righe della stessa merce nella bolla, componente trasporto inclusa, con eventuale conversione di divisa);
  3. se non trova un movimento utile, puo' ripiegare sul primo ordine fornitore aperto della merce;
  4. 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

  1. main / apri — init; se richiamato (r17-called = "COGR17-CALLED") legge merce/magazzino/data dal linkage, risolve la sede via COGMAGAZ e apre i file una sola volta.
  2. Modalita' richiamata: imposta tab-maschera con i valori del linkage ed esegue direttamente b-elabora su una singola merce, poi fine-ok.
  3. Modalita' interattiva: maschera con accept di data limite (a-tm-data), sede (a-tm-sede, aiuto F8 via send-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.
  4. b-elabora — legge la divisa sede; per ogni merce del range (fornita da COGU16W in interattivo, singola in richiamato):
  5. salta le merci di classe "Servizio";
  6. b1-ctr-pua cerca l'ultimo carico significativo;
  7. se il P.U.A. resta zero, secondo configurazione (uso-of-su-pua) tenta b3-cerca-da-ordine;
  8. c-aggiorna-consolidato aggiorna il consolidato annuale;
  9. se richiesto prezzo svalutato applica b2-prezzo-svalutato;
  10. b-30-agg riscrive COGMERCI (salvo personalizzazione SI/SIEE non richiamata) e agg-prezzo-medio.
  11. b1-ctr-pua / tratta-movimenti — scandisce COGMAGAZ (sede + flag prezzo) e per ogni magazzino risale i movimenti COGMOMAG (chiave 3, rdprv) cercando il movimento piu' recente con causale che concorre al p.m., quantita' non nulla e prezzo significativo.
  12. 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).
  13. b3-cerca-da-ordine / b31-calcola-prezzo — fallback: dal primo ordine fornitore aperto della merce (COGRIGOR chiave 4 + COGTESOR), media prezzo netto (sconti applicati) e trasporto, convertiti alla divisa sede.
  14. c1-calcola / c11-cerca-consolidato — determina e memorizza su COGMEMOR il P.U.A. dell'anno; se assente ripiega sull'anno precedente o su mer-prezacq; aggiorna solo se data = fine anno o anno corrente.
  15. 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 = A o U (tipo tabella 15), quantita' non nulla, prezzo non nullo, movimento di tipo bolla C (oppure P in 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 su COGMERCI (solo su COGMEMOR), per non sovrascrivere un valore inserito manualmente.
  • PBUG-547 (nota nel sorgente): mav-pre-acq non viene aggiornato quando w-pua e' 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) e COGRIGOR (.k04) sono incluse manualmente a fine procedure division (non generate da Screens).