Vai al contenuto

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