@unchainedshop/core-delivery 3.0.0-alpha7 → 3.0.0-rc10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/lib/db/DeliveryProvidersCollection.d.ts +30 -2
  2. package/lib/db/DeliveryProvidersCollection.d.ts.map +1 -1
  3. package/lib/db/DeliveryProvidersCollection.js +5 -0
  4. package/lib/db/DeliveryProvidersCollection.js.map +1 -1
  5. package/lib/delivery-index.d.ts +1 -8
  6. package/lib/delivery-index.d.ts.map +1 -1
  7. package/lib/delivery-index.js +1 -8
  8. package/lib/delivery-index.js.map +1 -1
  9. package/lib/delivery-settings.d.ts +7 -5
  10. package/lib/delivery-settings.d.ts.map +1 -1
  11. package/lib/delivery-settings.js +1 -1
  12. package/lib/delivery-settings.js.map +1 -1
  13. package/lib/module/configureDeliveryModule.d.ts +20 -39
  14. package/lib/module/configureDeliveryModule.d.ts.map +1 -1
  15. package/lib/module/configureDeliveryModule.js +1 -81
  16. package/lib/module/configureDeliveryModule.js.map +1 -1
  17. package/package.json +14 -13
  18. package/src/db/DeliveryProvidersCollection.ts +32 -2
  19. package/src/delivery-index.ts +1 -10
  20. package/src/delivery-settings.ts +12 -6
  21. package/src/module/configureDeliveryModule.ts +28 -187
  22. package/tsconfig.json +5 -7
  23. package/lib/director/DeliveryAdapter.d.ts +0 -3
  24. package/lib/director/DeliveryAdapter.d.ts.map +0 -1
  25. package/lib/director/DeliveryAdapter.js +0 -44
  26. package/lib/director/DeliveryAdapter.js.map +0 -1
  27. package/lib/director/DeliveryDirector.d.ts +0 -3
  28. package/lib/director/DeliveryDirector.d.ts.map +0 -1
  29. package/lib/director/DeliveryDirector.js +0 -69
  30. package/lib/director/DeliveryDirector.js.map +0 -1
  31. package/lib/director/DeliveryError.d.ts +0 -7
  32. package/lib/director/DeliveryError.d.ts.map +0 -1
  33. package/lib/director/DeliveryError.js +0 -8
  34. package/lib/director/DeliveryError.js.map +0 -1
  35. package/lib/director/DeliveryPricingAdapter.d.ts +0 -45
  36. package/lib/director/DeliveryPricingAdapter.d.ts.map +0 -1
  37. package/lib/director/DeliveryPricingAdapter.js +0 -25
  38. package/lib/director/DeliveryPricingAdapter.js.map +0 -1
  39. package/lib/director/DeliveryPricingDirector.d.ts +0 -19
  40. package/lib/director/DeliveryPricingDirector.d.ts.map +0 -1
  41. package/lib/director/DeliveryPricingDirector.js +0 -58
  42. package/lib/director/DeliveryPricingDirector.js.map +0 -1
  43. package/lib/director/DeliveryPricingSheet.d.ts +0 -10
  44. package/lib/director/DeliveryPricingSheet.d.ts.map +0 -1
  45. package/lib/director/DeliveryPricingSheet.js +0 -75
  46. package/lib/director/DeliveryPricingSheet.js.map +0 -1
  47. package/lib/director/DeliveryProviderType.d.ts +0 -5
  48. package/lib/director/DeliveryProviderType.d.ts.map +0 -1
  49. package/lib/director/DeliveryProviderType.js +0 -6
  50. package/lib/director/DeliveryProviderType.js.map +0 -1
  51. package/lib/types.d.ts +0 -90
  52. package/lib/types.d.ts.map +0 -1
  53. package/lib/types.js +0 -13
  54. package/lib/types.js.map +0 -1
  55. package/src/director/DeliveryAdapter.ts +0 -56
  56. package/src/director/DeliveryDirector.ts +0 -76
  57. package/src/director/DeliveryError.ts +0 -6
  58. package/src/director/DeliveryPricingAdapter.ts +0 -86
  59. package/src/director/DeliveryPricingDirector.ts +0 -99
  60. package/src/director/DeliveryPricingSheet.ts +0 -87
  61. package/src/director/DeliveryProviderType.ts +0 -4
  62. package/src/types.ts +0 -115
