Vai al contenuto

CRM013 - Informazioni (CRM)

Sorgente: cbl/crm013.cbl | Program-ID: CRM013 | Tipo: Programma interattivo a griglia (gestione anagrafica, dual-use standalone/selettore)

Menu: CRM > Archivi > Informazioni


Scopo

Gestisce l'anagrafica delle informazioni CRM (CRMINFOR): le informazioni sono i singoli "campi" che compongono le schede dei nominativi. Ogni informazione ha un numero identificativo univoco, una descrizione, etichette (per scheda e per ricerche), un tipo (ipt-tip: alfa, numero, data, check, etichetta, griglia, nominativo, tabella, valori-fissi, note, riquadro, fascicolo) e numerose proprieta': lunghezze (campo, decimali, elenco, descrizione), tabella collegata o tipologia nominativo di riferimento, gruppo di appartenenza, flag totalizzazione/attiva/filtro-principale/dato-calcolato/identificativo, livelli minimi per modifica/filtro/ordine, collegamento a campo anagrafico standard (link), colori di controllo ed etichetta.

L'interfaccia carica in una tabella di lavoro (tm-tab, max 2000 righe) tutte le informazioni, ordinabili per codice o descrizione, e ne consente gestione via griglia GRIDADMN + un'ampia area dettaglio (26 campi con abilitazione dinamica in base al tipo). Gestisce inoltre le descrizioni/etichette multilingua (F5 via GESLANGS + CRMINFDS) e la configurazione avanzata delle informazioni di tipo "griglia" (F10 via CRM035).

Il programma e' dual-use: se richiamato con crm013-called = "CRM013" (linkage utilcrm013.cpy) opera in modalita' "selezione" e restituisce il numero informazione scelto (crm013-out-cod).

File e tabelle

File/Tabella Tipo Modalita' Descrizione
FEURTAB ISAM Input Parametri file aziendali (cogfiles.cpy)
CRMINFOR ISAM (k02) I-O Anagrafica informazioni (ipt-num, ipt-des, ipt-tip, ipt-lun, ipt-lun-dec, ipt-lun-elenco, ipt-lun-des, ipt-tab, ipt-tcl, ipt-fl-tot, ipt-fl-att, ipt-gruppo, ipt-liv-modifica/filtro/ordine, ipt-filtro-main, ipt-fl-calc, ipt-link, ipt-fl-id, ipt-color-control/label) - file principale. Chiave 1 per codice, chiave 2 crminfor.k02 per descrizione
CRMINFDS ISAM I-O Descrizioni/etichette informazione in lingua (ids-inf, ids-lng, ids-label etichetta scheda, ids-id etichetta ricerche; ids-lo-* versione locale)
CRMINFTT ISAM Input Testata tabelle informazioni; letta per descrivere/validare la tabella collegata (itt-cod, itt-des)
CRMTIPCL ISAM Input Tipologie nominativo; letta per descrivere/validare la tipologia collegata (tcl-cod, tcl-des)
CRMINFGR ISAM Input Gruppi di informazioni; letta per descrivere/validare il gruppo (igr-cod, igr-des)
CRMINFVF ISAM I-O Valori fissi delle informazioni di tipo "V"; contati in a1-conta-valori e cancellati in cascata in c-cancella (ivf-inf)
CRMSKINF ISAM (k02) Input Informazioni sulle pagine scheda; scansionata in c1-ctrl-canc (chiave 2 ski-inf) per bloccare la cancellazione di un'informazione gia' presente su una scheda

File dichiarati via crm013.select/crm013.fd (Screens); accesso tramite verbi generati (st-/rdnxt-/rd-/wr-/rwr-/del- per crminfor, crminfds, crminfvf, e rd-crminftt/rd-crmtipcl/rd-crminfgr, st-crmskinf-notmin-chia2).

Copybook utilizzate

