SWA039 - Sincronizzazione scontistica¶
Logica generale Import/export delle tabelle interessate alla scontistica: * ARPGRUPPISCONTI -> testata gruppi sconto * ARPSCONTI -> dettaglio sconti tra gestionale e database KPN Al momento è previsto solo l'esportazione da gestionale. L'esportazione verrà effettuata verificando se è stato effettuato un aggiornamento sulla testata del gruppo sconto. Configurazioni possibili
| Gruppo | Parametro | Note |
|---|---|---|
Elaborazione A - Esportazione raggruppamenti aggiornati Su POSTGRES, tabella APSTATOSYN, leggere il record relativo alla tabella/oggetto da sincronizzare "COGGRSCT"; se il record non esiste, crearlo impostando
| Dato | Contenuto |
|---|---|
| A_SYN_AZIENDA | Codice azienda |
| A_SYN_TABELLA | "COGGRSCT" |
| 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) * Prossimo ID sincronizzazione da memorizzare sulla tabella (A_SYN_ID_SINCRO) Id-sincro x Arpsconti Su POSTGRES, tabella APSTATOSYN, leggere il record relativo alla tabella/oggetto da sincronizzare "ARPSCONTI"; se il record non esiste, crearlo impostando
| Dato | Contenuto |
|---|---|
| A_SYN_AZIENDA | Codice azienda |
| A_SYN_TABELLA | "ARPSCONTI" |
| A_SYN_DA_GES_DATA | 0 |
| A_SYN_DA_GES_ORA | 0 |
| A_SYN_DA_ID_SINCRO | 1 |
Qui otterremo il prossimo ID sincronizzazione da memorizzare sulla tabella ARPSCONTI (A_SYN_ID_SINCRO) Ricerca record da esportare Esportazione di tutti i gruppi sconto aggiornati dopo l'ultimo aggiornamento (COGGRSCT). Per ciascun letto considerare solo quelli dove GST-DA-DATA+GST-DA-TIME sono >= a A_SYN_DA_GES_DATA+A_SYN_DA_GES_ORA (fare il confronto normalizzando e unendo i campi in un unico campo di 8+4 caratteri: AAAAMMGGHHMI) A.1 - Esportazione gruppo sconto * Per ciascun record valido cercare su ARPGRUPPISCONTO l'esistenza di un record avente:
| Nome campo | Note |
|---|---|
| A_GST_AZIENDA | Codice azienda |
| A_GST_TIPO | GST-TIP |
| A_GST_GRUPPO | GST-COD |
Se non esiste, inserirlo. Se esiste, aggiornarlo: Informazioni con cui inserire/aggiornare un record su ARPANRAG:
| Nome campo | Note |
|---|---|
| A_GST_AZIENDA | Codice azienda |
| A_GST_TIPO | GST-TIP |
| A_GST_GRUPPO | GST-COD |
| A_GST_DES | GST-DES |
| A_GST_DATA_DA | GST-DATA-DA |
| A_GST_DATA_A | GST-DATA-A |
| A_GST_FL_GENERICO | GST-FL-GENERICO |
| A_GST_ID_SINCRO | Ultimo id sincro + 1 |
| A_GST_FL_CANC | GST-VAL |
In questa fase tenere memoria di data+ora dell'ultimo record aggiornato. A.1.1 - Esportazione dettaglio sconti per il gruppo Elaborazione non necessaria, se il gruppo sconto è cancellato (A_GST_FL_VAL = "C") Cancellare il dettaglio sconti presente ARPSCONTI per il gruppo sconto in elaborazione: DELETE FROM arpsconti WHERE A_SCC_azienda = azienda attiva and A_SCC_tipo_gruppo = A_GST_tipo and A_SCC_gruppo = A_GST_gruppo Poi, ora l'elaborazione si diversifica a seconda del tipo di gruppo sconto trovato: * "P": A.1.1.2 - Esportazione dettaglio promozione * <> "P": A.1.1.1 - Esportazione dettaglio gruppo sconto A.1.1.1 - Esportazione dettaglio "Gruppi sconto" Scorrere il dettaglio del gruppo sconto su COGSCONT, per tutti i record del gruppo
| Nome campo | Note |
|---|---|
| SCC-TIP | Se GST-TIP vale |
| SCC-ANA | GST-COD, se GST-TIP = "C" |
| SCC-GRUPPO-SCONTO | GST-COD, se GST-TIP = "G" |
Per ciascun record trovato, inserire un record su ARPSCONTI:
| Nome campo | Note |
|---|---|
| A_SCC_AZIENDA | Codice azienda |
| A_SCC_TIPO_GRUPPO | GST-TIP |
| A_SCC_GRUPPO | GST-COD |
| A_SCC_TIPO_DETTAGLIO | Tipo di dettaglio: |
| A_SCC_CLASSE | Se A_SCC_TIPO_DETTAGLIO: |
| Se A_SCC_TIPO_DETTAGLIO vale: |
|
| A_SCC_PREZZO | SCC-PRE |
| A_SCC_SCONTO1 | SCC-SCO-1 |
| A_SCC_SCONTO2 | SCC-SCO-2 |
| A_SCC_SCONTO3 | SCC-SCO-3 |
| A_SCC_ID_SINCRO | Id sincro ARPSCONTI + 1 |
| A_SCC_VAL | SCC-VAL |
A.1.1.2 - Esportazione dettaglio promozione Scorrere il dettaglio della promozione su COGGRSCD, per tutti i record collegati
| Nome campo | Note |
|---|---|
| GSCD-TIP | GST-TIP |
| GSCD-COD | GST-COD |
Per ciascun record trovato, se GSCD-VAL <> "C" inserire un record su ARPSCONTI:
| Nome campo | Note |
|---|---|
| A_SCC_AZIENDA | Codice azienda |
| A_SCC_TIPO_GRUPPO | GST-TIP |
| A_SCC_GRUPPO | GST-COD |
| A_SCC_TIPO_DETTAGLIO | GSCD-FL-APPLICO-A |
| A_SCC_CLASSE | Se A_SCC_TIPO_DETTAGLIO: |
| Se A_SCC_TIPO_DETTAGLIO vale: |
|
| A_SCC_PREZZO | GSCD-PREZZO |
| A_SCC_SCONTO1 | GSCD-SCONTO-1 |
| A_SCC_SCONTO2 | GSCD-SCONTO-2 |
| A_SCC_SCONTO3 | GSCD-SCONTO-3 |
| A_SCC_QTA_DA | GSCD-QTA-DA |
| A_SCC_QTA_A | GSCD-QTA-A |
| A_SCC_MERCE_OMAGGIO | GSCD-MERCE-OMAGGIO |
| A_SCC_OM_QTA_SOGLIA | GSCD-OM-QTA-SOGLIA |
| A_SCC_OM_QTA_OMAGGIO | GSCD-OM-QTA-OMAGGIO |
| A_SCC_ID_SINCRO | Id sincro ARPSCONTI + 1 |
| A_SCC_VAL | GSCD-VAL |
A.2 - Identificazione dei gruppi sconto cancellati Attraverso una apposita query scorrere tutti i record non cancellati di ARPGRUPPISCONTO; per ciascun record trovato, cercare se esiste ancora il record corrispondente lato gestionale, con una lettura di COGGRSCT:
| Dato | Contenuto |
|---|---|
| GST-TIP | A_GST_TIPO |
| GST-COD | A_GST_GRUPPO |
Se il record non esiste, è necessario marcare come cancellato il record su ARPGRUPPISCONTO, aggiornando contemporaneamente l'id di sincronizzazione:
| Dato | Contenuto |
|---|---|
| A_GST_FL_CANC | "C" |
| A_GST_ID_SINCRO | Ultimo id sincro + 1 |
B Aggiornamento id syncro contratto Al termine dell'elaborazione, aggiornare il record APSTATOSYN:
| Dato | Contenuto |
|---|---|
| A_SYN_AZIENDA | Codice azienda |
| A_SYN_TABELLA | "COGGRSCT" |
| A_SYN_DA_GES_DATA | Data/ora dell'ultimo record aggiornato |
| A_SYN_DA_GES_ORA | |
| A_SYN_DA_ID_SINCRO | Ultimo ID sincro aggiornato |
| Dato | Contenuto |
|---|---|
| A_SYN_AZIENDA | Codice azienda |
| A_SYN_TABELLA | "ARPSCONTI" |
| A_SYN_DA_GES_DATA | 0 |
| A_SYN_DA_GES_ORA | |
| A_SYN_DA_ID_SINCRO | Ultimo ID sincro "ARPSCONTI" aggiornato |
Estratto da documentazione interna ClickUp