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