@darkpos/pricing 1.0.5 → 1.0.8

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 (242) hide show
  1. package/.eslintrc +8 -10
  2. package/__TEST__/item.test.js +137 -99
  3. package/__TEST__/modifier/calculate.test.js +73 -0
  4. package/__TEST__/modifier/getAvailablePromotionsOrSubscriptions.test.js +81 -0
  5. package/__TEST__/modifier/getMatchTagsModifiers.test.js +109 -0
  6. package/__TEST__/modifier/getModifierIndex.test.js +40 -0
  7. package/__TEST__/modifier/getRecommendedModifiers.test.js +17 -0
  8. package/__TEST__/modifier/hasAllTags.test.js +25 -0
  9. package/__TEST__/modifier/hasAttribute.test.js +47 -0
  10. package/__TEST__/modifier/hasMatchTags.test.js +56 -0
  11. package/__TEST__/modifier/hasNoTags.test.js +21 -0
  12. package/__TEST__/modifier/mocks/toggleModifier_no1.json +13440 -0
  13. package/__TEST__/modifier/mocks/toggleModifier_no2.json +13438 -0
  14. package/__TEST__/modifier/mocks/toggleModifier_no3.json +13598 -0
  15. package/__TEST__/modifier/sort.test.js +41 -0
  16. package/__TEST__/order.test.js +50 -37
  17. package/index.js +1 -25
  18. package/lib/constants/Modifier/Attributes.js +9 -0
  19. package/lib/constants/Modifier/Compute.js +15 -0
  20. package/lib/constants/Modifier/Types.js +7 -0
  21. package/lib/constants/Modifier/index.js +9 -0
  22. package/lib/constants/Status.js +39 -0
  23. package/lib/constants/index.js +7 -0
  24. package/lib/constants/status.js +39 -0
  25. package/lib/index.js +38 -0
  26. package/lib/item/addIndirectModifier.js +34 -17
  27. package/lib/item/calculate.js +41 -19
  28. package/lib/item/create.js +35 -0
  29. package/lib/item/filterByDirectModifiers.js +5 -6
  30. package/lib/item/findOriginalItem.js +8 -0
  31. package/lib/item/getBalanceToPay.js +12 -0
  32. package/lib/item/getDepartmentModifiers.js +5 -0
  33. package/lib/item/getDiscountModifiers.js +7 -0
  34. package/lib/item/getItemModifiers.js +16 -0
  35. package/lib/item/getItemModifiersDescription.js +22 -0
  36. package/lib/item/getItemPrice.js +57 -0
  37. package/lib/item/getItemsTotalPaid.js +9 -0
  38. package/lib/item/getItemsTotalPieces.js +7 -0
  39. package/lib/item/getNotIncludedModifiers.js +11 -0
  40. package/lib/item/getParentItem.js +5 -0
  41. package/lib/item/getPendingIndex.js +5 -0
  42. package/lib/item/getTotal.js +8 -0
  43. package/lib/item/getTotalPieces.js +7 -0
  44. package/lib/item/getTotals.js +25 -0
  45. package/lib/item/hasCreateSubscription.js +7 -0
  46. package/lib/item/hasModifier.js +15 -0
  47. package/lib/item/hasModifierWithValue.js +11 -0
  48. package/lib/item/hasModifiers.js +9 -0
  49. package/lib/item/hasSubscription.js +5 -0
  50. package/lib/item/index.js +80 -10
  51. package/lib/item/isParentIncluded.js +4 -0
  52. package/lib/item/isRelatedItem.js +4 -0
  53. package/lib/item/isSelected.js +13 -0
  54. package/lib/item/openRecommendationDialog.js +4 -0
  55. package/lib/item/removeModifier.js +84 -0
  56. package/lib/item/removeModifierById.js +8 -0
  57. package/lib/item/removeModifiers.js +14 -0
  58. package/lib/modifier/addFile.js +19 -0
  59. package/lib/modifier/addImage.js +18 -0
  60. package/lib/modifier/calculate.js +43 -0
  61. package/lib/modifier/contains.js +5 -0
  62. package/lib/modifier/convertMenuModifiers.js +5 -0
  63. package/lib/modifier/create.js +44 -0
  64. package/lib/modifier/createAmountOverrideModifier.js +20 -0
  65. package/lib/modifier/createCreditModifier.js +32 -0
  66. package/lib/modifier/createDiscountModifier.js +25 -0
  67. package/lib/modifier/createGroupValuesModifier.js +29 -0
  68. package/lib/modifier/createIndirectModifier.js +42 -0
  69. package/lib/modifier/createSubscriptionModifier.js +19 -0
  70. package/lib/modifier/displayAsCard.js +9 -0
  71. package/lib/modifier/displayAsChips.js +9 -0
  72. package/lib/modifier/displayAsList.js +9 -0
  73. package/lib/modifier/duplicate.js +12 -0
  74. package/lib/modifier/enableAutoPopup.js +9 -0
  75. package/lib/modifier/filterByRequiredModifiers.js +4 -0
  76. package/lib/modifier/findById.js +7 -0
  77. package/lib/modifier/findByPaymentMethod.js +10 -0
  78. package/lib/modifier/findByPaymentType.js +10 -0
  79. package/lib/modifier/getAvailablePromotions.js +5 -0
  80. package/lib/modifier/getAvailablePromotionsOrSubscriptions.js +15 -0
  81. package/lib/modifier/getAvailableSubscriptions.js +5 -0
  82. package/lib/modifier/getByAttribute.js +6 -0
  83. package/lib/modifier/getCreditModifier.js +6 -0
  84. package/lib/modifier/getDefaultModifiers.js +4 -0
  85. package/lib/modifier/getDepartmentMaxItems.js +10 -0
  86. package/lib/modifier/getDepartmentModifiers.js +11 -0
  87. package/lib/modifier/getDescription.js +6 -0
  88. package/lib/modifier/getDescriptions.js +9 -0
  89. package/lib/modifier/getDirectModifiers.js +5 -0
  90. package/lib/modifier/getDiscountModifiers.js +7 -0
  91. package/lib/modifier/getEntityModifiers.js +11 -0
  92. package/lib/modifier/getEntityPromotions.js +11 -0
  93. package/lib/modifier/getExtendedTags.js +14 -0
  94. package/lib/modifier/getFiles.js +5 -0
  95. package/lib/modifier/getGroupModifiers.js +9 -0
  96. package/lib/modifier/getGroupOfItemsModifiers.js +4 -0
  97. package/lib/modifier/getGroupRelatedModifiers.js +26 -0
  98. package/lib/modifier/getImages.js +5 -0
  99. package/lib/modifier/getInheritedModifiers.js +30 -0
  100. package/lib/modifier/getItemModifiers.js +39 -0
  101. package/lib/modifier/getLaundryModifiers.js +9 -0
  102. package/lib/modifier/getMatchTagsModifiers.js +9 -0
  103. package/lib/modifier/getModifierIndex.js +14 -0
  104. package/lib/modifier/getPreferences.js +24 -0
  105. package/lib/modifier/getPromotionModifiers.js +5 -0
  106. package/lib/modifier/getPromptMessage.js +6 -0
  107. package/lib/modifier/getProperty.js +11 -0
  108. package/lib/modifier/getRecommendedModifiers.js +7 -0
  109. package/lib/modifier/getRelatedModifiers.js +10 -0
  110. package/lib/modifier/getRequiredModifiers.js +4 -0
  111. package/lib/modifier/getSelectedValues.js +7 -0
  112. package/lib/modifier/getService.js +5 -0
  113. package/lib/modifier/getSplittedModifiers.js +30 -0
  114. package/lib/modifier/getStarchModifier.js +9 -0
  115. package/lib/modifier/getSubscriptionItem.js +12 -0
  116. package/lib/modifier/getSubscriptionModifiers.js +5 -0
  117. package/lib/modifier/getSuggestion.js +9 -0
  118. package/lib/modifier/getUnhiddenModifiers.js +9 -0
  119. package/lib/modifier/getUsingCount.js +11 -0
  120. package/lib/modifier/hasAddModifiers.js +5 -0
  121. package/lib/modifier/hasAllTag.js +12 -0
  122. package/lib/modifier/hasAttribute.js +8 -0
  123. package/lib/modifier/hasAttributes.js +19 -0
  124. package/lib/modifier/hasCreateSubscription.js +10 -0
  125. package/lib/modifier/hasDisplayPrompt.js +9 -0
  126. package/lib/modifier/hasMatchTags.js +27 -0
  127. package/lib/modifier/hasModifier.js +12 -0
  128. package/lib/modifier/hasNoTags.js +9 -0
  129. package/lib/modifier/hasRelatedItems.js +8 -0
  130. package/lib/modifier/includePiecesInQuantity.js +10 -0
  131. package/lib/modifier/includesInGroup.js +9 -0
  132. package/lib/modifier/index.js +242 -0
  133. package/lib/modifier/isAmountOverride.js +7 -0
  134. package/lib/modifier/isAvailablePromotion.js +23 -0
  135. package/lib/modifier/isAvailableSubscription.js +28 -0
  136. package/lib/modifier/isCompact.js +12 -0
  137. package/lib/modifier/isCredit.js +6 -0
  138. package/lib/modifier/isCustomerTagsExtend.js +9 -0
  139. package/lib/modifier/isDefault.js +4 -0
  140. package/lib/modifier/isDepartment.js +6 -0
  141. package/lib/modifier/isDirect.js +6 -0
  142. package/lib/modifier/isDiscount.js +6 -0
  143. package/lib/modifier/isEditable.js +10 -0
  144. package/lib/modifier/isGratuity.js +6 -0
  145. package/lib/modifier/isGroupOfItems.js +12 -0
  146. package/lib/modifier/isGroupOfModifiers.js +12 -0
  147. package/lib/modifier/isGroupOfValues.js +13 -0
  148. package/lib/modifier/isHidden.js +4 -0
  149. package/lib/modifier/isIncluded.js +4 -0
  150. package/lib/modifier/isManual.js +9 -0
  151. package/lib/modifier/isMultiplier.js +11 -0
  152. package/lib/modifier/isOverride.js +6 -0
  153. package/lib/modifier/isPaymentMethods.js +8 -0
  154. package/lib/modifier/isPaymentTypes.js +8 -0
  155. package/lib/modifier/isPreferences.js +8 -0
  156. package/lib/modifier/isPriceOverride.js +7 -0
  157. package/lib/modifier/isPromotion.js +6 -0
  158. package/lib/modifier/isQuantityOverride.js +7 -0
  159. package/lib/modifier/isRemoveModifier.js +4 -0
  160. package/lib/modifier/isRequired.js +4 -0
  161. package/lib/modifier/isRequiredAndOverride.js +4 -0
  162. package/lib/modifier/isService.js +9 -0
  163. package/lib/modifier/isSingleValue.js +9 -0
  164. package/lib/modifier/isSubscription.js +6 -0
  165. package/lib/modifier/isTrackUsageSubscription.js +5 -0
  166. package/lib/modifier/isValueSelected.js +7 -0
  167. package/lib/modifier/purifyModifiers.js +15 -0
  168. package/lib/modifier/sort.js +35 -0
  169. package/lib/order/addCreditModifier.js +27 -0
  170. package/lib/order/addDiscountModifier.js +9 -0
  171. package/lib/order/addItem.js +292 -0
  172. package/lib/order/addItemModifier.js +214 -0
  173. package/lib/order/addModifier.js +9 -0
  174. package/lib/order/addModifierToAllItems.js +16 -0
  175. package/lib/order/addNote.js +25 -0
  176. package/lib/order/addTable.js +11 -0
  177. package/lib/order/calculate.js +51 -16
  178. package/lib/order/calculateDue.js +15 -0
  179. package/lib/order/calculateOrdersDue.js +26 -0
  180. package/lib/order/canSplit.js +4 -0
  181. package/lib/order/changeEndDate.js +15 -0
  182. package/lib/order/changeLocation.js +20 -0
  183. package/lib/order/changeStartDate.js +14 -0
  184. package/lib/order/combineSubOrders.js +14 -0
  185. package/lib/order/containsSerial.js +5 -0
  186. package/lib/order/create.js +67 -0
  187. package/lib/order/createParent.js +9 -0
  188. package/lib/order/duplicateItem.js +16 -0
  189. package/lib/order/findItemIndex.js +6 -0
  190. package/lib/order/getAppliedCredit.js +5 -0
  191. package/lib/order/getBalance.js +9 -0
  192. package/lib/order/getCustomer.js +4 -0
  193. package/lib/order/getCustomerStoreCredit.js +14 -0
  194. package/lib/order/getCustomerSubscriptions.js +8 -0
  195. package/lib/order/getCustomerSubscriptionsByItem.js +14 -0
  196. package/lib/order/getDepartmentModifiers.js +9 -0
  197. package/lib/order/getEndDate.js +4 -0
  198. package/lib/order/getItemByItemId.js +6 -0
  199. package/lib/order/getItemIndex.js +9 -0
  200. package/lib/order/getItemsToPay.js +17 -0
  201. package/lib/order/getMenuItemsByCustomer.js +19 -0
  202. package/lib/order/getNumberOfItems.js +10 -0
  203. package/lib/order/getOrdersPieces.js +10 -0
  204. package/lib/order/getPendingItemIndex.js +5 -0
  205. package/lib/order/getRelatedItems.js +11 -0
  206. package/lib/order/getSameItems.js +19 -0
  207. package/lib/order/getScheduleByCustomer.js +20 -0
  208. package/lib/order/getScreenCustomerNotes.js +12 -0
  209. package/lib/order/getSelectedItem.js +6 -0
  210. package/lib/order/getStartDate.js +4 -0
  211. package/lib/order/getTip.js +10 -0
  212. package/lib/order/getTotalPieces.js +17 -0
  213. package/lib/order/getTotals.js +28 -0
  214. package/lib/order/hasAggregate.js +20 -0
  215. package/lib/order/hasItem.js +7 -0
  216. package/lib/order/hasRemainingSubscription.js +67 -0
  217. package/lib/order/hold.js +12 -0
  218. package/lib/order/index.js +163 -5
  219. package/lib/order/isDetailed.js +4 -0
  220. package/lib/order/isHold.js +4 -0
  221. package/lib/order/isNew.js +4 -0
  222. package/lib/order/isOpen.js +4 -0
  223. package/lib/order/isParent.js +7 -0
  224. package/lib/order/merge.js +96 -0
  225. package/lib/order/open.js +11 -0
  226. package/lib/order/pickEndDate.js +70 -0
  227. package/lib/order/removeApplyModifier.js +24 -0
  228. package/lib/order/removeDiscountModifier.js +16 -0
  229. package/lib/order/removeItem.js +55 -0
  230. package/lib/order/removeItemByIndex.js +5 -0
  231. package/lib/order/removeItemModifier.js +69 -0
  232. package/lib/order/removeModifier.js +21 -0
  233. package/lib/order/removeModifierByAttribute.js +23 -0
  234. package/lib/order/removeModifiersWithPaymentMethods.js +29 -0
  235. package/lib/order/removeModifiersWithPaymentTypes.js +27 -0
  236. package/lib/order/setCustomer.js +50 -0
  237. package/lib/order/splitByDepartments.js +151 -0
  238. package/lib/order/toggleModifier.js +9 -0
  239. package/lib/order/updateItem.js +8 -0
  240. package/lib/order/updateItemQuantity.js +35 -0
  241. package/lib/order/void.js +11 -0
  242. package/package.json +15 -18
