ordering-ui-react-native 0.22.21 → 0.22.22-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/Checkout/index.tsx +40 -39
  5. package/src/components/StripeMethodForm/index.tsx +4 -2
  6. package/src/components/VerifyPhone/styles.tsx +1 -2
  7. package/src/context/OfflineActions/index.tsx +236 -0
  8. package/src/types/index.tsx +2 -1
  9. package/themes/business/index.tsx +2 -0
  10. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -6
  11. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
  12. package/themes/business/src/components/BusinessController/index.tsx +8 -3
  13. package/themes/business/src/components/BusinessProductList/index.tsx +3 -2
  14. package/themes/business/src/components/Chat/index.tsx +15 -3
  15. package/themes/business/src/components/DriverMap/index.tsx +49 -26
  16. package/themes/business/src/components/FloatingButton/index.tsx +3 -2
  17. package/themes/business/src/components/GoogleMap/index.tsx +15 -8
  18. package/themes/business/src/components/LanguageSelector/index.tsx +2 -3
  19. package/themes/business/src/components/LanguageSelector/lang_country.json +515 -70
  20. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  21. package/themes/business/src/components/MapView/index.tsx +36 -17
  22. package/themes/business/src/components/NewOrderNotification/index.tsx +38 -19
  23. package/themes/business/src/components/OrderDetails/Business.tsx +47 -27
  24. package/themes/business/src/components/OrderDetails/Delivery.tsx +134 -53
  25. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +128 -41
  26. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +45 -18
  27. package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
  28. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +17 -16
  29. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
  30. package/themes/business/src/components/OrderSummary/index.tsx +6 -4
  31. package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
  32. package/themes/business/src/components/OrdersOption/index.tsx +217 -156
  33. package/themes/business/src/components/PhoneInputNumber/index.tsx +8 -5
  34. package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
  35. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +39 -16
  36. package/themes/business/src/components/PreviousOrders/index.tsx +74 -66
  37. package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
  38. package/themes/business/src/components/PrinterEdition/index.tsx +431 -0
  39. package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
  40. package/themes/business/src/components/PrinterEdition/styles.tsx +61 -0
  41. package/themes/business/src/components/PrinterSettings/index.tsx +162 -174
  42. package/themes/business/src/components/PrinterSettings/styles.tsx +14 -1
  43. package/themes/business/src/components/ProductItemAccordion/index.tsx +3 -2
  44. package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
  45. package/themes/business/src/components/StoresList/index.tsx +2 -2
  46. package/themes/business/src/components/UserProfileForm/index.tsx +55 -22
  47. package/themes/business/src/components/UserProfileForm/styles.tsx +7 -0
  48. package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
  49. package/themes/business/src/components/shared/OTextarea.tsx +8 -9
  50. package/themes/business/src/config/currency.tsx +1010 -0
  51. package/themes/business/src/hooks/useLocation.tsx +16 -12
  52. package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
  53. package/themes/business/src/types/index.tsx +16 -4
  54. package/themes/business/src/utils/index.tsx +33 -3
  55. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  56. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  57. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  58. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  59. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  60. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  61. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  62. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  63. package/themes/original/index.tsx +11 -0
  64. package/themes/original/src/components/AddressForm/index.tsx +32 -17
  65. package/themes/original/src/components/AddressList/index.tsx +8 -7
  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/BusinessItemAccordion/index.tsx +13 -5
  69. package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +103 -92
  70. package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +8 -6
  71. package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
  72. package/themes/original/src/components/BusinessPreorder/index.tsx +46 -28
  73. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +73 -70
  74. package/themes/original/src/components/BusinessProductsList/index.tsx +6 -7
  75. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  76. package/themes/original/src/components/BusinessProductsListing/index.tsx +10 -6
  77. package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
  78. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
  79. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
  80. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  81. package/themes/original/src/components/Cart/index.tsx +46 -14
  82. package/themes/original/src/components/CartContent/index.tsx +2 -4
  83. package/themes/original/src/components/Checkout/index.tsx +127 -77
  84. package/themes/original/src/components/CitiesControl/index.tsx +0 -3
  85. package/themes/original/src/components/CouponControl/index.tsx +1 -3
  86. package/themes/original/src/components/DriverTips/index.tsx +1 -3
  87. package/themes/original/src/components/Favorite/index.tsx +1 -5
  88. package/themes/original/src/components/FavoriteList/index.tsx +0 -1
  89. package/themes/original/src/components/ForgotPasswordForm/index.tsx +5 -7
  90. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +15 -17
  91. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +3 -7
  92. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +24 -32
  93. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +7 -9
  94. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +11 -12
  95. package/themes/original/src/components/GoogleMap/index.tsx +39 -18
  96. package/themes/original/src/components/Help/index.tsx +2 -0
  97. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
  98. package/themes/original/src/components/Home/index.tsx +3 -11
  99. package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
  100. package/themes/original/src/components/LoginForm/index.tsx +12 -9
  101. package/themes/original/src/components/MessageListing/index.tsx +2 -1
  102. package/themes/original/src/components/Messages/index.tsx +27 -19
  103. package/themes/original/src/components/MomentOption/TimeListItem.tsx +56 -0
  104. package/themes/original/src/components/MomentOption/index.tsx +80 -51
  105. package/themes/original/src/components/MomentSelector/index.tsx +5 -2
  106. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -3
  107. package/themes/original/src/components/MultiCheckout/index.tsx +55 -27
  108. package/themes/original/src/components/MultiOrdersDetails/index.tsx +1 -0
  109. package/themes/original/src/components/MyOrders/index.tsx +2 -2
  110. package/themes/original/src/components/NavBar/index.tsx +7 -4
  111. package/themes/original/src/components/NetworkError/index.tsx +0 -5
  112. package/themes/original/src/components/NotFoundSource/index.tsx +0 -3
  113. package/themes/original/src/components/OrderDetails/OrderEta.tsx +4 -3
  114. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +16 -11
  115. package/themes/original/src/components/OrderDetails/index.tsx +44 -21
  116. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  117. package/themes/original/src/components/OrderProgress/index.tsx +4 -3
  118. package/themes/original/src/components/OrderSummary/index.tsx +29 -10
  119. package/themes/original/src/components/OrderTypeSelector/index.tsx +7 -6
  120. package/themes/original/src/components/OrdersOption/index.tsx +3 -6
  121. package/themes/original/src/components/PaymentOptionStripe/index.tsx +0 -5
  122. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  123. package/themes/original/src/components/PaymentOptions/index.tsx +4 -3
  124. package/themes/original/src/components/PhoneInputNumber/index.tsx +92 -7
  125. package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
  126. package/themes/original/src/components/PreviousOrders/index.tsx +1 -2
  127. package/themes/original/src/components/ProductForm/ActionButton.tsx +17 -20
  128. package/themes/original/src/components/ProductForm/index.tsx +107 -102
  129. package/themes/original/src/components/ProductItemAccordion/index.tsx +50 -43
  130. package/themes/original/src/components/ProductItemAccordion/styles.tsx +0 -3
  131. package/themes/original/src/components/ProductOptionSubOption/index.tsx +16 -8
  132. package/themes/original/src/components/ProfessionalProfile/index.tsx +4 -5
  133. package/themes/original/src/components/Promotions/index.tsx +6 -9
  134. package/themes/original/src/components/ReviewDriver/index.tsx +1 -1
  135. package/themes/original/src/components/ReviewOrder/index.tsx +2 -2
  136. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  137. package/themes/original/src/components/ReviewTrigger/index.tsx +2 -2
  138. package/themes/original/src/components/ServiceForm/index.tsx +52 -54
  139. package/themes/original/src/components/Sessions/index.tsx +3 -3
  140. package/themes/original/src/components/SignupForm/index.tsx +102 -88
  141. package/themes/original/src/components/SingleOrderCard/index.tsx +6 -4
  142. package/themes/original/src/components/SingleProductCard/index.tsx +5 -5
  143. package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
  144. package/themes/original/src/components/StripeCardForm/index.tsx +0 -3
  145. package/themes/original/src/components/StripeCardsList/index.tsx +16 -3
  146. package/themes/original/src/components/StripeElementsForm/index.tsx +76 -62
  147. package/themes/original/src/components/StripeElementsForm/naked.tsx +48 -1
  148. package/themes/original/src/components/StripeRedirectForm/index.tsx +0 -3
  149. package/themes/original/src/components/TaxInformation/index.tsx +3 -2
  150. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +10 -7
  151. package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +8 -3
  152. package/themes/original/src/components/UserDetails/index.tsx +17 -16
  153. package/themes/original/src/components/UserFormDetails/index.tsx +164 -135
  154. package/themes/original/src/components/UserProfile/index.tsx +9 -1
  155. package/themes/original/src/components/UserVerification/index.tsx +15 -4
  156. package/themes/original/src/components/Wallets/index.tsx +6 -3
  157. package/themes/original/src/components/WebsocketStatus/index.tsx +1 -4
  158. package/themes/original/src/components/shared/OAlert.tsx +2 -1
  159. package/themes/original/src/components/shared/OButton.tsx +5 -4
  160. package/themes/original/src/components/shared/OInput.tsx +4 -8
  161. package/themes/original/src/components/shared/OModal.tsx +7 -2
  162. package/themes/original/src/types/index.tsx +10 -3
  163. package/themes/original/src/utils/index.tsx +30 -1
  164. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -1,5 +1,4 @@
