Vai al contenuto

COGK34 - Gestione Contratti Revisioni

Scopo

Gestione contratti di revisione: associa a ogni cliente del Centro Revisioni un numero di revisioni in omaggio (app-n-rev-omaggio). I dati sono memorizzati nella tabella COGAPPOG (record di appoggio) con app-tipo = "C" e codice cliente nel range 1-999.

Il programma supporta anche la modalita' "selezione" se richiamato da un altro programma (vedi w-dc-called), ma il blocco di valorizzazione in apri lascia w-dc-called non popolato — di fatto si comporta sempre come standalone in aggiornamento.

Vendite > Centro Revisioni > Tabelle > Contratti

File e tabelle

File Tipo Descrizione
FEURTAB Parametri File parametri di ambiente
COGGEANA Indicizzato Anagrafica generale; usata per ana-tipo = "C", lettura nomi clienti e scan iniziale
COGAPPOG Indicizzato Record di appoggio; chiave app-tipo+app-cod, campo gestito app-n-rev-omaggio

Copybook

File e select

  • feurtab.fd, cogfiles.cpy
  • cogk34.select, cogk34.fd, cogk34.wrk
  • cogk34-01.scr, cogk34.decla, cogk34.prc

Working-storage standard

  • wstato.cpy, wgrave.cpy, wgrid.cpy, wopenf.cpy, wnscr.cpy, cogazien.cpy

Utility

  • utilgdad.cpy, utils65.cpy, utilu10.cpy, utilu20.cpy, utilgrid.cpy
  • k-u10.cpy

Linkage

  • wcont.cpy, wcont1.cpy

Procedure finali

  • stato.cpy, stato1.cpy, winmsg.cpy, grave.cpy, opengen.cpy, mmmask.cpy, GetDCont.cpy

CALL

Programma Scopo
GRIDADMN Gestione griglia (Prepara, Add-Record, Modify-Record, Svuota-Tutto)
COGS65W Ricerca/validazione anagrafica cliente (call-s65 per tm-r-cli)
COGU10W Editing numerici (chiamato in z-u10)

Logica di elaborazione

  1. Inizializzazione (apri): apre file, legge azienda, imposta a-modalita = "A".
  2. Caricamento iniziale (a10 / a10-loop): scan COGGEANA tipo "C" con cod <= 999; per ogni cliente legge COGAPPOG con app-tipo="C"; se app-n-rev-omaggio > 0, aggiunge la riga a tab-maschera (max 999).
  3. Visualizzazione griglia (a30): se ci sono righe, costruisce la griglia; altrimenti entra direttamente in a-riga-dettaglio per inserimento.
  4. Loop principale (a-accept-grid):
  5. F3 in modalita' "A" → richiede conferma e chiama aggiorna
  6. Invio → modifica riga (a-riga-dettaglio con a-operazione="M")
  7. CTRL+A → inserimento (a-riga-dettaglio con a-operazione="I")
  8. CTRL+E → cancellazione riga locale
  9. Riga dettaglio (a-riga-dettaglio, a-tm-r-cli, a-tm-rev): accept di codice cliente (validato con COGS65W e rd-coggeana) e numero revisioni; cliente > 999 rifiutato; duplicati rifiutati.
  10. Aggiornamento (aggiorna):
  11. cancella-appog: scan COGAPPOG tipo "C" cod <= 999 → azzera app-n-rev-omaggio su tutti (rwr-cogappog)
  12. scrivi-appog: per ogni riga della tabella in memoria, legge/scrive COGAPPOG e imposta app-n-rev-omaggio = tm-rev

Struttura dati in memoria

tab-maschera:
  tm-pnt                       PIC 9(04)
  tm-tab (occurs 999):
    tm-r-cli                   PIC 9(05)
    tm-r-nome                  PIC X(40)
    tm-rev                     PIC 9(02)

Note tecniche

  • Programma legacy: usa GO TO e PERFORM ... THRU non conformi alle convenzioni attuali.
  • Logica di update "distruttiva": azzera prima tutti i contratti, poi riscrive quelli presenti in griglia — semplifica la gestione delle cancellazioni ma comporta scrittura di tutti i record cliente.
  • Limite hardcoded 999 sul codice cliente (if ana-cod > 999, if app-cod > 999, controllo in x-controlla-tm-r-cli).
  • La modalita' "selezione" prevista da w-dc-called non viene attivata: il blocco di valorizzazione iniziale if f01-called = k-program-id... e' commentato.