Browse Source

feat(core): Support custom fields on Fulfillment entity

Relates to #525
Michael Bromley 5 years ago
parent
commit
380f68eb74

+ 1 - 0
packages/core/src/config/custom-field/custom-field-types.ts

@@ -169,6 +169,7 @@ export interface CustomFields {
     Customer?: CustomFieldConfig[];
     Facet?: CustomFieldConfig[];
     FacetValue?: CustomFieldConfig[];
+    Fulfillment?: CustomFieldConfig[];
     GlobalSettings?: CustomFieldConfig[];
     Order?: CustomFieldConfig[];
     OrderLine?: CustomFieldConfig[];

+ 1 - 0
packages/core/src/config/default-config.ts

@@ -136,6 +136,7 @@ export const defaultConfig: RuntimeVendureConfig = {
         Customer: [],
         Facet: [],
         FacetValue: [],
+        Fulfillment: [],
         GlobalSettings: [],
         Order: [],
         OrderLine: [],

+ 1 - 0
packages/core/src/entity/custom-entity-fields.ts

@@ -3,6 +3,7 @@ export class CustomFacetFields {}
 export class CustomFacetFieldsTranslation {}
 export class CustomFacetValueFields {}
 export class CustomFacetValueFieldsTranslation {}
+export class CustomFulfillmentFields {}
 export class CustomCustomerFields {}
 export class CustomOrderLineFields {}
 export class CustomProductFields {}

+ 6 - 1
packages/core/src/entity/fulfillment/fulfillment.entity.ts

@@ -1,8 +1,10 @@
 import { Column, Entity, OneToMany } from 'typeorm';
 
 import { DeepPartial } from '../../../../common/lib/shared-types';
+import { HasCustomFields } from '../../config/custom-field/custom-field-types';
 import { FulfillmentState } from '../../service/helpers/fulfillment-state-machine/fulfillment-state';
 import { VendureEntity } from '../base/base.entity';
+import { CustomFulfillmentFields } from '../custom-entity-fields';
 import { OrderItem } from '../order-item/order-item.entity';
 
 /**
@@ -13,7 +15,7 @@ import { OrderItem } from '../order-item/order-item.entity';
  * @docsCategory entities
  */
 @Entity()
-export class Fulfillment extends VendureEntity {
+export class Fulfillment extends VendureEntity implements HasCustomFields {
     constructor(input?: DeepPartial<Fulfillment>) {
         super(input);
     }
@@ -28,4 +30,7 @@ export class Fulfillment extends VendureEntity {
 
     @OneToMany(type => OrderItem, orderItem => orderItem.fulfillment)
     orderItems: OrderItem[];
+
+    @Column(type => CustomFulfillmentFields)
+    customFields: CustomFulfillmentFields;
 }

+ 2 - 0
packages/core/src/entity/register-custom-entity-fields.ts

@@ -16,6 +16,7 @@ import {
     CustomFacetFieldsTranslation,
     CustomFacetValueFields,
     CustomFacetValueFieldsTranslation,
+    CustomFulfillmentFields,
     CustomGlobalSettingsFields,
     CustomOrderFields,
     CustomOrderLineFields,
@@ -175,6 +176,7 @@ export function registerCustomEntityFields(config: VendureConfig) {
     registerCustomFieldsForEntity(config, 'Facet', CustomFacetFieldsTranslation, true);
     registerCustomFieldsForEntity(config, 'FacetValue', CustomFacetValueFields);
     registerCustomFieldsForEntity(config, 'FacetValue', CustomFacetValueFieldsTranslation, true);
+    registerCustomFieldsForEntity(config, 'Fulfillment', CustomFulfillmentFields);
     registerCustomFieldsForEntity(config, 'Order', CustomOrderFields);
     registerCustomFieldsForEntity(config, 'OrderLine', CustomOrderLineFields);
     registerCustomFieldsForEntity(config, 'Product', CustomProductFields);