Vai al contenuto

API Ordini — Specifica Tecnica

Panoramica

API REST per la sincronizzazione degli ordini cliente (testata + righe) tra Areagate e sistemi host esterni. Le righe ordine possono riferirsi indifferentemente a una merce (ARPMERCI) o a una prestazione (ARPMESER).

Endpoint disponibili

Metodo Path Descrizione
GET /v1/ordine Lettura lista ordini (filtri: id, cliente, codice_interno, paginazione)
GET /v1/ordine/up Lettura ordini aggiornati a partire da un sync id
POST /v1/ordine Inserimento/aggiornamento batch ordini

Schema output — GET

OrdineOutput

Campo Tipo Campo DB / Join Note
id_pubblico integer a_ortes_id_pub ID pubblico dell'ordine
codice_host string a_ortes_codice_host Codice ordine nel sistema host esterno
codice_interno string a_ortes_tor_chia Codice interno dell'ordine su AREA
codice_host_azienda_gruppo string join APGRPAZIEN Codice host azienda gruppo
data integer a_ortes_data Data ordine
codice_cliente string a_ortes_cliente Codice cliente interno
codice_host_cliente string join ARPANAGR Codice host cliente
evaso boolean a_ortes_stato true se a_ortes_stato = 'C'
stato string a_ortes_stato Stato dell'ordine
magazzino string a_ortes_magazzino Codice magazzino
magazzino_host string join APCOGMAGAZ Codice host magazzino
causale_documento string a_ortes_causale_doc Causale documento
data_consegna integer a_ortes_data_cons_generica Epoch ms (0 se data <= 0001-12-31)
ordine_cliente string a_ortes_conferma Riferimento ordine cliente
data_ordine_cliente integer a_ortes_data_conferma Epoch ms (0 se data <= 0001-12-31)
agente_codice integer a_ortes_agente_cod Codice agente
note_ordine string a_ortes_note_ordine Note ordine
listino integer a_ortes_listino Codice listino
pagamento string a_ortes_pagamento Codice pagamento
pagamento_tipo string a_ortes_pag_tip Tipo pagamento
pagamento_codice integer a_ortes_pag_cod Codice pagamento numerico
brand_codice string a_ortes_brand_cod Codice brand
vettore_codice string a_ortes_vet_cod Codice vettore
vettore_descrizione_1 string a_ortes_vet_des_1 Descrizione vettore 1
vettore_descrizione_2 string a_ortes_vet_des_2 Descrizione vettore 2
vettore_descrizione_3 string a_ortes_vet_des_3 Descrizione vettore 3
porto_codice string a_ortes_porto_cod Codice porto
porto_descrizione string a_ortes_porto_des Descrizione porto
tipo_trasporto string a_ortes_tipo_trasporto Tipo di trasporto (popolato da tor-acura, sincronizzato da SWN089 -- vedi TASK-5231 / build 2026-06-04)
sync integer a_ortes_id_sincro ID di sincronizzazione
righe array tabella ARPORDET Array di RigheOrdineOutput

RigheOrdineOutput

Campo Tipo Campo DB / Join Note
id_pubblico integer a_ordet_id_pub ID pubblico dell'ordine di appartenenza
riga integer a_ordet_riga Numero riga
cm string a_ordet_merce Codice interno merce o prestazione (chiave 9-char gru+sot+cod)
codice_host_merce string coalesce(rmer_cma, rmers_cma, '') (LEFT JOIN su ARPMERCI o ARPMESER) Codice host della merce o della prestazione
qta number a_ordet_qta Quantita'
prezzo_lordo number a_ordet_prezzo_lordo Prezzo lordo
sconto_1 number a_ordet_sco_1 Sconto 1
sconto_2 number a_ordet_sco_2 Sconto 2
prezzo_netto number a_ordet_prezzo_netto Prezzo netto
importo number a_ordet_importo Importo
note string a_ordet_note Note riga

Query string — GET /

Parametro Tipo Obbligatorio Note
limit integer NO Max risultati (default/max: 200)
page integer NO Pagina (paginazione offset-based)
id integer NO Filtro per ID pubblico (match esatto)
cliente string NO Filtro per codice cliente (match esatto su a_ortes_cliente)
codice_interno string NO Filtro per codice interno (ricerca parziale ILIKE su a_ortes_tor_chia)

Query string — GET /up

Parametro Tipo Obbligatorio Note
sync integer SI ID sincronizzazione di partenza

Schema input — POST /v1/ordine

OrdineInput

Campo Tipo Obbligatorio Note
tipo string SI Tipo ordine (max 16 char)
codice_host string SI Codice ordine host (max 30 char)
codice_host_azienda_gruppo string SI Codice host azienda gruppo (max 20 char)
data integer NO Data ordine (default 0)
codice_host_cliente string SI Codice host cliente (max 16 char)
righe array SI Array di RigheOrdineInput

RigheOrdineInput

Campo Tipo Obbligatorio Note
riga integer SI Numero riga (minimo 1)
codice_host_merce string SI Codice host merce (min 1, max 30 char)
qta number NO Quantita' (default 0)
prezzo_lordo number NO Prezzo lordo (default 0)
sconto_1 number NO Sconto 1 (default 0)
sconto_2 number NO Sconto 2 (default 0)
prezzo_netto number NO Prezzo netto (default 0)
importo number NO Importo (default 0)

Tabelle sorgente

  • ARPORTES — testata ordini (PK: a_ortes_azi, a_ortes_id_pub)
  • ARPORDET — dettaglio righe (PK: a_ordet_azi, a_ordet_id_pub, a_ordet_riga)

Join (GET)

Tabella Condizione Tipo Scopo
ARPANAGR a_ortes_azi = rana_azi AND a_ortes_cliente = rana_codana INNER Codice host cliente
APGRPAZIEN a_ortes_azi = a_ao_azi_azi AND a_ortes_grp_az_cod = a_ao_azi_cod LEFT Codice host azienda gruppo
APCOGMAGAZ a_ortes_azi = a_magz_azi AND a_ortes_magazzino = a_magz_cod AND a_magz_tipo = 'M' LEFT Codice host magazzino
ARPMERCI a_ordet_azi = rmer_azi AND a_ordet_merce = rmer_cm LEFT Codice host merce (righe)
ARPMESER a_ordet_azi = rmers_azi AND a_ordet_merce = rmers_cm LEFT Codice host prestazione (righe)

Una riga ordine puo' fare riferimento sia a una merce (ARPMERCI) sia a una prestazione (ARPMESER): entrambe le tabelle sono in LEFT JOIN, e il codice_host_merce esposto in output e' coalesce(rmer_cma, rmers_cma, '') — quale dei due e' valorizzato dipende dal tipo del record che ha quel cm.


Note implementative

  • Il GET / carica le testate e poi le righe in due query separate, associate tramite id_pubblico
  • Il filtro codice_interno usa ILIKE %...% per ricerca parziale
  • Il POST gestisce inserimento e aggiornamento. Gli ordini evasi (stato = 'C') non possono essere modificati
  • In aggiornamento, se le righe cambiano, vengono eliminate e reinserite integralmente
  • In POST, la validazione del codice_host_merce di input cerca prima in getRaccordiMerci e, se non trovato, in getRaccordiPrestazioni: una riga ordine puo' quindi riferirsi indifferentemente a una merce o a una prestazione
  • Limite max per risposta: 200 record