Copybook Descrizione
crm013.select, crm013.fd, crm013.wrk, crm013-01.scr, crm013.prc, crm013.decla Screen Designer
feurtab.fd, cogfiles.cpy FEURTAB
costanti-clipot.cpy Costanti CRM: tipi informazione (k-inf-tip-*), codici link (k-ifl-*), k-numero-info-clipot-link, k-max-info
wstato.cpy, wgrave.cpy, wopenf.cpy, wnscr.cpy, cogazien.cpy Working storage standard + dati azienda
wgrid.cpy, utilgdad.cpy, utilgrid.cpy Gestione griglia GUI e linkage GRIDADMN
utilcrm010.cpy Linkage CALL a CRM010 (selettore tipologia, F8)
utilcrm014.cpy Linkage CALL a CRM014 (gestione valori fissi)
utilcrm018.cpy Linkage CALL a CRM018 (selettore gruppo informazioni, F8)
utilcrm026.cpy Linkage CRM026 (gestione etichette - CALL attualmente commentata)
utilcrm035.cpy Linkage CALL a CRM035 (configurazione avanzata info tipo griglia, F10)
utilcrmw01.cpy Linkage CALL a CRMW01 (selettore tabella, F8)
utilgeslangs.cpy Linkage GESLANGS (descrizioni/etichette multilingua) - referenziato tramite Screens
utilgcol.cpy Linkage GETCOLOR (selezione colore, F8 su colori)
utilgre003.cpy Linkage gre003 (sincronizzazione informazione su gruppo aziende)
utilncnf.cpy Linkage RNEWCONF
utilagprg.cpy Linkage sincronizzazione KPN/Areagate (SWA069)
utilcrm013.cpy Linkage di chiamata proprio (called/caller, out-cod)
wcont.cpy, wcont1.cpy Linkage standard maschera
stato.cpy, stato1.cpy, winmsg.cpy, grave.cpy, opengen.cpy, mmmask.cpy Copybook di fine procedure
crminfor.k02, crmskinf.k02 Chiavi secondarie (aggiunte manualmente a fine procedure)

Logica

Struttura goto-driven a stati; e' il piu' articolato dei quattro (2607 righe, ~26 campi di dettaglio con navigazione bidirezionale F2/prosegui).

  • apri: init, open-files, x-configurazione-nascosta (RNEWCONF), lingua, modalita' called; attiva tasti (Invio/Invio-modifica, F8-nuovo, F8-aiuto, Shift+F4, Ctrl+A, Ctrl+E; F3-selezione/modifica se chiamato); carica bitmap clipot e crea 2 pulsanti custom: "F10" (configura, per info tipo griglia) e "F5" (descrizioni in lingua); z-prepara-tm-grid; z-carica-valori-link (popola le descrizioni dei collegamenti a campi anagrafici da messaggi m-grd-link-*); z-costruisci-controlli (riempie la list-box link); x-trova-col-num-tm-tab.
  • a4/a10/a-carica-tab/a10-loop: caricamento in tm-tab di CRMINFOR con ordinamento per codice (st-crminfor-notmin) o per descrizione (chiave 2 st-crminfor-notmin-chia2), fino a max 2000 righe. Per ogni informazione risolve descrizioni collegate (tabella CRMINFTT per tipo "T", tipologia CRMTIPCL per tipo "M", gruppo CRMINFGR), la descrizione link, le etichette originali (CRMINFDS lingua "ITA") e le versioni multilingua; traccia tm-prossimo (prossimo numero libero).
  • a30/a-grid/a-accept-grid: griglia e ciclo accept: Shift+F4 (GRIDADMN), F3 (toggle modalita'), F10 -> CRM035 (config avanzata, solo se pulsante visibile = info di tipo griglia), Invio (in "A": c1-ctrl-canc come warning se gia' su scheda, poi modifica riga; in "S": ritorna crm013-out-cod), Ctrl+A (aggiungi, con limite k-max-ele-tab), Ctrl+E (elimina, bloccato da c1-ctrl-canc), F5 descrizioni in lingua (GESLANGS su IPT-DES/IDS-LABEL/IDS-ID a seconda della colonna cursore).
  • a-riga-dettaglio ... a-riga-dettaglio-fine: lunga sequenza di accept validati con abilitazione dinamica dei campi in base al tipo (x-enabled-*; i campi non abilitati vengono saltati con navigazione F2/avanti). Campi con lookup: a-tm-tab-cod (F8 -> CRMW01), a-tm-gruppo-cod (F8 -> CRM018), a-tm-tcl-cod (F8 -> CRM010), a-tm-color-control/a-tm-color-label (F8 -> GETCOLOR); a-tm-num (F8 propone tm-prossimo). a-tm-link-des risolve il codice link dalla descrizione scelta nella list-box.
  • a-riga-dettaglio-fine: se tipo "V" (valori fissi) chiama CRM014 e richiede almeno 2 valori (crm014-n-val); x-imposta-conferma (verifica cumulativa dei 22 controlli); avviso se link = gruppo sconto; conferma; aggiorna griglia; write/rewrite CRMINFOR auto-correggendo I/M; scrive/aggiorna CRMINFDS (etichette lingua "ITA"); se tm-cfg-abil-gruppo = "S" chiama gre003 (AGGIORNA); x-sincronizza-informazione (SWA069).
  • Ordinamento (a-tm-ord-cod/a-tm-ord-des): due check mutuamente esclusivi (COGS95) che ricaricano la griglia con l'ordine scelto (a-carica-tab).
  • Cancellazione (c-cancella): cancella in cascata i valori fissi CRMINFVF (del-crminfvf loop), poi del-crminfor, x-sincronizza-informazione, e se gruppo abilitato gre003 (CANCELLA). c1-ctrl-canc blocca (elimina) o avvisa (in modifica) se l'informazione e' gia' presente su una scheda (CRMSKINF chiave 2).
  • fine/z-chiudi: z-close-files, chiusura finestra, z-99-exit-program, cancel "gre003" (se gruppo) e cancel "GESFIELD", exit program.

