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) atm-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/.prce dalla screencogm93-01.scr. Il fileCOGEXPRTe' un file sequenziale dichiarato manualmente nel sorgente (non gestito da Screens). Inclusa la chiave secondariacogracmc.k02.