COGM80 — Listino Merci & Clienti¶
Sorgente: cbl/cogm80.cbl | Tipo: Programma interattivo di consultazione (griglia paginata) | Program-ID: COGM80
Menu: Magazzino > Archivi & Tabelle > Listino Vendita > Listino Merci & Clienti
Scopo¶
Programma di consultazione dei listini di vendita che incrocia merci e clienti: dato un articolo o un cliente, mostra i prezzi particolari applicati. È di sola visualizzazione/stampa (non aggiorna i listini): raccoglie i prezzi in un file di transito temporaneo e li presenta in una griglia paginata, con esportazione Excel e stampa.
Può essere avviato anche come sottofunzione dal programma di gestione articoli COGV06 (wo-passw-area = 'COGV06'): in questo caso riceve la merce da mostrare in user-area/v06-merce e parte direttamente sulla ricerca per merce.
Nota dal sorgente: il programma non gestisce le fasce di quantità — considera solo la fascia 1 (
lnw-fascia = 1).
File e tabelle principali¶
| File/Tabella | Copybook | Uso |
|---|---|---|
| COGTRANS | (definito nel sorgente) | File di transito temporaneo con i prezzi estratti da visualizzare/stampare; nome univoco per operatore, creato in output e cancellato in chiusura |
| COGMERCL | cogmercl.k02 |
Listini merce/cliente (chiave mcl-): legge le associazioni merce↔cliente per le ricerche "M" e "C" |
| COGMERCI | (via feurtab) |
Anagrafica merci (mer-); usata per descrizioni e per le ricerche "L" ed "E" |
| COGGEANA | (via feurtab) |
Anagrafica clienti (ana-tipo = "C", ana-cod, ana-nome); descrizione cliente |
| COGLISNW | coglisnw.k02 |
Listini "nuovi" (lnw-); fonte prezzi effettiva, letta a ritroso per data in ric-predata |
| COGTESLS | (via feurtab) |
Testate listino (tls-); fornisce divisa (tls-div) e verifica esistenza testata |
| COGCONTA | cogconta.cpy |
Dati contabili / divisa conto |
util-v06 (linkage) |
ridefinisce user-area di wcont.cpy |
Merce passata da COGV06 (v06-merce) |
Struttura del file di transito COGTRANS¶
Record trs-rec con chiave primaria trs-chia1 (trs-merce + trs-cli) e due chiavi alternate:
trs-chia2=trs-cli+trs-merce(ordinamento per cliente);trs-chia4=trs-mer-av(codice merce avanzato) +trs-cli+trs-merce(ordinamento per codice avanzato).
Campi principali: trs-cmc (codice merce avanzato host), trs-desc (descrizione), trs-mer-av (codice avanzato), trs-currency, trs-prezzo, trs-data.
Modalità di ricerca¶
Il tipo di ricerca corrente è in tm-ricerca (combo tm-ricerca, gestita da COGS60):
tm-ricerca |
Significato | Fonte scansionata (carica-trs) |
|---|---|---|
"M" |
Per merce (un articolo → tutti i clienti con prezzo) | COGMERCL per codice merce |
"C" |
Per cliente (un cliente → tutte le merci con prezzo) | COGMERCL per cliente (chiave 2) |
"L" |
Listino completo per un cliente su tutte le merci | COGMERCI (scansione anagrafica) |
"E" |
Estrazione su una merce per tutti i clienti che ne hanno listino | COGMERCI + scrittura per ogni cliente |
Il tipo di ordinamento del transito dipende dalla configurazione USO-CMA (paragrafo x99-src-cfg, RNEWCONF gruppo RICEGENERA): se vale '1' si usa la chiave per codice merce avanzato (tm-tip-merce = 'A', chiave trs-chia4), altrimenti la chiave standard (tm-tip-merce = 'M', chiave trs-chia2).
Flusso di elaborazione¶
Apertura transito (apri-cogtrans)¶
Il nome del file di transito è costruito da directory temporanea + #$ + program-id + . + operatore (w-trs-name). Viene aperto in output e poi in i-o; se lo stato dopo l'open non è "00" la funzione risulta già in uso da un altro operatore e il programma esce.
Raccolta prezzi (fill-file → carica-trs / carica-loop)¶
In base a tm-ricerca, si posiziona sulla fonte (COGMERCL o COGMERCI) e la si scorre. Per ogni elemento pertinente:
- si compone la chiave transito (
trs-cli,trs-merce,trs-cmc); - si ricava il codice avanzato e la descrizione tramite
COGS68(op. "String"); - si cerca il prezzo effettivo con
ric-predata(vedi sotto); - se il prezzo esiste, si scrive il record su
COGTRANS(wr-cogtrans).
Ricerca del prezzo di listino (ric-predata)¶
Cerca il prezzo su COGLISNW per la coppia merce/cliente, leggendo a ritroso per data (rdprv-coglisnw) fino al listino valido alla data odierna (datasis). Considera solo lnw-tip-lis = "C", lnw-fascia = 1, prezzo numerico e non nullo (salvo lnw-fl-zero = "S"). Recuperata la testata da COGTESLS (tls-div, tls-rif), valorizza divisa, prezzo e data nel record di transito.
Visualizzazione paginata (vis-tabella / vis-tabella-disp)¶
I dati vengono letti dal transito con paginazione bidirezionale (framework fscrol2.cpy / utilpggr.cpy): i paragrafi rn-start*, rp-start*, sn-read/sp-read, rd-controlli-fill, fill-tab-m/fill-tab-c gestiscono avanti/indietro (Pag↑/Pag↓) riempiendo la tabella tm-tab (max 100 elementi per pagina). Tasti attivi sulla griglia:
- SHIFT-F4 → personalizzazione griglia;
- SHIFT-F5 → esporta in Excel (
z-esporta-paged-grid); - F9 → stampa (vedi sotto);
- F7 (pulsante custom "Ricerca", solo per ricerche non "M"/"E") → ricerca rapida su una merce all'interno del listino cliente (
ricerca-rapida/a-tm-r-merce-ric).
Le colonne visibili si adattano al tipo ricerca (z-gridadmn-prepara): per "M"/"E" si mostra il cliente; per "C"/"L" si mostra il codice merce.
Stampa (stampa)¶
La stampa passa da COGS54 per la scelta stampante/anteprima, quindi produce il tabulato (132 colonne) percorrendo di nuovo COGTRANS: stampa-m (intestazione per merce, righe per cliente) oppure stampa-c (intestazione per cliente, righe per merce). Gli importi sono editati con COGU10W (z-u10-edita).
Chiamate a sottoprogrammi¶
| CALL | Scopo |
|---|---|
GRIDADMN |
Gestione griglia paginata (preparazione colonne, add/svuota, personalizzazione, export) |
COGS60 |
Combo di scelta del tipo ricerca (z-s60-tm-ricerca) |
COGS65W |
Accept del cliente (util-s65 / z-s65-tm-r-cli) |
COGS68W |
Accept/composizione del codice merce e ricerca rapida (util-s68); anche op. "String"/"Estrai-Dati" per comporre codice avanzato e descrizione |
COGS50 |
Composizione stringa codice merce per intestazione stampa (util-s50) |
COGS54 |
Selezione stampante / gestione output di stampa (util-s54) |
COGU10W |
Edit degli importi di prezzo con divisa (util-u10) |
RNEWCONF |
Configurazione RICEGENERA / USO-CMA (paragrafo x99-src-cfg) |
Copy standard: mmmask.cpy, wgrid.cpy, fscrol2.cpy, utilpggr.cpy, getdcont.cpy, dtab.cpy, utilgdad.cpy.
Note¶
- Il campo
trs-data-2(storia listini per data) è presente ma disattivato nel sorgente (righe commentate): la scrittura del transito non lo valorizza, quindi ogni coppia merce/cliente compare con il solo prezzo valido alla data corrente. - Le fasce di quantità non sono gestite: viene considerata solo la fascia 1 di
COGLISNW. - Il file di transito è per-operatore ed è cancellato (
delete cogtrans) alla chiusura del programma; l'apertura in i-o dopo l'output serve anche da lock logico (messaggio "Funzione gia' in uso"). - Avviato da
COGV06, il programma esce direttamente in uscita griglia (ESC) anziché tornare alla maschera parametri.