ordering-ui-react-native 0.21.79 → 0.21.80-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 (164) hide show
  1. package/package.json +6 -7
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessesListing/index.tsx +1 -1
  4. package/src/components/PaymentOptionsWebView/index.tsx +1 -0
  5. package/src/components/StripeMethodForm/index.tsx +6 -4
  6. package/src/components/VerifyPhone/styles.tsx +1 -2
  7. package/src/types/index.tsx +3 -1
  8. package/themes/business/index.tsx +4 -0
  9. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -6
  10. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
  11. package/themes/business/src/components/BusinessProductList/index.tsx +2 -1
  12. package/themes/business/src/components/Chat/index.tsx +3 -1
  13. package/themes/business/src/components/DriverMap/index.tsx +44 -27
  14. package/themes/business/src/components/GoogleMap/index.tsx +15 -8
  15. package/themes/business/src/components/Home/index.tsx +5 -1
  16. package/themes/business/src/components/LanguageSelector/index.tsx +2 -3
  17. package/themes/business/src/components/LanguageSelector/lang_country.json +515 -70
  18. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  19. package/themes/business/src/components/MapView/index.tsx +36 -17
  20. package/themes/business/src/components/NewOrderNotification/index.tsx +74 -24
  21. package/themes/business/src/components/OrderDetails/Business.tsx +65 -7
  22. package/themes/business/src/components/OrderDetails/Delivery.tsx +35 -20
  23. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +110 -40
  24. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +61 -35
  25. package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
  26. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +220 -0
  27. package/themes/business/src/components/OrderSummary/index.tsx +223 -73
  28. package/themes/business/src/components/OrdersListManager/index.tsx +9 -1
  29. package/themes/business/src/components/OrdersOption/index.tsx +247 -159
  30. package/themes/business/src/components/PhoneInputNumber/index.tsx +8 -5
  31. package/themes/business/src/components/PreviousMessages/index.tsx +12 -0
  32. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +25 -15
  33. package/themes/business/src/components/PreviousOrders/index.tsx +5 -3
  34. package/themes/business/src/components/PrinterEdition/index.tsx +363 -0
  35. package/themes/business/src/components/PrinterEdition/styles.tsx +61 -0
  36. package/themes/business/src/components/PrinterSettings/index.tsx +267 -0
  37. package/themes/business/src/components/PrinterSettings/styles.tsx +30 -0
  38. package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
  39. package/themes/business/src/components/Sessions/index.tsx +187 -0
  40. package/themes/business/src/components/Sessions/styles.tsx +20 -0
  41. package/themes/business/src/components/StoresList/index.tsx +2 -2
  42. package/themes/business/src/components/UserFormDetails/index.tsx +111 -107
  43. package/themes/business/src/components/UserProfileForm/index.tsx +84 -47
  44. package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
  45. package/themes/business/src/components/shared/OInput.tsx +2 -0
  46. package/themes/business/src/components/shared/OTextarea.tsx +8 -9
  47. package/themes/business/src/hooks/useLocation.tsx +5 -4
  48. package/themes/business/src/types/index.tsx +23 -5
  49. package/themes/business/src/utils/index.tsx +19 -1
  50. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  51. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  52. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  53. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  54. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  55. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  56. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  57. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  58. package/themes/original/index.tsx +13 -1
  59. package/themes/original/src/components/AddressDetails/index.tsx +20 -10
  60. package/themes/original/src/components/AddressForm/index.tsx +32 -17
  61. package/themes/original/src/components/AddressList/index.tsx +8 -7
  62. package/themes/original/src/components/AnalyticsSegment/index.tsx +6 -6
  63. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  64. package/themes/original/src/components/BusinessBasicInformation/index.tsx +6 -9
  65. package/themes/original/src/components/BusinessController/index.tsx +12 -7
  66. package/themes/original/src/components/BusinessItemAccordion/index.tsx +13 -5
  67. package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +2 -3
  68. package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +1 -3
  69. package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
  70. package/themes/original/src/components/BusinessPreorder/index.tsx +20 -15
  71. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +5 -5
  72. package/themes/original/src/components/BusinessProductsList/index.tsx +2 -2
  73. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  74. package/themes/original/src/components/BusinessProductsListing/index.tsx +18 -6
  75. package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
  76. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
  77. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +1 -1
  78. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
  79. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  80. package/themes/original/src/components/Cart/index.tsx +38 -11
  81. package/themes/original/src/components/CartContent/index.tsx +21 -8
  82. package/themes/original/src/components/Checkout/index.tsx +108 -60
  83. package/themes/original/src/components/CitiesControl/index.tsx +0 -3
  84. package/themes/original/src/components/CouponControl/index.tsx +1 -3
  85. package/themes/original/src/components/DriverTips/index.tsx +1 -3
  86. package/themes/original/src/components/Favorite/index.tsx +1 -5
  87. package/themes/original/src/components/FavoriteList/index.tsx +0 -1
  88. package/themes/original/src/components/ForgotPasswordForm/index.tsx +5 -7
  89. package/themes/original/src/components/GiftCard/GiftCardOrdersList/index.tsx +64 -0
  90. package/themes/original/src/components/GiftCard/GiftCardOrdersList/styles.tsx +8 -0
  91. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +15 -17
  92. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +3 -7
  93. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +24 -32
  94. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +7 -9
  95. package/themes/original/src/components/GiftCard/SingleGiftCard/index.tsx +101 -0
  96. package/themes/original/src/components/GiftCard/SingleGiftCard/styles.tsx +4 -0
  97. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +82 -0
  98. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/styles.tsx +9 -0
  99. package/themes/original/src/components/GoogleMap/index.tsx +39 -18
  100. package/themes/original/src/components/Help/index.tsx +2 -0
  101. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
  102. package/themes/original/src/components/Home/index.tsx +2 -10
  103. package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
  104. package/themes/original/src/components/LoginForm/index.tsx +4 -7
  105. package/themes/original/src/components/MessageListing/index.tsx +1 -0
  106. package/themes/original/src/components/Messages/index.tsx +8 -7
  107. package/themes/original/src/components/MomentOption/index.tsx +13 -2
  108. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -3
  109. package/themes/original/src/components/MultiCheckout/index.tsx +139 -87
  110. package/themes/original/src/components/MultiOrdersDetails/index.tsx +2 -1
  111. package/themes/original/src/components/MyOrders/index.tsx +21 -26
  112. package/themes/original/src/components/NavBar/index.tsx +4 -2
  113. package/themes/original/src/components/NetworkError/index.tsx +0 -5
  114. package/themes/original/src/components/NotFoundSource/index.tsx +0 -3
  115. package/themes/original/src/components/OrderDetails/OrderEta.tsx +1 -1
  116. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +5 -7
  117. package/themes/original/src/components/OrderDetails/index.tsx +27 -10
  118. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  119. package/themes/original/src/components/OrderProgress/index.tsx +22 -3
  120. package/themes/original/src/components/OrderSummary/index.tsx +28 -9
  121. package/themes/original/src/components/OrderTypeSelector/index.tsx +7 -6
  122. package/themes/original/src/components/OrdersOption/index.tsx +2 -4
  123. package/themes/original/src/components/PaymentOptionStripe/index.tsx +0 -5
  124. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  125. package/themes/original/src/components/PaymentOptions/index.tsx +17 -9
  126. package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
  127. package/themes/original/src/components/PreviousOrders/index.tsx +1 -2
  128. package/themes/original/src/components/ProductForm/ActionButton.tsx +17 -20
  129. package/themes/original/src/components/ProductForm/index.tsx +107 -102
  130. package/themes/original/src/components/ProductItemAccordion/index.tsx +55 -49
  131. package/themes/original/src/components/ProductItemAccordion/styles.tsx +3 -4
  132. package/themes/original/src/components/ProductOptionSubOption/index.tsx +8 -1
  133. package/themes/original/src/components/ProfessionalProfile/index.tsx +4 -5
  134. package/themes/original/src/components/Promotions/index.tsx +6 -9
  135. package/themes/original/src/components/ReviewDriver/index.tsx +1 -1
  136. package/themes/original/src/components/ReviewOrder/index.tsx +2 -2
  137. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  138. package/themes/original/src/components/ReviewTrigger/index.tsx +2 -2
  139. package/themes/original/src/components/ServiceForm/index.tsx +52 -54
  140. package/themes/original/src/components/Sessions/index.tsx +3 -3
  141. package/themes/original/src/components/SignupForm/index.tsx +86 -78
  142. package/themes/original/src/components/SingleOrderCard/index.tsx +1 -2
  143. package/themes/original/src/components/SingleProductCard/index.tsx +3 -4
  144. package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
  145. package/themes/original/src/components/StripeCardForm/index.tsx +0 -3
  146. package/themes/original/src/components/StripeCardsList/index.tsx +10 -3
  147. package/themes/original/src/components/StripeElementsForm/index.tsx +77 -60
  148. package/themes/original/src/components/StripeElementsForm/naked.tsx +48 -1
  149. package/themes/original/src/components/StripeRedirectForm/index.tsx +0 -3
  150. package/themes/original/src/components/TaxInformation/index.tsx +3 -2
  151. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +10 -7
  152. package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +8 -3
  153. package/themes/original/src/components/UserDetails/index.tsx +3 -2
  154. package/themes/original/src/components/UserFormDetails/index.tsx +155 -131
  155. package/themes/original/src/components/UserProfile/index.tsx +11 -2
  156. package/themes/original/src/components/Wallets/index.tsx +6 -3
  157. package/themes/original/src/components/WebsocketStatus/index.tsx +169 -0
  158. package/themes/original/src/components/WebsocketStatus/styles.tsx +28 -0
  159. package/themes/original/src/components/shared/OAlert.tsx +2 -1
  160. package/themes/original/src/components/shared/OButton.tsx +5 -4
  161. package/themes/original/src/components/shared/OInput.tsx +4 -8
  162. package/themes/original/src/types/index.tsx +5 -1
  163. package/themes/original/src/utils/index.tsx +12 -1
  164. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -13,6 +13,8 @@ import {
13
13
  OrderBill,
14
14
  Total,
15
15
  OSRow,
16
+ OrderVehicle,
17
+ OrderSpot,
16
18
  } from './styles';
