Vai al contenuto

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 (gruppo scc-mer-gru + sottogruppo scc-mer-sot + codice scc-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 con scc-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 xx se solo gruppo, SOTTOGRUPPO xx/yy se gruppo+sottogruppo, altrimenti la descrizione da COGMERCI (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 abilitazione w-abi-agg;
  • CTRL-A → inserimento nuova riga (a-operazione = "I"), previo controllo w-abi-ins;
  • CTRL-E → cancellazione riga, previo controllo w-abi-del, con conferma; il record viene rimosso da COGSCONT (c-cancelladel-cogscont) e la tabella in memoria viene compattata;
  • F5 → funzione "salta a merce": ricerca la merce indicata (a-salta / x-controlla-tm-w-merce) scorrendo tm-merce e posiziona il cursore sulla riga corrispondente;
  • SHIFT-F4 → personalizzazione griglia (GRIDADMN op. standard).

Dettaglio riga (a-riga-dettaglioa-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):

  1. controlli di validità (x-imposta-confermax-controlla-*): per ogni riga si può avere o sconto o prezzo, mai entrambi (x-controlla-tm-sconto1/2, x-controlla-tm-pre);
  2. aggiornamento griglia via GRIDADMN (Add-Record in inserimento, Modify-Record in modifica);
  3. rilettura del record su COGSCONT con la chiave scc-tip="M" + scc-merce (rd-cogscont-lk): se il record esiste ma si stava inserendo, l'operazione viene commutata in modifica (e viceversa);
  4. scrittura effettiva: wr-cogscont (inserimento) o rwr-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-segno2 e relativi controlli) sono presenti come codice commentato: la maggiorazione si esprime oggi con sconto negativo (gli sconti sono s9(3)v99 con 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).