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:
- Legge LODMPDET per il codice merce
- Se non trovato, crea un nuovo record
- Aggiorna
MPD-LOTTO-OBBLdal valore ricevuto viaRMER-LO-AVA-LOTTO-OBBL - 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: dettaglio — ClickUp 869cr0p4n.
Estratto da documentazione interna ClickUp