SWN128 - Esportazione ARPSTVEN AreaCap¶
Nome programma SWN128 Linkage section UTILAGPRG - Linkage comune Id processo: 128 Nome processo: ARPSTVEN Logica generale SWN128 : nuovo programma ricavato da SWA008 : 1. Elabora solo se az-consorzi='S' 2. Per esporta tutto l'elaborazione sarà dall'1/1/2010 a data sistema 3. Esportazione 'normale' mantenere la logica attuale ATTENZIONE Le tabelle di origine non sono ottimizzate per poter effettuare un'esportazione efficente. Pero' in questa versione cerco di renderla più performante rispetto alla versione precedente, tenendo conto anche del fatto che ora è presente l'id_sincro sulla tabella ARPSTVEN e anche il flag di cancellazione logica (necessario per rendere l'importazione su APP efficiente). Quindi: * Non si utilizza più il "periodo di esportazione", ma si gira su COGTESAP partendo dall'ultima esportazione * Per ogni documento il giro rimane simile a SWA015: non effettuiamo il confronto campo-campo come viene tipicamente fatto sugli SWN, per evitare la complicazione di dover intercettare le righe documento cancellate. Quindi per ciascun documento si effettua: * Cancellazione logica di tutte le righe * Esportazione delle righe attuali * Documenti cancellati: rimane il punto più critico, che cerco di risolvere implementando un evento di cancellazione ddt su COGEVLOG, e quindi effettuando qui la ricerca dei documenti da cancellare * Contemporaneamente all'esportazione su ARPSTVEN, viene effettuata anche l'esportazione su APCOGTESBO/APCOGMOMAG Configurazioni possibili
| Gruppo | Parametro | Note |
|---|---|---|
| abilita | attiva-areaapp | |
| areaapp | cod-azienda | |
| areaapp | db-conn-string | |
| areaapp | agg-postgres-online | |
| gestbuonip | causale-contanti-1 | |
| gestbuonip | causale-contanti-2 | |
| bint | no-merci-bi0009 | |
| bint | cod-merce-bi0009 | |
| bint | n-mesi-bi0009 |
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: ARPSTVEN Se fallita inviare una Segnalazione critica e chiudere. B - Esportazione informazioni aggiornate * ID SINCRO: gestito * Esportazione differenziale: gestita e ottimizzata * Cancellazione logica: gestita In questa fase si dovrà tenere conto di * Limite record * Limite errori * "Esporta tutto" B.1 - Stato sincronizzazione ARPSTVEN Sulla tabella APSTATOSYN, leggere il record relativo alla tabella/oggetto da sincronizzare "ARPSTVEN"; se il record non esiste, crearlo impostando
| Dato | Contenuto |
|---|---|
| A_SYN_AZIENDA | Codice azienda |
| A_SYN_TABELLA | "ARPSTVEN" |
| 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) * Questa informazione vale anche per l'esportazione su APCOGTESBO/APCOGMOMAG * Prossimo ID sincronizzazione da memorizzare sulla tabella (A_SYN_ID_SINCRO) NB: Per ottimizzare la prima elaborazione, se data/ora ultimo aggiornamento è vuoto verrà forzato con il numero di giorni configurati in "bint"-"n-mesi-bi0009" APCOGTESBO Sulla tabella APSTATOSYN, leggere il record relativo alla tabella/oggetto da sincronizzare "APCOGTESBO"; se il record non esiste, crearlo impostando
| Dato | Contenuto |
|---|---|
| A_SYN_AZIENDA | Codice azienda |
| A_SYN_TABELLA | "APCOGTESBO" |
| A_SYN_DA_GES_DATA | 0 |
| A_SYN_DA_GES_ORA | 0 |
| A_SYN_DA_ID_SINCRO | 1 |
| A-SYN-VERSIONE | 2 |
Qui otterremo solo il p.rossimo ID sincronizzazione da memorizzare sulla tabella (A_SYN_ID_SINCRO) Data/ora prossimo aggiornamento sono gli stessi di ARPSTVEN (in fase di aggiornamento comunque li aggiorneremo anche qui) B.2 - Ricerca record da esportare B.2.1 Ricerca record da esportare
| Tipo di elaborazione | Condizione | Cosa fare |
|---|---|---|
| Singolo record | AGPRG-KEY <> " " (tes-chia3) |
Si legge direttamente il documento da aggiornare su COGTESBO 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 COGTESBO; ogni record va considerato |
| Esportazione standard | Si scorrono tutti i record di COGTESAP, usando la chiave TSA-CHIA3, partendo da A-SYN-DA-GES-DATA+A-SYN-DA-GES-ORA | |
| Pulizia | AGPRG-OPE = "PULIZIA" | Non prevista |
Ciascun record letto corrisponde ad un documento; B.2.1.1 Controlli documento ARPSTVEN Il documento viene considerato se: * La causale del documento è da fatturare * Per K-PERSONAL-SGARBI considero anche le causali configurate causale-contanti-1 e causale-contanti-2 * Il documento è intestato a un cliente (TES-TIPOCF = 'C') APCOGTESBO/APCOGMOMAG Tutti i documenti vengono considerati B.2.2 Documento valido B.2.2.1 Cancellazione logica righe ARPSTVEN Effettuare la cancellazione logica delle righe presenti su ARPSTVEN, effettuando la selezione delle righe tramite una query: SELECT * FROM arpstven WHERE arpsve-azi = azienda AND arpsve-key-maga = tes-chia3 "con separatori" AND SET arpsve_fl_canc <> 'C' Per ciascun movimento trovato effettuare la cancellazione logica:
| Nome campo | Note |
|---|---|
| ARPSVE_ID_SINCRO | Id sincro progressivo |
| ARPSVE_FL_CANC | "C" |
APCOGTESBO/APCOGMOMAG Effettuare la cancellazione fisica delle righe presenti su APCOGMOMAG tramite una query: DELETE FROM APCOGMOMAG WHERE a-mag-azi = azienda AND a-mag-mag = tes-mag AND a-mag-ann = tes-anno AND a-mag-tip = tes-tipob AND a-mag-num = tes-bolla3 B.2.2.2 Esportazione testata documento ARPSTVEN Non previsto APCOGTESBO/APCOGMOMAG Verifichiamo se il documento inserito/aggiornato è già stato esportato, con una ricerca diretta su APCOGTESBO, usando A_TES_CHIA1, impostando:
| Nome campo | Contenuto |
|---|---|
| A_TES_AZIENDA | azienda in elaborazione |
| A_TES_MAG | TES-CHIA3 |
| A_TES_ANN | |
| A_TES_TIP | |
| A_TES_NUM |
Se il record esiste dovrà essere aggiornato, altrimenti inserito; in ogni caso i campi da aggiornare sono gli stessi:
| Dato | Descrizione |
|---|---|
| A_TES_AZIENDA | Codice azienda |
| A_TES_MAG | TSA-CHIA1 |
| A_TES_ANN | |
| A_TES_TIP | |
| A_TES_NUM | |
| A_TES_ANA_NONNO | TES-NONNO |
| A_TES_ANA_PADRE | TES-PADRE |
| A_TES_RIFLISTINO | TES-RIFLISTINO |
| A_TES_CAUSALE | TES-CAUSALE |
| A_TES_DATA | TES-DATA |
| A_TES_RAGGR | TES-RAGGRUPP |
| A_TES_PAG | TES-PAG1 |
| A_TES_RB | TES-RB |
| A_TES_CURRENCY | TES-CURRENCY |
| A_TES_IMP_PAGATO | 0 |
| A_TES_FL_CREA_FAT | "N" |
| A_TES_FATTURA_SPEDITA | "N" |
| A_TES_NOME_FATTURA | " " |
| A_TES_FL_CANC | " " |
| A_TES_ID_SINCRO | Nuovo id di sincronizzazione |
| A_TES_AGG_APP | "N" |
B.2.2.3 Ricerca movimenti su COGMOMAG Per il documento in esame si ricercano i movimenti su COGMOMAG ARPSTVEN Per ciascun movimento effettuare la ricerca su ARPSTVEN, e l'eventuale inserimento o aggiornamento:
| Nome campo | Note |
|---|---|
| ARPSVE_AZI | Codice azienda |
| ARPSVE_KEY_FATTU | Chiave fattura eventualmente collegata al documento, nel formato "CL/2022/0012345", altrimenti vuoto |
| ARPSVE_KEY_MAGA | Chiave bolla nel formato "1/2022/I/000123" |
| ARPSVE_MAG_PROG | MAG-PROG |
| ARPSVE_CAGE | TES-MAG |
| ARPSVE_CLI | Cliente (es. "C00123") |
| ARPSVE_DATA | TES-DATA |
| ARPSVE_DATA_AGG | Data sistema |
| ARPSVE_SERVIZIO | MAP-REPARTO |
| ARPSVE_DIVISIONE | " " |
| ARPSVE_LINEA | " " |
| ARPSVE_MERCE | MAG-MERCE3 |
| ARPSVE_QTA | Quantità movimento, se previsto dal tipo statistico dell'anagrafica merci (MA2-TIPO-STAT) |
| ARPSVE_IMP_VEN | MAG-VALORE |
| ARPSVE_IMP_ACQ | MAG-QTAMAGAZ * MER-PMA |
| ARPSVE_DATA_BOLLA | TES-DATA |
| ARPSVE_TRASP_AGE | '0 |
| ARPSVE_OMAGGIO | " " |
| ARPSVE_PREZZO | MAG-PREZZO |
| ARPSVE_PREZZO_NO_SCONT | MAG-PRE-NO-SCO |
| ARPSVE_PREZZO_LISTINO | Il prezzo di listino della merce alla data |
| ARPSVE_SCONTO | MAG-SCO-1 |
| ARPSVE_PREZZO_MEDIO_ACQ | MER-PMA |
| ARPSVE_ID_SINCRO | Id sincro progressivo |
| ARPSVE_FL_CANC | " " |
APCOGTESBO/APCOGMOMAG Per ciascun movimento effettuare l'inserimento su APCOGMOMAG
| Dato | Descrizione |
|---|---|
| A_MAG_AZIENDA | Codice azienda |
| A_MAG_MAG | MAG-CHIAP |
| A_MAG_ANN | |
| A_MAG_TIP | |
| A_MAG_NUM | |
| A_MAG_PROG | |
| A_MAG_MERCE | MAG-MERCE3 |
| A_MAG_SEGNO | MAG-ENTRUSC |
| A_MAG_UM | MER-UM |
| A_MAG_QTA | MAG-QTAMAGAZ |
| A_MAG_PRE_LOR | MAG-PRE-NO-SCO |
| A_MAG_SCO_1 | MAG-SCO-1 |
| A_MAG_SCO_2 | MAG-SCO-1 |
| A_MAG_PRE_NET | MAG-PREZZO |
| A_MAG_VALORE | MAG-VALORE |
| A_MAG_COLLI | MAG-COLLI |
| A_MAG_FL_PROMO | " " |
| A_MAG_LOTTO_ESTERNO | " " |
| A_MAG_IVA | MAG-ALF |
B.2.2.3 Ricerca movimenti su COGCONTR ARPSTVEN Questa parte si esegue solo se la configurazione merci-bi0009 vale "S", e se la configurazione cod-merce-bi0009 è significativa Per il documento in esame si ricercano i movimenti su COGCONTR Per ciascun movimento effettuare la ricerca su ARPSTVEN, e l'eventuale inserimento o aggiornamento:
| Nome campo | Note |
|---|---|
| ARPSVE_AZI | Codice azienda |
| ARPSVE_KEY_FATTU | Chiave fattura eventualmente collegata al documento, nel formato "CL/2022/0012345", altrimenti vuoto |
| ARPSVE_KEY_MAGA | Chiave bolla nel formato "1/2022/I/000123" |
| ARPSVE_MAG_PROG | CON-PROG |
| ARPSVE_CAGE | TES-MAG |
| ARPSVE_CLI | Cliente (es. "C00123") |
| ARPSVE_DATA | TES-DATA |
| ARPSVE_DATA_AGG | Data sistema |
| ARPSVE_SERVIZIO | " " |
| ARPSVE_DIVISIONE | " " |
| ARPSVE_LINEA | " " |
| ARPSVE_MERCE | La merce configurata in cod-merce-bi0009 |
| ARPSVE_QTA | Quantità movimento CON-QTA |
| ARPSVE_IMP_VEN | CON-VALORE |
| ARPSVE_IMP_ACQ | CON-QTA * MER-PMA |
| ARPSVE_DATA_BOLLA | TES-DATA |
| ARPSVE_TRASP_AGE | '0 |
| ARPSVE_OMAGGIO | " " |
| ARPSVE_PREZZO | CON-PREZZO |
| ARPSVE_PREZZO_NO_SCONT | CON-PREZZO |
| ARPSVE_PREZZO_LISTINO | CON-PREZZO |
| ARPSVE_SCONTO | 0 |
| ARPSVE_PREZZO_MEDIO_ACQ | 0 |
| ARPSVE_ID_SINCRO | Id sincro progressivo |
| ARPSVE_FL_CANC | " " |
APCOGTESBO/APCOGMOMAG Non previsto B.3 - Ricerca documenti cancellati Scorrere COGEVLOG per gli eventi di tipo k-evl-canc-cogtesbo (vedi SWN117) Per ciascun record esistente: ARPSTVEN * Controllare se il documento è ancora esistente su COGTESBO (potrebbe essere stato ricreato nel frattempo) * Se non esiste, effettuare il ciclo di cancellazione logica di tutti i movimenti, come al punto B.2.2.1 APCOGTESBO/APCOGMOMAG * Controllare se il documento è ancora esistente su COGTESBO (potrebbe essere stato ricreato nel frattempo) * Se non esiste, effettuare la cancellazione logica su APCOGTESBO
| Nome campo | Contenuto |
|---|---|
| A_TES_FL_CANC | "C" |
| A_TES_ID_SINCRO | Nuovo ID sincro progressivo |
| A_TES_AGG_APP | "N" |
Al termine cancellare il record di COGEVLOG B.9 - Aggiornamento id syncro ARPSTVEN aggiornare il record APSTATOSYN:
| Dato | Contenuto |
|---|---|
| A-SYN-AZIENDA | Codice azienda |
| A-SYN-TABELLA | "ARPSTVEN" |
| A-SYN-DA-GES-DATA | Data/ora dell'ultimo record aggiornato |
| A-SYN-DA-GES-ORA | |
| A-SYN-DA-ID-SINCRO | Ultimo id sincro "ARPSTVEN" + 1 |
| A-SYN-VERSIONE | 2 |
APCOGTESBO/APCOGMOMAG aggiornare il record APSTATOSYN:
| Dato | Contenuto |
|---|---|
| A-SYN-AZIENDA | Codice azienda |
| A-SYN-TABELLA | "APCOGTESBO" |
| A-SYN-DA-GES-DATA | Data/ora memorizzata anche sul record precedente |
| A-SYN-DA-GES-ORA | |
| A-SYN-DA-ID-SINCRO | Ultimo id sincro "APCOGMOMAG" + 1 |
| A-SYN-VERSIONE | 2 |
Keyword index No index entries found.
Estratto da documentazione interna ClickUp