ordering-ui-react-native 0.21.81 → 0.21.82-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 (167) 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/BusinessController/index.tsx +8 -3
  12. package/themes/business/src/components/BusinessProductList/index.tsx +2 -1
  13. package/themes/business/src/components/Chat/index.tsx +3 -1
  14. package/themes/business/src/components/DriverMap/index.tsx +44 -27
  15. package/themes/business/src/components/GoogleMap/index.tsx +15 -8
  16. package/themes/business/src/components/Home/index.tsx +5 -1
  17. package/themes/business/src/components/LanguageSelector/index.tsx +2 -3
  18. package/themes/business/src/components/LanguageSelector/lang_country.json +515 -70
  19. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  20. package/themes/business/src/components/MapView/index.tsx +36 -17
  21. package/themes/business/src/components/NewOrderNotification/index.tsx +64 -28
  22. package/themes/business/src/components/OrderDetails/Business.tsx +65 -7
  23. package/themes/business/src/components/OrderDetails/Delivery.tsx +35 -20
  24. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +110 -40
  25. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +50 -24
  26. package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
  27. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +221 -0
  28. package/themes/business/src/components/OrderSummary/index.tsx +223 -73
  29. package/themes/business/src/components/OrdersListManager/index.tsx +9 -1
  30. package/themes/business/src/components/OrdersOption/index.tsx +247 -159
  31. package/themes/business/src/components/PhoneInputNumber/index.tsx +8 -5
  32. package/themes/business/src/components/PreviousMessages/index.tsx +20 -3
  33. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +27 -16
  34. package/themes/business/src/components/PreviousOrders/index.tsx +5 -3
  35. package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
  36. package/themes/business/src/components/PrinterEdition/index.tsx +431 -0
  37. package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
  38. package/themes/business/src/components/PrinterEdition/styles.tsx +61 -0
  39. package/themes/business/src/components/PrinterSettings/index.tsx +267 -0
  40. package/themes/business/src/components/PrinterSettings/styles.tsx +30 -0
  41. package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
  42. package/themes/business/src/components/Sessions/index.tsx +187 -0
  43. package/themes/business/src/components/Sessions/styles.tsx +20 -0
  44. package/themes/business/src/components/StoresList/index.tsx +2 -2
  45. package/themes/business/src/components/UserFormDetails/index.tsx +111 -107
  46. package/themes/business/src/components/UserProfileForm/index.tsx +84 -47
  47. package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
  48. package/themes/business/src/components/shared/OInput.tsx +2 -0
  49. package/themes/business/src/components/shared/OTextarea.tsx +8 -9
  50. package/themes/business/src/hooks/useLocation.tsx +5 -4
  51. package/themes/business/src/types/index.tsx +23 -5
  52. package/themes/business/src/utils/index.tsx +19 -1
  53. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  54. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  55. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  56. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  57. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  58. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  59. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  60. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  61. package/themes/original/index.tsx +13 -1
  62. package/themes/original/src/components/AddressDetails/index.tsx +20 -10
  63. package/themes/original/src/components/AddressForm/index.tsx +32 -17
  64. package/themes/original/src/components/AddressList/index.tsx +8 -7
  65. package/themes/original/src/components/AnalyticsSegment/index.tsx +6 -6
  66. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  67. package/themes/original/src/components/BusinessBasicInformation/index.tsx +6 -9
  68. package/themes/original/src/components/BusinessController/index.tsx +12 -7
  69. package/themes/original/src/components/BusinessItemAccordion/index.tsx +13 -5
  70. package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +2 -3
  71. package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +1 -3
  72. package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
  73. package/themes/original/src/components/BusinessPreorder/index.tsx +20 -15
  74. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +5 -5
  75. package/themes/original/src/components/BusinessProductsList/index.tsx +2 -2
  76. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  77. package/themes/original/src/components/BusinessProductsListing/index.tsx +18 -6
  78. package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
  79. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
  80. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +1 -1
  81. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
  82. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  83. package/themes/original/src/components/Cart/index.tsx +38 -11
  84. package/themes/original/src/components/CartContent/index.tsx +21 -8
  85. package/themes/original/src/components/Checkout/index.tsx +108 -60
  86. package/themes/original/src/components/CitiesControl/index.tsx +0 -3
  87. package/themes/original/src/components/CouponControl/index.tsx +1 -3
  88. package/themes/original/src/components/DriverTips/index.tsx +1 -3
  89. package/themes/original/src/components/Favorite/index.tsx +1 -5
  90. package/themes/original/src/components/FavoriteList/index.tsx +0 -1
  91. package/themes/original/src/components/ForgotPasswordForm/index.tsx +5 -7
  92. package/themes/original/src/components/GiftCard/GiftCardOrdersList/index.tsx +64 -0
  93. package/themes/original/src/components/GiftCard/GiftCardOrdersList/styles.tsx +8 -0
  94. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +15 -17
  95. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +3 -7
  96. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +24 -32
  97. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +7 -9
  98. package/themes/original/src/components/GiftCard/SingleGiftCard/index.tsx +101 -0
  99. package/themes/original/src/components/GiftCard/SingleGiftCard/styles.tsx +4 -0
  100. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +82 -0
  101. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/styles.tsx +9 -0
  102. package/themes/original/src/components/GoogleMap/index.tsx +39 -18
  103. package/themes/original/src/components/Help/index.tsx +2 -0
  104. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
  105. package/themes/original/src/components/Home/index.tsx +2 -10
  106. package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
  107. package/themes/original/src/components/LoginForm/index.tsx +4 -7
  108. package/themes/original/src/components/MessageListing/index.tsx +1 -0
  109. package/themes/original/src/components/Messages/index.tsx +8 -7
  110. package/themes/original/src/components/MomentOption/index.tsx +13 -2
  111. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -3
  112. package/themes/original/src/components/MultiCheckout/index.tsx +139 -87
  113. package/themes/original/src/components/MultiOrdersDetails/index.tsx +2 -1
  114. package/themes/original/src/components/MyOrders/index.tsx +21 -26
  115. package/themes/original/src/components/NavBar/index.tsx +4 -2
  116. package/themes/original/src/components/NetworkError/index.tsx +0 -5
  117. package/themes/original/src/components/NotFoundSource/index.tsx +0 -3
  118. package/themes/original/src/components/OrderDetails/OrderEta.tsx +1 -1
  119. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +5 -7
  120. package/themes/original/src/components/OrderDetails/index.tsx +27 -10
  121. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  122. package/themes/original/src/components/OrderProgress/index.tsx +22 -3
  123. package/themes/original/src/components/OrderSummary/index.tsx +28 -9
  124. package/themes/original/src/components/OrderTypeSelector/index.tsx +7 -6
  125. package/themes/original/src/components/OrdersOption/index.tsx +2 -4
  126. package/themes/original/src/components/PaymentOptionStripe/index.tsx +0 -5
  127. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  128. package/themes/original/src/components/PaymentOptions/index.tsx +17 -9
  129. package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
  130. package/themes/original/src/components/PreviousOrders/index.tsx +1 -2
  131. package/themes/original/src/components/ProductForm/ActionButton.tsx +17 -20
  132. package/themes/original/src/components/ProductForm/index.tsx +107 -102
  133. package/themes/original/src/components/ProductItemAccordion/index.tsx +55 -49
  134. package/themes/original/src/components/ProductItemAccordion/styles.tsx +3 -4
  135. package/themes/original/src/components/ProductOptionSubOption/index.tsx +8 -1
  136. package/themes/original/src/components/ProfessionalProfile/index.tsx +4 -5
  137. package/themes/original/src/components/Promotions/index.tsx +6 -9
  138. package/themes/original/src/components/ReviewDriver/index.tsx +1 -1
  139. package/themes/original/src/components/ReviewOrder/index.tsx +2 -2
  140. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  141. package/themes/original/src/components/ReviewTrigger/index.tsx +2 -2
  142. package/themes/original/src/components/ServiceForm/index.tsx +52 -54
  143. package/themes/original/src/components/Sessions/index.tsx +3 -3
  144. package/themes/original/src/components/SignupForm/index.tsx +86 -78
  145. package/themes/original/src/components/SingleOrderCard/index.tsx +1 -2
  146. package/themes/original/src/components/SingleProductCard/index.tsx +3 -4
  147. package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
  148. package/themes/original/src/components/StripeCardForm/index.tsx +0 -3
  149. package/themes/original/src/components/StripeCardsList/index.tsx +10 -3
  150. package/themes/original/src/components/StripeElementsForm/index.tsx +77 -60
  151. package/themes/original/src/components/StripeElementsForm/naked.tsx +48 -1
  152. package/themes/original/src/components/StripeRedirectForm/index.tsx +0 -3
  153. package/themes/original/src/components/TaxInformation/index.tsx +3 -2
  154. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +10 -7
  155. package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +8 -3
  156. package/themes/original/src/components/UserDetails/index.tsx +3 -2
  157. package/themes/original/src/components/UserFormDetails/index.tsx +155 -131
  158. package/themes/original/src/components/UserProfile/index.tsx +11 -2
  159. package/themes/original/src/components/Wallets/index.tsx +6 -3
  160. package/themes/original/src/components/WebsocketStatus/index.tsx +169 -0
  161. package/themes/original/src/components/WebsocketStatus/styles.tsx +28 -0
  162. package/themes/original/src/components/shared/OAlert.tsx +2 -1
  163. package/themes/original/src/components/shared/OButton.tsx +5 -4
  164. package/themes/original/src/components/shared/OInput.tsx +4 -8
  165. package/themes/original/src/types/index.tsx +5 -1
  166. package/themes/original/src/utils/index.tsx +12 -1
  167. 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,12 +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();