1
1
  import React, { useState, useCallback } from 'react'
2
-
3
2
  import { Platform, StyleSheet, View, TouchableOpacity, ScrollView } from 'react-native';
4
3
  import AntDesignIcon from 'react-native-vector-icons/AntDesign'
5
4
 
@@ -13,17 +12,20 @@ import {
13
12
  OrderBill,
14
13
  Total,
15
14
  OSRow,
15
+ OrderVehicle,
16
+ OrderSpot,
16
17
  } from './styles';
17
18
 
18
19
  import { ProductItemAccordion } from '../ProductItemAccordion';
19
20
 
20
- import { verifyDecimals, calculateDistance, transformDistance } from '../../utils';
21
+ import { verifyDecimals, calculateDistance, transformDistance, getCurrenySymbol } from '../../utils';
21
22
 
22
23
  import {
23
24
  useLanguage,
24
25
  useUtils,
25
26
  useConfig,
26
- useSession
27
+ useSession,
28
+ useApi
27
29
  } from 'ordering-components/native';
28
30
  import { useTheme } from 'styled-components/native';
29
31
  import { ReviewCustomer } from '../ReviewCustomer'
@@ -44,6 +46,7 @@ interface OrderContent {
44
46
  export const OrderContentComponent = (props: OrderContent) => {
45
47
  const [, t] = useLanguage();
46
48
  const theme = useTheme()
49
+ const [ordering] = useApi()
47
50
  const [{ user }] = useSession()
48
51
  const { order, logisticOrderStatus, isOrderGroup, lastOrder } = props;
49
52
  const [{ parsePrice, parseNumber }] = useUtils();
@@ -66,6 +69,7 @@ export const OrderContentComponent = (props: OrderContent) => {
66
69
  })
67
70
 
68
71
  const pastOrderStatuses = [1, 2, 5, 6, 10, 11, 12, 16, 17]
72
+ const deliveryTypes = [1, 7]
69
73
 
70
74
  const walletName: any = {
71
75
  cash: {
@@ -97,19 +101,21 @@ export const OrderContentComponent = (props: OrderContent) => {
97
101
  }
98
102
  })
99
103
 
100
- const getIncludedTaxes = () => {
104
+ const getIncludedTaxes = (isDeliveryFee?: boolean) => {
101
105
  if (!order?.taxes) return 0
102
106
  if (order?.taxes?.length === 0) {
103
107
  return order.tax_type === 1 ? order?.summary?.tax ?? 0 : 0
104
108
  } else {
105
109
  return order?.taxes.reduce((taxIncluded: number, tax: any) => {
106
- return taxIncluded + (tax.type === 1 ? tax.summary?.tax : 0)
110
+ return taxIncluded +
111
+ (((!isDeliveryFee && tax.type === 1 && tax.target === 'product') ||
112
+ (isDeliveryFee && tax.type === 1 && tax.target === 'delivery_fee')) ? tax.summary?.tax : 0)
107
113
  }, 0)
108
114
  }
109
115
  }
110
116
 
111
117
  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)
118
+ 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
119
  }
