Vai al contenuto

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

  1. apri -- Inizializzazione, legge wo-parametro(1:1) per determinare tm-tipo-storno, imposta titolo maschera, recupera divisa di conto (get-divisa-conto), imposta tasti funzione
  2. a4 -- Reinizializzazione maschera, azzeramento puntatore
  3. 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
  4. a30 -- Se ci sono righe: costruisce la griglia e si posiziona; se nessuna riga: passa direttamente all'inserimento (a-riga-dettaglio con operazione "I")
  5. a-grid / a-accept-grid -- Gestione eventi griglia: F3 salva, Ctrl+A aggiunge, Ctrl+E elimina, Invio modifica riga, Shift+F4 GRIDADMN
  6. a-riga-dettaglio -- Abilita il frame di dettaglio; in inserimento abilita i campi cliente/nome, in modifica li disabilita (il cliente non e' modificabile)
  7. a-tm-r-cli -- Accept cliente via COGS65W; controllo duplicati nel loop (tm-r-cli(i) = tm-r-cli(w-i))
  8. a-tm-perc -- Accept percentuale; visibile solo se configurato (x-visible-tm-perc)
  9. a-tm-val -- Accept importo fisso (con utility COGU10W per formattazione divisa)
  10. a-riga-dettaglio-fine -- Validazione e aggiornamento griglia via GRIDADMN (Add-Record / Modify-Record)
  11. aggiorna -- Salvataggio: chiama cancella-storn (delete loop su tipo) poi scrivi-storn (wr + rwr per ogni riga con cliente != 0)
  12. 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 ... THRU in aggiorna (stile legacy): cancella-storn thru ex-cancella-storn e scrivi-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 (copybook GetDCont.cpy) e usata per la formattazione dell'importo in griglia.