@lodashventure/medusa-quotation 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/.medusa/server/src/admin/index.js +8008 -0
  2. package/.medusa/server/src/admin/index.mjs +8005 -0
  3. package/.medusa/server/src/api/admin/quote-config/route.js +151 -0
  4. package/.medusa/server/src/api/admin/quote-seq/[id]/route.js +133 -0
  5. package/.medusa/server/src/api/admin/quote-seq/route.js +77 -0
  6. package/.medusa/server/src/api/admin/quote-store/route.js +94 -0
  7. package/.medusa/server/src/api/admin/quotes/[id]/reject/route.js +22 -0
  8. package/.medusa/server/src/api/admin/quotes/[id]/route.js +16 -0
  9. package/.medusa/server/src/api/admin/quotes/[id]/send/route.js +22 -0
  10. package/.medusa/server/src/api/admin/quotes/query-config.js +56 -0
  11. package/.medusa/server/src/api/admin/quotes/route.js +19 -0
  12. package/.medusa/server/src/api/admin/quotes/validators.js +10 -0
  13. package/.medusa/server/src/api/middlewares.js +31 -0
  14. package/.medusa/server/src/api/store/customers/me/quotes/[id]/accept/route.js +23 -0
  15. package/.medusa/server/src/api/store/customers/me/quotes/[id]/preview/route.js +23 -0
  16. package/.medusa/server/src/api/store/customers/me/quotes/[id]/reject/route.js +23 -0
  17. package/.medusa/server/src/api/store/customers/me/quotes/query-config.js +55 -0
  18. package/.medusa/server/src/api/store/customers/me/quotes/route.js +22 -0
  19. package/.medusa/server/src/api/store/validators.js +15 -0
  20. package/.medusa/server/src/fonts/vfs_fonts.js +20 -0
  21. package/.medusa/server/src/links/quote-cart.js +15 -0
  22. package/.medusa/server/src/links/quote-config-store.js +15 -0
  23. package/.medusa/server/src/links/quote-customer.js +15 -0
  24. package/.medusa/server/src/links/quote-order-change.js +15 -0
  25. package/.medusa/server/src/links/quote-order.js +18 -0
  26. package/.medusa/server/src/links/quote-seq-store.js +15 -0
  27. package/.medusa/server/src/modules/quote/index.js +13 -0
  28. package/.medusa/server/src/modules/quote/migrations/Migration20250303093636.js +21 -0
  29. package/.medusa/server/src/modules/quote/migrations/Migration20250304145603.js +17 -0
  30. package/.medusa/server/src/modules/quote/migrations/Migration20250608102414.js +25 -0
  31. package/.medusa/server/src/modules/quote/migrations/Migration20250622111411.js +23 -0
  32. package/.medusa/server/src/modules/quote/migrations/Migration20250622153414.js +17 -0
  33. package/.medusa/server/src/modules/quote/migrations/Migration20250622153513.js +14 -0
  34. package/.medusa/server/src/modules/quote/models/quote-config.js +20 -0
  35. package/.medusa/server/src/modules/quote/models/quote-seq.js +13 -0
  36. package/.medusa/server/src/modules/quote/models/quote-store-detail.js +25 -0
  37. package/.medusa/server/src/modules/quote/models/quote.js +17 -0
  38. package/.medusa/server/src/modules/quote/service.js +130 -0
  39. package/.medusa/server/src/modules/quote/types/quote-status.enum.js +18 -0
  40. package/.medusa/server/src/modules/quote/types/seq-type.enum.js +9 -0
  41. package/.medusa/server/src/workflows/create-request-for-quote.js +88 -0
  42. package/.medusa/server/src/workflows/customer-accept-quote.js +43 -0
  43. package/.medusa/server/src/workflows/customer-reject-quote.js +30 -0
  44. package/.medusa/server/src/workflows/merchant-reject-quote.js +30 -0
  45. package/.medusa/server/src/workflows/merchant-send-quote.js +30 -0
  46. package/.medusa/server/src/workflows/steps/create-quotes.js +17 -0
  47. package/.medusa/server/src/workflows/steps/update-quotes.js +20 -0
  48. package/.medusa/server/src/workflows/steps/validate-quote-can-accept.js +12 -0
  49. package/.medusa/server/src/workflows/steps/validate-quote-not-accepted.js +12 -0
  50. package/README.md +54 -0
  51. package/package.json +83 -0
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.customerAcceptQuoteWorkflow = void 0;
4
+ const core_flows_1 = require("@medusajs/core-flows");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const workflows_sdk_1 = require("@medusajs/workflows-sdk");
7
+ const validate_quote_can_accept_1 = require("./steps/validate-quote-can-accept");
8
+ const update_quotes_1 = require("./steps/update-quotes");
9
+ const quote_status_enum_1 = require("../modules/quote/types/quote-status.enum");
10
+ exports.customerAcceptQuoteWorkflow = (0, workflows_sdk_1.createWorkflow)("customer-accept-quote-workflow", (input) => {
11
+ // @ts-ignore
12
+ const { data: quotes } = (0, core_flows_1.useQueryGraphStep)({
13
+ entity: "quote",
14
+ fields: ["id", "draft_order_id", "status"],
15
+ filters: { id: input.quote_id, customer_id: input.customer_id },
16
+ options: {
17
+ throwIfKeyNotFound: true,
18
+ }
19
+ });
20
+ (0, validate_quote_can_accept_1.validateQuoteCanAcceptStep)({
21
+ // @ts-ignore
22
+ quote: quotes[0]
23
+ });
24
+ (0, update_quotes_1.updateQuotesStep)([{
25
+ id: input.quote_id,
26
+ status: quote_status_enum_1.QuoteStatus.ACCEPTED
27
+ }]);
28
+ core_flows_1.confirmOrderEditRequestWorkflow.runAsStep({
29
+ input: {
30
+ order_id: quotes[0].draft_order_id,
31
+ confirmed_by: input.customer_id,
32
+ },
33
+ });
34
+ core_flows_1.updateOrderWorkflow.runAsStep({
35
+ input: {
36
+ id: quotes[0].draft_order_id,
37
+ // @ts-ignore
38
+ status: utils_1.OrderStatus.PENDING,
39
+ is_draft_order: false
40
+ }
41
+ });
42
+ });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItYWNjZXB0LXF1b3RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9jdXN0b21lci1hY2NlcHQtcXVvdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBSThCO0FBQzlCLHFEQUF3RDtBQUN4RCwyREFBeUQ7QUFDekQsaUZBQStFO0FBQy9FLHlEQUF5RDtBQUN6RCxnRkFBdUU7QUFPMUQsUUFBQSwyQkFBMkIsR0FBRyxJQUFBLDhCQUFjLEVBQ3ZELGdDQUFnQyxFQUNoQyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtJQUN2QixhQUFhO0lBQ2IsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFBLDhCQUFpQixFQUFDO1FBQ3pDLE1BQU0sRUFBRSxPQUFPO1FBQ2YsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLFFBQVEsQ0FBQztRQUMxQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRTtRQUMvRCxPQUFPLEVBQUU7WUFDUCxrQkFBa0IsRUFBRSxJQUFJO1NBQ3pCO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsSUFBQSxzREFBMEIsRUFBQztRQUN6QixhQUFhO1FBQ2IsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7S0FDakIsQ0FBQyxDQUFDO0lBRUgsSUFBQSxnQ0FBZ0IsRUFBQyxDQUFDO1lBQ2hCLEVBQUUsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUNsQixNQUFNLEVBQUUsK0JBQVcsQ0FBQyxRQUFRO1NBQzdCLENBQUMsQ0FBQyxDQUFDO0lBRUosNENBQStCLENBQUMsU0FBUyxDQUFDO1FBQ3hDLEtBQUssRUFBRTtZQUNMLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYztZQUNsQyxZQUFZLEVBQUUsS0FBSyxDQUFDLFdBQVc7U0FDaEM7S0FDRixDQUFDLENBQUM7SUFFSCxnQ0FBbUIsQ0FBQyxTQUFTLENBQUM7UUFDNUIsS0FBSyxFQUFDO1lBQ0osRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjO1lBQzVCLGFBQWE7WUFDYixNQUFNLEVBQUUsbUJBQVcsQ0FBQyxPQUFPO1lBQzNCLGNBQWMsRUFBRSxLQUFLO1NBQ3RCO0tBQ0YsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUNGLENBQUMifQ==
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.customerRejectQuoteWorkflow = void 0;
4
+ const core_flows_1 = require("@medusajs/core-flows");
5
+ const workflows_sdk_1 = require("@medusajs/workflows-sdk");
6
+ const update_quotes_1 = require("./steps/update-quotes");
7
+ const validate_quote_not_accepted_1 = require("./steps/validate-quote-not-accepted");
8
+ const quote_status_enum_1 = require("../modules/quote/types/quote-status.enum");
9
+ exports.customerRejectQuoteWorkflow = (0, workflows_sdk_1.createWorkflow)("customer-reject-quote-workflow", (input) => {
10
+ // @ts-ignore
11
+ const { data: quotes } = (0, core_flows_1.useQueryGraphStep)({
12
+ entity: "quote",
13
+ fields: ["id", "status"],
14
+ filters: { id: input.quote_id, customer_id: input.customer_id },
15
+ options: {
16
+ throwIfKeyNotFound: true,
17
+ }
18
+ });
19
+ (0, validate_quote_not_accepted_1.validateQuoteNotAccepted)({
20
+ // @ts-ignore
21
+ quote: quotes[0]
22
+ });
23
+ (0, update_quotes_1.updateQuotesStep)([
24
+ {
25
+ id: input.quote_id,
26
+ status: quote_status_enum_1.QuoteStatus.CUSTOMER_REJECTED,
27
+ },
28
+ ]);
29
+ });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItcmVqZWN0LXF1b3RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9jdXN0b21lci1yZWplY3QtcXVvdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQXlEO0FBQ3pELDJEQUF5RDtBQUN6RCx5REFBeUQ7QUFDekQscUZBQStFO0FBQy9FLGdGQUF1RTtBQU8xRCxRQUFBLDJCQUEyQixHQUFHLElBQUEsOEJBQWMsRUFDdkQsZ0NBQWdDLEVBQ2hDLENBQUMsS0FBb0IsRUFBRSxFQUFFO0lBQ3ZCLGFBQWE7SUFDYixNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUEsOEJBQWlCLEVBQUM7UUFDekMsTUFBTSxFQUFFLE9BQU87UUFDZixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO1FBQ3hCLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxFQUFFO1FBQy9ELE9BQU8sRUFBRTtZQUNQLGtCQUFrQixFQUFFLElBQUk7U0FDekI7S0FDRixDQUFDLENBQUM7SUFFSCxJQUFBLHNEQUF3QixFQUFDO1FBQ3ZCLGFBQWE7UUFDYixLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztLQUNqQixDQUFDLENBQUM7SUFFSCxJQUFBLGdDQUFnQixFQUFDO1FBQ2Y7WUFDRSxFQUFFLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDbEIsTUFBTSxFQUFFLCtCQUFXLENBQUMsaUJBQWlCO1NBQ3RDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUNGLENBQUMifQ==
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.merchantRejectQuoteWorkflow = void 0;
4
+ const core_flows_1 = require("@medusajs/core-flows");
5
+ const workflows_sdk_1 = require("@medusajs/workflows-sdk");
6
+ const validate_quote_not_accepted_1 = require("./steps/validate-quote-not-accepted");
7
+ const update_quotes_1 = require("./steps/update-quotes");
8
+ const quote_status_enum_1 = require("../modules/quote/types/quote-status.enum");
9
+ exports.merchantRejectQuoteWorkflow = (0, workflows_sdk_1.createWorkflow)("merchant-reject-quote-workflow", (input) => {
10
+ // @ts-ignore
11
+ const { data: quotes } = (0, core_flows_1.useQueryGraphStep)({
12
+ entity: "quote",
13
+ fields: ["id", "status"],
14
+ filters: { id: input.quote_id },
15
+ options: {
16
+ throwIfKeyNotFound: true,
17
+ }
18
+ });
19
+ (0, validate_quote_not_accepted_1.validateQuoteNotAccepted)({
20
+ // @ts-ignore
21
+ quote: quotes[0]
22
+ });
23
+ (0, update_quotes_1.updateQuotesStep)([
24
+ {
25
+ id: input.quote_id,
26
+ status: quote_status_enum_1.QuoteStatus.MERCHANT_REJECTED,
27
+ },
28
+ ]);
29
+ });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyY2hhbnQtcmVqZWN0LXF1b3RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9tZXJjaGFudC1yZWplY3QtcXVvdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQXlEO0FBQ3pELDJEQUF5RDtBQUN6RCxxRkFBK0U7QUFDL0UseURBQXlEO0FBQ3pELGdGQUF1RTtBQU0xRCxRQUFBLDJCQUEyQixHQUFHLElBQUEsOEJBQWMsRUFDdkQsZ0NBQWdDLEVBQ2hDLENBQUMsS0FBb0IsRUFBRSxFQUFFO0lBQ3ZCLGFBQWE7SUFDYixNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUEsOEJBQWlCLEVBQUM7UUFDekMsTUFBTSxFQUFFLE9BQU87UUFDZixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO1FBQ3hCLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFO1FBQy9CLE9BQU8sRUFBRTtZQUNQLGtCQUFrQixFQUFFLElBQUk7U0FDekI7S0FDRixDQUFDLENBQUM7SUFFSCxJQUFBLHNEQUF3QixFQUFDO1FBQ3ZCLGFBQWE7UUFDYixLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztLQUNqQixDQUFDLENBQUM7SUFFSCxJQUFBLGdDQUFnQixFQUFDO1FBQ2Y7WUFDRSxFQUFFLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDbEIsTUFBTSxFQUFFLCtCQUFXLENBQUMsaUJBQWlCO1NBQ3RDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUNGLENBQUMifQ==
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.merchantSendQuoteWorkflow = void 0;
4
+ const core_flows_1 = require("@medusajs/core-flows");
5
+ const workflows_sdk_1 = require("@medusajs/workflows-sdk");
6
+ const update_quotes_1 = require("./steps/update-quotes");
7
+ const validate_quote_not_accepted_1 = require("./steps/validate-quote-not-accepted");
8
+ const quote_status_enum_1 = require("../modules/quote/types/quote-status.enum");
9
+ exports.merchantSendQuoteWorkflow = (0, workflows_sdk_1.createWorkflow)("merchant-send-quote-workflow", (input) => {
10
+ // @ts-ignore
11
+ const { data: quotes } = (0, core_flows_1.useQueryGraphStep)({
12
+ entity: "quote",
13
+ fields: ["id", "status"],
14
+ filters: { id: input.quote_id },
15
+ options: {
16
+ throwIfKeyNotFound: true
17
+ }
18
+ });
19
+ (0, validate_quote_not_accepted_1.validateQuoteNotAccepted)({
20
+ // @ts-ignore
21
+ quote: quotes[0]
22
+ });
23
+ (0, update_quotes_1.updateQuotesStep)([
24
+ {
25
+ id: input.quote_id,
26
+ status: quote_status_enum_1.QuoteStatus.PENDING_CUSTOMER,
27
+ },
28
+ ]);
29
+ });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyY2hhbnQtc2VuZC1xdW90ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvbWVyY2hhbnQtc2VuZC1xdW90ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBeUQ7QUFDekQsMkRBQXlEO0FBQ3pELHlEQUF5RDtBQUN6RCxxRkFBK0U7QUFDL0UsZ0ZBQXVFO0FBTTFELFFBQUEseUJBQXlCLEdBQUcsSUFBQSw4QkFBYyxFQUNyRCw4QkFBOEIsRUFDOUIsQ0FBQyxLQUFvQixFQUFFLEVBQUU7SUFDdkIsYUFBYTtJQUNiLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBQSw4QkFBaUIsRUFBQztRQUN6QyxNQUFNLEVBQUUsT0FBTztRQUNmLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUM7UUFDeEIsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUU7UUFDL0IsT0FBTyxFQUFFO1lBQ1Asa0JBQWtCLEVBQUUsSUFBSTtTQUN6QjtLQUNGLENBQUMsQ0FBQztJQUVILElBQUEsc0RBQXdCLEVBQUM7UUFDdkIsYUFBYTtRQUNiLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0tBQ2pCLENBQUMsQ0FBQTtJQUVGLElBQUEsZ0NBQWdCLEVBQUM7UUFDZjtZQUNFLEVBQUUsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUNsQixNQUFNLEVBQUUsK0JBQVcsQ0FBQyxnQkFBZ0I7U0FDckM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDLENBQ0YsQ0FBQyJ9
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createQuotesStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const quote_1 = require("../../modules/quote");
6
+ exports.createQuotesStep = (0, workflows_sdk_1.createStep)("create-quotes", async (input, { container }) => {
7
+ const quoteModuleService = container.resolve(quote_1.QUOTE_MODULE);
8
+ const quotes = await quoteModuleService.createQuotes(input);
9
+ return new workflows_sdk_1.StepResponse(quotes, quotes.map((quote) => quote.id));
10
+ }, async (quoteIds, { container }) => {
11
+ if (!quoteIds) {
12
+ return;
13
+ }
14
+ const quoteModuleService = container.resolve(quote_1.QUOTE_MODULE);
15
+ await quoteModuleService.deleteQuotes(quoteIds);
16
+ });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXF1b3Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvY3JlYXRlLXF1b3Rlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBNkU7QUFDN0UsK0NBQW1EO0FBVXRDLFFBQUEsZ0JBQWdCLEdBQUcsSUFBQSwwQkFBVSxFQUN4QyxlQUFlLEVBQ2YsS0FBSyxFQUFFLEtBQWdCLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQ3hDLE1BQU0sa0JBQWtCLEdBQXVCLFNBQVMsQ0FBQyxPQUFPLENBQzlELG9CQUFZLENBQ2IsQ0FBQztJQUVGLE1BQU0sTUFBTSxHQUFHLE1BQU0sa0JBQWtCLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTVELE9BQU8sSUFBSSw0QkFBWSxDQUNyQixNQUFNLEVBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUNoQyxDQUFDO0FBQ0osQ0FBQyxFQUNELEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQ2hDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLE9BQU07SUFDUixDQUFDO0lBRUQsTUFBTSxrQkFBa0IsR0FBdUIsU0FBUyxDQUFDLE9BQU8sQ0FDOUQsb0JBQVksQ0FDYixDQUFDO0lBRUYsTUFBTSxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbEQsQ0FBQyxDQUNGLENBQUMifQ==
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateQuotesStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const quote_1 = require("../../modules/quote");
6
+ exports.updateQuotesStep = (0, workflows_sdk_1.createStep)("update-quotes", async (data, { container }) => {
7
+ const quoteModuleService = container.resolve(quote_1.QUOTE_MODULE);
8
+ const dataBeforeUpdate = await quoteModuleService.listQuotes({ id: data.map((d) => d.id) });
9
+ const updatedQuotes = await quoteModuleService.updateQuotes(data);
10
+ return new workflows_sdk_1.StepResponse(updatedQuotes, {
11
+ dataBeforeUpdate,
12
+ });
13
+ }, async (revertInput, { container }) => {
14
+ if (!revertInput) {
15
+ return;
16
+ }
17
+ const quoteModuleService = container.resolve(quote_1.QUOTE_MODULE);
18
+ await quoteModuleService.updateQuotes(revertInput.dataBeforeUpdate);
19
+ });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXF1b3Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvdXBkYXRlLXF1b3Rlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBNkU7QUFDN0UsK0NBQW1EO0FBU3RDLFFBQUEsZ0JBQWdCLEdBQUcsSUFBQSwwQkFBVSxFQUN4QyxlQUFlLEVBQ2YsS0FBSyxFQUFFLElBQWUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDdkMsTUFBTSxrQkFBa0IsR0FBdUIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxvQkFBWSxDQUFDLENBQUM7SUFFL0UsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLGtCQUFrQixDQUFDLFVBQVUsQ0FDMUQsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQzlCLENBQUM7SUFFRixNQUFNLGFBQWEsR0FBRyxNQUFNLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVsRSxPQUFPLElBQUksNEJBQVksQ0FBQyxhQUFhLEVBQUU7UUFDckMsZ0JBQWdCO0tBQ2pCLENBQUMsQ0FBQztBQUNMLENBQUMsRUFDRCxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUNuQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakIsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLGtCQUFrQixHQUF1QixTQUFTLENBQUMsT0FBTyxDQUFDLG9CQUFZLENBQUMsQ0FBQztJQUUvRSxNQUFNLGtCQUFrQixDQUFDLFlBQVksQ0FDbkMsV0FBVyxDQUFDLGdCQUFnQixDQUM3QixDQUFDO0FBQ0osQ0FBQyxDQUNGLENBQUMifQ==
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateQuoteCanAcceptStep = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
6
+ const quote_status_enum_1 = require("../../modules/quote/types/quote-status.enum");
7
+ exports.validateQuoteCanAcceptStep = (0, workflows_sdk_1.createStep)("validate-quote-can-accept", async function ({ quote }) {
8
+ if (quote.status !== quote_status_enum_1.QuoteStatus.PENDING_CUSTOMER) {
9
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Cannot accept quote when quote status is ${quote.status}`);
10
+ }
11
+ });
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtcXVvdGUtY2FuLWFjY2VwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvdmFsaWRhdGUtcXVvdGUtY2FuLWFjY2VwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBd0Q7QUFDeEQscUVBQStEO0FBRy9ELG1GQUEwRTtBQU03RCxRQUFBLDBCQUEwQixHQUFHLElBQUEsMEJBQVUsRUFDbEQsMkJBQTJCLEVBQzNCLEtBQUssV0FBVyxFQUFFLEtBQUssRUFBYTtJQUNsQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssK0JBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2xELE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLDRDQUE0QyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQzNELENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyxDQUNGLENBQUMifQ==
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateQuoteNotAccepted = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
6
+ const quote_status_enum_1 = require("../../modules/quote/types/quote-status.enum");
7
+ exports.validateQuoteNotAccepted = (0, workflows_sdk_1.createStep)("validate-quote-not-accepted", async function ({ quote }) {
8
+ if (quote.status === quote_status_enum_1.QuoteStatus.ACCEPTED) {
9
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Quote is already accepted by customer`);
10
+ }
11
+ });
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtcXVvdGUtbm90LWFjY2VwdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdGVwcy92YWxpZGF0ZS1xdW90ZS1ub3QtYWNjZXB0ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQXdEO0FBQ3hELHFFQUErRDtBQUcvRCxtRkFBMEU7QUFNN0QsUUFBQSx3QkFBd0IsR0FBRyxJQUFBLDBCQUFVLEVBQ2hELDZCQUE2QixFQUM3QixLQUFLLFdBQVcsRUFBRSxLQUFLLEVBQWE7SUFDbEMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLCtCQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUMsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsdUNBQXVDLENBQ3hDLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyxDQUNGLENBQUMifQ==
package/README.md ADDED
@@ -0,0 +1,54 @@
1
+ # Medusa v2 Example: Quote Management
2
+
3
+ This directory holds the code for the [Quote Management Guide](https://docs.medusajs.com/resources/examples/guides/quote-management).
4
+
5
+ You can either:
6
+
7
+ - [install and use it as a Medusa application](#installation);
8
+ - or [copy its source files into an existing Medusa application](#copy-into-existing-medusa-application).
9
+
10
+ ## Prerequisites
11
+
12
+ - [Node.js v20+](https://nodejs.org/en/download)
13
+ - [Git CLI](https://git-scm.com/downloads)
14
+ - [PostgreSQL](https://www.postgresql.org/download/)
15
+
16
+ ## Installation
17
+ ### Copy into Existing Medusa Application
18
+
19
+ If you have an existing Medusa application, copy the following directories and files into your project:
20
+
21
+ - `src/admin`
22
+ - `src/api`
23
+ - `src/links`
24
+ - `src/modules/quotes`
25
+ - `src/workflows`
26
+
27
+ Then, add the Quote Module to `medusa-config.ts`:
28
+
29
+ ```ts
30
+ module.exports = defineConfig({
31
+ // ...
32
+ modules: [
33
+ {
34
+ resolve: "./src/modules/quote",
35
+ }
36
+ ],
37
+ })
38
+ ```
39
+
40
+ install dependencies
41
+ ```bash
42
+ yarn add lucide-react
43
+ ```
44
+
45
+ Finally, run migrations:
46
+
47
+ ```bash
48
+ npx medusa db:migrate
49
+ ```
50
+
51
+ ## More Resources
52
+
53
+ - [Medusa Documentatin](https://docs.medusajs.com)
54
+ - [OpenAPI Spec file](https://res.cloudinary.com/dza7lstvk/raw/upload/v1741171875/OpenApi/quote-management_tbk552.yml): Can be imported into tools like Postman to view and send requests to this project's API routes.
package/package.json ADDED
@@ -0,0 +1,83 @@
1
+ {
2
+ "name": "@lodashventure/medusa-quotation",
3
+ "version": "0.0.6",
4
+ "description": "A starter for Medusa plugins.",
5
+ "author": "Medusa (https://medusajs.com)",
6
+ "license": "MIT",
7
+ "files": [
8
+ ".medusa/server"
9
+ ],
10
+ "exports": {
11
+ "./package.json": "./package.json",
12
+ "./workflows": "./.medusa/server/src/workflows/index.js",
13
+ "./.medusa/server/src/modules/*": "./.medusa/server/src/modules/*/index.js",
14
+ "./modules/*": "./.medusa/server/src/modules/*/index.js",
15
+ "./providers/*": "./.medusa/server/src/providers/*/index.js",
16
+ "./*": "./.medusa/server/src/*.js"
17
+ },
18
+ "keywords": [
19
+ "medusa",
20
+ "plugin",
21
+ "medusa-plugin-other",
22
+ "medusa-plugin",
23
+ "medusa-v2"
24
+ ],
25
+ "scripts": {
26
+ "build": "medusa plugin:build",
27
+ "dev": "medusa plugin:develop",
28
+ "prepublishOnly": "medusa plugin:build"
29
+ },
30
+ "devDependencies": {
31
+ "@medusajs/admin-sdk": "2.7.1",
32
+ "@medusajs/cli": "2.7.1",
33
+ "@medusajs/framework": "2.7.1",
34
+ "@medusajs/icons": "2.7.1",
35
+ "@medusajs/medusa": "2.7.1",
36
+ "@medusajs/test-utils": "2.7.1",
37
+ "@medusajs/ui": "4.0.4",
38
+ "@mikro-orm/cli": "6.4.3",
39
+ "@mikro-orm/core": "6.4.3",
40
+ "@mikro-orm/knex": "6.4.3",
41
+ "@mikro-orm/migrations": "6.4.3",
42
+ "@mikro-orm/postgresql": "6.4.3",
43
+ "@swc/core": "1.5.7",
44
+ "@types/lodash": "^4",
45
+ "@types/node": "^20.0.0",
46
+ "@types/pdfmake": "^0",
47
+ "@types/react": "^18.3.2",
48
+ "@types/react-dom": "^18.2.25",
49
+ "awilix": "^8.0.1",
50
+ "pg": "^8.13.0",
51
+ "prop-types": "^15.8.1",
52
+ "react": "^18.2.0",
53
+ "react-dom": "^18.2.0",
54
+ "ts-node": "^10.9.2",
55
+ "typescript": "^5.6.2",
56
+ "vite": "^5.2.11",
57
+ "yalc": "^1.0.0-pre.53"
58
+ },
59
+ "peerDependencies": {
60
+ "@medusajs/admin-sdk": "2.7.1",
61
+ "@medusajs/cli": "2.7.1",
62
+ "@medusajs/framework": "2.7.1",
63
+ "@medusajs/icons": "2.7.1",
64
+ "@medusajs/medusa": "2.7.1",
65
+ "@medusajs/test-utils": "2.7.1",
66
+ "@medusajs/ui": "4.0.3",
67
+ "@mikro-orm/cli": "6.4.3",
68
+ "@mikro-orm/core": "6.4.3",
69
+ "@mikro-orm/knex": "6.4.3",
70
+ "@mikro-orm/migrations": "6.4.3",
71
+ "@mikro-orm/postgresql": "6.4.3",
72
+ "awilix": "^8.0.1",
73
+ "pg": "^8.13.0"
74
+ },
75
+ "engines": {
76
+ "node": ">=20"
77
+ },
78
+ "dependencies": {
79
+ "lodash": "^4.17.21",
80
+ "lucide-react": "^0.487.0",
81
+ "pdfmake": "^0.2.18"
82
+ }
83
+ }