114
120
 
115
121
  const containsOnlyNumbers = (str: string) => {
@@ -230,7 +236,7 @@ export const OrderContentComponent = (props: OrderContent) => {
230
236
  )}
231
237
  {!!order?.business?.location && order?.customer?.location && (
232
238
  <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)}
239
+ {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
240
  </OText>
235
241
  )}
236
242
  {!!order?.business?.address_notes && (
@@ -408,16 +414,16 @@ export const OrderContentComponent = (props: OrderContent) => {
408
414
  {t('ON_BEHALF_OF', 'On behalf of')}{': '} {order?.on_behalf_of}
409
415
  </OText>
410
416
  )}
411
- {(order?.delivery_option !== undefined && order?.delivery_type === 1) && (
417
+ {(order?.delivery_option !== undefined && deliveryTypes.includes(order?.delivery_type)) && (
412
418
  <View style={{ marginTop: 10 }}>
413
- {order?.delivery_option !== undefined && order?.delivery_type === 1 && (
419
+ {order?.delivery_option !== undefined && deliveryTypes.includes(order?.delivery_type) && (
414
420
  <OText>
415
- {t(order?.delivery_option?.name?.toUpperCase()?.replace(/ /g, '_'), order?.delivery_option?.name)}
421
+ {t(order?.delivery_option?.name?.toUpperCase?.()?.replace(/ /g, '_'), order?.delivery_option?.name)}
416
422
  </OText>
417
423
  )}
418
424
  </View>
419
425
  )}
420
- {!order?.user_review && pastOrderStatuses.includes(order?.status) && (
426
+ {!order?.user_review && pastOrderStatuses.includes(order?.status) && order?.customer_id && (
421
427
  <OButton
422
428
  style={styles.btnReview}
423
429
  textStyle={{ color: theme.colors.white }}
@@ -434,9 +440,19 @@ export const OrderContentComponent = (props: OrderContent) => {
434
440
  </OText>
435
441
 
436
442
  {!!order?.comment && (
437
- <OText>
438
- {`${t('ORDER_COMMENT', 'Order Comment')}: ${order?.comment}`}
439
- </OText>
443
+ <>
444
+ <OText>
445
+ {`${t('ORDER_COMMENT', 'Order Comment')}: `}
446
+ </OText>
447
+ <OText
448
+ {...(ordering?.project?.includes('delosi') && {
449
+ color: theme.colors.primary,
450
+ weight: 'bold'
451
+ })}
452
+ >
453
+ {order?.comment}
454
+ </OText>
455
+ </>
440
456
  )}
441
457
 
442
458
  {order?.products?.length > 0 &&
@@ -449,11 +465,11 @@ export const OrderContentComponent = (props: OrderContent) => {
449
465
  ))}
450
466
  </OrderProducts>
451
467
 
452
- <OrderBill>
468
+ <OrderBill vehicleExists={!!order?.vehicle}>
453
469
  <Table>
454
470
  <OText mBottom={4}>{t('SUBTOTAL', 'Subtotal')}</OText>
455
471
  <OText mBottom={4}>
456
- {parsePrice(((order?.summary?.subtotal ?? order?.subtotal) + getIncludedTaxes()), { currency: order?.currency })}
472
+ {parsePrice(((order?.summary?.subtotal ?? order?.subtotal) + getIncludedTaxes()), { currency: getCurrenySymbol(order?.currency) })}
457
473
  </OText>
458
474
  </Table>
459
475
  {(order?.summary?.discount > 0 ?? order?.discount > 0) && order?.offers?.length === 0 && (
@@ -466,7 +482,7 @@ export const OrderContentComponent = (props: OrderContent) => {
466
482
  ) : (
467
483
  <OText mBottom={4}>{t('DISCOUNT', theme?.defaultLanguages?.DISCOUNT || 'Discount')}</OText>
468
484
  )}
469
- <OText>- {parsePrice(order?.summary?.discount ?? order?.discount, { currency: order?.currency })}</OText>
485
+ <OText>- {parsePrice(order?.summary?.discount ?? order?.discount, { currency: getCurrenySymbol(order?.currency) })}</OText>
470
486
  </Table>
471
487
  )}
472
488
  {
@@ -474,13 +490,13 @@ export const OrderContentComponent = (props: OrderContent) => {
474
490
  <Table key={offer.id}>
475
491
  <OSRow>
476
492
  <OText mBottom={4}>
477
- {t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
493
+ {t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
478
494
  {offer.rate_type === 1 && (
479
495
  <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
480
496
  )}
481
497
  </OText>
482
498
  </OSRow>
483
- <OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: order?.currency })}</OText>
499
+ <OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: getCurrenySymbol(order?.currency) })}</OText>
484
500
  </Table>
485
501
  ))
486
502
  }
@@ -488,9 +504,9 @@ export const OrderContentComponent = (props: OrderContent) => {
488
504
  <Table>
489
505
  <OText mBottom={4}>{t('SUBTOTAL_WITH_DISCOUNT', 'Subtotal with discount')}</OText>
490
506
  {order?.tax_type === 1 ? (
491
- <OText mBottom={4}>{parsePrice((order?.summary?.subtotal_with_discount + getIncludedTaxesDiscounts() ?? 0), { currency: order?.currency })}</OText>
507
+ <OText mBottom={4}>{parsePrice((order?.summary?.subtotal_with_discount + getIncludedTaxesDiscounts() ?? 0), { currency: getCurrenySymbol(order?.currency) })}</OText>
492
508
  ) : (
493
- <OText mBottom={4}>{parsePrice(order?.summary?.subtotal_with_discount ?? 0, { currency: order?.currency })}</OText>
509
+ <OText mBottom={4}>{parsePrice(order?.summary?.subtotal_with_discount ?? 0, { currency: getCurrenySymbol(order?.currency) })}</OText>
494
510
  )}
495
511
  </Table>
496
512
  )}
@@ -500,7 +516,7 @@ export const OrderContentComponent = (props: OrderContent) => {
500
516
  {t('TAX', 'Tax')} {`(${verifyDecimals(order?.tax, parseNumber)}%)`}
501
517
  </OText>
502
518
  <OText mBottom={4}>
503
- {parsePrice(order?.summary?.tax ?? 0, { currency: order?.currency })}
519
+ {parsePrice(order?.summary?.tax ?? 0, { currency: getCurrenySymbol(order?.currency) })}
504
520
  </OText>
505
521
  </Table>
506
522
  )}
@@ -511,20 +527,20 @@ export const OrderContentComponent = (props: OrderContent) => {
511
527
  {t('SERVICE_FEE', 'Service fee')}
512
528
  {`(${verifyDecimals(order?.service_fee, parseNumber)}%)`}
513
529
  </OText>
514
- <OText mBottom={4}>{parsePrice(order?.summary?.service_fee ?? 0, { currency: order?.currency })}</OText>
530
+ <OText mBottom={4}>{parsePrice(order?.summary?.service_fee ?? 0, { currency: getCurrenySymbol(order?.currency) })}</OText>
515
531
  </Table>
516
532
  )
517
533
  }
