SWA036 - Sincronizzazione listini¶
Logica generale Import/export deI listini di vendita tra gestionale e database KPN Nel programma introdurre il concetto del log procedura in cui memorizzare sempre i contatori principali dell'elaborazione: * Merci lette * Merci valide (che superano i controlli) * ARPLISTI inseriti o aggiornati Configurazioni possibili
| Gruppo | Parametro | Note |
|---|---|---|
| areaapp | giorni-esportazione-merci | |
| areaapp | esporta-listino-ultima-vendita |
Elaborazione Se l'operazione è: * "SINCRO": Esecuzione di * A - Importazione aggiornamenti da APP * C - Esportazione listini * "ESPORTA-MERCE": Esecuzione di: * C - Esportazione listini A - Importazione aggiornamenti da APP Fase non attualmente prevista C - Esportazione listini Su POSTGRES, tabella APSTATOSYN, leggere il record relativo alla tabella/oggetto da sincronizzare "ARPLISTI"; se il record non esiste, crearlo impostando
| Dato | Contenuto |
|---|---|
| A_SYN_AZIENDA | Codice azienda |
| A_SYN_TABELLA | "ARPLISTI" |
| A_SYN_DA_GES_DATA | 0 |
| A_SYN_DA_GES_ORA | 0 |
| A_SYN_DA_ID_SINCRO | Prelevare il numero ultimo aggiornamento listino dall'apposita tabella usando COGS25: S25-O-NUM conterrà il valore richiesto NB: questa operazione verrà fatta solo in fase di inserimento, dopodichè diventerà obsoleta |
C.1 - Esportazione aggiornamenti Scansione di COGMERCI. Se SWA036-OPE = 'ESPORTA-MERCE', eseguire la start direttamente su SWA036-MERCE e fermarsi immediatamente dopo l'elaborazione della merce richiesta. Altrimenti le regole di selezione delle merci di cui esportare i listini sono le stesse già usate nell'esportazione merci, ma partendo dalla data/ora specifiche per questa esportazione. NB: in realtà ora vengono esportati sempre i listini di tutte le merci: probabilmente si è adottato questo metodo perchè non abbiamo la sicurezza che MER-DATA-AGG risulti aggiornato sempre; vedi anche Note tecniche per poter implementare invece una ricerca più puntuale. Come prima cosa, si devono caricare in una tabella i listini non cancellati (TLS-VAL <> "C") Filtri aggiuntivi Filtri specifici (SWAFME) Per ciascuna merce/servizio di cui si dovrà effettuare l'elaborazione, si dovrà dovrà effettuare una verifica di esportazione tramite SWAFME - Filtro esportazione merci (programma che verifica se la merce deve essere esportata, in funzione di alcuni filtri specifici per ciascun cliente, quando previsto). Se viene restituito SWAFME-DA-ESPORTARE = "N", allora: - Se l'articolo è già presente sulla tabella di destinazione, si esporterà come "cancellato" (come se avesse MER-VAL = "C") - Se l'articolo non è presente, si salta. Merci cancellate (MER-VAL = "C") Se la merce è cancellata logicamente non si dovrà effettuare l'esportazione C.1.1 - Esportazione listini per una merce Per ciascun listino considerato (lettura iniziale dei listini presenti su COGTESLS), si esegue la ricerca del listino più recente rispetto alla data sistema (eventuali listini con decorrenza superiore vengono scartati). Se il prezzo trovato non è significativo (LNW-PRE = 0) ma non è un prezzo "Forzato a 0", si scarta e si legge il record precedente. Se il record trovato è cancellato logicamente, cercare il precedente. Dopodichè, si cerca il record listino su ARPLISTI:
| Dato | Contenuto |
|---|---|
| RLIS-AZI | Azienda attiva |
| RLIS-MERCE | Merce in elaborazione |
| RLIS-LIS-TIP | LNW-TIP-LIS |
| RLIS-LIS-RIF | LNW-RIF |
Se il record non esiste, o il prezzo trovato RLIS-PREZZO è diverso, si aggiorna il record impostando:
| Dato | Contenuto |
|---|---|
| RLIS-PREZZO | LNW-PRE |
| RLIS-VAL | " " |
| RLIS-ID-SINCRO | Ultimo id sincro listini + 1 |
C.1.1.1 - Listino cancellato Se per la combinazione "merce/listino" non è presente nessun prezzo valido, eseguire la cancellazione logica del record su ARPLISTI impostando:
| Dato | Contenuto |
|---|---|
| RLIS-VAL | "C" |
| RLIS-ID-SINCRO | Ultimo id sincro listini + 1 |
C.1.2 - Ricerca record non aggiornati Ora è necessario cercare tutti i listini per la merce in elaborazione che non sono più esistenti su AREA (quindi di cui non c'è più nessun record valido) Tramite una query, estrarre tutti i record relativi ad un articolo non cancellati logicamente (RLIS-VAL <> "C") Per ciascun record trovato: Ricerca su COGLISNW, se esiste almeno un record non cancellato logicamente per la combinazione merce/listino:
| Dato | Contenuto |
|---|---|
| LNW-MERCE | Merce in elaborazione |
| LNW-TIP-LIS | RLIS-LIS-TIP |
| LNW-RIF | RLIS-LIS-RIF |
Se trovato almeno un record con LNW-VAL = " ", allora il listino è valido. Altrimenti marcare il record come cancellato su ARPLISTI:
| Dato | Contenuto |
|---|---|
| RLIS-VAL | "C" |
| RLIS-ID-SINCRO | Ultimo id sincro listini + 1 |
C.2 - Esportazione listino "ultima vendita" Al termine del giro di scansione di COGMERCI (C.1), se: * La configurazione esporta-listino-ultima-vendita vale "S" * SWA036-OPE <> "ESPORTA-MERCE" eseguire il giro di esportazione del prezzo dell'ultima vendita sul listino "U": * In funzione dei giorni configurati di aggiornamento, già usati nel programma, determinare la data inizio movimenti da estrarre * Scansione su COGTESBO attraverso TES-CHIA2, partendo dalla data inizio movimenti * Leggere la causale del documento TES-CAUSALE; Considerare solo i record con * Causale di uscita (EUTA-CB-FL-EU = "U") * Causale a cliente (EUTA-CB-CLI-FOR = "C") * Causale da fatturare (EUTA-CB-CON-FAT = "SI") * Per ciascun record valido: * Lettura di tutti i movimenti collegati (scansione su COGMOMAG sulla chiave primaria) * Per ciascun record letto leggere il corrispondente record su COGMOAGG * Considerare solo i record con MOA-FL-PROMO <> "P" * Per ciascun record valido, inserire o modificare un record su ARPLISTI:
| Nome campo | Da |
|---|---|
| RLIS-AZI | azienda in elaborazione |
| RLIS_MERCE | MAG-MERCE3 |
| RLIS-LIS-TIP | "U" |
| RLIS-LIS-RIF | MAG-NONNO |
| RLIS-PREZZO | MAG-PREZZO |
| RLIS-ID-SINCRO | "MAX"+1 (come sopra) |
C.3 - Aggiornamento APSTATOSYN Leggere il record relativo alla tabella/oggetto da sincronizzare "ARPLISTI" e aggiornare:
| Dato | Contenuto |
|---|---|
| A_SYN_DA_GES_DATA | Data di elaborazione |
| A_SYN_DA_GES_ORA | 0 |
| A_SYN_DA_ID_SINCRO | Ultimo id sincro memorizzato su ARPLISTI |
Estratto da documentazione interna ClickUp