API Merci
Endpoint disponibili
| Metodo |
Path |
Descrizione |
| GET |
/v1/merce |
Lettura lista merci (filtri: gruppo, sottogruppo, codice, descrizione, paginazione) |
| GET |
/v1/merce/up |
Lettura merci aggiornate a partire da un sync id |
| POST |
/v1/merce |
Inserimento/aggiornamento batch merci |
| POST |
/v1/merce/raggr_sconti |
Inserimento gruppi sconti merci |
Schema output — GET
MerceOutput
| Campo |
Tipo |
Campo DB / Join |
Note |
gruppo |
string |
rmer_gru |
Gruppo merce |
sottogruppo |
string |
rmer_sot |
Sottogruppo merce |
codice |
integer |
rmer_cod |
Codice numerico merce |
descrizione |
string |
rmer_des |
Descrizione merce |
codice_host_iva |
string |
join ARPALIVA |
Codice host aliquota IVA |
unita_misura |
string |
rmer_um |
Unita' di misura |
codice_host_servizio |
string |
join ARPSERVI |
Codice host servizio |
codice_host_settore |
string |
join ARPSETTO |
Codice host settore (famiglia) |
codice_host_sottogruppo |
string |
join ARPSOTGR |
Codice host sottogruppo |
codice_host_brand |
string |
join APCOGBRAND |
Codice host brand/marca |
tossicita |
string |
rmer_tox_new |
Codice tossicita' |
desc_aggiuntive |
string |
rmer_desc_aggiuntive |
Descrizioni aggiuntive (max 2000 char) |
sync |
integer |
rmer_id_sincro |
ID di sincronizzazione |
cancellato |
boolean |
rmer_stato |
true se rmer_stato = 'C' |
codice_host |
string |
rmer_cma |
Codice merce nel sistema host esterno |
categoria_sconti_vendita |
string |
join ARPMERRAG (classe SV) |
ID categoria sconti vendita |
raggruppamento_1 |
string |
rmer_ragr_1 |
Raggruppamento 1 (2 char) |
raggruppamento_2 |
string |
rmer_ragr_2 |
Raggruppamento 2 (2 char) |
raggruppamento_3 |
string |
rmer_ragr_3 |
Raggruppamento 3 (2 char) |
fl_riordino |
string |
rmer_fl_riord |
Flag riordino (1 char) |
prezzo_ua_ufficiale |
number |
rmer_pua_ufficiale |
Prezzo UA ufficiale |
locazioni |
array |
ARPLOCAZIONI (vedi sotto) |
Locazioni di magazzino della merce |
LocazioneOutput (elemento di locazioni[])
| Campo |
Tipo |
Campo DB |
Note |
prog |
integer |
a_lgm_prog |
Progressivo locazione |
box |
string |
a_lgm_box |
Box (1 char) |
corsia |
string |
a_lgm_corsia |
Corsia (2 char) |
colonna |
string |
a_lgm_colonna |
Colonna (2 char) |
piano |
string |
a_lgm_piano |
Piano (2 char) |
Le locazioni sono raccolte con una seconda query su ARPLOCAZIONI filtrata per a_lgm_merce IN (...) con i rmer_cm delle merci ottenute, e raggruppate lato applicazione per associarle alla merce di appartenenza. Ordinamento: a_lgm_merce, a_lgm_prog. Una merce senza locazioni restituisce [].
Query string — GET /
| Parametro |
Tipo |
Obbligatorio |
Note |
limit |
integer |
NO |
Max risultati (default/max: 1000) |
page |
integer |
NO |
Pagina (paginazione offset-based) |
gruppo |
string |
NO |
Filtro per gruppo (match esatto) |
sottogruppo |
string |
NO |
Filtro per sottogruppo (match esatto) |
codice |
integer |
NO |
Filtro per codice (match esatto) |
descrizione |
string |
NO |
Filtro per descrizione (ILIKE %...%) |
Il GET / esclude le merci cancellate (rmer_stato <> 'C').
Query string — GET /up
| Parametro |
Tipo |
Obbligatorio |
Note |
sync |
integer |
SI |
ID sincronizzazione di partenza |
Schema input — POST /v1/merce
| Campo |
Tipo |
Obbligatorio |
Note |
codice_host |
string |
SI |
Codice merce nel sistema host (max 30 char, min 1) |
descrizione |
string |
NO |
Descrizione (max 40 char) |
codice_host_iva |
string |
NO |
Codice host aliquota IVA (max 10 char) |
unita_misura |
string |
NO |
Unita' di misura (max 2 char) |
codice_host_servizio |
string |
NO |
Codice host servizio (max 10 char) |
codice_host_settore |
string |
NO |
Codice host settore (max 10 char) |
codice_host_sottogruppo |
string |
NO |
Codice host sottogruppo (max 10 char) |
codice_host_brand |
string |
NO |
Codice host brand (max 10 char) |
tossicita |
string |
NO |
Codice tossicita' (max 3 char) |
desc_aggiuntive |
string |
NO |
Descrizioni aggiuntive (max 2000 char) |
cancellato |
boolean |
NO |
Cancellazione logica (default false) |
categoria_sconti_vendita |
string |
NO |
Categoria sconti vendita (max 30 char) |
Logica POST — Inserimento/Aggiornamento
Identificazione merce
La chiave di deduplicazione e' codice_host (rmer_cma).
Flusso
- Deduplicazione:
checkDuplicati sul payload
- Ricerca esistente: query su
ARPMERCI per codice_host
- Classificazione:
- Nuovo: merce non esistente → INSERT su
ARPMERCI
- Modificato: confronto dati → UPDATE su
ARPMERCI
- Cancellato:
cancellato = true su una merce esistente → UPDATE con rmer_stato = 'C'
- Codice interno: il codice merce (
rmer_cm) e' composto da gruppo + sottogruppo + codice e viene generato automaticamente con multiCodeGenerator
Tabelle sorgente
ARPMERCI — anagrafica merci (PK: rmer_azi, rmer_gru, rmer_sot, rmer_cod). La chiave merce 9-char rmer_cm (concatenazione gru+sot+cod) e' usata per il legame con ARPLOCAZIONI e altre tabelle.
ARPLOCAZIONI — locazioni di magazzino (PK: a_lgm_azi, a_lgm_merce, a_lgm_prog). a_lgm_merce corrisponde a rmer_cm. Una merce puo' avere zero o piu' locazioni; il flag a_lgm_agg_app e' interno e non viene esposto.
Join (GET)
| Tabella |
Condizione |
Tipo |
Scopo |
ARPSERVI |
rser_azi = rmer_azi AND rser_cod = rmer_serv AND rser_fl_canc <> 'C' |
LEFT |
Codice host servizio |
ARPSETTO |
rfam_azi = rmer_azi AND rfam_serv = rmer_serv AND rfam_cod = rmer_famig ... |
LEFT |
Codice host settore |
ARPSOTGR |
rsgr_azi = rmer_azi AND rsgr_serv = rmer_serv AND rsgr_fam = rmer_famig AND rsgr_cod = rmer_sgr ... |
LEFT |
Codice host sottogruppo |
APCOGBRAND |
a_bra_azi = rmer_azi AND a_bra_cod = rmer_brand AND a_bra_val <> 'C' |
LEFT |
Codice host brand |
ARPALIVA |
rali_azi = rmer_azi AND rali_cod = rmer_cod_iva AND rali_fl_canc <> 'C' |
LEFT |
Codice host IVA |
ARPMERRAG |
a_mrag_azienda = rmer_azi AND a_mrag_merce = rmer_cm AND a_mrag_classe = 'SV' ... |
LEFT |
Categoria sconti vendita |
POST /v1/merce/raggr_sconti
L'endpoint gestisce i raggruppamenti sconti su tabella ARPMERRAG separatamente dall'inserimento merci principale.
Risposta
200 OK
{
"message": "OK"
}
400 Bad Request
Errore di validazione (schema TypeBox).
Note implementative
- Il codice interno della merce (
rmer_cm) e' composto da gruppo + sottogruppo + codice e viene generato automaticamente in inserimento tramite multiCodeGenerator
- Il POST gestisce inserimento, aggiornamento e cancellazione logica in una singola transazione
- La deduplicazione avviene tramite
codice_host (rmer_cma)
- L'endpoint
/raggr_sconti gestisce i raggruppamenti sconti su tabella ARPMERRAG separatamente
- Limite max per risposta: 1000 record