Vai al contenuto

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:

  1. Cancellazione (fase A): elimina tutti i record locali della tipologia da CRMTIPCL, CRMSKPAG, CRMSKINF.
  2. Importazione (fase B):
  3. ARPSKMOD -> CRMTIPCL (testata modello).
  4. ARPSKPAG -> CRMSKPAG (pagine, escludendo quelle con a-skp-fl-canc = "S").
  5. 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 C99999 con parametro 5, 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 deb in 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: usa source-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.