SWA020 - Import/export matricole assistenza¶
Logica generale Import/export delle matricole di assistenza tra gestionale e database KPN Configurazioni possibili
| Gruppo | Parametro | Note |
|---|---|---|
| ass-mtr | sel-dettaglio-impianto | |
| ass-mtr | riesporta-tutto |
Import/Export matricole assistenza¶
Modifiche per import/export ASNMATRI su APASNMATRI Le fasi principali del processo ora diventano, nell'ordine: * E - Semaforo rosso * B - Importazione modifiche * C - Importazione nuove matricole * A - Esportazione matricole * D - Aggiornamento APSTATOSYN e semaforo verde E - Semaforo rosso Aggiornare il record APSTATOSYN relativo a:
| Dato | Contenuto |
|---|---|
| A_SYN_AZIENDA | Codice azienda |
| A_SYN_TABELLA | "ASNMATRI" |
Se A-SYN-SEMAFORO = "A" significa che una APP per l'azienda sta aggiornando le matricole; quindi attendere 5 secondi. Ripetere il processo per 5 volte; dopo l'ultima se ancora il record non risulta libero, uscire dall'elaborazione. Quando abbiamo trovato il record libero alzare il semaforo
| Dato | Contenuto |
|---|---|
| A-SYN-SEMAFORO | "G" |
B - Importazione modifiche a matricole Scorrere APASNMATRI eseguendo una apposita query che permetta di restituire i record modificati (A_AMTR_AGG_APP = "S" e A-AMTR-ID-DISPOSITIVO = 0). B.1 - Aggiornamento matricola Aggiornamento del record ASNMATRI avente AMTR-ID = A-AMTR-ID, compilando tutti i dati della matricola a parità di nome presenti in APASNMATRI B.1.1 - Importazione modello Durante la compilazione, se il modello non esiste su ASNMODEL (ricerca con AMOD-NOME), dovrà essere creato un nuovo modello:
| Dato | Contenuto |
|---|---|
| AMOD-ID | Nuovo id progressivo |
| AMOD-MARCA | A-MOD-MARCA |
| AMOD-NOME | A-MOD-COD |
| AMOD-DES | A-MOD-DES |
Eseguire B.3 - Importazione distinta B.2 - Aggiornamento APASNMATRI Aggiornare il record di origine impostando:
| Dato | Descrizione |
|---|---|
| A-AMTR-AGG-APP | "N" |
B.3 - Importazione distinta Parte da eseguire sia nel caso di inserimento nuova matricola che di aggiornamento Eseguire una query su APASNMTRDB, a parità di:
| Dato | Contenuto |
|---|---|
| A-AMDB-AZIENDA | A-AMTR-AZIENDA |
| A-AMDB-ID-DISPOSITIVO | A-AMTR-ID-DISPOSITIVO |
| A-AMDB_IDD-PROG | A-AMTR-IDD-PROG |
| A-AMDB-ID | A-AMTR-ID |
Svuotare il contenuto della distinta lato gestionale: quindi cancellare tutti i record di ASNMTRDB collegati alla matricola. Dopodichè importare i dati di ogni record di APASNMTRDB trovati su ASNMTRDB:
| Nome campo | Contenuto |
|---|---|
| AMDB-ID-MTR | A-AMDB-ID-MTR |
| AMDB-PROG | A-AMDB-PROG |
| AMDB-MERCE | A-AMDB-MERCE |
| AMDB-QTA | A-AMDB-QTA |
| AMBD-SEQ | A-AMBD-SEQ |
| AMDB-NOTE | A-AMDB-NOTE |
C - Importazione nuove matricole Questa parte del processo dovrà essere strutturata in modo che esegua sempre l'importazione di nuove matricole senza padre, o con padre già codificato in modo assoluto (vedi Esempio). Scorrere APASNMATRI eseguendo una apposita query che permetta di restituire i record nuovi ma senza padre nuovo: * A-AMTR-AGG-APP = "S" * A-AMTR-ID-DISPOSITIVO > 0 * A-AMTR-IDD-PADRE = 0 Per ciascun record trovato eseguire i punti: * C.1 Inserimento nuova matricola * B.3 Importazione distinta * C.2 Rimozione record di input * C.3 Reinserimento record * C.4 Modifica record dove la nuova matricola è padre C.1 - Inserimento nuovo matricola Creazione di un nuovo record su ASNMATRI, dove:
| Dato | Descrizione |
|---|---|
| AMTR-ID | Nuovo id progressivo |
| AMTR-SN | A-AMTR-SN Se vuoto, sarà forzato = AMTR-ID |
| AMTR-* | Compilare tutti i dati della matricola a parità di nome presenti in APASNMATRI |
Durante la compilazione, se il modello non esiste su ASNMODEL (ricerca con AMOD-NOME), dovrà essere creato un nuovo modello (vedi B.1.1) Se A-AMTR-ID-PADRE > 0, eseguire una chiamata a ASN049, con i dati
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | ASN049-CALLER | Nome programma chiamante |
| ASN049-CALLED | "ASN049" | |
| ASN049-OPE | "AGGIUNGI-MATR-BKG" | |
| ASN049-ID-IMPIANTO | A-AMTR-ID-PADRE | |
| ASN049-ID-MTR | Id matricola creata | |
| OUTPUT | ASN049-ESITO | Restituirà "S" se l'operazione è stata eseguita con successo |
| ASN049-MSG | Restituirà un eventuale messaggio di avvertimento o di errore (a seconda dell'esito), oppure nulla Per il momento non emettiamo nessun messaggio |
C.2 - Rimozione record di input Il record di origine da cui siamo partiti su APASNMATRI va cancellato. C.3 - Reinserimento record A questo punto, avendo l'area di working del record ancora piena, occorre inserirlo di nuovo dopo aver cambiato la chiave primaria:
| Dato | Contenuto |
|---|---|
| A-AMTR-AZIENDA | Azienda |
| A-AMTR-ID-DISPOSITIVO | 0 |
| A-AMTR-IDD-PROG | 0 |
| A-AMTR-ID | ID matricola appena inserita (AMTR-ID) |
C.4 - Modifica record dove la nuova matricola è padre In questa fase molto importante andremo a sostituire l'id usato dalla APP per gestire il collegamento con il nuovo ID assoluto. Quindi dovremo eseguire una nuova query su APASNMATRI impostando:
| Dato | Contenuto |
|---|---|
| A-AMTR-AZIENDA | Azienda |
| A-AMTR-IDD-PADRE | Id dispositivo del record appena modificato |
| A-AMTR-IDD-PROG-PADRE | Progressivo di dispositivo del record appena modificato |
Per ciascun record trovato dovremo eseguire la sostituzione del padre:
| Dato | Contenuto |
|---|---|
| A-AMTR-AZIENDA | Azienda |
| A-AMTR-IDD-PADRE | 0 |
| A-AMTR-IDD-PROG-PADRE | 0 |
| A-AMTR-ID-PADRE | AMTR-ID |
A questo punto dovremo in ogni caso ripetere la query iniziale descritta al punto "C" e ripetere il processo, finchè questa query non restituisce più record nuovi da inserire. A - Esportazione matricole NOTA: con le nuove modifiche alla sezione di importazione, l'esportazione riesporterà nuove matricole appena importate, ma questa fase è importante per aggiornare l'id sincro. Su POSTGRES, tabella APSTATOSYN, leggere il record relativo alla tabella/oggetto da sincronizzare "ASNMATRI"; se il record non esiste, crearlo impostando
| Dato | Contenuto |
|---|---|
| A_SYN_AZIENDA | Codice azienda |
| A_SYN_TABELLA | "ASNMATRI" |
| 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) Ricerca record da esportare * Scorrere ASNMATRI; a seconda della configurazione riesporta-tutto; se vale: * "S": esportare comunque la matricola * "N": per ciascun record letto considerare solo quelli dove AMTR-DA-DATA+AMTR-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 matricola * Per ciascun record considerato cercare l'esistenza di un record avente:
| Dato | Descrizione |
|---|---|
| A_AMTR_AZIENDA | Codice azienda |
| A_AMTR_ID_DISPOSITIVO | 0 |
| A_AMTR_IDD_PROG | 0 |
| A_AMTR_ID | AMTR-ID |
Se non esiste, inserirlo. Se esiste, aggiornarlo: se pero' A_AMTR_AGG_APP = "S" o "C", inserire una segnalazione sul file di log. Informazioni con cui inserire/aggiornare un record su APASNMATRI:
| Dato | Descrizione |
|---|---|
| A_AMTR_AZIENDA | Codice azienda |
| A_AMTR_ID_DISPOSITIVO | 0 |
| A_AMTR_IDD_PROG | 0 |
| A_AMTR_ID | AMTR_ID |
| A_AMTR_* | Tutti i campi vanno valorizzati con il corrispondente record di ASNMATRI |
| A_AMTR_ID_SINCRO | Id sincronizzazione corrente + 1 |
| A_AMTR_FL_CANC | " " |
| A_AMTR_AGG_APP | "N" |
| A_AMTR_ID_PADRE | Ricerca su ASNMTRLK di un record avente: Se esiste, impostare questo campo = AMLK-ID-PADRE |
| A_AMTR_ID_IMPIANTO | Come sopra, ma in questo caso si deve risalire fino alla radice dell'impianto |
| A_AMTR_DES_IMP | Descrizione impianto/matricola La descrizione viene composta in base alla configurazione sel-dettaglio-impianto |
A.2 - Esportazione distinta Se la matricola appena esportata ha una distinta base (presenza di record su ASNMTRDB), eseguire l'esportazione: 1. Rimozione, con una query, di tutti i record id APASNMTRDB relativi alla matricola, quindi aventi:
| Dato | Contenuto |
|---|---|
| A-AMDB-AZIENDA | A-AMTR-AZIENDA |
| A-AMDB-ID-DISPOSITIVO | A-AMTR-ID-DISPOSITIVO |
| A-AMDB_IDD-PROG | A-AMTR-IDD-PROG |
| A-AMDB-ID | A-AMTR-ID |
- Dopodichè importare i dati di ogni record di ASNMTRDB trovati su APASNMTRDB:
| Nome campo | Contenuto |
|---|---|
| A-AMDB-ID-MTR | AMDB-ID-MTR |
| A-AMDB-ID-DISPOSITIVO | A-AMTR-ID-DISPOSITIVO |
| A-AMDB-IDD-PROG | A-AMTR-IDD-PROG |
| A-AMDB-PROG | AMDB-PROG |
| A-AMDB-MERCE | AMDB-MERCE |
| A-AMDB-QTA | AMDB-QTA |
| A-AMBD-SEQ | AMBD-SEQ |
| A-AMDB-NOTE | AMDB-NOTE |
D - Aggiornamento APSTATOSYN e semaforo verde Aggiornare il record APSTATOSYN relativo a:
| Dato | Contenuto |
|---|---|
| A_SYN_AZIENDA | Codice azienda |
| A_SYN_TABELLA | "ASNMATRI" |
e aggiornare i dati:
| Dato | Contenuto |
|---|---|
| A_SYN_AZIENDA | Codice azienda |
| A_SYN_TABELLA | "ASNMATRI" |
| 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 |
| A-SYN-SEMAFORO | " " |
D.1 - Aggiornamento configurazione Se la configurazione riesporta-tutto vale "S", dopo l'elaborazione dovrà essere riportata a "N" aggiornando direttamente il record su COGCNF
Estratto da documentazione interna ClickUp