Vai al contenuto

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-filecarica-trs / carica-loop)

In base a tm-ricerca, si posiziona sulla fonte (COGMERCL o COGMERCI) e la si scorre. Per ogni elemento pertinente:

  1. si compone la chiave transito (trs-cli, trs-merce, trs-cmc);
  2. si ricava il codice avanzato e la descrizione tramite COGS68 (op. "String");
  3. si cerca il prezzo effettivo con ric-predata (vedi sotto);
  4. 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.