DBF005 - Sincronizzazione listini

Navigation:  »No topics above this level«

DBF005 - Sincronizzazione listini

Return to chapter overview

Posizione nel menu

Programma non a menu

 

Linkage section

 

UTILDBFPRG - Linkage comune

 

Nome processo: CONTATTI

 

Tabella: DFPREZZI - Prezzi di vendita

 

Logica generale

 

Sincronizzazione dell'anagrafica listini di vendita 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

 

Operazioni:

Operazione

Descrizione

" "

Vedi Prezzi (DBF005)

"SETTIMANALE"

Vedi Prezzi (DBF005)

 

 

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

DFPREZZI

 

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)

 

C.1 Selezione record da importare

 

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

SELECT * FROM DFPREZZI WHERE DF_PRZ_AGG_HOST = 1

 

C.2 Controllo record

 

Per ciascun record letto, verificare la correttezza delle informazioni contenute:

 

Controllo DF_PRZ_MERCE_HOST

Questa informazione deve essere significativa, altrimenti segnalare Errore

Deve corrispondere ad una merce già codificata in AREA, e quindi al codice merce avanzato: effettuare quindi una ricerca su COGRACMC, verificando se DF_PRZ_MERCE_HOST è presente come RCM-COD-AVA; se non esiste,  segnalare Informazione e skippare: "DF_PRZ_MERCE_HOST: 'DF_PRZ_MERCE_HOST' non ancora acquisito.

 

Controllo DF_PRZ_LISTINO_HOST

Questa informazione deve essere significativa, altrimenti segnalare Errore

Vedi Gestione listini, sconti e raggruppamenti

Effettuare la seguente logica di ricerca:

1.DF_PRZ_LISTINO_HOST corrisponde ad un cliente?

a.Cercare se corrisponde al codice di raccordo trovato su un cliente (in pratica dovrebbe corrispondere ad un DF_ANA_KEY_HOST): eseguire la ricerca su COGANAP2; se si, il prezzo sarà un prezzo particolare per cliente, e il listino da usare sarà "L" + codice cliente

2.DF_PRZ_LISTINO_HOST è collegato ad un listino standard nella tabella listini? Se si, il prezzo sarà inserito sul listino trovato su COGTESLS.

Se non corrisponde a nessuno di questi due casi, segnalare Errore e skippare: "DF_PRZ_LISTINO_HOST: 'DF_PRZ_LISTINO_HOST' non collegato a nessun listino.

 

Controllo DF_PRZ_FASCIA_QTA

Su questo campo non viene effettuato nessun controllo preliminare

 

Controllo DF_PRZ_DATA

Questa informazione deve essere significativa, e corrispondere ad una data valida altrimenti segnalare Errore

 

Controllo DF_PRZ_FL_ZERO

Questo campo potrà contenere 1 o 0 altrimenti segnalare Errore e skippare: "DF_PRZ_MERCE_HOST con DF_PRZ_FL_ZERO errato: DF_PRZ_FL_ZERO".

 

Controllo DF_PRZ_VAL

Questo campo potrà valere: " " o "C"; se è presente un valore diverso segnalare Errore e skippare: "DF_PRZ_KEY_HOST; DF-IND-VAL contiene un valore errato: DF_MPR_VAL"

 

C.3 Importazione record

 

Se tutti i controlli sono superati, proseguire con l'inserimento/variazione del record listino.

 

C.3.2 Inserimento/modifica record

 

Diamo quindi per scontato che per ora vengano acquisiti solo listini di vendita; effettuare quindi una ricerca su COGLISNW:

 

Nome campo

Contenuto

LNW-MERCE

La merce abbinata a DF_PRZ_MERCE_HOST

LNW-TIP-LIS

Il listino abbinato a DF_PRZ_LISTINO_HOST

LNW-RIF

LNW-FASCIA

1 (per ora le fascie non vengono trattate)non zero ma 1. modificato da Mauro 19.12.2017.

LNW-DATA

DF_PRZ_DATA

 

