COGM33 — Sconti Generali per merce¶
Sorgente: cbl/cogm33.cbl | Tipo: Programma interattivo a griglia | Program-ID: COGM33
Menu: Magazzino > Archivi & Tabelle > Listino Vendita > Sconti Generali
Scopo¶
Gestisce (inserimento, modifica, cancellazione) gli sconti generali applicati alla merce, ovvero le condizioni di sconto/prezzo particolare non legate a un cliente o a un gruppo sconto ma direttamente al codice merce (gruppo, sottogruppo o articolo). Le condizioni sono memorizzate nella tabella COGSCONT con tipo record scc-tip = "M" (sconto generale su merce).
La maschera presenta in griglia l'elenco degli sconti già codificati; ogni riga riporta il codice merce, i due sconti percentuali e l'eventuale prezzo particolare con divisa. Per ogni riga l'operatore può, in alternativa, indicare gli sconti oppure un prezzo particolare (non entrambi).
File e tabelle principali¶
| File/Tabella | Copybook | Uso |
|---|---|---|
| COGSCONT | cogscont.cpy / cogscont.fd |
Sconti generalizzati; questo programma tratta i soli record con scc-tip = "M" |
| COGMERCI | cogmerci (via feurtab) |
Anagrafica merci; usata per recuperare la descrizione dell'articolo (mer-descr) e validare il codice merce (mer-chia) |
| COGAZIEN | cogazien.cpy |
Dati azienda (magazzino principale az-main-mag, divisa) |
Tabella di lavoro tab-maschera (tm-tab) |
(interna) | Righe sconto caricate in memoria per la griglia (max k-max-ele-tab = 2000) |
Struttura chiave di COGSCONT¶
La chiave primaria scc-chia1 è composta da scc-testa (scc-tip + scc-ana + scc-gruppo-sconto) e scc-dettaglio (scc-merce + scc-caratteristica). Per gli sconti gestiti da COGM33:
scc-tip = "M"(fisso);scc-ana,scc-gruppo-sconto,scc-caratteristica= spazi/zero (inizializzati);scc-merce= codice merce (grupposcc-mer-gru+ sottogrupposcc-mer-sot+ codicescc-mer-cod).
I dati della condizione sono in scc-dati: scc-sco-1, scc-sco-2 (sconti percentuali s9(3)v99), scc-pre (prezzo particolare), scc-currency (divisa).
Flusso di elaborazione¶
Caricamento tabella (a2-car-tab / a2-10-loop)¶
All'ingresso il programma legge sequenzialmente COGSCONT a partire da scc-tip = "M" con il resto della chiave a low-values (st-cogscont-notmin + loop rdnxt-cogscont). Il loop:
- si ferma a fine file o quando
scc-tip <> "M"; - salta i record con
scc-car-tab <> spaces(condizioni su caratteristica/codice avanzato, non gestite qui) o conscc-merce = k-merce-null; - per ogni record accettato valorizza una riga della tabella di lavoro
tm-righe (i)con codice merce, sconti (scc-sco-1/scc-sco-2), prezzo (scc-pre), divisa (scc-currency); - costruisce la descrizione riga in base al livello del codice merce:
GRUPPO xxse solo gruppo,SOTTOGRUPPO xx/yyse gruppo+sottogruppo, altrimenti la descrizione daCOGMERCI(rd-cogmerci).
La griglia viene poi popolata con z-costruisci-grid (chiamate GRIDADMN).
Gestione della griglia (a-accept-grid)¶
I tasti funzione attivi sulla griglia:
- INVIO / doppio click → modifica la riga corrente (
a-operazione = "M",a-riga-dettaglio), previo controllo abilitazionew-abi-agg; - CTRL-A → inserimento nuova riga (
a-operazione = "I"), previo controllow-abi-ins; - CTRL-E → cancellazione riga, previo controllo
w-abi-del, con conferma; il record viene rimosso daCOGSCONT(c-cancella→del-cogscont) e la tabella in memoria viene compattata; - F5 → funzione "salta a merce": ricerca la merce indicata (
a-salta/x-controlla-tm-w-merce) scorrendotm-mercee posiziona il cursore sulla riga corrispondente; - SHIFT-F4 → personalizzazione griglia (
GRIDADMNop. standard).
Dettaglio riga (a-riga-dettaglio → a-riga-dettaglio-fine)¶
La riga di dettaglio accetta in sequenza: prodotto (a-tm-merce, gestito da COGS68W), sconto 1 (a-tm-sconto1), sconto 2 (a-tm-sconto2), prezzo (a-tm-pre, gestito da COGU10W con la divisa tm-curr). I campi "segno" storici sono commentati (righe a-tm-segno1/a-tm-segno2 disattivate).
In conferma (a-riga-dettaglio-fine):
- controlli di validità (
x-imposta-conferma→x-controlla-*): per ogni riga si può avere o sconto o prezzo, mai entrambi (x-controlla-tm-sconto1/2,x-controlla-tm-pre); - aggiornamento griglia via
GRIDADMN(Add-Recordin inserimento,Modify-Recordin modifica); - rilettura del record su
COGSCONTcon la chiavescc-tip="M"+scc-merce(rd-cogscont-lk): se il record esiste ma si stava inserendo, l'operazione viene commutata in modifica (e viceversa); - scrittura effettiva:
wr-cogscont(inserimento) orwr-cogscont(modifica).
Chiamate a sottoprogrammi¶
| CALL | Scopo |
|---|---|
GRIDADMN |
Gestione griglia (preparazione colonne, add/modify/svuota record, personalizzazione SHIFT-F4) |
COGS68W |
Accept del codice merce (gruppo/sottogruppo/codice + codice avanzato), tramite util-s68 / z-s68-tm-merce |
COGU10W |
Edit/accept del prezzo particolare con divisa, tramite util-u10 / z-u10-tm-pre; cancellata in uscita |
COGU20W |
Edit/accept dei valori sconto (util-u20 / z-u20-tm-sconto1/2); cancellata in uscita |
Il programma usa inoltre le copy standard di maschera/griglia: mmmask.cpy, wgrid.cpy, utilgrid.cpy, utilgdad.cpy, getdcont.cpy (per get-divisa-conto).
Note¶
- I due campi "segno sconto" storici (
tm-segno1/tm-segno2e relativi controlli) sono presenti come codice commentato: la maggiorazione si esprime oggi con sconto negativo (gli sconti sonos9(3)v99con segno). - Il numero massimo di righe visualizzabili in griglia è 2000 (
k-max-ele-tab); oltre tale soglia gli ulteriori elementi vengono scartati con avviso. - I controlli di abilitazione (
w-abi-ins,w-abi-agg,w-abi-del) derivano dalla gestione permessi standard (ctr-abil).