Vai al contenuto

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