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 bitmapclipote 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 messaggim-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-tabdi CRMINFOR con ordinamento per codice (st-crminfor-notmin) o per descrizione (chiave 2st-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; tracciatm-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-canccome warning se gia' su scheda, poi modifica riga; in "S": ritornacrm013-out-cod), Ctrl+A (aggiungi, con limitek-max-ele-tab), Ctrl+E (elimina, bloccato dac1-ctrl-canc), F5 descrizioni in lingua (GESLANGS suIPT-DES/IDS-LABEL/IDS-IDa 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 proponetm-prossimo).a-tm-link-desrisolve 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"); setm-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-crminfvfloop), poidel-crminfor,x-sincronizza-informazione, e se gruppo abilitato gre003 (CANCELLA).c1-ctrl-cancblocca (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) ecancel "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 suix-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-cancla 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 incostanti-clipot.cpy(k-ifl-*). La working-storage localetab-opt-link-okelenca 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.