SWN039 - Matricole di assistenza¶
Nome programma SWN039 Linkage section UTILAGPRG - Linkage comune Id processo: 42 Nome processo: MATRICOLE-ASS Tabelle principali gestite
| AREA | AREAGATE | Direzione |
|---|---|---|
| ASNMATRI ASNMATR2 |
APASNMATRI | ------> <------ |
Logica generale Sincronizzazione delle matricole di assistenza. Esportazione Esportazione di tutte le matricole effettivamente modificate (con dati variati). In questa fase NON esportiamo la distinta matricola, verrà realizzato un processo indipendente come è nella logica standard delle nuove sincronizzazioni Importazione Le applicazioni WEB potranno inserire, modificare o cancellare logicamente nuove matricole Dato che per ora non è possibile riconoscere i record di distinta base aggiornati su APP, è necessario portarsi dietro l'aggiornamento delle distinte base (ASNMTRDB), che per il momento non è ottimizzato Per conformità alla gestione precedente della sincronizzazione (SWA020), le fasi rimangono strutturate come in questo programma, anche se adattate alla struttura dei programmi "SWN"; qui per non fare confusione con fasi presenti e che hanno sempre lo stesso prefisso le rinomino e evidenzio quelle standard presenti negli SWN: * A - Controllo di esecuzione * B.1 - Stato sincronizzazione e semaforo rosso * C.1 - Importazione modifiche * C.2 - Importazione nuove matricole * B - Esportazione matricole * D - Aggiornamento APSTATOSYN e semaforo verde Configurazioni possibili
| Gruppo | Parametro | Note |
|---|---|---|
| abilita | attiva-areaapp | |
| areaapp | cod-azienda | |
| areaapp | db-conn-string | |
| areaapp | agg-postgres-online | |
| ass-mtr | sel-dettaglio-impianto | |
| ass-mtr | gestione-db |
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: APASNMATRI Se fallita inviare una Segnalazione critica e chiudere. B.1 - Stato sincronizzazione e semaforo rosso (ex E - swa020) Sulla 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 |
| A-SYN-VERSIONE | 2 |
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.1 Gestione semaforo 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" |
aggiornando di conseguenza il record C - Importazione aggiornamenti (ex B - swa020) Effettuare una query per estrarre tutti gli elementi aggiornati su APP: SELECT * FROM APASNMATRI WHERE a_amtr_azi = azienda AND a_amtr_agg_app = "S" AND a_amtr_id_dispositivo = 0) Gli elementi potranno essere: * Cancellati: se A_AMTR_VAL = "C" * Aggiornati: se A_AMTR_VAL <> "C" C.1 - Importazione elemento aggiornato o cancellato logicamente Fare una ricerca su ASNMATRI impostando:
| Dato | Contenuto |
|---|---|
| AMTR-ID | A-AMTR-ID |
In questa situazione il record dovrà esistere, altrimenti inserirlo. Quindi proseguire con l'aggiornamento C.1.1 - Aggiornamento ASNMATRI
| Dato | Contenuto |
|---|---|
| AMTR-TIP | A-AMTR-TIP |
| AMTR-SN | A-AMTR-SN (*) |
| AMTR-VAL | A-AMTR-VAL |
| AMTR-ID-SOST | A-AMTR-ID-SOST |
| AMTR-MERCE | A-AMTR-MERCE (k-merce-null se vuoto) |
| AMTR-MAT | A-AMTR-MAT ("000000000000" se vuoto) |
| AMTR-CLI | A-AMTR-ANA |
| AMTR-DST-TIP | A-AMTR-DST-TIP |
| AMTR-DST-IDX | A-AMTR-DST-IDX |
| AMTR-CONTATTO | A-AMTR-CONTATTO |
| AMTR-UBICAZIONE | A-AMTR-UBICAZIONE (*) |
| AMTR-PERSONA | A-AMTR-PERSONA (*) |
| AMTR-TELEFONO | A-AMTR-TELEFONO (*) |
| AMTR-N-INV | A-AMTR-N-INV (*) |
| AMTR-GAR-INI | A-AMTR-GAR-INI (0 se = 10101) |
| AMTR-GAR-FIN | A-AMTR-GAR-FIN (0 se = 10101) |
| AMTR-PRODUTTORE | A-AMTR-PRODUTTORE |
| AMTR-MARCA | A-AMTR-MARCA |
| AMTR-FL-PROVV | A-AMTR-FL-PROVV |
| AMTR-COD-NOM | A-AMTR-COD-NOM |
| AMTR-FUORI-CONTRATTO | A-AMTR-FUORI-CONTRATTO |
| AMTR-FL-IMPIANTO | A-AMTR-FL-IMPIANTO |
| AMTR-TECNICO | A-AMTR-TECNICO |
| AMTR-MODELLO-CERT | A-AMTR-MODELLO-CERT (*) |
| AMTR-ID-MODELLO | AMOD-ID Trovato su ASNMODEL per il primo modello avente: Vedi CERCA-MODELLO su SWA020 |
| AMTR-ANNO-COSTR | A-AMTR-ANNO-COSTR |
(*) Questi dati devono essere parsati usando GESSTR, con operazione CONV-TESTO-IMPORTATO C.1.2 - Aggiornamento ASNMATR2 Cercare l'esistenza del record su ASNMATR2:
| Dato | Contenuto |
|---|---|
| AMTR2-ID | A-AMTR-ID |
Se il record non esiste inserirlo. Quindi proseguire con l'aggiornamento
| Dato | Contenuto |
|---|---|
| AMTR2-NOTE-POSTIT | A-AMTR-NOTE-POSTIT (*) |
| AMTR2-PORTALE-CATASTO | A-AMTR-PORTALE-CATASTO (*) |
| AMTR2-PORTALE-CHIAVE | A-AMTR-PORTALE-CHIAVE (*) |
(*) Questi dati devono essere parsati usando GESSTR, con operazione CONV-TESTO-IMPORTATO C.1.3 - Distinta base matricola Dato che per ora non è possibile riconoscere i record di distinta base aggiornati su APP, è necessario portarsi dietro l'aggiornamento delle distinte base Come prima cosa svuotare il contenuto della distinta lato gestionale: cancellare tutti i record di ASNMTRDB collegati alla matricola. Poi 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 |
Dopodichè importare i dati di ogni record di APASNMTRDB trovati su ASNMTRDB: 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 |
| AMDB-QTA-SCALARE | A-AMDB-QTA-SCALARE |
| AMDB-TARIFFA | A-AMDB-TARIFFA |
| AMDB-SCONTO-1 | A-AMDB-SCONTO-1 |
C.2 - Importazione nuove matricole (ex C su SWA020) 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.2.1 Inserimento nuova matricola * C.1.3 Importazione distinta * C.2.2 Rimozione record di input * C.2.3 Reinserimento record * C.2.4 Modifica record dove la nuova matricola è padre C.2.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 Vedi C.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.2 - Rimozione record di input Il record di origine da cui siamo partiti su APASNMATRI va cancellato. C.2.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.2.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. B - Esportazione elementi aggiornati (ex A - SWA020) * ID SINCRO: gestito * Esportazione differenziale: gestita ma non ottimizzata: non esiste una chiave diretta per ottenere solo i record aggiornati * Cancellazione logica: non gestita In questa fase si dovrà tenere conto di * Limite record * Limite errori * "Esporta tutto" B.2 - Ricerca record da esportare B.2.1 Ricerca record da esportare
| Tipo di elaborazione | Condizione | Cosa fare |
|---|---|---|
| Singolo record | AGPRG-KEY <> " " (conterrà AMTR-ID) |
Si legge direttamente il record da aggiornare su ASNMATRI Verrà eseguita se agg-postgres-online è attiva Se viene sincronizzato un record cancellato, verrà effettuata la cancellazione logica |
| Esportazione totale | AGPRG-ESPORTA-TUTTO = "S" | Si scorrono tutti i record di ASNMATRI; ogni record va considerato, ignorando il controllo sulla variazione dei record |
| Esportazione standard | Si scorrono tutti i record di ASNMATRI, considerando solo le matricole aggiornate dopo la data/ora ultimo aggiornamento | |
| Pulizia | AGPRG-OPE = "PULIZIA" | Eseguire solo il giro di cancellazione logica B.3 quindi uscire |
Per ciascun record valido si cercano tutti i record collegati: ASNMATR2 B.2.2 Verifica ed esportazione record Dopodichè si effettua la ricerca del record su APASNMATRI
| Dato | Contenuto |
|---|---|
| A-AMTR-AZI | Codice azienda |
| A-AMTR-ID-DISPOSITIVO | 0 |
| A-AMTR-IDD-PROG | 0 |
| A-AMTR-ID | AMTR-ID |
Se non esiste, inserirlo. Se esiste, aggiornarlo l'aggiornamento del record deve avvenire solo se almeno un dato tra quelli da modificare è diverso. NB: se è stata richiesta l'esportazione completa (AGPRG-ESPORTA-TUTTO = "S") allora il record dovrà essere esportato a prescindere dal confronto Suggerimento Invece di popolare direttamente i dati del record di destinazione, portarli su delle copie in w/s. Al termine confrontare i dati sulla destinazione con la copia in w/s. Aggiornamento da ASNMATRI NB: se a questo punto A-AMTR-AGG-APP = "S" o "C", significa che nel lasso di tempo tra la fase di importazione e questa, qualcuno ha aggiornato il record su APP: quindi segnalare sul log e ignorare l'esportazione.
| Dato | Contenuto | Confronto? |
|---|---|---|
| A-AMTR-AZIENDA | Codice azienda | |
| A-AMTR-ID-DISPOSITIVO | 0 | |
| A-AMTR-IDD-PROG | 0 | |
| A-AMTR-ID | AMTR-ID | |
| A-AMTR-TIP | AMTR-TIP | Si |
| A-AMTR-SN | AMTR-SN (*) | Si |
| A-AMTR-VAL | AMTR-VAL | Si |
| A-AMTR-ID-SOST | AMTR-ID-SOST | Si |
| A-AMTR-MERCE | AMTR-MERCE | Si |
| A-AMTR-MAT | AMTR-MAT | Si |
| A-AMTR-ANA | AMTR-CLI | Si |
| A-AMTR-DST-TIP | AMTR-DST-TIP | Si |
| A-AMTR-DST-IDX | AMTR-DST-IDX | Si |
| A-AMTR-CONTATTO | AMTR-CONTATTO | Si |
| A-AMTR-UBICAZIONE | AMTR-UBICAZIONE (*) | Si |
| A-AMTR-PERSONA | AMTR-PERSONA (*) | Si |
| A-AMTR-TELEFONO | AMTR-TELEFONO (*) | Si |
| A-AMTR-N-INV (*) | AMTR-N-INV (*) | Si |
| A-AMTR-GAR-INI | AMTR-GAR-INI | Si |
| A-AMTR-GAR-FIN | AMTR-GAR-FIN | Si |
| A-AMTR-PRODUTTORE | AMTR-PRODUTTORE | Si |
| A-AMTR-MARCA | AMTR-MARCA | Si |
| A-AMTR-FL-PROVV | AMTR-FL-PROVV | Si |
| A-AMTR-COD-NOM | AMTR-COD-NOM | Si |
| A-AMTR-FUORI-CONTRATTO | AMTR-FUORI-CONTRATTO | Si |
| A-AMTR-FL-IMPIANTO | AMTR-FL-IMPIANTO | Si |
| A-AMTR-TECNICO | AMTR-TECNICO | Si |
| A-AMTR-MODELLO-CERT | AMTR-MODELLO-CERT | Si |
| A-AMTR-MODELLO | AMOD-NOME Trovato su ASNMODEL: |
Si |
| A-AMTR-ID-PADRE | Ricerca su ASNMTRLK di un record avente: Se esiste, impostare questo campo = AMLK-ID-PADRE |
Si |
| A-AMTR-ID-IMPIANTO | Come sopra, ma in questo caso si deve risalire fino alla radice dell'impianto | Si |
| A-AMTR-DES-IMP | Descrizione impianto/matricola La descrizione viene composta in base alla configurazione sel-dettaglio-impianto |
Si |
| A-AMTR-ANNO-COSTR | AMTR-ANNO-COSTR | Si |
| A-AMTR-FL-CANC | " " | Si |
| A-AMTR-ID-SINCRO | Prossimo id sincro | |
| A-AMTR-AGG-APP | "N" |
In questa fase tenere memoria di data+ora dell'ultimo record di input considerato. Per tutti i campi alfanumerici significativi (non flag, non valori fissi) effettuare il parsing tramite GESSTR, come già fatto negli altri programmi di sincronizzazione B.3 Verifica record cancellati Sulla tabella di origine ASNMATRI esiste il flag di cancellazione logica, ma può essere effettuata anche la cancellazione fisica di una matricola. Nel processo originale SWA020 non è previsto il giro di cancellazione, perchè potrebbe essere veramente poco performante. Ora pero' lo implementiamo qui. 1. Scorrere tutti i record di APASNMATRI per l'azienda 2. Ricerca, per ciascuno, del corrispondente record su ASNMATRI A questo punto la situazione potrebbe essere la seguente:
| ASNMATRI trovato? |
A-AMTR-FL-CANC | Cosa fare |
|---|---|---|
| Si | "C" | Aggiornare APASNMATRI impostando |
| Si | " " | Nessuna operazione |
| No | "C" | Nessuna operazione |
| No | " " | Aggiornare APASNMATRI impostando |
B.9 - Aggiornamento id syncro Al termine dell'elaborazione, aggiornare il record APSTATOSYN:
| Dato | Contenuto |
|---|---|
| A_SYN_AZIENDA | Codice azienda |
| A_SYN_TABELLA | "ASNMATRI" |
| A_SYN_DA_GES_DATA | Data/ora dell'ultimo record aggiornato |
| A_SYN_DA_GES_ORA | |
| A_SYN_DA_ID_SINCRO | Ultimo id sincro + 1 |
| A-SYN-VERSIONE | 2 |
Esempio¶
Abbiamo le seguenti matricole: * 0/0/100 * 0/0/101 * 34/1/0 inserita su APP * 34/2/0 inserita su APP * 34/3/0 inserita su APP * 34/4/0 inserita su APP * 34/5/0 inserita su APP * 34/6/0 inserita su APP Il processo di importazione dovrà ripetere il processo di importazione in due fasi: 1. Importazione matricole aggiornate (AGG-APP = "S" e ID-DISPOSITIVO = 0) 2. Importazione matricole nuove (AGG-APP = "S" e ID-DISPOSITIVO > 0 e IDD-PADRE = 0); per ciascuna matricola nuova trovata: 1. Creazione nuova matricola sul gestionale con attribuzione ID assoluto 2. Sostituzione dell'ID assoluto sul record con la matricola in esame 3. Ricerca delle matricole nuove dove IDD-PADRE/IDD-PROG-PADRE corrispondono a ID-DISPOSITIVO/IDD-PROG appena aggiornato, e sostituzione dell'ID 1. Se trovate matricole in cui la matricola elaborata era padre: ripetere il punto B interamente finchè non ci sono più matricole nuove 3. Importazione matricole nuove con padre "provvisorio" - arrivate dalla APP perchè create quando ancora hanno il padre "provvisorio" - (AGG-APP = "S" e ID-DISPOSITIVO > 0 e IDD-PADRE > 0); per ciascuna matricola nuova trovata: 1. Ricerca del padre con query dove si cerca un record di APASNMATRI con: 1. IDD-ORIG = IDD-PADRE 2. IDD-PROG-ORIG = IDD-PROG-PADRE 2. Creazione nuova matricola sul gestionale con attribuzione ID assoluto e impostazione del padre trovato 3. Modifica dei dati su APASNMATRI 4. Ripetere il caso B.III Esempio Prima di iniziare
| ID-DISPOSITIVO | IDD-PROG | ID | IDD-PADRE | IDD-PROG-PADRE | ID-PADRE | IDD-ORIG | IDD-PROG-ORIG | AGG_APP |
|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 100 | 0 | 0 | 0 | 0 | 0 | |
| 0 | 0 | 101 | 0 | 0 | 100 | 0 | 0 | |
| 34 | 1 | 0 | 0 | 0 | 100 | 34 | 1 | S |
| 34 | 2 | 0 | 34 | 1 | 0 | 34 | 2 | S |
| 34 | 3 | 0 | 34 | 1 | 0 | 34 | 3 | S |
| 34 | 4 | 0 | 0 | 0 | 100 | 34 | 4 | S |
| 34 | 5 | 0 | 34 | 4 | 0 | 34 | 5 | S |
| 34 | 6 | 0 | 34 | 4 | 0 | 34 | 6 | S |
B - Passata 1 - Fasi B.I e B.II Esamino la prima matricola nuova senza padre, e gli assegno l'id assoluto 102. La matricola verrà rimossa dal database, finchè non inizia l'esportazione
| ID-DISPOSITIVO | IDD-PROG | ID | IDD-PADRE | IDD-PROG-PADRE | ID-PADRE | IDD-ORIG | IDD-PROG-ORIG | AGG_APP |
|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 100 | 0 | 0 | 0 | 0 | 0 | |
| 0 | 0 | 101 | 0 | 0 | 100 | 0 | 0 | |
| 0 | 0 | 102 | 0 | 0 | 100 | 34 | 1 | |
| 34 | 2 | 0 | 34 | 1 | 0 | 34 | 2 | S |
| 34 | 3 | 0 | 34 | 1 | 0 | 34 | 3 | S |
| 34 | 4 | 0 | 0 | 0 | 100 | 34 | 4 | S |
| 34 | 5 | 0 | 34 | 4 | 0 | 34 | 5 | S |
| 34 | 6 | 0 | 34 | 4 | 0 | 34 | 6 | S |
B - Passata 1 - Fase B.III Sostituisco l'id assoluto alle matricole dove è padre
| ID-DISPOSITIVO | IDD-PROG | ID | IDD-PADRE | IDD-PROG-PADRE | ID-PADRE | IDD-ORIG | IDD-PROG-ORIG | AGG_APP |
|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 100 | 0 | 0 | 0 | 0 | 0 | |
| 0 | 0 | 101 | 0 | 0 | 100 | 0 | 0 | |
| 0 | 0 | 102 | 0 | 0 | 100 | 34 | 1 | |
| 34 | 2 | 0 | 0 | 0 | 102 | 34 | 2 | S |
| 34 | 3 | 0 | 0 | 0 | 102 | 34 | 3 | S |
| 34 | 4 | 0 | 0 | 0 | 100 | 34 | 4 | S |
| 34 | 5 | 0 | 34 | 4 | 0 | 34 | 5 | S |
| 34 | 6 | 0 | 34 | 4 | 0 | 34 | 6 | S |
B - Passata 2 - Fasi B.I B.II B.III Trovo una seconda matricola nuova senza padre: assegno l'id, e poi lo sostituisco nelle matricole dove è padre
| ID-DISPOSITIVO | IDD-PROG | ID | IDD-PADRE | IDD-PROG-PADRE | ID-PADRE | IDD-ORIG | IDD-PROG-ORIG | AGG_APP |
|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 100 | 0 | 0 | 0 | 0 | 0 | |
| 0 | 0 | 101 | 0 | 0 | 100 | 0 | 0 | |
| 0 | 0 | 102 | 0 | 0 | 100 | 34 | 1 | |
| 34 | 2 | 0 | 0 | 0 | 102 | 34 | 2 | S |
| 34 | 3 | 0 | 0 | 0 | 102 | 34 | 3 | S |
| 0 | 0 | 103 | 0 | 0 | 100 | 34 | 4 | |
| 34 | 5 | 0 | 0 | 0 | 103 | 34 | 5 | S |
| 34 | 6 | 0 | 0 | 0 | 103 | 34 | 6 | S |
B - Passata 3 - Fasi B.I B.II B.III Non esistono più matricole nuove presenti anche come "padre", quindi questa passata le elabora tutte quante insieme:
| ID-DISPOSITIVO | IDD-PROG | ID | IDD-PADRE | IDD-PROG-PADRE | ID-PADRE | IDD-ORIG | IDD-PROG-ORIG | AGG_APP |
|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 100 | 0 | 0 | 0 | 0 | 0 | |
| 0 | 0 | 101 | 0 | 0 | 100 | 0 | 0 | |
| 0 | 0 | 102 | 0 | 0 | 100 | 34 | 1 | |
| 0 | 0 | 104 | 0 | 0 | 102 | 34 | 2 | S |
| 0 | 0 | 105 | 0 | 0 | 102 | 34 | 3 | S |
| 0 | 0 | 103 | 0 | 0 | 100 | 34 | 4 | |
| 0 | 0 | 106 | 0 | 0 | 103 | 34 | 5 | S |
| 0 | 0 | 107 | 0 | 0 | 103 | 34 | 6 | S |
C -
| ID-DISPOSITIVO | IDD-PROG | ID | IDD-PADRE | IDD-PROG-PADRE | ID-PADRE | IDD-ORIG | IDD-PROG-ORIG | AGG_APP |
|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 100 | 0 | 0 | 0 | 0 | 0 | |
| 0 | 0 | 101 | 0 | 0 | 100 | 0 | 0 | |
| 0 | 0 | 102 | 0 | 0 | 100 | 34 | 1 | |
| 0 | 0 | 104 | 0 | 0 | 102 | 34 | 2 | |
| 0 | 0 | 105 | 0 | 0 | 102 | 34 | 3 | |
| 0 | 0 | 103 | 0 | 0 | 100 | 34 | 4 | |
| 0 | 0 | 106 | 0 | 0 | 103 | 34 | 5 | |
| 0 | 0 | 107 | 0 | 0 | 103 | 34 | 6 | |
| 34 | 7 | 0 | 34 | 1 | 0 | 34 | 7 | S |
Ricerca padre provvisorio:
| ID-DISPOSITIVO | IDD-PROG | ID | IDD-PADRE | IDD-PROG-PADRE | ID-PADRE | IDD-ORIG | IDD-PROG-ORIG | AGG_APP |
|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 100 | 0 | 0 | 0 | 0 | 0 | |
| 0 | 0 | 101 | 0 | 0 | 100 | 0 | 0 | |
| 0 | 0 | 102 | 0 | 0 | 100 | 34 | 1 | |
| 0 | 0 | 104 | 0 | 0 | 102 | 34 | 2 | |
| 0 | 0 | 105 | 0 | 0 | 102 | 34 | 3 | |
| 0 | 0 | 103 | 0 | 0 | 100 | 34 | 4 | |
| 0 | 0 | 106 | 0 | 0 | 103 | 34 | 5 | |
| 0 | 0 | 107 | 0 | 0 | 103 | 34 | 6 | |
| 34 | 7 | 0 | 34 | 1 | 0 | 34 | 7 | S |
| 34 | 8 | 0 | 34 | 7 | 0 | 34 | 8 | S |
Trovo che il padre è ID=102
| ID-DISPOSITIVO | IDD-PROG | ID | IDD-PADRE | IDD-PROG-PADRE | ID-PADRE | IDD-ORIG | IDD-PROG-ORIG | AGG_APP |
|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 100 | 0 | 0 | 0 | 0 | 0 | |
| 0 | 0 | 101 | 0 | 0 | 100 | 0 | 0 | |
| 0 | 0 | 102 | 0 | 0 | 100 | 34 | 1 | |
| 0 | 0 | 104 | 0 | 0 | 102 | 34 | 2 | |
| 0 | 0 | 105 | 0 | 0 | 102 | 34 | 3 | |
| 0 | 0 | 103 | 0 | 0 | 100 | 34 | 4 | |
| 0 | 0 | 106 | 0 | 0 | 103 | 34 | 5 | |
| 0 | 0 | 107 | 0 | 0 | 103 | 34 | 6 | |
| 0 | 0 | 108 | 0 | 0 | 102 | 34 | 7 | S |
Estratto da documentazione interna ClickUp