Vai al contenuto

COGM39 - Gestione Gruppi Sconto su Listino

Sorgente: cbl/cogm39.cbl | Tipo: Programma interattivo con griglia (Screen Designer) | Program-ID: COGM39

Menu:

  • Magazzino > Archivi & Tabelle > Listino Vendita > Gruppi Sconto

Scopo

Gestione dei gruppi sconto applicabili al listino di vendita. Un gruppo sconto raccoglie una serie di righe (per merce, per gruppo/sottogruppo merce, oppure per raggruppamento gerarchico) a ciascuna delle quali sono associati fino a due sconti in cascata (sconto1, sconto2) oppure, in alternativa, un prezzo particolare. Il gruppo viene poi collegato a clienti/condizioni per applicare automaticamente gli sconti negli ordini e nei documenti di vendita.

Le condizioni sono memorizzate su COGSCONT con tipo scc-tip = "G" (gruppo); la chiave e' gruppo-sconto + merce (o + rgr-classe/rgr-cod per il raggruppamento gerarchico). Il programma consente di creare/modificare/cancellare le righe di un gruppo, applicare uno sconto a tutte le righe in blocco, e duplicare un intero gruppo su un nuovo codice.

Il programma puo' essere richiamato da un altro programma (es. COGM37) passando m39-called = "COGM39-CALLED" e m39-gru con il codice gruppo: in tal modo entra direttamente sul gruppo indicato e all'uscita torna al chiamante.


Struttura del programma

