Просмотр исходного кода

feat(core): Implement deletion of draft Orders

Relates to #1453
Michael Bromley 3 лет назад
Родитель
Сommit
dec00b1397

+ 9 - 0
packages/asset-server-plugin/e2e/graphql/generated-e2e-asset-server-plugin-types.ts

@@ -29,6 +29,7 @@ export type AddItemInput = {
 export type AddItemToDraftOrderInput = {
   productVariantId: Scalars['ID'];
   quantity: Scalars['Int'];
+  customFields?: Maybe<OrderLineCustomFieldsInput>;
 };
 
 export type AddManualPaymentToOrderResult = Order | ManualPaymentStateError;
@@ -66,6 +67,7 @@ export type Address = Node & {
 export type AdjustDraftOrderLineInput = {
   orderLineId: Scalars['ID'];
   quantity: Scalars['Int'];
+  customFields?: Maybe<OrderLineCustomFieldsInput>;
 };
 
 export type AdjustOrderLineInput = {
@@ -2413,6 +2415,8 @@ export type Mutation = {
   addManualPaymentToOrder: AddManualPaymentToOrderResult;
   /** Creates a draft Order */
   createDraftOrder: Order;
+  /** Deletes a draft Order */
+  deleteDraftOrder: DeletionResponse;
   /** Adds an item to the draft Order. */
   addItemToDraftOrder: UpdateOrderItemsResult;
   /** Adjusts a draft OrderLine. If custom fields are defined on the OrderLine entity, a third argument 'customFields' of type `OrderLineCustomFieldsInput` will be available. */
@@ -2885,6 +2889,11 @@ export type MutationAddManualPaymentToOrderArgs = {
 };
 
 
+export type MutationDeleteDraftOrderArgs = {
+  orderId: Scalars['ID'];
+};
+
+
 export type MutationAddItemToDraftOrderArgs = {
   orderId: Scalars['ID'];
   input: AddItemToDraftOrderInput;

+ 9 - 0
packages/common/src/generated-types.ts

@@ -29,6 +29,7 @@ export type AddItemInput = {
 export type AddItemToDraftOrderInput = {
   productVariantId: Scalars['ID'];
   quantity: Scalars['Int'];
+  customFields?: Maybe<OrderLineCustomFieldsInput>;
 };
 
 export type AddManualPaymentToOrderResult = Order | ManualPaymentStateError;
@@ -67,6 +68,7 @@ export type Address = Node & {
 export type AdjustDraftOrderLineInput = {
   orderLineId: Scalars['ID'];
   quantity: Scalars['Int'];
+  customFields?: Maybe<OrderLineCustomFieldsInput>;
 };
 
 export type AdjustOrderLineInput = {
@@ -2491,6 +2493,8 @@ export type Mutation = {
   addManualPaymentToOrder: AddManualPaymentToOrderResult;
   /** Creates a draft Order */
   createDraftOrder: Order;
+  /** Deletes a draft Order */
+  deleteDraftOrder: DeletionResponse;
   /** Adds an item to the draft Order. */
   addItemToDraftOrder: UpdateOrderItemsResult;
   /** Adjusts a draft OrderLine. If custom fields are defined on the OrderLine entity, a third argument 'customFields' of type `OrderLineCustomFieldsInput` will be available. */
@@ -2963,6 +2967,11 @@ export type MutationAddManualPaymentToOrderArgs = {
 };
 
 
+export type MutationDeleteDraftOrderArgs = {
+  orderId: Scalars['ID'];
+};
+
+
 export type MutationAddItemToDraftOrderArgs = {
   orderId: Scalars['ID'];
   input: AddItemToDraftOrderInput;

+ 9 - 0
packages/core/e2e/graphql/generated-e2e-admin-types.ts

@@ -29,6 +29,7 @@ export type AddItemInput = {
 export type AddItemToDraftOrderInput = {
   productVariantId: Scalars['ID'];
   quantity: Scalars['Int'];
+  customFields?: Maybe<OrderLineCustomFieldsInput>;
 };
 
 export type AddManualPaymentToOrderResult = Order | ManualPaymentStateError;
@@ -66,6 +67,7 @@ export type Address = Node & {
 export type AdjustDraftOrderLineInput = {
   orderLineId: Scalars['ID'];
   quantity: Scalars['Int'];
+  customFields?: Maybe<OrderLineCustomFieldsInput>;
 };
 
 export type AdjustOrderLineInput = {
@@ -2413,6 +2415,8 @@ export type Mutation = {
   addManualPaymentToOrder: AddManualPaymentToOrderResult;
   /** Creates a draft Order */
   createDraftOrder: Order;
+  /** Deletes a draft Order */
+  deleteDraftOrder: DeletionResponse;
   /** Adds an item to the draft Order. */
   addItemToDraftOrder: UpdateOrderItemsResult;
   /** Adjusts a draft OrderLine. If custom fields are defined on the OrderLine entity, a third argument 'customFields' of type `OrderLineCustomFieldsInput` will be available. */
@@ -2885,6 +2889,11 @@ export type MutationAddManualPaymentToOrderArgs = {
 };
 
 
+export type MutationDeleteDraftOrderArgs = {
+  orderId: Scalars['ID'];
+};
+
+
 export type MutationAddItemToDraftOrderArgs = {
   orderId: Scalars['ID'];
   input: AddItemToDraftOrderInput;

+ 30 - 0
packages/core/src/api/resolvers/admin/draft-order.resolver.ts

@@ -7,9 +7,12 @@ import {
     UpdateOrderItemsResult,
 } from '@vendure/common/lib/generated-shop-types';
 import {
+    DeletionResponse,
+    DeletionResult,
     MutationAddItemToDraftOrderArgs,
     MutationAdjustDraftOrderLineArgs,
     MutationApplyCouponCodeToDraftOrderArgs,
+    MutationDeleteDraftOrderArgs,
     MutationRemoveCouponCodeFromDraftOrderArgs,
     MutationRemoveDraftOrderLineArgs,
     MutationSetCustomerForDraftOrderArgs,
@@ -46,6 +49,33 @@ export class DraftOrderResolver {
         return this.orderService.createDraft(ctx);
     }
 
+    @Transaction()
+    @Mutation()
+    @Allow(Permission.DeleteOrder)
+    async deleteDraftOrder(
+        @Ctx() ctx: RequestContext,
+        @Args() args: MutationDeleteDraftOrderArgs,
+    ): Promise<DeletionResponse> {
+        const order = await this.orderService.findOne(ctx, args.orderId);
+        if (!order || order.state !== 'Draft') {
+            return {
+                result: DeletionResult.NOT_DELETED,
+                message: `No draft Order with the ID ${args.orderId} was found`,
+            };
+        }
+        try {
+            await this.orderService.deleteOrder(ctx, args.orderId);
+            return {
+                result: DeletionResult.DELETED,
+            };
+        } catch (e: any) {
+            return {
+                result: DeletionResult.NOT_DELETED,
+                message: e.message,
+            };
+        }
+    }
+
     @Transaction()
     @Mutation()
     @Allow(Permission.CreateOrder)

+ 2 - 0
packages/core/src/api/schema/admin-api/order.api.graphql

@@ -36,6 +36,8 @@ type Mutation {
     addManualPaymentToOrder(input: ManualPaymentInput!): AddManualPaymentToOrderResult!
     "Creates a draft Order"
     createDraftOrder: Order!
+    "Deletes a draft Order"
+    deleteDraftOrder(orderId: ID!): DeletionResponse!
     "Adds an item to the draft Order."
     addItemToDraftOrder(orderId: ID!, input: AddItemToDraftOrderInput!): UpdateOrderItemsResult!
     "Adjusts a draft OrderLine. If custom fields are defined on the OrderLine entity, a third argument 'customFields' of type `OrderLineCustomFieldsInput` will be available."

+ 1 - 1
packages/core/src/service/helpers/order-state-machine/order-state.ts

@@ -38,7 +38,7 @@ export const orderStateTransitions: Transitions<OrderState> = {
         to: ['AddingItems', 'Draft'],
     },
     Draft: {
-        to: ['Cancelled', 'PaymentAuthorized', 'PaymentSettled'],
+        to: ['Cancelled', 'ArrangingPayment'],
     },
     AddingItems: {
         to: ['ArrangingPayment', 'Cancelled'],

+ 9 - 0
packages/elasticsearch-plugin/e2e/graphql/generated-e2e-elasticsearch-plugin-types.ts

@@ -29,6 +29,7 @@ export type AddItemInput = {
 export type AddItemToDraftOrderInput = {
   productVariantId: Scalars['ID'];
   quantity: Scalars['Int'];
+  customFields?: Maybe<OrderLineCustomFieldsInput>;
 };
 
 export type AddManualPaymentToOrderResult = Order | ManualPaymentStateError;
@@ -66,6 +67,7 @@ export type Address = Node & {
 export type AdjustDraftOrderLineInput = {
   orderLineId: Scalars['ID'];
   quantity: Scalars['Int'];
+  customFields?: Maybe<OrderLineCustomFieldsInput>;
 };
 
 export type AdjustOrderLineInput = {
@@ -2413,6 +2415,8 @@ export type Mutation = {
   addManualPaymentToOrder: AddManualPaymentToOrderResult;
   /** Creates a draft Order */
   createDraftOrder: Order;
+  /** Deletes a draft Order */
+  deleteDraftOrder: DeletionResponse;
   /** Adds an item to the draft Order. */
   addItemToDraftOrder: UpdateOrderItemsResult;
   /** Adjusts a draft OrderLine. If custom fields are defined on the OrderLine entity, a third argument 'customFields' of type `OrderLineCustomFieldsInput` will be available. */
@@ -2885,6 +2889,11 @@ export type MutationAddManualPaymentToOrderArgs = {
 };
 
 
+export type MutationDeleteDraftOrderArgs = {
+  orderId: Scalars['ID'];
+};
+
+
 export type MutationAddItemToDraftOrderArgs = {
   orderId: Scalars['ID'];
   input: AddItemToDraftOrderInput;

+ 9 - 0
packages/payments-plugin/e2e/graphql/generated-admin-types.ts

@@ -29,6 +29,7 @@ export type AddItemInput = {
 export type AddItemToDraftOrderInput = {
   productVariantId: Scalars['ID'];
   quantity: Scalars['Int'];
+  customFields?: Maybe<OrderLineCustomFieldsInput>;
 };
 
 export type AddManualPaymentToOrderResult = Order | ManualPaymentStateError;
@@ -66,6 +67,7 @@ export type Address = Node & {
 export type AdjustDraftOrderLineInput = {
   orderLineId: Scalars['ID'];
   quantity: Scalars['Int'];
+  customFields?: Maybe<OrderLineCustomFieldsInput>;
 };
 
 export type AdjustOrderLineInput = {
@@ -2413,6 +2415,8 @@ export type Mutation = {
   addManualPaymentToOrder: AddManualPaymentToOrderResult;
   /** Creates a draft Order */
   createDraftOrder: Order;
+  /** Deletes a draft Order */
+  deleteDraftOrder: DeletionResponse;
   /** Adds an item to the draft Order. */
   addItemToDraftOrder: UpdateOrderItemsResult;
   /** Adjusts a draft OrderLine. If custom fields are defined on the OrderLine entity, a third argument 'customFields' of type `OrderLineCustomFieldsInput` will be available. */
@@ -2885,6 +2889,11 @@ export type MutationAddManualPaymentToOrderArgs = {
 };
 
 
+export type MutationDeleteDraftOrderArgs = {
+  orderId: Scalars['ID'];
+};
+
+
 export type MutationAddItemToDraftOrderArgs = {
   orderId: Scalars['ID'];
   input: AddItemToDraftOrderInput;

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
schema-admin.json


Некоторые файлы не были показаны из-за большого количества измененных файлов