ordering-ui-react-native 0.21.86 → 0.21.87-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 (168) 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/StripeMethodForm/index.tsx +6 -4
  5. package/src/components/VerifyPhone/styles.tsx +1 -2
  6. package/src/types/index.tsx +3 -1
  7. package/themes/business/index.tsx +2 -0
  8. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -6
  9. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
  10. package/themes/business/src/components/BusinessController/index.tsx +8 -3
  11. package/themes/business/src/components/BusinessProductList/index.tsx +2 -1
  12. package/themes/business/src/components/Chat/index.tsx +5 -2
  13. package/themes/business/src/components/DriverMap/index.tsx +49 -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 +69 -33
  21. package/themes/business/src/components/OrderDetails/Business.tsx +74 -9
  22. package/themes/business/src/components/OrderDetails/Delivery.tsx +131 -51
  23. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +112 -41
  24. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +55 -24
  25. package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
  26. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +221 -0
  27. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
  28. package/themes/business/src/components/OrderSummary/index.tsx +223 -73
  29. package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
  30. package/themes/business/src/components/OrdersOption/index.tsx +251 -159
  31. package/themes/business/src/components/PhoneInputNumber/index.tsx +8 -5
  32. package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
  33. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +42 -20
  34. package/themes/business/src/components/PreviousOrders/index.tsx +76 -66
  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 +1 -1
  43. package/themes/business/src/components/StoresList/index.tsx +2 -2
  44. package/themes/business/src/components/UserFormDetails/index.tsx +111 -107
  45. package/themes/business/src/components/UserProfileForm/index.tsx +56 -35
  46. package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
  47. package/themes/business/src/components/shared/OInput.tsx +2 -0
  48. package/themes/business/src/components/shared/OTextarea.tsx +8 -9
  49. package/themes/business/src/hooks/useLocation.tsx +5 -4
  50. package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
  51. package/themes/business/src/types/index.tsx +14 -4
  52. package/themes/business/src/utils/index.tsx +25 -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 +5 -8
  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 +43 -15
  84. package/themes/original/src/components/CartContent/index.tsx +21 -8
  85. package/themes/original/src/components/Checkout/index.tsx +109 -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 +2 -1
  109. package/themes/original/src/components/Messages/index.tsx +13 -9
  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 +7 -4
  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 +4 -3
  119. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +13 -10
  120. package/themes/original/src/components/OrderDetails/index.tsx +42 -19
  121. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  122. package/themes/original/src/components/OrderProgress/index.tsx +26 -6
  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 +4 -6
  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 +16 -8
  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 +7 -5
  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 +154 -130
  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/components/shared/OModal.tsx +7 -2
  166. package/themes/original/src/types/index.tsx +5 -1
  167. package/themes/original/src/utils/index.tsx +30 -1
  168. 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';
@@ -66,6 +68,7 @@ export const OrderContentComponent = (props: OrderContent) => {
66
68
  })
67
69
 
68
70
  const pastOrderStatuses = [1, 2, 5, 6, 10, 11, 12, 16, 17]
71
+ const deliveryTypes = [1, 7]
69
72
 
70
73
  const walletName: any = {
71
74
  cash: {
@@ -97,19 +100,21 @@ export const OrderContentComponent = (props: OrderContent) => {
97
100
  }
98
101
  })
99
102
 
100
- const getIncludedTaxes = () => {
103
+ const getIncludedTaxes = (isDeliveryFee?: boolean) => {
101
104
  if (!order?.taxes) return 0
102
105
  if (order?.taxes?.length === 0) {
103
106
  return order.tax_type === 1 ? order?.summary?.tax ?? 0 : 0
104
107
  } else {
105
108
  return order?.taxes.reduce((taxIncluded: number, tax: any) => {
106
- return taxIncluded + (tax.type === 1 ? tax.summary?.tax : 0)
109
+ return taxIncluded +
110
+ (((!isDeliveryFee && tax.type === 1 && tax.target === 'product') ||
111
+ (isDeliveryFee && tax.type === 1 && tax.target === 'delivery_fee')) ? tax.summary?.tax : 0)
107
112
  }, 0)
108
113
  }
109
114
  }
110
115
 
111
116
  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)
117
+ 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
118
  }
114
119
 
