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