Vai al contenuto

SWN105 - Merci/servizi

:1nNome programma SWN105 Linkage section UTILAGPRG - Linkage comune Id processo: 105 Nome processo: MERCI Tabelle principali gestite

AREA AREAGATE Direzione
COGMERCI
COGANRAG
COGLGMER
COGBARCO
LODMPDET
ARPMERCI
ARPMESER
ARPMERRAG
ARPLOCAZIONI
ARPBARCO
------>
<------

Logica generale Sincronizzazione dell'anagrafica merci/prestazioni Esportazione Esportazione di tutti i record effettivamente modificati (con dati variati). Importazione E' prevista solo l'importazione di alcuni campi specifici, e solo in modifica di una merce esistente. NB: questo processo non è stato ottimizzato: la parte elaborativa è identica a quella presente nel precedente SWA035 Se ci sarà tempo in futuro proveremo ad ottimizzarlo. A causa di questo, in ambienti come Pieri dove ci sono 280.000 record, l'elaborazione potrebbe risultare molto lenta e segnalare l'istanza come "bloccata". Quindi faremo in modo di aggiornare il keepalive anche qui Configurazioni possibili

Gruppo Parametro Note
abilita attiva-areaapp
areaapp cod-azienda
areaapp db-conn-string
areaapp agg-postgres-online
areaapp giorni-esportazione-merci
sistmerava tab-cma-aziende-gruppo
sistmerava tab-cma-brand
sistmerava tab-cma-cli-fat
ecommerce shop-attivo
merci classe-categoria
(azienda) az-ges-lo Gestione lotti/ubicazione — se "S" apre LODMPDET
prntdocusc stampa-dag-merce Se "S", disabilita l'importazione delle descrizioni aggiuntive (COGDESAG)

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: ARPMERCI Se fallita inviare una Segnalazione critica e chiudere. C - Importazione aggiornamenti 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 = ' ' C.1 - Modifica COGMERCI

Dato Contenuto
MER-UM RMER-UM
MER-CONFEZIONE RMER-CONFEZIONE

C.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

C.3 - Modifica COGMERNT Inserire o aggiornare il record di COGMERNT avente:

Nome campo Contenuto
MNT-MERCE Codice merce
MNT-TIP "TC"
MNT-PROG 1

C.4 - Modifica COGDESAG Aggiornare COGDESAG per la merce partendo da RMER-DESC-AGGIUNTIVA, come viene fatto in COGS02 C.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 B - Esportazione informazioni aggiornate * ID SINCRO: gestito * Esportazione differenziale: gestita e non ottimizzata * Cancellazione logica: gestita In questa fase si dovrà tenere conto di * Limite record * Limite errori * "Esporta tutto"

Tipo di elaborazione Condizione Cosa fare
Singolo record AGPRG-KEY <> " " Si legge direttamente la merce da aggiornare su COGMERCI
Verrà eseguita se agg-postgres-online è attiva
Se viene sincronizzato un record cancellato, verrà effettuata la cancellazione logica
Esportazione totale AGPRG-ESPORTA-TUTTO = "S" Vedi il punto B.2
Esportazione standard Vedi il punto B.2

B - Esportazione articoli B.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" B.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 1
A-SYN-VERSIONE 2

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 1
A-SYN-VERSIONE 2

B.2.2 - Esportazione aggiornamenti Scansione di COGMERCI. Se AGPRG-KEY è significativo eseguire la start direttamente sulla chiave merce presente e fermarsi immediatamente dopo l'elaborazione della merce richiesta. B.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": B.2.2.1.1 - Esportazione servizio * "M": B.2.2.1.2 - Esportazione articolo B.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
RMERS-FL-MANODOPERA MA3-FL-MANODOPERA

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". B.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-FL-MANODOPERA MA3-FL-MANODOPERA
RMER-DATA-ARRIVO MA3-DATA-ARRIVO (data prevista di arrivo merce)
RMER-LO-AVA-LOTTO-OBBL MPD-LOTTO-OBBL (da LODMPDET, se az-ges-lo = "S")
RMER_NOTE_TECNICHE Note tecniche commerciali recuperate da COGMERNT impostando:
Nome campo Contenuto
MNT-MERCE
Codice merce
MNT-TIP
"TC"
MNT-PROG
1
Nome campo Contenuto
DAG-R-M "M"
DAG-MERCE Il codice merce
Nome campo Contenuto
MLK-TIP "ML"
MLK-MERCE1
Il codice merce

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". B.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

A.5 - Modifica LODMPDET (aggiornamento 24/04/2025)

Condizionato a az-ges-lo = "S" (gestione lotti attiva). Per ogni merce importata da APP:

  1. Legge LODMPDET per il codice merce
  2. Se non trovato, crea un nuovo record
  3. Aggiorna MPD-LOTTO-OBBL dal valore ricevuto via RMER-LO-AVA-LOTTO-OBBL
  4. Riscrive il record

Questo permette la sincronizzazione del flag "lotto obbligatorio" dal web verso il gestionale.

B.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: B.2.2.3.1 - Cancellazione Se shop-attivo vale: * "N": "UPDATE arpmerrag SET a_mrag_fl_canc = 'C' WHERE a_mrag_azi = azienda AND a_mrag_merce = merce" * "S": "UPDATE arpmerrag SET a_mrag_fl_canc = 'C' WHERE a_mrag_azi = azienda AND a_mrag_merce = merce AND a_mrag_classe <> classe-categoria_"_ B.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 " "

tenendo conto che i record potrebbero essere già esistenti. Se la configurazione shop-attivo vale "S" escludere anche ora i record con arag_classe = classe-categoria B.2.2.4 - Esportazione barcode aggiuntivi Tramite una query eseguire una pulizia dei record su ARPBARCO collegati alla merce: "UPDATE arpbarco SET a_bco_fl_canc = 'C' 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 " "

B.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
A-SYN-VERSIONE 2

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
A-SYN-VERSIONE 2

Storico modifiche recenti

Data Tag Descrizione
16/03/2026 TASK-2851 Aggiunto giro di importazione barcode (ARPBARCO) anche al termine dell'esportazione, nel caso in cui l'importazione sia disabilitata. Aggiunta pulizia tabella con cancellazione logica di ARPMERCI e ARPMESER per i record non piu' presenti sul gestionale. Nuova configurazione PRNTDOCUSC/STAMPA-DAG-MERCE: se vale "S", disabilita l'importazione delle descrizioni aggiuntive (COGDESAG).

Casistica problemi noti

Tempi di esecuzione fuori controllo, AGLANCIO segnala l'istanza come bloccata

  • Sintomo: SWN105 impiega ore a completare (~3h e 7m osservate); AGLANCIO supera la soglia di keepalive e marca l'istanza come bloccata, sospendendo i processi successivi.
  • Causa: ambienti con rilascio antecedente all'ottimizzazione di SWN105 del 08/10/2025. La versione precedente non sfruttava il timestamp di ultima modifica di COGMERA2 e procedeva con scan completi.
  • Correzione: rilasciare la versione corrente sull'ambiente del cliente; verificare anche che nel pannello AGLANCIO non sia attivo "Esporta tutto" per il cliente.
  • Riferimento: dettaglioClickUp 869cr0p4n.

Estratto da documentazione interna ClickUp