Flusso principale

  1. Inizializzazione (apri): apertura file, lettura configurazione RNEWCONF (x99-confi), preparazione griglia e controlli, lettura parametri di chiamata (m39-called, m39-gru). Se richiamato con COGM39-CALLED salta all'apertura del gruppo.
  2. Accept del gruppo (a-tm-cod): immissione/ricerca (F8 help via COGW81) del codice gruppo; verifica esistenza su COGSCONT (tipo "G"). Attiva la maschera di duplicazione.
  3. Duplicazione (a-tm-cod1 / agg-new-cod): opzionale, copia tutte le righe COGSCONT del gruppo di partenza su un nuovo codice tramite il buffer COGSCONB (clone del record con scb-gruppo-sconto nuovo).
  4. Testata gruppo (a2-car-tab .. a-tm-codice-host): lettura/scrittura della testata su COGGRSCT (descrizione, validita' da/a, codice host); il record di testata viene creato se assente.
  5. Caricamento griglia (a2-10-loop): scansione di COGSCONT per il gruppo, caricamento delle righe (merce + descrizione, sconto1, sconto2, prezzo, valuta, raggruppamento) nella tabella tm-tab e poi nella griglia (GRIDADMN).
  6. Gestione griglia (a-grid / a-accept-grid): inserimento riga (Ctrl-A), modifica riga (Invio), eliminazione riga (Ctrl-E), applicazione sconto in blocco (F1), salto a merce (F6 via COGX40), cancellazione intero gruppo (F4).
  7. Dettaglio riga (a-riga-dettaglio .. a-riga-dettaglio-fine): accept di raggruppamento gerarchico (F8 help via COGMAL), merce (help via COGS68W), sconto1/sconto2 (COGU20W), prezzo (COGU10W); alla conferma scrive/riscrive il record COGSCONT.

Cancellazione logica

Dal 2018 (marcatori 100518) la cancellazione delle condizioni non e' fisica: al posto di del-cogscont viene impostato scc-val = "C" e riscritto il record (rwr-cogscont). Analogamente in inserimento/modifica il campo scc-val viene rimesso a spazio. La scansione della griglia e la duplicazione saltano i record con scc-val = "C".

Applicazione sconto in blocco (x-assegna-sco, ass-10-loop)

Con F1 (attivo solo se il gruppo contiene solo sconti, fl-ctrl-cod = 'x'), viene chiesto un unico sconto che viene applicato a tutte le righe del gruppo. Se la riga ha gia' sconto1 valorizzato lo sconto va su sconto2, altrimenti su sconto1. Dal 2025 (TASK-768, marcatori 070325) l'aggiornamento considera tutte le righe (prima saltava quelle senza codice merce completo).


Tabelle e file

File logico Prefisso Accesso Descrizione
FEURTAB - Input Tabella di sistema (feurtab.fd)
COGSCONT scc- Indexed, dynamic (k2) Sconti e prezzi particolari. Righe gruppo: scc-tip = "G", chiave gruppo-sconto + merce o + raggruppamento gerarchico. Cancellazione logica via scc-val = "C"
COGSCONB scb- Indexed, dynamic Buffer di duplicazione: clone di cogscont.fd (REPLACING scc-scb-) usato per copiare le righe su un nuovo codice gruppo
COGGRSCT gst- Indexed, dynamic Testata gruppo sconto (gst-tip = "G", gst-cod = gruppo): descrizione, validita' da/a, codice host
COGMERCI mer- Indexed, dynamic (k2) Anagrafica merci (descrizione riga)
COGANRAG arag- Indexed, dynamic Anagrafica raggruppamenti gerarchici (arag-tip = "R", per classe/id)
COGRAGGR trgr- Indexed Testata raggruppamenti (descrizione classe)
COGCNDCF cnd- Indexed Condizioni cliente/fornitore (dichiarato dal generatore)
COGRACMC rcm- Indexed (k2) Codici alternativi merce (dichiarato dal generatore)

I file logici sono dichiarati nella catena di copy "*.fd" inclusa da cogm39.select (in cbl/screens/).


COPY incluse

Working-Storage

cogm39.wrk, k-u10.cpy, wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, wgrid.cpy, utilgdad.cpy, utils52.cpy, utils68.cpy, utilu10.cpy, utilu20.cpy, utilw81.cpy, utilcogx40.cpy, utilncnf.cpy, utilcogmal.cpy

File section

feurtab.fd, cogfiles.cpy, cogm39.fd

Linkage

wcont.cpy (con redefine util-m39: m39-called, m39-gru), wcont1.cpy

Screen / Procedure Division

cogm39-01.scr, cogm39.decla, grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, cogm39.prc, utilgrid.cpy, getdcont.cpy, cogracmc.k02, sendw81.cpy


CALL a sottoprogrammi

Programma Scopo
GRIDADMN Gestione griglia (preparazione, popolamento, add/modify/svuota record)
RNEWCONF Lettura configurazioni
COGU10W Gestione valori monetari (edita, cambio divisa) sul prezzo particolare
COGU20W Gestione/edita valori sconto
COGS68W Ricerca/help merce (via utils68.cpy)
COGX40 Ricerca merce per "salto a merce" (F6) nella griglia
COGMAL Help raggruppamento gerarchico (via utilcogmal.cpy, F8 su criterio)
COGW81 Help/ricerca codice gruppo sconto (via sendw81.cpy / send-w81, F8)

Configurazioni RNEWCONF

Lette nel paragrafo x99-confi (pacchetto generale "C"):

Gruppo Chiave Campo Descrizione
listvend classe-raggr-sconti tm-cfg-classe-raggr-sconti Classe di raggruppamento gerarchico usata per le righe sconto per raggruppamento. Se valorizzata abilita la gestione del criterio "raggruppamento gerarchico" (COGANRAG/COGRAGGR/COGMAL) in alternativa alla merce

Note tecniche

  • Righe per raggruppamento gerarchico: quando tm-cfg-classe-raggr-sconti e' configurata, una riga puo' riferirsi a un raggruppamento gerarchico (COGANRAG, arag-tip = "R") invece che a una singola merce; su COGSCONT il record ha scc-sel-raggr = "#" con scc-rgr-classe / scc-rgr-cod. Merce e raggruppamento sono mutuamente esclusivi sulla stessa riga.
  • Sconto o prezzo, non entrambi: i controlli (x-controlla-tm-sconto1/2, x-controlla-tm-pre) impediscono di valorizzare contemporaneamente sconto e prezzo particolare sulla stessa riga.
  • Testata gruppo separata: la testata (COGGRSCT) e' stata aggiunta nel 2017 (marcatori 040917) per descrizione, validita' e codice host; e' distinta dalle righe (COGSCONT).
  • Chiamata da altro programma: il redefine util-m39 sulla user-area di wcont.cpy veicola m39-called/m39-gru; e' il canale con cui COGM37 (Aggiornamento singolo listino) apre direttamente un gruppo.
  • Progetto import/export gruppi sconto: e' in valutazione un'evoluzione di COGM39 (o di COGD32) verso l'import/export completo dei gruppi sconto COGSCONT, un gruppo alla volta; la struttura dati letta qui (COGSCONT tipo "G" + testata COGGRSCT) e' quella su cui poggerebbe.
  • Dimensione sorgente: circa 2.376 righe (cbl/cogm39.cbl).