518
534
  {
519
- order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0).map((tax: any) => (
535
+ order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0 && tax?.target === 'product').map((tax: any) => (
520
536
  <Table key={tax.id}>
521
537
  <OSRow>
522
538
  <OText mBottom={4}>
523
- {t(tax?.name?.toUpperCase()?.replace(/ /g, '_'), tax?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
539
+ {t(tax?.name?.toUpperCase?.()?.replace(/ /g, '_'), tax?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
524
540
  {`(${verifyDecimals(tax?.rate, parseNumber)}%)`}{' '}
525
541
  </OText>
526
542
  </OSRow>
527
- <OText mBottom={4}>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0, { currency: order?.currency })}</OText>
543
+ <OText mBottom={4}>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0, { currency: getCurrenySymbol(order?.currency) })}</OText>
528
544
  </Table>
529
545
  ))
530
546
  }
@@ -533,11 +549,11 @@ export const OrderContentComponent = (props: OrderContent) => {
533
549
  <Table key={fee.id}>
534
550
  <OSRow>
535
551
  <OText mBottom={4}>
536
- {t(fee?.name?.toUpperCase()?.replace(/ /g, '_'), fee?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
537
- ({fee?.fixed > 0 && `${parsePrice(fee?.fixed, { currency: order?.currency })} + `}{fee.percentage}%){' '}
552
+ {t(fee?.name?.toUpperCase?.()?.replace(/ /g, '_'), fee?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
553
+ ({fee?.fixed > 0 && `${parsePrice(fee?.fixed, { currency: getCurrenySymbol(order?.currency) })} + `}{fee.percentage}%){' '}
538
554
  </OText>
539
555
  </OSRow>
540
- <OText mBottom={4}>{parsePrice(fee?.summary?.fixed + (fee?.summary?.percentage_after_discount ?? fee?.summary?.percentage) ?? 0, { currency: order?.currency })}</OText>
556
+ <OText mBottom={4}>{parsePrice(fee?.summary?.fixed + (fee?.summary?.percentage_after_discount ?? fee?.summary?.percentage) ?? 0, { currency: getCurrenySymbol(order?.currency) })}</OText>
541
557
  </Table>
542
558
  ))
543
559
  }
@@ -546,13 +562,13 @@ export const OrderContentComponent = (props: OrderContent) => {
546
562
  <Table key={offer.id}>
547
563
  <OSRow>
548
564
  <OText mBottom={4}>
549
- {t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
565
+ {t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
550
566
  {offer.rate_type === 1 && (
551
567
  <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
552
568
  )}
553
569
  </OText>
554
570
  </OSRow>
555
- <OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: order?.currency })}</OText>
571
+ <OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: getCurrenySymbol(order?.currency) })}</OText>
556
572
  </Table>
