Vai al contenuto

SWA023 - Sincronizzazione lotti merce

Logica generale Import/export dei lotti merce tra gestionale e database KPN Al momento è previsto solo l'esportazione da gestionale. Ad ogni esportazione saranno aggiornati sulla tabella ARPLOTTI i seguenti record: * I record modificati dopo l'ultimo aggiornamento eseguito NB: attualmente l'esportazione sarà assai poco performante, dato che manca completamente la possibilità di sapere quando un record di COGMERLT è stato inserito/aggiornato. Configurazioni possibili

Gruppo Parametro Note

Elaborazione A - Esportazione lotti aggiornati Su POSTGRES, tabella APSTATOSYN, leggere il record relativo alla tabella/oggetto da sincronizzare "COGMERLT"; se il record non esiste, crearlo impostando

Dato Contenuto
A_SYN_AZIENDA Codice azienda
A_SYN_TABELLA "COGMERLT"
A_SYN_DA_GES_DATA 0
A_SYN_DA_GES_ORA 0
A_SYN_DA_ID_SINCRO 1

Qui otterremo due informazioni importanti: * Data/ora ultima esportazione da gestionale a postgres (A_SYN_DA_GES_DATA e A_SY_DA_GES_ORA) (al momento queste informazioni saranno registrate al termine dell'esportazione, ma non servono come data/ora di inizio esportazione perchè non sono dati disponibili su COGMERLT). * Prossimo ID sincronizzazione da memorizzare sulla tabella (A_SYN_ID_SINCRO) Ricerca record da esportare * Scorrere COGMERLT; per ora è necessario considerare ciascun record presente. A.1 - Esportazione Lotti * Per ciascun record valido cercare su ARPLOTTI l'esistenza di un record avente:

Dato Descrizione
A-MLT-AZI Codice azienda
A-MLT-ID-DISPOSITIVO 0
A-MLT-IDD-PROG 0
A-MLT-MERCE MLT-MERCE
A-MLT-MAG MLT-MAG
A-MLT-PROG MLT-PROG

Se non esiste, inserirlo. Se esiste, aggiornarlo solo almeno una delle informazioni è aggiornata:

Dato su ARPLOTTI Dato su COGMERLT
A-MLT-LOTTO MLT-LOTTO
A-MLT-QTA MLT-QTA
A-MLT-STATO MLT-STATO
A-MLT-DATA-PROD MLT-DATA-PROD
A-MLT-DATA-SCAD MLT-DATA-SCAD

Nel caso sia necessario inserire/aggiornare il record ARPLOTTI, oltre ad aggiornare le informazioni di cui sopra, aggiornare anche:

Dato Descrizione
A-MLT-ID-SINCRO Incrementare il campo ID-SYNCRO trovato sul file APSTATOSYN per ciascun record aggiornato
A-MLT-FL-CANC " "
A-MLT-AGG-APP "N"

A.2 - Identificazione dei record cancellati [Gio: Io procederei in maniera diversa: 1) con query iniziale setto per tutti record non cancellati (A-MLT-AZI = @codice_azienda AND A-MLT-FL-CANC <> "C") A-MLT-FL-CANC = "U" 2) eseguo gli aggiornamenti visti al punto A.1 3) query che setta a A-MLT-FL-CANC = "C" e A-MLT-ID-SINCRO = Ultimo id sincro + 1 tutte le righe che hanno (A-MLT-AZI = @codice_azienda AND A-MLT-FL-CANC = "U") ovvero tutti i record non aggiornati dalle fasi precedenti Gio: no dai test fatti questa modalità è più penalizzante perchè la riscrittura di molti dati pesa più della seconda lettura di molti dati (e magari dal loro non aggiornamento) dal Database quindi utilizzo il metodo descritto sotto ] Attraverso una apposita query scorrere tutti i record non cancellati di ARPLOTTI (A-MLT-FL-CANC <> "C"); per ciascun record trovato, cercare se esiste ancora il record corrispondente lato gestionale, con una lettura di COGMERLT. Se il record non esiste significa che è stato cancellato sul gestionale. Di conseguenza è necessario marcare come cancellato il record su ARPLOTTI, aggiornando contemporaneamente l'id di sincronizzazione:

Dato Descrizione
A-MLT-FL-CANC "C"
A-MLT-ID-SINCRO Ultimo id sincro + 1

B Aggiornamento id syncro Al termine dell'elaborazione, aggiornare il record APSTATOSYN:

Dato Contenuto
A_SYN_AZIENDA Codice azienda
A_SYN_TABELLA "COGMERLT"
A_SYN_DA_GES_DATA Data/ora attuale
A_SYN_DA_GES_ORA
A_SYN_DA_ID_SINCRO Ultimo ID sincro aggiornato

C Log Il programma indica sul log "scarica_app.log" presente nelal log-dir, se ha fallito o meno aggiornamenti, poi indica quali erano gli id sincro di partenza e quello di arrivo sia per le fasi di update che per quelle di arrivo


Estratto da documentazione interna ClickUp