DBF017 - Importazione backorder¶
Posizione nel menu Programma non a menu Linkage section UTILDBFPRG - Linkage comune Nome processo: CONTATTI Tabella: DFBACKORDER - Back order Logica generale Sincronizzazione del backorder tra AREA e il DB frontiera. * DFBACKORDER -> COGBKORD Per il momento funziona solo in IMPORT Vedi Backorder (DBF017) 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 Backorder (DBF017) |
| "SETTIMANALE" | Vedi Backorder (DBF017) |
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: DFBACKORDER. 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 | DFBACKORDER |
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) (Operazione " ") 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 i clienti 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 sarrebbe sicuramente più semplice, è per ottimizzare gli aggiornamenti, dato che la tabella su cui si va a scrivere (COGBKORD) 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 DFBACKORDER WHERE DF_BKO_AGG_HOST = 1 C.2 Controllo record Per ciascun record letto, verificare la correttezza delle informazioni contenute Controllo DF_BKO_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_IND_BKO_HOST Se il raccordo non esiste, il cliente a cui è collegata non è stato ancora acquisito: Informazione e skippare: "DF_BKO_KEY collegato ad anagrafica non ancora importata : DF_BKO_ANA_HOST" Controllo DF_BKO_IND_HOST Campo non obbligatorio. Se indicato dovrà corrispondere ad un indirizzo di spedizione raccordato in AREA: scorrere COGDEST2 per le destinazioni collegate all'anagrafica raccordata a DF_BKO_ANA_HOST; dovrebbe esistere una destinazione con DST2-CODICE-HOST = DF_BKO_IND_HOST; altrimenti segnalare Errore e skippare "DF_BKO_KEY collegato ad indirizzo non ancora importato : DF_BKO_IND_HOST (anagrafica DF_BKO_ANA_HOST)" Controllo DF_BKO_FL_CANC Questo campo potrà contenere "C" o " " altrimenti segnalare Errore e skippare: "DF_BKO_KEY con DF_BKO_VAL errato: DF_BKO_VAL". Controllo DF_BKO_MPR_HOST Se significativa, questa informazione contiene il codice merce avanzato di una merce. Quindi, cercare su COGRACMC; se non esiste segnalare Errore "DF_BKO_KEY; trovata condizione su merce non esistente: DF_BKO_MPR_HOST" Caso particolare: Se DF_BKO_FL_CANC vale "C" e DF_BKO_MPR_HOST è vuoto, significa che il gestionale host richiede di cancellare tutto il backorder del cliente, quindi è l'unico caso in cui DF_BKO_MPR_HOST può essere vuoto. C.3 Importazione record Se tutti i controlli sono superati, proseguire con l'inserimento/variazione del record di set tipico, a seconda dei controlli precedenti. C.3.1 Verifica backorder cliente cancellato Se DF_BKO_FL_CANC vale "C" e DF_BKO_MPR_HOST è vuoto, significa che il gestionale host richiede di cancellare tutto il backorder del cliente; in questo caso quindi: C.3.1.1 Cancellazione backorder cliente Scorrere COGBKORD per tutti i record per cliente/destinazione:
| Nome campo | Contenuto |
|---|---|
| BKO-ANA | Il cliente corrispondente a DF_BKO_ANA_HOST |
| BKO-DST-ID | La destinazione corrispondente a DF_BKO_ANA_HOST, se presente |
Marcare come "cancellati" tutti i record trovati:
| Nome campo | Contenuto |
|---|---|
| BKO-FL-CANC | "C" |
Al termine proseguire al punto C.4 C.3.2 Inserimento/aggiornamento Cercare l'esistenza di un record su COGBKORD
| Nome campo | Contenuto |
|---|---|
| BKO-ANA | Il cliente corrispondente a DF_BKO_ANA_HOST |
| BKO-DST-ID | La destinazione corrispondente a DF_BKO_ANA_HOST, se presente |
| BKO-MERCE | La merce corrispondente a DF_BKO_MPR_HOST |
In questo caso se il record non esiste, verrà inserito. Poi aggiornare il record, solo se i dati risultano diversi:
| Nome campo | Contenuto |
|---|---|
| BKO-NOTE | DF_BKO_ORDINE_HOST |
| BKO-QTA | DF_BKO_QTA |
| BKO-FL-CANC | DF_BKO_FL_CANC |
C.4 Aggiornamento stato record Aggiornare il record DFBACKORDER impostando:
| Nome campo | Contenuto |
|---|---|
| DF_BKO_AGG_HOST | 0 |
| DF_BKO_AGG_AREA | 0 |
C.5 Memorizzazione cliente aggiornato Su un apposito file di transito interno al programma, registrare la combinazione "Cliente/destinazione" trovata sul record in elaborazione. D - Confronto e cancellazione record non trovati (Operazione " ") 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 COGBKORD per i clienti/destinazione aggiornati, e marcarli quindi come cancellati; questo serve nel caso in cui il gestionale host esegua un aggiornamento di massa su DFBACKORDER. Rileggere il file di transito creato in precedenza, che conterrà quindi quale cliente/destinazione è stato aggiornato. Per ciascun record, scorrere il contenuto di COGBKORD per tutti i record pari a:
| Nome campo | Contenuto |
|---|---|
| BKO-ANA | Il cliente sul file di transito |
| BKO-DST-ID | La destinazione sul file di transito |
Per ciascun record trovato, eseguire una lettura corrispondente su DFBACKORDER:
| Nome campo | Contenuto |
|---|---|
| DF_BKO_ANA_HOST | BKO-ANA |
| DF_BKO_IND_HOST | BKO-DST-ID |
| DF_BKO_MPR_HOST | BKO-MERCE |
A questo punto, se il record non esiste, marcare il record su COGBKORD come cancellato, impostando
| Nome campo | Contenuto |
|---|---|
| BKO-FL-CANC | "C" |
D.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 |
E - Confronto e cancellazione record non trovati (Operazione "SETTIMANALE") Lo scopo di questa fase è di trovare eventuali record non presenti su COGBKORD per i tutti i clienti/destinazione, e marcarli quindi come cancellati; questo serve nel caso in cui il gestionale host esegua un aggiornamento di massa su DFBACKORDER. Rispetto alla versione standard, questa operazione potrebbe essere sensibilmente più lenta. Scorrere tutto il contenuto di COGBKORD; per ciascun record trovato scartare i record cancellati (BKO-FL-CANC = "C"); Per i record validi eseguire una lettura corrispondente su DFBACKORDER:
| Nome campo | Contenuto |
|---|---|
| DF_BKO_ANA_HOST | BKO-ANA |
| DF_BKO_IND_HOST | BKO-DST-ID |
| DF_BKO_MPR_HOST | BKO-MERCE |
A questo punto, se il record non esiste, marcare il record su COGBKORD come cancellato, impostando
| Nome campo | Contenuto |
|---|---|
| BKO-FL-CANC | "C" |
F - Chiusura F.1 Rilascio semaforo Aggiornare il record semaforo relativo a DFBACKORDER, impostando
| Nome campo | Note |
|---|---|
| DF_SMF_USO_AREA | 0 |
F.2 Chiusura tabelle Chiudere le tabella DFBACKORDER 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 |
Keyword index No index entries found.
Estratto da documentazione interna ClickUp