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.prccogtabel.fd/cpy,cogmerci.fd/cpy,cogtesbo.fd/cpy,cogmomag.fd/cpy,cogmatri.fd/cpy,cogmtusc.fd/cpycogmatri.k05(chiave secondaria:mtr-fl-eu+chia2)flsta.fd/cpyk-u10.cpy,wrk-u10.cpywstato.cpy,wopenf.cpy,wgrave.cpy,wnscr.cpy,cogazien.cpyutils54.cpy,utilu10.cpy,utilw36.cpywcont.cpy,wcont1.cpystato1.cpy,stato.cpy,winmsg.cpy,grave.cpy,mmmask.cpy,opengen.cpyGetDCont.cpy(perget-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 contok-rt-tot-v-len = 16: lunghezza totale per divisa esterak-euta-tipo-divisa = 56: tipo COGTABEL per descrizione divisek-siz-page = 132: larghezza stampak-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 viawrk-u10-field
Flusso (ricerca)¶
- apri:
z-99-init-program,open-files,rd-azi,get-divisa-conto(da GetDCont.cpy). - GUI input (a-tm-mag, a-tm-fl-sn-vuoti) con conferma F3 e ricerca W36 sul magazzino.
- a30: COGS54 setup stampante (132 col).
- ricerca-ini:
st-cogmatri-notmin-chia5conmtr-fl-eu='E', scorre viardnxt-cogmatri- filtro:
mtr-ent-mag = tm-mag, escludi serial vuoto setm-fl-sn-vuoti='N' - controllo COGMTUSC con chiave 1 (mtr-mat): se la matricola e' gia' scaricata (rd-cogmtusc OK), salta
- escludi matricole con "&" nel serial (provvisori legati a ordini)
- Per ogni matricola valida:
- src-tesbo: lettura COGTESBO via
mtr-ent→ri-data(=tes-dabolfor),ri-prezzo-currency(=tes-currency) - src-momag: scansione COGMOMAG con
mag-chiap = mtr-ent + 0, fino a trovare la riga conmag-merce3 = mtr-merce→ri-prezzo(=mag-prezzo),ri-prezzo-currency(=mag-currency) - src-merce: lettura COGMERCI per descrizione
- se
ri-prezzo-currency != w-currency-conto: chiama COGU10W conz-u10-cambioper ottenere fixing + prezzo in divisa conto - accumula
tot-currency-conto += ri-prezzo(in divisa conto), e per la divisa originaletot-val-pre[xk] += ri-prezzo(cerca slot esistente o ne alloca uno nuovo, max 100) - stampa-riga: scrive una riga formattata sul
flsta - ricerca-out:
- stampa-tot-currency-conto: totale in divisa conto
- per ogni slot
tot-valutenon 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(controlloctr-rigvss54-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.