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.
@@ -79,44 +79,63 @@ function getPointsDiscount(cartObject, points, userDetails, deliveryCost = 0, se
79
79
  count++;
80
80
  });
81
81
 
82
- // Apply points to service charge if enabled
82
+ // Apply points to service charge if enabled
83
83
  if (points.enable_service_charge_usage === 1 && serviceAmount > 0 && storeAmount > 0) {
84
- cartObject.is_service_discount = true;
85
- if (parseFloat(storeAmount) >= parseFloat(serviceAmount)) {
86
- serviceDiscount = parseFloat(serviceAmount);
87
- pointsAmount = parseFloat(pointsAmount) + parseFloat(serviceAmount);
88
- storeAmount = parseFloat(storeAmount) - parseFloat(serviceAmount);
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
- serviceDiscount = parseFloat(storeAmount);
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 = false;
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
- cartObject.is_delivery_discount = true;
104
- if (parseFloat(storeAmount) >= parseFloat(deliveryCost)) {
105
- deliveryDiscount = parseFloat(deliveryCost);
106
- pointsAmount = parseFloat(pointsAmount) + parseFloat(deliveryCost);
107
- storeAmount = parseFloat(storeAmount) - parseFloat(deliveryCost);
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
- deliveryDiscount = parseFloat(storeAmount);
110
- pointsAmount = parseFloat(pointsAmount) + parseFloat(storeAmount);
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 = false;
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "foodbot-cart-calculations",
3
- "version": "1.0.7-dev.1",
3
+ "version": "1.0.8-dev.1",
4
4
  "description": "Package for cart calculations in which it performs discount distribution and tax distribution on order",
5
5
  "main": "index.js",
6
6
  "scripts": {