Vai al contenuto

DBF003 - Sincronizzazione contatti

Posizione nel menu Programma non a menu Linkage section UTILDBFPRG - Linkage comune Nome processo: CONTATTI Tabella: DFCONTATTI - Contatti Logica generale Sincronizzazione dell'anagrafica contatti tra AREA e il DB frontiera. Per il momento funziona solo in IMPORT Configurazioni possibili

Gruppo Parametro Note
dbfront sincro-attiva
dbfront email-segnalazioni
dbfront db-tipo
dbfront db-conn-string
dbfront db-log-level

Elaborazione

Operazione Descrizione
" " Elaborazione standard:




"SETTIMANALE" Controllo approfondito dati importati
In questa modalità si esegue come prima cosa l'elaborazione standard. Poi si
scorre tutto il contenuto dei contatti su AREA, e per ciascun record non più presente su DBF lo marca su AREA come cancellato

Vedi Contatti (DBF003) Versioni tabella

Versione Note
1 Su COGRIFER non esisteva ancora RIF-CODICE-HOST
Riconoscimento nuovi contatti:

esistente

Se non esiste nessun contatto con lo stesso codice host, ma ce ne è uno con lo stesso nome (RIF-NOME = DF_CNT_NOME), allora viene considerato esistente e viene aggiornato.


nuovo

2 Su COGRIFER esiste RIF-CODICE-HOST
Riconoscimento nuovi contatti:

esistente


esiste

Se non esiste nessun contatto con lo stesso codice host, ma ce ne è uno con lo stesso nome (RIF-NOME = DF_CNT_NOME), allora viene considerato esistente e viene aggiornato.


nuovo

Passaggio dalla versione precedente
Per innescare questa operazione nel modo corretto senza perdite di informazione, al passaggio dalla versione 1 alla versione 2 si dovranno riaggiornare tutti i contatti, quindi si forzerà DF_CNT_AGG_HOST = 1

Tipi di segnalazione: Vedi Tipi di segnalazione A - Controllo di esecuzione Vedi Controllo di esecuzione B - Apertura B.1 Apertura tabelle Tentare l'apertura della tabella da sincronizzare: DFCONTATTI. Se fallita inviare una Segnalazione grave e chiudere. Tentare l'apertura della tabella semaforo: DFSEMAFORO. Se fallita inviare una Segnalazione grave e chiudere. B.2 Blocco semaforo Lettura del record DFSEMAFORO:

Nome campo Note
DF_SMF_TABELLA DFCONTATTI

Se il record non esiste inserirlo. Se risulta bloccato dal gestonale host (DF_SMF_USO_HOST = 1) Informazione sul log e chiudere. Dopodichè aggiornare il semaforo impostando:

Nome campo Note
DF_SMF_USO_AREA 1
DF_SMF_VERSIONE Versione attuale: 1

B.2.1 Blocco semaforo "MASSIVO" Lettura del record DFSEMAFORO:

Nome campo Note
DF_SMF_TABELLA MASSIVO

Se il record non esiste inserirlo. Se risulta bloccato dal gestonale host (DF_SMF_USO_HOST = 1) segnalare sul log e chiudere. Dopodichè aggiornare il semaforo impostando:

Nome campo Note
DF_SMF_USO_AREA 1
DF_SMF_VERSIONE Versione attuale: 1

B.3 Aggiornamento stato Aggiornamento dello stato sul record specifico; in particolare:

Dato Contenuto
DBFST-STATO "I"
DBFST-ATT-DATA Data sistema
DBFST-ATT-ORA Ora sistema
DBFST-SCHED-DATA Sommare il tempo di attesa a data/ora sistema
DBFST-SCHED-ORA
DBFST-ERRORI 0
DBFST-MSG-ERRORE " "
DBFST-LOG-PROCEDURA " "

C - Sincronizzazione (Importazione) C.1 Selezione record da importare Tramite un comando SQL specifico, estrazione di tutti i record aggiornati dall'HOST: SELECT * FROM dcontatti WHERE df_cnt_agg_host = 1 C.2 Controllo record Per ciascun record letto, verificare la correttezza delle informazioni contenute: Controllo DF_CNT_KEY_HOST Questa informazione deve essere significativa, altrimenti segnalare Errore . Controllo DF_CNT_ANA_HOST Questa informazione deve essere significativa, altrimenti segnalare Errore . Cercare se corrisponde ad un cliente o fornitore, con una ricerca su COGANAPP.AAP2-CHIA2, impostando * AAP2-RACCORDO = DF_CNT_ANA_HOST Se il raccordo: * Esiste: il contatto dovrà essere collegato all'anagrafica trovata * Non esiste: l'anagrafica a cui è collegati il contatto non è stato ancora acquisita: Informazione e skippare: "DF_CNT_KEY_HOST collegato ad anagrafica non ancora importata : DF_CNT_ANA_HOST" Controllo DF_CNT_AREA_TIP/DF_CNT_AREA_COD Se queste informazioni sono presente, significa che il contatto è già codificato; quindi controllare l'esistenza su COGRIFER impostando:

Nome campo Contenuto
RIF-TIP DF_CNT_AREA_TIP
RIF-COD DF_CNT_AREA_COD

Se non esiste, segnalare Errore e skippare: "DF_CNT_KEY_HOST creata ma non trovata: DF_CNT_AREA_TIP/DF_CNT_AREA_COD" Arrivati a questo punto, se questo controllo è positivo, allora significa che siamo in fase di Variazione, altrimenti cercare se sull'anagrafica di riferimento è presente un contatto avente la descrizione corrispondente; se esiste, siamo in fase di Variazione, altrimenti occorre creare un nuovo contatto. Controllo DF_CNT_NOME Questo campo dovrà essere significativo, altrimenti segnalare Errore e skippare. Controllo DF_CNT_PROV Se significativa, la provincia dovrà esistere nella apposita tabella, altriumenti segnalare Errore e skippare: "DF_CNT_KEY_HOST con provincia non trovata: DF_CNT_PROV" Controllo DF_CNT_COMUNE Se significativo, cercare l'esistenza su COGTBCOM, usando TCI-CHIA5, impostando:

