Posizione nel menu
Programma non a menu
Linkage section
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 |
|
|
dbfront |
|
|
dbfront |
|
|
dbfront |
|
|
dbfront |
|
Elaborazione
Operazioni:
Operazione |
Descrizione |
" " |
Vedi Prezzi (DBF005) |
"SETTIMANALE" |
Vedi Prezzi (DBF005) |
Tipi di segnalazione:
Vedi Tipi di segnalazione
A - 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 |