ASN02D - Copia scheda da CRM¶
Sorgente: cbl/asn02d.cbl (984 righe) | Tipo: Programma interattivo di importazione massiva (senza griglia), con file di transito
Menu: Assist 2.0 > Archivi > Strumenti > Copia scheda da CRM
Scopo¶
Copia una scheda/check-list configurata nel CRM (identificata da una tipologia CRM, CRMTIPCL/CRMSKPAG/CRMSKINF) su un modello di check-list Assist (ASNSKMOD/ASNSKPAG/ASNSKINF), rigenerandone pagine, informazioni e strutture collegate.
L'operatore indica il modello di destinazione, la tipologia CRM di origine e se collegare le informazioni al CRM (per il riporto/sincronizzazione). Alla conferma il programma cancella la configurazione esistente del modello e la ricrea a partire dalla scheda CRM, importando anche gruppi informazioni, tabelle, valori fissi e testi di help, con conversione dei testi tramite GESSTR.
Le informazioni di tipo Fascicolo ("F") e Nominativo ("M") non vengono duplicate; se presenti, a fine importazione viene mostrato un avviso.
Interfaccia (linkage)¶
procedure division using stringhe (aree standard wcont/wcont1). Programma standalone da menu.
File acceduti¶
Origine CRM (lettura)¶
| File | Copybook | Uso |
|---|---|---|
| CRMTIPCL | tcl-rec |
Tipologia CRM: validazione codice (tcl-cod) e descrizione (tcl-des) |
| CRMSKPAG | skp-rec |
Pagine della scheda CRM: origine delle pagine da importare (chiave per skp-tcl) |
| CRMSKINF | ski-rec |
Informazioni della scheda CRM: origine delle informazioni per pagina (chiave per ski-tcl) |
| CRMINFOR | ipt-rec |
Anagrafica informazione CRM: tipo (ipt-tip), gruppo, tabella, lunghezze, descrizione |
| CRMINFGR | igr-rec |
Gruppo informazioni CRM (per crearlo su Assist se mancante) |
| CRMINFTT | itt-rec |
Testata tabella informazione (tipo "T") |
| CRMINFTR | itr-rec |
Righe tabella informazione |
| CRMINFVF | ivf-rec |
Valori fissi dell'informazione (tipo "V") |
| CRMINFDS | ids-rec |
Testo di help/descrizione estesa dell'informazione (lingua "ITA") |
Destinazione Assist (scrittura/aggiornamento)¶
| File | Copybook | Scrittura |
|---|---|---|
| ASNSKMOD | askm-rec |
Modello check-list di destinazione: sola validazione (askm-cod, askm-des) |
| ASNSKPAG | askp-rec |
Pagine del modello: cancellazione preventiva e riscrittura da CRMSKPAG. Chiave secondaria asnskpag.k02 |
| ASNSKINF | aski-rec |
Informazioni del modello: cancellazione preventiva e riscrittura da CRMSKINF (escluse tipo F/M) |
| ASNINFOR | ainf-rec |
Anagrafica informazioni Assist: nuova informazione creata quando non esiste corrispondenza. Chiave secondaria asninfor.k02 |
| ASNINFGR | aigr-rec |
Gruppo informazioni Assist (creato da CRMINFGR se assente) |
| ASNINFTT | aitt-rec |
Testata tabella informazione Assist |
| ASNINFTR | aitr-rec |
Righe tabella informazione Assist (cancellate e ricreate) |
| ASNINFVF | aivf-rec |
Valori fissi Assist (cancellati e ricreati) |
| ASNINFDS | aids-rec |
Help/descrizione estesa Assist |
Transito¶
| File | Scopo |
|---|---|
| cogtrans (dichiarata manualmente nel sorgente) | Mappa delle informazioni gia' esistenti sul modello prima della cancellazione: per ogni ASNSKINF con aski-ipt-num-sincro > 0 memorizza ipt-num-sincro, inf e fl-riporta. Serve a riassociare, in fase di reimportazione, il numero informazione Assist gia' presente (importazione-asninfor), evitando duplicazioni. File temporaneo #$asn02d.<oper>, cancellato in chiusura |
Chiavi secondarie¶
asnskpag.k02asninfor.k02cogtrans.k01
Il record cogtrans e' dichiarato manualmente (trs-chia1 = trs-aski-ipt-num-sincro, piu' trs-aski-inf e trs-aski-fl-riporta), secondo la convenzione per le tabelle di transito.
Programmi chiamati¶
| Programma | Operazione | Scopo |
|---|---|---|
| ASN029 | (lookup modello) | F8 sul campo modello: ricerca/selezione modello check-list (asn029-out-cod) |
| CRM010 | CRM010-CALLED |
F8 sul campo tipologia: ricerca/selezione tipologia CRM (crm010-out-cod) |
| GESSTR | CONV-TESTO-IMPORTATO |
Conversione dei testi importati dal CRM (descrizioni informazioni, righe tabella, valori fissi) tramite z-converti-w-testo-bis. E' presente anche CONV-TESTO-X-ESPORT (z-converti-w-testo, non usata nel flusso attivo) |
Logica di importazione (a-richiesta-conferma)¶
Dopo conferma esplicita dell'operatore:
- Transito informazioni esistenti: scorre
ASNSKINFdel modello e memorizza incogtransle informazioni gia' collegate al CRM (aski-ipt-num-sincro > 0). - Cancellazione (A): elimina tutte le pagine (
ASNSKPAG) e le informazioni (ASNSKINF) esistenti del modello. - Importazione pagine (B): scorre
CRMSKPAGper la tipologia e crea le corrispondentiASNSKPAG(numero pagina, descrizione,askp-seq = 1). - Importazione informazioni (B): scorre
CRMSKINFper la tipologia; per ciascuna: - legge l'anagrafica informazione CRM (
CRMINFOR); - se tipo
"F"(fascicolo) o"M"(nominativo): la salta e segnala la presenza (avviso finale); - altrimenti crea la riga
ASNSKINFcopiando posizione, dimensioni, descrizione, progressivo padre, sequenza, obbligatorieta'; - se l'informazione appartiene a un gruppo (
ipt-gruppo), crea il gruppo suASNINFGRse assente (daCRMINFGR); - imposta
aski-fl-riporta/aski-ipt-num-sincrose richiesto il collegamento info CRM (tm-collego-info = "S"); - risolve il numero informazione Assist (
importazione-asninfor) e valorizzaaski-inf.
Risoluzione informazione (importazione-asninfor)¶
- Se l'informazione era gia' presente sul modello (match in
cogtranssuaski-inf), ne riusa il numero e ripristinaipt-num-sincro/fl-riporta. - Altrimenti, se non e' di tipo riquadro (
"R") o etichetta ("E"), crea una nuova informazione suASNINFOR(scrivi-asninfor, con progressivo calcolato e conversione descrizione via GESSTR). - Per i tipi riquadro/etichetta riusa la prima informazione esistente dello stesso tipo (
w-ainf-num-r/w-ainf-num-e), senza mai duplicare.
Strutture collegate (scrivi-altri)¶
In base al tipo informazione:
- tipo
"T"(tabella): importa testata (ASNINFTTdaCRMINFTT) e righe (ASNINFTRdaCRMINFTR, cancellando le preesistenti); - tipo
"V"(valori fissi): importaASNINFVFdaCRMINFVF(cancellando i preesistenti); - help/descrizione estesa: importa
ASNINFDSdaCRMINFDS(lingua"ITA").
Tutti i testi passano per z-converti-w-testo-bis (GESSTR CONV-TESTO-IMPORTATO).
Validazioni (x-imposta-conferma)¶
- Modello check-list (
x-controlla-tm-modello): obbligatorio e deve esistere inASNSKMOD. Se il modello ha gia' pagine configurate, avviso che la versione attuale verra' sovrascritta. - Tipologia CRM (
x-controlla-tm-tcl-cod): obbligatoria e deve esistere inCRMTIPCL. - Collego info CRM (
tm-collego-info): flag S/N che attiva il riporto/sincronizzazione delle informazioni verso il CRM.
Messaggi principali¶
I messaggi di questo programma sono per lo piu' stringhe letterali inline (non da tabella m-...):
| Testo (sintesi) | Contesto |
|---|---|
| "Confermi che la scheda collegata alla Tipologia CRM venga copiata sul Modello check-list indicato ?" | Conferma operazione |
| "Attendere, Prego ..." | Clock durante l'importazione |
| "errore apertura cogtrans" | Errore apertura file transito |
| "Indicare Modello check-list" / "Modello check-list inesistente" | Validazione modello |
| "Attenzione modello check-list gia' configurata: la versione attuale verra' sovrascritta con la nuova" | Modello gia' popolato |
| "Indicare Tipologia CRM" / "Tipologia CRM inesistente" | Validazione tipologia |
| "Presenti informazioni di tipo fascicolo o di tipo nominativo che non verranno riportate nella Check-list" | Avviso finale su info F/M scartate |
Note implementative¶
- L'operazione e' distruttiva sul modello di destinazione: cancella tutte le pagine e informazioni esistenti prima di ricrearle. Il transito
cogtranspreserva i legami di sincronizzazione CRM delle informazioni gia' presenti, per non rigenerarle e non perdere l'associazione. - Le informazioni di tipo riquadro (
R) ed etichetta (E) non vengono mai duplicate: si riusa la prima informazione esistente dello stesso tipo (le specifiche sono definite al momento del collocamento sulla scheda). - La struttura
cogtransdi transito e' dichiarata manualmente (SELECT + FD +01 trs-rec), non generata da Screens, secondo la convenzione per le tabelle temporanee. - Il progressivo delle nuove informazioni Assist (
ASNINFOR) e delle pagine e' gestito con retry incrementale in caso di collisione (write-asninfor).