115
120
  const containsOnlyNumbers = (str: string) => {
@@ -219,8 +224,8 @@ export const OrderContentComponent = (props: OrderContent) => {
219
224
  <OLink
220
225
  PressStyle={styles.linkWithIcons}
221
226
  url={Platform.select({
222
- ios: `maps:0,0?q=${order?.business?.address}`,
223
- android: `geo:0,0?q=${order?.business?.address}`,
227
+ ios: `maps:0,0?q=${order?.business?.address}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
228
+ android: `geo:0,0?q=${order?.business?.address}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
224
229
  })}
225
230
  numberOfLines={2}
226
231
  shorcut={order?.business?.address}
@@ -230,7 +235,7 @@ export const OrderContentComponent = (props: OrderContent) => {
230
235
  )}
231
236
  {!!order?.business?.location && order?.customer?.location && (
232
237
  <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)}
238
+ {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
239
  </OText>
235
240
  )}
236
241
  {!!order?.business?.address_notes && (
@@ -239,8 +244,8 @@ export const OrderContentComponent = (props: OrderContent) => {
239
244
  <OLink
240
245
  PressStyle={styles.linkWithIcons}
241
246
  url={Platform.select({
242
- ios: `maps:0,0?q=${order?.business?.address_notes}`,
243
- android: `geo:0,0?q=${order?.business?.address_notes}`,
247
+ ios: `maps:0,0?q=${order?.business?.address_notes}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
248
+ android: `geo:0,0?q=${order?.business?.address_notes}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
244
249
  })}
245
250
  shorcut={order?.business?.address_notes}
246
251
  TextStyle={styles.textLink}
@@ -360,8 +365,8 @@ export const OrderContentComponent = (props: OrderContent) => {
360
365
  <OLink
361
366
  PressStyle={{ ...styles.linkWithIcons, marginBottom: 0 }}
362
367
  url={Platform.select({
363
- ios: `maps:0,0?q=${order?.customer?.address}`,
364
- android: `geo:0,0?q=${order?.customer?.address}`,
368
+ ios: `maps:0,0?q=${order?.customer?.address}@${order?.customer?.location?.lat},${order?.customer?.location?.lng}`,
369
+ android: `geo:0,0?q=${order?.customer?.address}@${order?.customer?.location?.lat},${order?.customer?.location?.lng}`,
365
370
  })}
366
371
  onTextLayout={e => onTextLayout(e, 'customerAddress')}
367
372
  numberOfLines={isReadMore.customerAddress ? 20 : 2}
@@ -408,26 +413,16 @@ export const OrderContentComponent = (props: OrderContent) => {
408
413
  {t('ON_BEHALF_OF', 'On behalf of')}{': '} {order?.on_behalf_of}
409
414
  </OText>
410
415
  )}
411
- {((order?.delivery_option !== undefined && order?.delivery_type === 1) || !!order?.comment) && (
416
+ {(order?.delivery_option !== undefined && deliveryTypes.includes(order?.delivery_type)) && (
412
417
  <View style={{ marginTop: 10 }}>
413
- {order?.delivery_option !== undefined && order?.delivery_type === 1 && (
418
+ {order?.delivery_option !== undefined && deliveryTypes.includes(order?.delivery_type) && (
414
419
  <OText>
415
- {t(order?.delivery_option?.name?.toUpperCase()?.replace(/ /g, '_'), order?.delivery_option?.name)}
420
+ {t(order?.delivery_option?.name?.toUpperCase?.()?.replace(/ /g, '_'), order?.delivery_option?.name)}
416
421
  </OText>
417
422
  )}
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
423
  </View>
429
424
  )}
430
- {!order?.user_review && pastOrderStatuses.includes(order?.status) && (
425
+ {!order?.user_review && pastOrderStatuses.includes(order?.status) && order?.customer_id && (
431
426
  <OButton
432
427
  style={styles.btnReview}
433
428
  textStyle={{ color: theme.colors.white }}
@@ -439,10 +434,16 @@ export const OrderContentComponent = (props: OrderContent) => {
439
434
  </OrderCustomer>
440
435
 
441
436
  <OrderProducts>
442
- <OText style={{ marginBottom: 5 }} size={16} weight="600">
437
+ <OText style={{ marginBottom: 10 }} size={16} weight="600">
443
438
  {t('ORDER_DETAILS', 'Order Details')}
444
439
  </OText>
445
440
 
441
+ {!!order?.comment && (
442
+ <OText>
443
+ {`${t('ORDER_COMMENT', 'Order Comment')}: ${order?.comment}`}
444
+ </OText>
445
+ )}
446
+
446
447
  {order?.products?.length > 0 &&
447
448
  order?.products.map((product: any, i: number) => (
448
449
  <ProductItemAccordion
@@ -453,7 +454,7 @@ export const OrderContentComponent = (props: OrderContent) => {
453
454
  ))}
454
455
  </OrderProducts>
455
456
 
456
- <OrderBill>
457
+ <OrderBill vehicleExists={!!order?.vehicle}>
457
458
  <Table>
458
459
  <OText mBottom={4}>{t('SUBTOTAL', 'Subtotal')}</OText>
459
460
  <OText mBottom={4}>
@@ -478,7 +479,7 @@ export const OrderContentComponent = (props: OrderContent) => {
478
479
  <Table key={offer.id}>
479
480
  <OSRow>
480
481
  <OText mBottom={4}>
481
- {t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
482
+ {t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
482
483
  {offer.rate_type === 1 && (
483
484
  <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
484
485
  )}
@@ -520,11 +521,11 @@ export const OrderContentComponent = (props: OrderContent) => {
520
521
  )
521
522
  }
522
523
  {
523
- order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0).map((tax: any) => (
524
+ order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0 && tax?.target === 'product').map((tax: any) => (
524
525
  <Table key={tax.id}>
525
526
  <OSRow>
526
527
  <OText mBottom={4}>
527
- {t(tax?.name?.toUpperCase()?.replace(/ /g, '_'), tax?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
528
+ {t(tax?.name?.toUpperCase?.()?.replace(/ /g, '_'), tax?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
528
529
  {`(${verifyDecimals(tax?.rate, parseNumber)}%)`}{' '}
529
530
  </OText>
530
531
  </OSRow>
@@ -537,7 +538,7 @@ export const OrderContentComponent = (props: OrderContent) => {
537
538
  <Table key={fee.id}>
538
539
  <OSRow>
539
540
  <OText mBottom={4}>
540
- {t(fee?.name?.toUpperCase()?.replace(/ /g, '_'), fee?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
541
+ {t(fee?.name?.toUpperCase?.()?.replace(/ /g, '_'), fee?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
541
542
  ({fee?.fixed > 0 && `${parsePrice(fee?.fixed, { currency: order?.currency })} + `}{fee.percentage}%){' '}
542
543
  </OText>
543
544
  </OSRow>
@@ -550,7 +551,7 @@ export const OrderContentComponent = (props: OrderContent) => {
550
551
  <Table key={offer.id}>
551
552
  <OSRow>
552
553
  <OText mBottom={4}>
553
- {t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
554
+ {t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
554
555
  {offer.rate_type === 1 && (
555
556
  <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
556
557
  )}
@@ -561,24 +562,37 @@ export const OrderContentComponent = (props: OrderContent) => {
561
562
  ))
562
563
  }
563
564
  {
564
- typeof order?.summary?.delivery_price === 'number' && (
565
+ typeof order?.summary?.delivery_price === 'number' && order.delivery_type !== 2 && (
565
566
  <Table>
566
567
  <OText mBottom={4}>
567
568
  {t('DELIVERY_FEE', 'Delivery Fee')}
568
569
  </OText>
569
570
 
570
571
  <OText mBottom={4}>
571
- {parsePrice(order?.summary?.delivery_price, { currency: order?.currency })}
572
+ {parsePrice(order?.summary?.delivery_price + getIncludedTaxes(true), { currency: order?.currency })}
572
573
  </OText>
573
574
  </Table>
574
575
  )
575
576
  }
577
+ {
578
+ order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0 && tax?.target === 'delivery_fee').map((tax: any, i: number) => (
579
+ <Table key={`${tax.description}_${i}`}>
580
+ <OSRow>
581
+ <OText mBottom={4}>
582
+ {tax.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
583
+ {`(${verifyDecimals(tax?.rate, parseNumber)}%)`}
584
+ </OText>
585
+ </OSRow>
586
+ <OText mBottom={4}>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0)}</OText>
587
+ </Table>
588
+ ))
589
+ }
576
590
  {
577
591
  order?.offers?.length > 0 && order?.offers?.filter((offer: any) => offer?.target === 2)?.map((offer: any) => (
578
592
  <Table key={offer.id}>
579
593
  <OSRow>
580
594
  <OText mBottom={4}>
581
- {t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
595
+ {t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
582
596
  {offer.rate_type === 1 && (
583
597
  <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
584
598
  )}
@@ -588,7 +602,7 @@ export const OrderContentComponent = (props: OrderContent) => {
588
602
  </Table>
589
603
  ))
590
604
  }
591
- {(order?.summary?.driver_tip > 0 || order?.driver_tip > 0) && (
605
+ {(order?.summary?.driver_tip > 0 || order?.driver_tip > 0) && order.delivery_type !== 2 && (
592
606
  <Table>
593
607
  <OText mBottom={4}>
594
608
  {t('DRIVER_TIP', 'Driver tip')}
@@ -646,13 +660,12 @@ export const OrderContentComponent = (props: OrderContent) => {
646
660
  <OText>
647
661
  {event?.wallet_event
648
662
  ? walletName[event?.wallet_event?.wallet?.type]?.name
649
- : t(event?.paymethod?.name?.toUpperCase()?.replace(/ /g, '_'), event?.paymethod?.name)}
663
+ : event?.paymethod?.gateway
664
+ ? t(event?.paymethod?.gateway?.toUpperCase?.(), event?.paymethod?.name)
665
+ : order?.paymethod?.id === event?.paymethod_id
666
+ ? t(order?.paymethod?.gateway?.toUpperCase?.(), order?.paymethod?.name)
667
+ : ''}
650
668
  </OText>
651
- {/* {event?.data?.charge_id && (
652
- <OText>
653
- {`${t('CODE', 'Code')}: ${event?.data?.charge_id}`}
654
- </OText>
655
- )} */}
656
669
  </View>
657
670
  <OText>
658
671
  {(event?.paymethod?.gateway === 'cash' && order?.cash)
@@ -664,7 +677,65 @@ export const OrderContentComponent = (props: OrderContent) => {
664
677
  </View>
665
678
  </View>
666
679
  )}
680
+
667
681
  </OrderBill >
682
+
683
+ {!!order?.spot_number && (
684
+ <OrderSpot vehicleExists={!!order?.vehicle}>
685
+ <Table>
686
+ <OText style={{ marginBottom: 5 }}>
687
+ {t('SPOT_NUMBER', 'Spot number')}
688
+ </OText>
689
+ <OText style={{ marginBottom: 5 }}>
690
+ {order?.spot_number}
691
+ </OText>
692
+ </Table>
693
+ </OrderSpot>
694
+ )}
695
+
696
+ {!!order?.vehicle && (
697
+ <OrderVehicle>
698
+ <OText
699
+ style={{ marginBottom: 5 }}
700
+ size={16}
701
+ weight="600"
702
+ color={theme.colors.textGray}>
703
+ {t('VEHICLE', 'Vehicle')}
704
+ </OText>
705
+ <Table>
706
+ <OText style={{ marginBottom: 5 }}>
707
+ {t('CAR_REGISTRATION', 'Car registration')}
708
+ </OText>
709
+ <OText style={{ marginBottom: 5 }}>
710
+ {order?.vehicle?.car_registration}
711
+ </OText>
712
+ </Table>
713
+ <Table>
714
+ <OText style={{ marginBottom: 5 }}>
715
+ {t('COLOR', 'Color')}
716
+ </OText>
717
+ <OText style={{ marginBottom: 5 }}>
718
+ {order?.vehicle?.color}
719
+ </OText>
720
+ </Table>
721
+ <Table>
722
+ <OText style={{ marginBottom: 5 }}>
723
+ {t('MODEL', 'Model')}
724
+ </OText>
725
+ <OText style={{ marginBottom: 5 }}>
726
+ {order?.vehicle?.model}
727
+ </OText>
728
+ </Table>
729
+ <Table>
730
+ <OText style={{ marginBottom: 5 }}>
731
+ {t('TYPE', 'Type')}
732
+ </OText>
733
+ <OText style={{ marginBottom: 5 }}>
734
+ {order?.vehicle?.type}
735
+ </OText>
736
+ </Table>
737
+ </OrderVehicle>
738
+ )}
668
739
  <OModal
669
740
  open={openReviewModal}
670
741
  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: {
@@ -88,6 +102,11 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
88
102
  19: theme.colors.statusOrderBlue,
89
103
  20: theme.colors.statusOrderBlue,
90
104
  21: theme.colors.statusOrderBlue,
105
+ 22: theme.colors.statusOrderBlue,
106
+ 23: theme.colors.statusOrderBlue,
107
+ 24: theme.colors.statusOrderBlue,
108
+ 25: theme.colors.statusOrderBlue,
109
+ 26: theme.colors.statusOrderBlue,
91
110
  //GREEN
92
111
  1: theme.colors.statusOrderGreen,
93
112
  11: theme.colors.statusOrderGreen,
@@ -125,11 +144,26 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
125
144
  const paymethodsList = order?.payment_events?.filter((item: any) => item.event === 'payment').map((paymethod: any) => {
126
145
  return paymethod?.wallet_event
127
146
  ? walletName[paymethod?.wallet_event?.wallet?.type]?.name
128
- : t(paymethod?.paymethod?.gateway?.toUpperCase(), paymethod?.paymethod?.name)
147
+ : paymethod?.paymethod?.gateway && paymethod?.paymethod?.gateway === 'cash' && order?.cash > 0
148
+ ? `${t(paymethod?.paymethod?.gateway?.toUpperCase(), paymethod?.paymethod?.name)} (${t('CASH_CHANGE_OF', 'Change of :amount:').replace(':amount:', parsePrice(order?.cash))})`
149
+ : paymethod?.paymethod?.gateway
150
+ ? t(paymethod?.paymethod?.gateway?.toUpperCase(), paymethod?.paymethod?.name)
151
+ : t(order?.paymethod?.gateway?.toUpperCase(), order?.paymethod?.name)
129
152
  })
130
153
  return paymethodsList.join(', ')
131
154
  }
132
155
 
156
+ const deliveryDate = () => {
157
+ const dateString = order?.delivery_datetime_utc ?? order?.delivery_datetime
158
+ const currentDate = new Date();
159
+ const receivedDate: any = new Date(order?.delivery_datetime);
160
+
161
+ const formattedDate = receivedDate <= currentDate
162
+ ? `${t('ASAP_ABBREVIATION', 'ASAP')}(${parseDate(dateString, { utc: !!order?.delivery_datetime_utc })})`
163
+ : parseDate(dateString, { utc: !!order?.delivery_datetime_utc })
164
+ return formattedDate
165
+ }
166
+
133
167
  return (
134
168
  <>
135
169
  {!props.isCustomView && (
@@ -173,18 +207,20 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
173
207
  style={styles.icons}
174
208
  onClick={() => handleOpenMapView()}
175
209
  />
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
- />
210
+ <Messages>
211
+ {filteredMessages?.filter((message: any) => message?.author_id !== user?.id && !message?.read)?.length > 0 && <Dot />}
212
+ <OIconButton
213
+ icon={theme.images.general.messages}
214
+ iconStyle={{
215
+ width: 20,
216
+ height: 20,
217
+ tintColor: theme.colors.textGray,
218
+ }}
219
+ borderColor={theme.colors.clear}
220
+ style={styles.icons}
221
+ onClick={() => handleOpenMessagesForBusiness()}
222
+ />
223
+ </Messages>
188
224
  </Actions>
189
225
  )}
190
226
  </Header>
@@ -192,16 +228,12 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
192
228
  <OrderHeader>
193
229
  {!props.isCustomView ? (
194
230
  <OText size={13} style={{ marginBottom: 5 }}>
195
- {order?.delivery_datetime_utc
196
- ? parseDate(order?.delivery_datetime_utc)
197
- : parseDate(order?.delivery_datetime, { utc: false })}
231
+ {deliveryDate()}
198
232
  </OText>
199
233
  ) : (
200
234
  <Header style={{ alignItems: 'center' }}>
201
235
  <OText size={13} style={{ marginBottom: 5 }}>
202
- {order?.delivery_datetime_utc
203
- ? parseDate(order?.delivery_datetime_utc)
204
- : parseDate(order?.delivery_datetime, { utc: false })}
236
+ {deliveryDate()}
205
237
  </OText>
206
238
 
207
239
  {(!order?.isLogistic || (!logisticOrderStatus?.includes(order?.status) && !order?.order_group)) && (
@@ -240,7 +272,6 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
240
272
  style={styles.icons}
241
273
  onClick={() => handleOpenMapView()}
242
274
  />
243
-
244
275
  <OIconButton
245
276
  icon={theme.images.general.messages}
246
277
  iconStyle={{
@@ -259,7 +290,7 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
259
290
 
260
291
  <OText numberOfLines={2} size={20} weight="600">
261
292
  <>
262
- {`${t('INVOICE_ORDER_NO', 'Order No.')} ${order?.id} `}
293
+ {`${t('INVOICE_ORDER_NO', 'Order No.')} ${showExternalId ? order?.external_id || order?.id : order?.id} `}
263
294
  {!order?.isLogistic && (!order?.order_group_id || !logisticOrderStatus?.includes(order?.status)) && (
264
295
  <>
265
296
  {t('IS', 'is')}{' '}
@@ -273,7 +304,7 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
273
304
  )}
274
305
  </>
275
306
  </OText>
276
- {order?.external_id && (
307
+ {order?.external_id && !showExternalId && (
277
308
  <OText size={13}>
278
309
  <OText size={13} weight='bold'>{`${t('EXTERNAL_ID', 'External ID :')} `}</OText>
279
310
  {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
+ `;