Vai al contenuto
Menu documenti

API REST

Prezzi

Quanto paga un cliente per un SKU in una quantità, e esattamente quale insieme di regole applica quel prezzo.

TradeCatalog calcola ogni prezzo cliente in un unico posto, nello stesso modo per l'app, il portale commerciale, MCP e l'API. Non calcoli mai i prezzi tu stesso.

Prodotti configurati, tariffe misurate, soglie di quantità, extra netti e arrotondamenti espliciti utilizzano anche questo servizio di prezzo. Citare una riga completa con POST /products/{id}/quote; una mancanza di prezzo potrebbe significare configurationRequired, mentre una specifica non prezzata valida è "Prezzo su richiesta". Utilizzare il totale della riga restituito. Vedere setup del catalogo commerciale per la precedenza, il trattamento netto e la pubblicazione.

Come vengono calcolati i prezziCollegamento a questa sezione#

La regola più specifica vince, e le modifiche non si accumulano:

  1. Prezzo concordato. Se il cliente ha un prezzo (fisso) concordato per il prodotto, è questo il prezzo.
  2. In caso contrario il prezzo di listino con un percentuale, la prima che si applica. Una percentuale è uno sconto (dedotto) o un markup (aggiunto):
    1. la percentuale del cliente per quel prodotto
    2. la percentuale del cliente per la categoria del prodotto (vince la più vicina)
    3. la percentuale del cliente per la marca del prodotto
    4. la percentuale del cliente sul listino completo
  3. In caso contrario il prezzo di listino.

Uno sconto su categoria del 10% e un markup su lista intera del 5% danno uno sconto del 10%, non entrambi. L'unità non è mai inferiore a zero e viene arrotondata per eccesso a un'unità minima intera. Il totale della riga è unit × qty.

I prezzi di listino e i prezzi concordati sono versionati in base alla data. L'API fornisce sempre il prezzo valido ora. I prezzi futuri da un cambiamento programmato si applicano dalla loro data.

Elenco prezzi e accesso al catalogoCollegamento a questa sezione#

Standard è il catalogo principale del fornitore. Altri elenchi prezzi possono contenere prodotti con prezzi e prodotti in attesa di un preventivo. Una mancanza di prezzo in un elenco assegnato non si ripristina su Standard.

Nello spazio di lavoro, apri Elenco prezzi e scegli un elenco denominato. Clienti assegnati possono vedere ha due opzioni:

  • Tutti i prodotti del catalogo autorizzati è il predefinito. L'elenco stabilisce i prezzi; i compratori assegnati possono anche navigare tra altri prodotti autorizzati come Prezzo su richiesta.
  • Solo i prodotti in questo elenco limita ogni catalogo, ricerche, collegamenti ai prodotti, download e nuovi ordini dei compratori assegnati a quei prodotti dell'elenco. Restano valide altre visibilità dei prodotti e restrizioni degli elenchi approvati. I clienti su altri elenchi mantengono l'accesso esistente.

Ogni elenco mostra il numero di clienti, i prodotti con prezzo, i prodotti senza prezzo e il totale dei prodotti. I totali includono i prodotti non attivi, quindi possono superare ciò che un compratore vede attualmente. Un prezzo zero è considerato come prezzo. Un prezzo futuro è considerato come non prezzo fino alla data di inizio.

Per aggiungere prodotti, selezionarli su Prodotti, scegliere Aggiungi all'elenco prezzi, quindi copiare i prezzi Standard con una percentuale opzionale o scegliere Aggiungi senza prezzi. I membri esistenti mantengono i loro prezzi. I prodotti senza prezzo Standard vengono aggiunti come Prezzo su richiesta. Nella pagina di un elenco denominato, salvare un SKU con un prezzo vuoto lo aggiunge senza prezzo o cancella il prezzo attuale. Rimuovi lo rimuove da quell'elenco, mantenendo il prodotto principale e gli ordini precedenti. Risolvere eventuali modifiche al prezzo in sospeso per quel prodotto prima.

Questi controlli richiedono il piano Pro e i diritti di modifica globale dei prezzi. Le liste esistenti mantengono l'accesso al catalogo fino a quando un fornitore non lo modifica. Gli import API in una lista denominata includono righe di prodotti ordinarie senza prezzo come membri non prezzati; una cella vuota in un importazione solo prezzi lascia invariato l'accesso.

L'oggetto prezzoCollegamento a questa sezione#

Ogni prodotto ha questa struttura price. GET /prices restituisce gli stessi campi al livello principale di data.