@@ -0,0 +1,17 @@
1
+ const usePricing = require('../../index');
2
+
3
+ const pricingService = usePricing();
4
+
5
+ describe('GetRecommendedModifiers Function', () => {
6
+ test('usecases', () => {
7
+ const modifier = { modifier: { recommended: true } };
8
+ expect(pricingService.modifier.getRecommendedModifiers([modifier])).toHaveLength(1);
9
+
10
+ const modifier2 = {
11
+ modifier: { modifier: { _id: 1 } },
12
+ };
13
+ expect(pricingService.modifier.getRecommendedModifiers([modifier2])).toHaveLength(
14
+ 0
15
+ );
16
+ });
17
+ });
@@ -0,0 +1,25 @@
1
+ const usePricing = require('../../index');
2
+
3
+ const pricingService = usePricing();
4
+
5
+ describe('HasAllTag Function', () => {
6
+ test('usecases', () => {
7
+ expect(pricingService.modifier.hasAllTag()).toBe(false);
8
+ const customer = {};
9
+ expect(pricingService.modifier.hasAllTag(customer)).toBe(false);
10
+ customer.tags = [];
11
+ expect(pricingService.modifier.hasAllTag(customer)).toBe(false);
12
+ customer.tags = ['default'];
13
+ expect(pricingService.modifier.hasAllTag(customer)).toBe(false);
14
+ customer.tags = ['all'];
15
+ expect(pricingService.modifier.hasAllTag(customer)).toBe(true);
16
+ customer.tags = ['All'];
17
+ expect(pricingService.modifier.hasAllTag(customer)).toBe(true);
18
+ customer.tags = ['All', 'default'];
19
+ expect(pricingService.modifier.hasAllTag(customer)).toBe(true);
20
+ customer.tags = ['all', 'test'];
21
+ expect(pricingService.modifier.hasAllTag(customer)).toBe(true);
22
+ customer.tags = ['test'];
23
+ expect(pricingService.modifier.hasAllTag(customer)).toBe(false);
24
+ });
25
+ });
@@ -0,0 +1,47 @@
1
+ const usePricing = require('../../index');
2
+
3
+ const pricingService = usePricing();
4
+
5
+ describe('Has Modifiers Function', () => {
6
+ test('usecases', () => {
7
+ expect(pricingService.modifier.hasAttribute()).toBe(false);
8
+ expect(pricingService.modifier.hasAttribute(undefined, 'test')).toBe(false);
9
+ expect(pricingService.modifier.hasAttribute({}, undefined)).toBe(false);
10
+ expect(pricingService.modifier.hasAttribute({ attributes: [] }, undefined)).toBe(
11
+ false
12
+ );
13
+ expect(
14
+ pricingService.modifier.hasAttribute({ attributes: [undefined] }, undefined)
15
+ ).toBe(false);
16
+ expect(
17
+ pricingService.modifier.hasAttribute({ attributes: ['test'] }, undefined)
18
+ ).toBe(false);
19
+ expect(
20
+ pricingService.modifier.hasAttribute({ attributes: ['undefined'] }, undefined)
21
+ ).toBe(false);
22
+ expect(
23
+ pricingService.modifier.hasAttribute(
24
+ { attributes: ['undefined', undefined, 'test'] },
25
+ undefined
26
+ )
27
+ ).toBe(false);
28
+ expect(
29
+ pricingService.modifier.hasAttribute(
30
+ { attributes: ['undefined', undefined, 'test'] },
31
+ 'undefined'
32
+ )
33
+ ).toBe(true);
34
+ expect(
35
+ pricingService.modifier.hasAttribute(
36
+ { attributes: ['undefined', undefined, 'test'] },
37
+ 'test'
38
+ )
39
+ ).toBe(true);
40
+ expect(
41
+ pricingService.modifier.hasAttribute(
42
+ { attributes: ['undefined', undefined, 'test', 'test', 'test'] },
43
+ 'test'
44
+ )
45
+ ).toBe(true);
46
+ });
47
+ });
@@ -0,0 +1,56 @@
1
+ const usePricing = require('../../index');
2
+
3
+ const pricingService = usePricing();
4
+
5
+ describe('Has Match Tags Function', () => {
6
+ test('usecases', () => {
7
+ expect(pricingService.modifier.hasMatchTags()).toBe(true);
8
+ const customer = {};
9
+ const modifier = {};
10
+ expect(pricingService.modifier.hasMatchTags(customer)).toBe(true);
11
+ expect(pricingService.modifier.hasMatchTags(undefined, modifier)).toBe(true);
12
+ customer.tags = [];
13
+ modifier.tags = [];
14
+ expect(pricingService.modifier.hasMatchTags(customer)).toBe(true);
15
+ expect(pricingService.modifier.hasMatchTags(undefined, modifier)).toBe(true);
16
+ customer.tags = ['all'];
17
+ modifier.tags = ['all'];
18
+ expect(pricingService.modifier.hasMatchTags(customer)).toBe(true);
19
+ expect(pricingService.modifier.hasMatchTags(undefined, modifier)).toBe(true);
20
+ customer.tags = ['All'];
21
+ modifier.tags = ['All'];
22
+ expect(pricingService.modifier.hasMatchTags(customer)).toBe(true);
23
+ expect(pricingService.modifier.hasMatchTags(undefined, modifier)).toBe(true);
24
+ customer.tags = ['test'];
25
+ modifier.tags = ['test'];
26
+ expect(pricingService.modifier.hasMatchTags(customer)).toBe(false);
27
+ expect(pricingService.modifier.hasMatchTags(undefined, modifier)).toBe(false);
28
+ customer.tags = ['test'];
29
+ modifier.tags = ['all'];
30
+ expect(pricingService.modifier.hasMatchTags(customer, modifier)).toBe(false);
31
+ customer.tags = ['all'];
32
+ modifier.tags = ['test'];
33
+ expect(pricingService.modifier.hasMatchTags(customer, modifier)).toBe(false);
34
+ customer.tags = ['all'];
35
+ modifier.tags = ['all'];
36
+ expect(pricingService.modifier.hasMatchTags(customer, modifier)).toBe(true);
37
+ customer.tags = ['test'];
38
+ modifier.tags = ['test2'];
39
+ expect(pricingService.modifier.hasMatchTags(customer, modifier)).toBe(false);
40
+ customer.tags = ['test'];
41
+ modifier.tags = ['test'];
42
+ expect(pricingService.modifier.hasMatchTags(customer, modifier)).toBe(true);
43
+ customer.tags = ['test11', 'test12', 'test13', 'test14'];
44
+ modifier.tags = ['test'];
45
+ expect(pricingService.modifier.hasMatchTags(customer, modifier)).toBe(false);
46
+ customer.tags = ['test11', 'test12', 'test13', 'test14'];
47
+ modifier.tags = ['test21', 'test22', 'test23', 'test24'];
48
+ expect(pricingService.modifier.hasMatchTags(customer, modifier)).toBe(false);
49
+ customer.tags = ['test11', 'test12', 'test13', 'test14', 'match'];
50
+ modifier.tags = ['test21', 'test22', 'test23', 'test24', 'match'];
51
+ expect(pricingService.modifier.hasMatchTags(customer, modifier)).toBe(true);
52
+ customer.tags = ['test11', 'test12', 'test13', 'test14', 'Match'];
53
+ modifier.tags = ['test21', 'test22', 'test23', 'test24', 'match'];
54
+ expect(pricingService.modifier.hasMatchTags(customer, modifier)).toBe(false);
55
+ });
56
+ });
@@ -0,0 +1,21 @@
1
+ const usePricing = require('../../index');
2
+
3
+ const pricingService = usePricing();
4
+
5
+ describe('Has No Tags Function', () => {
6
+ test('usecases', () => {
7
+ expect(pricingService.modifier.hasNoTags()).toBe(true);
8
+ const customer = {};
9
+ expect(pricingService.modifier.hasNoTags(customer)).toBe(true);
10
+ customer.tags = [];
11
+ expect(pricingService.modifier.hasNoTags(customer)).toBe(true);
12
+ customer.tags = ['test'];
13
+ expect(pricingService.modifier.hasNoTags(customer)).toBe(false);
14
+ customer.tags = ['default'];
15
+ expect(pricingService.modifier.hasNoTags(customer)).toBe(false);
16
+ customer.tags = ['all'];
17
+ expect(pricingService.modifier.hasNoTags(customer)).toBe(false);
18
+ customer.tags = ['All'];
19
+ expect(pricingService.modifier.hasNoTags(customer)).toBe(false);
20
+ });
21
+ });