DBF003 - Sincronizzazione contatti

Navigation:  »No topics above this level«

DBF003 - Sincronizzazione contatti

Return to chapter overview

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:

1.Importa i record aggiornati dal db host.

2.Per ogni contatto di cui è stato effettuato un aggiornamento, il programma lo cerca su AREA, e se non presente lo aggiorna.

3.Viene gestita l'eventuale cancellazione logica

4.Non viene effettuato nessun controllo sulla "NON esistenza" di un contatto su AREA

"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:

1.Se sul record da importare esiste il riferimento del codice contatto di AREA, questo viene riconosciuto come esistente e verrà aggiornato;

2.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.

a.In questo caso sarà registrato il codice host sul contatto.

3.In assenza delle due condizioni precedenti, il contatto viene considerato come "nuovo" e sarà inserito

2

Su COGRIFER esiste RIF-CODICE-HOST

Riconoscimento nuovi contatti:

1.Se sul record da importare esiste il riferimento del codice contatto di AREA, questo viene riconosciuto come esistente e verrà aggiornato;

2.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;

3.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.

a.In questo caso sarà registrato il codice host sul contatto.

4.In assenza delle due condizioni precedenti, il contatto viene considerato come "nuovo" e sarà inserito

 

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.

a.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

Note

RIF-TIP

"C"

RIF-COD

Inserimento: nuovo codice progressivo

Variazione: DF_CNT_AREA_COD

RIF-ANA-TIP

Chiave anagrafica raccordata a DF_CNT_ANA_HOST

RIF-ANA-COD

RIF-NOME

DF_CNT_NOME

RIF-TEL (n)

DF_CNT_TEL_n

RIF-MAIL

DF_CNT_EMAIL

RIF-POSIZIONE

Posizione raccordata a DF_CNT_RUOLO

RIF-VAL

DF_CNT_VAL

 

COGRIFE2

Nome campo

Note

RIF2-TIP

RIF-TIP

RIF2-COD

RIF-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