53
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
54
68
 
55
69
  const styles = StyleSheet.create({
56
70
  icons: {
@@ -125,11 +139,26 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
125
139
  const paymethodsList = order?.payment_events?.filter((item: any) => item.event === 'payment').map((paymethod: any) => {
126
140
  return paymethod?.wallet_event
127
141
  ? walletName[paymethod?.wallet_event?.wallet?.type]?.name
128
- : t(paymethod?.paymethod?.gateway?.toUpperCase(), paymethod?.paymethod?.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)
129
147
  })
130
148
  return paymethodsList.join(', ')
131
149
  }
132
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
+
133
162
  return (
134
163
  <>
135
164
  {!props.isCustomView && (
@@ -173,18 +202,20 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
173
202
  style={styles.icons}
174
203
  onClick={() => handleOpenMapView()}
175
204
  />
176
-
177
- <OIconButton
178
- icon={theme.images.general.messages}
179
- iconStyle={{
180
- width: 20,
181
- height: 20,
182
- tintColor: theme.colors.textGray,
183
- }}
184
- borderColor={theme.colors.clear}
185
- style={styles.icons}
186
- onClick={() => handleOpenMessagesForBusiness()}
187
- />
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>
188
219
  </Actions>
189
220
  )}
190
221
  </Header>
@@ -192,16 +223,12 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
192
223
  <OrderHeader>
193
224
  {!props.isCustomView ? (
194
225
  <OText size={13} style={{ marginBottom: 5 }}>
195
- {order?.delivery_datetime_utc
196
- ? parseDate(order?.delivery_datetime_utc)
197
- : parseDate(order?.delivery_datetime, { utc: false })}
226
+ {deliveryDate()}
198
227
  </OText>
199
228
  ) : (
200
229
  <Header style={{ alignItems: 'center' }}>
201
230
  <OText size={13} style={{ marginBottom: 5 }}>
202
- {order?.delivery_datetime_utc
203
- ? parseDate(order?.delivery_datetime_utc)
204
- : parseDate(order?.delivery_datetime, { utc: false })}
231
+ {deliveryDate()}
205
232
  </OText>
206
233
 
207
234
  {(!order?.isLogistic || (!logisticOrderStatus?.includes(order?.status) && !order?.order_group)) && (
@@ -240,7 +267,6 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
240
267
  style={styles.icons}
241
268
  onClick={() => handleOpenMapView()}
242
269
  />
243
-
244
270
  <OIconButton
245
271
  icon={theme.images.general.messages}
246
272
  iconStyle={{
@@ -259,7 +285,7 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
259
285
 
260
286
  <OText numberOfLines={2} size={20} weight="600">
261
287
  <>
262
- {`${t('INVOICE_ORDER_NO', 'Order No.')} ${order?.id} `}
288
+ {`${t('INVOICE_ORDER_NO', 'Order No.')} ${showExternalId ? order?.external_id || order?.id : order?.id} `}
263
289
  {!order?.isLogistic && (!order?.order_group_id || !logisticOrderStatus?.includes(order?.status)) && (
264
290
  <>
265
291
  {t('IS', 'is')}{' '}
@@ -273,7 +299,7 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
273
299
  )}
274
300
  </>
275
301
  </OText>
276
- {order?.external_id && (
302
+ {order?.external_id && !showExternalId && (
277
303
  <OText size={13}>
278
304
  <OText size={13} weight='bold'>{`${t('EXTERNAL_ID', 'External ID :')} `}</OText>
279
305
  {order?.external_id}
@@ -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
+ `;