From 01b915585b1cee56636fda00bd9c6330b800d64c Mon Sep 17 00:00:00 2001 From: Philip Korsholm <88927411+pKorsholm@users.noreply.github.com> Date: Thu, 16 Dec 2021 14:43:16 +0100 Subject: [PATCH] Feat/client admin orders (#932) * add export to medusa index * add orders to medusa-client * correct update entity * add orders to admin resource Co-authored-by: Sebastian Rindom --- .../medusa-js/src/resources/admin/index.ts | 2 + .../medusa-js/src/resources/admin/orders.ts | 236 ++++++++++++++++++ packages/medusa/src/api/index.js | 1 + .../src/api/routes/admin/orders/index.ts | 2 +- 4 files changed, 240 insertions(+), 1 deletion(-) create mode 100644 packages/medusa-js/src/resources/admin/orders.ts diff --git a/packages/medusa-js/src/resources/admin/index.ts b/packages/medusa-js/src/resources/admin/index.ts index 09297f4fd0..031937bfb7 100644 --- a/packages/medusa-js/src/resources/admin/index.ts +++ b/packages/medusa-js/src/resources/admin/index.ts @@ -7,6 +7,7 @@ import AdminDraftOrdersResource from "./draft-orders" import AdminGiftCardsResource from "./gift-cards" import AdminInvitesResource from "./invites" import AdminNotesResource from "./notes" +import AdminOrdersResource from "./orders" import AdminReturnReasonsResource from "./return-reasons" import AdminVariantsResource from "./variants" import AdminSwapsResource from "./swaps" @@ -22,6 +23,7 @@ class Admin extends BaseResource { public giftCards = new AdminGiftCardsResource(this.client) public invites = new AdminInvitesResource(this.client) public notes = new AdminNotesResource(this.client) + public orders = new AdminOrdersResource(this.client) public returnReasons = new AdminReturnReasonsResource(this.client) public variants = new AdminVariantsResource(this.client) public swaps = new AdminSwapsResource(this.client) diff --git a/packages/medusa-js/src/resources/admin/orders.ts b/packages/medusa-js/src/resources/admin/orders.ts new file mode 100644 index 0000000000..6b2fea8a12 --- /dev/null +++ b/packages/medusa-js/src/resources/admin/orders.ts @@ -0,0 +1,236 @@ +import { + AdminPostOrdersOrderReq, + AdminOrdersRes, + AdminGetOrdersParams, + AdminOrdersListRes, + AdminPostOrdersReq, + AdminPostOrdersOrderRefundsReq, + AdminPostOrdersOrderFulfillmentsReq, + AdminPostOrdersOrderShipmentReq, + AdminPostOrdersOrderReturnsReq, + AdminPostOrdersOrderShippingMethodsReq, + AdminPostOrdersOrderSwapsReq, + AdminPostOrdersOrderSwapsSwapReceiveReq, + AdminPostOrdersOrderSwapsSwapFulfillmentsReq, + AdminPostOrdersOrderSwapsSwapShipmentsReq, + AdminPostOrdersOrderClaimsReq, + AdminPostOrdersOrderClaimsClaimFulfillmentsReq, + AdminPostOrdersOrderClaimsClaimShipmentsReq, + AdminPostOrdersOrderClaimsClaimReq, +} from "@medusajs/medusa" +import { ResponsePromise } from "../../typings" +import BaseResource from "../base" + +class AdminOrdersResource extends BaseResource { + create(payload: AdminPostOrdersReq): ResponsePromise { + const path = `/admin/orders` + return this.client.request("POST", path, payload) + } + + update( + id: string, + payload: AdminPostOrdersOrderReq + ): ResponsePromise { + const path = `/admin/orders/${id}` + return this.client.request("POST", path, payload) + } + + retrieve(id: string): ResponsePromise { + const path = `/admin/orders/${id}` + return this.client.request("GET", path) + } + + list(query: AdminGetOrdersParams): ResponsePromise { + let path = `/admin/orders` + + if (query) { + const queryString = Object.entries(query).map(([key, value]) => { + return typeof value !== "undefined" ? `${key}=${value}` : "" + }) + path = `/admin/orders?${queryString.join("&")}` + } + + return this.client.request("GET", path) + } + + complete(id: string): ResponsePromise { + const path = `/admin/orders/${id}/complete` + return this.client.request("POST", path) + } + + capturePayment(id: string): ResponsePromise { + const path = `/admin/orders/${id}/capture` + return this.client.request("POST", path) + } + + refundPayment( + id: string, + payload: AdminPostOrdersOrderRefundsReq + ): ResponsePromise { + const path = `/admin/orders/${id}/refund` + return this.client.request("POST", path, payload) + } + + createFulfillment( + id: string, + payload: AdminPostOrdersOrderFulfillmentsReq + ): ResponsePromise { + const path = `/admin/orders/${id}/fulfillment` + return this.client.request("POST", path, payload) + } + + cancelFulfillment( + id: string, + fulfillmentId: string + ): ResponsePromise { + const path = `/admin/orders/${id}/fulfillments/${fulfillmentId}/cancel` + return this.client.request("POST", path) + } + + cancelSwapFulfillment( + id: string, + swapId: string, + fulfillmentId: string + ): ResponsePromise { + const path = `/admin/orders/${id}/swaps/${swapId}/fulfillments/${fulfillmentId}/cancel` + return this.client.request("POST", path) + } + + cancelClaimFulfillment( + id: string, + claimId: string, + fulfillmentId: string + ): ResponsePromise { + const path = `/admin/orders/${id}/claims/${claimId}/fulfillments/${fulfillmentId}/cancel` + return this.client.request("POST", path) + } + + createShipment( + id: string, + payload: AdminPostOrdersOrderShipmentReq + ): ResponsePromise { + const path = `/admin/orders/${id}/shipment` + return this.client.request("POST", path, payload) + } + + requestReturn( + id: string, + payload: AdminPostOrdersOrderReturnsReq + ): ResponsePromise { + const path = `/admin/orders/${id}/return` + return this.client.request("POST", path, payload) + } + + cancel(id: string): ResponsePromise { + const path = `/admin/orders/${id}/cancel` + return this.client.request("POST", path) + } + + addShippingMethod( + id: string, + payload: AdminPostOrdersOrderShippingMethodsReq + ): ResponsePromise { + const path = `/admin/orders/${id}/shipping-methods` + return this.client.request("POST", path, payload) + } + + archive(id: string): ResponsePromise { + const path = `/admin/orders/${id}/archive` + return this.client.request("POST", path) + } + + createSwap( + id: string, + payload: AdminPostOrdersOrderSwapsReq + ): ResponsePromise { + const path = `/admin/orders/${id}/swaps` + return this.client.request("POST", path, payload) + } + + cancelSwap(id: string, swapId: string): ResponsePromise { + const path = `/admin/orders/${id}/swaps/${swapId}/cancel` + return this.client.request("POST", path) + } + + receiveSwap( + id: string, + swapId: string, + payload: AdminPostOrdersOrderSwapsSwapReceiveReq + ): ResponsePromise { + const path = `/admin/orders/${id}/swaps/${swapId}/receive` + return this.client.request("POST", path, payload) + } + + fulfillSwap( + id: string, + swapId: string, + payload: AdminPostOrdersOrderSwapsSwapFulfillmentsReq + ): ResponsePromise { + const path = `/admin/orders/${id}/swaps/${swapId}/fulfillments` + return this.client.request("POST", path, payload) + } + + createSwapShipment( + id: string, + swapId: string, + payload: AdminPostOrdersOrderSwapsSwapShipmentsReq + ): ResponsePromise { + const path = `/admin/orders/${id}/swaps/${swapId}/shipments` + return this.client.request("POST", path, payload) + } + + processSwapPayment( + id: string, + swapId: string + ): ResponsePromise { + const path = `/admin/orders/${id}/swaps/${swapId}/process-payment` + return this.client.request("POST", path) + } + + createClaim( + id: string, + payload: AdminPostOrdersOrderClaimsReq + ): ResponsePromise { + const path = `/admin/orders/${id}/claims` + return this.client.request("POST", path, payload) + } + + cancelClaim(id: string, claimId: string): ResponsePromise { + const path = `/admin/orders/${id}/claims/${claimId}/cancel` + return this.client.request("POST", path) + } + + updateClaim( + id: string, + claimId: string, + payload: AdminPostOrdersOrderClaimsClaimReq + ): ResponsePromise { + const path = `/admin/orders/${id}/claims/${claimId}` + return this.client.request("POST", path, payload) + } + + fulfillClaim( + id: string, + claimId: string, + payload: AdminPostOrdersOrderClaimsClaimFulfillmentsReq + ): ResponsePromise { + const path = `/admin/orders/${id}/claims/${claimId}/fulfillments` + return this.client.request("POST", path, payload) + } + + createClaimShipment( + id: string, + claimId: string, + payload: AdminPostOrdersOrderClaimsClaimShipmentsReq + ): ResponsePromise { + const path = `/admin/orders/${id}/claims/${claimId}/shipments` + return this.client.request("POST", path, payload) + } + + deleteMetadata(id: string, key: string): ResponsePromise { + const path = `/admin/orders/${id}/metadata/${key}` + return this.client.request("DELETE", path) + } +} + +export default AdminOrdersResource diff --git a/packages/medusa/src/api/index.js b/packages/medusa/src/api/index.js index f86c1be330..6dfb04b4e1 100644 --- a/packages/medusa/src/api/index.js +++ b/packages/medusa/src/api/index.js @@ -27,6 +27,7 @@ export * from "./routes/admin/notes" export * from "./routes/admin/notifications" export * from "./routes/admin/shipping-profiles" export * from "./routes/admin/store" +export * from "./routes/admin/orders" export * from "./routes/admin/variants" export * from "./routes/admin/return-reasons" export * from "./routes/admin/swaps" diff --git a/packages/medusa/src/api/routes/admin/orders/index.ts b/packages/medusa/src/api/routes/admin/orders/index.ts index 022ca63135..374fd828ff 100644 --- a/packages/medusa/src/api/routes/admin/orders/index.ts +++ b/packages/medusa/src/api/routes/admin/orders/index.ts @@ -205,7 +205,7 @@ export default (app) => { ) /** - * Creates claim fulfillment + * Creates claim shipment */ route.post( "/:id/claims/:claim_id/shipments",