foodbot-cart-calculations 1.0.42 → 1.0.44
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/calculations.js +18 -3
- package/functions/pointsCalculation.js +12 -0
- package/functions/promotionCalculation.js +15 -11
- package/index.js +3 -3
- package/package.json +1 -1
- package/response.json +254 -0
- package/sampleInput.json +242 -0
package/calculations.js
CHANGED
|
@@ -94,9 +94,24 @@ function applyDistribution(body) {
|
|
|
94
94
|
|
|
95
95
|
mainCart.tip_amount = parseFloat(tipValue).toFixed(2);
|
|
96
96
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
97
|
+
const storeValue = parseFloat(final.store_value || 0);
|
|
98
|
+
const cartTotal = parseFloat(taxData.cartTotal || 0);
|
|
99
|
+
const deliveryCost = parseFloat(delivery_cost || 0);
|
|
100
|
+
const serviceAmount = parseFloat(service_amount || 0);
|
|
101
|
+
|
|
102
|
+
const deliveryCovered = body.loyalty_points_details?.enable_delivery_points_usage === 1 && storeValue >= cartTotal + deliveryCost;
|
|
103
|
+
const serviceCovered = body.loyalty_points_details?.enable_service_charge_usage === 1 && storeValue >= cartTotal + deliveryCost + serviceAmount;
|
|
104
|
+
|
|
105
|
+
if (!deliveryCovered) {
|
|
106
|
+
mainCart.final_amount += deliveryCost;
|
|
107
|
+
mainCart.cash_expected += deliveryCost;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if (!serviceCovered) {
|
|
111
|
+
mainCart.final_amount += serviceAmount;
|
|
112
|
+
mainCart.cash_expected += serviceAmount;
|
|
113
|
+
}
|
|
114
|
+
|
|
100
115
|
//In a case when calculation of order done from pos.
|
|
101
116
|
if (body.tip_type && body.tip_type == 'percentage' && body.isPos && body.isPos == 1) {
|
|
102
117
|
tipValue = (mainCart.final_amount * parseInt(tipValueReq)) / 100;
|
|
@@ -39,6 +39,18 @@ function getPointsDiscount(cartObject, points, userDetails) {
|
|
|
39
39
|
let count = 0;
|
|
40
40
|
let storeAmount = points.store_value ?? (points.original_store_value ?? 0);
|
|
41
41
|
let indexes = [];
|
|
42
|
+
// Attach delivery and service amount if configured
|
|
43
|
+
cartObject.delivery_cost = cartObject.delivery_cost || 0;
|
|
44
|
+
cartObject.service_amount = cartObject.service_amount || 0;
|
|
45
|
+
|
|
46
|
+
if (points.enable_delivery_points_usage === 1) {
|
|
47
|
+
storeAmount = parseFloat(storeAmount) + parseFloat(cartObject.delivery_cost);
|
|
48
|
+
}
|
|
49
|
+
if (points.enable_service_charge_usage === 1) {
|
|
50
|
+
storeAmount = parseFloat(storeAmount) + parseFloat(cartObject.service_amount);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
storeAmount = parseFloat(storeAmount).toFixed(2);
|
|
42
54
|
|
|
43
55
|
if (points.redeem_categories && points.redeem_categories != '') {
|
|
44
56
|
itemsTotal = 0;
|
|
@@ -143,18 +143,19 @@ function getCategorySpeificOffer(carts, offer) {
|
|
|
143
143
|
|
|
144
144
|
let foundItemsSum = 0
|
|
145
145
|
carts.item_details.filter((res) => {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
146
|
+
if(!res.purchase_points){
|
|
147
|
+
let itemId = res.item_id?.toString().length > 10 ? res.item_id : parseInt(res.item_id);
|
|
148
|
+
if (!res.event && (offer.offer_discount_type == 'manual' || (offer.offer_products.offer_discount_products.includes(itemId) && res.isPackage == 0) || (offer.offer_products.package_items.includes(itemId) && res.isPackage == 1))) {
|
|
149
|
+
foundItemsSum = foundItemsSum + res.item_price_with_modifier * res.quantity
|
|
150
|
+
return foundItemsSum
|
|
151
|
+
}
|
|
151
152
|
}
|
|
152
153
|
})
|
|
153
154
|
|
|
154
155
|
let offerAmount = (offer.oo_offer_value <= foundItemsSum) ? offer.oo_offer_value : foundItemsSum;
|
|
155
156
|
let remaningOfferAmount = offerAmount
|
|
156
157
|
carts.item_details.forEach((element, index) => {
|
|
157
|
-
let itemId = element.item_id
|
|
158
|
+
let itemId = element.item_id?.toString().length > 10 ? element.item_id : parseInt(element.item_id);
|
|
158
159
|
if (!element.event && (offer.offer_discount_type == 'manual' || (offer.offer_products.offer_discount_products.includes(itemId) && element.isPackage == 0) || (offer.offer_products.package_items.includes(itemId) && element.isPackage == 1))) {
|
|
159
160
|
var itemAmount = 0;
|
|
160
161
|
|
|
@@ -749,7 +750,7 @@ function addItemQuantity(items, offer) {
|
|
|
749
750
|
item.toString().length > 10 ? item : parseInt(item, 10)
|
|
750
751
|
);
|
|
751
752
|
items.forEach(function (element) {
|
|
752
|
-
let itemId = element.item_id
|
|
753
|
+
let itemId = element.item_id?.toString().length > 10 ? element.item_id : parseInt(element.item_id);
|
|
753
754
|
if (offer.offer_products.offer_buy_products.includes(itemId) || offer.offer_products.offer_get_products.includes(itemId)) {
|
|
754
755
|
for (var i = 1; i <= element.quantity; i++) {
|
|
755
756
|
if (offer.offer_products.order_modifiercost_use == 1) {
|
|
@@ -849,7 +850,7 @@ function getFreeProductOffer(cartObject, offer) {
|
|
|
849
850
|
cartItem.forEach((element, index) => {
|
|
850
851
|
var ItemIndex = carts.findIndex((x) => x.item_id == element.item_id && !x.remove);
|
|
851
852
|
|
|
852
|
-
let itemId = element.item_id
|
|
853
|
+
let itemId = element.item_id?.toString().length > 10 ? element.item_id : parseInt(element.item_id);
|
|
853
854
|
if (offer.offer_products.offer_discount_products.includes(itemId)) {
|
|
854
855
|
var offerAmount = 0;
|
|
855
856
|
let costWithOutModifier = 0;
|
|
@@ -971,7 +972,7 @@ function getFixedPriceProductOffer(cartObject, offer) {
|
|
|
971
972
|
|
|
972
973
|
cartItem.forEach((element, index) => {
|
|
973
974
|
var ItemIndex = carts.findIndex((x) => x.item_id == element.item_id && !x.remove);
|
|
974
|
-
let itemId = element.item_id
|
|
975
|
+
let itemId = element.item_id?.toString().length > 10 ? element.item_id : parseInt(element.item_id);
|
|
975
976
|
if (offer.offer_products.offer_discount_products.includes(itemId) || offer.offer_products.package_items.includes(itemId)) {
|
|
976
977
|
var offerAmount = 0;
|
|
977
978
|
var singleItemCost = element.item_price;
|
|
@@ -1063,7 +1064,9 @@ function setPackageDefaultDiscount(cart) {
|
|
|
1063
1064
|
let itemTotal = 0;
|
|
1064
1065
|
if (item.package_items && item.package_items.length > 0) {
|
|
1065
1066
|
item.package_items.forEach(function (v) {
|
|
1066
|
-
|
|
1067
|
+
//this commemted code is sceniore when user can also increas item quantity i think which is wrong
|
|
1068
|
+
// itemTotal += ((item.quantity * v.quantity) * v.price);
|
|
1069
|
+
itemTotal += (item.quantity * v.price);
|
|
1067
1070
|
})
|
|
1068
1071
|
let packagePrice = item.quantity * item.item_price;
|
|
1069
1072
|
let totalDiscount = (packagePrice < itemTotal) ? (parseFloat(itemTotal) - parseFloat(packagePrice)).toFixed(2) : 0;
|
|
@@ -1101,10 +1104,11 @@ function distributeDiscount(packageItems, totalDiscount, itemTotal, quantity) {
|
|
|
1101
1104
|
let totalApplied = 0;
|
|
1102
1105
|
let singleUnit = (quantity * parseFloat(totalDiscount) / parseFloat(itemTotal)).toFixed(2);
|
|
1103
1106
|
for (const [index, item] of packageItems.entries()) {
|
|
1107
|
+
//this commemted code is sceniore when user can also increas item quantity i think which is wrong
|
|
1108
|
+
// let discountPerItem = (parseFloat(singleUnit) * (parseInt(item.quantity) * parseFloat(item.price))).toFixed(2);
|
|
1104
1109
|
let discountPerItem = (parseFloat(singleUnit) * parseFloat(item.price)).toFixed(2);
|
|
1105
1110
|
totalApplied = (parseFloat(totalApplied) + parseFloat(discountPerItem)).toFixed(2);
|
|
1106
1111
|
item.default_combo_discount = parseFloat(discountPerItem).toFixed(2);
|
|
1107
|
-
|
|
1108
1112
|
if (index == packageItems.length - 1) {
|
|
1109
1113
|
|
|
1110
1114
|
let remaningOfferAmount = (parseFloat(totalDiscount) - parseFloat(totalApplied)).toFixed(2);
|
package/index.js
CHANGED
|
@@ -360,9 +360,9 @@ async function calculateTax(inputJSON) {
|
|
|
360
360
|
// "delivery_cost": 0,
|
|
361
361
|
// "service_amount": 0
|
|
362
362
|
// }
|
|
363
|
-
|
|
363
|
+
// let json = JSON.parse(fs.readFileSync('./sampleInput.json', 'utf8'));
|
|
364
364
|
// calculateTax(json).then(res=>{
|
|
365
|
-
//
|
|
365
|
+
// console.log(JSON.stringify(res))
|
|
366
366
|
|
|
367
367
|
// const jsonResponse = JSON.stringify(res, null, 2); // Format the JSON with indentation
|
|
368
368
|
// const filePath = path.join(__dirname, 'response.json'); // File path in the same directory
|
|
@@ -378,5 +378,5 @@ async function calculateTax(inputJSON) {
|
|
|
378
378
|
// }).catch(err=>{
|
|
379
379
|
// console.log(err)
|
|
380
380
|
// })
|
|
381
|
-
|
|
381
|
+
|
|
382
382
|
module.exports = { calculateTax }
|
package/package.json
CHANGED
package/response.json
ADDED
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
{
|
|
2
|
+
"status": "success",
|
|
3
|
+
"status_code": 201,
|
|
4
|
+
"message": "Tax calculated successfully with few details missing",
|
|
5
|
+
"missing_optional_fields": [
|
|
6
|
+
"order_type",
|
|
7
|
+
"restaurant_id",
|
|
8
|
+
"branch_id",
|
|
9
|
+
"request_id"
|
|
10
|
+
],
|
|
11
|
+
"data": {
|
|
12
|
+
"order_items": {
|
|
13
|
+
"order_type": "delivery",
|
|
14
|
+
"request_id": "9d63b0f16dda84ec",
|
|
15
|
+
"restaurant_id": 511,
|
|
16
|
+
"brand_id": "7c16f7c1-cec4-11ed-8648-129754d6b903",
|
|
17
|
+
"branch_id": 2808,
|
|
18
|
+
"item_details": [
|
|
19
|
+
{
|
|
20
|
+
"menu_id": 658,
|
|
21
|
+
"item_id": 17361,
|
|
22
|
+
"item_image": "https://res.cloudinary.com/http-foodbot-ai/image/upload/f_auto,q_auto,fl_lossy/v1710223116/prod/menu_item/file1710223116748menu_item_y0adnc.jpg",
|
|
23
|
+
"category_id": 3363,
|
|
24
|
+
"item_price": 120,
|
|
25
|
+
"item_price_with_modifier": 120,
|
|
26
|
+
"quantity": 1,
|
|
27
|
+
"item_modifiers": [],
|
|
28
|
+
"item_display_text": "Chicken Malai Kabab",
|
|
29
|
+
"item_name": "Chicken Malai Kabab",
|
|
30
|
+
"tax_rate": 16,
|
|
31
|
+
"isPackage": 0,
|
|
32
|
+
"package_items": [],
|
|
33
|
+
"actual_price": 120,
|
|
34
|
+
"item_event": "new",
|
|
35
|
+
"tax_id": [
|
|
36
|
+
{
|
|
37
|
+
"tax_id": "425a195c-3b37-11ed-af0e-42010ad46021"
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"ieps_tax": {
|
|
41
|
+
"status": 0
|
|
42
|
+
},
|
|
43
|
+
"special_instruction": "",
|
|
44
|
+
"item_key": "17361-",
|
|
45
|
+
"promotion_discount_modifier": 0,
|
|
46
|
+
"total_item_price": 120,
|
|
47
|
+
"tax_amount": "0.000000",
|
|
48
|
+
"tax_array": [
|
|
49
|
+
{
|
|
50
|
+
"tax_id": "425a195c-3b37-11ed-af0e-42010ad46021",
|
|
51
|
+
"tax_label": "IVA 16%",
|
|
52
|
+
"tax_rate": 16,
|
|
53
|
+
"tax_sequence": 1,
|
|
54
|
+
"base_price_effected": 0,
|
|
55
|
+
"tax_amount": "0.000000",
|
|
56
|
+
"base_price": "0.00",
|
|
57
|
+
"tax_rate_quantity": 0
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"tax_amount_modifier": "0.000000",
|
|
61
|
+
"total_tax_amount": "0.000000",
|
|
62
|
+
"point_discount_status": true,
|
|
63
|
+
"points_discount": "120.00",
|
|
64
|
+
"points_discount_modifier": 120,
|
|
65
|
+
"promotion_discount": 0
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"menu_id": 658,
|
|
69
|
+
"item_id": 21328,
|
|
70
|
+
"item_image": "https://res.cloudinary.com/http-foodbot-ai/image/upload/f_auto,q_auto,fl_lossy/v1726842156/prod/menu_item/file1726842156041menu_item_iux2iq.jpg",
|
|
71
|
+
"category_id": 3363,
|
|
72
|
+
"item_price": 230,
|
|
73
|
+
"item_price_with_modifier": 240,
|
|
74
|
+
"quantity": 1,
|
|
75
|
+
"item_modifiers": [
|
|
76
|
+
{
|
|
77
|
+
"modifer_cat": 3217,
|
|
78
|
+
"modifier_category_id": 3217,
|
|
79
|
+
"modifier_caetgory_name": "Chicken Modifier",
|
|
80
|
+
"modifier_item_id": 35014,
|
|
81
|
+
"modifier_sequence": "00",
|
|
82
|
+
"modifier_item_price": 10,
|
|
83
|
+
"modifier_item_name": "chciken 01",
|
|
84
|
+
"is_tax_rate_same": 1,
|
|
85
|
+
"ieps_tax": null,
|
|
86
|
+
"tax_rate": 0,
|
|
87
|
+
"quantity": 1,
|
|
88
|
+
"item_id": 21328,
|
|
89
|
+
"tax_id": [
|
|
90
|
+
{
|
|
91
|
+
"tax_id": "425a195c-3b37-11ed-af0e-42010ad46021"
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"modifier_trx_id": "51ac-3372-53e9",
|
|
95
|
+
"linked_product": "",
|
|
96
|
+
"price_list_id": "d5f30af5-5d66-4cf0-864b-b2eca45407c4",
|
|
97
|
+
"promotion_discount_modifier": 0,
|
|
98
|
+
"tax_amount": "0.000000",
|
|
99
|
+
"tax_array": [
|
|
100
|
+
{
|
|
101
|
+
"tax_id": "425a195c-3b37-11ed-af0e-42010ad46021",
|
|
102
|
+
"tax_label": "IVA 16%",
|
|
103
|
+
"tax_rate": 16,
|
|
104
|
+
"tax_sequence": 1,
|
|
105
|
+
"base_price_effected": 0,
|
|
106
|
+
"tax_amount": "0.000000",
|
|
107
|
+
"base_price": "0.00",
|
|
108
|
+
"tax_rate_quantity": 0
|
|
109
|
+
}
|
|
110
|
+
],
|
|
111
|
+
"points_discount": "10.00"
|
|
112
|
+
}
|
|
113
|
+
],
|
|
114
|
+
"item_display_text": "Irani Chicken Kebab 02",
|
|
115
|
+
"item_name": "Irani Chicken Kebab 02",
|
|
116
|
+
"tax_rate": 16,
|
|
117
|
+
"isPackage": 0,
|
|
118
|
+
"package_items": [],
|
|
119
|
+
"actual_price": 230,
|
|
120
|
+
"item_event": "new",
|
|
121
|
+
"tax_id": [
|
|
122
|
+
{
|
|
123
|
+
"tax_id": "425a195c-3b37-11ed-af0e-42010ad46021"
|
|
124
|
+
}
|
|
125
|
+
],
|
|
126
|
+
"ieps_tax": {
|
|
127
|
+
"status": 0
|
|
128
|
+
},
|
|
129
|
+
"special_instruction": "",
|
|
130
|
+
"item_key": "21328-3217:35014-1",
|
|
131
|
+
"promotion_discount_modifier": 0,
|
|
132
|
+
"total_item_price": 240,
|
|
133
|
+
"tax_amount": "0.000000",
|
|
134
|
+
"tax_array": [
|
|
135
|
+
{
|
|
136
|
+
"tax_id": "425a195c-3b37-11ed-af0e-42010ad46021",
|
|
137
|
+
"tax_label": "IVA 16%",
|
|
138
|
+
"tax_rate": 16,
|
|
139
|
+
"tax_sequence": 1,
|
|
140
|
+
"base_price_effected": 0,
|
|
141
|
+
"tax_amount": "0.000000",
|
|
142
|
+
"base_price": "0.00",
|
|
143
|
+
"tax_rate_quantity": 0
|
|
144
|
+
}
|
|
145
|
+
],
|
|
146
|
+
"tax_amount_modifier": "0.000000",
|
|
147
|
+
"total_tax_amount": "0.000000",
|
|
148
|
+
"point_discount_status": true,
|
|
149
|
+
"points_discount": "230.00",
|
|
150
|
+
"points_discount_modifier": "360.00",
|
|
151
|
+
"promotion_discount": 0
|
|
152
|
+
}
|
|
153
|
+
],
|
|
154
|
+
"is_delivery_discount": false,
|
|
155
|
+
"total": "360.00",
|
|
156
|
+
"discount": "0.00",
|
|
157
|
+
"points_redeem_message": "",
|
|
158
|
+
"store_value": "360.00",
|
|
159
|
+
"point_discount_amount": "360.00",
|
|
160
|
+
"points_discount": "360.00",
|
|
161
|
+
"cartTotal": "0.00",
|
|
162
|
+
"tax_amount": "0.000000",
|
|
163
|
+
"merged_tax_array": [
|
|
164
|
+
{
|
|
165
|
+
"tax_id": "425a195c-3b37-11ed-af0e-42010ad46021",
|
|
166
|
+
"tax_label": "IVA 16%",
|
|
167
|
+
"tax_rate": 16,
|
|
168
|
+
"tax_sequence": 1,
|
|
169
|
+
"base_price_effected": 0,
|
|
170
|
+
"tax_amount": "0.000000",
|
|
171
|
+
"base_price": "0.000000",
|
|
172
|
+
"tax_rate_quantity": 0
|
|
173
|
+
}
|
|
174
|
+
],
|
|
175
|
+
"cart_total_with_tax": "0.00",
|
|
176
|
+
"sub_total": "0.00",
|
|
177
|
+
"total_after_tax": "0.00",
|
|
178
|
+
"final_amount": "NaN",
|
|
179
|
+
"cash_expected": "NaN",
|
|
180
|
+
"delivery_cost": 0,
|
|
181
|
+
"service_amount": 0
|
|
182
|
+
},
|
|
183
|
+
"tax_settings": [
|
|
184
|
+
{
|
|
185
|
+
"tax_id": "425a195c-3b37-11ed-af0e-42010ad46021",
|
|
186
|
+
"tax_label": "IVA 16%",
|
|
187
|
+
"tax_rate": 16,
|
|
188
|
+
"tax_sequence": 1,
|
|
189
|
+
"base_price_effected": 0
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"tax_id": "21036b00-bdb4-4485-aaba-d088a721a67f",
|
|
193
|
+
"tax_label": "IVA 8%",
|
|
194
|
+
"tax_rate": 8,
|
|
195
|
+
"tax_sequence": 1,
|
|
196
|
+
"base_price_effected": 0
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"tax_id": "e47296aa-b5ae-449f-ab5f-ff50f43a648a",
|
|
200
|
+
"tax_label": "Sin IVA",
|
|
201
|
+
"tax_rate": 0,
|
|
202
|
+
"tax_sequence": 3,
|
|
203
|
+
"base_price_effected": 0
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"tax_id": "21036b00-bdb4-4485-aaba-d088a721a67f1",
|
|
207
|
+
"tax_label": "IEPS 8%",
|
|
208
|
+
"tax_rate": 8,
|
|
209
|
+
"tax_sequence": 2,
|
|
210
|
+
"base_price_effected": 0
|
|
211
|
+
}
|
|
212
|
+
],
|
|
213
|
+
"tip_type": "percentage",
|
|
214
|
+
"tip_value": "",
|
|
215
|
+
"tax_type": 2,
|
|
216
|
+
"delivery_cost": 20,
|
|
217
|
+
"service_amount": 0,
|
|
218
|
+
"store_value": "360.00",
|
|
219
|
+
"store_value_without_roundoff": 20500,
|
|
220
|
+
"loyalty_points_details": {
|
|
221
|
+
"points": 410,
|
|
222
|
+
"redeemable": "yes",
|
|
223
|
+
"store_value": 380,
|
|
224
|
+
"redeem_categories": [
|
|
225
|
+
{
|
|
226
|
+
"product_id": "All",
|
|
227
|
+
"category_id": "All"
|
|
228
|
+
}
|
|
229
|
+
],
|
|
230
|
+
"original_store_value": 20500,
|
|
231
|
+
"status": true,
|
|
232
|
+
"points_redeemed": 8,
|
|
233
|
+
"show_purchase": false,
|
|
234
|
+
"point_amount": 380,
|
|
235
|
+
"full_redemption": true,
|
|
236
|
+
"enable_delivery_points_usage": 1
|
|
237
|
+
},
|
|
238
|
+
"user_detais": {
|
|
239
|
+
"member_id": "05361296-42b5-4aa9-a44c-ec57e56c822f",
|
|
240
|
+
"first_name": "JOHN",
|
|
241
|
+
"last_name": "Wix",
|
|
242
|
+
"country_code": "52",
|
|
243
|
+
"created_on": "2025-07-22T06:29:05.189Z",
|
|
244
|
+
"reward_plan_name": "General ",
|
|
245
|
+
"reward_plan_id": 66,
|
|
246
|
+
"calling_code": "52",
|
|
247
|
+
"name": "JOHN Wix"
|
|
248
|
+
},
|
|
249
|
+
"discount": "0.00",
|
|
250
|
+
"final_amount": 0,
|
|
251
|
+
"cash_expected": 0,
|
|
252
|
+
"tip_amount": "0.00"
|
|
253
|
+
}
|
|
254
|
+
}
|
package/sampleInput.json
ADDED
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
{
|
|
2
|
+
"order_items": {
|
|
3
|
+
"order_type": "delivery",
|
|
4
|
+
"request_id": "9d63b0f16dda84ec",
|
|
5
|
+
"restaurant_id": 511,
|
|
6
|
+
"brand_id": "7c16f7c1-cec4-11ed-8648-129754d6b903",
|
|
7
|
+
"branch_id": 2808,
|
|
8
|
+
"item_details": [
|
|
9
|
+
{
|
|
10
|
+
"menu_id": 658,
|
|
11
|
+
"item_id": 17361,
|
|
12
|
+
"item_image": "https://res.cloudinary.com/http-foodbot-ai/image/upload/f_auto,q_auto,fl_lossy/v1710223116/prod/menu_item/file1710223116748menu_item_y0adnc.jpg",
|
|
13
|
+
"category_id": 3363,
|
|
14
|
+
"item_price": 120,
|
|
15
|
+
"item_price_with_modifier": 120,
|
|
16
|
+
"quantity": 1,
|
|
17
|
+
"item_modifiers": [],
|
|
18
|
+
"item_display_text": "Chicken Malai Kabab",
|
|
19
|
+
"item_name": "Chicken Malai Kabab",
|
|
20
|
+
"tax_rate": 16,
|
|
21
|
+
"isPackage": 0,
|
|
22
|
+
"package_items": [],
|
|
23
|
+
"actual_price": 120,
|
|
24
|
+
"item_event": "new",
|
|
25
|
+
"tax_id": [
|
|
26
|
+
{
|
|
27
|
+
"tax_id": "425a195c-3b37-11ed-af0e-42010ad46021"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"ieps_tax": {
|
|
31
|
+
"status": 0
|
|
32
|
+
},
|
|
33
|
+
"special_instruction": "",
|
|
34
|
+
"item_key": "17361-",
|
|
35
|
+
"promotion_discount_modifier": 0,
|
|
36
|
+
"total_item_price": 120,
|
|
37
|
+
"point_discount_status": true,
|
|
38
|
+
"points_discount": "120.00",
|
|
39
|
+
"points_discount_modifier": 120,
|
|
40
|
+
"tax_amount": "0.000000",
|
|
41
|
+
"tax_array": [
|
|
42
|
+
{
|
|
43
|
+
"tax_id": "425a195c-3b37-11ed-af0e-42010ad46021",
|
|
44
|
+
"tax_label": "IVA 16%",
|
|
45
|
+
"tax_rate": 16,
|
|
46
|
+
"tax_sequence": 1,
|
|
47
|
+
"base_price_effected": 0,
|
|
48
|
+
"tax_amount": "0.000000",
|
|
49
|
+
"base_price": "0.00",
|
|
50
|
+
"tax_rate_quantity": 0
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"tax_amount_modifier": "0.000000",
|
|
54
|
+
"total_tax_amount": "0.000000",
|
|
55
|
+
"promotion_discount": 0
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"menu_id": 658,
|
|
59
|
+
"item_id": 21328,
|
|
60
|
+
"item_image": "https://res.cloudinary.com/http-foodbot-ai/image/upload/f_auto,q_auto,fl_lossy/v1726842156/prod/menu_item/file1726842156041menu_item_iux2iq.jpg",
|
|
61
|
+
"category_id": 3363,
|
|
62
|
+
"item_price": 230,
|
|
63
|
+
"item_price_with_modifier": 240,
|
|
64
|
+
"quantity": 1,
|
|
65
|
+
"item_modifiers": [
|
|
66
|
+
{
|
|
67
|
+
"modifer_cat": 3217,
|
|
68
|
+
"modifier_category_id": 3217,
|
|
69
|
+
"modifier_caetgory_name": "Chicken Modifier",
|
|
70
|
+
"modifier_item_id": 35014,
|
|
71
|
+
"modifier_sequence": "00",
|
|
72
|
+
"modifier_item_price": 10,
|
|
73
|
+
"modifier_item_name": "chciken 01",
|
|
74
|
+
"is_tax_rate_same": 1,
|
|
75
|
+
"ieps_tax": null,
|
|
76
|
+
"tax_rate": 0,
|
|
77
|
+
"quantity": 1,
|
|
78
|
+
"item_id": 21328,
|
|
79
|
+
"tax_id": [
|
|
80
|
+
{
|
|
81
|
+
"tax_id": "425a195c-3b37-11ed-af0e-42010ad46021"
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
"modifier_trx_id": "51ac-3372-53e9",
|
|
85
|
+
"linked_product": "",
|
|
86
|
+
"price_list_id": "d5f30af5-5d66-4cf0-864b-b2eca45407c4",
|
|
87
|
+
"promotion_discount_modifier": 0,
|
|
88
|
+
"points_discount": "10.00",
|
|
89
|
+
"tax_amount": "0.000000",
|
|
90
|
+
"tax_array": [
|
|
91
|
+
{
|
|
92
|
+
"tax_id": "425a195c-3b37-11ed-af0e-42010ad46021",
|
|
93
|
+
"tax_label": "IVA 16%",
|
|
94
|
+
"tax_rate": 16,
|
|
95
|
+
"tax_sequence": 1,
|
|
96
|
+
"base_price_effected": 0,
|
|
97
|
+
"tax_amount": "0.000000",
|
|
98
|
+
"base_price": "0.00",
|
|
99
|
+
"tax_rate_quantity": 0
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
}
|
|
103
|
+
],
|
|
104
|
+
"item_display_text": "Irani Chicken Kebab 02",
|
|
105
|
+
"item_name": "Irani Chicken Kebab 02",
|
|
106
|
+
"tax_rate": 16,
|
|
107
|
+
"isPackage": 0,
|
|
108
|
+
"package_items": [],
|
|
109
|
+
"actual_price": 230,
|
|
110
|
+
"item_event": "new",
|
|
111
|
+
"tax_id": [
|
|
112
|
+
{
|
|
113
|
+
"tax_id": "425a195c-3b37-11ed-af0e-42010ad46021"
|
|
114
|
+
}
|
|
115
|
+
],
|
|
116
|
+
"ieps_tax": {
|
|
117
|
+
"status": 0
|
|
118
|
+
},
|
|
119
|
+
"special_instruction": "",
|
|
120
|
+
"item_key": "21328-3217:35014-1",
|
|
121
|
+
"promotion_discount_modifier": 0,
|
|
122
|
+
"total_item_price": 240,
|
|
123
|
+
"point_discount_status": true,
|
|
124
|
+
"points_discount": "230.00",
|
|
125
|
+
"points_discount_modifier": "380.00",
|
|
126
|
+
"tax_amount": "0.000000",
|
|
127
|
+
"tax_array": [
|
|
128
|
+
{
|
|
129
|
+
"tax_id": "425a195c-3b37-11ed-af0e-42010ad46021",
|
|
130
|
+
"tax_label": "IVA 16%",
|
|
131
|
+
"tax_rate": 16,
|
|
132
|
+
"tax_sequence": 1,
|
|
133
|
+
"base_price_effected": 0,
|
|
134
|
+
"tax_amount": "0.000000",
|
|
135
|
+
"base_price": "0.00",
|
|
136
|
+
"tax_rate_quantity": 0
|
|
137
|
+
}
|
|
138
|
+
],
|
|
139
|
+
"tax_amount_modifier": "0.000000",
|
|
140
|
+
"total_tax_amount": "0.000000",
|
|
141
|
+
"promotion_discount": 0
|
|
142
|
+
}
|
|
143
|
+
],
|
|
144
|
+
"is_delivery_discount": false,
|
|
145
|
+
"total": "380.00",
|
|
146
|
+
"discount": "0.00",
|
|
147
|
+
"points_redeem_message": "",
|
|
148
|
+
"store_value": "380.00",
|
|
149
|
+
"point_discount_amount": "380.00",
|
|
150
|
+
"points_discount": "380.00",
|
|
151
|
+
"cartTotal": "0.00",
|
|
152
|
+
"tax_amount": "0.000000",
|
|
153
|
+
"merged_tax_array": [
|
|
154
|
+
{
|
|
155
|
+
"tax_id": "425a195c-3b37-11ed-af0e-42010ad46021",
|
|
156
|
+
"tax_label": "IVA 16%",
|
|
157
|
+
"tax_rate": 16,
|
|
158
|
+
"tax_sequence": 1,
|
|
159
|
+
"base_price_effected": 0,
|
|
160
|
+
"tax_amount": "0.000000",
|
|
161
|
+
"base_price": "0.000000",
|
|
162
|
+
"tax_rate_quantity": 0
|
|
163
|
+
}
|
|
164
|
+
],
|
|
165
|
+
"cart_total_with_tax": "0.00",
|
|
166
|
+
"sub_total": "0.00",
|
|
167
|
+
"total_after_tax": "0.00",
|
|
168
|
+
"final_amount": "NaN",
|
|
169
|
+
"cash_expected": "NaN"
|
|
170
|
+
},
|
|
171
|
+
"tax_settings": [
|
|
172
|
+
{
|
|
173
|
+
"tax_id": "425a195c-3b37-11ed-af0e-42010ad46021",
|
|
174
|
+
"tax_label": "IVA 16%",
|
|
175
|
+
"tax_rate": 16,
|
|
176
|
+
"tax_sequence": 1,
|
|
177
|
+
"base_price_effected": 0
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"tax_id": "21036b00-bdb4-4485-aaba-d088a721a67f",
|
|
181
|
+
"tax_label": "IVA 8%",
|
|
182
|
+
"tax_rate": 8,
|
|
183
|
+
"tax_sequence": 1,
|
|
184
|
+
"base_price_effected": 0
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"tax_id": "e47296aa-b5ae-449f-ab5f-ff50f43a648a",
|
|
188
|
+
"tax_label": "Sin IVA",
|
|
189
|
+
"tax_rate": 0,
|
|
190
|
+
"tax_sequence": 3,
|
|
191
|
+
"base_price_effected": 0
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"tax_id": "21036b00-bdb4-4485-aaba-d088a721a67f1",
|
|
195
|
+
"tax_label": "IEPS 8%",
|
|
196
|
+
"tax_rate": 8,
|
|
197
|
+
"tax_sequence": 2,
|
|
198
|
+
"base_price_effected": 0
|
|
199
|
+
}
|
|
200
|
+
],
|
|
201
|
+
"tip_type": "percentage",
|
|
202
|
+
"tip_value": "",
|
|
203
|
+
"tax_type": 2,
|
|
204
|
+
"delivery_cost": 20,
|
|
205
|
+
"service_amount": 0,
|
|
206
|
+
"store_value": "380.00",
|
|
207
|
+
"store_value_without_roundoff": 20500,
|
|
208
|
+
"loyalty_points_details": {
|
|
209
|
+
"points": 410,
|
|
210
|
+
"redeemable": "yes",
|
|
211
|
+
"store_value": 380,
|
|
212
|
+
"redeem_categories": [
|
|
213
|
+
{
|
|
214
|
+
"product_id": "All",
|
|
215
|
+
"category_id": "All"
|
|
216
|
+
}
|
|
217
|
+
],
|
|
218
|
+
"original_store_value": 20500,
|
|
219
|
+
"status": true,
|
|
220
|
+
"points_redeemed": 8,
|
|
221
|
+
"show_purchase": false,
|
|
222
|
+
"point_amount": 380,
|
|
223
|
+
"full_redemption": true,
|
|
224
|
+
"enable_delivery_points_usage": 1,
|
|
225
|
+
"enable_service_charge_usage": 0
|
|
226
|
+
},
|
|
227
|
+
"user_detais": {
|
|
228
|
+
"member_id": "05361296-42b5-4aa9-a44c-ec57e56c822f",
|
|
229
|
+
"first_name": "JOHN",
|
|
230
|
+
"last_name": "Wix",
|
|
231
|
+
"country_code": "52",
|
|
232
|
+
"created_on": "2025-07-22T06:29:05.189Z",
|
|
233
|
+
"reward_plan_name": "General ",
|
|
234
|
+
"reward_plan_id": 66,
|
|
235
|
+
"calling_code": "52",
|
|
236
|
+
"name": "JOHN Wix"
|
|
237
|
+
},
|
|
238
|
+
"discount": "0.00",
|
|
239
|
+
"final_amount": 20,
|
|
240
|
+
"cash_expected": 20,
|
|
241
|
+
"tip_amount": "0.00"
|
|
242
|
+
}
|