Vai al contenuto

SWN118 - Sincronizzazione testata commesse

Nome programma SWN118 Linkage section UTILAGPRG - Linkage comune Id processo: 118 Nome processo:COMMESSE-TES Tabelle principali gestite

AREA AREAGATE Direzione
COGTESCM
COGBUDCM
ARPTESCM
ARPBUDCM
------>

Logica generale Sincronizzazione delle testate commessa Esportazione Esportazione di tutti i record effettivamente modificati (con dati variati). Ad ogni esportazione saranno aggiornati sulla tabella ARPTESCM i seguenti record: * I record modificati dopo l'ultimo aggiornamento eseguito * I record cancellati sul gestionale (sarà alzato il flag di cancellazione) NB: attualmente l'esportazione non è ottimizzata, perchè su COGTESCM manca un indice diretto su data-ora aggiornamento. Se necessario si dovrà costruire questo indice. NB: Il programma non è ottimizzato, nè strutturato come gli altri SWN in modo che l'aggiornamento sia fatto solo quando necessario. Si dovrà eventualmente rivedere. Importazione Non prevista Configurazioni possibili

Gruppo Parametro Note
abilita attiva-areaapp
areaapp cod-azienda
areaapp db-conn-string
areaapp agg-postgres-online

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: ARPTESCM Se fallita inviare una Segnalazione critica e chiudere. C - Importazione aggiornamenti Non prevista B - Esportazione informazioni aggiornate * ID SINCRO: gestito * Esportazione differenziale: gestita e ottimizzata, attraverso una data specifica collegata a data/ora aggiornamento * Cancellazione logica: non gestita In questa fase si dovrà tenere conto di * Limite record * Limite errori * "Esporta tutto" B.1 - Stato sincronizzazione Sulla tabella APSTATOSYN, leggere il record relativo alla tabella/oggetto da sincronizzare "ARPAREAT"; se il record non esiste, crearlo impostando

Dato Contenuto
A_SYN_AZIENDA Codice azienda
A_SYN_TABELLA "ARPAREAT"
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.2 - Ricerca record da esportare B.2.1 Ricerca record da esportare