557
573
  ))
558
574
  }
@@ -564,23 +580,36 @@ export const OrderContentComponent = (props: OrderContent) => {
564
580
  </OText>
565
581
 
566
582
  <OText mBottom={4}>
567
- {parsePrice(order?.summary?.delivery_price, { currency: order?.currency })}
583
+ {parsePrice(order?.summary?.delivery_price + getIncludedTaxes(true), { currency: getCurrenySymbol(order?.currency) })}
568
584
  </OText>
569
585
  </Table>
570
586
  )
571
587
  }
588
+ {
589
+ order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0 && tax?.target === 'delivery_fee').map((tax: any, i: number) => (
590
+ <Table key={`${tax.description}_${i}`}>
591
+ <OSRow>
592
+ <OText mBottom={4}>
593
+ {tax.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
594
+ {`(${verifyDecimals(tax?.rate, parseNumber)}%)`}
595
+ </OText>
596
+ </OSRow>
597
+ <OText mBottom={4}>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0, { currency: getCurrenySymbol(order?.currency) })}</OText>
598
+ </Table>
599
+ ))
600
+ }
572
601
  {
573
602
  order?.offers?.length > 0 && order?.offers?.filter((offer: any) => offer?.target === 2)?.map((offer: any) => (
574
603
  <Table key={offer.id}>
575
604
  <OSRow>
576
605
  <OText mBottom={4}>
577
- {t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
606
+ {t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
578
607
  {offer.rate_type === 1 && (
579
- <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
608
+ <OText>{`(${verifyDecimals(offer?.rate, parsePrice, { currency: getCurrenySymbol(order?.currency) })}%)`}</OText>
580
609
  )}
581
610
  </OText>
582
611
  </OSRow>
583
- <OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: order?.currency })}</OText>
612
+ <OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: getCurrenySymbol(order?.currency) })}</OText>
584
613
  </Table>
