Inköp och lager med Supplier API
Kör hela inköpscykeln: inköpsförfrågningar, inköpsordrar och rader, mottagningar och returer, kataloger, lagernivåer och Order.co-webhooken.Lagerslutpunkterna under
/v1/supplier/inventory/ täcker hela inköpscykeln: tekniker skapar inköpsförfrågningar (PR:er), inköp omvandlar dem till inköpsordrar (PO:er) mot leverantörer, varor kommer in som mottagningar, och lagernivåer uppdateras per lagerplats. Samma yta speglas för köparnas interna team i Internal Teams API.
Alla exempel förutsätter:
Inköpsförfrågningar
PR-statusar:requested, denied, cancelled, approved, orderInProgress, ordered, partially_ordered, fulfilled, partially_fulfilled.
PATCH /v1/supplier/inventory/purchase_requests/{id}/cancelledavbryter, och fungerar bara från en avbrytbar status (requestedellerapproved); allt annat är400.PATCH /v1/supplier/inventory/purchase_requests/{id}/{status}sätter valfri status från listan ovan. Okända namn avvisas.
PR-rader
Rader frågas separat, vilket är hur du bygger en beställningsarbetslista över många PR:er:PATCH /v1/supplier/inventory/purchase_request_line_items/associate_po_line_item/{ids}/{poLineItem}: den tar kommaseparerade PR-rad-id:n, sätter var och en till orderInProgress med sitt associatedPurchaseOrderLineItemId och räknar om varje förälder-PR:s status. Id:n du saknar behörighet för släpps tyst, så jämför den returnerade listan mot vad du skickade.
Inköpsordrar
PO-statusar:new, ordered, received, partially_received, cancelled, closed.
Varje ändring av inköpsorder, orderrad eller mottagning som görs via de här slutpunkterna registreras i inköpsorderns granskningslogg i OpenWrench, tillskriven kontakten bakom din API-nyckel.
Skapa
POST /v1/supplier/inventory/purchase_orders kräver status (vanligtvis new), partEquipmentVendorId, currencyId och createdByEmail. totalCost krävs också om inte ditt företags lagerinställningar markerar PO-kostnad som icke-obligatorisk.
isEquipmentLine; del-rader bär partId/partQuantity/partUomId/partCost/partCurrencyId, utrustnings-rader equipment*-motsvarigheterna. prLineItemIds knyter raden tillbaka till inköpsförfrågningarna den uppfyller. Att skicka ett id på översta nivån uppdaterar en befintlig PO.
Ersätt rader i massa
POST /v1/supplier/inventory/purchase_order_line_items/bulk tar en JSON-array av rad-payloads och har ersättningssemantik:
supplierFacilityId och supplierCompanyId på varje post skrivs över från din nyckel, PO:s del-/utrustnings-/PR-id-listor räknas om och inköpsorder-aviseringen skickas igen. Inte hastighetsbegränsad.
Markera som beställd
PATCH /v1/supplier/inventory/purchase_orders/{id}/ordered sätter statusen till ordered och mejlar ordern till leverantören.
Framgångssvaret är ett stränghölje (
"type": "Email", "data": "Email has been sent"), inte inköpsordern. Hämta om PO:n om du behöver dess uppdaterade tillstånd.PATCH /v1/supplier/inventory/purchase_orders/{id}/cancel avbryter och returnerar den uppdaterade PO:n.
Mottagningar och returer
Mottagning är enPUT nycklad efter PO-raden:
receiptNumber, purchaseOrderId, purchaseOrderLineItemId, receivedQuantity, updatedBy, supplierFacilityId. Regler:
receivedQuantitymåste vara skilt från noll. En negativ kvantitet registrerar en retur.- Mottagning uppdaterar PO-radens mottagna kvantiteter/kostnader och lagerposterna vid destinations-lagerplatsen; PO-status rullar upp till
partially_received/receiveddärefter. - För serialiserad utrustning bär
equipmentPerStockLocationReceiptValues(ellerassetReceiptValues/receiptValuesWithoutId) en{ serialNumber, assetNumber }-post per enhet. Listlängden måste vara lika medreceivedQuantity, dessa arrayer är inte tillåtna vid returer, och serie- eller tillgångsnummer som redan används avvisas. - Leverantörsfakturametadata (
invoiceNumber,invoiceCurrency,invoiceTotal,exchangeRate,invoiceTotalPostExchange) kan registreras på mottagningen.
GET /v1/supplier/inventory/purchase_order_receipts/{id}.
Katalog: delar, utrustning, leverantörer och lager
Skrivskyddad referensdata, alla med standardpaginering och fältfilter:parts_per_stock_locations?partId=210 besvarar “var har vi den här delen och hur många”; filtrera efter stockLocationId för en plats hela lagerlista.
Order.co-webhook
POST /v1/supplier/inventory/webhook/purchase_order är en inkommande webhook för tredjeparts inköpssystem, för närvarande Order.co, och endast för leverantörsföretag som är registrerade för den (andra får 400). Payloaden bär order_id (tredjepartsid), purchase_order_number (OpenWrench-PO:s id som en sträng), en status och ett statusspecifikt message-objekt. Effekter per status:
approved/error— lägg till en anteckning på PO:n.rejected— avbryt PO:n.completed— markera PO:n som beställd.shipping_update— lägg till en fraktnotering; närmessage.shipment_delivery_datefinns, skapa automatiskt mottagningar för alla ej mottagna rader.
Hela flödet i korthet
- Lista
approvedPR-rader för att bygga beställningsarbetslistan. - Skapa PO:n med
incomingLineItemssom refererar tillprLineItemIds(eller associera PR-rader uttryckligen efteråt). - Markera PO:n
ordered(leverantören får mejlet). - Ta emot leveranser med mottagningar; registrera returer som negativa kvantiteter; serialiserade enheter får per-enhet serie- och tillgångsnummer.
- PR-statusar rullar framåt automatiskt (
orderInProgress→ordered→fulfilled) allteftersom rader associeras och arbetsordrar avslutas.