Vai al contenuto

DBF015 - Sincronizzazione note post-it

Posizione nel menu Programma non a menu Linkage section UTILDBFPRG - Linkage comune Nome processo: POSTIT Tabella: DFPOSTIT - Note post-it Logica generale Sincronizzazione delle note post-it tra AREA e il DB frontiera. Per il momento funziona solo in IMPORT Problema cancellazione NB: a causa di una modalità di esportazione anomala da parte di AdHoc, è possibile che per lo stesso post-it trovo più record: uno potrebbe essere cancellato logicamente, e l'altro valido. Di conseguenza se l'ordine di lettura è errato, potrei acquisire l'informazione corretta, e successivamente cancellarla (probabilmente da parte di ad-hoc è una "versione precedente). Quindi per ovviare il problema faccio questo tentativo: se il contenuto delle note del record cancellato logicamente è diverso, NON cancello il post-it Inoltre divido l'importazione in due fasi: 1-importazione cancellazioni -> cancellerà solo le righe con il post-it uguale 2-importazione aggiornamenti -> riaggiornerà tutto quanto risulta modificato 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: DFPOSTIT. 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 DFPOSTIT

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 DFPOSTIT WHERE DF_PTT_AGG_HOST = 1 C.2 Controllo record Per ciascun record letto, verificare la correttezza delle informazioni contenute Controllo DF_PTT_ANA_HOST Se questa informazione, è significativa: cercare se corrisponde ad un cliente o fornitore, con una ricerca su COGANAPP.AAP2-CHIA2, impostando * AAP2-RACCORDO = DF_PTT_ANA_HOST Se il raccordo non esiste: l'anagrafica a cui è collegata la nota non è stato ancora acquisita: Informazione e skippare: "DF_PTT_KEY_HOST collegato ad anagrafica non ancora importata : DF_PTT_ANA_HOST" Controllo DF_PTT_MERCE_HOST Se questa informazione è significativa, contiene il codice merce avanzato di una merce (che corrisponde al codice articolo HOST) su cui importare la nota. Quindi, cercare su COGRACMC; se non esiste segnalare Informazione e skippare: "DF_PTT_KEY_HOST collegato a merce non ancora importata : DF_PTT_MERCE_HOST" NB: possono essere significativi contemporeamente sia DF_PTT_ANA_HOST che DF_PTT_MERCE_HOST, ma non possono essere entrambi vuoti: in tal caso segnalare Errore e skippare: "DF_PTT_KEY_HOST senza anagrafica nè merce" Controllo DF_PTT_AREA Questo campo potrà contenere uno dei valori descritti nella documentazione tabella; altrimenti segnalare Errore e skippare: "DF_PTT_KEY con DF_PTT_AREA errato: DF_PTT_AREA". Controllo DF_PTT_VAL Questo campo potrà contenere "C" o " " altrimenti segnalare Errore e skippare: "DF_PTT_KEY con DF_PTT_VAL errato: DF_PTT_VAL". C.3 Importazione record Se tutti i controlli sono superati, proseguire con l'inserimento/variazione della nota in esame, a seconda dei controlli precedenti. C.3.1 Cancellazione Caso non più gestito, dal 24-05-2022 perchè è stata aggiunta la cancellazione logica su COGPOSTT. Quindi ora si rientra nel punto C.3.2 Nel caso in cui DF_PTT_VAL = 'C' è necessario cercare e cancellare un record su COGPOSTT:

Nome campo Contenuto
PTT-ANA Il cliente collegato a DF_PTT_ANA_HOST
PTT-MERCE DF_PTT_MERCE_HOST
PTT-AREA DF_PTT_AREA

Nel caso in cui il record non esiste, Informazione sul log.: "richiesta cancellazione di una nota non esistente: 'PTT-CHIA1'" NB: la cancellazione del post-it non avverrà se PTT-NOTE <> DF-PTT-NOTE (vedi ragionamento all'inizio) C.3.2 Inserimento/aggiornamento Cercare l'esistenza di un record su COGPOSTT:

Nome campo Contenuto
PTT-ANA Il cliente collegato a DF_PTT_ANA_HOST
PTT-MERCE DF_PTT_MERCE_HOST
PTT-AREA DF_PTT_AREA

In questo caso se il record non esiste, verrà inserito. Poi, se i campi da aggiornare sono diversi, aggiornare:

Nome campo Contenuto
PTT-NOTE DF_PTT_NOTE
PTT-FL-CANC DF_PTT_VAL

C.4 Aggiornamento stato record Aggiornare il record DFPOSTIT impostando:

Nome campo Contenuto
DF_PTT_AGG_HOST 0
DF_PTT_AGG_AREA 0

D - Sincronizzazione (esportazione) Fase non prevista in questo programma E - Chiusura E.1 Rilascio semaforo Aggiornare il record semaforo relativo a DFPOSTIT, impostando

Nome campo Note
DF_SMF_USO_AREA 0

E.2 Chiusura tabelle Chiudere le tabella DFPOSTIT 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