COGK50 - Valori Ristorno su Merci¶
Descrizione¶
Programma GUI per la gestione della tabella dei valori di ristorno per merce e cliente, nell'ambito della procedura ristorni. Utilizza interfaccia a griglia (GRIDADMN) con pannello di dettaglio per inserimento/modifica riga. Supporta modalita' standalone (aggiornamento diretto) e modalita' chiamata (selezione e restituzione al chiamante). Autore: Mauro - Eurosystem; conversione Win: Daniele.
Tabelle utilizzate¶
| Tabella | Accesso | Descrizione |
|---|---|---|
| FEURTAB | Lettura | Tabella file euro/percorsi |
| Tabella ristorni | Lettura/Scrittura | Definita in cogk50.select / cogk50.fd (tabella valori ristorno per merce/cliente) |
| COGGEANA (indiretto) | Lettura | Ricerca anagrafica cliente via UTILS65 |
| COGMERCI (indiretto) | Lettura | Ricerca merce via UTILS68 |
La tabella principale e' gestita tramite copybook cogk50.select (SELECT), cogk50.fd (FD), cogk50.wrk (working storage campi).
Struttura dati¶
tab-maschera¶
| Campo | Tipo | Descrizione |
|---|---|---|
tm-tipo-storno |
9(05) | Tipo di storno |
tm-azzero |
X(01) | Flag azzeramento ('S'/'N') |
tm-r-cli |
9(05) | Codice cliente |
tm-r-nome |
X(40) | Nome cliente (display) |
tm-ele-sav |
X(1000) | Salvataggio riga per annullamento modifiche |
tm-pnt |
9(04) | Numero righe caricate in griglia |
tm-tab |
Array 999 | Righe: merce (gru+sot+cod), descrizione merce, valore ristorno |
grid-record¶
Record di interscambio con la griglia:
- grd-merce: X(09) — codice merce composto
- grd-val: X(14) — valore ristorno formattato
Flusso di elaborazione¶
Inizializzazione (apri)¶
- Verifica abilitazione (
ctr-abil). z-99-init-program(da mmmask.cpy).- Caricamento lingua (
x-carica-lingua). - Apertura file (
open-files), lettura azienda (rd-azi). - Definizione tasti funzione abilitati: Invio, F3-conferma, F3-aggiorna, F8-aiuto, F8-calendario, Shift+F4-griglia, Ctrl+A-aggiungi, Ctrl+E-elimina, F9-ricerca avanzata. Se richiamato (
w-dc-called = "S"): anche F3-selezione e F3-modifica. - Lettura divisa di conto (UTILU10
get-divisa-conto). - Preparazione form (
z-s68-tm-merce,rd-msk-pop). - Modalita': se richiamato → "S" (selezione), altrimenti "A" (aggiornamento).
- Inizializzazione griglia (
z-prepara-tm-grid,z-costruisci-controlli).
Ciclo principale (a4)¶
initialize tab-maschera,initialize tm-tab.tm-azzero = 'N'.z-carica-controlli,x-attiva-f3-conferma,z-cambia-controlli.
Acquisizione testata (a10)¶
a-tm-azzero:
- UTILS95 per input flag azzero.
- Se tm-azzero = 'S': dialogo conferma azzeramento (dialog-f6).
- F3 → a-richiesta-conferma.
a-tm-r-cli:
- UTILS65 per input/ricerca codice cliente.
- F3 → a-richiesta-conferma.
a-richiesta-conferma:
- x-imposta-conferma per validazioni.
- acc-conf (F3 = procede, altri tasti = torna a a-tm-r-cli).
Caricamento griglia (a-carica-griglia)¶
carica-cli thru ex-carica-cli: lettura dei record esistenti dalla tabella ristorni per il cliente selezionato; compilazionetm-tabcon merce e valore; aggiornamentotm-pnt.- Durante il caricamento verifica che i valori siano in divisa di conto.
Gestione griglia (a30 → a-grid → a-accept-grid)¶
z-costruisci-grid: costruisce la griglia contm-pntrighe.z-99-accept-grid: accept eventi griglia.- ESC:
test-wesc; se confermato →fine. - F-event: gestione eventi mouse/doppio-click →
x-test-mouseoa-riga-dettaglio. - Shift+F4:
GRIDADMNper configurazione colonne. - F3:
- Se modalita' "A" e richiamato → passa a "S".
- Conferma con
acc-conf-custom; se F3 →aggiorna thru ex-aggiorna, reset e ritorno aa4. - Invio: se
i != 0e abilitato →a-operazione = "M",a-riga-dettaglio. - Ctrl+A (in modalita' "A"): copia riga
i-prec,a-operazione = "I",a-riga-dettaglio. - Ctrl+E (in modalita' "A"):
c1-ctrl-canc(verifica), conferma,c-cancella thru ex-c, compatta array,z-costruisci-grid.
Dettaglio riga (a-riga-dettaglio)¶
- In modifica: cursor-y dalla griglia, frame titolo "Modifica riga",
x-enabled-tm-merce = 0(merce non modificabile). - In inserimento:
w-cell-y = tm-pnt, frame titolo "Ins. riga", merce modificabile. - Accept dei campi dettaglio (merce via UTILS68, valore tramite UTILU10).
- F3 = conferma riga; ESC = annulla (ripristino da
tm-ele-sav).
Salvataggio (aggiorna thru ex-aggiorna)¶
- Se
tm-azzero = 'S': cancellazione di tutti i record esistenti per il cliente dalla tabella ristorni. - Scansione
tm-tab(1..tm-pnt): per ogni riga con merce significativa: - Lettura record esistente; se trovato → rwr (rewrite), altrimenti → wr (write).
- Rimozione di eventuali record non piu' presenti in tabella (gestione cancellazioni).
Subroutine chiamate¶
| Subroutine | Scopo |
|---|---|
| GRIDADMN | Amministrazione griglia (Shift+F4) |
| UTILU10 | Display/input valori in divisa |
| UTILU43 | Utility generica |
| UTILP19 | Utility generica |
| UTILGDAD | Gestione dati griglia |
| UTILS52 | Input data con calendario |
| UTILS65 | Ricerca/input codice cliente |
| UTILS68 | Ricerca/input codice merce |
| UTILDLG | Gestione dialoghi |
Note implementative¶
- Interfaccia GUI (AcuCOBOL Windows): screen section in
cogk50-01.scr; declaratives incogk50.decla. - La tabella ristorni e' definita integralmente nelle copybook esterne (
cogk50.select,cogk50.fd,cogk50.wrk): la chiave e' presumibilmente cliente + merce. k-max-ele-tab = 999: numero massimo righe griglia.- La modalita' "richiamato" (
w-dc-called = "S") abilita F3-selezione: in questo caso F3 non salva ma restituisce la riga selezionata al chiamante tramite linkage. - Il flag
tm-azzero = 'S'attiva l'azzeramento preventivo: prima del salvataggio vengono eliminati tutti i record esistenti per il cliente, poi riscritti i nuovi. fl-modifyectr-modifytracciano le modifiche effettuate durante la sessione per ottimizzare il salvataggio.- Il programma usa
mmmask.cpy(standalone), nonmmsubw.cpy.