Posizione nel menu
Programma non a menu
Linkage section
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 |
|
|
dbfront |
|
|
dbfront |
|
|
dbfront |
|
|
dbfront |
|
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
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 |