@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.
- package/.eslintrc +8 -10
- package/__TEST__/item.test.js +137 -99
- package/__TEST__/modifier/calculate.test.js +73 -0
- package/__TEST__/modifier/getAvailablePromotionsOrSubscriptions.test.js +81 -0
- package/__TEST__/modifier/getMatchTagsModifiers.test.js +109 -0
- package/__TEST__/modifier/getModifierIndex.test.js +40 -0
- package/__TEST__/modifier/getRecommendedModifiers.test.js +17 -0
- package/__TEST__/modifier/hasAllTags.test.js +25 -0
- package/__TEST__/modifier/hasAttribute.test.js +47 -0
- package/__TEST__/modifier/hasMatchTags.test.js +56 -0
- package/__TEST__/modifier/hasNoTags.test.js +21 -0
- package/__TEST__/modifier/mocks/toggleModifier_no1.json +13440 -0
- package/__TEST__/modifier/mocks/toggleModifier_no2.json +13438 -0
- package/__TEST__/modifier/mocks/toggleModifier_no3.json +13598 -0
- package/__TEST__/modifier/sort.test.js +41 -0
- package/__TEST__/order.test.js +50 -37
- package/index.js +1 -25
- package/lib/constants/Modifier/Attributes.js +9 -0
- package/lib/constants/Modifier/Compute.js +15 -0
- package/lib/constants/Modifier/Types.js +7 -0
- package/lib/constants/Modifier/index.js +9 -0
- package/lib/constants/Status.js +39 -0
- package/lib/constants/index.js +7 -0
- package/lib/constants/status.js +39 -0
- package/lib/index.js +38 -0
- package/lib/item/addIndirectModifier.js +34 -17
- package/lib/item/calculate.js +41 -19
- package/lib/item/create.js +35 -0
- package/lib/item/filterByDirectModifiers.js +5 -6
- package/lib/item/findOriginalItem.js +8 -0
- package/lib/item/getBalanceToPay.js +12 -0
- package/lib/item/getDepartmentModifiers.js +5 -0
- package/lib/item/getDiscountModifiers.js +7 -0
- package/lib/item/getItemModifiers.js +16 -0
- package/lib/item/getItemModifiersDescription.js +22 -0
- package/lib/item/getItemPrice.js +57 -0
- package/lib/item/getItemsTotalPaid.js +9 -0
- package/lib/item/getItemsTotalPieces.js +7 -0
- package/lib/item/getNotIncludedModifiers.js +11 -0
- package/lib/item/getParentItem.js +5 -0
- package/lib/item/getPendingIndex.js +5 -0
- package/lib/item/getTotal.js +8 -0
- package/lib/item/getTotalPieces.js +7 -0
- package/lib/item/getTotals.js +25 -0
- package/lib/item/hasCreateSubscription.js +7 -0
- package/lib/item/hasModifier.js +15 -0
- package/lib/item/hasModifierWithValue.js +11 -0
- package/lib/item/hasModifiers.js +9 -0
- package/lib/item/hasSubscription.js +5 -0
- package/lib/item/index.js +80 -10
- package/lib/item/isParentIncluded.js +4 -0
- package/lib/item/isRelatedItem.js +4 -0
- package/lib/item/isSelected.js +13 -0
- package/lib/item/openRecommendationDialog.js +4 -0
- package/lib/item/removeModifier.js +84 -0
- package/lib/item/removeModifierById.js +8 -0
- package/lib/item/removeModifiers.js +14 -0
- package/lib/modifier/addFile.js +19 -0
- package/lib/modifier/addImage.js +18 -0
- package/lib/modifier/calculate.js +43 -0
- package/lib/modifier/contains.js +5 -0
- package/lib/modifier/convertMenuModifiers.js +5 -0
- package/lib/modifier/create.js +44 -0
- package/lib/modifier/createAmountOverrideModifier.js +20 -0
- package/lib/modifier/createCreditModifier.js +32 -0
- package/lib/modifier/createDiscountModifier.js +25 -0
- package/lib/modifier/createGroupValuesModifier.js +29 -0
- package/lib/modifier/createIndirectModifier.js +42 -0
- package/lib/modifier/createSubscriptionModifier.js +19 -0
- package/lib/modifier/displayAsCard.js +9 -0
- package/lib/modifier/displayAsChips.js +9 -0
- package/lib/modifier/displayAsList.js +9 -0
- package/lib/modifier/duplicate.js +12 -0
- package/lib/modifier/enableAutoPopup.js +9 -0
- package/lib/modifier/filterByRequiredModifiers.js +4 -0
- package/lib/modifier/findById.js +7 -0
- package/lib/modifier/findByPaymentMethod.js +10 -0
- package/lib/modifier/findByPaymentType.js +10 -0
- package/lib/modifier/getAvailablePromotions.js +5 -0
- package/lib/modifier/getAvailablePromotionsOrSubscriptions.js +15 -0
- package/lib/modifier/getAvailableSubscriptions.js +5 -0
- package/lib/modifier/getByAttribute.js +6 -0
- package/lib/modifier/getCreditModifier.js +6 -0
- package/lib/modifier/getDefaultModifiers.js +4 -0
- package/lib/modifier/getDepartmentMaxItems.js +10 -0
- package/lib/modifier/getDepartmentModifiers.js +11 -0
- package/lib/modifier/getDescription.js +6 -0
- package/lib/modifier/getDescriptions.js +9 -0
- package/lib/modifier/getDirectModifiers.js +5 -0
- package/lib/modifier/getDiscountModifiers.js +7 -0
- package/lib/modifier/getEntityModifiers.js +11 -0
- package/lib/modifier/getEntityPromotions.js +11 -0
- package/lib/modifier/getExtendedTags.js +14 -0
- package/lib/modifier/getFiles.js +5 -0
- package/lib/modifier/getGroupModifiers.js +9 -0
- package/lib/modifier/getGroupOfItemsModifiers.js +4 -0
- package/lib/modifier/getGroupRelatedModifiers.js +26 -0
- package/lib/modifier/getImages.js +5 -0
- package/lib/modifier/getInheritedModifiers.js +30 -0
- package/lib/modifier/getItemModifiers.js +39 -0
- package/lib/modifier/getLaundryModifiers.js +9 -0
- package/lib/modifier/getMatchTagsModifiers.js +9 -0
- package/lib/modifier/getModifierIndex.js +14 -0
- package/lib/modifier/getPreferences.js +24 -0
- package/lib/modifier/getPromotionModifiers.js +5 -0
- package/lib/modifier/getPromptMessage.js +6 -0
- package/lib/modifier/getProperty.js +11 -0
- package/lib/modifier/getRecommendedModifiers.js +7 -0
- package/lib/modifier/getRelatedModifiers.js +10 -0
- package/lib/modifier/getRequiredModifiers.js +4 -0
- package/lib/modifier/getSelectedValues.js +7 -0
- package/lib/modifier/getService.js +5 -0
- package/lib/modifier/getSplittedModifiers.js +30 -0
- package/lib/modifier/getStarchModifier.js +9 -0
- package/lib/modifier/getSubscriptionItem.js +12 -0
- package/lib/modifier/getSubscriptionModifiers.js +5 -0
- package/lib/modifier/getSuggestion.js +9 -0
- package/lib/modifier/getUnhiddenModifiers.js +9 -0
- package/lib/modifier/getUsingCount.js +11 -0
- package/lib/modifier/hasAddModifiers.js +5 -0
- package/lib/modifier/hasAllTag.js +12 -0
- package/lib/modifier/hasAttribute.js +8 -0
- package/lib/modifier/hasAttributes.js +19 -0
- package/lib/modifier/hasCreateSubscription.js +10 -0
- package/lib/modifier/hasDisplayPrompt.js +9 -0
- package/lib/modifier/hasMatchTags.js +27 -0
- package/lib/modifier/hasModifier.js +12 -0
- package/lib/modifier/hasNoTags.js +9 -0
- package/lib/modifier/hasRelatedItems.js +8 -0
- package/lib/modifier/includePiecesInQuantity.js +10 -0
- package/lib/modifier/includesInGroup.js +9 -0
- package/lib/modifier/index.js +242 -0
- package/lib/modifier/isAmountOverride.js +7 -0
- package/lib/modifier/isAvailablePromotion.js +23 -0
- package/lib/modifier/isAvailableSubscription.js +28 -0
- package/lib/modifier/isCompact.js +12 -0
- package/lib/modifier/isCredit.js +6 -0
- package/lib/modifier/isCustomerTagsExtend.js +9 -0
- package/lib/modifier/isDefault.js +4 -0
- package/lib/modifier/isDepartment.js +6 -0
- package/lib/modifier/isDirect.js +6 -0
- package/lib/modifier/isDiscount.js +6 -0
- package/lib/modifier/isEditable.js +10 -0
- package/lib/modifier/isGratuity.js +6 -0
- package/lib/modifier/isGroupOfItems.js +12 -0
- package/lib/modifier/isGroupOfModifiers.js +12 -0
- package/lib/modifier/isGroupOfValues.js +13 -0
- package/lib/modifier/isHidden.js +4 -0
- package/lib/modifier/isIncluded.js +4 -0
- package/lib/modifier/isManual.js +9 -0
- package/lib/modifier/isMultiplier.js +11 -0
- package/lib/modifier/isOverride.js +6 -0
- package/lib/modifier/isPaymentMethods.js +8 -0
- package/lib/modifier/isPaymentTypes.js +8 -0
- package/lib/modifier/isPreferences.js +8 -0
- package/lib/modifier/isPriceOverride.js +7 -0
- package/lib/modifier/isPromotion.js +6 -0
- package/lib/modifier/isQuantityOverride.js +7 -0
- package/lib/modifier/isRemoveModifier.js +4 -0
- package/lib/modifier/isRequired.js +4 -0
- package/lib/modifier/isRequiredAndOverride.js +4 -0
- package/lib/modifier/isService.js +9 -0
- package/lib/modifier/isSingleValue.js +9 -0
- package/lib/modifier/isSubscription.js +6 -0
- package/lib/modifier/isTrackUsageSubscription.js +5 -0
- package/lib/modifier/isValueSelected.js +7 -0
- package/lib/modifier/purifyModifiers.js +15 -0
- package/lib/modifier/sort.js +35 -0
- package/lib/order/addCreditModifier.js +27 -0
- package/lib/order/addDiscountModifier.js +9 -0
- package/lib/order/addItem.js +292 -0
- package/lib/order/addItemModifier.js +214 -0
- package/lib/order/addModifier.js +9 -0
- package/lib/order/addModifierToAllItems.js +16 -0
- package/lib/order/addNote.js +25 -0
- package/lib/order/addTable.js +11 -0
- package/lib/order/calculate.js +51 -16
- package/lib/order/calculateDue.js +15 -0
- package/lib/order/calculateOrdersDue.js +26 -0
- package/lib/order/canSplit.js +4 -0
- package/lib/order/changeEndDate.js +15 -0
- package/lib/order/changeLocation.js +20 -0
- package/lib/order/changeStartDate.js +14 -0
- package/lib/order/combineSubOrders.js +14 -0
- package/lib/order/containsSerial.js +5 -0
- package/lib/order/create.js +67 -0
- package/lib/order/createParent.js +9 -0
- package/lib/order/duplicateItem.js +16 -0
- package/lib/order/findItemIndex.js +6 -0
- package/lib/order/getAppliedCredit.js +5 -0
- package/lib/order/getBalance.js +9 -0
- package/lib/order/getCustomer.js +4 -0
- package/lib/order/getCustomerStoreCredit.js +14 -0
- package/lib/order/getCustomerSubscriptions.js +8 -0
- package/lib/order/getCustomerSubscriptionsByItem.js +14 -0
- package/lib/order/getDepartmentModifiers.js +9 -0
- package/lib/order/getEndDate.js +4 -0
- package/lib/order/getItemByItemId.js +6 -0
- package/lib/order/getItemIndex.js +9 -0
- package/lib/order/getItemsToPay.js +17 -0
- package/lib/order/getMenuItemsByCustomer.js +19 -0
- package/lib/order/getNumberOfItems.js +10 -0
- package/lib/order/getOrdersPieces.js +10 -0
- package/lib/order/getPendingItemIndex.js +5 -0
- package/lib/order/getRelatedItems.js +11 -0
- package/lib/order/getSameItems.js +19 -0
- package/lib/order/getScheduleByCustomer.js +20 -0
- package/lib/order/getScreenCustomerNotes.js +12 -0
- package/lib/order/getSelectedItem.js +6 -0
- package/lib/order/getStartDate.js +4 -0
- package/lib/order/getTip.js +10 -0
- package/lib/order/getTotalPieces.js +17 -0
- package/lib/order/getTotals.js +28 -0
- package/lib/order/hasAggregate.js +20 -0
- package/lib/order/hasItem.js +7 -0
- package/lib/order/hasRemainingSubscription.js +67 -0
- package/lib/order/hold.js +12 -0
- package/lib/order/index.js +163 -5
- package/lib/order/isDetailed.js +4 -0
- package/lib/order/isHold.js +4 -0
- package/lib/order/isNew.js +4 -0
- package/lib/order/isOpen.js +4 -0
- package/lib/order/isParent.js +7 -0
- package/lib/order/merge.js +96 -0
- package/lib/order/open.js +11 -0
- package/lib/order/pickEndDate.js +70 -0
- package/lib/order/removeApplyModifier.js +24 -0
- package/lib/order/removeDiscountModifier.js +16 -0
- package/lib/order/removeItem.js +55 -0
- package/lib/order/removeItemByIndex.js +5 -0
- package/lib/order/removeItemModifier.js +69 -0
- package/lib/order/removeModifier.js +21 -0
- package/lib/order/removeModifierByAttribute.js +23 -0
- package/lib/order/removeModifiersWithPaymentMethods.js +29 -0
- package/lib/order/removeModifiersWithPaymentTypes.js +27 -0
- package/lib/order/setCustomer.js +50 -0
- package/lib/order/splitByDepartments.js +151 -0
- package/lib/order/toggleModifier.js +9 -0
- package/lib/order/updateItem.js +8 -0
- package/lib/order/updateItemQuantity.js +35 -0
- package/lib/order/void.js +11 -0
- package/package.json +15 -18
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module.exports = ({ utils }) => {
|
|
2
|
+
const { math, helpers } = utils;
|
|
3
|
+
return function getSplittedModifiers(
|
|
4
|
+
modifiers,
|
|
5
|
+
totalOriginOrder,
|
|
6
|
+
totalSplitedOrder
|
|
7
|
+
) {
|
|
8
|
+
return modifiers.map(each => {
|
|
9
|
+
const modifier = { ...each };
|
|
10
|
+
const { compute = {} } = modifier;
|
|
11
|
+
if (compute.type === 'fixed' && compute.amount) {
|
|
12
|
+
const amount = totalOriginOrder
|
|
13
|
+
? math.div(
|
|
14
|
+
math.mul(compute.amount, totalSplitedOrder || 0),
|
|
15
|
+
totalOriginOrder
|
|
16
|
+
)
|
|
17
|
+
: 0;
|
|
18
|
+
return {
|
|
19
|
+
...modifier,
|
|
20
|
+
_id: helpers.getObjectID(),
|
|
21
|
+
compute: {
|
|
22
|
+
...compute,
|
|
23
|
+
amount,
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
return modifier;
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
module.exports = ({ actions }) =>
|
|
2
|
+
function getStarchModifier({ modifiers, starch, cache = {} }) {
|
|
3
|
+
const laundryModifiers = actions.getLaundryModifiers(modifiers);
|
|
4
|
+
|
|
5
|
+
if (cache && cache.modifiers && laundryModifiers.length && starch)
|
|
6
|
+
return actions.findById(cache.modifiers, starch);
|
|
7
|
+
|
|
8
|
+
return null;
|
|
9
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module.exports = () =>
|
|
2
|
+
function getSubscriptionItem(modifier) {
|
|
3
|
+
if (
|
|
4
|
+
modifier &&
|
|
5
|
+
modifier.properties &&
|
|
6
|
+
modifier.properties.subscription &&
|
|
7
|
+
modifier.properties.subscription.item
|
|
8
|
+
)
|
|
9
|
+
return modifier.properties.subscription.item;
|
|
10
|
+
|
|
11
|
+
return null;
|
|
12
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
module.exports = () =>
|
|
2
|
+
function getSuggestion(modifier) {
|
|
3
|
+
const none = 'none';
|
|
4
|
+
if (!modifier) return none;
|
|
5
|
+
if (modifier.required) return 'required';
|
|
6
|
+
if (modifier.recommended) return 'recommended';
|
|
7
|
+
if (modifier.default) return 'default';
|
|
8
|
+
return none;
|
|
9
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module.exports = () =>
|
|
2
|
+
function getUsingCount(modifiers, modifier) {
|
|
3
|
+
if (!Array.isArray(modifiers) || !modifier) return false;
|
|
4
|
+
let count = 0;
|
|
5
|
+
modifiers.forEach(each => {
|
|
6
|
+
if (each.modifierId === modifier._id) {
|
|
7
|
+
count += 1;
|
|
8
|
+
}
|
|
9
|
+
});
|
|
10
|
+
return count;
|
|
11
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module.exports = () =>
|
|
2
|
+
/*
|
|
3
|
+
* Check if entity has the 'ALL' tag
|
|
4
|
+
* this helps us to check if the modifier with tags
|
|
5
|
+
* can have access to other entities without tags or not
|
|
6
|
+
* will return true if the entity has 'ALL' tag or false otherwise
|
|
7
|
+
* */
|
|
8
|
+
function hasAllTag(modifier) {
|
|
9
|
+
if (!modifier || !Array.isArray(modifier.tags)) return false;
|
|
10
|
+
|
|
11
|
+
return !!modifier.tags.find(tag => tag.toUpperCase() === 'ALL');
|
|
12
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module.exports = ({ actions }) =>
|
|
2
|
+
/*
|
|
3
|
+
* will find the attributes in modifier
|
|
4
|
+
* if it finds any of the attributes will return true
|
|
5
|
+
* otherwise will return false
|
|
6
|
+
* */
|
|
7
|
+
function hasAttributes(modifier, attributes) {
|
|
8
|
+
if (
|
|
9
|
+
!modifier ||
|
|
10
|
+
!Array.isArray(attributes) ||
|
|
11
|
+
!Array.isArray(modifier.attributes)
|
|
12
|
+
)
|
|
13
|
+
return false;
|
|
14
|
+
|
|
15
|
+
for (let i = 0; i < attributes.length; i += 1) {
|
|
16
|
+
if (actions.hasAttribute(modifier, attributes[i])) return true;
|
|
17
|
+
}
|
|
18
|
+
return false;
|
|
19
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
module.exports = ({ _ }) =>
|
|
2
|
+
function hasCreateSubscription(modifiers) {
|
|
3
|
+
return (
|
|
4
|
+
Array.isArray(modifiers) &&
|
|
5
|
+
modifiers.some(modifier => {
|
|
6
|
+
const subscription = _.get(modifier, 'properties.subscription');
|
|
7
|
+
return subscription && subscription.create;
|
|
8
|
+
})
|
|
9
|
+
);
|
|
10
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module.exports = ({ actions }) =>
|
|
2
|
+
/* checks if the customer can be matched with the entity or not,
|
|
3
|
+
* This function will return true in these conditions:
|
|
4
|
+
* Neither customer nor the entity has any tags
|
|
5
|
+
* Customer has no tags and entity has the 'all' tag
|
|
6
|
+
* customer has the 'all' tag and entity has no tags
|
|
7
|
+
* customer and entity have at least one exact tag (case-sensitive)
|
|
8
|
+
* In any other case the function should return false
|
|
9
|
+
* */
|
|
10
|
+
function hasMatchTags(modifier, entity) {
|
|
11
|
+
const entityNoTags = actions.hasNoTags(entity);
|
|
12
|
+
const modifierNoTags = actions.hasNoTags(modifier);
|
|
13
|
+
if (
|
|
14
|
+
(modifierNoTags && entityNoTags) ||
|
|
15
|
+
(entityNoTags && actions.hasAllTag(modifier)) || // customer has no tags but modifier has the all tag
|
|
16
|
+
(modifierNoTags && actions.hasAllTag(entity)) // modifier has no tags but customer has the all tag
|
|
17
|
+
) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (!entity || !entity.tags) return false;
|
|
22
|
+
if (!modifier || !modifier.tags) return false;
|
|
23
|
+
|
|
24
|
+
const sameTag = modifier.tags.find(tag => entity.tags.includes(tag));
|
|
25
|
+
|
|
26
|
+
return !!sameTag;
|
|
27
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module.exports = () =>
|
|
2
|
+
/*
|
|
3
|
+
* will return true if the modifier is in entity and false if it is not
|
|
4
|
+
* */
|
|
5
|
+
function hasModifier({ entity, modifier }) {
|
|
6
|
+
if (!entity || !Array.isArray(entity.modifiers) || !modifier) return false;
|
|
7
|
+
|
|
8
|
+
const { _id } = modifier;
|
|
9
|
+
return !!entity.modifiers.find(
|
|
10
|
+
each => each.modifierId === _id || each._id === _id
|
|
11
|
+
);
|
|
12
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
module.exports = () =>
|
|
2
|
+
/*
|
|
3
|
+
* Checks if the entity has any tags or not
|
|
4
|
+
* will return true if the entity has not any tag
|
|
5
|
+
* will return false otherwise
|
|
6
|
+
* */
|
|
7
|
+
function hasNoTags(modifier) {
|
|
8
|
+
return !modifier || !Array.isArray(modifier.tags) || !modifier.tags.length;
|
|
9
|
+
};
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
//
|
|
2
|
+
const addFile = require('./addFile');
|
|
3
|
+
const addImage = require('./addImage');
|
|
4
|
+
const calculate = require('./calculate');
|
|
5
|
+
const contains = require('./contains');
|
|
6
|
+
const convertMenuModifiers = require('./convertMenuModifiers');
|
|
7
|
+
const create = require('./create');
|
|
8
|
+
const createAmountOverrideModifier = require('./createAmountOverrideModifier');
|
|
9
|
+
const createCreditModifier = require('./createCreditModifier');
|
|
10
|
+
const createDiscountModifier = require('./createDiscountModifier');
|
|
11
|
+
const createGroupValuesModifier = require('./createGroupValuesModifier');
|
|
12
|
+
const createIndirectModifier = require('./createIndirectModifier');
|
|
13
|
+
const createSubscriptionModifier = require('./createSubscriptionModifier');
|
|
14
|
+
const displayAsCard = require('./displayAsCard');
|
|
15
|
+
const displayAsChips = require('./displayAsChips');
|
|
16
|
+
const displayAsList = require('./displayAsList');
|
|
17
|
+
const duplicate = require('./duplicate');
|
|
18
|
+
const enableAutoPopup = require('./enableAutoPopup');
|
|
19
|
+
const filterByRequiredModifiers = require('./filterByRequiredModifiers');
|
|
20
|
+
const findById = require('./findById');
|
|
21
|
+
const findByPaymentMethod = require('./findByPaymentMethod');
|
|
22
|
+
const findByPaymentType = require('./findByPaymentType');
|
|
23
|
+
const getAvailablePromotions = require('./getAvailablePromotions');
|
|
24
|
+
const getAvailablePromotionsOrSubscriptions = require('./getAvailablePromotionsOrSubscriptions');
|
|
25
|
+
const getAvailableSubscriptions = require('./getAvailableSubscriptions');
|
|
26
|
+
const getByAttribute = require('./getByAttribute');
|
|
27
|
+
const getCreditModifier = require('./getCreditModifier');
|
|
28
|
+
const getDefaultModifiers = require('./getDefaultModifiers');
|
|
29
|
+
const getDepartmentModifiers = require('./getDepartmentModifiers');
|
|
30
|
+
const getDiscountModifiers = require('./getDiscountModifiers');
|
|
31
|
+
const getDescription = require('./getDescription');
|
|
32
|
+
const getDepartmentMaxItems = require('./getDepartmentMaxItems');
|
|
33
|
+
const getDirectModifiers = require('./getDirectModifiers');
|
|
34
|
+
const getDescriptions = require('./getDescriptions');
|
|
35
|
+
const getEntityModifiers = require('./getEntityModifiers');
|
|
36
|
+
const getExtendedTags = require('./getExtendedTags');
|
|
37
|
+
const getEntityPromotions = require('./getEntityPromotions');
|
|
38
|
+
const getFiles = require('./getFiles');
|
|
39
|
+
const getGroupOfItemsModifiers = require('./getGroupOfItemsModifiers');
|
|
40
|
+
const getGroupRelatedModifiers = require('./getGroupRelatedModifiers');
|
|
41
|
+
const getGroupModifiers = require('./getGroupModifiers');
|
|
42
|
+
const getImages = require('./getImages');
|
|
43
|
+
const getItemModifiers = require('./getItemModifiers');
|
|
44
|
+
const getInheritedModifiers = require('./getInheritedModifiers');
|
|
45
|
+
const getLaundryModifiers = require('./getLaundryModifiers');
|
|
46
|
+
const getMatchTagsModifiers = require('./getMatchTagsModifiers');
|
|
47
|
+
const getModifierIndex = require('./getModifierIndex');
|
|
48
|
+
const getPreferences = require('./getPreferences');
|
|
49
|
+
const getPromotionModifiers = require('./getPromotionModifiers');
|
|
50
|
+
const getPromptMessage = require('./getPromptMessage');
|
|
51
|
+
const getProperty = require('./getProperty');
|
|
52
|
+
const getRelatedModifiers = require('./getRelatedModifiers');
|
|
53
|
+
const getRecommendedModifiers = require('./getRecommendedModifiers');
|
|
54
|
+
const getRequiredModifiers = require('./getRequiredModifiers');
|
|
55
|
+
const getSelectedValues = require('./getSelectedValues');
|
|
56
|
+
const getSubscriptionItem = require('./getSubscriptionItem');
|
|
57
|
+
const getSubscriptionModifiers = require('./getSubscriptionModifiers');
|
|
58
|
+
const getStarchModifier = require('./getStarchModifier');
|
|
59
|
+
const getService = require('./getService');
|
|
60
|
+
const getSplittedModifiers = require('./getSplittedModifiers');
|
|
61
|
+
const getSuggestion = require('./getSuggestion');
|
|
62
|
+
const getUnhiddenModifiers = require('./getUnhiddenModifiers');
|
|
63
|
+
const getUsingCount = require('./getUsingCount');
|
|
64
|
+
const hasAddModifiers = require('./hasAddModifiers');
|
|
65
|
+
const hasAllTag = require('./hasAllTag');
|
|
66
|
+
const hasAttribute = require('./hasAttribute');
|
|
67
|
+
const hasAttributes = require('./hasAttributes');
|
|
68
|
+
const hasCreateSubscription = require('./hasCreateSubscription');
|
|
69
|
+
const hasDisplayPrompt = require('./hasDisplayPrompt');
|
|
70
|
+
const hasMatchTags = require('./hasMatchTags');
|
|
71
|
+
const hasModifier = require('./hasModifier');
|
|
72
|
+
const hasRelatedItems = require('./hasRelatedItems');
|
|
73
|
+
const includePiecesInQuantity = require('./includePiecesInQuantity');
|
|
74
|
+
const includesInGroup = require('./includesInGroup');
|
|
75
|
+
const isTrackUsageSubscription = require('./isTrackUsageSubscription');
|
|
76
|
+
const isDirect = require('./isDirect');
|
|
77
|
+
const hasNoTags = require('./hasNoTags');
|
|
78
|
+
const isRemoveModifier = require('./isRemoveModifier');
|
|
79
|
+
const isGroupOfModifiers = require('./isGroupOfModifiers');
|
|
80
|
+
const isRequiredAndOverride = require('./isRequiredAndOverride');
|
|
81
|
+
const isManual = require('./isManual');
|
|
82
|
+
const isPriceOverride = require('./isPriceOverride');
|
|
83
|
+
const isQuantityOverride = require('./isQuantityOverride');
|
|
84
|
+
const isService = require('./isService');
|
|
85
|
+
const isSingleValue = require('./isSingleValue');
|
|
86
|
+
const isGroupOfItems = require('./isGroupOfItems');
|
|
87
|
+
const isOverride = require('./isOverride');
|
|
88
|
+
const isDepartment = require('./isDepartment');
|
|
89
|
+
const isRequired = require('./isRequired');
|
|
90
|
+
const isMultiplier = require('./isMultiplier');
|
|
91
|
+
const isAvailablePromotion = require('./isAvailablePromotion');
|
|
92
|
+
const isAvailableSubscription = require('./isAvailableSubscription');
|
|
93
|
+
const isPromotion = require('./isPromotion');
|
|
94
|
+
const isSubscription = require('./isSubscription');
|
|
95
|
+
const isDefault = require('./isDefault');
|
|
96
|
+
const isIncluded = require('./isIncluded');
|
|
97
|
+
const isCustomerTagsExtend = require('./isCustomerTagsExtend');
|
|
98
|
+
const isAmountOverride = require('./isAmountOverride');
|
|
99
|
+
const isDiscount = require('./isDiscount');
|
|
100
|
+
const isHidden = require('./isHidden');
|
|
101
|
+
const isGratuity = require('./isGratuity');
|
|
102
|
+
const isPaymentMethods = require('./isPaymentMethods');
|
|
103
|
+
const isPaymentTypes = require('./isPaymentTypes');
|
|
104
|
+
const isPreferences = require('./isPreferences');
|
|
105
|
+
const isGroupOfValues = require('./isGroupOfValues');
|
|
106
|
+
const isCompact = require('./isCompact');
|
|
107
|
+
const isValueSelected = require('./isValueSelected');
|
|
108
|
+
const isEditable = require('./isEditable');
|
|
109
|
+
const isCredit = require('./isCredit');
|
|
110
|
+
const purifyModifiers = require('./purifyModifiers');
|
|
111
|
+
const sort = require('./sort');
|
|
112
|
+
|
|
113
|
+
const modifierActions = (deps = {}) => {
|
|
114
|
+
const actions = {};
|
|
115
|
+
|
|
116
|
+
const innerDeps = {
|
|
117
|
+
...deps,
|
|
118
|
+
actions,
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
const freezedActions = Object.freeze({
|
|
122
|
+
addFile: addFile(innerDeps),
|
|
123
|
+
addImage: addImage(innerDeps),
|
|
124
|
+
calculate: calculate(innerDeps),
|
|
125
|
+
contains: contains(innerDeps),
|
|
126
|
+
convertMenuModifiers: convertMenuModifiers(innerDeps),
|
|
127
|
+
create: create(innerDeps),
|
|
128
|
+
createAmountOverrideModifier: createAmountOverrideModifier(innerDeps),
|
|
129
|
+
createCreditModifier: createCreditModifier(innerDeps),
|
|
130
|
+
createDiscountModifier: createDiscountModifier(innerDeps),
|
|
131
|
+
createGroupValuesModifier: createGroupValuesModifier(innerDeps),
|
|
132
|
+
createIndirectModifier: createIndirectModifier(innerDeps),
|
|
133
|
+
createSubscriptionModifier: createSubscriptionModifier(innerDeps),
|
|
134
|
+
displayAsCard: displayAsCard(innerDeps),
|
|
135
|
+
displayAsChips: displayAsChips(innerDeps),
|
|
136
|
+
displayAsList: displayAsList(innerDeps),
|
|
137
|
+
duplicate: duplicate(innerDeps),
|
|
138
|
+
enableAutoPopup: enableAutoPopup(innerDeps),
|
|
139
|
+
filterByRequiredModifiers: filterByRequiredModifiers(innerDeps),
|
|
140
|
+
findById: findById(innerDeps),
|
|
141
|
+
findByPaymentMethod: findByPaymentMethod(innerDeps),
|
|
142
|
+
findByPaymentType: findByPaymentType(innerDeps),
|
|
143
|
+
getAvailablePromotions: getAvailablePromotions(innerDeps),
|
|
144
|
+
getAvailablePromotionsOrSubscriptions:
|
|
145
|
+
getAvailablePromotionsOrSubscriptions(innerDeps),
|
|
146
|
+
getAvailableSubscriptions: getAvailableSubscriptions(innerDeps),
|
|
147
|
+
getByAttribute: getByAttribute(innerDeps),
|
|
148
|
+
getCreditModifier: getCreditModifier(innerDeps),
|
|
149
|
+
getDepartmentMaxItems: getDepartmentMaxItems(innerDeps),
|
|
150
|
+
getDirectModifiers: getDirectModifiers(innerDeps),
|
|
151
|
+
getDescriptions: getDescriptions(innerDeps),
|
|
152
|
+
getDepartmentModifiers: getDepartmentModifiers(innerDeps),
|
|
153
|
+
getDiscountModifiers: getDiscountModifiers(innerDeps),
|
|
154
|
+
getDescription: getDescription(innerDeps),
|
|
155
|
+
getDefaultModifiers: getDefaultModifiers(innerDeps),
|
|
156
|
+
getEntityModifiers: getEntityModifiers(innerDeps),
|
|
157
|
+
getExtendedTags: getExtendedTags(innerDeps),
|
|
158
|
+
getEntityPromotions: getEntityPromotions(innerDeps),
|
|
159
|
+
getFiles: getFiles(innerDeps),
|
|
160
|
+
getGroupRelatedModifiers: getGroupRelatedModifiers(innerDeps),
|
|
161
|
+
getGroupModifiers: getGroupModifiers(innerDeps),
|
|
162
|
+
getGroupOfItemsModifiers: getGroupOfItemsModifiers(innerDeps),
|
|
163
|
+
getImages: getImages(innerDeps),
|
|
164
|
+
getInheritedModifiers: getInheritedModifiers(innerDeps),
|
|
165
|
+
getItemModifiers: getItemModifiers(innerDeps),
|
|
166
|
+
getLaundryModifiers: getLaundryModifiers(innerDeps),
|
|
167
|
+
getMatchTagsModifiers: getMatchTagsModifiers(innerDeps),
|
|
168
|
+
getModifierIndex: getModifierIndex(innerDeps),
|
|
169
|
+
getPreferences: getPreferences(innerDeps),
|
|
170
|
+
getPromotionModifiers: getPromotionModifiers(innerDeps),
|
|
171
|
+
getPromptMessage: getPromptMessage(innerDeps),
|
|
172
|
+
getProperty: getProperty(innerDeps),
|
|
173
|
+
getRelatedModifiers: getRelatedModifiers(innerDeps),
|
|
174
|
+
getRecommendedModifiers: getRecommendedModifiers(innerDeps),
|
|
175
|
+
getRequiredModifiers: getRequiredModifiers(innerDeps),
|
|
176
|
+
getSelectedValues: getSelectedValues(innerDeps),
|
|
177
|
+
getSubscriptionItem: getSubscriptionItem(innerDeps),
|
|
178
|
+
getSubscriptionModifiers: getSubscriptionModifiers(innerDeps),
|
|
179
|
+
getStarchModifier: getStarchModifier(innerDeps),
|
|
180
|
+
getService: getService(innerDeps),
|
|
181
|
+
getSplittedModifiers: getSplittedModifiers(innerDeps),
|
|
182
|
+
getSuggestion: getSuggestion(innerDeps),
|
|
183
|
+
getUnhiddenModifiers: getUnhiddenModifiers(innerDeps),
|
|
184
|
+
getUsingCount: getUsingCount(innerDeps),
|
|
185
|
+
hasAddModifiers: hasAddModifiers(innerDeps),
|
|
186
|
+
hasAllTag: hasAllTag(innerDeps),
|
|
187
|
+
hasNoTags: hasNoTags(innerDeps),
|
|
188
|
+
hasCreateSubscription: hasCreateSubscription(innerDeps),
|
|
189
|
+
hasDisplayPrompt: hasDisplayPrompt(innerDeps),
|
|
190
|
+
hasMatchTags: hasMatchTags(innerDeps),
|
|
191
|
+
hasModifier: hasModifier(innerDeps),
|
|
192
|
+
hasRelatedItems: hasRelatedItems(innerDeps),
|
|
193
|
+
hasAttribute: hasAttribute(innerDeps),
|
|
194
|
+
hasAttributes: hasAttributes(innerDeps),
|
|
195
|
+
includePiecesInQuantity: includePiecesInQuantity(innerDeps),
|
|
196
|
+
includesInGroup: includesInGroup(innerDeps),
|
|
197
|
+
isTrackUsageSubscription: isTrackUsageSubscription(innerDeps),
|
|
198
|
+
isDirect: isDirect(innerDeps),
|
|
199
|
+
isEditable: isEditable(innerDeps),
|
|
200
|
+
isRemoveModifier: isRemoveModifier(innerDeps),
|
|
201
|
+
isGroupOfModifiers: isGroupOfModifiers(innerDeps),
|
|
202
|
+
isRequiredAndOverride: isRequiredAndOverride(innerDeps),
|
|
203
|
+
isManual: isManual(innerDeps),
|
|
204
|
+
isService: isService(innerDeps),
|
|
205
|
+
isQuantityOverride: isQuantityOverride(innerDeps),
|
|
206
|
+
isPriceOverride: isPriceOverride(innerDeps),
|
|
207
|
+
isSingleValue: isSingleValue(innerDeps),
|
|
208
|
+
isGroupOfItems: isGroupOfItems(innerDeps),
|
|
209
|
+
isOverride: isOverride(innerDeps),
|
|
210
|
+
isDepartment: isDepartment(innerDeps),
|
|
211
|
+
isRequired: isRequired(innerDeps),
|
|
212
|
+
isMultiplier: isMultiplier(innerDeps),
|
|
213
|
+
isAvailablePromotion: isAvailablePromotion(innerDeps),
|
|
214
|
+
isAvailableSubscription: isAvailableSubscription(innerDeps),
|
|
215
|
+
isPromotion: isPromotion(innerDeps),
|
|
216
|
+
isSubscription: isSubscription(innerDeps),
|
|
217
|
+
isDefault: isDefault(innerDeps),
|
|
218
|
+
isCustomerTagsExtend: isCustomerTagsExtend(innerDeps),
|
|
219
|
+
isAmountOverride: isAmountOverride(innerDeps),
|
|
220
|
+
isDiscount: isDiscount(innerDeps),
|
|
221
|
+
isHidden: isHidden(innerDeps),
|
|
222
|
+
isGratuity: isGratuity(innerDeps),
|
|
223
|
+
isPaymentMethods: isPaymentMethods(innerDeps),
|
|
224
|
+
isPaymentTypes: isPaymentTypes(innerDeps),
|
|
225
|
+
isPreferences: isPreferences(innerDeps),
|
|
226
|
+
isGroupOfValues: isGroupOfValues(innerDeps),
|
|
227
|
+
isCompact: isCompact(innerDeps),
|
|
228
|
+
isValueSelected: isValueSelected(innerDeps),
|
|
229
|
+
isCredit: isCredit(innerDeps),
|
|
230
|
+
isIncluded: isIncluded(innerDeps),
|
|
231
|
+
purifyModifiers: purifyModifiers(innerDeps),
|
|
232
|
+
sort: sort(innerDeps),
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
Object.keys(freezedActions).forEach(actionName => {
|
|
236
|
+
actions[actionName] = freezedActions[actionName];
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
return freezedActions;
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
module.exports = modifierActions;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module.exports = ({ utils, actions }) => {
|
|
2
|
+
const { date, math } = utils;
|
|
3
|
+
|
|
4
|
+
return function isAvailablePromotion(modifier) {
|
|
5
|
+
if (!actions.isPromotion(modifier)) return false;
|
|
6
|
+
|
|
7
|
+
const { promotion } = modifier.properties || {};
|
|
8
|
+
|
|
9
|
+
if (!promotion) return true;
|
|
10
|
+
|
|
11
|
+
if (
|
|
12
|
+
promotion.numberOfUses &&
|
|
13
|
+
promotion.numberOfUsesLimit &&
|
|
14
|
+
math.gte(promotion.numberOfUses, promotion.numberOfUsesLimit)
|
|
15
|
+
)
|
|
16
|
+
return false;
|
|
17
|
+
|
|
18
|
+
if (promotion.dateLimit && !date.isBetween(promotion.dateLimit))
|
|
19
|
+
return false;
|
|
20
|
+
|
|
21
|
+
return true;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module.exports = ({ utils, actions }) => {
|
|
2
|
+
const { date, math } = utils;
|
|
3
|
+
|
|
4
|
+
return function isAvailableSubscription(modifier) {
|
|
5
|
+
if (!actions.isSubscription(modifier)) return false;
|
|
6
|
+
|
|
7
|
+
const { subscription } = modifier.properties || {};
|
|
8
|
+
|
|
9
|
+
if (!subscription) return false;
|
|
10
|
+
|
|
11
|
+
const properties = {
|
|
12
|
+
...subscription.item,
|
|
13
|
+
dateLimit: subscription.dateLimit,
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
if (
|
|
17
|
+
properties.numberOfUses &&
|
|
18
|
+
properties.numberOfUsesLimit &&
|
|
19
|
+
math.gte(properties.numberOfUses, properties.numberOfUsesLimit)
|
|
20
|
+
)
|
|
21
|
+
return false;
|
|
22
|
+
|
|
23
|
+
if (properties.dateLimit && !date.isBetween(properties.dateLimit))
|
|
24
|
+
return false;
|
|
25
|
+
|
|
26
|
+
return true;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module.exports = ({ actions, constants }) => {
|
|
2
|
+
const { Modifier } = constants;
|
|
3
|
+
return function isCompact(modifier) {
|
|
4
|
+
const { properties = {} } = modifier || {};
|
|
5
|
+
return !!(
|
|
6
|
+
actions.hasAttribute(modifier, Modifier.Attributes.GROUP) &&
|
|
7
|
+
properties &&
|
|
8
|
+
properties.group &&
|
|
9
|
+
properties.group.compact
|
|
10
|
+
);
|
|
11
|
+
};
|
|
12
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module.exports = ({ actions, constants }) => {
|
|
2
|
+
const { Modifier } = constants;
|
|
3
|
+
return function isGroupOfItems(modifier) {
|
|
4
|
+
const { properties = {} } = modifier || {};
|
|
5
|
+
return !!(
|
|
6
|
+
actions.hasAttribute(modifier, Modifier.Attributes.GROUP) &&
|
|
7
|
+
properties &&
|
|
8
|
+
properties.group &&
|
|
9
|
+
(properties.group.items || []).length
|
|
10
|
+
);
|
|
11
|
+
};
|
|
12
|
+
};
|