COGK51 - Minor/Maggior Ristorno a Clienti¶
Sorgente: cbl/cogk51.cbl | Program-ID: COGK51 | Tipo: Interattivo con griglia
Menu: Vendite > Ristorni > Parametri Ristorni > Minor/Maggior Ristorno a Clienti
Scopo¶
Gestisce la tabella dei ristorni (minor o maggior) per cliente, memorizzata in COGSTORN. Il tipo di ristorno (1 = minor, 2 = maggior) e' passato come parametro al momento del lancio e determina il titolo della maschera e il sottoinsieme di record gestito.
Il salvataggio e' di tipo "riscrivi tutto": cancella tutti i record del tipo corrente e li riscrive dall'elenco in memoria.
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | Tabella | Input | Tabella generale Eurosystem |
| COGSTORN | Tabella | I-O | Tabella ristorni cliente (chiave: tipo-storno + cliente + gru + sot + cod) |
| COGGEANA | Tabella | Input | Anagrafica generale (lettura ragione sociale cliente) |
Copybook¶
Working storage¶
| Copybook | Descrizione |
|---|---|
cogk51.wrk |
Variabili di maschera e griglia generati da Screens |
k-u10.cpy |
Costanti utility divisa (k-u10-tipo-importi) |
wstato.cpy, wgrave.cpy, wopenf.cpy, wnscr.cpy |
Working storage comuni |
cogazien.cpy |
Dati azienda |
wgrid.cpy |
Supporto griglia |
utilgdad.cpy |
Utility gestione dati aggiuntivi griglia (GRIDADMN) |
utils65.cpy |
Utility campo cliente (COGS65W) |
utilu10.cpy |
Utility divisa/importi |
utilu20.cpy |
Utility numerica |
Linkage¶
| Copybook | Descrizione |
|---|---|
wcont.cpy, wcont1.cpy |
Contesto chiamante |
Fine procedure division¶
stato1.cpy, stato.cpy, winmsg.cpy, grave.cpy, opengen.cpy, mmmask.cpy, GetDCont.cpy, utilgrid.cpy, cogk51.prc
Struttura del programma¶
Variabili principali¶
| Variabile | PIC | Descrizione |
|---|---|---|
tm-tipo-storno |
9(05) | Tipo ristorno (1=minor, 2=maggior); letto da wo-parametro(1:1) |
w-prg-pers |
X(08) | Nome programma per personalizzazione griglia GRIDADMN |
a-modalita |
X(01) | "A"=Aggiornamento, "S"=Selezione |
a-operazione |
X(01) | "I"=Inserimento, "M"=Modifica |
w-dc-called |
X(01) | "S" se richiamato da altro programma |
w-parametro |
X(01) | Valore del parametro (1 o 2) per la configurazione colonne griglia |
Righe tabella (tab-maschera, max 900 elementi)¶
| Campo | PIC | Descrizione |
|---|---|---|
tm-r-cli (i) |
9(05) | Codice cliente |
tm-r-nome (i) |
X(40) | Ragione sociale (da COGGEANA, solo display) |
tm-perc (i) |
9(2)V9(02) | Percentuale ristorno |
tm-val (i) |
9(4)V9(04) | Importo fisso ristorno |
Record griglia¶
| Campo | Descrizione |
|---|---|
grd-r-cli |
Codice cliente formattato |
grd-r-nome |
Ragione sociale |
grd-perc |
Percentuale formattata |
grd-val |
Importo formattato in valuta di conto (via COGU10W, operazione "Edita") |
grd-divisa |
Codice divisa di conto |
Configurazione colonne griglia¶
Il parametro w-parametro (= tm-tipo-storno) determina la visibilita' delle colonne:
- Se
w-parametro = '1'(minor ristorno): colonne 1, 2, 4 visibili; colonna 3 nascosta - Se
w-parametro = '2'(maggior ristorno): tutte le colonne visibili
Flusso principale¶
- apri -- Inizializzazione, legge
wo-parametro(1:1)per determinaretm-tipo-storno, imposta titolo maschera, recupera divisa di conto (get-divisa-conto), imposta tasti funzione - a4 -- Reinizializzazione maschera, azzeramento puntatore
- a10 / a10-loop -- Caricamento da COGSTORN: start notmin su tipo-storno + cliente=0, loop rdnxt con break su cambio tipo; per ogni record legge COGGEANA per la ragione sociale
- a30 -- Se ci sono righe: costruisce la griglia e si posiziona; se nessuna riga: passa direttamente all'inserimento (a-riga-dettaglio con operazione "I")
- a-grid / a-accept-grid -- Gestione eventi griglia: F3 salva, Ctrl+A aggiunge, Ctrl+E elimina, Invio modifica riga, Shift+F4 GRIDADMN
- a-riga-dettaglio -- Abilita il frame di dettaglio; in inserimento abilita i campi cliente/nome, in modifica li disabilita (il cliente non e' modificabile)
- a-tm-r-cli -- Accept cliente via COGS65W; controllo duplicati nel loop (
tm-r-cli(i) = tm-r-cli(w-i)) - a-tm-perc -- Accept percentuale; visibile solo se configurato (x-visible-tm-perc)
- a-tm-val -- Accept importo fisso (con utility COGU10W per formattazione divisa)
- a-riga-dettaglio-fine -- Validazione e aggiornamento griglia via GRIDADMN (Add-Record / Modify-Record)
- aggiorna -- Salvataggio: chiama
cancella-storn(delete loop su tipo) poiscrivi-storn(wr + rwr per ogni riga con cliente != 0) - fine / z-chiudi -- Chiude file e window
Paragrafo aggiorna (logica di salvataggio)¶
aggiorna:
cancella-storn (st notmin su tipo, loop rdnxt + del-cogstorn fino a cambio tipo)
scrivi-storn (varying w-i: wr-cogstorn, se non ok rwr-cogstorn)
Il write viene seguito da un rewrite in caso di errore (record gia' esistente con stessa chiave): questo gestisce il caso di chiave duplicata senza interrompere il salvataggio.
Chiave COGSTORN¶
La chiave primaria e' composta da: sto-tipo-storno + sto-cliente + sto-gru + sto-sot + sto-cod. In questo programma i campi gru/sot/cod sono sempre azzerati/spazi (ristorno a livello cliente, non per articolo).
Chiamate esterne¶
| Programma | Modalita' | Scopo |
|---|---|---|
| COGS65W | CALL | Utility campo cliente (ricerca, aiuto F8, F9) |
| COGU10W | CALL | Formattazione importo in divisa ("Edita") |
| GRIDADMN | CALL | Gestione avanzata griglia (prepara, add-record, modify-record, svuota-tutto) |
Note¶
- Il programma usa
PERFORM ... THRUinaggiorna(stile legacy):cancella-storn thru ex-cancella-stornescrivi-storn thru ex-scrivi-storn. - La sezione di richiamo da programma esterno (
w-dc-called = "S") e' predisposta nel codice ma commentata: il programma non passa dati al chiamante alla selezione. - Se il campo percentuale non e' visibile (
x-visible-tm-perc = 0), il cursore salta direttamente da cliente a importo. - La divisa di conto e' recuperata tramite
get-divisa-conto(copybookGetDCont.cpy) e usata per la formattazione dell'importo in griglia.