@@ -1,75 +0,0 @@
1
- import { BasePricingSheet } from '@unchainedshop/utils';
2
- export var DeliveryPricingRowCategory;
3
- (function (DeliveryPricingRowCategory) {
4
- DeliveryPricingRowCategory["Delivery"] = "DELIVERY";
5
- DeliveryPricingRowCategory["Discount"] = "DISCOUNT";
6
- DeliveryPricingRowCategory["Tax"] = "TAX";
7
- DeliveryPricingRowCategory["Item"] = "ITEM";
8
- })(DeliveryPricingRowCategory || (DeliveryPricingRowCategory = {}));
9
- export const DeliveryPricingSheet = (params) => {
10
- const basePricingSheet = BasePricingSheet(params);
11
- const pricingSheet = {
12
- ...basePricingSheet,
13
- addDiscount({ amount, isTaxable, isNetPrice, discountId, meta }) {
14
- basePricingSheet.calculation.push({
15
- category: DeliveryPricingRowCategory.Discount,
16
- amount,
17
- isTaxable,
18
- isNetPrice,
19
- discountId,
20
- meta,
21
- });
22
- },
23
- addFee({ amount, isTaxable, isNetPrice, meta }) {
24
- basePricingSheet.calculation.push({
25
- amount,
26
- category: DeliveryPricingRowCategory.Delivery,
27
- isNetPrice,
28
- isTaxable,
29
- meta,
30
- });
31
- },
32
- addTax({ amount, rate, meta }) {
33
- basePricingSheet.calculation.push({
34
- amount,
35
- category: DeliveryPricingRowCategory.Tax,
36
- isNetPrice: false,
37
- isTaxable: false,
38
- meta,
39
- rate,
40
- });
41
- },
42
- taxSum(filter) {
43
- return basePricingSheet.sum({
44
- category: DeliveryPricingRowCategory.Tax,
45
- ...(filter || {}),
46
- });
47
- },
48
- discountPrices(explicitDiscountId) {
49
- const discountIds = pricingSheet
50
- .filterBy({
51
- category: DeliveryPricingRowCategory.Discount,
52
- discountId: explicitDiscountId,
53
- })
54
- .map(({ discountId }) => discountId);
55
- return [...new Set(discountIds)]
56
- .map((discountId) => {
57
- const { currency, amount } = basePricingSheet.total({
58
- category: DeliveryPricingRowCategory.Discount,
59
- discountId,
60
- });
61
- if (!amount) {
62
- return null;
63
- }
64
- return {
65
- discountId,
66
- amount: Math.round(amount),
67
- currency,
68
- };
69
- })
70
- .filter(Boolean);
71
- },
72
- };
73
- return pricingSheet;
74
- };
75
- //# sourceMappingURL=DeliveryPricingSheet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeliveryPricingSheet.js","sourceRoot":"","sources":["../../src/director/DeliveryPricingSheet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIxD,MAAM,CAAN,IAAY,0BAKX;AALD,WAAY,0BAA0B;IACpC,mDAAqB,CAAA;IACrB,mDAAqB,CAAA;IACrB,yCAAW,CAAA;IACX,2CAAa,CAAA;AACf,CAAC,EALW,0BAA0B,KAA1B,0BAA0B,QAKrC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,MAAsD,EAC/B,EAAE;IACzB,MAAM,gBAAgB,GAAkD,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEjG,MAAM,YAAY,GAA0B;QAC1C,GAAG,gBAAgB;QAEnB,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE;YAC7D,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC;gBAChC,QAAQ,EAAE,0BAA0B,CAAC,QAAQ;gBAC7C,MAAM;gBACN,SAAS;gBACT,UAAU;gBACV,UAAU;gBACV,IAAI;aACL,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE;YAC5C,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC;gBAChC,MAAM;gBACN,QAAQ,EAAE,0BAA0B,CAAC,QAAQ;gBAC7C,UAAU;gBACV,SAAS;gBACT,IAAI;aACL,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;YAC3B,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC;gBAChC,MAAM;gBACN,QAAQ,EAAE,0BAA0B,CAAC,GAAG;gBACxC,UAAU,EAAE,KAAK;gBACjB,SAAS,EAAE,KAAK;gBAChB,IAAI;gBACJ,IAAI;aACL,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,MAAM;YACX,OAAO,gBAAgB,CAAC,GAAG,CAAC;gBAC1B,QAAQ,EAAE,0BAA0B,CAAC,GAAG;gBACxC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;aAClB,CAAC,CAAC;QACL,CAAC;QAED,cAAc,CAAC,kBAAkB;YAC/B,MAAM,WAAW,GAAG,YAAY;iBAC7B,QAAQ,CAAC;gBACR,QAAQ,EAAE,0BAA0B,CAAC,QAAQ;gBAC7C,UAAU,EAAE,kBAAkB;aAC/B,CAAC;iBACD,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;YAEvC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;iBAC7B,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;gBAClB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC;oBAClD,QAAQ,EAAE,0BAA0B,CAAC,QAAQ;oBAC7C,UAAU;iBACX,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,OAAO;oBACL,UAAU;oBACV,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;oBAC1B,QAAQ;iBACT,CAAC;YACJ,CAAC,CAAC;iBACD,MAAM,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC;KACF,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC"}
@@ -1,5 +0,0 @@
1
- export declare enum DeliveryProviderType {
2
- SHIPPING = "SHIPPING",
3
- PICKUP = "PICKUP"
4
- }
5
- //# sourceMappingURL=DeliveryProviderType.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeliveryProviderType.d.ts","sourceRoot":"","sources":["../../src/director/DeliveryProviderType.ts"],"names":[],"mappings":"AAAA,oBAAY,oBAAoB;IAC9B,QAAQ,aAAa;IACrB,MAAM,WAAW;CAClB"}
@@ -1,6 +0,0 @@
1
- export var DeliveryProviderType;
2
- (function (DeliveryProviderType) {
3
- DeliveryProviderType["SHIPPING"] = "SHIPPING";
4
- DeliveryProviderType["PICKUP"] = "PICKUP";
5
- })(DeliveryProviderType || (DeliveryProviderType = {}));
6
- //# sourceMappingURL=DeliveryProviderType.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeliveryProviderType.js","sourceRoot":"","sources":["../../src/director/DeliveryProviderType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC9B,6CAAqB,CAAA;IACrB,yCAAiB,CAAA;AACnB,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,QAG/B"}
package/lib/types.d.ts DELETED
@@ -1,90 +0,0 @@
1
- import type { Work } from '@unchainedshop/core-worker';
2
- import type { TimestampFields } from '@unchainedshop/mongodb';
3
- import type { User } from '@unchainedshop/core-users';
4
- import { IBaseAdapter, IBaseDirector } from '@unchainedshop/utils';
5
- import { UnchainedCore } from '@unchainedshop/core';
6
- import { Order } from '@unchainedshop/core-orders';
7
- import { OrderDelivery } from '@unchainedshop/core-orders';
8
- import { OrderPosition } from '@unchainedshop/core-orders';
9
- import { Product } from '@unchainedshop/core-products';
10
- import { WarehousingProvider } from '@unchainedshop/core-warehousing';
11
- export declare enum DeliveryProviderType {
12
- SHIPPING = "SHIPPING",
13
- PICKUP = "PICKUP"
14
- }
15
- export type DeliveryConfiguration = Array<{
16
- key: string;
17
- value: string;
18
- }>;
19
- export type DeliveryProvider = {
20
- _id?: string;
21
- type: DeliveryProviderType;
22
- adapterKey: string;
23
- configuration: DeliveryConfiguration;
24
- } & TimestampFields;
25
- export type DeliveryProviderQuery = {
26
- type?: DeliveryProviderType;
27
- };
28
- export declare enum DeliveryError {
29
- ADAPTER_NOT_FOUND = "ADAPTER_NOT_FOUND",
30
- NOT_IMPLEMENTED = "NOT_IMPLEMENTED",
31
- INCOMPLETE_CONFIGURATION = "INCOMPLETE_CONFIGURATION",
32
- WRONG_CREDENTIALS = "WRONG_CREDENTIALS"
33
- }
34
- export interface DeliveryContext {
35
- country?: string;
36
- deliveryProvider?: DeliveryProvider;
37
- order?: Order;
38
- orderDelivery?: OrderDelivery;
39
- orderPosition?: OrderPosition;
40
- product?: Product;
41
- quantity?: number;
42
- referenceDate?: Date;
43
- transactionContext?: any;
44
- user?: User;
45
- warehousingProvider?: WarehousingProvider;
46
- warehousingThroughputTime?: number;
47
- }
48
- export type DeliveryAdapterContext = DeliveryContext & UnchainedCore;
49
- export interface DeliveryLocation {
50
- _id: string;
51
- name: string;
52
- address: {
53
- addressLine: string;
54
- addressLine2?: string;
55
- postalCode: string;
56
- countryCode: string;
57
- city: string;
58
- };
59
- geoPoint: {
60
- latitude: number;
61
- longitude: number;
62
- };
63
- }
64
- export interface DeliveryAdapterActions {
65
- configurationError: (transactionContext?: any) => DeliveryError;
66
- estimatedDeliveryThroughput: (warehousingThroughputTime: number) => Promise<number>;
67
- isActive: () => boolean;
68
- isAutoReleaseAllowed: () => boolean;
69
- pickUpLocationById: (locationId: string) => Promise<DeliveryLocation>;
70
- pickUpLocations: () => Promise<Array<DeliveryLocation>>;
71
- send: () => Promise<boolean | Work>;
72
- }
73
- export type IDeliveryAdapter = IBaseAdapter & {
74
- initialConfiguration: DeliveryConfiguration;
75
- typeSupported: (type: DeliveryProviderType) => boolean;
76
- actions: (config: DeliveryConfiguration, context: DeliveryAdapterContext) => DeliveryAdapterActions;
77
- };
78
- export type IDeliveryDirector = IBaseDirector<IDeliveryAdapter> & {
79
- actions: (deliveryProvider: DeliveryProvider, deliveryContext: DeliveryContext, unchainedAPI: UnchainedCore) => Promise<DeliveryAdapterActions>;
80
- };
81
- export interface DeliveryInterface {
82
- _id: string;
83
- label: string;
84
- version: string;
85
- }
86
- export type FilterProviders = (params: {
87
- providers: Array<DeliveryProvider>;
88
- order: Order;
89
- }, unchainedAPI: UnchainedCore) => Promise<Array<DeliveryProvider>>;
90
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/lib/types.js DELETED
@@ -1,13 +0,0 @@
1
- export var DeliveryProviderType;
2
- (function (DeliveryProviderType) {
3
- DeliveryProviderType["SHIPPING"] = "SHIPPING";
4
- DeliveryProviderType["PICKUP"] = "PICKUP";
5
- })(DeliveryProviderType || (DeliveryProviderType = {}));
6
- export var DeliveryError;
7
- (function (DeliveryError) {
8
- DeliveryError["ADAPTER_NOT_FOUND"] = "ADAPTER_NOT_FOUND";
9
- DeliveryError["NOT_IMPLEMENTED"] = "NOT_IMPLEMENTED";
10
- DeliveryError["INCOMPLETE_CONFIGURATION"] = "INCOMPLETE_CONFIGURATION";
11
- DeliveryError["WRONG_CREDENTIALS"] = "WRONG_CREDENTIALS";
12
- })(DeliveryError || (DeliveryError = {}));
13
- //# sourceMappingURL=types.js.map
package/lib/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAYA,MAAM,CAAN,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC9B,6CAAqB,CAAA;IACrB,yCAAiB,CAAA;AACnB,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,QAG/B;AAkBD,MAAM,CAAN,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,wDAAuC,CAAA;IACvC,oDAAmC,CAAA;IACnC,sEAAqD,CAAA;IACrD,wDAAuC,CAAA;AACzC,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB"}
@@ -1,56 +0,0 @@
1
- import { log, LogLevel } from '@unchainedshop/logger';
2
- import { DeliveryError } from './DeliveryError.js';
3
- import { IDeliveryAdapter } from '../types.js';
4
-
5
- export const DeliveryAdapter: Omit<IDeliveryAdapter, 'key' | 'label' | 'version'> = {
6
- initialConfiguration: [],
7
-
8
- typeSupported: () => {
9
- return false;
10
- },
11
-
12
- actions: () => {
13
- return {
14
- configurationError: () => {
15
- return DeliveryError.NOT_IMPLEMENTED;
16
- },
17
-
18
- estimatedDeliveryThroughput: async () => {
19
- return 0;
20
- },
21
-
22
- isActive: () => {
23
- return false;
24
- },
25
-
26
- isAutoReleaseAllowed: () => {
27
- // if you return false here,
28
- // the order will need manual confirmation before
29
- // unchained will try to invoke send()
30
- return true;
31
- },
32
-
33
- send: async () => {
34
- // if you return true, the status will be changed to DELIVERED
35
-
36
- // if you return false, the order delivery status stays the
37
- // same but the order status might change
38
-
39
- // if you throw an error, you cancel the whole checkout process
40
- return false;
41
- },
42
-
43
- pickUpLocationById: async () => {
44
- return null;
45
- },
46
-
47
- pickUpLocations: async () => {
48
- return [];
49
- },
50
- };
51
- },
52
-
53
- log: (message: string, { level = LogLevel.Debug, ...options } = {}) => {
54
- return log(message, { level, ...options });
55
- },
56
- };
@@ -1,76 +0,0 @@
1
- import { log, LogLevel } from '@unchainedshop/logger';
2
- import { BaseDirector } from '@unchainedshop/utils';
3
- import { DeliveryError } from './DeliveryError.js';
4
- import { IDeliveryAdapter, IDeliveryDirector } from '../types.js';
5
-
6
- const baseDirector = BaseDirector<IDeliveryAdapter>('DeliveryDirector');
7
-
8
- export const DeliveryDirector: IDeliveryDirector = {
9
- ...baseDirector,
10
-
11
- actions: async (deliveryProvider, deliveryContext, unchainedAPI) => {
12
- const Adapter = baseDirector.getAdapter(deliveryProvider.adapterKey);
13
-
14
- const context = { ...deliveryContext, ...unchainedAPI };
15
- const adapter = Adapter.actions(deliveryProvider.configuration, context);
16
-
17
- return {
18
- configurationError: () => {
19
- try {
20
- return adapter.configurationError();
21
- } catch {
22
- return DeliveryError.ADAPTER_NOT_FOUND;
23
- }
24
- },
25
-
26
- estimatedDeliveryThroughput: async (warehousingThroughputTime) => {
27
- try {
28
- const throughput = await adapter.estimatedDeliveryThroughput(warehousingThroughputTime);
29
- return throughput;
30
- } catch (error) {
31
- log('Delivery Director -> Error while estimating delivery throughput', {
32
- level: LogLevel.Warning,
33
- ...error,
34
- });
35
- return null;
36
- }
37
- },
38
-
39
- isActive: () => {
40
- try {
41
- return adapter.isActive();
42
- } catch (error) {
43
- log('Delivery Director -> Error while checking if is active', {
44
- level: LogLevel.Warning,
45
- ...error,
46
- });
47
- return false;
48
- }
49
- },
50
-
51
- isAutoReleaseAllowed: () => {
52
- try {
53
- return adapter.isAutoReleaseAllowed();
54
- } catch (error) {
55
- log('Delivery Director -> Error while checking if auto release is allowed', {
56
- level: LogLevel.Warning,
57
- ...error,
58
- });
59
- return false;
60
- }
61
- },
62
-
63
- send: async () => {
64
- return adapter.send();
65
- },
66
-
67
- pickUpLocationById: async (locationId) => {
68
- return adapter.pickUpLocationById(locationId);
69
- },
70
-
71
- pickUpLocations: async () => {
72
- return adapter.pickUpLocations();
73
- },
74
- };
75
- },
76
- };
@@ -1,6 +0,0 @@
1
- export enum DeliveryError {
2
- ADAPTER_NOT_FOUND = 'ADAPTER_NOT_FOUND',
3
- NOT_IMPLEMENTED = 'NOT_IMPLEMENTED',
4
- INCOMPLETE_CONFIGURATION = 'INCOMPLETE_CONFIGURATION',
5
- WRONG_CREDENTIALS = 'WRONG_CREDENTIALS',
6
- }
@@ -1,86 +0,0 @@
1
- import { BasePricingAdapter } from '@unchainedshop/utils';
2
- import { DeliveryPricingSheet } from './DeliveryPricingSheet.js';
3
- import {
4
- BasePricingAdapterContext,
5
- IPricingAdapter,
6
- IPricingSheet,
7
- PricingCalculation,
8
- } from '@unchainedshop/utils';
9
- import { DeliveryProvider } from '../types.js';
10
- import { OrderDelivery, OrderDiscount, Order } from '@unchainedshop/core-orders';
11
- import { User } from '@unchainedshop/core-users';
12
-
13
- export interface DeliveryPricingCalculation extends PricingCalculation {
14
- discountId?: string;
15
- isNetPrice: boolean;
16
- isTaxable: boolean;
17
- rate?: number;
18
- }
19
-
20
- export type IDeliveryPricingSheet = IPricingSheet<DeliveryPricingCalculation> & {
21
- addFee: (params: { amount: number; isTaxable: boolean; isNetPrice: boolean; meta?: any }) => void;
22
- addTax: (params: {
23
- amount: number;
24
- rate: number;
25
- baseCategory?: string;
26
- discountId?: string;
27
- meta?: any;
28
- }) => void;
29
- addDiscount: (params: {
30
- amount: number;
31
- isTaxable: boolean;
32
- isNetPrice: boolean;
33
- discountId: string;
34
- meta?: any;
35
- }) => void;
36
- };
37
-
38
- export interface DeliveryPricingAdapterContext extends BasePricingAdapterContext {
39
- country?: string;
40
- currency?: string;
41
- provider: DeliveryProvider;
42
- providerContext?: any;
43
- order: Order;
44
- orderDelivery: OrderDelivery;
45
- user: User;
46
- discounts: Array<OrderDiscount>;
47
- }
48
-
49
- export type IDeliveryPricingAdapter<DiscountConfiguration = unknown> = IPricingAdapter<
50
- DeliveryPricingAdapterContext,
51
- DeliveryPricingCalculation,
52
- IDeliveryPricingSheet,
53
- DiscountConfiguration
54
- >;
55
-
56
- const basePricingAdapter = BasePricingAdapter<
57
- DeliveryPricingAdapterContext,
58
- DeliveryPricingCalculation
59
- >();
60
-
61
- export const DeliveryPricingAdapter: IDeliveryPricingAdapter = {
62
- ...basePricingAdapter,
63
-
64
- isActivatedFor: () => {
65
- return false;
66
- },
67
-
68
- actions: (params) => {
69
- const { context } = params;
70
- const { currency } = context;
71
- const baseActions = basePricingAdapter.actions(params);
72
- const resultSheet = DeliveryPricingSheet({ currency });
73
-
74
- return {
75
- ...baseActions,
76
- calculate: async () => {
77
- const resultRaw = resultSheet.getRawPricingSheet();
78
- resultRaw.forEach(({ amount, category }) =>
79
- basePricingAdapter.log(`Delivery Calculation -> ${category} ${amount}`),
80
- );
81
- return resultRaw;
82
- },
83
- resultSheet: () => resultSheet,
84
- };
85
- },
86
- };
@@ -1,99 +0,0 @@
1
- import { BasePricingDirector } from '@unchainedshop/utils';
2
- import { DeliveryPricingSheet } from './DeliveryPricingSheet.js';
3
- import { DeliveryProvider } from '../types.js';
4
- import { Order } from '@unchainedshop/core-orders';
5
- import { User } from '@unchainedshop/core-users';
6
- import { OrderDelivery } from '@unchainedshop/core-orders';
7
- import { IPricingDirector } from '@unchainedshop/utils';
8
- import {
9
- DeliveryPricingAdapterContext,
10
- DeliveryPricingCalculation,
11
- IDeliveryPricingAdapter,
12
- IDeliveryPricingSheet,
13
- } from './DeliveryPricingAdapter.js';
14
-
15
- export type DeliveryPricingContext =
16
- | {
17
- country?: string;
18
- currency?: string;
19
- provider: DeliveryProvider;
20
- providerContext?: any;
21
- order: Order;
22
- user: User;
23
- }
24
- | { item: OrderDelivery };
25
-
26
- export type IDeliveryPricingDirector<DiscountConfiguration = unknown> = IPricingDirector<
27
- DeliveryPricingContext,
28
- DeliveryPricingCalculation,
29
- DeliveryPricingAdapterContext,
30
- IDeliveryPricingSheet,
31
- IDeliveryPricingAdapter<DiscountConfiguration>
32
- >;
33
-
34
- const baseDirector = BasePricingDirector<
35
- DeliveryPricingContext,
36
- DeliveryPricingAdapterContext,
37
- DeliveryPricingCalculation,
38
- IDeliveryPricingAdapter
39
- >('DeliveryPricingDirector');
40
-
41
- export const DeliveryPricingDirector: IDeliveryPricingDirector = {
42
- ...baseDirector,
43
-
44
- async buildPricingContext(context, unchainedAPI) {
45
- const { modules } = unchainedAPI;
46
-
47
- if ('item' in context) {
48
- const { item } = context;
49
- const order = await modules.orders.findOrder({
50
- orderId: item.orderId,
51
- });
52
- const provider = await modules.delivery.findProvider({
53
- deliveryProviderId: item.deliveryProviderId,
54
- });
55
- const user = await modules.users.findUserById(order.userId);
56
- const discounts = await modules.orders.discounts.findOrderDiscounts({
57
- orderId: item.orderId,
58
- });
59
-
60
- return {
61
- ...unchainedAPI,
62
- country: order.countryCode,
63
- currency: order.currency,
64
- order,
65
- provider,
66
- user,
67
- discounts,
68
- orderDelivery: item,
69
- providerContext: null,
70
- };
71
- }
72
-
73
- return {
74
- ...unchainedAPI,
75
- country: context.country,
76
- currency: context.currency,
77
- order: context.order,
78
- provider: context.provider,
79
- user: context.user,
80
- discounts: [],
81
- orderDelivery: null,
82
- providerContext: context.providerContext,
83
- };
84
- },
85
-
86
- async actions(pricingContext, unchainedAPI) {
87
- const actions = await baseDirector.actions(pricingContext, unchainedAPI, this.buildPricingContext);
88
- return {
89
- ...actions,
90
- calculationSheet() {
91
- const context = actions.getContext();
92
- return DeliveryPricingSheet({
93
- calculation: actions.getCalculation(),
94
- currency: context.currency,
95
- });
96
- },
97
- };
98
- },
99
- };
@@ -1,87 +0,0 @@
1
- import { BasePricingSheet } from '@unchainedshop/utils';
2
- import { IBasePricingSheet, PricingSheetParams } from '@unchainedshop/utils';
3
- import { DeliveryPricingCalculation, IDeliveryPricingSheet } from './DeliveryPricingAdapter.js';
4
-
5
- export enum DeliveryPricingRowCategory {
6
- Delivery = 'DELIVERY',
7
- Discount = 'DISCOUNT',
8
- Tax = 'TAX',
9
- Item = 'ITEM', // Propably unused
10
- }
11
-
12
- export const DeliveryPricingSheet = (
13
- params: PricingSheetParams<DeliveryPricingCalculation>,
14
- ): IDeliveryPricingSheet => {
15
- const basePricingSheet: IBasePricingSheet<DeliveryPricingCalculation> = BasePricingSheet(params);
16
-
17
- const pricingSheet: IDeliveryPricingSheet = {
18
- ...basePricingSheet,
19
-
20
- addDiscount({ amount, isTaxable, isNetPrice, discountId, meta }) {
21
- basePricingSheet.calculation.push({
22
- category: DeliveryPricingRowCategory.Discount,
23
- amount,
24
- isTaxable,
25
- isNetPrice,
26
- discountId,
27
- meta,
28
- });
29
- },
30
-
31
- addFee({ amount, isTaxable, isNetPrice, meta }) {
32
- basePricingSheet.calculation.push({
33
- amount,
34
- category: DeliveryPricingRowCategory.Delivery,
35
- isNetPrice,
36
- isTaxable,
37
- meta,
38
- });
39
- },
40
-
41
- addTax({ amount, rate, meta }) {
42
- basePricingSheet.calculation.push({
43
- amount,
44
- category: DeliveryPricingRowCategory.Tax,
45
- isNetPrice: false,
46
- isTaxable: false,
47
- meta,
48
- rate,
49
- });
50
- },
51
-
52
- taxSum(filter) {
53
- return basePricingSheet.sum({
54
- category: DeliveryPricingRowCategory.Tax,
55
- ...(filter || {}),
56
- });
57
- },
58
-
59
- discountPrices(explicitDiscountId) {
60
- const discountIds = pricingSheet
61
- .filterBy({
62
- category: DeliveryPricingRowCategory.Discount,
63
- discountId: explicitDiscountId,
64
- })
65
- .map(({ discountId }) => discountId);
66
-
67
- return [...new Set(discountIds)]
68
- .map((discountId) => {
69
- const { currency, amount } = basePricingSheet.total({
70
- category: DeliveryPricingRowCategory.Discount,
71
- discountId,
72
- });
73
- if (!amount) {
74
- return null;
75
- }
76
- return {
77
- discountId,
78
- amount: Math.round(amount),
79
- currency,
80
- };
81
- })
82
- .filter(Boolean);
83
- },
84
- };
85
-
86
- return pricingSheet;
87
- };
@@ -1,4 +0,0 @@
1
- export enum DeliveryProviderType {
2
- SHIPPING = 'SHIPPING',
3
- PICKUP = 'PICKUP',
4
- }