Validazioni notevoli: numero univoco in inserimento; lunghezza 1-70; decimali max 6; livelli max 2; tipo "fascicolo" ammesso solo se tm-cfg-fl-fascicolo = "S".

Configurazioni (RNEWCONF)

Pacchetto "C", 2 chiavi (x-configurazione-nascosta):

Chiave Uso
ABILITA / CLIPOT-FASCICOLO Se "N", vieta la creazione di informazioni di tipo "fascicolo" (tm-cfg-fl-fascicolo, controllo in x-controlla-tm-tip). Il primo gruppo usa ncnf-percorso = "ABILITA"
abilita / gruppo-aziende Se "S", attiva la sincronizzazione delle informazioni sul gruppo aziende via gre003 (AGGIORNA/CANCELLA) e il cancel "gre003" in uscita (tm-cfg-abil-gruppo)

CALL

Programma Scopo
CRM010 Selettore tipologia nominativo (F8 su campo tipologia, per info tipo "M")
CRM014 Gestione dei valori fissi di un'informazione di tipo "V" (a fine dettaglio; richiede >=2 valori)
CRM018 Selettore gruppo di informazioni (F8 su campo gruppo)
CRM035 Configurazione avanzata delle informazioni di tipo "griglia" (F10)
CRMW01 Selettore/aiuto tabella informazioni (F8 su codice tabella, per info tipo "T")
GESLANGS Gestione multilingua di descrizione ed etichette (F5; campi IPT-DES/IDS-LABEL/IDS-ID)
GETCOLOR Selezione colore controllo/etichetta (F8 sui campi colore)
gre003 Sincronizzazione informazione sul gruppo aziende (AGGIORNA/CANCELLA), solo se gruppo-aziende = "S"
GRIDADMN Gestione griglia
RNEWCONF Lettura configurazioni
SWA069 Sincronizzazione KPN/Areagate dell'informazione (agprg-key = "C" + ipt-chia1)

Note

  • Dual-use: da menu gestisce l'intera anagrafica informazioni; se richiamato opera in "selezione" e restituisce crm013-out-cod (numero informazione).
  • Codice goto-driven con PERFORM ... THRU (a1-conta-valori thru ex-a1, c-cancella thru ex-c, c1-ctrl-canc thru ex-c1): stile legacy; la maschera ha navigazione bidirezionale sui ~26 campi tramite salto condizionato sui x-enabled-*.
  • Effetti collaterali su archivi condivisi: la cancellazione di un'informazione elimina in cascata i suoi valori fissi (CRMINFVF), tocca le etichette lingua (CRMINFDS) e, se abilitato, propaga su gruppo aziende via gre003. La cancellazione e' vincolata: c1-ctrl-canc la blocca se l'informazione e' gia' usata su una scheda (CRMSKINF).
  • Il collegamento a campo anagrafico standard (ipt-link, es. ANRAG, ANIND, ANPIV) alimenta il riporto automatico tra anagrafica clienti e scheda CRM; le costanti sono in costanti-clipot.cpy (k-ifl-*). La working-storage locale tab-opt-link-ok elenca 25 opzioni di link (k-numero-info-clipot-link).
  • cancel "GESFIELD" in uscita: GESFIELD e' presumibilmente attivato indirettamente da CRM035/gestione griglia; viene rilasciato alla chiusura.
  • La CALL a CRM026 (gestione etichetta) e' presente ma commentata: la gestione etichette e' passata a GESLANGS.
  • I gestori di tabella Y* (YCRMINFOR, YCRMINFDS, YCRMINFVF, ecc.) sono generati automaticamente dallo Screen Designer.