@wtree/payload-ecommerce-coupon 3.78.2 → 3.78.3
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/README.md +33 -6
- package/dist/client/hooks.d.ts +1 -1
- package/dist/client/hooks.d.ts.map +1 -1
- package/dist/client/index.d.ts +8 -8
- package/dist/client/index.d.ts.map +1 -1
- package/dist/collections/createCouponsCollection.d.ts +2 -2
- package/dist/collections/createCouponsCollection.d.ts.map +1 -1
- package/dist/collections/createReferralCodesCollection.d.ts +2 -2
- package/dist/collections/createReferralCodesCollection.d.ts.map +1 -1
- package/dist/collections/createReferralProgramsCollection.d.ts +2 -2
- package/dist/collections/createReferralProgramsCollection.d.ts.map +1 -1
- package/dist/components/PartnerDashboard/CommissionBreakdown.d.ts +2 -2
- package/dist/components/PartnerDashboard/CommissionBreakdown.d.ts.map +1 -1
- package/dist/components/PartnerDashboard/EarningsSummary.d.ts +2 -2
- package/dist/components/PartnerDashboard/EarningsSummary.d.ts.map +1 -1
- package/dist/components/PartnerDashboard/ProgramOverview.d.ts +3 -3
- package/dist/components/PartnerDashboard/ProgramOverview.d.ts.map +1 -1
- package/dist/components/PartnerDashboard/RecentReferrals.d.ts +3 -3
- package/dist/components/PartnerDashboard/RecentReferrals.d.ts.map +1 -1
- package/dist/components/PartnerDashboard/ReferralCodes.d.ts +3 -3
- package/dist/components/PartnerDashboard/ReferralCodes.d.ts.map +1 -1
- package/dist/components/PartnerDashboard/ReferralPerformance.d.ts +2 -2
- package/dist/components/PartnerDashboard/ReferralPerformance.d.ts.map +1 -1
- package/dist/components/PartnerDashboard/index.d.ts +1 -1
- package/dist/components/PartnerDashboard/index.d.ts.map +1 -1
- package/dist/endpoints/applyCoupon.d.ts +2 -2
- package/dist/endpoints/applyCoupon.d.ts.map +1 -1
- package/dist/endpoints/partnerStats.d.ts +2 -2
- package/dist/endpoints/partnerStats.d.ts.map +1 -1
- package/dist/endpoints/validateCoupon.d.ts +2 -2
- package/dist/endpoints/validateCoupon.d.ts.map +1 -1
- package/dist/hooks/recalculateCart.d.ts +2 -2
- package/dist/hooks/recalculateCart.d.ts.map +1 -1
- package/dist/index.d.ts +17 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -10
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +21 -10
- package/dist/index.mjs.map +1 -1
- package/dist/plugin.d.ts +2 -2
- package/dist/plugin.d.ts.map +1 -1
- package/dist/types.d.ts +4 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/utilities/calculateValues.d.ts +2 -2
- package/dist/utilities/calculateValues.d.ts.map +1 -1
- package/dist/utilities/getCartTotalWithDiscounts.d.ts.map +1 -1
- package/dist/utilities/migrateReferralRulesV2.d.ts.map +1 -1
- package/dist/utilities/pricing.d.ts.map +1 -1
- package/dist/utilities/pushTypeScriptProperties.d.ts +1 -1
- package/dist/utilities/pushTypeScriptProperties.d.ts.map +1 -1
- package/dist/utilities/recordCouponUsageForOrder.d.ts +2 -2
- package/dist/utilities/recordCouponUsageForOrder.d.ts.map +1 -1
- package/dist/utilities/sanitizePluginConfig.d.ts +1 -1
- package/dist/utilities/sanitizePluginConfig.d.ts.map +1 -1
- package/dist/utilities/userRoles.d.ts +3 -3
- package/dist/utilities/userRoles.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -453,11 +453,14 @@ const createReferralProgramsCollection = (pluginConfig) => {
|
|
|
453
453
|
},
|
|
454
454
|
hooks: { beforeChange: [({ data }) => {
|
|
455
455
|
if (!data.commissionRules || !Array.isArray(data.commissionRules) || data.commissionRules.length === 0) throw new APIError("At least one commission rule is required", 400);
|
|
456
|
-
const
|
|
457
|
-
if (
|
|
456
|
+
const maxPartnerCommissionPerOrder = toNumber(data.maxPartnerCommissionPerOrder);
|
|
457
|
+
if (maxPartnerCommissionPerOrder != null && maxPartnerCommissionPerOrder < 0) throw new APIError("Maximum commission per order for partner must be a non-negative number", 400);
|
|
458
|
+
const maxCustomerDiscountPerOrder = toNumber(data.maxCustomerDiscountPerOrder);
|
|
459
|
+
if (maxCustomerDiscountPerOrder != null && maxCustomerDiscountPerOrder < 0) throw new APIError("Maximum discount for customer per order must be a non-negative number", 400);
|
|
458
460
|
const minOrderAmount = toNumber(data.minOrderAmount);
|
|
459
461
|
if (minOrderAmount != null && minOrderAmount < 0) throw new APIError("Minimum Order Amount must be a non-negative number", 400);
|
|
460
|
-
data.
|
|
462
|
+
data.maxPartnerCommissionPerOrder = maxPartnerCommissionPerOrder != null ? toCents(maxPartnerCommissionPerOrder) : null;
|
|
463
|
+
data.maxCustomerDiscountPerOrder = maxCustomerDiscountPerOrder != null ? toCents(maxCustomerDiscountPerOrder) : null;
|
|
461
464
|
data.minOrderAmount = minOrderAmount ?? null;
|
|
462
465
|
data.commissionRules = data.commissionRules.map((rule, index) => {
|
|
463
466
|
const r = rule;
|
|
@@ -540,10 +543,16 @@ const createReferralProgramsCollection = (pluginConfig) => {
|
|
|
540
543
|
admin: { description: "Whether this referral program is currently active" }
|
|
541
544
|
},
|
|
542
545
|
{
|
|
543
|
-
name: "
|
|
546
|
+
name: "maxPartnerCommissionPerOrder",
|
|
544
547
|
type: "number",
|
|
545
548
|
min: 0,
|
|
546
|
-
admin: { description: "Maximum commission
|
|
549
|
+
admin: { description: "Maximum commission per order for partner. Leave empty for no cap. Enter value in currency units (will be converted to cents)." }
|
|
550
|
+
},
|
|
551
|
+
{
|
|
552
|
+
name: "maxCustomerDiscountPerOrder",
|
|
553
|
+
type: "number",
|
|
554
|
+
min: 0,
|
|
555
|
+
admin: { description: "Maximum customer discount per order. Leave empty for no cap. Enter value in currency units (will be converted to cents)." }
|
|
547
556
|
},
|
|
548
557
|
{
|
|
549
558
|
name: "minOrderAmount",
|
|
@@ -758,11 +767,11 @@ function getRuleSplits(rule) {
|
|
|
758
767
|
customerSplit: typeof rule.customerSplit === "number" ? rule.customerSplit : typeof rule.refereeSplit === "number" ? rule.refereeSplit : 100 - partnerRaw
|
|
759
768
|
};
|
|
760
769
|
}
|
|
761
|
-
function calculateItemRewardByRule({ rule, itemTotal, quantity,
|
|
770
|
+
function calculateItemRewardByRule({ rule, itemTotal, quantity, allowedTotalCommissionTypes }) {
|
|
762
771
|
const allowedTypes = allowedCommissionTypesSet(allowedTotalCommissionTypes);
|
|
763
772
|
if (rule.totalCommission) {
|
|
764
773
|
if (!allowedTypes.has(rule.totalCommission.type)) return null;
|
|
765
|
-
const resolvedMaxAmount = typeof
|
|
774
|
+
const resolvedMaxAmount = typeof rule.totalCommission.maxAmount === "number" && Number.isFinite(rule.totalCommission.maxAmount) ? rule.totalCommission.maxAmount : null;
|
|
766
775
|
if (rule.totalCommission.type === "fixed" && rule.totalCommission.value == null) {
|
|
767
776
|
const partnerAmtPerUnit = typeof rule.partnerSplit === "number" ? rule.partnerSplit : null;
|
|
768
777
|
const customerAmtPerUnit = typeof rule.customerSplit === "number" ? rule.customerSplit : null;
|
|
@@ -821,7 +830,7 @@ function getItemCategoryIds(item) {
|
|
|
821
830
|
function getItemTagIds(item) {
|
|
822
831
|
return Array.isArray(item?.product?.tags) ? normalizeIds(item.product.tags) : [];
|
|
823
832
|
}
|
|
824
|
-
function selectBestRuleForItem({ rules, item, itemTotal, quantity, cartTotal, minOrderAmount,
|
|
833
|
+
function selectBestRuleForItem({ rules, item, itemTotal, quantity, cartTotal, minOrderAmount, allowedTotalCommissionTypes }) {
|
|
825
834
|
const allowedTypes = allowedCommissionTypesSet(allowedTotalCommissionTypes);
|
|
826
835
|
const eligibleRules = rules.filter((rule) => {
|
|
827
836
|
if (!(rule?.totalCommission?.type ? allowedTypes.has(rule.totalCommission.type) : true)) return false;
|
|
@@ -851,7 +860,6 @@ function selectBestRuleForItem({ rules, item, itemTotal, quantity, cartTotal, mi
|
|
|
851
860
|
rule,
|
|
852
861
|
itemTotal,
|
|
853
862
|
quantity,
|
|
854
|
-
maxAmount,
|
|
855
863
|
allowedTotalCommissionTypes
|
|
856
864
|
});
|
|
857
865
|
if (!reward) continue;
|
|
@@ -916,13 +924,16 @@ function calculateCommissionAndDiscount({ cartItems, program, currencyCode = "AE
|
|
|
916
924
|
quantity,
|
|
917
925
|
cartTotal,
|
|
918
926
|
minOrderAmount: typeof program?.minOrderAmount === "number" && Number.isFinite(program.minOrderAmount) ? program.minOrderAmount : null,
|
|
919
|
-
maxAmount: typeof program?.maxAmount === "number" && Number.isFinite(program.maxAmount) ? program.maxAmount : null,
|
|
920
927
|
allowedTotalCommissionTypes
|
|
921
928
|
});
|
|
922
929
|
if (!bestMatch) continue;
|
|
923
930
|
totalPartnerCommission += bestMatch.reward.partner;
|
|
924
931
|
totalCustomerDiscount += bestMatch.reward.customer;
|
|
925
932
|
}
|
|
933
|
+
const maxPartnerCommissionPerOrder = typeof program?.maxPartnerCommissionPerOrder === "number" && Number.isFinite(program.maxPartnerCommissionPerOrder) ? program.maxPartnerCommissionPerOrder : null;
|
|
934
|
+
const maxCustomerDiscountPerOrder = typeof program?.maxCustomerDiscountPerOrder === "number" && Number.isFinite(program.maxCustomerDiscountPerOrder) ? program.maxCustomerDiscountPerOrder : null;
|
|
935
|
+
if (maxPartnerCommissionPerOrder != null) totalPartnerCommission = Math.min(totalPartnerCommission, maxPartnerCommissionPerOrder);
|
|
936
|
+
if (maxCustomerDiscountPerOrder != null) totalCustomerDiscount = Math.min(totalCustomerDiscount, maxCustomerDiscountPerOrder);
|
|
926
937
|
return {
|
|
927
938
|
partnerCommission: totalPartnerCommission,
|
|
928
939
|
customerDiscount: totalCustomerDiscount
|