DBF005 - Sincronizzazione listini¶
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? 1. 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: |
| 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, * eseguire 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 |
Estratto da documentazione interna ClickUp