585
614
  ))
586
615
  }
@@ -594,7 +623,7 @@ export const OrderContentComponent = (props: OrderContent) => {
594
623
  `(${verifyDecimals(order?.driver_tip, parseNumber)}%)`
595
624
  )}
596
625
  </OText>
597
- <OText mBottom={4}>{parsePrice(order?.summary?.driver_tip ?? order?.totalDriverTip, { currency: order?.currency })}</OText>
626
+ <OText mBottom={4}>{parsePrice(order?.summary?.driver_tip ?? order?.totalDriverTip, { currency: getCurrenySymbol(order?.currency) })}</OText>
598
627
  </Table>
599
628
  )}
600
629
 
@@ -608,7 +637,7 @@ export const OrderContentComponent = (props: OrderContent) => {
608
637
  mBottom={4}
609
638
  style={styles.textBold}
610
639
  color={theme.colors.primary}>
611
- {parsePrice(order?.summary?.total ?? order?.total, { currency: order?.currency })}
640
+ {parsePrice(order?.summary?.total ?? order?.total, { currency: getCurrenySymbol(order?.currency) })}
612
641
  </OText>
613
642
  </Table>
614
643
  </Total>
@@ -643,23 +672,81 @@ export const OrderContentComponent = (props: OrderContent) => {
643
672
  {event?.wallet_event
644
673
  ? walletName[event?.wallet_event?.wallet?.type]?.name
645
674
  : event?.paymethod?.gateway
646
- ? t(event?.paymethod?.gateway?.toUpperCase(), event?.paymethod?.name)
675
+ ? t(event?.paymethod?.gateway?.toUpperCase?.(), event?.paymethod?.name)
647
676
  : order?.paymethod?.id === event?.paymethod_id
648
- ? t(order?.paymethod?.gateway?.toUpperCase(), order?.paymethod?.name)
677
+ ? t(order?.paymethod?.gateway?.toUpperCase?.(), order?.paymethod?.name)
649
678
  : ''}
650
679
  </OText>
651
680
  </View>
652
681
  <OText>
653
682
  {(event?.paymethod?.gateway === 'cash' && order?.cash)
654
- ? parsePrice(order?.cash, { currency: order?.currency })
655
- : `-${parsePrice(event?.amount, { currency: order?.currency })}`}
683
+ ? parsePrice(order?.cash, { currency: getCurrenySymbol(order?.currency) })
684
+ : `-${parsePrice(event?.amount, { currency: getCurrenySymbol(order?.currency) })}`}
656
685
  </OText>
657
686
  </View>
658
687
  ))}