json
{
  "unit": 1573,
  "line": 15730,
  "list": 1850,
  "discountBp": 1500,
  "adjustment": "discount",
  "source": "brand",
  "label": "15% off your list",
  "remark": null
}
CampoTipoDescrizione
unitintero o nullPrezzo per una unità, in unità minori. null se il prodotto non ha prezzo.
lineintero o nullunit × qty.
listintero o nullIl prezzo listino attuale.
discountBpinteroL'aggiustamento applicato, in punti base. 0 per prezzi concordati e listino.
adjustmentdiscount o markupIn quale modo discountBp modifica il prezzo listino. discount quando non c'è una percentuale.
sourcestringaQuale set di regole ha impostato il prezzo: vedere di seguito.
labelstringaTesto che i compratori vedono accanto al prezzo.
remarkstringa o nullLa nota sul prezzo concordato quando quel cliente è autorizzato a vederla. Altrimenti null. La nota interna riservata al personale non è mai inclusa.
sourceSignificatoEsempio label
fixedIl prezzo concordato dal clientePrezzo concordato
productPercentuale su un prodotto10% di sconto sul listino
categoryPercentuale su una categoria12,5% di sconto sul listino
brandPercentuale su un brand15% di aumento sul listino
accountPercentuale su tutto il listino10% di aumento sul listino
listPrezzo listino, nessun aggiustamento(vuoto)
unpricedIl prodotto non ha ancora un prezzo(vuoto)

Verifica del prezzo del clienteCollegamento a questa sezione#

GET/api/v1/prices

Quanto paga un cliente per un SKU in una quantità, e perché. Usalo per rispondere a "Quanto paga Oakfield per 10 scatole di HX-8510?".

NomeTipoObbligatorioDescrizione
customerstringasìID cliente o codice account.
skustringasìSKU, ignorando il caso.
qtyinteronoDa 1 a 1.000.000. Valore predefinito 1.
bash
curl "https://tradecatalog.app/api/v1/prices?customer=OAK01&sku=HX-8510&qty=10" \
  -H "Authorization: Bearer $TRADECATALOG_API_KEY"
js
const params = new URLSearchParams({
  customer: 'OAK01',
  sku: 'HX-8510',
  qty: '10',
})
const res = await fetch(`https://tradecatalog.app/api/v1/prices?${params}`, {
  headers: { Authorization: `Bearer ${process.env.TRADECATALOG_API_KEY}` },
})
const { data: price, currency } = await res.json()
json
{
  "data": {
    "customer": {
      "id": "7d2e4f0a-1b3c-4d5e-8f90-a1b2c3d4e5f6",
      "accountCode": "OAK01",
      "name": "Oakfield Joinery"
    },
    "sku": "HX-8510",
    "name": "Hex bolt M10 x 50 zinc",
    "qty": 10,
    "unit": 1573,
    "line": 15730,
    "list": 1850,
    "discountBp": 1500,
    "source": "brand",
    "label": "15% off your list",
    "remark": null
  },
  "currency": "GBP"
}
StatoCodiceQuando
400validation_errorcustomer o sku mancante, o qty fuori range.
404not_foundNessun cliente esistente, o nessun prodotto con quel SKU.

Questo endpoint controlla solo il prezzo. Non controlla se il cliente può vedere il prodotto. Per questo, utilizzare GET /products/{id}?customer=….

Prezzi per molti prodottiCollegamento a questa sezione#

Per prezzare una pagina intera di prodotti per un cliente, utilizzare GET /products?customer=OAK01. Ogni riga ha il price che è il prezzo di quel cliente e i prodotti esclusivi per altri clienti vengono esclusi. Vedere Prodotti.

Modifica dei prezziCollegamento a questa sezione#

  • List prices cambiano con i cambiamenti dei prezzi, quindi i clienti ricevono una notifica. Inviare nuovi prezzi con PUT /products; vengono inseriti in un bozza che pubblichi nell'app.
  • Markup, sconti e prezzi concordati vengono impostati per cliente nell'app. Leggili con GET /customers/{id}.
  • Prezzi concordati per molti clienti vengono impostati con PUT /agreed-prices.
  • Il percentuale per l'intera lista di un cliente può essere impostata con PUT /customers (discountBp, e adjustment opzionale).

Impostare i prezzi concordatiCollegamento a questa sezione#

PUT/api/v1/agreed-priceschiave di scrittura

Crea o sostituisci i prezzi concordati per clienti e prodotti esistenti. Invia fino a 2.000 righe. I prezzi sono unità minori intere. Lascia commit falso per il preview: nulla viene salvato, e ogni account o SKU sconosciuto torna come errore di riga. Imposta commit su true per salvare. Salvare chiude il prezzo concordato valido attualmente e inserisce il nuovo da questo momento, in lotti di 100. Solo Pro.

NomeTipoObbligatorioDescrizione
commitbooleanonotrue salva. Il predefinito false prevede solo.
pricesarraysì1 a 2.000 prezzi.
accountCodestringasìCodice account del cliente, ignorando il caso.
skustringasìSKU del prodotto, ignorando il caso.
priceinterosìPrezzo concordato in unità minori.
notestringanoFino a 200 caratteri, visibile al personale.
bash
curl -X PUT https://tradecatalog.app/api/v1/agreed-prices \
  -H "Authorization: Bearer $TRADECATALOG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"commit":false,"prices":[{"accountCode":"OAK01","sku":"HX-8510","price":1250,"note":"Contract"}]}'
StatoCodiceQuando
400validation_errorUn prezzo è mancante, negativo o superiore al limite.
403read_onlyLo spazio di lavoro non è su Pro, o la chiave è in sola lettura.