From 24a8b242b21b6d033ab5db2f1ab98ba3943756e7 Mon Sep 17 00:00:00 2001 From: --list Date: Tue, 15 Jun 2021 17:29:42 +0200 Subject: [PATCH] added draft-cart no_notification element to allow passing this to orders as admin --- .../src/services/manual-fulfillment.js | 5 +++++ .../src/api/routes/admin/draft-orders/create-draft-order.js | 4 ++++ .../src/api/routes/admin/draft-orders/update-draft-order.js | 6 ++++++ .../medusa/src/migrations/1623231564533-no_notification.ts | 3 +++ packages/medusa/src/models/cart.ts | 2 +- packages/medusa/src/models/draft-order.ts | 5 +++++ packages/medusa/src/services/__tests__/draft-order.js | 1 + packages/medusa/src/services/draft-order.js | 5 +++-- packages/medusa/src/services/order.js | 4 +++- 9 files changed, 31 insertions(+), 4 deletions(-) diff --git a/packages/medusa-fulfillment-manual/src/services/manual-fulfillment.js b/packages/medusa-fulfillment-manual/src/services/manual-fulfillment.js index 389dca5127..f5e6817fa5 100644 --- a/packages/medusa-fulfillment-manual/src/services/manual-fulfillment.js +++ b/packages/medusa-fulfillment-manual/src/services/manual-fulfillment.js @@ -31,6 +31,11 @@ class ManualFulfillmentService extends FulfillmentService { throw Error("Manual Fulfillment service cannot calculatePrice") } + createReturn() { + // No data is being sent anywhere + return Promise.resolve({}) + } + createOrder() { // No data is being sent anywhere return Promise.resolve({}) diff --git a/packages/medusa/src/api/routes/admin/draft-orders/create-draft-order.js b/packages/medusa/src/api/routes/admin/draft-orders/create-draft-order.js index 3c0e358a9e..91c5e70197 100644 --- a/packages/medusa/src/api/routes/admin/draft-orders/create-draft-order.js +++ b/packages/medusa/src/api/routes/admin/draft-orders/create-draft-order.js @@ -59,6 +59,9 @@ import { defaultFields, defaultRelations } from "." * customer_id: * description: The id of the customer to add on the draft order * type: string + * no_notification_order: + * description: An optional flag passed to the resulting order to determine use of notifications. + * type: boolean * shipping_methods: * description: The shipping methods for the draft order * type: array @@ -119,6 +122,7 @@ export default async (req, res) => { }) .optional(), customer_id: Validator.string().optional(), + no_notification_order: Validator.boolean().optional(), shipping_methods: Validator.array() .items({ option_id: Validator.string().required(), diff --git a/packages/medusa/src/api/routes/admin/draft-orders/update-draft-order.js b/packages/medusa/src/api/routes/admin/draft-orders/update-draft-order.js index 6230f553d5..9a84fa5a25 100644 --- a/packages/medusa/src/api/routes/admin/draft-orders/update-draft-order.js +++ b/packages/medusa/src/api/routes/admin/draft-orders/update-draft-order.js @@ -35,6 +35,9 @@ import { defaultCartFields, defaultCartRelations, defaultFields } from "." * code: * description: "The code that a Discount is identifed by." * type: string + * no_notification_order: + * description: "An optional flag passed to the resulting order to determine use of notifications."" + * type: boolean * customer_id: * description: "The id of the Customer to associate the Draft Order with." * type: string @@ -68,6 +71,7 @@ export default async (req, res) => { }) .optional(), customer_id: Validator.string().optional(), + no_notification_order: Validator.boolean().optional(), }) const { value, error } = schema.validate(req.body) @@ -88,6 +92,8 @@ export default async (req, res) => { ) } + await draftOrderService.update(draftOrder.id, value) + await cartService.update(draftOrder.cart_id, value) draftOrder.cart = await cartService.retrieve(draftOrder.cart_id, { diff --git a/packages/medusa/src/migrations/1623231564533-no_notification.ts b/packages/medusa/src/migrations/1623231564533-no_notification.ts index 2b3cac3d30..20e3f9a9a2 100644 --- a/packages/medusa/src/migrations/1623231564533-no_notification.ts +++ b/packages/medusa/src/migrations/1623231564533-no_notification.ts @@ -8,13 +8,16 @@ export class noNotification1623231564533 implements MigrationInterface { await queryRunner.query(`ALTER TABLE "claim_order" ADD "no_notification" boolean`); await queryRunner.query(`ALTER TABLE "swap" ADD "no_notification" boolean`); await queryRunner.query(`ALTER TABLE "order" ADD "no_notification" boolean`); + await queryRunner.query(`ALTER TABLE "draft_order" ADD "no_notification_order" boolean`); } public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "draft_order" DROP COLUMN "no_notification_order"`); await queryRunner.query(`ALTER TABLE "order" DROP COLUMN "no_notification"`); await queryRunner.query(`ALTER TABLE "swap" DROP COLUMN "no_notification"`); await queryRunner.query(`ALTER TABLE "claim_order" DROP COLUMN "no_notification"`); await queryRunner.query(`ALTER TABLE "return" DROP COLUMN "no_notification"`); + } } diff --git a/packages/medusa/src/models/cart.ts b/packages/medusa/src/models/cart.ts index dbb5f53b53..3190685171 100644 --- a/packages/medusa/src/models/cart.ts +++ b/packages/medusa/src/models/cart.ts @@ -246,7 +246,7 @@ export class Cart { @Column({ type: "jsonb", nullable: true }) context: any - + // Total fields shipping_total: number discount_total: number diff --git a/packages/medusa/src/models/draft-order.ts b/packages/medusa/src/models/draft-order.ts index 7430e6ee07..7c49919069 100644 --- a/packages/medusa/src/models/draft-order.ts +++ b/packages/medusa/src/models/draft-order.ts @@ -61,6 +61,9 @@ export class DraftOrder { @Column({ type: "timestamptz", nullable: true }) completed_at: Date + @Column({ nullable: true}) + no_notification_order: boolean + @Column({ type: "jsonb", nullable: true }) metadata: any @@ -115,6 +118,8 @@ export class DraftOrder { * completed_at: * type: string * format: date-time + * no_notification_order: + * type: boolean * metadata: * type: object * idempotency_key: diff --git a/packages/medusa/src/services/__tests__/draft-order.js b/packages/medusa/src/services/__tests__/draft-order.js index ab5460f553..22ebe4cc95 100644 --- a/packages/medusa/src/services/__tests__/draft-order.js +++ b/packages/medusa/src/services/__tests__/draft-order.js @@ -205,4 +205,5 @@ describe("DraftOrderService", () => { } }) }) + }) diff --git a/packages/medusa/src/services/draft-order.js b/packages/medusa/src/services/draft-order.js index e04f3ad794..41d83c9adb 100644 --- a/packages/medusa/src/services/draft-order.js +++ b/packages/medusa/src/services/draft-order.js @@ -248,7 +248,8 @@ class DraftOrderService extends BaseService { ) } - const { items, shipping_methods, discounts, ...rest } = data + const { items, shipping_methods, discounts, no_notification_order=undefined, ...rest } = data + if (discounts) { for (const { code } of discounts) { @@ -263,7 +264,7 @@ class DraftOrderService extends BaseService { .withTransaction(manager) .create({ type: "draft_order", ...rest }) - const draftOrder = draftOrderRepo.create({ cart_id: createdCart.id }) + const draftOrder = draftOrderRepo.create({ cart_id: createdCart.id, no_notification_order}) const result = await draftOrderRepo.save(draftOrder) await this.eventBus_ diff --git a/packages/medusa/src/services/order.js b/packages/medusa/src/services/order.js index 3b2192abc1..1fedacfa89 100644 --- a/packages/medusa/src/services/order.js +++ b/packages/medusa/src/services/order.js @@ -507,6 +507,7 @@ class OrderService extends BaseService { .retrieveByCartId(cart.id) toCreate.draft_order_id = draft.id + toCreate.no_notification = draft.no_notification_order } const o = await orderRepo.create(toCreate) @@ -552,7 +553,8 @@ class OrderService extends BaseService { await this.eventBus_ .withTransaction(manager) .emit(OrderService.Events.PLACED, { - id: result.id + id: result.id, + no_notification: result.no_notification }) return result