Vai al contenuto

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)

  1. Verifica abilitazione (ctr-abil).
  2. z-99-init-program (da mmmask.cpy).
  3. Caricamento lingua (x-carica-lingua).
  4. Apertura file (open-files), lettura azienda (rd-azi).
  5. 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.
  6. Lettura divisa di conto (UTILU10 get-divisa-conto).
  7. Preparazione form (z-s68-tm-merce, rd-msk-pop).
  8. Modalita': se richiamato → "S" (selezione), altrimenti "A" (aggiornamento).
  9. 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; compilazione tm-tab con merce e valore; aggiornamento tm-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 con tm-pnt righe.
  • z-99-accept-grid: accept eventi griglia.
  • ESC: test-wesc; se confermato → fine.
  • F-event: gestione eventi mouse/doppio-click → x-test-mouse o a-riga-dettaglio.
  • Shift+F4: GRIDADMN per 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 a a4.
  • Invio: se i != 0 e 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 in cogk50.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-modify e ctr-modify tracciano le modifiche effettuate durante la sessione per ottimizzare il salvataggio.
  • Il programma usa mmmask.cpy (standalone), non mmsubw.cpy.