DBF019 - Importazione distinta matricole

Navigation:  »No topics above this level«

DBF019 - Importazione distinta matricole

Return to chapter overview

Posizione nel menu

Programma non a menu

 

Linkage section

 

UTILDBFPRG - Linkage comune

 

Nome processo: CONTATTI

 

Tabella: DFDISTINTAMATR - Distinta base matricole

 

Logica generale

 

Sincronizzazione delle distinte base matricola tra AREA e il DB frontiera.

DFBDISTINTAMATR -> ASNMTRDB

 

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

 

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: DFDISTINTAMATR. 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

DFDISTINTAMATR

 

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

 

Per questa elaborazione non si ha la certezza di come il gestionale host è in grado di effettuare gli aggiornamenti:

Aggiornando i soli record realmente aggiornati

Esportando in massa i record per le distinte base dove c'e' stata una modifica

Esportando in massa tutti i record

 

Per questo motivo, dopo la prima elaborazione, che rispecchia il metodo usato negli altri programmi di importazione, sarà effettuata una seconda elaborazione che tenta di sistemare i problemi dovuti all'importazione per singolo record. Il motivo per cui non si effettua un aggiornamento di massa, che sarebbe sicuramente più semplice, è per ottimizzare gli aggiornamenti, dato che la tabella su cui si va a scrivere (ASNMTRDB) dovrà essere esportata sul DB APP.

 

C.1 Selezione record da importare

 

Tramite un comando SQL specifico, estrazione di tutti i record aggiornati dall'HOST:

SELECT * FROM DFDISTINTAMATR WHERE DF_AMDB_AGG_HOST = 1

 

C.2 Controllo record

 

Per ciascun record letto, verificare la correttezza delle informazioni contenute

 

Controllo DF_AMDB_MTR_KEY_HOST

Questa informazione deve essere significativa altrimenti segnalare Errore .

 

Cercare se corrisponde ad una matricola di assistenza non cancellata, con una ricerca su ASNMATRI.AMTR-CHIA2, impostando

AMTR-SN = DF_AMDB_MTR_KEY_HOST

E' possibile la presenza di più matricole a parità di s/n, di cui una sola dovrebbe essere attiva (AMTR-VAL = " ")

Se il raccordo non esiste, la matricola a cui è collegata non è stato ancora acquisita: Informazione e skippare: "DF_AMDB_KEY collegato a matricola non ancora importata : DF_AMDB_MTR_KEY_HOST"

Se esistono raccordi, ma tutti relativi a matricole marcate come cancellate, Informazione "DF_AMDB_KEY collegato a matricola cancellata: DF_AMDB_MTR_KEY_HOST" ; proseguire comunque con l'importazione

 

Controllo DF_AMDB_RIGA

Questa informazione deve essere significativa altrimenti segnalare Errore .

Se il numero di riga è superiore a 9999, segnalare Errore e skippare "DF_AMDB_KEY riga distinta su matricola: DF_AMDB_IND_HOST superiore a 9999". Se avviene un errore di questo tipo si dovrà rivedere la logica di importazione.

 

Il controllo su questi due campi permette l'identificazione della riga su ASNMTRDB.

 

Controllo DF_AMDB_FL_CANC

Questo campo potrà contenere "C" o " " altrimenti segnalare Errore e skippare: "DF_AMDB_KEY con DF_AMDB_VAL errato: DF_AMDB_VAL".

 

Se vale "C", leggere la riga su ASNMTRDB, impostando:

Nome campo

Contenuto

AMDB-ID-MTR

L'id matricola corrispondente a DF_AMDB_MTR_KEY_HOST, trovata in precedenza

AMDB-RIGA

DF_AMDB_RIGA

Se il record è stato trovato, cancellarlo, altrimenti non fare nulla.

In ogni caso, se vale "C" dopo questa operazione cercare il prossimo record.

 

Controllo DF_AMDB_MPR_HOST

Questa informazione deve essere significativa altrimenti segnalare Errore . Contiene il codice merce avanzato di una merce.

Quindi, cercare su COGRACMC; se non esiste segnalare Errore "DF_AMDB_KEY; trovata riga distinta su merce non esistente: DF_AMDB_MPR_HOST"

 

C.3 Importazione record

 

Se tutti i controlli sono superati, proseguire con l'inserimento/variazione del record della distinta, a seconda dei controlli precedenti.

 

C.3.1 Inserimento/aggiornamento

 

Cercare l'esistenza di un record su ASNMTRDB

Nome campo

Contenuto

AMDB-ID-MTR

L'id matricola corrispondente a DF_AMDB_MTR_KEY_HOST, trovata in precedenza

AMDB-RIGA

DF_AMDB_RIGA

 

In questo caso se il record non esiste, verrà inserito.

 

Poi aggiornare il record, solo se i dati risultano diversi (per evitare traffico e aggiornamenti inutili)

 

Nome campo

Contenuto

AMDB-MERCE

La merce corrispondente a DF-AMDB-MPR-HOST

AMDB-QTA

DF-AMDB-QTA

AMDB-SEQ

DF-AMDB-SEQ

AMDB-NOTE

DF-AMDB-DES

 

C.4 Aggiornamento stato record

 

Aggiornare il record DFDISTINTAMATR impostando:

 

Nome campo

Contenuto

DF_AMDB_AGG_HOST

0

DF_AMDB_AGG_AREA

0

 

C.5 Memorizzazione cliente aggiornato

 

Su un apposito file di transito interno al programma, registrare l'id della matricola aggiornata.

 

D - Confronto e cancellazione record non trovati

 

Lo scopo di questa fase è di trovare eventuali record non presenti su ASNMTRDB per le matricole aggiornate, e cancellarli; questo serve nel caso in cui il gestionale host esegua un aggiornamento di massa su DFDISTINTAMATR.

 

Rileggere il file di transito creato in precedenza, che conterrà quindi quali matricole sono state aggiornate.

 

Per ciascuna matricola, scorrere il contenuto di ASNMTRDB per tutti i record pari a:

Nome campo

Contenuto

AMDB-ID-MTR

L'id matricola sul file di transito

 

Per ciascun record trovato, eseguire una lettura corrispondente su DFDISTINTAMATR:

Nome campo

Contenuto

DF_AMDB_MTR_KEY_HOST

Il s/n associato a AMDB-ID-MTR

DF_AMDB_RIGA

AMDB-PROG

 

A questo punto, se il record non esiste, cancellare il record su ASNMTRDB

 

F - Chiusura

 

F.1 Rilascio semaforo

 

Aggiornare il record semaforo relativo a DFDISTINTAMATR, impostando

 

Nome campo

Note

DF_SMF_USO_AREA

0

 

F.2 Chiusura tabelle

 

Chiudere le tabella DFDISTINTAMATR e DFSEMAFORO

 

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