Se DF_PRZ_VAL vale " ", inserire o variare il record a seconda dell'esistenza, quindi aggiornare i dati rimanenti

 

Nome campo

Contenuto

LNW-PRE

DF_PRZ_PREZZO

LNW-FL_ZERO

se DF_PRZ_FL_ZERO vale:

1: "S"

0: "N"

LNW-VAL

" "

 

C.3.3 Aggiornamento testata listino

 

Se stiamo aggiornando un listino per cliente, è necessario creare, se non esiste, la testata relativa su COGTESLS.

 

C.3.4 Aggiornamento merce

 

Ogni volta che viene inserito/aggiornato un record su COGLISNW, è necessario marcare la merce relativa come "aggiornata": altrimenti l'esportazione su APP non avverrà dato che ora i listini vengono esportati in funzione dell'aggiornamento merce.

E' sufficiente aggiornare COGMERCI impostando MER-DATA-AGG = data sistema

 

C.3.1 Cancellazione record

 

Se invece DF_PRZ_VAL vale "C", il record su COGLISNW è da cancellare.

 

C.4 Aggiornamento stato record

 

Aggiornare il record DFPREZZI impostando:

 

Nome campo

Contenuto

DF_PRZ_AGG_HOST

0

DF_PRZ_AGG_AREA

0

 

 

E - Confronto e cancellazione record non trovati (Operazione "SETTIMANALE")

 

Prima di iniziare l'elaborazione, caricare in una tabella di working (almeno 5000 elementi) l'elenco delle testate listino:

TLS-TIP

TLS-RIF

TLS-CODICE-HOST

FL-CANCELLAZIONE

 

Da usare durante la ricerca successiva

 

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

 

Lo scopo di questa fase è di trovare eventuali prezzi non più presenti su DFPREZZI, e marcarli quindi come cancellati; questo serve nel caso in cui il gestionale host esegua un aggiornamento di massa su DFPREZZI. Rispetto alla versione standard, questa operazione potrebbe essere sensibilmente più lenta.

 

E.2 Elaborazione

 

E.2.1 Controllo su COGLISNW

Scorrere tutto il contenuto di COGLISNW; escludere i record con LNW-VAL = "C"; per ciascun record trovato effettuare una ricerca diretta su DFPREZZI:

 

Dopodichè effettuare una ricerca diretta su DFSCONTI usando un comando SQL:

Nome campo

Contenuto

DF-PRZ-MERCE-HOST

Codice merce avanzato della merce LNW-MERCE

Se LNW-TIP = "L"

DF-PRZ-LISTINO-HOST

TLS-CODICE-HOST per il codice listino LNW-RIF

Se LNW-TIP = "C"

DF-PRZ-LISTINO-HOST

Codice host del cliente TLS-RIF (AAP2-RACCORDO)

Se il record non viene trovato:

aggiornare il record su COGLISNW impostando LNW-VAL = "C"

impostare FL-CANCELLAZIONE a "S" sulla tabella listino, per il listino considerato

 

E.2.2 Cancellazione testata listini

Scorrere la tabella di working con i listini: per ciascun listino dove è stata operata una cancellazione:

 

Verificare la presenza di prezzi "non cancellati";

Se tutti i record su COGLISNW per il listino elaborato risultano cancellati logicamente, o non esiste nessun record,

oeseguire la cancellazione logica del record COGTESLS (TLS-VAL = "C")

 

E.3 Rilascio semaforo

 

Lettura del record DFSEMAFORO:

 

Nome campo

Note

DF_SMF_TABELLA

MASSIVO

 

Dopodichè aggiornare il semaforo impostando:

 

Nome campo

Note

DF_SMF_USO_AREA

0

 

D - Sincronizzazione (esportazione)

Fase non prevista in questo programma

 

E - Chiusura

 

E.1 Rilascio semaforo

 

Aggiornare il record semaforo relativo a DFMERCIPREST, impostando

 

Nome campo

Note

DF_SMF_USO_AREA

0

 

E.2 Chiusura tabelle

 

Chiudere le tabella DFMERCIPREST 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