Procházet zdrojové kódy

refactor(core): Associate Refunds with Payment rather than Order

Relates to #121
Michael Bromley před 6 roky
rodič
revize
a1340ea29a

+ 2 - 1
packages/common/src/generated-shop-types.ts

@@ -1323,7 +1323,6 @@ export type Order = Node & {
     lines: Array<OrderLine>;
     lines: Array<OrderLine>;
     adjustments: Array<Adjustment>;
     adjustments: Array<Adjustment>;
     payments?: Maybe<Array<Payment>>;
     payments?: Maybe<Array<Payment>>;
-    refunds?: Maybe<Array<Refund>>;
     fulfillments?: Maybe<Array<Fulfillment>>;
     fulfillments?: Maybe<Array<Fulfillment>>;
     subTotalBeforeTax: Scalars['Int'];
     subTotalBeforeTax: Scalars['Int'];
     subTotal: Scalars['Int'];
     subTotal: Scalars['Int'];
@@ -1376,6 +1375,7 @@ export type OrderItem = Node & {
     taxRate: Scalars['Float'];
     taxRate: Scalars['Float'];
     adjustments: Array<Adjustment>;
     adjustments: Array<Adjustment>;
     fulfillment?: Maybe<Fulfillment>;
     fulfillment?: Maybe<Fulfillment>;
+    refundId?: Maybe<Scalars['ID']>;
 };
 };
 
 
 export type OrderLine = Node & {
 export type OrderLine = Node & {
@@ -1437,6 +1437,7 @@ export type Payment = Node & {
     amount: Scalars['Int'];
     amount: Scalars['Int'];
     state: Scalars['String'];
     state: Scalars['String'];
     transactionId?: Maybe<Scalars['String']>;
     transactionId?: Maybe<Scalars['String']>;
+    refunds: Array<Refund>;
     metadata?: Maybe<Scalars['JSON']>;
     metadata?: Maybe<Scalars['JSON']>;
 };
 };
 
 

+ 14 - 13
packages/common/src/generated-types.ts

@@ -1540,8 +1540,8 @@ export type Mutation = {
   updateFacetValues: Array<FacetValue>,
   updateFacetValues: Array<FacetValue>,
   /** Delete one or more FacetValues */
   /** Delete one or more FacetValues */
   deleteFacetValues: Array<DeletionResponse>,
   deleteFacetValues: Array<DeletionResponse>,
-  updateGlobalSettings: GlobalSettings,
   importProducts?: Maybe<ImportInfo>,
   importProducts?: Maybe<ImportInfo>,
+  updateGlobalSettings: GlobalSettings,
   settlePayment: Payment,
   settlePayment: Payment,
   fulfillOrder: Fulfillment,
   fulfillOrder: Fulfillment,
   cancelOrder: Order,
   cancelOrder: Order,
@@ -1553,7 +1553,6 @@ export type Mutation = {
   createProductOptionGroup: ProductOptionGroup,
   createProductOptionGroup: ProductOptionGroup,
   /** Update an existing ProductOptionGroup */
   /** Update an existing ProductOptionGroup */
   updateProductOptionGroup: ProductOptionGroup,
   updateProductOptionGroup: ProductOptionGroup,
-  reindex: JobInfo,
   /** Create a new Product */
   /** Create a new Product */
   createProduct: Product,
   createProduct: Product,
   /** Update an existing Product */
   /** Update an existing Product */
@@ -1568,6 +1567,7 @@ export type Mutation = {
   generateVariantsForProduct: Product,
   generateVariantsForProduct: Product,
   /** Update existing ProductVariants */
   /** Update existing ProductVariants */
   updateProductVariants: Array<Maybe<ProductVariant>>,
   updateProductVariants: Array<Maybe<ProductVariant>>,
+  reindex: JobInfo,
   createPromotion: Promotion,
   createPromotion: Promotion,
   updatePromotion: Promotion,
   updatePromotion: Promotion,
   deletePromotion: DeletionResponse,
   deletePromotion: DeletionResponse,
@@ -1754,13 +1754,13 @@ export type MutationDeleteFacetValuesArgs = {
 };
 };
 
 
 
 
-export type MutationUpdateGlobalSettingsArgs = {
-  input: UpdateGlobalSettingsInput
+export type MutationImportProductsArgs = {
+  csvFile: Scalars['Upload']
 };
 };
 
 
 
 
-export type MutationImportProductsArgs = {
-  csvFile: Scalars['Upload']
+export type MutationUpdateGlobalSettingsArgs = {
+  input: UpdateGlobalSettingsInput
 };
 };
 
 
 
 
@@ -1958,7 +1958,6 @@ export type Order = Node & {
   lines: Array<OrderLine>,
   lines: Array<OrderLine>,
   adjustments: Array<Adjustment>,
   adjustments: Array<Adjustment>,
   payments?: Maybe<Array<Payment>>,
   payments?: Maybe<Array<Payment>>,
-  refunds?: Maybe<Array<Refund>>,
   fulfillments?: Maybe<Array<Fulfillment>>,
   fulfillments?: Maybe<Array<Fulfillment>>,
   subTotalBeforeTax: Scalars['Int'],
   subTotalBeforeTax: Scalars['Int'],
   subTotal: Scalars['Int'],
   subTotal: Scalars['Int'],
@@ -2011,6 +2010,7 @@ export type OrderItem = Node & {
   taxRate: Scalars['Float'],
   taxRate: Scalars['Float'],
   adjustments: Array<Adjustment>,
   adjustments: Array<Adjustment>,
   fulfillment?: Maybe<Fulfillment>,
   fulfillment?: Maybe<Fulfillment>,
+  refundId?: Maybe<Scalars['ID']>,
 };
 };
 
 
 export type OrderLine = Node & {
 export type OrderLine = Node & {
@@ -2077,6 +2077,7 @@ export type Payment = Node & {
   amount: Scalars['Int'],
   amount: Scalars['Int'],
   state: Scalars['String'],
   state: Scalars['String'],
   transactionId?: Maybe<Scalars['String']>,
   transactionId?: Maybe<Scalars['String']>,
+  refunds: Array<Refund>,
   metadata?: Maybe<Scalars['JSON']>,
   metadata?: Maybe<Scalars['JSON']>,
 };
 };
 
 
@@ -2441,10 +2442,10 @@ export type Query = {
   paymentMethod?: Maybe<PaymentMethod>,
   paymentMethod?: Maybe<PaymentMethod>,
   productOptionGroups: Array<ProductOptionGroup>,
   productOptionGroups: Array<ProductOptionGroup>,
   productOptionGroup?: Maybe<ProductOptionGroup>,
   productOptionGroup?: Maybe<ProductOptionGroup>,
-  search: SearchResponse,
   products: ProductList,
   products: ProductList,
   /** Get a Product either by id or slug. If neither id nor slug is speicified, an error will result. */
   /** Get a Product either by id or slug. If neither id nor slug is speicified, an error will result. */
   product?: Maybe<Product>,
   product?: Maybe<Product>,
+  search: SearchResponse,
   promotion?: Maybe<Promotion>,
   promotion?: Maybe<Promotion>,
   promotions: PromotionList,
   promotions: PromotionList,
   adjustmentOperations: AdjustmentOperations,
   adjustmentOperations: AdjustmentOperations,
@@ -2579,11 +2580,6 @@ export type QueryProductOptionGroupArgs = {
 };
 };
 
 
 
 
-export type QuerySearchArgs = {
-  input: SearchInput
-};
-
-
 export type QueryProductsArgs = {
 export type QueryProductsArgs = {
   languageCode?: Maybe<LanguageCode>,
   languageCode?: Maybe<LanguageCode>,
   options?: Maybe<ProductListOptions>
   options?: Maybe<ProductListOptions>
@@ -2597,6 +2593,11 @@ export type QueryProductArgs = {
 };
 };
 
 
 
 
+export type QuerySearchArgs = {
+  input: SearchInput
+};
+
+
 export type QueryPromotionArgs = {
 export type QueryPromotionArgs = {
   id: Scalars['ID']
   id: Scalars['ID']
 };
 };

+ 13 - 12
packages/core/e2e/graphql/generated-e2e-admin-types.ts

@@ -1537,8 +1537,8 @@ export type Mutation = {
     updateFacetValues: Array<FacetValue>;
     updateFacetValues: Array<FacetValue>;
     /** Delete one or more FacetValues */
     /** Delete one or more FacetValues */
     deleteFacetValues: Array<DeletionResponse>;
     deleteFacetValues: Array<DeletionResponse>;
-    updateGlobalSettings: GlobalSettings;
     importProducts?: Maybe<ImportInfo>;
     importProducts?: Maybe<ImportInfo>;
+    updateGlobalSettings: GlobalSettings;
     settlePayment: Payment;
     settlePayment: Payment;
     fulfillOrder: Fulfillment;
     fulfillOrder: Fulfillment;
     cancelOrder: Order;
     cancelOrder: Order;
@@ -1550,7 +1550,6 @@ export type Mutation = {
     createProductOptionGroup: ProductOptionGroup;
     createProductOptionGroup: ProductOptionGroup;
     /** Update an existing ProductOptionGroup */
     /** Update an existing ProductOptionGroup */
     updateProductOptionGroup: ProductOptionGroup;
     updateProductOptionGroup: ProductOptionGroup;
-    reindex: JobInfo;
     /** Create a new Product */
     /** Create a new Product */
     createProduct: Product;
     createProduct: Product;
     /** Update an existing Product */
     /** Update an existing Product */
@@ -1565,6 +1564,7 @@ export type Mutation = {
     generateVariantsForProduct: Product;
     generateVariantsForProduct: Product;
     /** Update existing ProductVariants */
     /** Update existing ProductVariants */
     updateProductVariants: Array<Maybe<ProductVariant>>;
     updateProductVariants: Array<Maybe<ProductVariant>>;
+    reindex: JobInfo;
     createPromotion: Promotion;
     createPromotion: Promotion;
     updatePromotion: Promotion;
     updatePromotion: Promotion;
     deletePromotion: DeletionResponse;
     deletePromotion: DeletionResponse;
@@ -1721,14 +1721,14 @@ export type MutationDeleteFacetValuesArgs = {
     force?: Maybe<Scalars['Boolean']>;
     force?: Maybe<Scalars['Boolean']>;
 };
 };
 
 
-export type MutationUpdateGlobalSettingsArgs = {
-    input: UpdateGlobalSettingsInput;
-};
-
 export type MutationImportProductsArgs = {
 export type MutationImportProductsArgs = {
     csvFile: Scalars['Upload'];
     csvFile: Scalars['Upload'];
 };
 };
 
 
+export type MutationUpdateGlobalSettingsArgs = {
+    input: UpdateGlobalSettingsInput;
+};
+
 export type MutationSettlePaymentArgs = {
 export type MutationSettlePaymentArgs = {
     id: Scalars['ID'];
     id: Scalars['ID'];
 };
 };
@@ -1893,7 +1893,6 @@ export type Order = Node & {
     lines: Array<OrderLine>;
     lines: Array<OrderLine>;
     adjustments: Array<Adjustment>;
     adjustments: Array<Adjustment>;
     payments?: Maybe<Array<Payment>>;
     payments?: Maybe<Array<Payment>>;
-    refunds?: Maybe<Array<Refund>>;
     fulfillments?: Maybe<Array<Fulfillment>>;
     fulfillments?: Maybe<Array<Fulfillment>>;
     subTotalBeforeTax: Scalars['Int'];
     subTotalBeforeTax: Scalars['Int'];
     subTotal: Scalars['Int'];
     subTotal: Scalars['Int'];
@@ -1946,6 +1945,7 @@ export type OrderItem = Node & {
     taxRate: Scalars['Float'];
     taxRate: Scalars['Float'];
     adjustments: Array<Adjustment>;
     adjustments: Array<Adjustment>;
     fulfillment?: Maybe<Fulfillment>;
     fulfillment?: Maybe<Fulfillment>;
+    refundId?: Maybe<Scalars['ID']>;
 };
 };
 
 
 export type OrderLine = Node & {
 export type OrderLine = Node & {
@@ -2012,6 +2012,7 @@ export type Payment = Node & {
     amount: Scalars['Int'];
     amount: Scalars['Int'];
     state: Scalars['String'];
     state: Scalars['String'];
     transactionId?: Maybe<Scalars['String']>;
     transactionId?: Maybe<Scalars['String']>;
+    refunds: Array<Refund>;
     metadata?: Maybe<Scalars['JSON']>;
     metadata?: Maybe<Scalars['JSON']>;
 };
 };
 
 
@@ -2375,10 +2376,10 @@ export type Query = {
     paymentMethod?: Maybe<PaymentMethod>;
     paymentMethod?: Maybe<PaymentMethod>;
     productOptionGroups: Array<ProductOptionGroup>;
     productOptionGroups: Array<ProductOptionGroup>;
     productOptionGroup?: Maybe<ProductOptionGroup>;
     productOptionGroup?: Maybe<ProductOptionGroup>;
-    search: SearchResponse;
     products: ProductList;
     products: ProductList;
     /** Get a Product either by id or slug. If neither id nor slug is speicified, an error will result. */
     /** Get a Product either by id or slug. If neither id nor slug is speicified, an error will result. */
     product?: Maybe<Product>;
     product?: Maybe<Product>;
+    search: SearchResponse;
     promotion?: Maybe<Promotion>;
     promotion?: Maybe<Promotion>;
     promotions: PromotionList;
     promotions: PromotionList;
     adjustmentOperations: AdjustmentOperations;
     adjustmentOperations: AdjustmentOperations;
@@ -2490,10 +2491,6 @@ export type QueryProductOptionGroupArgs = {
     languageCode?: Maybe<LanguageCode>;
     languageCode?: Maybe<LanguageCode>;
 };
 };
 
 
-export type QuerySearchArgs = {
-    input: SearchInput;
-};
-
 export type QueryProductsArgs = {
 export type QueryProductsArgs = {
     languageCode?: Maybe<LanguageCode>;
     languageCode?: Maybe<LanguageCode>;
     options?: Maybe<ProductListOptions>;
     options?: Maybe<ProductListOptions>;
@@ -2505,6 +2502,10 @@ export type QueryProductArgs = {
     languageCode?: Maybe<LanguageCode>;
     languageCode?: Maybe<LanguageCode>;
 };
 };
 
 
+export type QuerySearchArgs = {
+    input: SearchInput;
+};
+
 export type QueryPromotionArgs = {
 export type QueryPromotionArgs = {
     id: Scalars['ID'];
     id: Scalars['ID'];
 };
 };

+ 2 - 1
packages/core/e2e/graphql/generated-e2e-shop-types.ts

@@ -1323,7 +1323,6 @@ export type Order = Node & {
     lines: Array<OrderLine>;
     lines: Array<OrderLine>;
     adjustments: Array<Adjustment>;
     adjustments: Array<Adjustment>;
     payments?: Maybe<Array<Payment>>;
     payments?: Maybe<Array<Payment>>;
-    refunds?: Maybe<Array<Refund>>;
     fulfillments?: Maybe<Array<Fulfillment>>;
     fulfillments?: Maybe<Array<Fulfillment>>;
     subTotalBeforeTax: Scalars['Int'];
     subTotalBeforeTax: Scalars['Int'];
     subTotal: Scalars['Int'];
     subTotal: Scalars['Int'];
@@ -1376,6 +1375,7 @@ export type OrderItem = Node & {
     taxRate: Scalars['Float'];
     taxRate: Scalars['Float'];
     adjustments: Array<Adjustment>;
     adjustments: Array<Adjustment>;
     fulfillment?: Maybe<Fulfillment>;
     fulfillment?: Maybe<Fulfillment>;
+    refundId?: Maybe<Scalars['ID']>;
 };
 };
 
 
 export type OrderLine = Node & {
 export type OrderLine = Node & {
@@ -1437,6 +1437,7 @@ export type Payment = Node & {
     amount: Scalars['Int'];
     amount: Scalars['Int'];
     state: Scalars['String'];
     state: Scalars['String'];
     transactionId?: Maybe<Scalars['String']>;
     transactionId?: Maybe<Scalars['String']>;
+    refunds: Array<Refund>;
     metadata?: Maybe<Scalars['JSON']>;
     metadata?: Maybe<Scalars['JSON']>;
 };
 };
 
 

+ 2 - 0
packages/core/src/api/api-internal-modules.ts

@@ -34,6 +34,7 @@ import { CustomerEntityResolver } from './resolvers/entity/customer-entity.resol
 import { FulfillmentEntityResolver } from './resolvers/entity/fulfillment-entity.resolver';
 import { FulfillmentEntityResolver } from './resolvers/entity/fulfillment-entity.resolver';
 import { OrderEntityResolver } from './resolvers/entity/order-entity.resolver';
 import { OrderEntityResolver } from './resolvers/entity/order-entity.resolver';
 import { OrderLineEntityResolver } from './resolvers/entity/order-line-entity.resolver';
 import { OrderLineEntityResolver } from './resolvers/entity/order-line-entity.resolver';
+import { PaymentEntityResolver } from './resolvers/entity/payment-entity.resolver';
 import { ProductEntityResolver } from './resolvers/entity/product-entity.resolver';
 import { ProductEntityResolver } from './resolvers/entity/product-entity.resolver';
 import { ProductOptionGroupEntityResolver } from './resolvers/entity/product-option-group-entity.resolver';
 import { ProductOptionGroupEntityResolver } from './resolvers/entity/product-option-group-entity.resolver';
 import { ProductVariantAdminEntityResolver, ProductVariantEntityResolver } from './resolvers/entity/product-variant-entity.resolver';
 import { ProductVariantAdminEntityResolver, ProductVariantEntityResolver } from './resolvers/entity/product-variant-entity.resolver';
@@ -84,6 +85,7 @@ export const entityResolvers = [
     FulfillmentEntityResolver,
     FulfillmentEntityResolver,
     OrderEntityResolver,
     OrderEntityResolver,
     OrderLineEntityResolver,
     OrderLineEntityResolver,
+    PaymentEntityResolver,
     ProductEntityResolver,
     ProductEntityResolver,
     ProductOptionGroupEntityResolver,
     ProductOptionGroupEntityResolver,
     ProductVariantEntityResolver,
     ProductVariantEntityResolver,

+ 0 - 8
packages/core/src/api/resolvers/entity/order-entity.resolver.ts

@@ -16,14 +16,6 @@ export class OrderEntityResolver {
         return this.orderService.getOrderPayments(order.id);
         return this.orderService.getOrderPayments(order.id);
     }
     }
 
 
-    @ResolveProperty()
-    async refunds(@Parent() order: Order) {
-        if (order.refunds) {
-            return order.refunds;
-        }
-        return this.orderService.getOrderRefunds(order.id);
-    }
-
     @ResolveProperty()
     @ResolveProperty()
     async shippingMethod(@Parent() order: Order) {
     async shippingMethod(@Parent() order: Order) {
         if (order.shippingMethodId) {
         if (order.shippingMethodId) {

+ 35 - 0
packages/core/src/api/resolvers/entity/payment-entity.resolver.ts

@@ -0,0 +1,35 @@
+import { Parent, ResolveProperty, Resolver } from '@nestjs/graphql';
+
+import { Translated } from '../../../common/types/locale-types';
+import { Collection } from '../../../entity/collection/collection.entity';
+import { OrderItem } from '../../../entity/order-item/order-item.entity';
+import { Payment } from '../../../entity/payment/payment.entity';
+import { ProductVariant } from '../../../entity/product-variant/product-variant.entity';
+import { Product } from '../../../entity/product/product.entity';
+import { Refund } from '../../../entity/refund/refund.entity';
+import { CollectionService } from '../../../service/services/collection.service';
+import { OrderService } from '../../../service/services/order.service';
+import { ProductVariantService } from '../../../service/services/product-variant.service';
+import { ApiType } from '../../common/get-api-type';
+import { RequestContext } from '../../common/request-context';
+import { Api } from '../../decorators/api.decorator';
+import { Ctx } from '../../decorators/request-context.decorator';
+
+@Resolver('Payment')
+export class PaymentEntityResolver {
+    constructor(
+        private orderService: OrderService,
+    ) {}
+
+    @ResolveProperty()
+    async refunds(
+        @Ctx() ctx: RequestContext,
+        @Parent() payment: Payment,
+    ): Promise<Refund[]> {
+        if (payment.refunds) {
+            return payment.refunds;
+        } else {
+            return this.orderService.getPaymentRefunds(payment.id);
+        }
+    }
+}

+ 2 - 1
packages/core/src/api/schema/type/order.type.graphql

@@ -11,7 +11,6 @@ type Order implements Node {
     lines: [OrderLine!]!
     lines: [OrderLine!]!
     adjustments: [Adjustment!]!
     adjustments: [Adjustment!]!
     payments: [Payment!]
     payments: [Payment!]
-    refunds: [Refund!]
     fulfillments: [Fulfillment!]
     fulfillments: [Fulfillment!]
     subTotalBeforeTax: Int!
     subTotalBeforeTax: Int!
     subTotal: Int!
     subTotal: Int!
@@ -59,6 +58,7 @@ type OrderItem implements Node {
     taxRate: Float!
     taxRate: Float!
     adjustments: [Adjustment!]!
     adjustments: [Adjustment!]!
     fulfillment: Fulfillment
     fulfillment: Fulfillment
+    refundId: ID
 }
 }
 
 
 type OrderLine implements Node {
 type OrderLine implements Node {
@@ -84,6 +84,7 @@ type Payment implements Node {
     amount: Int!
     amount: Int!
     state: String!
     state: String!
     transactionId: String
     transactionId: String
+    refunds: [Refund!]!
     metadata: JSON
     metadata: JSON
 }
 }
 
 

+ 0 - 3
packages/core/src/entity/order/order.entity.ts

@@ -55,9 +55,6 @@ export class Order extends VendureEntity {
     @OneToMany(type => Payment, payment => payment.order)
     @OneToMany(type => Payment, payment => payment.order)
     payments: Payment[];
     payments: Payment[];
 
 
-    @OneToMany(type => Refund, refund => refund.order)
-    refunds: Refund[];
-
     @Column('varchar')
     @Column('varchar')
     currencyCode: CurrencyCode;
     currencyCode: CurrencyCode;
 
 

+ 5 - 1
packages/core/src/entity/payment/payment.entity.ts

@@ -1,9 +1,10 @@
 import { DeepPartial } from '@vendure/common/lib/shared-types';
 import { DeepPartial } from '@vendure/common/lib/shared-types';
-import { Column, Entity, ManyToOne } from 'typeorm';
+import { Column, Entity, ManyToOne, OneToMany } from 'typeorm';
 
 
 import { PaymentState } from '../../service/helpers/payment-state-machine/payment-state';
 import { PaymentState } from '../../service/helpers/payment-state-machine/payment-state';
 import { VendureEntity } from '../base/base.entity';
 import { VendureEntity } from '../base/base.entity';
 import { Order } from '../order/order.entity';
 import { Order } from '../order/order.entity';
+import { Refund } from '../refund/refund.entity';
 
 
 export type PaymentMetadata = { [key: string]: string | number | boolean };
 export type PaymentMetadata = { [key: string]: string | number | boolean };
 
 
@@ -33,4 +34,7 @@ export class Payment extends VendureEntity {
 
 
     @ManyToOne(type => Order, order => order.payments)
     @ManyToOne(type => Order, order => order.payments)
     order: Order;
     order: Order;
+
+    @OneToMany(type => Refund, refund => refund.payment)
+    refunds: Refund[];
 }
 }

+ 2 - 7
packages/core/src/entity/refund/refund.entity.ts

@@ -1,11 +1,10 @@
 import { DeepPartial, ID } from '@vendure/common/lib/shared-types';
 import { DeepPartial, ID } from '@vendure/common/lib/shared-types';
-import { Column, Entity, JoinColumn, JoinTable, ManyToOne, OneToMany, OneToOne } from 'typeorm';
-import { idType } from '../../config/config-helpers';
+import { Column, Entity, JoinColumn, JoinTable, ManyToOne, OneToMany } from 'typeorm';
 
 
+import { idType } from '../../config/config-helpers';
 import { RefundState } from '../../service/helpers/refund-state-machine/refund-state';
 import { RefundState } from '../../service/helpers/refund-state-machine/refund-state';
 import { VendureEntity } from '../base/base.entity';
 import { VendureEntity } from '../base/base.entity';
 import { OrderItem } from '../order-item/order-item.entity';
 import { OrderItem } from '../order-item/order-item.entity';
-import { Order } from '../order/order.entity';
 import { Payment, PaymentMetadata } from '../payment/payment.entity';
 import { Payment, PaymentMetadata } from '../payment/payment.entity';
 
 
 @Entity()
 @Entity()
@@ -32,10 +31,6 @@ export class Refund extends VendureEntity {
     @JoinTable()
     @JoinTable()
     orderItems: OrderItem[];
     orderItems: OrderItem[];
 
 
-    @ManyToOne(type => Order)
-    @JoinTable()
-    order: Order;
-
     @ManyToOne(type => Payment)
     @ManyToOne(type => Payment)
     @JoinColumn()
     @JoinColumn()
     payment: Payment;
     payment: Payment;

+ 9 - 9
packages/core/src/service/services/order.service.ts

@@ -145,19 +145,19 @@ export class OrderService {
         });
         });
     }
     }
 
 
-    getOrderRefunds(orderId: ID): Promise<Refund[]> {
+    async getRefundOrderItems(refundId: ID): Promise<OrderItem[]> {
+        const refund = await getEntityOrThrow(this.connection, Refund, refundId, { relations: ['orderItems'] });
+        return refund.orderItems;
+    }
+
+    getPaymentRefunds(paymentId: ID): Promise<Refund[]> {
         return this.connection.getRepository(Refund).find({
         return this.connection.getRepository(Refund).find({
             where: {
             where: {
-                order: { id: orderId } as any,
+                paymentId,
             },
             },
         });
         });
     }
     }
 
 
-    async getRefundOrderItems(refundId: ID): Promise<OrderItem[]> {
-        const refund = await getEntityOrThrow(this.connection, Refund, refundId, { relations: ['orderItems'] });
-        return refund.orderItems;
-    }
-
     async getActiveOrderForUser(ctx: RequestContext, userId: ID): Promise<Order | undefined> {
     async getActiveOrderForUser(ctx: RequestContext, userId: ID): Promise<Order | undefined> {
         const customer = await this.customerService.findOneByUserId(userId);
         const customer = await this.customerService.findOneByUserId(userId);
         if (customer) {
         if (customer) {
@@ -496,9 +496,9 @@ export class OrderService {
     }
     }
 
 
     async settleRefund(ctx: RequestContext, input: SettleRefundInput): Promise<Refund> {
     async settleRefund(ctx: RequestContext, input: SettleRefundInput): Promise<Refund> {
-        const refund = await getEntityOrThrow(this.connection, Refund, input.id, { relations: ['order'] });
+        const refund = await getEntityOrThrow(this.connection, Refund, input.id, { relations: ['payment', 'payment.order'] });
         refund.transactionId = input.transactionId;
         refund.transactionId = input.transactionId;
-        this.refundStateMachine.transition(ctx, refund.order, refund, 'Settled');
+        this.refundStateMachine.transition(ctx, refund.payment.order, refund, 'Settled');
         return this.connection.getRepository(Refund).save(refund);
         return this.connection.getRepository(Refund).save(refund);
     }
     }
 
 

+ 0 - 1
packages/core/src/service/services/payment-method.service.ts

@@ -83,7 +83,6 @@ export class PaymentMethodService {
         const refundAmount = itemAmount + input.shipping + input.adjustment;
         const refundAmount = itemAmount + input.shipping + input.adjustment;
         const refund = new Refund({
         const refund = new Refund({
             payment,
             payment,
-            order,
             orderItems: items,
             orderItems: items,
             items: itemAmount,
             items: itemAmount,
             adjustment: input.adjustment,
             adjustment: input.adjustment,

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
schema-admin.json


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
schema-shop.json


Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů