Vai al contenuto

COGM93 - Aggiornamento listini da listino base (duplicazione listino)

Panoramica

Programma GUI a filtri che duplica le righe di un listino di partenza (listino base per riferimento o listino cliente) su uno o piu' listini di destinazione (fino a 5, listino o cliente), alla data indicata. In fase di copia converte il prezzo nella divisa del listino di destinazione e, se abilitato dalla configurazione e da una classe di sequenza, applica un ricarico parametrico calcolato da COGS01. Puo' inoltre duplicare le descrizioni particolari degli articoli (COGMERCL), creare le testate dei listini cliente mancanti (COGTESLS) e produrre un file di log CSV/TSV dell'elaborazione, apribile a fine lavoro. Dispone di una modalita' di simulazione (nessuna scrittura, solo log). E' il modulo usato per aggiornare i listini di vendita a partire da un listino base.

Posizione nel menu

Menu Percorso
Magazzino Controllo Prezzi > Aggiornamento da List. Base

Struttura del programma

File e tabelle utilizzati

File/Tabella Tipo Descrizione
FEURTAB Input Tabella di sistema (nomi file)
COGLISNW I-O Righe listino: legge le righe del listino di partenza e scrive le righe dei listini di destinazione (chiave articolo/tipo listino/riferimento/fascia/data)
COGMERCI Input Anagrafica articoli
COGGEANA Input Anagrafica clienti (validazione codice cliente)
COGMERAP Input Anagrafica articoli aggiuntiva: reparto (map-reparto) per il filtro reparto
COGTESLS I-O Testate listino: legge divisa/descrizione, crea le testate dei listini cliente mancanti
COGMERCL I-O Descrizioni merce particolari per cliente: duplica la descrizione dell'articolo verso i clienti di destinazione
COGRACMC Input Raccordo codici articolo: codice articolo avanzato per il log (chiave secondaria .k02)
COGLISPS Input Classi/sequenze di sconto-ricarico parametriche (validazione classe)
COGEXPRT Output File sequenziale (TSV) di export/log dell'elaborazione (cogm93.txt in directory temporanea)

Copybook principali

Copybook Descrizione
cogm93.select / cogm93.fd / cogm93.wrk / cogm93.decla / cogm93.prc SELECT, FD, working storage, declaratives e procedure di I/O (generati da Screens)
cogm93-01.scr Screen section (filtri)
k-u10.cpy Costanti operazioni COGU10 (cambio divisa, arrotonda)
utilcogs0c.cpy / utilcogs01.cpy Parametri COGS01 (ricerca sconti/ricarichi parametrici)
utilcogf6c.cpy Parametri COGF6C (selezione classe di sequenza)
utils52/s65/s68/u10/w96/u16 Aree di comunicazione con le rispettive subroutine
utilestrxls.cpy Parametri GRIDTOXS (apertura file esportato)
utilncnf.cpy Configurazioni RNEWCONF
utils01.cpy (linkage) Area COGS01 in linkage
wgrave/wnscr/wopenf/wstato/cogazien Working storage errori, video, apertura file, stato I/O, dati azienda
grave/mmmask/opengen/stato/stato1/winmsg Errori gravi, maschera, apertura generica, stato verbi, messaggi
sendw96.cpy / getdcont.cpy / cogracmc.k02 Aiuto listino, divisa conto, chiave secondaria COGRACMC

Chiamate a sottoprogrammi (CALL)

Programma Scopo
COGU16W Motore di scansione articoli filtrati per range e ordinamento
COGU10W Cambio divisa (dal listino origine al listino destinazione) e arrotondamento prezzi
COGS01 Ricerca dello sconto/ricarico parametrico da applicare al prezzo (per classe/cliente/articolo/data)
COGF6C Selezione della classe di sequenza (F8 sul campo classe)
COGS65W Aiuto/selezione cliente sui campi cliente
COGW96 (send-w96) Aiuto/selezione listino sui campi riferimento listino
GRIDTOXS Apertura del file di log/export dell'elaborazione
RNEWCONF Lettura configurazioni (gestione listino parametrico, path apri file)

Logica di elaborazione

1. Inizializzazione (apri)

Imposta nome programma, verifica abilitazione, legge divisa conto e dati azienda, apre i file. Legge le configurazioni RNEWCONF (x99-src-cfg): LISTVEND / GESTIONE-LISTINO-PARAMETRICO (abilita il ricarico parametrico) e ARC-OTT / PATH-APRI-FILE. Abilita i tasti funzione (F1 configura, F3 conferma, F8 calendario/aiuto, F9 ricerca avanzata), prepara i controlli di ricerca articoli (COGS68) e il titolo "Duplicazione Listino".

2. Filtri (a4, paragrafi a-tm-*)

L'operatore imposta: data (tm-data), ordinamento merci (tm-ord-mer), range prodotto da/a (COGS68), reparto (tm-reparto), "Duplico descrizioni particolari" (tm-fl-mcl: D = duplica), "Simula" (tm-fl-simula: S = nessuna scrittura), classe di sequenza (tm-classe, aiuto COGF6C, validata su COGLISPS), listino di partenza (tipo L/C e riferimento; per L aiuto COGW96, per C cliente COGS65) e fino a 5 listini di destinazione (tm-tip-lis-a1..a5 con riferimento listino o cliente). Ogni campo listino/cliente valida la divisa leggendo COGTESLS. Segnala con warning il caso di copia sullo stesso listino.

3. Conferma e preparazione destinazioni (a-richiesta-conferma)

Alla conferma (F3 + acc-conf) valorizza la tabella tm-listino-dest (5 elementi) con tipo, riferimento (rif listino o cod cliente), divisa e nome per ciascun listino di destinazione. Poi esegue b-elabora una volta per ogni destinazione con riferimento valorizzato (perform 5 times).

4. Elaborazione per destinazione (b-elabora)

Apre il file di export cogm93.txt, costruisce la tabella tab-info-modello con le colonne del log (articolo, articolo cliente, listino origine, prezzo origine, data origine, ricarico, listino calcolato, prezzo calcolato, data memorizzazione) e scrive righe intestazione (c-esportazione-tipi-campo, c-esportazione-intestazioni). Poi scandisce gli articoli via COGU16 (b-10-loop): scarta gli articoli non del reparto richiesto (COGMERAP), se richiesto duplica la descrizione particolare (COGMERCL), quindi elabora il listino con b2-listino.

5. Copia delle righe listino (b2-listino / b1-copia)

Per ogni articolo scandisce all'indietro (rdprv-coglisnw) il listino di partenza (per tipo/riferimento/fascia) cercando la riga valida piu' recente non oltre la data indicata; se si copia sullo stesso listino, cerca la riga con data strettamente precedente per preservare l'origine. Salva i dati di origine per il log (codice articolo avanzato da COGRACMC, codice articolo cliente da COGMERCL) e, per ciascuna delle 5 destinazioni valorizzate, esegue b1-copia:

  • imposta data, tipo e riferimento del listino di destinazione;
  • converte il prezzo nella divisa di destinazione (COGU10W, operazione cambio);
  • se GESTIONE-LISTINO-PARAMETRICO = "T" e classe valorizzata, applica il ricarico (b1-applica-ricarico);
  • registra i dati calcolati nel log e, se non in simulazione, scrive/riscrive la riga in COGLISNW;
  • se sia origine sia destinazione sono listini cliente, duplica la descrizione particolare (b1-scrivi-cogmercl).

6. Ricarico parametrico (b1-applica-ricarico)

Chiama COGS01 con articolo, data, classe, cliente (se destinazione cliente) e forza-parametrico = "S" per ottenere fino a tre sconti/ricarichi (s01-sco-1/2/3 con segno). Applica ciascuno al prezzo (somma o sottrazione percentuale) arrotondando con COGU10W. Il primo ricarico e' riportato nel log.

7. Testate listini cliente (b2-90)

Al termine di ogni articolo, per ogni destinazione di tipo cliente crea la testata listino in COGTESLS se mancante, con divisa conto, descrizione e intestazione standard.

8. Chiusura elaborazione e log (b-99 / b-apri-log)

Chiude il file di export. Sulla prima destinazione, se non in simulazione, chiede se aprire il log e in caso affermativo lo apre via GRIDTOXS. A fine lavoro mostra il conteggio listini letti/copiati.

9. Chiusura (fine / z-chiudi)

Cancella COGU16W e COGU10W, chiude i file e la finestra, esegue z-99-exit-program.

Note tecniche

  • Discrepanza etichetta menu / titolo interno: l'etichetta di menu e' "Aggiornamento da List. Base", ma il titolo della maschera e i commenti del sorgente parlano di "Duplicazione Listino": la funzione reale e' la duplicazione delle righe di un listino base (COGLISNW) su uno o piu' listini/clienti, con conversione divisa ed eventuale ricarico. Si tratta della stessa operazione descritta dai due nomi.
  • Copia su stesso listino: se una destinazione coincide con l'origine, il programma cerca la riga con data di decorrenza PRECEDENTE alla data indicata e la risalva alla data indicata, per non sovrascrivere/perdere l'origine del dato (gestito da b1-copia-stesso, che sottrae 1 alla data di partenza della ricerca).
  • Ricarico parametrico: e' applicato solo se la configurazione GESTIONE-LISTINO-PARAMETRICO vale "T" e la classe di sequenza (tm-classe, COGLISPS) e' valorizzata. Gli sconti restituiti da COGS01 sono usati come ricarichi con segno (- sottrae, altro somma).
  • Modalita' simulazione (tm-fl-simula = "S"): non scrive nulla su COGLISNW ma produce comunque il log dell'elaborazione, utile per verificare l'esito prima dell'aggiornamento effettivo.
  • Log/export: il file cogm93.txt (TSV) e' generato in directory temporanea con separatore tab e apribile via GRIDTOXS; le colonne e la logica di export sono clonate da COGPA9.
  • Conversione divisa: ogni prezzo copiato e' convertito da tm-div-da (divisa origine) a tm-div-a(k) (divisa destinazione) tramite COGU10W; le divise sono lette dalle testate listino COGTESLS.
  • Programma generato da Screens (versione 2.13.1): filtri e routine di I/O provengono dai file cogm93.select/.fd/.wrk/.decla/.prc e dalla screen cogm93-01.scr. Il file COGEXPRT e' un file sequenziale dichiarato manualmente nel sorgente (non gestito da Screens). Inclusa la chiave secondaria cogracmc.k02.