ordering-ui-react-native 0.15.40 → 0.15.41-release

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.
Files changed (197) hide show
  1. package/package.json +8 -5
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/AddressForm/index.tsx +18 -2
  4. package/src/components/BusinessController/index.tsx +8 -2
  5. package/src/components/BusinessTypeFilter/index.tsx +4 -1
  6. package/src/components/BusinessesListing/index.tsx +1 -1
  7. package/src/components/Checkout/index.tsx +23 -2
  8. package/src/components/DriverTips/index.tsx +11 -6
  9. package/src/components/LanguageSelector/index.tsx +7 -2
  10. package/src/components/LoginForm/index.tsx +3 -1
  11. package/src/components/OrderDetails/index.tsx +2 -2
  12. package/src/components/PaymentOptions/index.tsx +1 -1
  13. package/src/components/PaymentOptionsWebView/index.tsx +123 -124
  14. package/src/components/SignupForm/index.tsx +3 -1
  15. package/src/components/SingleProductCard/index.tsx +16 -4
  16. package/src/components/StripeMethodForm/index.tsx +1 -2
  17. package/src/components/UpsellingProducts/index.tsx +1 -1
  18. package/src/components/UserProfileForm/index.tsx +63 -6
  19. package/src/components/UserProfileForm/styles.tsx +8 -0
  20. package/src/components/VerifyPhone/styles.tsx +1 -2
  21. package/src/components/shared/OModal.tsx +1 -1
  22. package/src/hooks/useCountdownTimer.tsx +26 -0
  23. package/src/navigators/CheckoutNavigator.tsx +6 -0
  24. package/src/navigators/HomeNavigator.tsx +12 -0
  25. package/src/pages/BusinessProductsList.tsx +1 -0
  26. package/src/pages/BusinessesListing.tsx +1 -1
  27. package/src/pages/MultiCheckout.tsx +31 -0
  28. package/src/pages/MultiOrdersDetails.tsx +27 -0
  29. package/src/pages/Sessions.tsx +22 -0
  30. package/src/theme.json +0 -1
  31. package/src/types/index.tsx +5 -2
  32. package/src/utils/index.tsx +68 -1
  33. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +103 -15
  34. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -0
  35. package/themes/business/src/components/Chat/index.tsx +38 -86
  36. package/themes/business/src/components/DriverMap/index.tsx +6 -5
  37. package/themes/business/src/components/Home/index.tsx +128 -55
  38. package/themes/business/src/components/Home/styles.tsx +8 -1
  39. package/themes/business/src/components/LoginForm/index.tsx +89 -2
  40. package/themes/business/src/components/LoginForm/styles.tsx +6 -0
  41. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  42. package/themes/business/src/components/NewOrderNotification/index.tsx +79 -105
  43. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  44. package/themes/business/src/components/OrderDetails/Delivery.tsx +35 -18
  45. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +157 -89
  46. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +6 -0
  47. package/themes/business/src/components/OrderDetails/styles.tsx +7 -0
  48. package/themes/business/src/components/OrdersListManager/index.tsx +52 -49
  49. package/themes/business/src/components/OrdersOption/index.tsx +57 -50
  50. package/themes/business/src/components/PreviousOrders/index.tsx +50 -14
  51. package/themes/business/src/components/ProductItemAccordion/index.tsx +2 -2
  52. package/themes/business/src/components/shared/OModal.tsx +1 -1
  53. package/themes/business/src/types/index.tsx +5 -1
  54. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  55. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  56. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  57. package/themes/kiosk/src/components/BusinessMenu/index.tsx +39 -28
  58. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -3
  59. package/themes/kiosk/src/components/Cart/index.tsx +99 -26
  60. package/themes/kiosk/src/components/Cart/styles.tsx +6 -0
  61. package/themes/kiosk/src/components/CartBottomSheet/index.tsx +9 -2
  62. package/themes/kiosk/src/components/CartContent/index.tsx +0 -11
  63. package/themes/kiosk/src/components/CartItem/index.tsx +4 -3
  64. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +107 -62
  65. package/themes/kiosk/src/components/Checkout/index.tsx +40 -22
  66. package/themes/kiosk/src/components/CustomerName/index.tsx +0 -6
  67. package/themes/kiosk/src/components/DrawerView/index.tsx +1 -0
  68. package/themes/kiosk/src/components/DrawerView/styles.tsx +2 -2
  69. package/themes/kiosk/src/components/NavBar/index.tsx +29 -20
  70. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  71. package/themes/kiosk/src/components/OrderDetails/index.tsx +165 -65
  72. package/themes/kiosk/src/components/OrderDetails/styles.tsx +5 -0
  73. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +9 -11
  74. package/themes/kiosk/src/components/PaymentOptions/index.tsx +56 -54
  75. package/themes/kiosk/src/components/ProductForm/index.tsx +8 -9
  76. package/themes/kiosk/src/components/ProductItemAccordion/index.tsx +2 -2
  77. package/themes/kiosk/src/components/ProductOption/index.tsx +1 -1
  78. package/themes/kiosk/src/components/ProductOptionSubOption/index.tsx +3 -1
  79. package/themes/kiosk/src/components/UpsellingProducts/index.tsx +16 -5
  80. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  81. package/themes/kiosk/src/types/index.d.ts +3 -0
  82. package/themes/original/index.tsx +180 -1
  83. package/themes/original/src/components/ActiveOrders/index.tsx +15 -132
  84. package/themes/original/src/components/ActiveOrders/styles.tsx +0 -54
  85. package/themes/original/src/components/AddressForm/index.tsx +15 -10
  86. package/themes/original/src/components/AddressList/index.tsx +56 -18
  87. package/themes/original/src/components/AppleLogin/index.tsx +117 -78
  88. package/themes/original/src/components/BusinessBasicInformation/index.tsx +96 -45
  89. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +28 -1
  90. package/themes/original/src/components/BusinessController/index.tsx +50 -12
  91. package/themes/original/src/components/BusinessController/styles.tsx +27 -0
  92. package/themes/original/src/components/BusinessFeaturedController/index.tsx +20 -1
  93. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +23 -0
  94. package/themes/original/src/components/BusinessItemAccordion/index.tsx +8 -5
  95. package/themes/original/src/components/BusinessItemAccordion/styles.tsx +3 -1
  96. package/themes/original/src/components/BusinessListingSearch/index.tsx +196 -58
  97. package/themes/original/src/components/BusinessListingSearch/styles.tsx +22 -2
  98. package/themes/original/src/components/BusinessPreorder/index.tsx +2 -2
  99. package/themes/original/src/components/BusinessProductsCategories/index.tsx +9 -7
  100. package/themes/original/src/components/BusinessProductsList/CategoryDescription/index.tsx +44 -0
  101. package/themes/original/src/components/BusinessProductsList/index.tsx +139 -36
  102. package/themes/original/src/components/BusinessProductsList/styles.tsx +29 -2
  103. package/themes/original/src/components/BusinessProductsListing/index.tsx +116 -26
  104. package/themes/original/src/components/BusinessProductsListing/styles.tsx +22 -0
  105. package/themes/original/src/components/BusinessReviews/index.tsx +4 -25
  106. package/themes/original/src/components/BusinessTypeFilter/index.tsx +1 -2
  107. package/themes/original/src/components/BusinessesListing/index.tsx +127 -66
  108. package/themes/original/src/components/BusinessesListing/styles.tsx +11 -3
  109. package/themes/original/src/components/Cart/index.tsx +60 -43
  110. package/themes/original/src/components/CartContent/index.tsx +2 -2
  111. package/themes/original/src/components/Checkout/index.tsx +50 -33
  112. package/themes/original/src/components/DriverTips/index.tsx +17 -12
  113. package/themes/original/src/components/Favorite/index.tsx +91 -0
  114. package/themes/original/src/components/Favorite/styles.tsx +22 -0
  115. package/themes/original/src/components/FavoriteList/index.tsx +287 -0
  116. package/themes/original/src/components/FavoriteList/styles.tsx +5 -0
  117. package/themes/original/src/components/ForgotPasswordForm/index.tsx +84 -4
  118. package/themes/original/src/components/GPSButton/index.tsx +15 -8
  119. package/themes/original/src/components/GoogleMap/index.tsx +1 -0
  120. package/themes/original/src/components/Help/index.tsx +21 -4
  121. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +18 -1
  122. package/themes/original/src/components/Home/index.tsx +1 -1
  123. package/themes/original/src/components/LastOrders/index.tsx +12 -1
  124. package/themes/original/src/components/LoginForm/Otp/index.tsx +90 -0
  125. package/themes/original/src/components/LoginForm/Otp/styles.tsx +7 -0
  126. package/themes/original/src/components/LoginForm/index.tsx +394 -155
  127. package/themes/original/src/components/LoginForm/styles.tsx +7 -4
  128. package/themes/original/src/components/LogoutButton/index.tsx +7 -1
  129. package/themes/original/src/components/MessageListing/index.tsx +10 -1
  130. package/themes/original/src/components/Messages/index.tsx +6 -1
  131. package/themes/original/src/components/Messages/styles.tsx +1 -3
  132. package/themes/original/src/components/MomentOption/index.tsx +10 -1
  133. package/themes/original/src/components/MomentOption/styles.tsx +1 -1
  134. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +243 -0
  135. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/styles.tsx +46 -0
  136. package/themes/original/src/components/MultiCheckout/index.tsx +298 -0
  137. package/themes/original/src/components/MultiCheckout/styles.tsx +59 -0
  138. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +372 -0
  139. package/themes/original/src/components/MultiOrdersDetails/index.tsx +258 -0
  140. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +50 -0
  141. package/themes/original/src/components/MyOrders/index.tsx +120 -32
  142. package/themes/original/src/components/MyOrders/styles.tsx +8 -1
  143. package/themes/original/src/components/OrderDetails/index.tsx +55 -37
  144. package/themes/original/src/components/OrderDetails/styles.tsx +1 -2
  145. package/themes/original/src/components/OrderProgress/index.tsx +3 -3
  146. package/themes/original/src/components/OrderProgress/styles.tsx +1 -0
  147. package/themes/original/src/components/OrderSummary/index.tsx +3 -3
  148. package/themes/original/src/components/OrderTypeSelector/index.tsx +4 -2
  149. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +153 -0
  150. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +6 -0
  151. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +53 -0
  152. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +6 -0
  153. package/themes/original/src/components/OrdersOption/index.tsx +133 -41
  154. package/themes/original/src/components/OrdersOption/styles.tsx +4 -7
  155. package/themes/original/src/components/PaymentOptionCash/index.tsx +2 -2
  156. package/themes/original/src/components/PaymentOptionWallet/index.tsx +22 -24
  157. package/themes/original/src/components/PaymentOptionWallet/styles.tsx +1 -1
  158. package/themes/original/src/components/PaymentOptions/index.tsx +19 -15
  159. package/themes/original/src/components/PhoneInputNumber/index.tsx +1 -1
  160. package/themes/original/src/components/PreviousOrders/index.tsx +18 -145
  161. package/themes/original/src/components/ProductForm/index.tsx +74 -66
  162. package/themes/original/src/components/ProductForm/styles.tsx +0 -1
  163. package/themes/original/src/components/ProductItemAccordion/index.tsx +2 -2
  164. package/themes/original/src/components/ProductOptionSubOption/index.tsx +18 -12
  165. package/themes/original/src/components/Promotions/index.tsx +250 -0
  166. package/themes/original/src/components/Promotions/styles.tsx +60 -0
  167. package/themes/original/src/components/SearchBar/index.tsx +10 -4
  168. package/themes/original/src/components/Sessions/index.tsx +160 -0
  169. package/themes/original/src/components/Sessions/styles.tsx +15 -0
  170. package/themes/original/src/components/SignupForm/index.tsx +79 -6
  171. package/themes/original/src/components/SingleOrderCard/index.tsx +282 -0
  172. package/themes/original/src/components/SingleOrderCard/styles.tsx +54 -0
  173. package/themes/original/src/components/SingleProductCard/index.tsx +95 -32
  174. package/themes/original/src/components/SingleProductCard/styles.tsx +28 -1
  175. package/themes/original/src/components/StripeElementsForm/index.tsx +10 -2
  176. package/themes/original/src/components/StripeElementsForm/naked.tsx +2 -2
  177. package/themes/original/src/components/TaxInformation/index.tsx +10 -4
  178. package/themes/original/src/components/UpsellingProducts/index.tsx +86 -74
  179. package/themes/original/src/components/UserDetails/index.tsx +5 -96
  180. package/themes/original/src/components/UserFormDetails/index.tsx +34 -24
  181. package/themes/original/src/components/UserProfile/index.tsx +62 -8
  182. package/themes/original/src/components/UserProfileForm/index.tsx +20 -18
  183. package/themes/original/src/components/UserVerification/index.tsx +178 -192
  184. package/themes/original/src/components/VerifyPhone/index.tsx +10 -7
  185. package/themes/original/src/components/VerifyPhone/styles.tsx +2 -1
  186. package/themes/original/src/components/Wallets/index.tsx +76 -9
  187. package/themes/original/src/components/Wallets/styles.tsx +21 -0
  188. package/themes/original/src/components/shared/HeaderTitle.tsx +21 -0
  189. package/themes/original/src/components/shared/OModal.tsx +4 -2
  190. package/themes/original/src/components/shared/index.tsx +2 -0
  191. package/themes/original/src/config/constants.tsx +6 -6
  192. package/themes/original/src/types/index.tsx +132 -9
  193. package/themes/original/src/utils/index.tsx +28 -2
  194. package/themes/single-business/src/components/AddressList/index.tsx +1 -1
  195. package/themes/single-business/src/components/OrderTypeSelector/index.tsx +1 -1
  196. package/themes/single-business/src/components/UserProfile/index.tsx +1 -1
  197. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -11,6 +11,7 @@ import {
11
11
  Table,
12
12
  OrderBill,
13
13
  Total,
14
+ OSRow,
14
15
  } from './styles';
