SWA013: Sincronizzazione nominativi CRM¶
Configurazioni possibili
| Gruppo | Parametro | Note |
|---|---|---|
| .... | ||
| clipot | info-nominativo-cancellato | |
| clipot | info-account |
Logica generale del programma Questo programma permetterà la sincronizzazione (import/export) dei nominativi CRM tra gestionale e base dati Postgres Maschera del programma Nella maschera del programma mostrare solo il contatore dei record elaborati. Elaborazione Se l'operazione è: * "SINCRO": Esecuzione di * B - Importazione nominativi * A - Esportazione nominativi * "ESPORTA-CLIENTE": Esecuzione di: * E - Esportazione nominativo singolo B - Importazione nominativi Seguendo le Linee guida per la sincronizzazione, eseguire l'esportazione dei nominativi. NB: diamo per scontato di inserire nominativi di tipo "cliente/prospect" Scorrere APCRMANAGR eseguendo una apposita query che permetta di restituire i record aggiornati (A_CRA_AGG_APP = "S"). Per ciascun record trovato, se il campo: A_CRA_COD vale: * "0": significa che è un nuovo nominativo inserito su smartphone; eseguire B.1 * <> 0: significa che sullo smartphone il nominativo è stato aggiornato; eseguire B.2 B.1 - Inserimento nuovo nominativo Significa che il record è stato inserito da uno smartphone; in questo caso avremo anche A_CRA_ID_DISPOSITIVO e A_CRA_IDD_PROG significativi. B.1.1 - Creazione nuovo nominativo Chiamata a CRMS07 con i dati:
| Dato | Descrizione |
|---|---|
| CRMS07-OPE | "SCRIVI" |
| CRMS07-TCL | Tipologia configurata in "clipot"-"tipo-nominativo-anagr-cliente" |
| CRMS07-RAGSOC | A_CRA_NOME |
| CRMS07-IND | A_CRA_IND |
| CRMS07-CAP | A_CRA_CAP |
| CRMS07-LOCA | A_CRA_LOCA |
| CRMS07-PROV | A_CRA_PROV |
| CRMS07-NAZIONE | A_CRA_NAZIONE |
| CRMS07-CF | A_CRA_COD_FIS |
| CRMS07-PI | A_CRA_PIVA |
| CRMS07-COMUNE | A_CRA_COMUNE |
Restituirà CRMS07-NOM, che contiene il codice nominativo creato B.1.2 - Rimozione record di input Il record di origine da cui siamo partiti su APCRMANAGR va cancellato.: B.2 - Aggiornamento nominativo esistente In questo caso avremo A_CRA_ID_DISPOSITIVO e A_CRA_IDD_PROG = 0, mentre avremo A_CRA_COD significativo. B.2.1 - Aggiornamento nominativo Chiamata a CRMS07 con i dati:
| Dato | Descrizione |
|---|---|
| CRMS07-OPE | "AGGIORNA" |
| CRMS07-NOM | A_CRA_COD |
| CRMS07-RAGSOC | A_CRA_NOME |
| CRMS07-IND | A_CRA_IND |
| CRMS07-CAP | A_CRA_CAP |
| CRMS07-LOCA | A_CRA_LOCA |
| CRMS07-PROV | A_CRA_PROV |
| CRMS07-NAZIONE | A_CRA_NAZIONE |
| CRMS07-CF | A_CRA_COD_FIS |
| CRMS07-PI | A_CRA_PIVA |
| CRMS07-COMUNE | A_CRA_COMUNE |
B.2.2 - Aggiornamento APCRMANAGR Aggiornare il record di origine impostando:
| Dato | Descrizione |
|---|---|
| A_CRA_AGG_APP | "N" |
B.3 - Aggiornamento informazioni speciali Sia in caso di inserimento che di variazione, eseguire la ricerca informazioni speciali (D.1) per il tipo nominativo importato. Quindi, se per la tipologia in esame sono presenti le informazioni per: * K-IFL-LATITUDINE * K-IFL-LONGITUDINE * K-IFL-TEL * K-IFL-EMAIL * info-account aggiornare i relativi record sulla scheda CRM, usando CRMS06
| Dato | Contenuto |
|---|---|
| CRMS06-OPE | "SCRIVI" |
| CRMS06-NOM | Codice nominativo in elaborazione |
| CRMS06-INF | Numero informazione interessata all'operazione |
| CRMS06-DATO-NUM | A_CRA_LATITUDINE A_CRA_LONGITUDINE |
| CRMS06-DATO | A_CRA_TELEFONO A_CRA_EMAIL |
Verificare che sulla scheda importata i dati siano presenti, al termine dell'elaborazione B.3.1 - Aggiornamento campi calcolati Se il nominativo A - Esportazione nominativi Seguendo le Linee guida per la sincronizzazione, eseguire l'esportazione dei nominativi. Su POSTGRES, tabella APSTATOSYN, leggere il record relativo alla tabella/oggetto da sincronizzare "CRMANAGR"; se il record non esiste, crearlo impostando
| Dato | Contenuto |
|---|---|
| A_SYN_AZIENDA | Codice azienda |
| A_SYN_TABELLA | "CRMANAGR" |
| A_SYN_DA_GES_DATA | 0 |
| A_SYN_DA_GES_ORA | 0 |
| A_SYN_DA_ID_SINCRO | 1 |
Qui otterremo due informazioni importanti: * Data/ora ultima esportazione da gestionale a postgres (A_SYN_DA_GES_DATA e A_SY_DA_GES_ORA) * Prossimo ID sincronizzazione da memorizzare sulla tabella (A_SYN_ID_SINCRO) Ricerca record da esportare * Scorrere CRMANAGR; per ciascun record letto considerare solo quelli dove CRA-DA-DATA+CRA-DA-PROG sono >= a A_SYN_DA_GES_DATA+A_SYN_DA_GES_ORA (fare il confronto normalizzando e unendo i campi in un unico campo di 8+4 caratteri: AAAAMMGGHHMI) Quindi usando CRMS06, ricerca del valore corrispondente alle 3 informazioni trovate, e passarle in questi 3 campi * Per ciascun record valido cercare l'esistenza di un record avente:
| Dato | Descrizione |
|---|---|
| A_CRA_AZIENDA | Codice azienda |
| A_CRA_ID_DISPOSITIVO | 0 |
| A_CRA_IDD_PROG | 0 |
| A_CRA_COD | CRA_COD |
Se non esiste, inserirlo. Se esiste, aggiornarlo: se pero' A_CRA_AGG_APP = "S" o "C", inserire una segnalazione sul file di log. Informazioni con cui inserire/aggiornare un record su APCRMANAGR:
| Dato | Descrizione |
|---|---|
| A_CRA_AZIENDA | Codice azienda |
| A_CRA_ID_DISPOSITIVO | 0 |
| A_CRA_IDD_PROG | 0 |
| A_CRA_COD | CRA_COD |
| A_CRA_NOME | CRA_NOME |
| A_CRA_TIPO_ANAGR | CRA_ANA_TIP |
| A_CRA_ANA | CRA_ANA |
| A_CRA_TIP | CRA_TIP |
| A_CRA_AGENTE | CRA_AGE |
| A_CRA_ZONA | Zona su COGGEANA x tipo "C" e codice <> zero |
| A_CRA_IND | CRA_IND |
| A_CRA_CAP | CRA_CAP |
| A_CRA_LOCA | CRA_LOCA |
| A_CRA_PROV | CRA_PROV |
| A_CRA_COMUNE | Usando CRMS06, ricerca dell'informazione fissa "comune": |
| A_CRA_PIVA | Usando CRMS06, ricerca dell'informazione fissa "partita IVA": |
| A_CRA_COD_FIS | Usando CRMS06, ricerca dell'informazione fissa "Codice fiscale": |
| A_CRA_ID_SINCRO | A_SYN_ID_SINCRO |
| A_CRA_FL_CANC | Usando CRMS06, ricerca dell'informazione info-nominativo-cancellato, se significativa Se viene restituito "1" in CRMS06-DATO, significa che il nominativo è cancellato, quindi inserire "C"; In tutti gli altri casi lasciare vuoto |
| A_CRA_AGG_APP | "N" |
| A_CRA_NO_ESPORTAZIONE | Attraverso il punto D.1, ricerca delle informazioni speciali per il tipo nominativo A_CRA_TIP Quindi usando CRMS06, ricerca del valore corrispondente alle informazioni trovate, e passarle in questi campi |
| A_CRA_LATITUDINE | |
| A_CRA_LONGITUDINE | |
| A_CRA_TELEFONO | |
| A_CRA_EMAIL | |
| A_CRA_ACCOUNT |
A.1 - Esportazione contenuto scheda Per ciascuna scheda esportata, è necessario verificare l'esportazione del contenuto. Ricerca record da esportare * Con un comando SQL, eliminare tutti i record di ARPSKDATI dove
| Dato | Descrizione |
|---|---|
| A-SKDI-AZIENDA | Codice azienda |
| A-SKDI-ORIGINE | "C" |
| A-SKDI-CLASSE | " " |
| A-SKDI-OGGETTO | Codice nominativo; es. "00001234" |
- Con un comando SQL, eliminare tutti i record di ARPSKDATN dove
| Dato | Descrizione |
|---|---|
| A-SKDN-AZIENDA | Codice azienda |
| A-SKDN-ORIGINE | "C" |
| A-SKDN-CLASSE | " " |
| A-SKDN-OGGETTO | Codice nominativo; es. "00001234" |
- Scorrere CRMANANF, per tutti i record dove NNF-COD = CRA-COD; esportare ciascun record su ARPSKDATI 14/07/2021: Aggiunto il controllo se l' informazione e' abilitata alla esportazione WEB oppure no verificandolo leggendo la pagina a cui fa riferimento l'informazione
- Leggere CRMSKPAG con tipo pagina skp-tcl = cra-tip e pagina skp-pag = nnf-pag
- se la pagina ha skp-sincro-web = "S" l' informazione e' esportabile altrimenti non verra' esportata
| Dato | Descrizione |
|---|---|
| A-SKDI-AZIENDA | Codice azienda |
| A-SKDI-ORIGINE | "C" |
| A-SKDI-CLASSE | " " |
| A-SKDI-OGGETTO | Codice nominativo; es. "00001234" |
| A-SKDI-PAGINA | NNF-PAG |
| A-SKDI-PROG | NNF-PROG |
| A-SKDI-INF-SPECIE | NNF-SPECIE |
| A-SKDI-INF-COD | NNF-INF |
| A-SKDI-DATO-X | NNF-DATO, per le informazioni di tutti i tipi, eccetto "Data" e "Numero" |
| A-SKDI-DATO-D | NNF-DATO, per le informazioni di tipo "Data" |
| A-SKDI-DATO-N | NNF-DATO-N, per le informazioni di tipo "Numero" |
| A-SKDI-FL-CANC | "N" |
| A-SKDI-ID-SINCRO | L'id sincronizzazione usato anche per l'esportazione di APCRMANAGR |
- Scorrere CRMANANN, per tutti i record dove NNN-COD = CRA-COD; esportare ciascun record su ARPSKDATN 14/07/2021: Aggiunto il controllo se l' informazione e' abilitata alla esportazione WEB oppure no verificandolo leggendo la pagina a cui fa riferimento l'informazione
- Leggere CRMSKPAG con tipo pagina skp-tcl = cra-tip e pagina skp-pag = nnn-pag
- se la pagina ha skp-sincro-web = "S" l' informazione e' esportabile altrimenti non verra' esportata
| Dato | Descrizione |
|---|---|
| A-SKDN-AZIENDA | Codice azienda |
| A-SKDN-ORIGINE | "C" |
| A-SKDN-CLASSE | " " |
| A-SKDN-OGGETTO | Codice nominativo; es. "00001234" |
| A-SKDN-PAGINA | NNN-PAG |
| A-SKDN-PROG | NNN-PROG |
| A-AKDN-INF-SPECIE | " " |
| A-SKDN-INF-COD | NNN-INF |
| A-SKDN-DATO | NNN-DATO |
| A-SKDN-FL-CANC | "N" |
| A-SKDN-ID-SINCRO | L'id sincronizzazione usato anche per l'esportazione di APCRMANAGR |
C - Aggiornamento APSTATOSYN Aggiornare il record APSTATOSYN relativo a:
| Dato | Contenuto |
|---|---|
| A_SYN_AZIENDA | Codice azienda |
| A_SYN_TABELLA | "CRMANAGR" |
e aggiornare i dati:
| Dato | Contenuto |
|---|---|
| A_SYN_AZIENDA | Codice azienda |
| A_SYN_TABELLA | "CRMANAGR" |
| A_SYN_DA_GES_DATA | Data/ora di aggiornamento maggiore trovata sui record esportati |
| A_SYN_DA_GES_ORAcia | |
| A_SYN_DA_ID_SINCRO | Sommare 1 al valore precedente |
D.1 - Ricerca informazioni speciali Questa parte non va eseguita in sequenza, ma nei punti indicati sopra. Per il tipo nominativo in esame, scorrere la configurazione scheda su CRMSKINF, impostando quindi:
| Dato | Descrizione |
|---|---|
| SKI-TCL | Tipo nominativo |
Per tutti i record trovati, cercare l'informazione corrispondente su CRMINFOR
| Dato | Descrizione |
|---|---|
| IPT-NUM | SKI-INF |
Verificare se IPT-LINK corrisponde ad uno dei seguenti valori definiti su costanti-clipot.cpy: * K-IFL-NO-ESPORT * K-IFL-LATITUDINE * K-IFL-LONGITUDINE * K-IFL-TEL * K-IFL-EMAIL Il codici informazione trovati dovranno essere memorizzati in una tabella di working o in un file di transito in modo che possano essere recuperati successivamente al momento opportuno, senza dover ripetere la ricerca per ciascun nominativo trattato, altrimenti rischiamo di appesantire l'elaborazione. Per ciascuna informazione salvare quindi alcune informazioni necessarie nell'elaborazione: * Tipologia interessata (SKI-TCL) * Codice link (IPT-LINK) * Numero informazione (IPT-NUM) * Pagina (SKI-PAG) * Posizione (SKI-PROG) E - Esportazione nominativo singolo Eseguire l'esportazione del solo nominativo passato in input in SWA013-NOM, come viene fatto nel punto B, ma senza aggiornare la tabella di sincronizzazione
Estratto da documentazione interna ClickUp