COGM04 - Aggiornamento Listini da Listino Generale¶
Sorgente: cbl/cogm04.cbl | Tipo: Programma interattivo / subroutine | Program-ID: COGM04
Menu:
- Magazzino > Archivi & Tabelle > Listini Fornitori > Ricalcolo Prezzi da Listino
- Magazzino > Controllo Prezzi > Agg. da Listini Generali
Scopo¶
Ricalcola i prezzi dei listini fornitore (COGLISFO) e, se richiesto, dei listini di vendita (COGLISNW) a partire dai dati del listino generale merce-fornitore (COGGENMF).
Per ogni merce collegata a un fornitore il programma:
- determina un prezzo d'acquisto partendo dal prezzo netto o dal prezzo lordo del listino generale, applicando eventuali sconti (sconto particolare, sconti di gruppo) e la conversione di divisa;
- aggiorna il listino fornitore (COGLISFO) con il prezzo d'acquisto calcolato;
- se configurato e richiesto, calcola il prezzo di vendita applicando i ricarichi di listino (COGRICLS) e l'arrotondamento previsto dalla divisa/listino, e aggiorna il listino di vendita (COGLISNW) per ogni fascia di quantita' della merce.
Nota (dal commento in testa al sorgente): il programma non gestisce le fasce di quantita' in fase di calcolo del prezzo d'acquisto; le fasce sono invece considerate in scrittura sui listini di vendita (vedi
cogmerfq).
Il programma puo' funzionare stand-alone (l'operatore inserisce fornitore, data listino e opzioni via maschera) oppure come subroutine richiamata da un altro programma (m04-called = 'COGM04-CALLED') per aggiornare un singolo fornitore/merce in modo automatico.
Modalita' di chiamata (linkage utilm04.cpy)¶
Quando il programma viene richiamato, riconosce la chiamata dal valore m04-called = 'COGM04-CALLED' e travasa i parametri di linkage nella struttura interna w-dati-called:
| Campo linkage | Campo interno | Significato |
|---|---|---|
m04-cmf |
w-dc-cmf |
Codice merce-fornitore su cui operare (spazi = tutte le merci del fornitore) |
m04-cf |
w-dc-cf |
Codice fornitore |
m04-cm |
w-dc-cm |
Codice merce (di gestionale) |
m04-fl-lis-ven |
w-dc-fl-lis-ven |
Flag: aggiornare anche il listino di vendita |
m04-fl-aggiorna-lfo |
w-dc-fl-aggiorna-lfo |
Flag: aggiornare il listino fornitore |
m04-fl-aggiorna-lis |
w-dc-fl-aggiorna-lis |
Flag: aggiornare i listini |
In modalita' richiamata, se la configurazione di aggiornamento listini e' "automatico" (tm-cfg-agg-lis = "A") la maschera di richiesta dati viene bypassata e l'elaborazione parte direttamente. Al termine, la tabella dati (m04-dati) viene restituita al chiamante tramite user-area.
Il programma di linkage generale e' wcont.cpy (stringhe), con utilm04.cpy (parametri specifici) e wcont1.cpy.
Interfaccia utente (tab-maschera)¶
Screen cogm04-01.scr. Sezioni della maschera:
Riferimenti (tm-riferimenti)
| Campo | Tipo | Descrizione |
|---|---|---|
tm-for-cod |
9(05) | Codice fornitore (F1 = configura, ricerca via COGS65W) |
tm-for-des |
X(41) | Ragione sociale fornitore |
tm-data-listino |
9(08) | Data del listino (AAAAMMGG, F8 = calendario COGS52W) |
Dati listino (tm-dati-listino)
| Campo | Tipo | Descrizione |
|---|---|---|
tm-info |
X(120) | Riga informativa sulle condizioni gestite per il fornitore |
tm-fl-lis-ven |
X(01) | Aggiornare listino vendita: S/N |
tm-fl-tip-agg |
X(01) | Calcolo listino vendita da: L (lordo) / N (netto) |
tm-fl-sco-lor |
X(01) | Tipo sconto su lordo: P (particolare) / G (gruppo) |
tm-fl-pn |
X(01) | E' gestito il prezzo netto |
tm-fl-pl |
X(01) | E' gestito il prezzo lordo |
tm-fl-sp |
X(01) | E' gestito lo sconto particolare |
tm-fl-sg |
X(01) | E' gestito lo sconto gruppo |
tm-fl-sg-g / tm-fl-sg-ssc / tm-fl-sg-sgr |
X(01) | Sotto-flag: gruppo su tabella, condizioni tipo SC, condizioni tipo GR |
tm-tip-sg |
X(01) | Tipo sconto gruppo: S (per prefisso codice merce) / G (per gruppo COGGENMF) |
tm-sconto-piramidale |
X(01) | Sconto piramidale (letto da COGANAPP) |
Contatori di avanzamento
| Campo | Descrizione |
|---|---|
tm-gmf-l |
Merci del listino generale lette |
tm-mfr-l |
Merci-fornitore trovate/elaborate |
tm-lfo-a |
Listini fornitore aggiornati |
tm-lis-a |
Listini di vendita aggiornati |
Ordine di accept e tasti funzione¶
Fornitore > Data listino > (conferma sezione riferimenti, F3) > Aggiorna listino vendita > Calcolo listino da > Tipo sconto su lordo > Ricarichi > (conferma sezione dati listino, F3 = avvia elaborazione).
| Tasto | Funzione |
|---|---|
| ESC | Esce / torna alla sezione precedente |
| F2 | Campo/sezione precedente |
| F3 | Conferma sezione e prosegue / avvia elaborazione |
| F1 | Configura (su campo fornitore, carica configurazione RNEWCONF via x99-load-config) |
| F6 | Lancia COGS29W sui ricarichi (lancia-s29w) |
| F8 | Calendario (su data listino) / aiuto |
| F9 | Ricerca avanzata |
| F5 | Consulta log elaborazione (dialog finale, solo modalita' stand-alone) |
I campi vengono abilitati/disabilitati dinamicamente in base ai flag calcolati (z-cambia-tm-fl-lis-ven, z-cambia-tm-fl-tip-agg, z-cambia-tm-fl-sco-lor, z-cambia-tm-ricarichi). In modalita' richiamata alcuni campi (fornitore, flag vendita, tipo aggiornamento) sono forzati e non modificabili.
File e tabelle principali¶
| File logico | Record | Uso |
|---|---|---|
| FEURTAB | - | Tabella parametri file Eurosystem |
| COGGENMF | gmf- |
Listino generale merce-fornitore (input principale; gmf-cf, gmf-cmf, gmf-pre-net, gmf-pre-lor, gmf-sco, gmf-gru, gmf-molt-pre, gmf-currency) |
| COGMERFO | mfr- |
Anagrafica merci-fornitore (mfr-for, mfr-cod-for, mfr-merce, mfr-divisa); accesso via chiave secondaria cogmerfo.k04 |
| COGMERCI | mer- |
Anagrafica merci (mer-chia, mer-descr, mer-data-agg) |
| COGLISFO | lfo- |
Listino fornitore (output prezzo acquisto; lfo-merce, lfo-for, lfo-data, lfo-prezzo(1), lfo-prezzo(2), lfo-currency) |
| COGLISNW | lnw- |
Listino di vendita (output prezzo vendita; lnw-merce, lnw-tip-lis, lnw-rif, lnw-fascia, lnw-data, lnw-pre) |
| COGRICLS | rls- |
Ricarichi di listino / per fornitore / per soglia acquisto (rls-tip, rls-rif, rls-for, rls-fl-per-forn, rls-ric(1..5), rls-arrot, rls-tip-arr, rls-applico-su, rls-soglia-acq, rls-imp-da-sommare); chiave secondaria cogricls.k02 (per soglia) |
| COGTESLS | tls- |
Testate listini di vendita (tls-tip, tls-rif, tls-div, tls-int, tls-fascie, tls-chia1); usato in r1-leggi-cogtesls |
| COGSCOCF | scf- |
Sconti/condizioni per cliente-fornitore (scf-tip, scf-cod, scf-cnd, scf-key, scf-sco-1..3, scf-fl-ven) |
| COGMERFQ | mfq- |
Fasce di quantita' della merce (mfq-merce, mfq-fascia, mfq-qta) |
| COGPRMED | prm- |
Prezzo unitario acquisto/prezzi medi (scritto se tm-cfg-agg-pua = "S"; prm-merce, prm-data, prm-sede, prm-currency, prm-pua) |
| COGTESGF | tgf- |
Testata gestione prezzi lordi fornitore (tgf-cf) |
| COGTABEL | euta- |
Tabelle generiche (tipo 19 per flag prezzo netto/lordo/sconti; tipo 56 per divise) |
| COGGEANA | ana- |
Anagrafica cliente/fornitore (ana-tipo, ana-cod, ana-nome) |
| COGANAPP | aap- |
Estensione anagrafica (aap-chia1, aap-sconto-piramidale) |
| COGCNDCF | cnd- |
Condizioni cliente-fornitore (personalizzazione Sirecom: fornitore preferenziale, condizione FP) |
Copybook principali¶
Screen Designer¶
cogm04.select,cogm04.fd,cogm04.wrk,cogm04.decla,cogm04.prc,cogm04-01.scr
Strutture dati e file¶
feurtab.fd/cogfiles.cpy-- FD feurtabk-personal.cpy-- costanti personalizzazione (k-personal-elettrica-andreoli,k-personal-sirecom)cogazien.cpy-- dati azienda (az-personal,az-main-mag)cogricls.k02,cogmerfo.k04-- chiavi secondarie (aggiunte manualmente a fine procedure division)
Utility¶
utilncnf.cpy-- struttura parametri RNEWCONFutilcogs0c.cpy-- utility comuneutils29w.cpy-- interfaccia COGS29W (tabella listini/ricarichis29w-)utils52.cpy-- calendario (COGS52W)utils65.cpy-- ricerca anagrafica (COGS65W)utilu10.cpy-- interfaccia COGU10W (cambio, arrotondamento, divisa di conto)utildlg.cpy-- dialog (DIALOGS)utilgesdebug.cpy-- gestione log/debug (gesdebug-*)
Comuni¶
wstato.cpy,wgrave.cpy,wopenf.cpy,wnscr.cpy,k-personal.cpystato.cpy,stato1.cpy,winmsg.cpy,grave.cpy,opengen.cpy,mmmask.cpy,gesdebug.cpy
Linkage¶
wcont.cpy(stringhe),utilm04.cpy(m04-...),wcont1.cpy
Sottoprogrammi chiamati (CALL)¶
| Programma | Scopo |
|---|---|
| RNEWCONF | Lettura configurazione (x99-load-config, pacchetto "C", 5 chiavi) |
| COGU10W | Cambio divisa, arrotondamento importi, lettura divisa di conto per data (z-u10-gen, get-divisa-conto-x-data) |
| COGS65W | Ricerca/aiuto anagrafica fornitore (z-s65-tm-for-cod) |
| COGS29W | Gestione tabella listini/ricarichi (chiamata da lancia-s29w, F6) |
| DIALOGS | Dialog finale "Elaborazione Terminata" con opzione log (F5), solo stand-alone |
I sottoprogrammi generati da Screens (COGS52W calendario, COGS60/COGS68/COGS93/COGS95 per i controlli) sono richiamati tramite le perform z-... di cogm04.prc.
Configurazione (RNEWCONF)¶
Letta in x99-load-config (pacchetto "C", ncnf-pnt = 5):
| # | Gruppo | Chiave | Campo interno | Descrizione |
|---|---|---|---|---|
| 01 | PROGCOGM04 | EUTA-C040-PRE-VEN | tm-cfg-pre-ven |
Default calcolo listino vendita (tm-fl-tip-agg); N = non gestito |
| 02 | PROGCOGM04 | EUTA-C040-TIP-RIC | tm-cfg-tip-ric |
Tipo ricarichi: F (fisso, da COGTESLS/COGRICLS) / R (richiesti a video via COGS29W) |
| 03 | PROGCOGM04 | EUTA-C040-AGG-LIS | tm-cfg-agg-lis |
Aggiornamento listini: S / A (automatico, salta la maschera) / N |
| 04 | LISTVEND | RICARICHI-SOGLIA-ACQUISTO | tm-cfg-ric-per-soglia |
Ricarichi per soglia di prezzo d'acquisto (S forza tm-cfg-tip-ric = "F") |
| 05 | PROGCOGM04 | EUTA-C040-AGG-PUA | tm-cfg-agg-pua |
Se S, aggiorna anche COGPRMED (prezzo unitario acquisto) |
Logica di elaborazione¶
Preparazione dati listino (carica-dati-listino)¶
Determina quali condizioni sono gestite per il fornitore, leggendo COGTESGF (prezzo lordo dedicato) oppure COGTABEL tipo 19 con prodotto PN/PL/SC/GR e COGSCOCF (condizioni SC/GR). Da questi flag deriva:
tm-fl-pn,tm-fl-pl,tm-fl-sp,tm-fl-sg,tm-tip-sg;- la gestibilita' del listino vendita (
get-w-fl-lis-ven): possibile se c'e' prezzo lordo con almeno uno sconto, oppure prezzo netto con ricarichi a video; se richiamato, dipende datm-cfg-agg-lis; - se i ricarichi sono "fissi" (
tm-cfg-tip-ric = 'F') precarica le testate listino viar1-leggi-cogtesls(COGTESLS + COGRICLS per fornitore), altrimenti prepara i dati per COGS29W.
Ciclo principale (b-elabora)¶
- Se e' gestito lo sconto gruppo (
tm-fl-sg = 'S'), carica in memoria la tabella degli sconti di gruppo del fornitore (b1-gruppi) leggendo COGSCOCF (condizioneGRoSC), con dimensionamento del prefisso significativo (b11-size). - Scandisce COGGENMF per fornitore (
gmf-cf = tm-for-cod); in modalita' richiamata puo' filtrare sulla singola mercew-dc-cmf. - Per ogni riga chiama
b-elabora-merce.
Elaborazione di una merce (b-elabora-merce)¶
- Legge COGMERFO (chiave
cogmerfo.k04, per fornitore + codice merce-fornitore). Se non esiste e non e' una chiamata mirata, salta. - Chiama
c-agg-lfoper calcolare e aggiornare il listino fornitore. - Se il flag listino vendita e' attivo, legge COGMERCI e chiama
d-agg-lisper aggiornare i listini di vendita. - In modalita' richiamata su singola merce, al termine imposta
b-termina-elaborazione = "S"e interrompe la scansione.
Calcolo prezzo d'acquisto e aggiornamento listino fornitore (c-agg-lfo)¶
- Ordina la tabella sconti di gruppo per lunghezza prefisso (
organizza-tgs). - Applica il moltiplicatore di prezzo (
gmf-molt-pre) e la conversione di divisa dagmf-currencyaw-currency-conto(COGU10W). - Determina il prezzo d'acquisto (
c1-pre-lor): - se e' presente il prezzo netto (
tm-fl-pn = 'S') lo usa direttamente come costo; - altrimenti parte dal prezzo lordo e applica lo sconto particolare (
c1-calc-sp, usagmf-sco) e/o lo sconto gruppo (c1-calc-sg), scegliendo il risultato in base atm-fl-sco-lor(P/G); - lo sconto gruppo puo' essere per prefisso codice merce (
c11-calc-mer, tipoS) o per gruppo COGGENMF (c12-calc-gru, tipoG), con supporto allo sconto piramidale (c12-src-loop) o al singolo gruppo (c12-src-single-group); - arrotonda il prezzo d'acquisto in base alla divisa di conto (COGU10W, operazione "Arrotonda").
- Aggiorna COGLISFO:
lfo-prezzo(1)= prezzo d'acquisto in divisa di conto; se la merce-fornitore ha una divisa propria (mfr-divisa, validata su COGTABEL tipo 56) calcola anchelfo-prezzo(2)convertito. - Se
tm-cfg-agg-pua = "S", scrive un record COGPRMED con il PUA.
Calcolo prezzo di vendita e aggiornamento listino (d-agg-lis / d1-agg-lis)¶
Eseguito solo se w-fl-ven = "X" e prezzo di vendita > 0. Per la personalizzazione Sirecom l'aggiornamento avviene solo per i fornitori "preferenziali" (COGCNDCF, condizione FP).
- Precarica le fasce di quantita' della merce da COGMERFQ (tabella
tab-fascie-merce). - Per ciascun listino di vendita precaricato (
s29w-pntelementi): - cerca un ricarico specifico per merce (COGRICLS su
rls-merce), altrimenti usa il ricarico di listino/fornitore (s29w-lis-ricarico,s29w-lis-arrot); - calcola il prezzo (
d11-agg-pre): conversione di divisa (COGU10W), eventuale ricerca del ricarico per soglia di acquisto (d11-cerca-ricarico-per-soglia, COGRICLS chiavek02, prima per fornitore poi generale), applicazione del ricarico per fascia, arrotondamento minimo di divisa (COGU10W) e arrotondamento di listino (d11-arrotonda, con tipoM/E), somma dell'eventuale importo aggiuntivo; - aggiorna COGLISNW per la fascia 1 (se la merce non ha fasce) o per ciascuna fascia della merce.
- Se
d-fl-agg-mer = "S", aggiorna la data di ultimo aggiornamento sulla merce (COGMERCI,mer-data-agg).
Logging¶
Tutta l'elaborazione produce un log dettagliato tramite gesdebug-* (aperto in gesdebug-apri-principale): riga d'intestazione "Codice merce fornitore;Esito", messaggi per prezzi lordo/netto/acquisto, sconti trovati, aggiornamenti COGLISFO/COGLISNW, ricarichi non trovati. In modalita' stand-alone, al termine, un dialog (DIALOGS) permette di consultare il log con F5.
Note¶
- Commento in testa: il programma non gestisce le fasce di quantita' nel calcolo del prezzo d'acquisto (sono considerate solo in scrittura sul listino di vendita via COGMERFQ).
- Personalizzazioni presenti nel codice: Elettrica Andreoli (
k-personal-elettrica-andreoli, forza un punto 0 sui listini) e Sirecom (k-personal-sirecom, aggiorna il listino solo per fornitori preferenziali via COGCNDCF condizioneFP). - Se sono presenti sia prezzo lordo sia prezzo netto, dall'8/3/18 il prezzo netto viene usato per aggiornare il listino fornitore (nota nel sorgente).
- Se e' configurata la gestione dei ricarichi per soglia d'acquisto (
tm-cfg-ric-per-soglia = "S"), i ricarichi diventano "fissi" (nessuna richiesta a video). - Il sorgente usa ancora
PERFORM ... THRUeGO TOin vari punti (stile legacy): trattandosi di documentazione, non e' un refactoring da eseguire. - Le chiavi secondarie
cogricls.k02ecogmerfo.k04sono aggiunte manualmente in coda alla procedure division (Screens genera solo la chiave primaria).
Documentazione tecnica -- 2026-07-07