Tipo di elaborazione Condizione Cosa fare
Singolo record AGPRG-KEY <> " " Si legge direttamente il record da aggiornare su ARPTESCM
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 COGTESCM; ogni record va considerato
Esportazione standard Si scorrono tutti i record di COGTESCM, usando la chiave primaria (non c'è una chiave su data/ora aggiornamento), considerando solo i record con:


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 (in questo caso non ce ne sono) B.2.2 Verifica ed esportazione record Attenzione: questo giro viene fatto ancora nel modo tradizionale (clonato da SWA059) * Per ciascun record valido leggere anche il corrispondente record su COGTCMAG, poi cercare su APCRMDOSTP l'esistenza di un record avente:

Dato Contenuto
A-TSC-AZIENDA Codice azienda
A-TSC-COD TSC-COD

Se non esiste, inserirlo. Se esiste, aggiornarlo: Informazioni con cui inserire/aggiornare un record su ARPTESCM:

Dato Contenuto
A-TSC-AZIENDA Id azienda
A-TSC-COD TSC-COD
A-TSC-DES PGOT-DES
A-TSC-PROGETTO TSC-PROGETTO
A-TSC-DES-BREVE TSC-DES-BREVE
A-TSC-ANA TSC-ANA
A-TSC-DATA-ACQ TSC-DATA-ACQ
A-TSC-DATA-APE TSC-DATA-APE
A-TSC-DATA-CHI TSC-DATA-CHI
A-TSC-DATA-CNT TSC-DATA-CNT
A-TSC-STATO TSC-STATO
A-TSC-FL-CONS TSC-FL-CONS
A-TSC-FL-LOTTO TSC-FL-LOTTO
A-TSC-DIVISA TSC-DIVISA
A-TSC-IMP-PRV TSC-IMP-PRV
A-TSC-MAGG-ORE TSC-MAGG-ORE
A-TSC-MAGG-SPESE TSC-MAGG-SPESE
A-TSC-PROVV TSC-PROVV
A-TSC-TIPO TSC-TIPO
A-TSC-RAGGR TSC-RAGGR
A-TSC-ANA-DST TSCA-CLIENTE-ASS
A-TSC-DST-TIP A-TSC-DST-TIP
A-TSC-DST-IDX A-TSC-DST-IDX
A-TSC-ID-SINCRO Ultimo id sincro + 1
A-TSC-VAL TSC-VAL
A-TSC-AGG-APP " "
A-TSC-DATA-INI-EFF TSCA-DATA-INI-EFF
A-TSC-DATA-FIN-EFF TSCA-DATA-FINI-EFF

In questa fase tenere memoria di data+ora dell'ultimo record aggiornato. B.2.2.1 - Esportazione collegamento con sottocommesse Usando una query marcare con A-BDSC-VAL="T" tutti i record ARPBUDSC collegati alla commessa in elaborazione Poi scorrere COGRIGCM per recuperare tutte le sottocommesse collegate:

Dato Contenuto
RGC-TSC Codice commessa
RGC-SOT " "
RGC-TIP "SC"

Ciascun record trovato corrisponde ad una sottocommessa collegata; cercare quindi l'esistenza del record budget COGBUDSC collegato:

Dato Contenuto
BDSC-COMMESSA RGC-TSC
BDSC-SOTTOCOMMESSA RGC-CHIAVE

Quindi con i dati trovati verificare se esiste già su ARPBUDSC il record di collegamento:

Dato Contenuto
A-BDSC-AZIENDA Azienda in elaborazione
A-BDSC-COMMESSA RGC-TSC
A-BDSC-SOTTOCOMMESSA RGC-CHIAVE

B.2.2.1.1 - Inserimento Se il record non esiste, inserirlo:

Dato Contenuto
A-BDSC-AZIENDA Azienda in elaborazione
A-BDSC-COMMESSA RGC-TSC
A-BDSC-SOTTOCOMMESSA RGC-CHIAVE
A-BDSC-COSTO-MAT BDSC-COSTO-MAT
A-BDSC-COSTO-MO BDSC-COSTO-MO
A-BDSC-COSTO-ALTRI BDSC-COSTO-ALTRI
A-BDSC-MANODOPERA BDSC-MANODOPERA
A-BDSC-ID-GANTT A-BDSC-COMMESSA + A-BDSC-SOTTOCOMMESSA
A-BDSC-VAL " "
A-BDSC-ID-SINCRO Ultimo id-sincro "ARPBUDSC" + 1
A-BDSC-AGG-APP " "

B.2.2.1.2 - Modifica Se il record esiste, confrontare i dati variabili che provengono da AREA; Se sono diversi, aggiornare il record con:

Dato Contenuto
A-BDSC-COSTO-MAT BDSC-COSTO-MAT
A-BDSC-COSTO-MO BDSC-COSTO-MO
A-BDSC-COSTO-ALTRI BDSC-COSTO-ALTRI
A-BDSC-MANODOPERA BDSC-MANODOPERA
A-BDSC-VAL " "
A-BDSC-ID-SINCRO Ultimo id-sincro "ARPBUDSC" + 1
A-BDSC-AGG-APP " "

Se sono uguali, è sufficiente aggiornare il record con:

Dato Contenuto
A-BDSC-VAL " "

(quindi senza aggiornare l'id sincro) B.2.2.2 - Cancellazione logica sottocommesse non più presenti Usando una query rileggere i record di ARPBUDSC collegati alla commessa, che non sono stati trattati in precedenza: SELECT * FROM arpbudsc WHERE a_bdsc_azienda = ..... AND a_bdsc_commessa = ..... AND a_bdsc_val = "T" Per ciascun record trovato, effettuare la cancellazione logica:

Dato Contenuto
A-BDSC-VAL "C"
A-BDSC-ID-SINCRO Ultimo id-sincro "ARPBUDSC" + 1
A-BDSC-AGG-APP " "

B.2.2.3 - Collegamento con sottocommessa "nulla" Se la commessa non è collegata a nessuna sottocommessa, per la corretta gestione sullo scheduler GANTT, è necessario creare un collegamento con la sottocommessa "NULLA"; quindi in questo caso se non esiste il seguente record, inserirlo:

Dato Contenuto
A-BDSC-AZIENDA Azienda in elaborazione
A-BDSC-COMMESSA RGC-TSC
A-BDSC-SOTTOCOMMESSA "*"
A-BDSC-COSTO-MAT 0
A-BDSC-COSTO-MO 0
A-BDSC-COSTO-ALTRI 0
A-BDSC-MANODOPERA 0
A-BDSC-ID-GANTT A-BDSC-COMMESSA + "*"
A-BDSC-VAL " "
A-BDSC-ID-SINCRO Ultimo id-sincro "ARPBUDSC" + 1
A-BDSC-AGG-APP " "

B.3 Verifica record cancellati Sulla tabella di origine COGTESCM/COGTCMAG non esiste il flag di cancellazione logica. Quindi per esportare l'informazione relativa ai record cancellati si opererà come segue: 1. Scorrere tutti i record di ARPTESCM per l'azienda 2. Ricerca, per ciascuno, del corrispondente record su COGTESCM A questo punto la situazione potrebbe essere la seguente:

COGTESCM
trovato?
A-TSC-VAL Cosa fare
Si "C" Aggiornare ARPTESCM impostando


Si " " Nessuna operazione
No "C" Nessuna operazione
No " " Aggiornare ARPTESCM impostando


B.9 - Aggiornamento id syncro Al termine dell'elaborazione, aggiornare il record APSTATOSYN:

Dato Contenuto
A-SYN-AZIENDA Codice azienda
A-SYN-TABELLA "ARPTESCM"
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

Estratto da documentazione interna ClickUp