Vai al contenuto

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 bitmap clipot e crea pulsante "F5" (Descrizioni in lingua); x99-confi; z-prepara-tm-grid; z-costruisci-controlli.
  • a4: reset; se chiamato imposta tm-tab-cod = crm012-tab e salta a a-tm-tab-cod-controlla; legge livello operatore da CRMUSERS.
  • a-tm-tab-cod: accept codice tabella; F8 richiama CRMW01 (selettore tabella). a-ricarica-griglia legge 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 campo ITT-DES) e lunghezza codice voci (1-8, ricalcola max-text/size del 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-tabella cancella tutte le voci CRMINFTR + la testata CRMINFTT), F5 descrizione voce in lingua (GESLANGS su ITR-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-val cessato via COGS95): accept validati; ESC torna a a-tm-cod-tf con ripristino da tm-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); se tm-cfg-abil-gruppo = "S" chiama gre002 (AGGIORNA). Alla prima riga (fl-agg-testata = "S") crea/aggiorna anche la testata CRMINFTT (wr-/rwr-crminftt) e x-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-tab e 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) sia c2-ctrl-canc (cancellazione intera tabella) impostano sempre c-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.