17
19
 
18
20
  import { ProductItemAccordion } from '../ProductItemAccordion';
@@ -97,19 +99,21 @@ export const OrderContentComponent = (props: OrderContent) => {
97
99
  }
98
100
  })
99
101
 
100
- const getIncludedTaxes = () => {
102
+ const getIncludedTaxes = (isDeliveryFee?: boolean) => {
101
103
  if (!order?.taxes) return 0
102
104
  if (order?.taxes?.length === 0) {
103
105
  return order.tax_type === 1 ? order?.summary?.tax ?? 0 : 0
104
106
  } else {
105
107
  return order?.taxes.reduce((taxIncluded: number, tax: any) => {
106
- return taxIncluded + (tax.type === 1 ? tax.summary?.tax : 0)
108
+ return taxIncluded +
109
+ (((!isDeliveryFee && tax.type === 1 && tax.target === 'product') ||
110
+ (isDeliveryFee && tax.type === 1 && tax.target === 'delivery_fee')) ? tax.summary?.tax : 0)
107
111
  }, 0)
108
112
  }
109
113
  }
110
114
 
111
115
  const getIncludedTaxesDiscounts = () => {
112
- return order?.taxes?.filter((tax: any) => tax?.type === 1)?.reduce((carry: number, tax: any) => carry + (tax?.summary?.tax_after_discount ?? tax?.summary?.tax), 0)
116
+ return order?.taxes?.filter((tax: any) => tax?.type === 1 && tax?.target === 'product')?.reduce((carry: number, tax: any) => carry + (tax?.summary?.tax_after_discount ?? tax?.summary?.tax), 0)
113
117
  }
114
118
 
115
119
  const containsOnlyNumbers = (str: string) => {
@@ -219,8 +223,8 @@ export const OrderContentComponent = (props: OrderContent) => {
219
223
  <OLink
220
224
  PressStyle={styles.linkWithIcons}
221
225
  url={Platform.select({
222
- ios: `maps:0,0?q=${order?.business?.address}`,
223
- android: `geo:0,0?q=${order?.business?.address}`,
226
+ ios: `maps:0,0?q=${order?.business?.address}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
227
+ android: `geo:0,0?q=${order?.business?.address}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
224
228
  })}
225
229
  numberOfLines={2}
226
230
  shorcut={order?.business?.address}
@@ -230,7 +234,7 @@ export const OrderContentComponent = (props: OrderContent) => {
230
234
  )}
231
235
  {!!order?.business?.location && order?.customer?.location && (
232
236
  <OText>
233
- {t('DISTANCE_TO_THE_BUSINESS', 'Distance to the business')}: {transformDistance(calculateDistance(order?.business?.location, { latitude: order?.customer?.location?.lat, longitude: order?.customer?.location?.lng }), distanceUnit)} {t(distanceUnit.toUpperCase(), distanceUnit)}
237
+ {t('DISTANCE_TO_THE_BUSINESS', 'Distance to the business')}: {transformDistance(calculateDistance(order?.business?.location, { latitude: order?.customer?.location?.lat, longitude: order?.customer?.location?.lng }), distanceUnit)} {t(distanceUnit?.toUpperCase?.(), distanceUnit)}
234
238
  </OText>
235
239
  )}
236
240
  {!!order?.business?.address_notes && (
@@ -239,8 +243,8 @@ export const OrderContentComponent = (props: OrderContent) => {
239
243
  <OLink
240
244
  PressStyle={styles.linkWithIcons}
241
245
  url={Platform.select({
242
- ios: `maps:0,0?q=${order?.business?.address_notes}`,
243
- android: `geo:0,0?q=${order?.business?.address_notes}`,
246
+ ios: `maps:0,0?q=${order?.business?.address_notes}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
247
+ android: `geo:0,0?q=${order?.business?.address_notes}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
244
248
  })}
245
249
  shorcut={order?.business?.address_notes}
246
250
  TextStyle={styles.textLink}
@@ -360,8 +364,8 @@ export const OrderContentComponent = (props: OrderContent) => {
360
364
  <OLink
361
365
  PressStyle={{ ...styles.linkWithIcons, marginBottom: 0 }}
362
366
  url={Platform.select({
363
- ios: `maps:0,0?q=${order?.customer?.address}`,
364
- android: `geo:0,0?q=${order?.customer?.address}`,
367
+ ios: `maps:0,0?q=${order?.customer?.address}@${order?.customer?.location?.lat},${order?.customer?.location?.lng}`,
368
+ android: `geo:0,0?q=${order?.customer?.address}@${order?.customer?.location?.lat},${order?.customer?.location?.lng}`,
365
369
  })}
366
370
  onTextLayout={e => onTextLayout(e, 'customerAddress')}
367
371
  numberOfLines={isReadMore.customerAddress ? 20 : 2}
@@ -408,26 +412,16 @@ export const OrderContentComponent = (props: OrderContent) => {
408
412
  {t('ON_BEHALF_OF', 'On behalf of')}{': '} {order?.on_behalf_of}
409
413
  </OText>
410
414
  )}
411
- {((order?.delivery_option !== undefined && order?.delivery_type === 1) || !!order?.comment) && (
415
+ {(order?.delivery_option !== undefined && order?.delivery_type === 1) && (
412
416
  <View style={{ marginTop: 10 }}>
413
417
  {order?.delivery_option !== undefined && order?.delivery_type === 1 && (
414
418
  <OText>
415
- {t(order?.delivery_option?.name?.toUpperCase()?.replace(/ /g, '_'), order?.delivery_option?.name)}
419
+ {t(order?.delivery_option?.name?.toUpperCase?.()?.replace(/ /g, '_'), order?.delivery_option?.name)}
416
420
  </OText>
417
421
  )}
418
- {!!order?.comment && (
419
- <>
420
- <OText weight='500' style={{ marginBottom: 5 }}>
421
- {t('ORDER_COMMENT', 'Order Comment')}
422
- </OText>
423
- <OText style={{ fontStyle: 'italic', opacity: 0.6, marginBottom: 20 }}>
424
- {order?.comment}
425
- </OText>
426
- </>
427
- )}
428
422
  </View>
429
423
  )}
430
- {!order?.user_review && pastOrderStatuses.includes(order?.status) && (
424
+ {!order?.user_review && pastOrderStatuses.includes(order?.status) && order?.customer_id && (
431
425
  <OButton
432
426
  style={styles.btnReview}
433
427
  textStyle={{ color: theme.colors.white }}
@@ -439,10 +433,16 @@ export const OrderContentComponent = (props: OrderContent) => {
439
433
  </OrderCustomer>
440
434
 
441
435
  <OrderProducts>
442
- <OText style={{ marginBottom: 5 }} size={16} weight="600">
436
+ <OText style={{ marginBottom: 10 }} size={16} weight="600">
443
437
  {t('ORDER_DETAILS', 'Order Details')}
444
438
  </OText>
445
439
 
440
+ {!!order?.comment && (
441
+ <OText>
442
+ {`${t('ORDER_COMMENT', 'Order Comment')}: ${order?.comment}`}
443
+ </OText>
444
+ )}
445
+
446
446
  {order?.products?.length > 0 &&
447
447
  order?.products.map((product: any, i: number) => (
448
448
  <ProductItemAccordion
@@ -453,7 +453,7 @@ export const OrderContentComponent = (props: OrderContent) => {
453
453
  ))}
454
454
  </OrderProducts>
455
455
 
456
- <OrderBill>
456
+ <OrderBill vehicleExists={!!order?.vehicle}>
457
457
  <Table>
458
458
  <OText mBottom={4}>{t('SUBTOTAL', 'Subtotal')}</OText>
459
459
  <OText mBottom={4}>
@@ -478,7 +478,7 @@ export const OrderContentComponent = (props: OrderContent) => {
478
478
  <Table key={offer.id}>
479
479
  <OSRow>
480
480
  <OText mBottom={4}>
481
- {t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
481
+ {t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
482
482
  {offer.rate_type === 1 && (
483
483
  <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
484
484
  )}
@@ -520,11 +520,11 @@ export const OrderContentComponent = (props: OrderContent) => {
520
520
  )
521
521
  }
522
522
  {
523
- order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0).map((tax: any) => (
523
+ order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0 && tax?.target === 'product').map((tax: any) => (
524
524
  <Table key={tax.id}>
525
525
  <OSRow>
526
526
  <OText mBottom={4}>
527
- {t(tax?.name?.toUpperCase()?.replace(/ /g, '_'), tax?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
527
+ {t(tax?.name?.toUpperCase?.()?.replace(/ /g, '_'), tax?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
528
528
  {`(${verifyDecimals(tax?.rate, parseNumber)}%)`}{' '}
529
529
  </OText>
530
530
  </OSRow>
@@ -537,7 +537,7 @@ export const OrderContentComponent = (props: OrderContent) => {
537
537
  <Table key={fee.id}>
538
538
  <OSRow>
539
539
  <OText mBottom={4}>
540
- {t(fee?.name?.toUpperCase()?.replace(/ /g, '_'), fee?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
540
+ {t(fee?.name?.toUpperCase?.()?.replace(/ /g, '_'), fee?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
541
541
  ({fee?.fixed > 0 && `${parsePrice(fee?.fixed, { currency: order?.currency })} + `}{fee.percentage}%){' '}
542
542
  </OText>
543
543
  </OSRow>
@@ -550,7 +550,7 @@ export const OrderContentComponent = (props: OrderContent) => {
550
550
  <Table key={offer.id}>
551
551
  <OSRow>
552
552
  <OText mBottom={4}>
553
- {t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
553
+ {t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
554
554
  {offer.rate_type === 1 && (
555
555
  <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
556
556
  )}
@@ -561,24 +561,37 @@ export const OrderContentComponent = (props: OrderContent) => {
561
561
  ))
562
562
  }
563
563
  {
564
- typeof order?.summary?.delivery_price === 'number' && (
564
+ typeof order?.summary?.delivery_price === 'number' && order.delivery_type !== 2 && (
565
565
  <Table>
566
566
  <OText mBottom={4}>
567
567
  {t('DELIVERY_FEE', 'Delivery Fee')}
568
568
  </OText>
569
569
 
570
570
  <OText mBottom={4}>
571
- {parsePrice(order?.summary?.delivery_price, { currency: order?.currency })}
571
+ {parsePrice(order?.summary?.delivery_price + getIncludedTaxes(true), { currency: order?.currency })}
572
572
  </OText>
573
573
  </Table>
574
574
  )
575
575
  }
576
+ {
577
+ order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0 && tax?.target === 'delivery_fee').map((tax: any, i: number) => (
578
+ <Table key={`${tax.description}_${i}`}>
579
+ <OSRow>
580
+ <OText mBottom={4}>
581
+ {tax.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
582
+ {`(${verifyDecimals(tax?.rate, parseNumber)}%)`}
583
+ </OText>
584
+ </OSRow>
585
+ <OText mBottom={4}>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0)}</OText>
586
+ </Table>
587
+ ))
588
+ }
576
589
  {
577
590
  order?.offers?.length > 0 && order?.offers?.filter((offer: any) => offer?.target === 2)?.map((offer: any) => (
578
591
  <Table key={offer.id}>
579
592
  <OSRow>
580
593
  <OText mBottom={4}>
581
- {t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
594
+ {t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
582
595
  {offer.rate_type === 1 && (
583
596
  <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
584
597
  )}
@@ -588,7 +601,7 @@ export const OrderContentComponent = (props: OrderContent) => {
588
601
  </Table>
589
602
  ))
590
603
  }
591
- {(order?.summary?.driver_tip > 0 || order?.driver_tip > 0) && (
604
+ {(order?.summary?.driver_tip > 0 || order?.driver_tip > 0) && order.delivery_type !== 2 && (
592
605
  <Table>
593
606
  <OText mBottom={4}>
594
607
  {t('DRIVER_TIP', 'Driver tip')}
@@ -646,13 +659,12 @@ export const OrderContentComponent = (props: OrderContent) => {
646
659
  <OText>
647
660
  {event?.wallet_event
648
661
  ? walletName[event?.wallet_event?.wallet?.type]?.name
649
- : t(event?.paymethod?.name?.toUpperCase()?.replace(/ /g, '_'), event?.paymethod?.name)}
662
+ : event?.paymethod?.gateway
663
+ ? t(event?.paymethod?.gateway?.toUpperCase?.(), event?.paymethod?.name)
664
+ : order?.paymethod?.id === event?.paymethod_id
665
+ ? t(order?.paymethod?.gateway?.toUpperCase?.(), order?.paymethod?.name)
666
+ : ''}
650
667
  </OText>
651
- {/* {event?.data?.charge_id && (
652
- <OText>
653
- {`${t('CODE', 'Code')}: ${event?.data?.charge_id}`}
654
- </OText>
655
- )} */}
656
668
  </View>
657
669
  <OText>
658
670
  {(event?.paymethod?.gateway === 'cash' && order?.cash)
@@ -664,7 +676,65 @@ export const OrderContentComponent = (props: OrderContent) => {
664
676
  </View>
665
677
  </View>
666
678
  )}
679
+
667
680
  </OrderBill >
681
+
682
+ {!!order?.spot_number && (
683
+ <OrderSpot vehicleExists={!!order?.vehicle}>
684
+ <Table>
685
+ <OText style={{ marginBottom: 5 }}>
686
+ {t('SPOT_NUMBER', 'Spot number')}
687
+ </OText>
688
+ <OText style={{ marginBottom: 5 }}>
689
+ {order?.spot_number}
690
+ </OText>
691
+ </Table>
692
+ </OrderSpot>
693
+ )}
694
+
695
+ {!!order?.vehicle && (
696
+ <OrderVehicle>
697
+ <OText
698
+ style={{ marginBottom: 5 }}
699
+ size={16}
700
+ weight="600"
701
+ color={theme.colors.textGray}>
702
+ {t('VEHICLE', 'Vehicle')}
703
+ </OText>
704
+ <Table>
705
+ <OText style={{ marginBottom: 5 }}>
706
+ {t('CAR_REGISTRATION', 'Car registration')}
707
+ </OText>
708
+ <OText style={{ marginBottom: 5 }}>
709
+ {order?.vehicle?.car_registration}
710
+ </OText>
711
+ </Table>
712
+ <Table>
713
+ <OText style={{ marginBottom: 5 }}>
714
+ {t('COLOR', 'Color')}
715
+ </OText>
716
+ <OText style={{ marginBottom: 5 }}>
717
+ {order?.vehicle?.color}
718
+ </OText>
719
+ </Table>
720
+ <Table>
721
+ <OText style={{ marginBottom: 5 }}>
722
+ {t('MODEL', 'Model')}
723
+ </OText>
724
+ <OText style={{ marginBottom: 5 }}>
725
+ {order?.vehicle?.model}
726
+ </OText>
727
+ </Table>
728
+ <Table>
729
+ <OText style={{ marginBottom: 5 }}>
730
+ {t('TYPE', 'Type')}
731
+ </OText>
732
+ <OText style={{ marginBottom: 5 }}>
733
+ {order?.vehicle?.type}
734
+ </OText>
735
+ </Table>
736
+ </OrderVehicle>
737
+ )}
668
738
  <OModal
669
739
  open={openReviewModal}
670
740
  onClose={() => setOpenReviewModal(false)}
@@ -3,7 +3,9 @@ import React from 'react';
3
3
  //Styles
4
4
  import {
5
5
  Actions,
6
+ Dot,
6
7
  Header,
8
+ Messages,
7
9
  OrderHeader,
8
10
  } from './styles';
9
11
 
@@ -22,6 +24,8 @@ import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityI
22
24
  import {
23
25
  useLanguage,
24
26
  useUtils,
27
+ useConfig,
28
+ useSession
25
29
  } from 'ordering-components/native';
26
30
 
27
31
  interface OrderHeader {
@@ -34,6 +38,8 @@ interface OrderHeader {
34
38
  handleViewSummaryOrder?: any;
35
39
  handleCopyClipboard?: any
36
40
  isCustomView?: any
41
+ messages?: any
42
+ messagesReadList?: any
37
43
  }
38
44
 
39
45
  export const OrderHeaderComponent = (props: OrderHeader) => {
@@ -45,11 +51,20 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
45
51
  getOrderStatus,
46
52
  logisticOrderStatus,
47
53
  handleViewSummaryOrder,
48
- handleCopyClipboard
54
+ handleCopyClipboard,
55
+ messages,
56
+ messagesReadList
49
57
  } = props
50
58
  const theme = useTheme();
51
59
  const [, t] = useLanguage();
52
- const [{ parseDate }] = useUtils();
60
+ const [configState] = useConfig()
61
+ const [{ user }] = useSession()
62
+ const [{ parseDate, parsePrice }] = useUtils();
63
+ const paymethodsLength = order?.payment_events?.filter((item: any) => item.event === 'payment')?.length
64
+ const showExternalId = configState?.configs?.change_order_id?.value === '1'
65
+ const messagesReadIds = messagesReadList?.map((message: any) => message?.order_message_id)
66
+
67
+ const filteredMessages = messagesReadList?.length > 0 ? messages?.messages?.filter((message: any) => !messagesReadIds?.includes(message?.id)) : messages?.messages
53
68
 
54
69
  const styles = StyleSheet.create({
55
70
  icons: {
@@ -120,6 +135,30 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
120
135
  ? t('CURBSIDE', 'Curbside')
121
136
  : t('DRIVER_THRU', 'Driver thru')
122
137
 
138
+ const handlePaymethodsListString = () => {
139
+ const paymethodsList = order?.payment_events?.filter((item: any) => item.event === 'payment').map((paymethod: any) => {
140
+ return paymethod?.wallet_event
141
+ ? walletName[paymethod?.wallet_event?.wallet?.type]?.name
142
+ : paymethod?.paymethod?.gateway && paymethod?.paymethod?.gateway === 'cash' && order?.cash > 0
143
+ ? `${t(paymethod?.paymethod?.gateway?.toUpperCase(), paymethod?.paymethod?.name)} (${t('CASH_CHANGE_OF', 'Change of :amount:').replace(':amount:', parsePrice(order?.cash))})`
144
+ : paymethod?.paymethod?.gateway
145
+ ? t(paymethod?.paymethod?.gateway?.toUpperCase(), paymethod?.paymethod?.name)
146
+ : t(order?.paymethod?.gateway?.toUpperCase(), order?.paymethod?.name)
147
+ })
148
+ return paymethodsList.join(', ')
149
+ }
150
+
151
+ const deliveryDate = () => {
152
+ const dateString = order?.delivery_datetime_utc ?? order?.delivery_datetime
153
+ const currentDate = new Date();
154
+ const receivedDate: any = new Date(order?.delivery_datetime);
155
+
156
+ const formattedDate = receivedDate <= currentDate
157
+ ? `${t('ASAP_ABBREVIATION', 'ASAP')}(${parseDate(dateString, { utc: !!order?.delivery_datetime_utc })})`
158
+ : parseDate(dateString, { utc: !!order?.delivery_datetime_utc })
159
+ return formattedDate
160
+ }
161
+
123
162
  return (
124
163
  <>
125
164
  {!props.isCustomView && (
@@ -163,18 +202,20 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
163
202
  style={styles.icons}
164
203
  onClick={() => handleOpenMapView()}
165
204
  />
166
-
167
- <OIconButton
168
- icon={theme.images.general.messages}
169
- iconStyle={{
170
- width: 20,
171
- height: 20,
172
- tintColor: theme.colors.textGray,
173
- }}
174
- borderColor={theme.colors.clear}
175
- style={styles.icons}
176
- onClick={() => handleOpenMessagesForBusiness()}
177
- />
205
+ <Messages>
206
+ {filteredMessages?.filter((message: any) => message?.author_id !== user?.id && !message?.read)?.length > 0 && <Dot />}
207
+ <OIconButton
208
+ icon={theme.images.general.messages}
209
+ iconStyle={{
210
+ width: 20,
211
+ height: 20,
212
+ tintColor: theme.colors.textGray,
213
+ }}
214
+ borderColor={theme.colors.clear}
215
+ style={styles.icons}
216
+ onClick={() => handleOpenMessagesForBusiness()}
217
+ />
218
+ </Messages>
178
219
  </Actions>
179
220
  )}
180
221
  </Header>
@@ -182,16 +223,12 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
182
223
  <OrderHeader>
183
224
  {!props.isCustomView ? (
184
225
  <OText size={13} style={{ marginBottom: 5 }}>
185
- {order?.delivery_datetime_utc
186
- ? parseDate(order?.delivery_datetime_utc)
187
- : parseDate(order?.delivery_datetime, { utc: false })}
226
+ {deliveryDate()}
188
227
  </OText>
189
228
  ) : (
190
229
  <Header style={{ alignItems: 'center' }}>
191
230
  <OText size={13} style={{ marginBottom: 5 }}>
192
- {order?.delivery_datetime_utc
193
- ? parseDate(order?.delivery_datetime_utc)
194
- : parseDate(order?.delivery_datetime, { utc: false })}
231
+ {deliveryDate()}
195
232
  </OText>
196
233
 
197
234
  {(!order?.isLogistic || (!logisticOrderStatus?.includes(order?.status) && !order?.order_group)) && (
@@ -230,7 +267,6 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
230
267
  style={styles.icons}
231
268
  onClick={() => handleOpenMapView()}
232
269
  />
233
-
234
270
  <OIconButton
235
271
  icon={theme.images.general.messages}
236
272
  iconStyle={{
@@ -249,7 +285,7 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
249
285
 
250
286
  <OText numberOfLines={2} size={20} weight="600">
251
287
  <>
252
- {`${t('INVOICE_ORDER_NO', 'Order No.')} ${order?.id} `}
288
+ {`${t('INVOICE_ORDER_NO', 'Order No.')} ${showExternalId ? order?.external_id || order?.id : order?.id} `}
253
289
  {!order?.isLogistic && (!order?.order_group_id || !logisticOrderStatus?.includes(order?.status)) && (
254
290
  <>
255
291
  {t('IS', 'is')}{' '}
@@ -263,7 +299,7 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
263
299
  )}
264
300
  </>
265
301
  </OText>
266
- {order?.external_id && (
302
+ {order?.external_id && !showExternalId && (
267
303
  <OText size={13}>
268
304
  <OText size={13} weight='bold'>{`${t('EXTERNAL_ID', 'External ID :')} `}</OText>
269
305
  {order?.external_id}
@@ -283,20 +319,10 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
283
319
  )}
284
320
  <OText>
285
321
  <OText size={13} weight='bold'>
286
- {`${t('PAYMENT_METHODS', 'Payment methods')}: `}
322
+ {`${t(paymethodsLength > 1 ? 'PAYMENT_METHODS' : 'PAYMENT_METHOD', paymethodsLength > 1 ? 'Payment methods' : 'Payment method')}: `}
287
323
  </OText>
288
324
  {order?.payment_events?.length > 0 ? (
289
- <OText size={13}>
290
- {order?.payment_events?.map((event: any, idx: number) => {
291
- return event?.wallet_event
292
- ? idx < order?.payment_events?.length - 1
293
- ? `${walletName[event?.wallet_event?.wallet?.type]?.name} - `
294
- : walletName[event?.wallet_event?.wallet?.type]?.name
295
- : idx < order?.payment_events?.length - 1
296
- ? `${t(event?.paymethod?.name?.toUpperCase()?.replace(/ /g, '_'), event?.paymethod?.name)} - `
297
- : t(event?.paymethod?.name?.toUpperCase()?.replace(/ /g, '_'), event?.paymethod?.name)
298
- })}
299
- </OText>
325
+ <OText size={13}>{`${handlePaymethodsListString()}`}</OText>
300
326
  ) : (
301
327
  <OText size={13}>{t(order?.paymethod?.gateway?.toUpperCase(), order?.paymethod?.name)}</OText>
302
328
  )}
@@ -25,13 +25,13 @@ export const Logo = styled.View`
25
25
 
26
26
  export const OrderContent = styled.View`
27
27
  flex: 1;
28
- ${(props : any) => props.isOrderGroup && css`
28
+ ${(props: any) => props.isOrderGroup && css`
29
29
  border-color: rgba(0, 0, 0, 0.2);
30
30
  border-width: 1px;
31
31
  padding: 10px;
32
32
  `
33
33
  }
34
- ${(props : any) => props.lastOrder && css`
34
+ ${(props: any) => props.lastOrder && css`
35
35
  margin-bottom: 50px;
36
36
  `}
37
37
  `;
@@ -68,7 +68,28 @@ export const Table = styled.View`
68
68
 
69
69
  export const OrderBill = styled.View`
70
70
  padding-vertical: 20px;
71
- padding-bottom: 30px;
71
+ ${(props: any) => !props.vehicleExists && css`
72
+ padding-bottom: 50px;
73
+ `
74
+ }
75
+ flex: 1;
76
+ `;
77
+
78
+ export const OrderVehicle = styled.View`
79
+ border-top-width: 1px;
80
+ border-top-color: ${(props: any) => props.theme.colors.borderTops};
81
+ padding-vertical: 20px;
82
+ padding-bottom: 50px;
83
+ flex: 1;
84
+ `;
85
+
86
+ export const OrderSpot = styled.View`
87
+ border-top-width: 1px;
88
+ border-top-color: ${(props: any) => props.theme.colors.borderTops};
89
+ padding-vertical: 20px;
90
+ ${(props: any) => !props.vehicleExists && css`
91
+ padding-bottom: 50px;
92
+ `}
72
93
  flex: 1;
73
94
  `;
74
95
 
@@ -98,3 +119,18 @@ export const OSRow = styled.View`
98
119
  width: 70%;
99
120
  flex-wrap: wrap;
100
121
  `
122
+
123
+ export const Messages = styled.View`
124
+ position: relative;
125
+ `;
126
+
127
+ export const Dot = styled.View`
128
+ position: absolute;
129
+ width: 8px;
130
+ height: 8px;
131
+ border-radius: 4px;
132
+ background-color: ${(props: any) => props.theme.colors.red};
133
+ top: 10px;
134
+ right: 10px;
135
+ z-index: 99;
136
+ `;