Vai al contenuto

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
  1. 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