foodbot-cart-calculations 1.0.7-dev.1 → 1.0.8-dev.1
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/functions/pointsCalculation.js +46 -27
- package/package.json +1 -1
|
@@ -79,44 +79,63 @@ function getPointsDiscount(cartObject, points, userDetails, deliveryCost = 0, se
|
|
|
79
79
|
count++;
|
|
80
80
|
});
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
// Apply points to service charge if enabled
|
|
83
83
|
if (points.enable_service_charge_usage === 1 && serviceAmount > 0 && storeAmount > 0) {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
84
|
+
// Check if service discount is already applied through promotions
|
|
85
|
+
let hasServicePromo = cartObject.is_service_discount === true;
|
|
86
|
+
|
|
87
|
+
if (!hasServicePromo) {
|
|
88
|
+
cartObject.is_service_discount = true;
|
|
89
|
+
if (parseFloat(storeAmount) >= parseFloat(serviceAmount)) {
|
|
90
|
+
serviceDiscount = parseFloat(serviceAmount);
|
|
91
|
+
pointsAmount = parseFloat(pointsAmount) + parseFloat(serviceAmount);
|
|
92
|
+
storeAmount = parseFloat(storeAmount) - parseFloat(serviceAmount);
|
|
93
|
+
} else {
|
|
94
|
+
serviceDiscount = parseFloat(storeAmount);
|
|
95
|
+
pointsAmount = parseFloat(pointsAmount) + parseFloat(storeAmount);
|
|
96
|
+
storeAmount = 0;
|
|
97
|
+
}
|
|
98
|
+
serviceDiscount = parseFloat(serviceDiscount).toFixed(2);
|
|
99
|
+
cartObject.service_discount = serviceDiscount;
|
|
89
100
|
} else {
|
|
90
|
-
|
|
91
|
-
pointsAmount = parseFloat(pointsAmount) + parseFloat(storeAmount);
|
|
92
|
-
storeAmount = 0;
|
|
101
|
+
cartObject.service_discount = cartObject.service_discount || 0;
|
|
93
102
|
}
|
|
94
|
-
serviceDiscount = parseFloat(serviceDiscount).toFixed(2);
|
|
95
|
-
cartObject.service_discount = serviceDiscount;
|
|
96
103
|
} else {
|
|
97
|
-
cartObject.service_discount = 0;
|
|
98
|
-
cartObject.is_service_discount
|
|
104
|
+
cartObject.service_discount = cartObject.service_discount || 0;
|
|
105
|
+
if (!cartObject.is_service_discount) {
|
|
106
|
+
cartObject.is_service_discount = false;
|
|
107
|
+
}
|
|
99
108
|
}
|
|
100
109
|
|
|
101
|
-
// Apply points to delivery if enabled
|
|
110
|
+
// Apply points to delivery if enabled and no delivery promotion is already applied
|
|
102
111
|
if (points.enable_delivery_points_usage === 1 && deliveryCost > 0 && storeAmount > 0) {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
112
|
+
// Check if delivery discount is already applied through promotions
|
|
113
|
+
let hasDeliveryPromo = cartObject.is_delivery_discount === true;
|
|
114
|
+
|
|
115
|
+
if (!hasDeliveryPromo) {
|
|
116
|
+
cartObject.is_delivery_discount = true;
|
|
117
|
+
if (parseFloat(storeAmount) >= parseFloat(deliveryCost)) {
|
|
118
|
+
deliveryDiscount = parseFloat(deliveryCost);
|
|
119
|
+
pointsAmount = parseFloat(pointsAmount) + parseFloat(deliveryCost);
|
|
120
|
+
storeAmount = parseFloat(storeAmount) - parseFloat(deliveryCost);
|
|
121
|
+
} else {
|
|
122
|
+
deliveryDiscount = parseFloat(storeAmount);
|
|
123
|
+
pointsAmount = parseFloat(pointsAmount) + parseFloat(storeAmount);
|
|
124
|
+
storeAmount = 0;
|
|
125
|
+
}
|
|
126
|
+
deliveryDiscount = parseFloat(deliveryDiscount).toFixed(2);
|
|
127
|
+
cartObject.delivery_discount = deliveryDiscount;
|
|
108
128
|
} else {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
storeAmount = 0;
|
|
129
|
+
// If delivery promotion is already applied, preserve existing discount
|
|
130
|
+
cartObject.delivery_discount = cartObject.delivery_discount || 0;
|
|
112
131
|
}
|
|
113
|
-
deliveryDiscount = parseFloat(deliveryDiscount).toFixed(2);
|
|
114
|
-
cartObject.delivery_discount = deliveryDiscount;
|
|
115
132
|
} else {
|
|
116
|
-
cartObject.delivery_discount = 0;
|
|
117
|
-
cartObject.is_delivery_discount
|
|
133
|
+
cartObject.delivery_discount = cartObject.delivery_discount || 0;
|
|
134
|
+
if (!cartObject.is_delivery_discount) {
|
|
135
|
+
cartObject.is_delivery_discount = false;
|
|
136
|
+
}
|
|
118
137
|
}
|
|
119
|
-
|
|
138
|
+
|
|
120
139
|
if (count == carts.length) {
|
|
121
140
|
let singlePriceDiscount = pointsAmount / itemsTotal;
|
|
122
141
|
singlePriceDiscount = (itemsTotal && itemsTotal > 0)?parseFloat(singlePriceDiscount).toFixed(6):0;
|
package/package.json
CHANGED