Distinte Base¶
Endpoint disponibili¶
| Metodo | Path | Descrizione |
|---|---|---|
| GET | /v1/distinta-base |
Lettura distinte base (filtri: gruppo, sottogruppo, codice, paginazione) |
| GET | /v1/distinta-base/up |
Lettura distinte con almeno un componente aggiornato a partire da un sync id |
Solo esportazione. L'inserimento e l'aggiornamento delle distinte avviene sul gestionale e viene propagato su ARPDBASE tramite il processo SWN142.
Schema output¶
DistintaBaseOutput (testata)¶
| Campo | Tipo | Campo DB / Join | Note |
|---|---|---|---|
gruppo_distinta |
string | arpmerci.rmer_gru |
Gruppo codice merce interno della distinta |
sottogruppo_distinta |
string | arpmerci.rmer_sot |
Sottogruppo codice merce interno della distinta |
codice_distinta |
integer | arpmerci.rmer_cod |
Codice merce interno della distinta |
codice_host_distinta |
string | arpmerci.rmer_cma |
Codice della merce distinta nel sistema host esterno |
sync |
integer | MAX(arpdbase.a_dba_id_sincro) per la distinta |
ID di sincronizzazione massimo tra i componenti |
cancellato |
boolean | rmer_stato = 'C' |
true se la merce padre e' cancellata logicamente |
componenti |
array | Righe arpdbase con a_dba_merce_db = gru||sot||cod |
Array di ComponenteDistintaOutput |
ComponenteDistintaOutput¶
| Campo | Tipo | Campo DB / Join | Note |
|---|---|---|---|
prog |
integer | arpdbase.a_dba_prog |
Progressivo riga componente |
gruppo_componente |
string | arpmerci.rmer_gru (INNER JOIN sul componente) |
Gruppo codice merce interno del componente |
sottogruppo_componente |
string | arpmerci.rmer_sot (INNER JOIN sul componente) |
Sottogruppo codice merce interno del componente |
codice_componente |
integer | arpmerci.rmer_cod (INNER JOIN sul componente) |
Codice merce interno del componente |
codice_host_componente |
string | arpmerci.rmer_cma (INNER JOIN sul componente) |
Codice del componente nel sistema host esterno |
qta |
number | arpdbase.a_dba_qta |
Quantita' componente per una unita' di distinta |
cancellato |
boolean | arpdbase.a_dba_fl_canc = 'C' |
true se il componente e' cancellato logicamente |
Query string¶
GET /v1/distinta-base¶
| Parametro | Tipo | Obbligatorio | Note |
|---|---|---|---|
limit |
integer | NO | Max risultati (default/max: 200) |
page |
integer | NO | Pagina (paginazione offset-based) |
gruppo |
string | NO | Filtra per gruppo della distinta (match esatto su rmer_gru) |
sottogruppo |
string | NO | Filtra per sottogruppo della distinta (match esatto) |
codice |
integer | NO | Filtra per codice della distinta (match esatto) |
I filtri agiscono sulla merce padre (la distinta), non sui componenti.
GET /v1/distinta-base/up¶
| Parametro | Tipo | Obbligatorio | Note |
|---|---|---|---|
sync |
integer | SI | ID sincronizzazione di partenza |
Restituisce le distinte in cui almeno un componente ha a_dba_id_sincro > sync. L'ordine e' per MAX(a_dba_id_sincro) crescente, per proseguire incrementalmente.
Tabelle sorgente¶
ARPDBASE -- dettaglio distinta base¶
PK: a_dba_azi, a_dba_merce_db, a_dba_classe_distinta, a_dba_prog.
| Campo | Tipo | Note |
|---|---|---|
a_dba_azi |
char(6) | Codice azienda |
a_dba_merce_db |
char(9) | Codice merce distinta (padre), formato GGSSCCCCC (gru+sot+cod) |
a_dba_classe_distinta |
char(1) | Sempre 'A' per le distinte esposte via questo endpoint |
a_dba_prog |
num(5) | Progressivo di riga |
a_dba_merce_comp |
char(9) | Codice merce componente, stesso formato |
a_dba_qta |
num(7,3) | Quantita' componente |
a_dba_id_sincro |
num(15) | ID sincronizzazione |
a_dba_fl_canc |
char(1) | 'C' se componente cancellato logicamente |
ARPMERCI -- anagrafica merce¶
Usata per ottenere gruppo/sottogruppo/codice e codice_host (rmer_cma) sia della distinta sia di ciascun componente, e per ricavare il flag cancellato dalla colonna rmer_stato. INNER JOIN sia sul padre che sui componenti: eventuali distinte o componenti che riferissero una merce non presente in arpmerci sono considerate dato sporco e non vengono restituite.
Logica di esportazione¶
GET / (lettura completa)¶
- Query su
arpdbasefiltrata pera_dba_classe_distinta = 'A', INNER JOINarpmerciper ottenere gruppo/sottogruppo/codice,codice_hoste stato della merce padre. GROUP BYsul codice distinta (piu' tutte le colonnermer_*presenti nel SELECT, funzionalmente dipendenti dalla PK diarpmerci), conMAX(a_dba_id_sincro)comesyncdi testata.- Le distinte la cui merce padre risulta cancellata logicamente (
rmer_stato = 'C') sono incluse concancellato = true. - Ordinamento per
rmer_gru, rmer_sot, rmer_code paginazione. - Seconda query sui componenti delle distinte trovate, raggruppati e mappati in output.
GET /up (differenziale)¶
- Stessa query della lettura completa ma con
HAVING MAX(a_dba_id_sincro) > sync. - Una distinta con N componenti aggiornati nello stesso range viene restituita una sola volta.
- Per ogni distinta vengono restituiti tutti i componenti, anche quelli non modificati dal filtro
sync. - I componenti cancellati (
a_dba_fl_canc = 'C') sono sempre inclusi concancellato = true. - Le distinte la cui merce padre e' stata cancellata logicamente sono incluse con
cancellato = true, cosi' la cancellazione viene propagata al client. - Ordinamento per
MAX(a_dba_id_sincro)crescente: il client puo' usare l'ultimosyncrestituito come punto di partenza per la chiamata successiva.
Match tra a_dba_merce_db e arpmerci¶
Il campo a_dba_merce_db e' una stringa di 9 caratteri (2+2+5), con lo stesso formato del campo rmer_cm di arpmerci. Il JOIN sfrutta questa corrispondenza diretta:
JOIN arpmerci ON rmer_azi = a_dba_azi AND rmer_cm = a_dba_merce_db
Lo stesso pattern e' usato per il JOIN sui componenti, con rmer_cm = a_dba_merce_comp.
Risposta¶
200 OK¶
Array di oggetti DistintaBaseOutput:
[
{
"gruppo_distinta": "AB",
"sottogruppo_distinta": "CD",
"codice_distinta": 12345,
"codice_host_distinta": "DIST-001",
"sync": 987654321,
"cancellato": false,
"componenti": [
{
"prog": 1,
"gruppo_componente": "AB",
"sottogruppo_componente": "CD",
"codice_componente": 10001,
"codice_host_componente": "COMP-A",
"qta": 2.5,
"cancellato": false
},
{
"prog": 2,
"gruppo_componente": "AB",
"sottogruppo_componente": "CD",
"codice_componente": 10002,
"codice_host_componente": "COMP-B",
"qta": 1.0,
"cancellato": true
}
]
}
]
400 Bad Request¶
Errore di validazione dei parametri.
401 Unauthorized¶
Autenticazione mancante o non valida.
Limiti¶
| Vincolo | Valore |
|---|---|
| Max distinte per risposta | 200 |
| Max componenti per distinta | Nessun limite a livello di endpoint (dipende dai dati) |
Programmi di alimentazione¶
La tabella ARPDBASE viene alimentata dal programma SWN142, che esporta le distinte base da COGDBASE + COGMERCI verso ARPDBASE. Supporta esportazione completa e differenziale tramite LOGAGREC.