diff --git a/packages/medusa-plugin-brightpearl/src/api/index.js b/packages/medusa-plugin-brightpearl/src/api/index.js index b4e123186d..8749f0da17 100644 --- a/packages/medusa-plugin-brightpearl/src/api/index.js +++ b/packages/medusa-plugin-brightpearl/src/api/index.js @@ -1,6 +1,8 @@ import { Router } from "express" import bodyParser from "body-parser" +const BP_SECRET_TOKEN = process.env.BP_SECRET_TOKEN || "" + export default (container) => { const app = Router() @@ -40,5 +42,35 @@ export default (container) => { } ) + app.post("/brightpearl/orders/:id", async (req, res) => { + const { access_token } = req.query + const { id } = req.params + + if ( + !access_token || + !id || + !BP_SECRET_TOKEN || + access_token !== BP_SECRET_TOKEN + ) { + res.sendStatus(401) + return + } + + const brightpearlService = req.scope.resolve("brightpearlService") + const orderService = req.scope.resolve("orderService") + + try { + const order = await orderService.retrieve(id) + if (order.metadata && order.metadata.brightpearl_sales_order_id) { + throw new Error("Already sent to BP") + } + + await brightpearlService.createSalesOrder(order) + res.status(200) + } catch (err) { + res.status(400).json(err) + } + }) + return app }