medusajs / medusa

Building blocks for digital commerce
https://medusajs.com
MIT License
24.98k stars 2.49k forks source link

Discount Generator plugin not working #7350

Open Rhaegar28 opened 5 months ago

Rhaegar28 commented 5 months ago

Preliminary Checks

Issue Summary

I'm trying to use medusa-plugin-discount-generator. According to the documentation, the plugin can be tested in two different ways: using the API route /discount-code and using the DiscountGeneratorService. In the first case i get this error:

TypeError: Cannot read properties of undefined (reading 'object')
    at _callee$ (/home/rhaegar/Documenti/Progetti/eCommerceTest/medusa-ecommerce/medusa-ecommerce/node_modules/medusa-plugin-discount-generator/api/index.js:36:51)
    at tryCatch (/home/rhaegar/Documenti/Progetti/eCommerceTest/medusa-ecommerce/medusa-ecommerce/node_modules/medusa-plugin-discount-generator/api/index.js:20:2407)
    at Generator._invoke (/home/rhaegar/Documenti/Progetti/eCommerceTest/medusa-ecommerce/medusa-ecommerce/node_modules/medusa-plugin-discount-generator/api/index.js:20:1967)
    at Generator.next (/home/rhaegar/Documenti/Progetti/eCommerceTest/medusa-ecommerce/medusa-ecommerce/node_modules/medusa-plugin-discount-generator/api/index.js:20:3258)
    at asyncGeneratorStep (/home/rhaegar/Documenti/Progetti/eCommerceTest/medusa-ecommerce/medusa-ecommerce/node_modules/medusa-plugin-discount-generator/api/index.js:22:103)
    at _next (/home/rhaegar/Documenti/Progetti/eCommerceTest/medusa-ecommerce/medusa-ecommerce/node_modules/medusa-plugin-discount-generator/api/index.js:24:194)
    at /home/rhaegar/Documenti/Progetti/eCommerceTest/medusa-ecommerce/medusa-ecommerce/node_modules/medusa-plugin-discount-generator/api/index.js:24:364
    at new Promise (<anonymous>)
    at /home/rhaegar/Documenti/Progetti/eCommerceTest/medusa-ecommerce/medusa-ecommerce/node_modules/medusa-plugin-discount-generator/api/index.js:24:97
    at /home/rhaegar/Documenti/Progetti/eCommerceTest/medusa-ecommerce/medusa-ecommerce/node_modules/medusa-plugin-discount-generator/api/index.js:68:19
::1 - - [16/May/2024:16:02:40 +0000] "POST /discount-code HTTP/1.1" - - "-" "PostmanRuntime/7.36.3"

In the second case, using the given API route example, I get this error:

error:   "discountId" must be defined
Error: "discountId" must be defined
    at DiscountService.<anonymous> (/home/rhaegar/Documenti/Progetti/eCommerceTest/medusa-ecommerce/medusa-ecommerce/node_modules/@medusajs/medusa/dist/services/discount.js:311:35)
    at step (/home/rhaegar/Documenti/Progetti/eCommerceTest/medusa-ecommerce/medusa-ecommerce/node_modules/@medusajs/medusa/dist/services/discount.js:59:23)
    at Object.next (/home/rhaegar/Documenti/Progetti/eCommerceTest/medusa-ecommerce/medusa-ecommerce/node_modules/@medusajs/medusa/dist/services/discount.js:40:53)
    at /home/rhaegar/Documenti/Progetti/eCommerceTest/medusa-ecommerce/medusa-ecommerce/node_modules/@medusajs/medusa/dist/services/discount.js:34:71
    at new Promise (<anonymous>)
    at __awaiter (/home/rhaegar/Documenti/Progetti/eCommerceTest/medusa-ecommerce/medusa-ecommerce/node_modules/@medusajs/medusa/dist/services/discount.js:30:12)
    at DiscountService.retrieve (/home/rhaegar/Documenti/Progetti/eCommerceTest/medusa-ecommerce/medusa-ecommerce/node_modules/@medusajs/medusa/dist/services/discount.js:305:16)
    at DiscountService.<anonymous> (/home/rhaegar/Documenti/Progetti/eCommerceTest/medusa-ecommerce/medusa-ecommerce/node_modules/@medusajs/medusa/dist/services/discount.js:502:67)
    at step (/home/rhaegar/Documenti/Progetti/eCommerceTest/medusa-ecommerce/medusa-ecommerce/node_modules/@medusajs/medusa/dist/services/discount.js:59:23)
    at Object.next (/home/rhaegar/Documenti/Progetti/eCommerceTest/medusa-ecommerce/medusa-ecommerce/node_modules/@medusajs/medusa/dist/services/discount.js:40:53) {
  type: 'not_found',
  code: undefined,
  date: 2024-05-16T15:58:23.813Z
}
::1 - - [16/May/2024:15:58:23 +0000] "POST /store/generate-discount-code HTTP/1.1" 404 63 "-" "PostmanRuntime/7.36.3"

I do not know how to solve the first case but I understand what's the problem in the second case: in the discount.js file in @medusajs/medusa/dist/services module the generateDiscount function returns this return _context.abrupt("return", this.discountService_.createDynamicCode(discount._id, data)); But the id property in the database is "id" and not "_id" so it doesn't work.

How can this issue be resolved?

  1. Put "id" instead of "_id" in the generateDiscount function inside @medusajs/medusa/dist/services/discount.js file
  2. ...

Are you interested in working on this issue?

github-actions[bot] commented 6 days ago

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 3 days.