@darkpos/pricing 1.0.125 → 1.0.127

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.
@@ -2446,155 +2446,6 @@ describe('Order actions', () => {
2446
2446
  });
2447
2447
  });
2448
2448
 
2449
- test('CU-86dueyuqj -> Merge Parent orders', () => {
2450
- const item1 = {
2451
- _id: 1,
2452
- price: 10,
2453
- quantity: 1,
2454
- modifiers: [],
2455
- };
2456
- const item2 = {
2457
- _id: 2,
2458
- price: 20,
2459
- quantity: 1,
2460
- modifiers: [],
2461
- };
2462
-
2463
- const user = {
2464
- _id: 'userId123',
2465
- firstName: 'Esteban',
2466
- lastName: 'Mero',
2467
- };
2468
-
2469
- const childOrder1 = pricingService.order.calculate({
2470
- items: [item1],
2471
- _id: 'abc',
2472
- _parentId: 1,
2473
- });
2474
- const childOrder2 = pricingService.order.calculate({
2475
- items: [item2],
2476
- _id: 'bcd',
2477
- _parentId: 2,
2478
- });
2479
-
2480
- const parentOrder1 = {
2481
- items: [],
2482
- orders: [childOrder1],
2483
- _isParent: true,
2484
- _id: 1,
2485
- };
2486
- const parentOrder2 = {
2487
- items: [],
2488
- orders: [childOrder2],
2489
- _isParent: true,
2490
- _id: 2,
2491
- };
2492
-
2493
- const [newParentOrder, voidedOrders, ordersToDelete, subOrders] =
2494
- pricingService.order.merge({
2495
- orders: [parentOrder1, parentOrder2],
2496
- subOrdersToMerge: [childOrder1, childOrder2],
2497
- aggregateItems: true,
2498
- user,
2499
- });
2500
-
2501
- expect(newParentOrder).toHaveProperty('total', 30);
2502
- expect(voidedOrders.length).toBe(1);
2503
- expect(ordersToDelete.length).toBe(0);
2504
- expect(subOrders.length).toBe(2);
2505
- expect(newParentOrder.orders.length).toBe(2);
2506
- });
2507
-
2508
- test('CU-86dueyuqj -> Merge Orders that are not parents and not children', () => {
2509
- const item1 = {
2510
- _id: 1,
2511
- price: 10,
2512
- quantity: 1,
2513
- modifiers: [],
2514
- };
2515
- const item2 = {
2516
- _id: 2,
2517
- price: 20,
2518
- quantity: 1,
2519
- modifiers: [],
2520
- };
2521
-
2522
- const user = {
2523
- _id: 'userId123',
2524
- firstName: 'Esteban',
2525
- lastName: 'Mero',
2526
- };
2527
-
2528
- const order1 = pricingService.order.calculate({
2529
- items: [item1],
2530
- _id: 'abc',
2531
- });
2532
- const order2 = pricingService.order.calculate({
2533
- items: [item2],
2534
- _id: 'bcd',
2535
- });
2536
-
2537
- const [newOrder, voidedOrders, ordersToDelete, subOrders] =
2538
- pricingService.order.merge({
2539
- orders: [order1, order2],
2540
- subOrdersToMerge: [],
2541
- aggregateItems: true,
2542
- user,
2543
- });
2544
-
2545
- expect(newOrder).toHaveProperty('total', 30);
2546
- expect(voidedOrders.length).toBe(1);
2547
- expect(ordersToDelete.length).toBe(0);
2548
- expect(subOrders.length).toBe(0);
2549
- expect(newOrder.orders).toBe(undefined);
2550
- });
2551
-
2552
- test('CU-86dueyuqj -> Merge Child orders', () => {
2553
- const item1 = {
2554
- _id: 1,
2555
- price: 10,
2556
- quantity: 1,
2557
- modifiers: [],
2558
- };
2559
- const item2 = {
2560
- _id: 2,
2561
- price: 20,
2562
- quantity: 1,
2563
- modifiers: [],
2564
- };
2565
-
2566
- const user = {
2567
- _id: 'userId123',
2568
- firstName: 'Esteban',
2569
- lastName: 'Mero',
2570
- };
2571
-
2572
- const childOrder1 = pricingService.order.calculate({
2573
- items: [item1],
2574
- _id: 'abc',
2575
- _parentId: 1,
2576
- });
2577
- const childOrder2 = pricingService.order.calculate({
2578
- items: [item2],
2579
- _id: 'bcd',
2580
- _parentId: 1,
2581
- });
2582
-
2583
- const [newParentOrder, voidedOrders, ordersToDelete, subOrders] =
2584
- pricingService.order.merge({
2585
- orders: [childOrder1, childOrder2],
2586
- subOrdersToMerge: [],
2587
- aggregateItems: true,
2588
- user,
2589
- });
2590
-
2591
- expect(newParentOrder).toHaveProperty('total', 30);
2592
- expect(voidedOrders.length).toBe(1);
2593
- expect(ordersToDelete.length).toBe(0);
2594
- expect(subOrders.length).toBe(0);
2595
- expect(newParentOrder.orders).toBe(undefined);
2596
- });
2597
-
2598
2449
  test('Get calculated Order, multiple items and indirect modifiers #2 toNeareastMultiple', () => {
2599
2450
  const pricingService2 = usePricing({
2600
2451
  store: { _settings: { localization: { nearestMultiple: '0.5' } } },
@@ -5,8 +5,6 @@ module.exports = ({ actions }) =>
5
5
  const computeAmount = modifier.compute && modifier.compute.amount;
6
6
  const { fixedValue } = modifier.properties.override;
7
7
 
8
- console.log({ computeAmount, fixedValue });
9
-
10
8
  const result =
11
9
  typeof computeAmount !== 'number' && typeof fixedValue !== 'number';
12
10
 
@@ -150,6 +150,9 @@ module.exports = ({
150
150
  const { subTotals, subTotal, total } =
151
151
  itemActions.getItemsTotals(calculatedItems);
152
152
 
153
+ const pieceCount = calculatedItems.length
154
+ ? itemActions.getItemsTotalPieces(calculatedItems)
155
+ : order.properties.pieceCount;
153
156
  return {
154
157
  ...order,
155
158
  subTotals,
@@ -157,5 +160,9 @@ module.exports = ({
157
160
  total,
158
161
  items: calculatedItems,
159
162
  status: actions.getUpdatedStatus({ status: order.status, total }),
163
+ properties: {
164
+ ...(order.properties || {}),
165
+ pieceCount,
166
+ },
160
167
  };
161
168
  };
@@ -50,7 +50,6 @@ const getTotals = require('./getTotals');
50
50
  const getDepartmentModifiers = require('./getDepartmentModifiers');
51
51
  const getCustomerStoreCredit = require('./getCustomerStoreCredit');
52
52
  const getTip = require('./getTip');
53
- const merge = require('./merge');
54
53
  const calculateOrdersDue = require('./calculateOrdersDue');
55
54
  const removeModifierByAttribute = require('./removeModifierByAttribute');
56
55
  const removeApplyModifier = require('./removeApplyModifier');
@@ -155,7 +154,6 @@ const orderActions = (deps = {}) => {
155
154
  getDepartmentModifiers: getDepartmentModifiers(innerDeps),
156
155
  getCustomerStoreCredit: getCustomerStoreCredit(innerDeps),
157
156
  getTip: getTip(innerDeps),
158
- merge: merge(innerDeps),
159
157
  calculateOrdersDue: calculateOrdersDue(innerDeps),
160
158
  removeModifierByAttribute: removeModifierByAttribute(innerDeps),
161
159
  removeApplyModifier: removeApplyModifier(innerDeps),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@darkpos/pricing",
3
- "version": "1.0.125",
3
+ "version": "1.0.127",
4
4
  "description": "Pricing calculator",
5
5
  "author": "Dark POS",
6
6
  "license": "ISC",
@@ -46,14 +46,11 @@
46
46
  "eslint": "^8.2.0",
47
47
  "eslint-config-airbnb": "^19.0.4",
48
48
  "eslint-config-airbnb-base": "^15.0.0",
49
- "eslint-config-prettier": "^8.5.0",
50
49
  "eslint-plugin-import": "^2.26.0",
51
50
  "eslint-plugin-jest": "^26.5.3",
52
- "eslint-plugin-prettier": "^4.0.0",
53
51
  "jest": "^28.1.1",
54
- "prettier": "^2.7.0",
55
52
  "supertest": "^6.2.3",
56
53
  "supervisor": "^0.12.0"
57
54
  },
58
- "gitHead": "75e2c7fc1237e4cb3fd5f019390d314ada58229f"
55
+ "gitHead": "70f896daee0812bd63d5f7da8ac0e26d56127488"
59
56
  }
@@ -1,96 +0,0 @@
1
- module.exports = ({ _, actions, utils }) => {
2
- const { math } = utils;
3
-
4
- const isAggregatableItems = (first, second) => {
5
- if (
6
- first.itemId !== second.itemId ||
7
- first.price !== second.price ||
8
- first.description !== second.description ||
9
- (first.modifiers && !second.modifiers) ||
10
- (!first.modifiers && second.modifiers) ||
11
- first.modifiers.length !== second.modifiers.length
12
- ) {
13
- return false;
14
- }
15
- let hasInvalidModifier = false;
16
- first.modifiers.forEach(modifier => {
17
- if (!second.modifiers.find(mod => mod._id === modifier._id)) {
18
- hasInvalidModifier = true;
19
- }
20
- });
21
-
22
- return !hasInvalidModifier;
23
- };
24
-
25
- // return: [Order, Order, Array<Order>]
26
- return function merge({ orders, subOrdersToMerge, aggregateItems, user }) {
27
- const items = orders.reduce((res, order) => res.concat(order.items), []);
28
- let newOrder = null;
29
- // Unique Orders
30
- const mOrders = _.uniqBy(orders, '_id');
31
- if (aggregateItems) {
32
- const newItems = [];
33
- items.forEach(item => {
34
- const repeatedItem = newItems.find(each =>
35
- isAggregatableItems(each, item)
36
- );
37
- if (repeatedItem) {
38
- repeatedItem.quantity = math.add(
39
- repeatedItem.quantity,
40
- item.quantity
41
- );
42
- } else {
43
- newItems.push({ ...item });
44
- }
45
- });
46
- newOrder = {
47
- ...mOrders[0],
48
- items: newItems,
49
- };
50
- } else {
51
- newOrder = {
52
- ...mOrders[0],
53
- items,
54
- };
55
- }
56
-
57
- const ordersToDelete = [];
58
- const voidedOrders = [];
59
- for (let i = 1; i < mOrders.length; i += 1) {
60
- if (mOrders[i] && mOrders[i].parentId) {
61
- ordersToDelete.push(mOrders[i]);
62
- } else {
63
- let voidedOrder = actions.voidOrder(mOrders[i]);
64
- if (!voidedOrder) return null;
65
- voidedOrder.isParent = false;
66
- voidedOrder = actions.addNote({
67
- order: voidedOrder,
68
- message: `This order was merged into order #${mOrders[i].displayId}`,
69
- user,
70
- });
71
- voidedOrders.push(voidedOrder);
72
- }
73
- }
74
-
75
- let subOrders = [];
76
- if (newOrder && subOrdersToMerge && subOrdersToMerge.length > 0) {
77
- subOrders = subOrdersToMerge.map(s => ({
78
- ...s,
79
- parentId: newOrder._id,
80
- customer: newOrder.customer,
81
- }));
82
- newOrder.orders = subOrders;
83
- }
84
-
85
- newOrder = actions.calculate(newOrder);
86
- newOrder = actions.addNote({
87
- order: newOrder,
88
- message: `This order was merged with ${
89
- mOrders.length === 2 ? ` order ` : ` orders `
90
- } # ${mOrders.slice(1).map(order => ` ${order.displayId}`)}`,
91
- user,
92
- });
93
-
94
- return [newOrder, voidedOrders, ordersToDelete, subOrders];
95
- };
96
- };