Vai al contenuto

COGV95 - Valorizzazione Matricole in Giacenza

Scopo

Stampa l'elenco delle matricole in carico (entrata, non ancora scaricate) di un magazzino, valorizzate al prezzo di acquisto desunto dalla bolla di carico fornitore (testata + riga primaaa nota). Applica il cambio della data documento per riportare il prezzo nella divisa del conto. Stampa totali per divisa del conto e per ogni divisa estera incontrata (max 100).

Posizioni menu

  • Magazzino > Entrate > Stampe > Valorizz. Matricole in Giacenza

File e Tabelle

File Copybook Utilizzo
FEURTAB cogfiles.cpy Tabella file di sistema
COGTABEL cogtabel.cpy Tabella divise (euta-tipo=56)
COGMERCI cogmerci.cpy Anagrafica merci (descrizione)
COGTESBO cogtesbo.cpy Testate documenti (data, divisa fornitore)
COGMOMAG cogmomag.cpy Movimenti magazzino (prezzo, divisa)
COGMATRI cogmatri.cpy Anagrafica matricole (chiave 5 = mtr-fl-eu + chia2)
COGMTUSC cogmtusc.cpy Uscite matricole (per filtrare le scaricate)
FLSTA flsta.cpy File stampante

Copybook

  • feurtab.fd, cogv95.select, cogv95.fd, cogv95.wrk, cogv95-01.scr, cogv95.decla, cogv95.prc
  • cogtabel.fd/cpy, cogmerci.fd/cpy, cogtesbo.fd/cpy, cogmomag.fd/cpy, cogmatri.fd/cpy, cogmtusc.fd/cpy
  • cogmatri.k05 (chiave secondaria: mtr-fl-eu+chia2)
  • flsta.fd/cpy
  • k-u10.cpy, wrk-u10.cpy
  • wstato.cpy, wopenf.cpy, wgrave.cpy, wnscr.cpy, cogazien.cpy
  • utils54.cpy, utilu10.cpy, utilw36.cpy
  • wcont.cpy, wcont1.cpy
  • stato1.cpy, stato.cpy, winmsg.cpy, grave.cpy, mmmask.cpy, opengen.cpy
  • GetDCont.cpy (per get-divisa-conto), sendw36.cpy (ricerca W36), u10-fun.cpy

CALL

Programma Scopo
COGS54 Setup parametri stampante
COGU10W Conversione divisa, edita importi (cambio, arrotondamento, formattazione)
COGW36 (via sendw36.cpy) Ricerca codice magazzino

Logica di elaborazione

Parametri input

tab-maschera: - tm-mag: codice magazzino (default az-main-mag) - tm-fl-sn-vuoti: S = include matricole con serial vuoto, N = escludile

Costanti edita

  • k-rg-pre-f-len = 14: lunghezza prezzo fornitore (divisa originale)
  • k-rg-pre-l-len = 15: lunghezza prezzo in divisa conto (per riga)
  • k-rt-tot-l-len = 16: lunghezza totale generale conto
  • k-rt-tot-v-len = 16: lunghezza totale per divisa estera
  • k-euta-tipo-divisa = 56: tipo COGTABEL per descrizione divise
  • k-siz-page = 132: larghezza stampa
  • k-w-pre/k-tot-currency-conto/k-tot-val-pre/k-rg-pre-f/k-rg-pre-l/k-rt-tot-l/k-rt-tot-v: ID dei campi gestiti via wrk-u10-field

Flusso (ricerca)

  1. apri: z-99-init-program, open-files, rd-azi, get-divisa-conto (da GetDCont.cpy).
  2. GUI input (a-tm-mag, a-tm-fl-sn-vuoti) con conferma F3 e ricerca W36 sul magazzino.
  3. a30: COGS54 setup stampante (132 col).
  4. ricerca-ini:
  5. st-cogmatri-notmin-chia5 con mtr-fl-eu='E', scorre via rdnxt-cogmatri
  6. filtro: mtr-ent-mag = tm-mag, escludi serial vuoto se tm-fl-sn-vuoti='N'
  7. controllo COGMTUSC con chiave 1 (mtr-mat): se la matricola e' gia' scaricata (rd-cogmtusc OK), salta
  8. escludi matricole con "&" nel serial (provvisori legati a ordini)
  9. Per ogni matricola valida:
  10. src-tesbo: lettura COGTESBO via mtr-entri-data (=tes-dabolfor), ri-prezzo-currency (=tes-currency)
  11. src-momag: scansione COGMOMAG con mag-chiap = mtr-ent + 0, fino a trovare la riga con mag-merce3 = mtr-merceri-prezzo (=mag-prezzo), ri-prezzo-currency (=mag-currency)
  12. src-merce: lettura COGMERCI per descrizione
  13. se ri-prezzo-currency != w-currency-conto: chiama COGU10W con z-u10-cambio per ottenere fixing + prezzo in divisa conto
  14. accumula tot-currency-conto += ri-prezzo (in divisa conto), e per la divisa originale tot-val-pre[xk] += ri-prezzo (cerca slot esistente o ne alloca uno nuovo, max 100)
  15. stampa-riga: scrive una riga formattata sul flsta
  16. ricerca-out:
  17. stampa-tot-currency-conto: totale in divisa conto
  18. per ogni slot tot-valute non vuoto: stampa-tot-valute

Ottimizzazione lettura

Ad ogni matricola, se ri-ent != mtr-ent rilegge testata + momag + merce; se cambia solo ri-merce != mtr-merce rilegge solo momag + merce.

Note tecniche

  • Stampa 132 colonne; salto pagina via bool-new-pg1/bool-new-pg2 (controllo ctr-rig vs s54-stm-lin).
  • Conversione divisa via COGU10W (utilu10.cpy) usando data documento (ri-data) come data cambio. Tipo dato: k-u10-tipo-acquisto.
  • Tabella tot-valute (occurs 100): allocazione dinamica per divise incontrate. Se piena, messaggio di errore.
  • Filtro serial provvisori: inspect ... tallying for all "&" > 0 → scarta.
  • Il programma non usa file di transito; stampa diretta in flsta.
  • GUI con screen section (cogv95-01.scr); compatibile con tasti F2/F3/F8.