Vai al contenuto

CRM082 - Definizione tipi avviso (allarmi)

Sorgente: cbl/crm082.cbl | Program-ID: CRM082 | Tipo: Programma interattivo GUI (gestione tabella a griglia; dual-use menu/called)

Menu: CRM > Archivi > Tipi avviso (allarmi)


Scopo

Definisce, per una data tipologia nominativo, l'elenco degli avvisi (allarmi) disponibili. La testata identifica la tipologia nominativo (tm-tipo), controllata su CRMTIPCL; la griglia contiene un avviso per riga (progressivo + descrizione + note). Da qui, tramite F6, si accede alla configurazione dell'avviso in CRM083.

Il programma e' dual-use: da menu opera in modalita' "A"ggiornamento (inserimento/modifica/cancellazione righe); richiamato da altro programma (crm082-called = k-program-id) opera in modalita' "S"elezione, con la tipologia forzata in input (crm082-in-cod) e ritorno del progressivo avviso selezionato (crm082-out-prog) su Invio.

Gli avvisi sono memorizzati su CRMAVTES (chiave tipologia + progressivo). La cancellazione di un avviso propaga sulle strutture collegate: filtri (CRMFLTDT) e stati/destinatari avviso (CRMAVDST).

File e tabelle

File/Tabella Tipo Modalita' Descrizione
FEURTAB ISAM Input Parametri file aziendali (cogfiles.cpy)
CRMAVTES ISAM I-O Testata tipi avviso (record avt-rec; chiave primaria avt-tcl tipologia + avt-prog progressivo; campi avt-des, avt-note, avt-chia1). Verbi: st-crmavtes-notmin, rdnxt-crmavtes, rd-crmavtes, wr-crmavtes, rwr-crmavtes, del-crmavtes
CRMFLTDT ISAM I-O Dettaglio filtri su selezione (record fld-rec: fld-tip, fld-cod, fld-tip-det); scanditi/eliminati in cascata alla cancellazione avviso con fld-tip = k-cpt-filtro-allarme (valore "AL"), fld-cod = avt-chia1, fld-tip-det = "F"
CRMAVDST ISAM I-O Destinatari avviso (record avd-rec: avd-tcl, avd-prog-avv, avd-livello, avd-prog-dst); eliminati in cascata (livello "1")
CRMTIPCL ISAM Input Tipologie nominativo (record tcl-rec: tcl-cod, tcl-des); usato per validare/descrivere tm-tipo (rd-crmtipcl)

Copybook utilizzate

Copybook Descrizione
crm082.select, crm082.fd, crm082.wrk, crm082-01.scr, crm082.prc, crm082.decla Screen Designer
feurtab.fd, cogfiles.cpy FEURTAB
costanti-clipot.cpy Costanti clienti potenziali / allarmi (k-cpt-filtro-allarme = "AL")
utilcrm010.cpy Linkage CRM010 (aiuto tipologia nominativo)
utilcrm083.cpy Linkage CRM083 (configurazione avviso)
utilcrm082.cpy Linkage di chiamata di CRM082 stesso (crm082-called, crm082-caller, crm082-in-cod, crm082-out-prog)
utilu20.cpy Linkage utility U20
wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, wgrid.cpy, cogazien.cpy Working storage standard + dati azienda + griglia
utilgdad.cpy Linkage GRIDADMN
wcont.cpy, wcont1.cpy Linkage standard (stringhe)
grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy Copybook di fine procedure

Logica