659
688
  </View>
660
689
  </View>
661
690
  )}
691
+
662
692
  </OrderBill >
693
+
694
+ {!!order?.spot_number && (
695
+ <OrderSpot vehicleExists={!!order?.vehicle}>
696
+ <Table>
697
+ <OText style={{ marginBottom: 5 }}>
698
+ {t('SPOT_NUMBER', 'Spot number')}
699
+ </OText>
700
+ <OText style={{ marginBottom: 5 }}>
701
+ {order?.spot_number}
702
+ </OText>
703
+ </Table>
704
+ </OrderSpot>
705
+ )}
706
+
707
+ {!!order?.vehicle && (
708
+ <OrderVehicle>
709
+ <OText
710
+ style={{ marginBottom: 5 }}
711
+ size={16}
712
+ weight="600"
713
+ color={theme.colors.textGray}>
714
+ {t('VEHICLE', 'Vehicle')}
715
+ </OText>
716
+ <Table>
717
+ <OText style={{ marginBottom: 5 }}>
718
+ {t('CAR_REGISTRATION', 'Car registration')}
719
+ </OText>
720
+ <OText style={{ marginBottom: 5 }}>
721
+ {order?.vehicle?.car_registration}
722
+ </OText>
723
+ </Table>
724
+ <Table>
725
+ <OText style={{ marginBottom: 5 }}>
726
+ {t('COLOR', 'Color')}
727
+ </OText>
728
+ <OText style={{ marginBottom: 5 }}>
729
+ {order?.vehicle?.color}
730
+ </OText>
731
+ </Table>
732
+ <Table>
733
+ <OText style={{ marginBottom: 5 }}>
734
+ {t('MODEL', 'Model')}
735
+ </OText>
736
+ <OText style={{ marginBottom: 5 }}>
737
+ {order?.vehicle?.model}
738
+ </OText>
739
+ </Table>
740
+ <Table>
741
+ <OText style={{ marginBottom: 5 }}>
742
+ {t('TYPE', 'Type')}
743
+ </OText>
744
+ <OText style={{ marginBottom: 5 }}>
745
+ {order?.vehicle?.type}
746
+ </OText>
747
+ </Table>
748
+ </OrderVehicle>
749
+ )}
663
750
  <OModal
664
751
  open={openReviewModal}
665
752
  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,21 @@ 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();
60
+ const [configState] = useConfig()
61
+ const [{ user }] = useSession()
52
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
68
+ const cateringTypes = [7, 8]
54
69
 
