CRM01B - Importazione tipologie CRM¶
Sorgente: cbl/crm01b.cbl | Program-ID: CRM01B | Tipo: Programma interattivo GUI (importazione anagrafiche)
Menu: CRM > Archivi > Importazione tipologie
Scopo¶
Importa nell'ambiente locale la definizione completa di una "tipologia" CRM (modello di scheda cliente/dossier) prelevandola da un ambiente esterno chiamato AreaAPP, raggiungibile via database SQL (PostgreSQL). L'utente indica l'azienda di origine e il codice tipologia (modello); il programma cancella i dati locali della tipologia e li ricostruisce leggendo le tabelle sorgente ARP* esposte dall'AreaAPP, riversandole nelle tabelle locali CRM*.
L'importazione copre l'intera struttura di una scheda: modello (CRMTIPCL), pagine (CRMSKPAG), informazioni collocate sulla scheda (CRMSKINF), gruppi di informazioni (CRMINFGR), anagrafica delle informazioni (CRMINFOR), tabelle di valori e loro righe (CRMINFTT/CRMINFTR), valori fissi (CRMINFVF) e testi di help (CRMINFDS).
File e tabelle¶
Tabelle locali (destinazione)¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | ISAM | I-O | Tabella features/abilitazioni utente |
| CRMTIPCL | ISAM | I-O | Testata tipologia/modello scheda (chiave: tcl-cod) |
| CRMSKPAG | ISAM | I-O | Pagine della scheda (chiave: skp-tcl + skp-pag) |
| CRMSKINF | ISAM | I-O | Informazioni collocate sulle pagine (chiave: ski-tcl + ...) |
| CRMINFGR | ISAM | I-O | Gruppi di informazioni (chiave: igr-cod) |
| CRMINFOR | ISAM | I-O | Anagrafica informazioni (chiave: ipt-num; chiave sec. crminfor.k02) |
| CRMINFTT | ISAM | I-O | Testate tabelle di valori (chiave: itt-cod) |
| CRMINFTR | ISAM | I-O | Righe tabelle di valori (chiave: itr-tab + itr-cod) |
| CRMINFVF | ISAM | I-O | Valori fissi delle informazioni (chiave: ivf-inf + ivf-prog) |
| CRMINFDS | ISAM | I-O | Descrizioni/help delle informazioni (chiave: ids-inf + ids-lng) |
Tabelle sorgente AreaAPP (via SQL)¶
Le tabelle di origine (ARPSKMOD, ARPSKPAG, ARPSKINF, ARPINFGR, ARPINFOR, ARPINFTT, ARPINFTR, ARPINFVF) sono accedute attraverso l'interfaccia SQL: apertura in init-bin-sub-tm-cfg-bin-tipo (sql-init, sub-cfg-bin-open-*), scansione/lettura con i verbi sub-cfg-st-*, sub-cfg-rdnxt-*, sub-cfg-rd-*, chiusura con sql-exit. La stringa di connessione e il livello di log sono ricavati dalla configurazione RNEWCONF.
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
crm01b.select, crm01b.fd, crm01b.wrk |
SELECT, FD, working storage (Screens) |
crm01b-01.scr, crm01b.decla, crm01b.prc |
Screen, declaratives, procedure I/O |
feurtab.fd, cogfiles.cpy |
Record FEURTAB |
wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy |
Working storage standard |
cogazien.cpy |
Dati azienda |
utilncnf.cpy |
Linkage RNEWCONF (configurazione AreaAPP) |
utilgesstr.cpy |
Linkage GESSTR (conversione testi import/export) |
utils54.cpy, utils68.cpy, utilu03.cpy, utilu22.cpy |
Supporto controlli maschera/subroutine |
wcont.cpy, wcont1.cpy |
Linkage standard |
grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, sendu22.cpy |
Infrastruttura standard |
crminfor.k02 |
Chiave secondaria CRMINFOR |
Logica di elaborazione¶
Inizializzazione (apri): Init programma, apertura file, lettura configurazione AreaAPP (x99-src-cfg). Blocchi di controllo iniziali:
- Se azienda configurata = C99999 e parametro di lancio wo-parametro = "5" esce (modalita' non permessa).
- Se il profilo AreaAPP non e' abilitato (tm-cfg-attiva-areaapp not = "S") esce.
- Se manca la stringa di connessione al database esce con messaggio.
Apre poi la connessione SQL alle tabelle ARP* dell'AreaAPP.
Selezione parametri (a-tm-azienda / a-tm-modello): Accept di azienda e tipologia. La validazione (x-controlla-tm-modello) verifica che il modello esista su ARPSKMOD (via SQL) e che esista gia' nell'ambiente locale su CRMTIPCL. L'azienda indicata non puo' coincidere con l'azienda configurata.
Conferma e importazione (a-richiesta-conferma): Se la tipologia contiene gia' dati su CRMSKPAG, chiede conferma di sovrascrittura. Alla conferma esegue:
- Cancellazione (fase A): elimina tutti i record locali della tipologia da
CRMTIPCL,CRMSKPAG,CRMSKINF. - Importazione (fase B):
ARPSKMOD->CRMTIPCL(testata modello).ARPSKPAG->CRMSKPAG(pagine, escludendo quelle cona-skp-fl-canc = "S").ARPSKINF->CRMSKINF(informazioni collocate, escludendo quelle cancellate); per ogni informazione importa anche il gruppo (importazione-crminfgr) e l'anagrafica informazione (importazione-crminfor).
Importazione informazione (importazione-crminfor): Logica di deduplica: se l'informazione esiste gia' su CRMINFOR con gli stessi attributi non viene riscritta. Se e' di tipo Riquadro (R) o Etichetta (E) riusa un'informazione esistente dello stesso tipo (non duplica mai). Per gli altri tipi crea una nuova informazione con codice progressivo (scrivi-crminfor / write-crminfor con retry incrementale sul numero).
Scrittura dati collegati (scrivi-altri): Per informazioni di tipo Tabella (T) importa ARPINFTT/ARPINFTR in CRMINFTT/CRMINFTR; per tipo Valore fisso (V) importa ARPINFVF in CRMINFVF; se presente help importa su CRMINFDS (lingua "ITA").
Conversione testi: Le descrizioni provenienti dall'AreaAPP passano per z-converti-w-testo-bis (GESSTR, operazione CONV-TESTO-IMPORTATO) prima di essere scritte.
Chiamate a sottoprogrammi¶
| Programma | Utilizzo |
|---|---|
RNEWCONF |
Lettura configurazione AreaAPP (abilitazione, azienda, stringhe di connessione DB, log level) |
GESSTR |
Conversione testi importati (CONV-TESTO-IMPORTATO) |
Interfaccia SQL (sub-cfg-*) |
Accesso alle tabelle ARP* dell'AreaAPP via PostgreSQL |
Gestione errori¶
- Blocco d'ingresso a piu' cancelli: azienda
C99999con parametro5, profilo AreaAPP non abilitato, stringa di connessione DB mancante determinano uscita immediata con messaggio. - Validazione campo modello: deve esistere sia lato AreaAPP (
ARPSKMOD) sia in locale (CRMTIPCL); in caso contrario il campo va in errore e non consente conferma. - La scrittura di nuove informazioni su
CRMINFOR(write-crminfor) gestisce la collisione di chiave incrementando il progressivo e riprovando.
Note implementative¶
- Autore: Andrea Parmeggiani (Eurosystem).
- Le righe marcate con
debin colonna 1-7 attivano i verbi SQL verso l'AreaAPP; sono parte integrante del flusso di importazione, non commenti disattivati. - La deduplica di Riquadri ed Etichette e' voluta: per questi tipi l'aspetto grafico e la descrizione vengono ridefiniti al momento del collocamento sulla scheda, quindi qualunque informazione dello stesso tipo gia' presente in ambiente e' riutilizzabile.
configuration section: usasource-computer/object-computer acu-cobol.- L'importazione e' distruttiva: prima cancella i dati locali della tipologia, poi li ricostruisce dalla sorgente. La conferma di sovrascrittura viene chiesta solo se esistono gia' pagine su
CRMSKPAG.