SWA035 - Sincronizzazione merci/prestazioni¶
Logica generale Import/export delle anagrafiche materiali/prestazioni 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) * ARPMERCI inseriti o aggiornati * ARPMESER inseriti o aggiornati * Esportazione promozioni su ARPGRUPPISCONTO/ARPSCONTI NO OBSOLETA !! Configurazioni possibili
| Gruppo | Parametro | Note |
|---|---|---|
| areaapp | giorni-esportazione-merci | |
| sistmerava | tab-cma-aziende-gruppo | |
| sistmerava | tab-cma-brand | |
| sistmerava | tab-cma-cli-fat | |
| ecommerce | shop-attivo | |
| merci | classe-categoria |
Elaborazione Se l'operazione è: * "SINCRO": Esecuzione di * A - Importazione aggiornamenti da APP * C - Esportazione articoli * "ESPORTA-MERCE": Esecuzione di: * C - Esportazione articoli A - Importazione aggiornamenti da APP Tramite una query estrazione di tutte le merci aggiornate da APP (RMER-AGG-APP = "A") NB: per ora è possibile solo effettuare aggiornamenti ad articoli esistenti. Per ciascun articolo aggiornato i campi che attualmente è possibile modificare lato web sono: * RMER-NOTE-TECNICHE * RMER-UM * RMER-SOGLIA-MIN-VENDITA * RMER-MAGG-MIN-VENDITA * RMER-CONFEZIONE * RMER-EVIDENZA * RMER-DESC-AGGIUNTIVE Al termine dell'aggiornamento di ciascun record impostare RMER-AGG-APP = ' ' A.1 - Modifica COGMERCI
| Dato | Contenuto |
|---|---|
| MER-UM | RMER-UM |
| MER-CONFEZIONE | RMER-CONFEZIONE |
A.2 - Modifica COGMERA3
| Dato | Contenuto |
|---|---|
| MA3-SOGLIA-MIN-VENDITA | RMER-SOGLIA-MIN-VENDITA |
| MA3-MAGG-MIN-VENDITA | RMER-MAGG-MIN-VENDITA |
| MA3-EVIDENZA | RMER-EVIDENZA |
A.3 - Modifica COGMERNT Inserire o aggiornare il record di COGMERNT avente:
| Nome campo | Contenuto |
|---|---|
| MNT-MERCE | Codice merce |
| MNT-TIP | "TC" |
| MNT-PROG | 1 |
A.4 - Modifica COGDESAG Aggiornare COGDESAG per la merce partendo da RMER-DESC-AGGIUNTIVA, come viene fatto in COGS02 A.5 - Modifica COGDESCR Inserire o aggiornare il record di COGDESCR avente:
| Nome campo | Contenuto |
|---|---|
| CDE-TIP | "M1" |
| CDE-COD | MER-CHIA |
| CDE-PRO | 0 |
Impostare:
| Nome campo | Contenuto |
|---|---|
| CDE-DES | RMER-DES-WEB (*) |
(*) Eseguire il parsing con GESSTR C - Esportazione articoli C.1 - Pulizia merci cancellate Si cancellano da ARPMERCI le merci che risultano cancellate, attraverso la lettura dell'evento specifico su COGEVLOG: * Scansione di COGEVLOG per tutti gli eventi di tipo K-EVL-CANC-MERCI non ancora visti (EVL-VISTO = "N"); per ciascuna merce: * Si esegue la cancellazione logica del record ARPMERCI * RMER-STATO = "C" * Si aggiorna il record evento impostando EVL-VISTO = "S" C.2 - Esportazione articoli Su POSTGRES, tabella APSTATOSYN, leggere il record relativo alla tabella/oggetto da sincronizzare "ARPMERCI"; se il record non esiste, crearlo impostando
| Dato | Contenuto |
|---|---|
| A_SYN_AZIENDA | Codice azienda |
| A_SYN_TABELLA | "ARPMERCI" |
| A_SYN_DA_GES_DATA | 0 |
| A_SYN_DA_GES_ORA | 0 |
| A_SYN_DA_ID_SINCRO | Prelevare il numero ultimo aggiornamento merci 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 |
Qui otterremo la data aggiornamento dell'ultima anagrafica merce esportata. Su POSTGRES, tabella APSTATOSYN, leggere il record relativo alla tabella/oggetto da sincronizzare "ARPMESER"; se il record non esiste, crearlo impostando
| Dato | Contenuto |
|---|---|
| A_SYN_AZIENDA | Codice azienda |
| A_SYN_TABELLA | "ARPMESER" |
| A_SYN_DA_GES_DATA | 0 |
| A_SYN_DA_GES_ORA | 0 |
| A_SYN_DA_ID_SINCRO | Prelevare il numero ultimo aggiornamento merci 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.2.1 - Pulizia iniziale Non eseguire se SWA035-OPE = 'ESPORTA-MERCE'. Se è configurata l'esportazione di tutte le merci (configurazione giorni-esportazione-merci = 9999). Cancellazione di tutti i record di * ARPMERCI * ARPMERRAG * ARPLOCAZIONI * ARPBARCO per l'azienda attiva usando un comando SQL C.2.2 - Esportazione aggiornamenti Scansione di COGMERCI. Se SWA035-OPE = 'ESPORTA-MERCE', eseguire la start direttamente su SWA035-MERCE e fermarsi immediatamente dopo l'elaborazione della merce richiesta. C.2.2.1 - Controlli Per ciascun record, saranno effettuati i seguenti controlli: * Se siamo in ambiente CAP e il numero di giorni configurato è 9999 * L'articolo deve essere in almeno un movimento magazzino * Se siamo in ambiente CAP e l'articolo fa parte del gruppo merce "Ricambi" sarà scartato Arrivati a questo punto, se non è configurata l'esportazione di tutte le merci (configurazione giorni-esportazione-merci = 9999), scartare la merce se ha MER-DATA-AGG < A_SYN_DA_GES_DATA. Filtri aggiuntivi 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. Note sull'esportazione di merci/servizi cancellati Quando si esporta un articolo su ARPMERCI/ARPMESER, il cui stato è "C", l'esportazione delle tabelle collegate dovrà marcare lo stato di cancellato "C" anche su di esse, quando è previsto il dato. Quindi se la merce ha MER-CLASSE: * "S": C.2.2.1.1 - Esportazione servizio * "M": C.2.2.1.2 - Esportazione articolo C.2.2.1.1 - Esportazione servizio Inserimento/aggiornamento ARPMESER
| Dato | Contenuto |
|---|---|
| RMERS-AZI | Azienda attiva |
| RMERS_GRU | Merce in elaborazione |
| RMERS_SOT | |
| RMERS_COD | |
| RMERS-CMA | RCM-COD-AVA |
| RMERS-DES | Per ora qui viene esportato il contenuto di MER-DESCR |
| RMERS-EAN | MER-EAN |
| RMERS-FL-SN | MER-FL-SN |
| RMERS-DATA-AGG | |
| RMERS-STATO | MER-VAL |
| RMERS-ID-SINCRO | Ultimo id sincro "ARPMERCI" |
| RMERS-COD-IVA | MER-CODIVA |
| RMERS_UM | MER-UM |
| RMERS_SERV | Dati specifici CAP |
| RMERS_FAMIG | |
| RMERS_SGR | |
| RMERS_TOX_NEW | |
| RMERS-ART62 | MA2-COD-PAG-A62 |
| RMERS-CM | Merce in elaborazione (codice interno in un campo unico) |
| RMERS-PESO | MER-PESO |
| RMERS-RTM-CLI-FAT | Cercato su COGRACMT, usando la tabella configurata in tab-cma-cli-fat |
| RMERS-RTM-BRAND | Cercato su COGRACMT, usando la tabella configurata in tab-cma-brand |
| RMERS-RTM-GRP-AZ | Cercato su COGRACMT, usando la tabella configurata in tab-cma-aziende-gruppo |
Controllo esistenza su ARPMERCI Se lo stesso articolo appena esportato su ARPMESER esiste anche su ARPMERCI significa che è stata cambiata la classe. In questo caso effettuare la cancellazione logica su ARPMERCI (RMER-STATO = "C") aggiornando anche l'id sincro, aggiungendo sul log di procedura una registrazione di questo evento: "Servizio codice_merce cancellato da tabella merci". C.2.2.1.2 - Esportazione articolo Se gestione consorzi: * Esportazione listini CAP Inserimento/aggiornamento ARPMERCI
| Dato | Contenuto |
|---|---|
| RMER-AZI | Azienda attiva |
| RMER_CODICE | Merce in elaborazione |
| RMER-CMA | RCM-COD-AVA |
| RMER-DES | Per ora qui viene esportato il contenuto di MER-DESCR |
| RMER-EAN | MER-EAN |
| RMER-FL-SN | MER-FL-SN |
| RMER-STATO | MER-VAL |
| RMER-ID-SINCRO | Ultimo id sincro "ARPMERCI" |
| RMER-COD-IVA | MER-CODIVA |
| RMER_UM | MER-UM |
| RMER_SERV | Dati specifici CAP |
| RMER_FAMIG | |
| RMER_SGR | |
| RMER_TOX_NEW | |
| RMER-ART62 | MA2-COD-PAG-A62 |
| RMER-CM | Merce in elaborazione (codice interno in un campo unico) |
| RMER-PESO | MER-PESO |
| RMER-DATA-INS-HOST | MA3-DATA-INS-HOST |
| RMER-PEZZI-X-UM | MA3-PEZZI-X-UM |
| RMER-SOGLIA-MIN-VENDITA | MA3-SOGLIA-MIN-VENDITA |
| RMER-MAGG-MIN-VENDITA | MA3-MAGG-MIN-VENDITA |
| RMER-QUALITA | MA3-QUALITA |
| RMER-EVIDENZA | MA3-EVIDENZA |
| RMER_NOTE_TECNICHE | Note tecniche commerciali recuperate da COGMERNT impostando: |
| Nome campo | Contenuto |
|---|---|
| MNT-MERCE | Codice merce |
| MNT-TIP | "TC" |
| MNT-PROG |
1 | | | --- |
Campi da COGRACMT Per ciascuno dei campi da prelevare da COGRACMT, ricerca usando RTM-CHIA2, impostando: * RTM-MERCE = merce in elaborazione * RTM-TAB-TIP = tabella configurata La ricerca va effettuata solo se la configurazione è significativa. Altrimenti il valore risultante deve essere vuoto. Controllo esistenza su ARPMESER Se lo stesso articolo appena esportato su ARPMERCI esiste anche su ARPMESER significa che è stata cambiata la classe. In questo caso effettuare la cancellazione logica su ARPMESER(RMERS-STATO = "C") aggiornando anche l'id sincro, aggiungendo sul log di procedura una registrazione di questo evento: "Merce codice_merce cancellata da tabella servizi". C.2.2.1.2.1 - Casi particolari per Pieri (AZ-PERSONAL = k-personal-pieri)
| Caso | Descrizione | Operazione |
|---|---|---|
| RMER-STATO-OPERATIVO = "0005" o "0006" | Merce fuori catalogo -> Forziamo "Catalogo = "N" | RMER-CATALOGO = "N" |
Esportazione locazioni Tramite una query eseguire una pulizia dei record su ARPLOCAZIONI collegati alla merce: DELETE * FROM arplocazioni WHERE a_lgm_azi = azienda AND a_lgm_merce = merce Dopodichè scorrere COGLGMER per tutti i record della merce ed esportarli su ARPLOCAZIONI:
| Dato | Contenuto |
|---|---|
| A-LGM-AZI | Id azienda |
| A-LGM-MERCE | LGM-MERCE |
| A-LGM-PROG | LGM-PROG |
| A-LGM-BOX | LGM-BOX |
| A-LGM-CORSIA | LGM-CORSIA |
| A-LGM-COLONNA | LGM-COLONNA |
| A-LGM-PIANO | LGM-PIANO |
C.2.2.3 - Esportazione raggruppamenti gerarchici Tramite una query eseguire una pulizia dei record su ARPMERRAG collegati alla merce: Se lo shop è attivo deve essere esclusa la categoria merceologica usata sullo shop, identificata dalla configurazione classe-categoria; quindi: C.2.2.3.1 - Cancellazione Se shop-attivo vale: * "N": "DELETE * FROM arpmerrag WHERE a_mrag_azi = azienda AND a_mrag_merce = merce" * "S": "DELETE * FROM arpmerrag WHERE a_mrag_azi = azienda AND a_mrag_merce = merce AND a_mrag_classe <> classe-categoria_"_ C.2.2.3.2 - Esportazione Dopodichè scorrere COGANRAG usando ARAG-CHIA3 per tutti i record della merce
| Dato | Contenuto |
|---|---|
| ARAG-TIP | "M" |
| ARAG-ID | merce in elaborazione |
ed esportarli su ARPMERRAG:
| Dato | Contenuto |
|---|---|
| A_MRAG_AZIENDA | Id azienda |
| A_MRAG_MERCE | Merce in elaborazione |
| A_MRAG_CLASSE | ARAG-CLASSE |
| A_MRAG_ID | ARAG-ID-PADRE |
| A_MRAG_AGG_APP | " " |
| A_MRAG_FL_CANC | " " |
Se la configurazione shop-attivo vale "S" escludere anche ora i record con arag_classe = classe-categoria C.2.2.4 - Esportazione barcode aggiuntivi Tramite una query eseguire una pulizia dei record su ARPBARCO collegati alla merce: DELETE * FROM arpbarco WHERE a_bco_azi = azienda AND a_bco_merce = merce Dopodichè scorrere COGBARCO per tutti i record della merce (BCO-CHIA1) ed esportarli su ARPBARCO:
| Dato | Contenuto |
|---|---|
| A_BCO_AZIENDA | Id azienda |
| A_BCO_MERCE | LGM-MERCE |
| A_BCO_ID_DISPOSITIVO | 0 |
| A_BCO_IDD_PROG | Numero progressivo all'interno della merce |
| A_BCO_BARCODE | BCO-EAN |
| A_BCO_AGG_APP | " " |
| A_BCO_FL_CANC | " " |
C.2.2.5 - Esportazione promozione NO OBSOLETA !! La promozione attualmente è gestita direttamente su COGMERAP, in alcuni campi dedicati; quindi, se MAP-PRE-IMP o MAP-SCO : * sono significativi: la promozione esiste * non sono significativi: la promozione non esiste Leggere quindi il record promozione su ARPGRUPPISCONTO:
| A_GST_AZIENDA | Codice azienda |
|---|---|
| A_GST_TIPO | "P" |
| A_GST_GRUPPO | Il codice merce |
Leggere anche il record corrispondente ARPSCONTI:
| A_SCC_AZIENDA | x(06) | Codice azienda |
|---|---|---|
| A_SCC_TIPO_GRUPPO | x(02) | "P" |
| A_SCC_GRUPPO | x(10) | Il codice merce |
| A_SCC_TIPO_DETTAGLIO | x(01) | "M" |
| A_SCC_CLASSE_RAGGR | x(02) | " " |
| A_SCC_DETTAGLIO | x(30) | Il codice merce |
C.2.2.5.1 - La promozione esiste Creare o aggiornare ARPGRUPPISCONTO impostando
| A_GST_DES | "Promozione su merce" |
|---|---|
| A_GST_DATA_DA | MAP-DATA-INI |
| A_GST_DATA_A | MAP-DATA-FIN |
| A_GST_ID_SINCRO | Id di sincronizzazione |
| A_GST_FL_CANC | " " |
Creare o aggiornare ARPSCONTI impostando
| A_SCC_PREZZO | num(12+6) | MAP-PRE-IMP |
|---|---|---|
| A_SCC_SCONTO1 | num(3+2) signed | MAP-SCO |
C.2.2.5.2 - La promozione non esiste Se ARPGRUPPISCONTO esiste, aggiornarlo impostando
| A_GST_FL_CANC | "C" |
|---|---|
Altrimenti , se non esiste, non fare nulla C.2.4 - Aggiornamento APSTATOSYN Leggere il record relativo alla tabella/oggetto da sincronizzare "ARPMERCI" 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 ARPMERCI |
Leggere il record relativo alla tabella/oggetto da sincronizzare "ARPMESER" 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 ARPMESER.
Estratto da documentazione interna ClickUp