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-idecrm082-callervalorizzato, imposta modalita' called (w-dc-fl-called = "S"), copiacrm082-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-code lo valida (x-controlla-tm-tipo); prepara controlli. - a-tm-tipo: accept della tipologia nominativo; F8 richiama CRM010 (aiuto tipologie);
x-controlla-tm-tipoverifica su CRMTIPCL e riporta la descrizione intm-descrizione. - a-tm-tab / a10-loop: carica in griglia i record CRMAVTES con
avt-tcl = tm-tipo(st-crmavtes-notmin+rdnxt-crmavtesfino a rottura chiave), popolandotm-r-prog,tm-r-prog-prec,tm-r-des,tm-r-note; traccia il massimo progressivow-prog-max. - a-accept-grid: gestione eventi griglia. F6 (solo se riga valida): esegue
a1-aggiorna(salva le modifiche pendenti) poi richiama CRM083 passandotm-tipoetm-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 pendentifl-esc-agg), in modalita' menu eseguea1-aggiornae, se ok, esce. Invio (solo modalita' S): ritornacrm082-out-proge termina. Ctrl+A: aggiunge riga (z-aggiungi-riga-tm-tab, nuovo progressivow-prog-max + 1). Ctrl+E: conferma ed elimina la riga (azzeratm-r-progmantenendotm-r-prog-precper la successiva cancellazione fisica). - a1-aggiorna / b-aggiorna: applica in blocco le modifiche della griglia confrontando
tm-r-progcontm-r-prog-prec: prog=0 e prec<>0 -> cancella; prog=prec (etm-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, codavt-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, ritornocrm082-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) eGO TOper 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.