CRM012 - Tabelle per Informazioni (CRM)¶
Sorgente: cbl/crm012.cbl | Program-ID: CRM012 | Tipo: Programma interattivo a griglia (gestione anagrafica testata+righe, dual-use standalone/selettore)
Menu: CRM > Archivi > Tabelle x Informazioni
Scopo¶
Gestisce le tabelle di scelta usate dalle informazioni CRM di tipo "valore da tabella". Una tabella (CRMINFTT, testata) e' identificata da un codice (max 4 caratteri), ha una descrizione (anche multilingua) e una lunghezza massima del codice delle voci; l'elenco delle voci ammesse e' su CRMINFTR (righe), ciascuna con codice, descrizione (anche multilingua), codice di collegamento e flag "cessato" (itr-val = "C").
L'operatore seleziona/crea una tabella (lookup F8 verso CRMW01), il programma carica le voci in una tabella di lavoro (tm-tab, max 900 righe) e ne consente aggiunta/modifica/cancellazione tramite griglia GRIDADMN + area dettaglio. La testata CRMINFTT viene creata/aggiornata contestualmente al salvataggio della prima voce (fl-agg-testata). E' inoltre possibile cancellare l'intera tabella (F4) e gestire le descrizioni in lingua (F5, via GESLANGS).
Il programma e' dual-use: se richiamato con crm012-called = "CRM012" (linkage utilcrm012.cpy) opera in modalita' "selezione" sulla tabella passata (crm012-tab) e restituisce la voce scelta (crm012-out-cod, crm012-out-des); in selezione le voci "cessate" (itr-val = "C") sono escluse dal caricamento.
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | ISAM | Input | Parametri file aziendali (cogfiles.cpy) |
| CRMINFTT | ISAM | I-O | Testata tabella informazioni (itt-cod, itt-des, itt-lo-des locale, itt-lun) |
| CRMINFTR | ISAM | I-O | Righe/voci tabella (itr-tab, itr-cod, itr-des, itr-lo-des, itr-collegamento, itr-val) - file principale gestito |
| CRMUSERS | ISAM | Input | Utenti CRM; letta in a4 per ricavare il livello operatore (cru-ope, altrimenti k-liv-standard) |
I file sono dichiarati via crm012.select/crm012.fd (Screens) e gestiti dai relativi verbi generati (st-/rdnxt-/rd-/wr-/rwr-/del-crminftr, rd-/wr-/rwr-/del-crminftt, rd-crmusers).
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
crm012.select, crm012.fd, crm012.wrk, crm012-01.scr, crm012.prc, crm012.decla |
Screen Designer |
feurtab.fd, cogfiles.cpy |
FEURTAB |
wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy |
Working storage standard + dati azienda |
wgrid.cpy, utilgdad.cpy, utilgrid.cpy |
Gestione griglia GUI e linkage GRIDADMN |
utilcrmw01.cpy |
Linkage CALL a CRMW01 (selettore tabella, F8) |
utilncnf.cpy |
Linkage RNEWCONF |
utilgre002.cpy |
Linkage gre002 (sincronizzazione voci su gruppo aziende) |
utilgeslangs.cpy |
Linkage GESLANGS (gestione descrizioni multilingua) - referenziato tramite Screens |
utilagprg.cpy |
Linkage sincronizzazione KPN/Areagate (SWN022/SWN023) |
utilcrm012.cpy |
Linkage di chiamata proprio (called/caller, tab, out-cod/out-des) |
wcont.cpy, wcont1.cpy |
Linkage standard maschera |
stato.cpy, stato1.cpy, winmsg.cpy, grave.cpy, opengen.cpy, mmmask.cpy |
Copybook di fine procedure |
Logica¶
Struttura goto-driven a stati con testata (dati tabella) + dettaglio (voci) + griglia.
- apri: init,
open-files, determina modalita' called; attiva tasti (Invio/Invio-modifica, F4-cancella, F8-aiuto, Shift+F4, Ctrl+A, Ctrl+E; F3-selezione/modifica se chiamato); carica bitmapclipote crea pulsante "F5" (Descrizioni in lingua);x99-confi;z-prepara-tm-grid;z-costruisci-controlli. - a4: reset; se chiamato imposta
tm-tab-cod = crm012-tabe salta aa-tm-tab-cod-controlla; legge livello operatore da CRMUSERS. - a-tm-tab-cod: accept codice tabella; F8 richiama CRMW01 (selettore tabella).
a-ricarica-griglialegge CRMINFTT in lock: se non esiste imposta inserimento (fl-ins-var = "I"), altrimenti mostra descrizione/lunghezza (itt-des,itt-lo-des,itt-lun) e carica le voci (carica-dati). - Testata (
a-tm-tab-cod-des,a-tm-lun): descrizione tabella (F5 -> GESLANGS su campoITT-DES) e lunghezza codice voci (1-8, ricalcolamax-text/sizedel campo codice voce). - a-grid/a-accept-grid: costruzione griglia e ciclo accept: gestione ricarica differita (
flag-ricarica-griglia), Shift+F4 (GRIDADMN), F4 cancellazione intera tabella (solo su tabella esistente, con conferma;c3-cancella-tabellacancella tutte le voci CRMINFTR + la testata CRMINFTT), F5 descrizione voce in lingua (GESLANGS suITR-DES), F3 (toggle modalita'), Invio (modifica riga / ritorno voce al chiamante), Ctrl+A (aggiungi), Ctrl+E (elimina). - Dettaglio voce (
a-tm-cod,a-tm-des,a-tm-collegamento,a-tm-valcessato via COGS95): accept validati; ESC torna aa-tm-cod-tfcon ripristino datm-ele-sav. - a-riga-dettaglio-fine:
x-imposta-conferma(controlla testata + voce), conferma, aggiorna griglia, write/rewrite CRMINFTR auto-correggendo I/M;x-sincronizza-kpn(SWN022); setm-cfg-abil-gruppo = "S"chiama gre002 (AGGIORNA). Alla prima riga (fl-agg-testata = "S") crea/aggiorna anche la testata CRMINFTT (wr-/rwr-crminftt) ex-sincronizza-kpn2(SWN023). - Cancellazione voce (
c-cancella): lock +del-crminftr,x-sincronizza-kpn, e se gruppo abilitato gre002 (CANCELLA). - fine/z-chiudi: close file, chiusura finestra,
z-99-exit-program,cancel "gre002"(se gruppo),exit program.
Configurazioni (RNEWCONF)¶
Pacchetto "C", punto 01 (x99-confi):
| Chiave | Uso |
|---|---|
abilita / gruppo-aziende |
Se "S", attiva la sincronizzazione delle voci sul gruppo aziende via gre002 (AGGIORNA/CANCELLA) e il cancel "gre002" in uscita (tm-cfg-abil-gruppo) |
CALL¶
| Programma | Scopo |
|---|---|
CRMW01 |
Selettore/aiuto tabella informazioni (F8 su codice tabella) |
GESLANGS |
Gestione descrizioni multilingua della testata (F5 su descrizione tabella, campo ITT-DES) e delle voci (F5 su riga, campo ITR-DES) |
gre002 |
Sincronizzazione voce tabella sul gruppo aziende (AGGIORNA/CANCELLA), solo se gruppo-aziende = "S" |
GRIDADMN |
Gestione griglia |
RNEWCONF |
Lettura configurazione gruppo aziende |
SWN022 |
Sincronizzazione KPN/Areagate della voce (agprg-key = "C" + itr-chia1) |
SWN023 |
Sincronizzazione KPN/Areagate della testata tabella (agprg-key = "C" + itt-chia1) |
Note¶
- Dual-use: da menu gestisce testata + voci di una tabella; se richiamato riceve la tabella in
crm012-tabe restituisce la voce selezionata, filtrando le voci "cessate". - Codice goto-driven con
PERFORM ... THRU(carica-dati thru ex-carica-dati,c-cancella thru ex-c,c1-ctrl-canc thru ex-c1,c2-ctrl-canc thru ex-c2,c3-cancella-tabella thru ex-c3): stile legacy. - Controlli di cancellazione non implementati: sia
c1-ctrl-canc(cancellazione voce) siac2-ctrl-canc(cancellazione intera tabella) impostano semprec-ok = 'S'— i controlli previsti (verifica che la voce/tabella non sia gia' agganciata a un nominativo) sono solo commentati. La cancellazione non e' quindi bloccata da vincoli referenziali. - La cancellazione con F4 elimina in cascata TUTTE le voci della tabella e la testata (
c3-cancella-tabella), con sincronizzazione KPN riga per riga. - La testata CRMINFTT viene scritta solo insieme alla prima voce salvata (
fl-agg-testata): se si abbandona senza salvare almeno una voce, la testata non viene persistita. - I gestori di tabella
Y*(YCRMINFTR, YCRMINFTT) sono generati automaticamente dallo Screen Designer.