Vai al contenuto

SWA059 - Esportazione testata commesse

Logica generale Esportazione della tabella "testata commesse" tra gestionale e database KPN Al momento è previsto solo l'esportazione da gestionale 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. Configurazioni possibili

Gruppo Parametro Note

Elaborazione A - Esportazione tipi contratto aggiornati Su POSTGRES, tabella APSTATOSYN, leggere il record relativo alla tabella/oggetto da sincronizzare "ARPTESCM"; se il record non esiste, crearlo impostando

Dato Contenuto
A_SYN_AZIENDA Codice azienda
A_SYN_TABELLA "ARPTESCM"
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) Ripetere la lettura anche per A_SYN_TABELLA="ARPBUDSC": è necessario gestire un id sincronizzazione anche per questa tabella Ricerca record da esportare * Scorrere COGTCMAG; per ciascun record letto considerare solo quelli dove TSCA-DA-DATA+TSCA-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 A.1.1 - Esportazione testata * 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 " "
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. A.1.2 - 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

A.1.2.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 " "

A.1.2.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) A.1.3 - 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 " "

A.1.4 - 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 " "

A.2 - Identificazione dei record cancellati Per il momento ignoriamo la gestione delle commesse cancellate: il giro di ricerca potrebbe essere molto lento, e per il momento non lo gestiamo. B Aggiornamento id syncro contratto 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 aggiornato

Estratto da documentazione interna ClickUp