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¶
- Inizializzazione (
apri): apertura file, lettura configurazione RNEWCONF (x99-confi), preparazione griglia e controlli, lettura parametri di chiamata (m39-called,m39-gru). Se richiamato conCOGM39-CALLEDsalta all'apertura del gruppo. - 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. - 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 conscb-gruppo-scontonuovo). - 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. - Caricamento griglia (
a2-10-loop): scansione di COGSCONT per il gruppo, caricamento delle righe (merce + descrizione, sconto1, sconto2, prezzo, valuta, raggruppamento) nella tabellatm-tabe poi nella griglia (GRIDADMN). - 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). - 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-scontie' configurata, una riga puo' riferirsi a un raggruppamento gerarchico (COGANRAG,arag-tip = "R") invece che a una singola merce; su COGSCONT il record hascc-sel-raggr = "#"conscc-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-m39sullauser-areadiwcont.cpyveicolam39-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).