diff --git a/packages/medusa-plugin-economic/src/api/index.js b/packages/medusa-plugin-economic/src/api/index.js index e69de29bb2..c861a5b001 100644 --- a/packages/medusa-plugin-economic/src/api/index.js +++ b/packages/medusa-plugin-economic/src/api/index.js @@ -0,0 +1,10 @@ +import { Router } from "express" +import routes from "./routes" + +export default (container) => { + const app = Router() + + routes(app) + + return app +} diff --git a/packages/medusa-plugin-economic/src/api/middlewares/await-middleware.js b/packages/medusa-plugin-economic/src/api/middlewares/await-middleware.js new file mode 100644 index 0000000000..1c3692b377 --- /dev/null +++ b/packages/medusa-plugin-economic/src/api/middlewares/await-middleware.js @@ -0,0 +1 @@ +export default (fn) => (...args) => fn(...args).catch(args[2]) diff --git a/packages/medusa-plugin-economic/src/api/middlewares/index.js b/packages/medusa-plugin-economic/src/api/middlewares/index.js new file mode 100644 index 0000000000..c784e319a9 --- /dev/null +++ b/packages/medusa-plugin-economic/src/api/middlewares/index.js @@ -0,0 +1,5 @@ +import { default as wrap } from "./await-middleware" + +export default { + wrap, +} diff --git a/packages/medusa-plugin-economic/src/api/routes/book-invoice.js b/packages/medusa-plugin-economic/src/api/routes/book-invoice.js new file mode 100644 index 0000000000..2f635d4aaf --- /dev/null +++ b/packages/medusa-plugin-economic/src/api/routes/book-invoice.js @@ -0,0 +1,18 @@ +export default async (req, res) => { + const schema = Validator.object().keys({ + orderId: Validator.string().required(), + }) + + const { value, error } = schema.validate(req.body) + if (error) { + throw new MedusaError(MedusaError.Types.INVALID_DATA, error.details) + } + + try { + const economicService = req.scope.resolve("economicService") + await economicService.bookEconomicInvoice(value.orderId) + res.sendStatus(200) + } catch (error) { + throw error + } +} diff --git a/packages/medusa-plugin-economic/src/api/routes/create-draft-invoice.js b/packages/medusa-plugin-economic/src/api/routes/create-draft-invoice.js new file mode 100644 index 0000000000..0374ca12f3 --- /dev/null +++ b/packages/medusa-plugin-economic/src/api/routes/create-draft-invoice.js @@ -0,0 +1,18 @@ +export default async (req, res) => { + const schema = Validator.object().keys({ + orderId: Validator.string().required(), + }) + + const { value, error } = schema.validate(req.body) + if (error) { + throw new MedusaError(MedusaError.Types.INVALID_DATA, error.details) + } + + try { + const economicService = req.scope.resolve("economicService") + await economicService.draftEconomicInvoice(value.orderId) + res.sendStatus(200) + } catch (error) { + throw error + } +} diff --git a/packages/medusa-plugin-economic/src/api/routes/economic.js b/packages/medusa-plugin-economic/src/api/routes/economic.js deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/medusa-plugin-economic/src/api/routes/index.js b/packages/medusa-plugin-economic/src/api/routes/index.js new file mode 100644 index 0000000000..fbe8682565 --- /dev/null +++ b/packages/medusa-plugin-economic/src/api/routes/index.js @@ -0,0 +1,20 @@ +import { Router } from "express" +import middlewares from "../../middlewares" + +const route = Router() + +export default (app) => { + app.use("/economic", route) + + route.post( + "/draft-invoice", + middlewares.wrap(require("./create-draft-invoice").default) + ) + + route.post( + "/book-invoice", + middlewares.wrap(require("./book-invoice").default) + ) + + return app +} diff --git a/packages/medusa-plugin-economic/src/services/economic.js b/packages/medusa-plugin-economic/src/services/economic.js index 46d3024c8c..b7390d369d 100644 --- a/packages/medusa-plugin-economic/src/services/economic.js +++ b/packages/medusa-plugin-economic/src/services/economic.js @@ -188,6 +188,9 @@ class EconomicService extends BaseService { "economicDraftId", draftInvoice.draftInvoiceNumber ) + + const invoiceOrder = await this.orderService_.retrieve(order._id) + return invoiceOrder } catch (error) { throw error } @@ -211,7 +214,7 @@ class EconomicService extends BaseService { }, } - await this.economic_.post( + return this.economic_.post( `${ECONOMIC_BASE_URL}/invoices/booked`, bookInvoiceRequest )