PSW003 - Sincronizzazione merci¶
Nome programma PSW003 Linkage section UTILAGPRG - Linkage comune Id processo: 90003 CUSTOM Nome processo: PSW003 Tabelle principali gestite
| AREA | AREAGATE | Direzione |
|---|---|---|
| COGMERCI | PSWMERCI | -----> <----- |
| COGDBASE | PSWDBASE | -----> |
Tabella APSTATOSYN
| A-SYN-TABELLA | VERSIONE ATTUALE | Cosa fare se precedente |
|---|---|---|
| PSWMERCI | 1 |
Versione tabella: 1 Logica generale DB APP Incassettamento Sincronizzazione dell'anagrafica merci/prestazioni e delle distinte base collegate Esportazione Esportazione di tutti i record effettivamente modificati (con dati variati). Importazione E' prevista l'importazione di alcune informazioni relative alla merce che verranno modificate su APP NB: questo processo non è stato ottimizzato: la parte elaborativa è identica a quella presente nel precedente SWA035 Se ci sarà tempo in futuro proveremo ad ottimizzarlo. Configurazioni possibili
| Gruppo | Parametro | Note |
|---|---|---|
| abilita | attiva-areaapp | |
| areaapp | cod-azienda | |
| areaapp | db-conn-string | |
| areaapp | agg-postgres-online | |
| areaapp | giorni-esportazione-merci | |
| ecommerce | shop-attivo | |
| dbfront | db-conn-string |
Elaborazione Tipi di segnalazione: Vedi Tipi di segnalazione A - Controllo di esecuzione Vedi Controllo di esecuzione A.1 - Aggiornamento KEEP-ALIVE Per il momento non lo eseguiamo: il keep-alive viene tenuto aggiornato dal thread autonomo di aglancio; se il programma venisse chiamato in "tempo reale" dal programma di gestione, non necessita comunque del keep-alive. A.2 - Apertura A.2.1 Apertura tabelle Tentare l'apertura della tabella da sincronizzare: PSWMERCI Se fallita inviare una Segnalazione critica e chiudere. C - Importazione aggiornamenti Effettuare una query per estrarre tutti gli elementi aggiornati su APP: SELECT * FROM PSWMERCI WHERE p_mer_azienda = azienda AND (p_mer_agg_app = 'A') Ogni articolo trovato viene considerato come aggiornato C.1 - Importazione elemento aggiornato Aggiornamento raggruppamento 3 (suddivisione dolce/salato/altro) Fare una ricerca su COGMERAP impostando:
| Dato | Contenuto |
|---|---|
| MAP-CHIA | P-MERCE |
L'articolo deve esistere. Quindi proseguire con l'aggiornamento di COGMERAP; i dati attualmente aggiornabili sono:
| Dato | Contenuto |
|---|---|
| MAP-RAGR-3 | P-MER-RAGR-3 |
Aggiornamento raggruppamento produzione: Ricerca su COGANRAG con
| Dato | Contenuto |
|---|---|
| ARAG-CLASSE | "PR" |
| ARAG-TIP | "M" |
| ARAG-ID | P-MERCE |
Se P-MER-RAGR-PROD è: * Vuoto: cancellare il record se esiste, altrimenti non fare nulla * Non vuoto: inserire il record se non esiste, altrimenti aggiornarlo impostando: * ARAG-ID-PADRE = P-MER-RAGR-PROD Verifica esistenza raggruppamento: Se P-MER-RAGR-PROD è significativo, verificare anche se il raggruppamento esiste sulla classe:
| Dato | Contenuto |
|---|---|
| ARAG-CLASSE | "PR" |
| ARAG-TIP | "R" |
| ARAG-ID | P-MER-RAGR-PROD |
Se il record non esiste, inserirlo, indicando per ora descrizione vuota B - Esportazione informazioni aggiornate * ID SINCRO: gestito * Esportazione differenziale: gestita e non ottimizzata * Cancellazione logica: gestita In questa fase si dovrà tenere conto di * Limite record * Limite errori * "Esporta tutto"
| Tipo di elaborazione | Condizione | Cosa fare |
|---|---|---|
| Singolo record | AGPRG-KEY <> " " | Si legge direttamente la merce da aggiornare su COGMERCI Verrà eseguita se agg-postgres-online è attiva Se viene sincronizzato un record cancellato, verrà effettuata la cancellazione logica |
| Esportazione totale | AGPRG-ESPORTA-TUTTO = "S" | Vedi il punto B.2 |
| Esportazione standard | Vedi il punto B.2 |
B - Esportazione articoli B.1 - Pulizia merci cancellate Si cancellano da PSWMERCI le merci che risultano cancellate, attraverso la lettura dell'evento specifico su COGEVLOG: * Scansione di COGEVLOG per tutti gli eventi di tipo K-EVL-CANC-MERCI non ancora visti (EVL-VISTO = "N"); per ciascuna merce: * Si esegue la cancellazione logica del record PSWMERCI * P-MER-STATO = "C" * Si aggiorna il record evento impostando EVL-VISTO = "S" B.2 - Esportazione articoli Su POSTGRES, tabella APSTATOSYN, leggere il record relativo alla tabella/oggetto da sincronizzare "PSWMERCI"; se il record non esiste, crearlo impostando
| Dato | Contenuto |
|---|---|
| A_SYN_AZIENDA | Codice azienda |
| A_SYN_TABELLA | "PSWMERCI" |
| A_SYN_DA_GES_DATA | 0 |
| A_SYN_DA_GES_ORA | 0 |
| A_SYN_DA_ID_SINCRO | 1 |
| A-SYN-VERSIONE | 1 |
B.2.2 - Esportazione aggiornamenti Scansione di COGMERCI. Se AGPRG-KEY è significativo eseguire la start direttamente sulla chiave merce presente e fermarsi immediatamente dopo l'elaborazione della merce richiesta. B.2.2.1 - Controlli Per ciascun record, saranno effettuati i seguenti controlli: * nessun controllo Arrivati a questo punto, se non è configurata l'esportazione di tutte le merci (configurazione giorni-esportazione-merci = 9999), scartare la merce se ha MER-DATA-AGG < A_SYN_DA_GES_DATA. Filtri aggiuntivi Per ciascuna merce/servizio di cui si dovrà effettuare l'elaborazione, si dovrà dovrà effettuare una verifica di esportazione tramite SWAFME - Filtro esportazione merci (programma che verifica se la merce deve essere esportata, in funzione di alcuni filtri specifici per ciascun cliente, quando previsto). Se viene restituito SWAFME-DA-ESPORTARE = "N", allora: - Se l'articolo è già presente sulla tabella di destinazione, si esporterà come "cancellato" (come se avesse MER-VAL = "C") - Se l'articolo non è presente, si salta. Note sull'esportazione di merci/servizi cancellati Quando si esporta un articolo su PSWMERCI/ARPMESER, il cui stato è "C", l'esportazione delle tabelle collegate dovrà marcare lo stato di cancellato "C" anche su di esse, quando è previsto il dato. B.2.2.2 - Esportazione articolo Inserimento/aggiornamento PSWMERCI
| Dato | Contenuto |
|---|---|
| P-MER-AZI | Azienda attiva |
| P-MER-CODICE | Merce in elaborazione |
| P-MER-CMA | RCM-COD-AVA |
| P-MER-DES | Per ora qui viene esportato il contenuto di MER-DESCR |
| P-MER-DES-LINGUA | MAP-DESC |
| P-MER-CLASSE | MER-CLASSE |
| P-MER-STATO | MER-VAL |
| P-MER-ID-SINCRO | Ultimo id sincro "PSWMERCI" |
| P-MER-UM | MER-UM |
| P-MER-RAGR-1 | MAP-RAGR-1 |
| P-MER-RAGR-2 | MAP-RAGR-2 |
| P-MER-RAGR-3 | MAP-RAGR-3 |
| P-MER-SCO-MIN | MER-SCO-MIN |
| P-MER-QTA-TEGLIA | MA2-QTA-X-BANCALE |
| P-MER-RGR-PROD | Id raggruppamento per la classe "Produzione" (classe "PR") |
| P-MER-PADRE | MER-PADRE |
| P-MER-UNITA-PROD | MA3-UNITA-PRODUTTIVA |
| P-MER-RGR-TRAC | Id raggruppamento per la classe "Tracciabilità" (classe "TR") |
| P-MER-GESTIONE-LOTTI | MER-LOTTI |
B.2.2.3 - Esportazione distinta base Come prima cosa effettuare la cancellazione di tutti i record di PSWDBASE collegati alla merce, usando un comando SQL Poi scorrere COGDBASE, impostando
| Dato | Contenuto |
|---|---|
| DBA-MERCE | Merce in elaborazione |
Per ciascun record inserire il record su PSWDBASE impostando
| Dato | Contenuto |
|---|---|
| P-DBA-AZI | Azienda attiva |
| P-DBA-MERCE | DBA-MERCE |
| P-DBA-TIPO-DISTINTA | MER-TIPO-DISTINTA |
| P-DBA-VERSIONE | " " |
| P-DBA-PROG | DBA-PROG |
| P-DBA-COMP | DBA-MERCE-F |
| P-DBA-FL-CANC | " " |
| P-DBA-ID-SINCRO | 0 |
B.2.4 - Aggiornamento APSTATOSYN Leggere il record relativo alla tabella/oggetto da sincronizzare "PSWMERCI" e aggiornare:
| Dato | Contenuto |
|---|---|
| A_SYN_DA_GES_DATA | Data di elaborazione |
| A_SYN_DA_GES_ORA | 0 |
| A_SYN_DA_ID_SINCRO | Ultimo id sincro memorizzato su PSWMERCI |
| A-SYN-VERSIONE | 1 |
Estratto da documentazione interna ClickUp