Nome campo Contenuto
TCI_COD_FISCALE DF_CNT_COMUNE

Se non trovato segnalare Errore e skippare: "DF_CNT_KEY_HOST con comune non trovato: DF_CNT_COMUNE" Controllo DF_CNT_VAL Questo campo potrà valere: " " o "C"; se è presente un valore diverso segnalare Errore e skippare: "DF_CNT_KEY_HOST; DF-IND-VAL contiene un valore errato: DF_CNT_VAL" Controllo DF_CNT_RUOLO Se significativo, cercare se raccordato ad una posizione presente sulla tabella in AREA; scorrere quindi la tabella posizioni (EUTA-TIPO = 24), e verificare se ne esiste una con EUTA-PSC-CODICE-HOST = DF_CNT_RUOLO; se non esiste segnalare Errore e skippare: "DF_CNT_KEY_HOST con posizione non raccordata: DF_CNT_RUOLO" Controllo DF_CNT_NAZIONE Se significativo, cercare se raccordato ad una nazione presente sulla tabella in AREA; scorrere quindi la tabella nazione, e verificare se ne esiste una con EUTA-ST-CODICE-HOST = DF_CNT_NAZIONE; se non esiste segnalare Errore e skippare: "DF_CNT_KEY_HOST con nazione non raccordata: DF_CNT_NAZIONE" Controllo C.3 Importazione record Se tutti i controlli sono superati, proseguire con l'inserimento/variazione del contatto 1. Riconoscimento nuovi contatti: 2. Se sul record da importare esiste il riferimento del codice contatto di AREA, questo viene riconosciuto come esistente e verrà aggiornato; 3. Si scorrono i contatti a parità di cliente: se uno ha RIF-CODICE-HOST = DF_CNT_KEY_HOST, allora il contatto esiste e verrà aggiornato; 4. Se non esiste nessun contatto con lo stesso codice host, ma ce ne è uno con lo stesso nome (RIF-NOME = DF_CNT_NOME), allora viene considerato esistente e viene aggiornato. 1. In questo caso sarà registrato il codice host sul contatto. 5. In assenza delle due condizioni precedenti, il contatto viene considerato come "nuovo" e sarà inserito Quindi se il contatto è: * Presente: Variazione * Non presente: Inserimento con attribuzione di un nuovo codice progressivo. I record da aggiornare sono:

COGRIFER
Nome campo
RIF-TIP
RIF-COD
RIF-ANA-TIP
RIF-ANA-COD
RIF-NOME
RIF-TEL (n)
RIF-MAIL
RIF-POSIZIONE
RIF-VAL
COGRIFE2
Nome campo
RIF2-TIP
RIF2-COD
RIF2-NOTE

C.4 Aggiornamento stato record Aggiornare il record DFCONTATTI impostando:

Nome campo Contenuto
DF_CNT_AGG_HOST 0
DF_CNT_AGG_AREA 0

In caso di inserimento dobbiamo anche raccordare il nuovo contatto a questo record, quindi aggiorneremo:

Nome campo Contenuto
DF_CNT_AREA_TIP RIF-TIP
DF_CNT_AREA_COD RIF-COD
DF_CNT_AGG_AREA 1

D - Confronto e cancellazione record non trovati (Operazione "SETTIMANALE") D.1 Blocco semaforo Lettura del record DFSEMAFORO:

Nome campo Note
DF_SMF_TABELLA MASSIVO

Se il record non esiste inserirlo. Se risulta bloccato dal gestonale host (DF_SMF_USO_HOST = 1) segnalare sul log e chiudere. Dopodichè aggiornare il semaforo impostando:

Nome campo Note
DF_SMF_USO_AREA 1
DF_SMF_VERSIONE Versione attuale: 1

D.2 Elaborazione Lo scopo di questa fase è di trovare eventuali record non presenti su COGRIFER per i tutti i contatti, (escludendo i tecnici, controllando l'esistenza di COGANATN per il contatto) e marcarli quindi come cancellati; questo serve nel caso in cui il gestionale host esegua un aggiornamento di massa su DFCONTATTI. Rispetto alla versione standard, questa operazione potrebbe essere sensibilmente più lenta. Scorrere tutto il contenuto di COGRIFER; per ciascun record trovato eseguire una lettura corrispondente su DFCONTATTI, con una query impostando

Nome campo Contenuto
DF_CNT_ANA_HOST RIF-ANA
DF_CNT_KEY_HOST RIF-CODICE-HOST

A questo punto, se il record non esiste, marcare il record su COGRIFER come cancellato, impostando

Nome campo Contenuto
RIF-VAL "C"

E - Chiusura E.1 Rilascio semaforo Aggiornare il record semaforo relativo a DFCONTATTI, impostando

Nome campo Note
DF_SMF_USO_AREA 0

Aggiornare il record semaforo relativo a "MASSIVO", impostando

Nome campo Note
DF_SMF_USO_AREA 0

E.2 Chiusura tabelle Chiudere le tabella DFCONTATTI e DFSEMAFORO E.3 Aggiornamento stato Aggiornamento dello stato sul record specifico; in particolare:

Dato Contenuto
DBFST-STATO "A"
DBFST-ERRORI Numero di errori rilevati
DBFST-MSG-ERRORE Ultimo errore rilevato
DBFST-LOG-PROCEDURA Codice procedura di gestione log

Estratto da documentazione interna ClickUp