SWA064 - Sincronizzazione destinazioni diverse¶
Nome programma SWA064 Area di linkage UTILAGPRG - Linkage comune Logica generale Import/export delle destinazioni diverse tra gestionale e database KPN Configurazioni possibili
| Gruppo | Parametro | Note |
|---|---|---|
Elaborazione Se AGPRG-CALLED = "AGPRG-CALLED", significa che il programma è stato richiamato dall'esterno, e potrebbe contenere la richiesta di una operazione particolare: * "AGGIORNA-KEY": esegue l'aggiornamento solo per la chiave passata in AGPRG-KEY * "ESPORTA-TUTTO": in caso di esportazione, questa non sarà differenziale ma sarà esportato tutto l'insieme dei dati previsti A - Importazione destinazioni Non eseguire se è stata richiesta l'operazione "AGGIORNA-KEY" Scorrere APCOGDESTI eseguendo una apposita query che permetta di restituire i record aggiornati (A-DST-AGG-APP = "S"). Per ciascun record trovato, se il campo: A_DST-ID-DST-TIP vale: * " ": significa che è una nuova destinazione inserita su APP; eseguire A.1 * <> " ": significa che sullo smartphone la destinazione è stata aggiornata; eseguire A.2 A.1 - Inserimento nuova destinazione Significa che il record è stato inserito da uno smartphone; in questo caso avremo anche A-DST-ID-DISPOSITIVO e A-DST-IDD-PROG significativi. A.1.1 - Creazione nuova destinazione Creazione di un nuovo record su COGDESTI:
| Nome campo | Note |
|---|---|
| DST-ANA | A-DST-ANA |
| DST-ID-TIP | A-DST-ID-DST-TIP |
| DST-ID-IDX | Primo progressivo libero a parità di anagrafica e tipo destinazione |
| DST-RAG-SOC | A-DST-RAG-SOC |
| DST-IND | A-DST-IND |
| DST-CAP | 0 |
| DST-LOCA | A-DST-LOCA |
| DST-PROV | A-DST-PROG |
| DST-FL-DEFAULT | A-DST-FL-DEFAULT |
| DST-FL-CANC | A-DST-FL-CANC |
| DST-EMAIL | A-DST-FL-EMAIL |
| DST-CAP-ALFA | A-DST-CAP |
| DST-LATITUDINE | A-DST-LATITUDINE |
| DST-LONGITUDINE | A-DST-LONGITUDINE |
| DST2-ZONA | A-DST-ZONA |
| DST2-NOTE | A-DST-NOTE |
| DST2-CODICE-HOST | A-DST-CODICE-HOST |
| DST2-AGENTE | A-DST-AGENTE |
A.1.2 - Rimozione record di input Il record di origine da cui siamo partiti su APCOGDESTI va cancellato. A.1.3 - Creazione immediata destinazione "ufficiale" A questo punto è necessario effettuare immediatamente l'esportazione della destinazione appena importata. Si può effettuare semplicemente eseguendo l'operazione già creata per eseguire il punto B.1.2 Dopodichè aggiornare il record APCOGDESTI per memorizzare:
| Nome campo | Contenuto |
|---|---|
| A-DST-IDD-ORIG | A-DST-ID-DISPOSITIVO del record appena cancellato |
| A-DST-IDD-PROG-ORIG | A-DST-IDD-PROG del record appena cancellato |
A.2 - Aggiornamento destinazione esistente esistente In questo caso avremo A_DST_ID_DISPOSITIVO e A_DST_IDD_PROG = 0, mentre avremo gli altri campi chiave significativo. A.2.1 - Aggiornamento destinazione Posizionarsi sul record destinazione identificato dai campi in grassetto e modificare i restanti campi:
| Nome campo | Note |
|---|---|
| DST-ANA | A-DST-ANA |
| DST-ID-TIP | A-DST-ID-DST-TIP |
| DST-ID-IDX | A-DST-ID-DST-IDX |
| DST-RAG-SOC | A-DST-RAG-SOC |
| DST-IND | A-DST-IND |
| DST-CAP | 0 |
| DST-LOCA | A-DST-LOCA |
| DST-PROV | A-DST-PROG |
| DST-FL-DEFAULT | A-DST-FL-DEFAULT |
| DST-FL-CANC | A-DST-FL-CANC |
| DST-EMAIL | A-DST-FL-EMAIL |
| DST-CAP-ALFA | A-DST-CAP |
| DST-LATITUDINE DST-LONGITUDINE |
Se sono vuoti, importarli da A-DST-LATITUDINE, A-DST-LONGITUDINE, altrimenti lasciarli invariati |
| DST2-ZONA | A-DST-ZONA |
| DST2-NOTE | A-DST-NOTE |
A.2.2 - Aggiornamento APCOGDESTI Aggiornare il record di origine impostando:
| Dato | Descrizione |
|---|---|
| A-DST-AGG-APP | "N" |
B - Esportazione destinazioni Su POSTGRES, tabella APSTATOSYN, leggere il record relativo alla tabella/oggetto da sincronizzare "COGDESTI"; se il record non esiste, crearlo impostando
| Dato | Contenuto |
|---|---|
| A_SYN_AZIENDA | Codice azienda |
| A_SYN_TABELLA | "COGDESTI" |
| 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) B.1 - Ricerca record da esportare Per il momento esportiamo solo le destinazioni "merce", quindi per ciascun record letto: * * Se DST-ID-TIP <> "D" scartare i record Poi, a seconda dell'operazione richiesta:
| Operazione | Effetto |
|---|---|
| " " | Scorrere COGDESTI; per ciascun record letto considerare solo quelli dove DST-DA-DATA >= a A_SYN_DA_GES_DATA |
| ESPORTA-TUTTO | Scorrere COGDESTI e considerare tutte le destinazioni |
| AGGIORNA-KEY | Elaborare solo la destinazione con DST-CHIA1 = AGPRG-KEY |
Quindi per ciascuna destinazione da esportare: B.1.1 - Destinazione da esportare Cercare l'esistenza di un record APCOGDESTI avente:
| Dato | Descrizione |
|---|---|
| A-DST_AZIENDA | Codice azienda |
| A-DST-ID-DISPOSITIVO | 0 |
| A-DST-IDD-PROG | 0 |
| A-DST-ANA | DST-ANA |
| A-DST-ID-DST-TIP | DST-ID-TIP |
| A-DST-ID-DST-IDX | DST-ID-IDX |
Se non esiste, inserirlo. Se esiste, aggiornarlo: se pero' A-DST-AGG-APP = "A" o "C", inserire una segnalazione sul file di log. Informazioni con cui inserire/aggiornare un record su APCOGDESTI:
| Nome campo | Note |
|---|---|
| A-DST-AZI | Codice azienda |
| A-DST-ID-DISPOSITIVO | " " |
| A-DST-IDD-PROG | 0 |
| A-DST-ANA | DST-ANA |
| A-DST-ID-DST-TIP | DST-ID-TIP |
| A-DST-ID-DST-IDX | DST-ID-IDX |
| A-DST-RAG-SOC | DST-RAG-SOC |
| A-DST-IND | DST-IND |
| A-DST-CAP | DST-CAP-ALFA |
| A-DST-LOCA | DST-LOCA |
| A-DST-PROV | DST-PROV |
| A-DST-FL-DEFAULT | DST-FL-DEFAULT |
| A-DST-FL-CANC | DST-FL-CANC |
| A-DST-EMAIL | DST-EMAIL |
| A-DST-LATITUDINE | Vedi B.1.2 |
| A-DST-LONGITUDINE | |
| A-DST-ZONA | DST2-ZONA |
| A-DST-NOTE | DST2-NOTE |
| A-DST-ID-SINCRO | A-SYN-ID-SINCRO |
| A-DST-FL-CANC | " " |
| A-DST-AGG-APP | "N" |
| A-DST-AGENTE | DST2-AGENTE |
B.1.2 - Aggiornamento coordinate geografiche Se i dati della destinazione sono diversi da quelli già presenti (indirizzo, cap, località, provincia), o se la destinazione è nuova, azzerare la destinazione. Altrimenti, se le coordinate su COGDEST2 sono diverse da quelle su APCOGDESTI, esportarle (vedi anche SWA031). Se dopo l'aggiornamento le coordinate (A-DST-LATITUDINE/A-DST-LONGITUDINE) sono vuote, alzare un flag FL-RICALCOLO-GEOMAPPING) C - Aggiornamento coordinate geografiche Al termine dell'esportazione delle destinazioni, se una di quelle aggiornate ha le coordinate vuote (FL-RICALCOLO-GEOMAPPING), allora innescare in comando che invoca un apposito script che permette il ricalcolo su WEB; vedi SWA004, procedura b-geomapping-clienti; il comando in questo caso è : string "https://kpngate.es2000.it/coordinate/" "getCoordinate2.php?azienda=" tm-cfg-cod-azienda D - Aggiornamento APSTATOSYN Aggiornare il record APSTATOSYN relativo a:
| Dato | Contenuto |
|---|---|
| A_SYN_AZIENDA | Codice azienda |
| A_SYN_TABELLA | "COGDESTI" |
e aggiornare i dati:
| Dato | Contenuto |
|---|---|
| A_SYN_AZIENDA | Codice azienda |
| A_SYN_TABELLA | "COGDESTI" |
| A_SYN_DA_GES_DATA | Data/ora di aggiornamento maggiore trovata sui record esportati |
| A_SYN_DA_GES_ORA | |
| A_SYN_DA_ID_SINCRO | Sommare 1 al valore precedente |
Estratto da documentazione interna ClickUp