Struttura basata su griglia editabile (framework tm-tab/utilgrid.cpy). Flusso principale:

  • apri: se crm082-called = k-program-id e crm082-caller valorizzato, imposta modalita' called (w-dc-fl-called = "S"), copia crm082-in-cod. Abilita i tasti in base alla modalita' (called: F3 selezione/modifica; menu: F3 aggiorna), piu' Invio, F8 aiuto, Shift+F4, Ctrl+A, Ctrl+E. Carica la bitmap "labodonto" e crea il pulsante F6 "Gestione" (k-f6-gestione). Modalita' iniziale "S" se called, altrimenti "A".
  • a4: svuota la griglia; se called forza tm-tipo = w-dc-in-cod e lo valida (x-controlla-tm-tipo); prepara controlli.
  • a-tm-tipo: accept della tipologia nominativo; F8 richiama CRM010 (aiuto tipologie); x-controlla-tm-tipo verifica su CRMTIPCL e riporta la descrizione in tm-descrizione.
  • a-tm-tab / a10-loop: carica in griglia i record CRMAVTES con avt-tcl = tm-tipo (st-crmavtes-notmin + rdnxt-crmavtes fino a rottura chiave), popolando tm-r-prog, tm-r-prog-prec, tm-r-des, tm-r-note; traccia il massimo progressivo w-prog-max.
  • a-accept-grid: gestione eventi griglia. F6 (solo se riga valida): esegue a1-aggiorna (salva le modifiche pendenti) poi richiama CRM083 passando tm-tipo e tm-r-prog; al ritorno rilegge CRMAVTES e aggiorna descrizione/note in griglia. F3: in modalita' called alterna S/A (con conferma e aggiornamento se ci sono modifiche pendenti fl-esc-agg), in modalita' menu esegue a1-aggiorna e, se ok, esce. Invio (solo modalita' S): ritorna crm082-out-prog e termina. Ctrl+A: aggiunge riga (z-aggiungi-riga-tm-tab, nuovo progressivo w-prog-max + 1). Ctrl+E: conferma ed elimina la riga (azzera tm-r-prog mantenendo tm-r-prog-prec per la successiva cancellazione fisica).
  • a1-aggiorna / b-aggiorna: applica in blocco le modifiche della griglia confrontando tm-r-prog con tm-r-prog-prec: prog=0 e prec<>0 -> cancella; prog=prec (e tm-fl-riga-mod = "S") -> modifica; prec=0 -> inserisce; prog<>prec -> cancella + inserisce.
  • b1-inserisci / b2-modifica: scrivono/riscrivono CRMAVTES (con conferma sovrascrittura se il progressivo esiste gia', o ricreazione se sparito).
  • b3-cancella: elimina il record CRMAVTES e, in cascata, i filtri CRMFLTDT (tipo k-cpt-filtro-allarme, cod avt-chia1, fld-tip-det = "F") e gli stati CRMAVDST (livello "1") collegati.
  • fine / z-chiudi: z-close-files, chiude la window, esce.

CALL

Programma Scopo
CRM010 Finestra di aiuto/selezione tipologia nominativo (F8)
CRM083 Configurazione dell'avviso selezionato (F6): riceve tipo nominativo e progressivo
GRIDADMN Amministrazione/riempimento griglia (via utilgdad.cpy)

Note

  • Dual-use menu/called: in modalita' called (w-dc-fl-called = "S") il programma funge da selettore di avviso per un chiamante (tipologia forzata in input, ritorno crm082-out-prog); da menu e' una normale manutenzione tabella.
  • Cancellazione a cascata: eliminando un avviso vengono rimossi anche i filtri (CRMFLTDT, tipo "AL") e i destinatari (CRMAVDST) collegati. La modifica tocca quindi strutture condivise con la configurazione avviso (CRM083): attenzione a modifiche che ne cambino le chiavi.
  • L'aggiornamento non e' record-per-record ma in blocco alla conferma (b-aggiorna), confrontando lo stato corrente con quello iniziale (tm-r-prog-prec). E' il pattern standard dei gestori a griglia editabile.
  • Il programma usa PERFORM ... THRU (es. b-aggiorna thru ex-b, b1-inserisci thru ex-b1) e GO TO per il dispatch: stile legacy pre-convenzioni attuali.
  • Molti paragrafi generati (suffisso -ep) restano vuoti/commentati (residui del template griglia): non implementano logica in questo programma.