15
16
 
16
17
  import { ProductItemAccordion } from '../ProductItemAccordion';
@@ -75,11 +76,53 @@ export const OrderContentComponent = (props: OrderContent) => {
75
76
  }
76
77
  })
77
78
 
79
+ const getIncludedTaxes = () => {
80
+ if (!order?.taxes) return 0
81
+ if (order?.taxes?.length === 0) {
82
+ return order.tax_type === 1 ? order?.summary?.tax ?? 0 : 0
83
+ } else {
84
+ return order?.taxes.reduce((taxIncluded: number, tax: any) => {
85
+ return taxIncluded + (tax.type === 1 ? tax.summary?.tax : 0)
86
+ }, 0)
87
+ }
88
+ }
89
+
90
+ const getIncludedTaxesDiscounts = () => {
91
+ return order?.taxes?.filter((tax: any) => tax?.type === 1)?.reduce((carry: number, tax: any) => carry + (tax?.summary?.tax_after_discount ?? tax?.summary?.tax), 0)
92
+ }
93
+
78
94
  return (
79
95
  <OrderContent isOrderGroup={isOrderGroup} lastOrder={lastOrder}>
80
96
  {isOrderGroup && (
81
97
  <OText size={18}>{t('ORDER', 'Order')} #{isOrderGroup ? order?.order_group_id : order?.id}</OText>
82
98
  )}
99
+
100
+ {order?.metafields?.length > 0 && (
101
+ <OrderBusiness>
102
+ <OText style={{ marginBottom: 5 }} size={16} weight="600">
103
+ {t('CUSTOM_FIELDS', 'Custom fields')}
104
+ </OText>
105
+
106
+ {order.metafields.map((field: any) => (
107
+ <View
108
+ key={field.id}
109
+ style={{
110
+ width: '100%',
111
+ flexDirection: 'row',
112
+ marginBottom: 5
113
+ }}
114
+ >
115
+ <OText style={{ width: '50%' }}>
116
+ {field.key}
117
+ </OText>
118
+ <OText style={{ width: '45%', textAlign: 'right' }}>
119
+ {field.value}
120
+ </OText>
121
+ </View>
122
+ ))}
123
+ </OrderBusiness>
124
+ )}
125
+
83
126
  <OrderBusiness>
84
127
  <OText style={{ marginBottom: 5 }} size={16} weight="600">
85
128
  {t('BUSINESS_DETAILS', 'Business details')}
@@ -280,15 +323,21 @@ export const OrderContentComponent = (props: OrderContent) => {
280
323
  {order?.customer?.zipcode}
281
324
  </OText>
282
325
  )}