55
70
  const styles = StyleSheet.create({
56
71
  icons: {
@@ -88,6 +103,11 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
88
103
  19: theme.colors.statusOrderBlue,
89
104
  20: theme.colors.statusOrderBlue,
90
105
  21: theme.colors.statusOrderBlue,
106
+ 22: theme.colors.statusOrderBlue,
107
+ 23: theme.colors.statusOrderBlue,
108
+ 24: theme.colors.statusOrderBlue,
109
+ 25: theme.colors.statusOrderBlue,
110
+ 26: theme.colors.statusOrderBlue,
91
111
  //GREEN
92
112
  1: theme.colors.statusOrderGreen,
93
113
  11: theme.colors.statusOrderGreen,
@@ -188,18 +208,20 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
188
208
  style={styles.icons}
189
209
  onClick={() => handleOpenMapView()}
190
210
  />
191
-
192
- <OIconButton
193
- icon={theme.images.general.messages}
194
- iconStyle={{
195
- width: 20,
196
- height: 20,
197
- tintColor: theme.colors.textGray,
198
- }}
199
- borderColor={theme.colors.clear}
200
- style={styles.icons}
201
- onClick={() => handleOpenMessagesForBusiness()}
202
- />
211
+ <Messages>
212
+ {filteredMessages?.filter((message: any) => message?.author_id !== user?.id && !message?.read)?.length > 0 && <Dot />}
213
+ <OIconButton
214
+ icon={theme.images.general.messages}
215
+ iconStyle={{
216
+ width: 20,
217
+ height: 20,
218
+ tintColor: theme.colors.textGray,
219
+ }}
220
+ borderColor={theme.colors.clear}
221
+ style={styles.icons}
222
+ onClick={() => handleOpenMessagesForBusiness()}
223
+ />
224
+ </Messages>
203
225
  </Actions>
204
226
  )}
205
227
  </Header>
@@ -207,12 +229,18 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
207
229
  <OrderHeader>
208
230
  {!props.isCustomView ? (
209
231
  <OText size={13} style={{ marginBottom: 5 }}>
210
- {deliveryDate()}
232
+ <>
233
+ {cateringTypes.includes(order?.delivery_type) ? `${t('CREATED_AT', 'Created at')}: ${parseDate(order?.created_at)}\n` : ''}
234
+ {cateringTypes.includes(order?.delivery_type) ? `${t('PLACED_TO', 'Placed to')}: ` : ''}{deliveryDate()}
235
+ </>
211
236
  </OText>
212
237
  ) : (
213
238
  <Header style={{ alignItems: 'center' }}>
214
239
  <OText size={13} style={{ marginBottom: 5 }}>
215
- {deliveryDate()}
240
+ <>
241
+ {cateringTypes.includes(order?.delivery_type) ? `${t('CREATED_AT', 'Created at')}: ${parseDate(order?.created_at)}\n` : ''}
242
+ {cateringTypes.includes(order?.delivery_type) ? `${t('PLACED_TO', 'Placed to')}: ` : ''}{deliveryDate()}
243
+ </>
216
244
  </OText>
217
245
 
218
246
  {(!order?.isLogistic || (!logisticOrderStatus?.includes(order?.status) && !order?.order_group)) && (
@@ -251,7 +279,6 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
251
279
  style={styles.icons}
252
280
  onClick={() => handleOpenMapView()}
253
281
  />
254
-
255
282
  <OIconButton
256
283
  icon={theme.images.general.messages}
257
284
  iconStyle={{
@@ -270,7 +297,7 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
270
297
 
271
298
  <OText numberOfLines={2} size={20} weight="600">
272
299
  <>
273
- {`${t('INVOICE_ORDER_NO', 'Order No.')} ${order?.id} `}
300
+ {`${t('INVOICE_ORDER_NO', 'Order No.')} ${showExternalId ? order?.external_id || order?.id : order?.id} `}
274
301
  {!order?.isLogistic && (!order?.order_group_id || !logisticOrderStatus?.includes(order?.status)) && (
275
302
  <>
276
303
  {t('IS', 'is')}{' '}
@@ -284,7 +311,7 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
284
311
  )}
285
312
  </>
286
313
  </OText>
287
- {order?.external_id && (
314
+ {order?.external_id && !showExternalId && (
288
315
  <OText size={13}>
289
316
  <OText size={13} weight='bold'>{`${t('EXTERNAL_ID', 'External ID :')} `}</OText>
290
317
  {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
+ `;