326
+
327
+ {!!order?.on_behalf_of && (
328
+ <OText numberOfLines={1} mBottom={4} ellipsizeMode="tail">
329
+ {t('ON_BEHALF_OF', 'On behalf of')}{': '} {order?.on_behalf_of}
330
+ </OText>
331
+ )}
283
332
  {((order?.delivery_option !== undefined && order?.delivery_type === 1) || !!order?.comment) && (
284
- <View style={{marginTop: 10}}>
333
+ <View style={{ marginTop: 10 }}>
285
334
  {order?.delivery_option !== undefined && order?.delivery_type === 1 && (
286
335
  <OText>
287
336
  {order?.delivery_option?.name}
288
337
  </OText>
289
338
  )}
290
339
  {!!order?.comment && (
291
- <OText style={{fontStyle: 'italic', opacity: 0.6, marginBottom: 5}}>
340
+ <OText style={{ fontStyle: 'italic', opacity: 0.6, marginBottom: 5 }}>
292
341
  {order?.comment}
293
342
  </OText>
294
343
  )}
@@ -323,84 +372,109 @@ export const OrderContentComponent = (props: OrderContent) => {
323
372
  <Table>
324
373
  <OText mBottom={4}>{t('SUBTOTAL', 'Subtotal')}</OText>
325
374
  <OText mBottom={4}>
326
- {parsePrice(
327
- order.tax_type === 1
328
- ? order?.summary?.subtotal + order?.summary?.tax ?? 0
329
- : order?.summary?.subtotal ?? 0,
330
- )}
375
+ {parsePrice(((order?.summary?.subtotal ?? order?.subtotal) + getIncludedTaxes()))}
331
376
  </OText>
332
377
  </Table>
333
-
334
- {order?.tax_type !== 1 && (
378
+ {(order?.summary?.discount > 0 ?? order?.discount > 0) && order?.offers?.length === 0 && (
379
+ <Table>
380
+ {order?.offer_type === 1 ? (
381
+ <OText mBottom={4}>
382
+ {t('DISCOUNT', theme?.defaultLanguages?.DISCOUNT || 'Discount')}{' '}
383
+ <OText>{`(${verifyDecimals(order?.offer_rate, parsePrice)}%)`}</OText>
384
+ </OText>
385
+ ) : (
386
+ <OText mBottom={4}>{t('DISCOUNT', theme?.defaultLanguages?.DISCOUNT || 'Discount')}</OText>
387
+ )}
388
+ <OText>- {parsePrice(order?.summary?.discount ?? order?.discount)}</OText>
389
+ </Table>
390
+ )}
391
+ {
392
+ order?.offers?.length > 0 && order?.offers?.filter((offer: any) => offer?.target === 1)?.map((offer: any) => (
393
+ <Table key={offer.id}>
394
+ <OSRow>
395
+ <OText mBottom={4}>
396
+ {offer.name}
397
+ {offer.rate_type === 1 && (
398
+ <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
399
+ )}
400
+ </OText>
401
+ </OSRow>
402
+ <OText mBottom={4}>- {parsePrice(offer?.summary?.discount)}</OText>
403
+ </Table>
404
+ ))
405
+ }
406
+ {order?.summary?.subtotal_with_discount > 0 && order?.summary?.discount > 0 && order?.summary?.total >= 0 && (
407
+ <Table>
408
+ <OText mBottom={4}>{t('SUBTOTAL_WITH_DISCOUNT', 'Subtotal with discount')}</OText>
409
+ {order?.tax_type === 1 ? (
410
+ <OText mBottom={4}>{parsePrice((order?.summary?.subtotal_with_discount + getIncludedTaxesDiscounts() ?? 0))}</OText>
411
+ ) : (
412
+ <OText mBottom={4}>{parsePrice(order?.summary?.subtotal_with_discount ?? 0)}</OText>
413
+ )}
414
+ </Table>
415
+ )}
416
+ {order?.taxes?.length === 0 && order?.tax_type === 2 && order?.summary?.tax > 0 && (
335
417
  <Table>
336
418
  <OText mBottom={4}>
337
- {t('TAX', 'Tax')}
338
- {`(${verifyDecimals(
339
- order?.summary?.tax_rate,
340
- parseNumber,
341
- )}%)`}
419
+ {t('TAX', 'Tax')} {`(${verifyDecimals(order?.tax, parseNumber)}%)`}
342
420
  </OText>
343
-
344
421
  <OText mBottom={4}>
345
422
  {parsePrice(order?.summary?.tax ?? 0)}
346
423
  </OText>
347
- </Table >
424
+ </Table>
348
425
  )}
349
-
350
426
  {
351
- order?.summary?.discount > 0 && (
427
+ order?.fees?.length === 0 && order?.summary?.service_fee > 0 && (
352
428
  <Table>
353
- {order?.offer_type === 1 ? (
354
- <OText mBottom={4}>
355
- <OText>{t('DISCOUNT', 'Discount')}</OText>
356
-
357
- <OText>
358
- {`(${verifyDecimals(
359
- order?.offer_rate,
360
- parsePrice,
361
- )}%)`}
362
- </OText>
363
- </OText>
364
- ) : (
365
- <OText mBottom={4}>{t('DISCOUNT', 'Discount')}</OText>
366
- )}
367
-
368
429
  <OText mBottom={4}>
369
- - {parsePrice(order?.summary?.discount)}
430
+ {t('SERVICE_FEE', 'Service fee')}
431
+ {`(${verifyDecimals(order?.service_fee, parseNumber)}%)`}
370
432
  </OText>
433
+ <OText mBottom={4}>{parsePrice(order?.summary?.service_fee ?? 0)}</OText>
371
434
  </Table>
372
435
  )
373
436
  }
374
-
375
437
  {
376
- order?.summary?.subtotal_with_discount > 0 &&
377
- order?.summary?.discount > 0 &&
378
- order?.summary?.total >= 0 && (
379
- <Table>
380
- <OText mBottom={4}>
381
- {t(
382
- 'SUBTOTAL_WITH_DISCOUNT',
383
- 'Subtotal with discount',
384
- )}
385
- </OText>
386
- {order?.tax_type === 1 ? (
438
+ order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0).map((tax: any) => (
439
+ <Table key={tax.id}>
440
+ <OSRow>
387
441
  <OText mBottom={4}>
388
- {parsePrice(
389
- order?.summary?.subtotal_with_discount +
390
- order?.summary?.tax ?? 0,
391
- )}
442
+ {tax.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
443
+ {`(${verifyDecimals(tax?.rate, parseNumber)}%)`}{' '}
392
444
  </OText>
393
- ) : (
445
+ </OSRow>
446
+ <OText mBottom={4}>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0)}</OText>
447
+ </Table>
448
+ ))
449
+ }
450
+ {
451
+ order?.fees?.length > 0 && order?.fees?.filter((fee: any) => !(fee.fixed === 0 && fee.percentage === 0))?.map((fee: any) => (
452
+ <Table key={fee.id}>
453
+ <OSRow>
454
+ <OText mBottom={4}>
455
+ {fee.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
456
+ ({fee?.fixed > 0 && `${parsePrice(fee?.fixed)} + `}{fee.percentage}%){' '}
457
+ </OText>
458
+ </OSRow>
459
+ <OText mBottom={4}>{parsePrice(fee?.summary?.fixed + (fee?.summary?.percentage_after_discount ?? fee?.summary?.percentage) ?? 0)}</OText>
460
+ </Table>
461
+ ))
462
+ }
463
+ {
464
+ order?.offers?.length > 0 && order?.offers?.filter((offer: any) => offer?.target === 3)?.map((offer: any) => (
465
+ <Table key={offer.id}>
466
+ <OSRow>
394
467
  <OText mBottom={4}>
395
- {parsePrice(
396
- order?.summary?.subtotal_with_discount ?? 0,
468
+ {offer.name}
469
+ {offer.rate_type === 1 && (
470
+ <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
397
471
  )}
398
472
  </OText>
399
- )}
473
+ </OSRow>
474
+ <OText mBottom={4}>- {parsePrice(offer?.summary?.discount)}</OText>
400
475
  </Table>
401
- )
476
+ ))
402
477
  }
403
-
404
478
  {
405
479
  order?.summary?.delivery_price > 0 && (
406
480
  <Table>
@@ -414,41 +488,35 @@ export const OrderContentComponent = (props: OrderContent) => {
414
488
  </Table>
415
489
  )
416
490
  }
417
-
418
- <Table>
419
- <OText mBottom={4}>
420
- {t('DRIVER_TIP', 'Driver tip')}{' '}
421
- {order?.summary?.driver_tip > 0 &&
422
- parseInt(configs?.driver_tip_type?.value, 10) === 2 &&
423
- !parseInt(configs?.driver_tip_use_custom?.value, 10) &&
424
- `(${verifyDecimals(
425
- order?.summary?.driver_tip,
426
- parseNumber,
427
- )}%)`}
428
- </OText>
429
-
430
- <OText mBottom={4}>
431
- {parsePrice(order?.summary?.driver_tip ?? 0)}
432
- </OText>
433
- </Table>
434
-
435
491
  {
436
- order?.summary?.service_fee > 0 && (
437
- <Table>
438
- <OText mBottom={4}>
439
- {t('SERVICE_FEE', 'Service Fee')}{' '}
440
- {`(${verifyDecimals(
441
- order?.summary?.service_fee,
442
- parseNumber,
443
- )}%)`}
444
- </OText>
445
-
446
- <OText mBottom={4}>
447
- {parsePrice(order?.summary?.service_fee)}
448
- </OText>
492
+ order?.offers?.length > 0 && order?.offers?.filter((offer: any) => offer?.target === 2)?.map((offer: any) => (
493
+ <Table key={offer.id}>
494
+ <OSRow>
495
+ <OText mBottom={4}>
496
+ {offer.name}
497
+ {offer.rate_type === 1 && (
498
+ <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
499
+ )}
500
+ </OText>
501
+ </OSRow>
502
+ <OText mBottom={4}>- {parsePrice(offer?.summary?.discount)}</OText>
449
503
  </Table>
450
- )
504
+ ))
451
505
  }
506
+ {order?.summary?.driver_tip > 0 && (
507
+ <Table>
508
+ <OText mBottom={4}>
509
+ {t('DRIVER_TIP', 'Driver tip')}
510
+ {order?.summary?.driver_tip > 0 &&
511
+ parseInt(configs?.driver_tip_type?.value, 10) === 2 &&
512
+ !parseInt(configs?.driver_tip_use_custom?.value, 10) &&
513
+ (
514
+ `(${verifyDecimals(order?.summary?.driver_tip, parseNumber)}%)`
515
+ )}
516
+ </OText>
517
+ <OText mBottom={4}>{parsePrice(order?.summary?.driver_tip ?? order?.totalDriverTip)}</OText>
518
+ </Table>
519
+ )}
452
520
 
453
521
  <Total style={{ paddingBottom: 10 }}>
454
522
  <Table>
@@ -460,7 +528,7 @@ export const OrderContentComponent = (props: OrderContent) => {
460
528
  mBottom={4}
461
529
  style={styles.textBold}
462
530
  color={theme.colors.primary}>
463
- {parsePrice(order?.summary?.total ?? 0)}
531
+ {parsePrice(order?.summary?.total ?? order?.total)}
464
532
  </OText>
465
533
  </Table>
466
534
  </Total>
@@ -268,6 +268,12 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
268
268
  <OText size={13} weight='bold'>{`${t('ORDER_TYPE', 'Order Type')}: `}</OText>
269
269
  {orderTypes(order.delivery_type)}
270
270
  </OText>
271
+ {order?.delivery_option && (
272
+ <OText size={13}>
273
+ <OText size={13} weight='bold'>{`${t('DELIVERY_PREFERENCE', 'Delivery Preference')}: `}</OText>
274
+ {order?.delivery_option?.name}
275
+ </OText>
276
+ )}
271
277
  {order?.payment_events?.length > 0 && (
272
278
  <View>
273
279
  <OText size={13}>
@@ -91,3 +91,10 @@ export const AssignDriver = styled.View`
91
91
  padding-vertical: 10px;
92
92
  margin-bottom: 10px;
93
93
  `;
94
+
95
+ export const OSRow = styled.View`
96
+ flex-direction: row;
97
+ overflow: hidden;
98
+ width: 70%;
99
+ flex-wrap: wrap;
100
+ `
@@ -77,6 +77,7 @@ const OrdersListManagerUI = (props: OrdersOptionParams) => {
77
77
  const [openSearchModal, setOpenSearchModal] = useState(false)
78
78
  const [openSLASettingModal, setOpenSLASettingModal] = useState(false)
79
79
  const [slaSettingTime, setSlaSettingTime] = useState(6000)
80
+ const [configState] = useConfig()
80
81
  const [currentDeliveryType, setCurrentDeliveryType] = useState('Delivery')
81
82
  const [search, setSearch] = useState(defaultSearchList)
82
83
  const [selectedTabStatus, setSelectedTabStatus] = useState<any>([])
@@ -311,55 +312,57 @@ const OrdersListManagerUI = (props: OrdersOptionParams) => {
311
312
  />
312
313
  </IconWrapper>
313
314
  </View>
314
- <View style={styles.SLAwrapper}>
315
- <View style={{ flex: 0.5 }}>
316
- <OButton
317
- text={t('SLA_SETTING', 'SLA’s Settings')}
318
- textStyle={{ color: theme.colors.backArrow }}
319
- imgRightSrc={null}
320
- style={{
321
- backgroundColor: theme.colors.inputChat,
322
- borderRadius: 7.6,
323
- zIndex: 10,
324
- borderWidth: 0,
325
- minHeight: 40
326
- }}
327
- onClick={onClickSetting}
328
- />
329
- </View>
330
- <View style={{ width: 10, height: '100%' }} />
331
- <View style={{ flex: 0.5, justifyContent: 'center' }}>
332
- <SelectDropdown
333
- defaultButtonText={t('SLA', 'SLA\'s')}
334
- data={preorderTypeList}
335
- onSelect={(selectedItem, index) => {
336
- onFiltered && onFiltered({ ...search, timeStatus: selectedItem?.key })
337
- }}
338
- buttonTextAfterSelection={(selectedItem, index) => {
339
- return selectedItem.name
340
- }}
341
- rowTextForSelection={(item, index) => {
342
- return item.key
343
- }}
344
- buttonStyle={styles.selectOption}
345
- buttonTextStyle={styles.buttonTextStyle}
346
- renderDropdownIcon={isOpened => {
347
- return <FeatherIcon name={isOpened ? 'chevron-up' : 'chevron-down'} color={'#444'} size={18} />;
348
- }}
349
- dropdownStyle={styles.dropdownStyle}
350
- dropdownOverlayColor='transparent'
351
- rowStyle={styles.rowStyle}
352
- renderCustomizedRowChild={(item, index) => {
353
- return (
354
- <SlaOption>
355
- {index !== 0 && <OrderStatus timeState={item?.key} />}
356
- <View><OText size={14} color={'#748194'} >{item?.name}</OText></View>
357
- </SlaOption>
358
- );
359
- }}
360
- />
315
+ {configState?.configs?.order_deadlines_enabled?.value === '1' && (
316
+ <View style={styles.SLAwrapper}>
317
+ <View style={{ flex: 0.5 }}>
318
+ <OButton
319
+ text={t('SLA_SETTING', 'SLA’s Settings')}
320
+ textStyle={{ color: theme.colors.backArrow }}
321
+ imgRightSrc={null}
322
+ style={{
323
+ backgroundColor: theme.colors.inputChat,
324
+ borderRadius: 7.6,
325
+ zIndex: 10,
326
+ borderWidth: 0,
327
+ minHeight: 40
328
+ }}
329
+ onClick={onClickSetting}
330
+ />
331
+ </View>
332
+ <View style={{ width: 10, height: '100%' }} />
333
+ <View style={{ flex: 0.5, justifyContent: 'center' }}>
334
+ <SelectDropdown
335
+ defaultButtonText={t('SLA', 'SLA\'s')}
336
+ data={preorderTypeList}
337
+ onSelect={(selectedItem, index) => {
338
+ onFiltered && onFiltered({ ...search, timeStatus: selectedItem?.key })
339
+ }}
340
+ buttonTextAfterSelection={(selectedItem, index) => {
341
+ return selectedItem.name
342
+ }}
343
+ rowTextForSelection={(item, index) => {
344
+ return item.key
345
+ }}
346
+ buttonStyle={styles.selectOption}
347
+ buttonTextStyle={styles.buttonTextStyle}
348
+ renderDropdownIcon={isOpened => {
349
+ return <FeatherIcon name={isOpened ? 'chevron-up' : 'chevron-down'} color={'#444'} size={18} />;
350
+ }}
351
+ dropdownStyle={styles.dropdownStyle}
352
+ dropdownOverlayColor='transparent'
353
+ rowStyle={styles.rowStyle}
354
+ renderCustomizedRowChild={(item, index) => {
355
+ return (
356
+ <SlaOption>
357
+ {index !== 0 && <OrderStatus timeState={item?.key} />}
358
+ <View><OText size={14} color={'#748194'} >{item?.name}</OText></View>
359
+ </SlaOption>
360
+ );
361
+ }}
362
+ />
363
+ </View>
361
364
  </View>
362
- </View>
365
+ )}
363
366
 
364
367
  <Sides>
365
368
  <LeftSide>
@@ -614,7 +617,7 @@ const OrdersListManagerUI = (props: OrdersOptionParams) => {
614
617
  </RightSide>
615
618
  </Sides>
616
619
 
617
- <NewOrderNotification />
620
+ <NewOrderNotification isBusinessApp={isBusinessApp} />
618
621
  {(openSearchModal || openSLASettingModal) && (
619
622
  <OModal open={openSearchModal || openSLASettingModal} entireModal customClose>
620
623
  <ModalContainer
@@ -110,6 +110,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
110
110
  const theme = useTheme();
111
111
  const [, t] = useLanguage();
112
112
  const [{ parseDate }] = useUtils()
113
+ const [configState] = useConfig()
113
114
  const [orientationState] = useDeviceOrientation();
114
115
  const [, { showToast }] = useToast();
115
116
  const [openSearchModal, setOpenSearchModal] = useState(false)
@@ -439,55 +440,57 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
439
440
  />
440
441
  </IconWrapper>
441
442
  </View>
442
- <View style={styles.SLAwrapper}>
443
- <View style={{ flex: 0.5 }}>
444
- <OButton
445
- text={t('SLA_SETTING', 'SLA’s Settings')}
446
- textStyle={{ color: theme.colors.backArrow }}
447
- imgRightSrc={null}
448
- style={{
449
- backgroundColor: theme.colors.inputChat,
450
- borderRadius: 7.6,
451
- zIndex: 10,
452
- borderWidth: 0,
453
- minHeight: 40
454
- }}
455
- onClick={onClickSetting}
456
- />
457
- </View>
458
- <View style={{ width: 10, height: '100%' }} />
459
- <View style={{ flex: 0.5, justifyContent: 'center' }}>
460
- <SelectDropdown
461
- defaultButtonText={t('SLA', 'SLA\'s')}
462
- data={preorderTypeList}
463
- onSelect={(selectedItem, index) => {
464
- onFiltered && onFiltered({ ...search, timeStatus: selectedItem?.key })
465
- }}
466
- buttonTextAfterSelection={(selectedItem, index) => {
467
- return selectedItem.name
468
- }}
469
- rowTextForSelection={(item, index) => {
470
- return item.key
471
- }}
472
- buttonStyle={styles.selectOption}
473
- buttonTextStyle={styles.buttonTextStyle}
474
- renderDropdownIcon={isOpened => {
475
- return <FeatherIcon name={isOpened ? 'chevron-up' : 'chevron-down'} color={'#444'} size={18} />;
476
- }}
477
- dropdownStyle={styles.dropdownStyle}
478
- dropdownOverlayColor='transparent'
479
- rowStyle={styles.rowStyle}
480
- renderCustomizedRowChild={(item, index) => {
481
- return (
482
- <SlaOption>
483
- {index !== 0 && <OrderStatus timeState={item?.key} />}
484
- <View><OText size={14} color={'#748194'} >{item?.name}</OText></View>
485
- </SlaOption>
486
- );
487
- }}
488
- />
443
+ {configState?.configs?.order_deadlines_enabled?.value === '1' && (
444
+ <View style={styles.SLAwrapper}>
445
+ <View style={{ flex: 0.5 }}>
446
+ <OButton
447
+ text={t('SLA_SETTING', 'SLA’s Settings')}
448
+ textStyle={{ color: theme.colors.backArrow }}
449
+ imgRightSrc={null}
450
+ style={{
451
+ backgroundColor: theme.colors.inputChat,
452
+ borderRadius: 7.6,
453
+ zIndex: 10,
454
+ borderWidth: 0,
455
+ minHeight: 40
456
+ }}
457
+ onClick={onClickSetting}
458
+ />
459
+ </View>
460
+ <View style={{ width: 10, height: '100%' }} />
461
+ <View style={{ flex: 0.5, justifyContent: 'center' }}>
462
+ <SelectDropdown
463
+ defaultButtonText={t('SLA', 'SLA\'s')}
464
+ data={preorderTypeList}
465
+ onSelect={(selectedItem, index) => {
466
+ onFiltered && onFiltered({ ...search, timeStatus: selectedItem?.key })
467
+ }}
468
+ buttonTextAfterSelection={(selectedItem, index) => {
469
+ return selectedItem.name
470
+ }}
471
+ rowTextForSelection={(item, index) => {
472
+ return item.key
473
+ }}
474
+ buttonStyle={styles.selectOption}
475
+ buttonTextStyle={styles.buttonTextStyle}
476
+ renderDropdownIcon={isOpened => {
477
+ return <FeatherIcon name={isOpened ? 'chevron-up' : 'chevron-down'} color={'#444'} size={18} />;
478
+ }}
479
+ dropdownStyle={styles.dropdownStyle}
480
+ dropdownOverlayColor='transparent'
481
+ rowStyle={styles.rowStyle}
482
+ renderCustomizedRowChild={(item, index) => {
483
+ return (
484
+ <SlaOption>
485
+ {index !== 0 && <OrderStatus timeState={item?.key} />}
486
+ <View><OText size={14} color={'#748194'} >{item?.name}</OText></View>
487
+ </SlaOption>
488
+ );
489
+ }}
490
+ />
491
+ </View>
489
492
  </View>
490
- </View>
493
+ )}
491
494
  <FiltersTab>
492
495
  <ScrollView
493
496
  ref={scrollRefTab}
@@ -722,8 +725,11 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
722
725
  </ScrollView>
723
726
  </View>
724
727
  {/* </GestureRecognizer> */}
725
-
726
- <NewOrderNotification />
728
+
729
+ {isBusinessApp && (
730
+ <NewOrderNotification isBusinessApp={isBusinessApp} />
731
+ )}
732
+
727
733
  {(openSearchModal || openSLASettingModal) && (
728
734
  <OModal open={openSearchModal || openSLASettingModal} entireModal customClose>
729
735
  <ModalContainer
@@ -926,6 +932,7 @@ export const Timer = () => {
926
932
 
927
933
  export const OrdersOption = (props: OrdersOptionParams) => {
928
934
  const [, t] = useLanguage();
935
+ const [configState] = useConfig()
929
936
  const theme = useTheme()
930
937
  const ordersProps = {
931
938
  ...props,