ordering-ui-react-native 0.22.32 → 0.22.33-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 (163) 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 +1 -4
  19. package/themes/business/src/components/LoginForm/index.tsx +123 -98
  20. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  21. package/themes/business/src/components/MapView/index.tsx +46 -29
  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 +156 -46
  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 +222 -158
  33. package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
  34. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +30 -18
  35. package/themes/business/src/components/PreviousOrders/index.tsx +74 -66
  36. package/themes/business/src/components/PreviousOrders/styles.tsx +2 -1
  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 +57 -24
  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 +18 -5
  54. package/themes/business/src/utils/index.tsx +28 -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 +27 -16
  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 +14 -6
  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 +2 -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 -52
  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 +462 -461
  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 +30 -38
  130. package/themes/original/src/components/ProductOptionSubOption/index.tsx +16 -8
  131. package/themes/original/src/components/ProfessionalProfile/index.tsx +4 -5
  132. package/themes/original/src/components/Promotions/index.tsx +6 -9
  133. package/themes/original/src/components/ReviewDriver/index.tsx +1 -1
  134. package/themes/original/src/components/ReviewOrder/index.tsx +2 -2
  135. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  136. package/themes/original/src/components/ReviewTrigger/index.tsx +2 -2
  137. package/themes/original/src/components/ServiceForm/index.tsx +52 -54
  138. package/themes/original/src/components/Sessions/index.tsx +3 -3
  139. package/themes/original/src/components/SignupForm/index.tsx +102 -88
  140. package/themes/original/src/components/SingleOrderCard/index.tsx +6 -4
  141. package/themes/original/src/components/SingleProductCard/index.tsx +5 -5
  142. package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
  143. package/themes/original/src/components/StripeCardForm/index.tsx +0 -3
  144. package/themes/original/src/components/StripeCardsList/index.tsx +16 -3
  145. package/themes/original/src/components/StripeElementsForm/index.tsx +10 -4
  146. package/themes/original/src/components/StripeElementsForm/naked.tsx +1 -1
  147. package/themes/original/src/components/StripeRedirectForm/index.tsx +0 -3
  148. package/themes/original/src/components/TaxInformation/index.tsx +3 -2
  149. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +10 -7
  150. package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +8 -3
  151. package/themes/original/src/components/UserDetails/index.tsx +17 -16
  152. package/themes/original/src/components/UserFormDetails/index.tsx +169 -139
  153. package/themes/original/src/components/UserProfile/index.tsx +9 -1
  154. package/themes/original/src/components/UserVerification/index.tsx +15 -4
  155. package/themes/original/src/components/Wallets/index.tsx +6 -3
  156. package/themes/original/src/components/WebsocketStatus/index.tsx +1 -4
  157. package/themes/original/src/components/shared/OAlert.tsx +2 -1
  158. package/themes/original/src/components/shared/OButton.tsx +5 -4
  159. package/themes/original/src/components/shared/OInput.tsx +4 -8
  160. package/themes/original/src/components/shared/OModal.tsx +7 -2
  161. package/themes/original/src/types/index.tsx +12 -4
  162. package/themes/original/src/utils/index.tsx +30 -1
  163. 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,11 @@ 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]
73
+
74
+ const commentDivide = ordering?.project?.includes('delosi')
75
+ ? order?.comment?.split('Total')
76
+ : [order?.comment]
69
77
 
70
78
  const walletName: any = {
71
79
  cash: {
@@ -97,19 +105,21 @@ export const OrderContentComponent = (props: OrderContent) => {
97
105
  }
98
106
  })
99
107
 
100
- const getIncludedTaxes = () => {
108
+ const getIncludedTaxes = (isDeliveryFee?: boolean) => {
101
109
  if (!order?.taxes) return 0
102
110
  if (order?.taxes?.length === 0) {
103
111
  return order.tax_type === 1 ? order?.summary?.tax ?? 0 : 0
104
112
  } else {
105
113
  return order?.taxes.reduce((taxIncluded: number, tax: any) => {
106
- return taxIncluded + (tax.type === 1 ? tax.summary?.tax : 0)
114
+ return taxIncluded +
115
+ (((!isDeliveryFee && tax.type === 1 && tax.target === 'product') ||
116
+ (isDeliveryFee && tax.type === 1 && tax.target === 'delivery_fee')) ? tax.summary?.tax : 0)
107
117
  }, 0)
108
118
  }
109
119
  }
110
120
 
111
121
  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)
122
+ 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
123
  }
114
124
 
115
125
  const containsOnlyNumbers = (str: string) => {
@@ -230,7 +240,7 @@ export const OrderContentComponent = (props: OrderContent) => {
230
240
  )}
231
241
  {!!order?.business?.location && order?.customer?.location && (
232
242
  <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)}
243
+ {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
244
  </OText>
235
245
  )}
236
246
  {!!order?.business?.address_notes && (
@@ -408,16 +418,16 @@ export const OrderContentComponent = (props: OrderContent) => {
408
418
  {t('ON_BEHALF_OF', 'On behalf of')}{': '} {order?.on_behalf_of}
409
419
  </OText>
410
420
  )}
411
- {(order?.delivery_option !== undefined && order?.delivery_type === 1) && (
421
+ {(order?.delivery_option !== undefined && deliveryTypes.includes(order?.delivery_type)) && (
412
422
  <View style={{ marginTop: 10 }}>
413
- {order?.delivery_option !== undefined && order?.delivery_type === 1 && (
423
+ {order?.delivery_option !== undefined && deliveryTypes.includes(order?.delivery_type) && (
414
424
  <OText>
415
- {t(order?.delivery_option?.name?.toUpperCase()?.replace(/ /g, '_'), order?.delivery_option?.name)}
425
+ {t(order?.delivery_option?.name?.toUpperCase?.()?.replace(/ /g, '_'), order?.delivery_option?.name)}
416
426
  </OText>
417
427
  )}
418
428
  </View>
419
429
  )}
420
- {!order?.user_review && pastOrderStatuses.includes(order?.status) && (
430
+ {!order?.user_review && pastOrderStatuses.includes(order?.status) && order?.customer_id && (
421
431
  <OButton
422
432
  style={styles.btnReview}
423
433
  textStyle={{ color: theme.colors.white }}
@@ -434,9 +444,29 @@ export const OrderContentComponent = (props: OrderContent) => {
434
444
  </OText>
435
445
 
436
446
  {!!order?.comment && (
437
- <OText>
438
- {`${t('ORDER_COMMENT', 'Order Comment')}: ${order?.comment}`}
439
- </OText>
447
+ <View>
448
+ <OText>
449
+ {`${t('ORDER_COMMENT', 'Order Comment')}: `}
450
+ </OText>
451
+ {commentDivide?.map((fragment: string, i: number) => (
452
+ <View
453
+ {...(ordering?.project?.includes('delosi') && i === 1 && {
454
+ backgroundColor: theme.colors.primary,
455
+ weight: 'bold',
456
+ padding: 10
457
+ })}
458
+ >
459
+ <OText
460
+ {...(ordering?.project?.includes('delosi') && i === 1 && {
461
+ color: theme.colors.white,
462
+ weight: 'bold'
463
+ })}
464
+ >
465
+ {ordering?.project?.includes('delosi') && i === 1 ? t('TOTAL', 'Total') : ''}{fragment}
466
+ </OText>
467
+ </View>
468
+ ))}
469
+ </View>
440
470
  )}
441
471
 
442
472
  {order?.products?.length > 0 &&
@@ -449,11 +479,11 @@ export const OrderContentComponent = (props: OrderContent) => {
449
479
  ))}
450
480
  </OrderProducts>
451
481
 
452
- <OrderBill>
482
+ <OrderBill vehicleExists={!!order?.vehicle}>
453
483
  <Table>
454
484
  <OText mBottom={4}>{t('SUBTOTAL', 'Subtotal')}</OText>
455
485
  <OText mBottom={4}>
456
- {parsePrice(((order?.summary?.subtotal ?? order?.subtotal) + getIncludedTaxes()), { currency: order?.currency })}
486
+ {parsePrice(((order?.summary?.subtotal ?? order?.subtotal) + getIncludedTaxes()), { currency: getCurrenySymbol(order?.currency) })}
457
487
  </OText>
458
488
  </Table>
459
489
  {(order?.summary?.discount > 0 ?? order?.discount > 0) && order?.offers?.length === 0 && (
@@ -466,7 +496,7 @@ export const OrderContentComponent = (props: OrderContent) => {
466
496
  ) : (
467
497
  <OText mBottom={4}>{t('DISCOUNT', theme?.defaultLanguages?.DISCOUNT || 'Discount')}</OText>
468
498
  )}
469
- <OText>- {parsePrice(order?.summary?.discount ?? order?.discount, { currency: order?.currency })}</OText>
499
+ <OText>- {parsePrice(order?.summary?.discount ?? order?.discount, { currency: getCurrenySymbol(order?.currency) })}</OText>
470
500
  </Table>
471
501
  )}
472
502
  {
@@ -474,13 +504,13 @@ export const OrderContentComponent = (props: OrderContent) => {
474
504
  <Table key={offer.id}>
475
505
  <OSRow>
476
506
  <OText mBottom={4}>
477
- {t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
507
+ {t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
478
508
  {offer.rate_type === 1 && (
479
509
  <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
480
510
  )}
481
511
  </OText>
482
512
  </OSRow>
483
- <OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: order?.currency })}</OText>
513
+ <OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: getCurrenySymbol(order?.currency) })}</OText>
484
514
  </Table>
485
515
  ))
486
516
  }
@@ -488,9 +518,9 @@ export const OrderContentComponent = (props: OrderContent) => {
488
518
  <Table>
489
519
  <OText mBottom={4}>{t('SUBTOTAL_WITH_DISCOUNT', 'Subtotal with discount')}</OText>
490
520
  {order?.tax_type === 1 ? (
491
- <OText mBottom={4}>{parsePrice((order?.summary?.subtotal_with_discount + getIncludedTaxesDiscounts() ?? 0), { currency: order?.currency })}</OText>
521
+ <OText mBottom={4}>{parsePrice((order?.summary?.subtotal_with_discount + getIncludedTaxesDiscounts() ?? 0), { currency: getCurrenySymbol(order?.currency) })}</OText>
492
522
  ) : (
493
- <OText mBottom={4}>{parsePrice(order?.summary?.subtotal_with_discount ?? 0, { currency: order?.currency })}</OText>
523
+ <OText mBottom={4}>{parsePrice(order?.summary?.subtotal_with_discount ?? 0, { currency: getCurrenySymbol(order?.currency) })}</OText>
494
524
  )}
495
525
  </Table>
496
526
  )}
@@ -500,7 +530,7 @@ export const OrderContentComponent = (props: OrderContent) => {
500
530
  {t('TAX', 'Tax')} {`(${verifyDecimals(order?.tax, parseNumber)}%)`}
501
531
  </OText>
502
532
  <OText mBottom={4}>
503
- {parsePrice(order?.summary?.tax ?? 0, { currency: order?.currency })}
533
+ {parsePrice(order?.summary?.tax ?? 0, { currency: getCurrenySymbol(order?.currency) })}
504
534
  </OText>
505
535
  </Table>
506
536
  )}
@@ -511,20 +541,20 @@ export const OrderContentComponent = (props: OrderContent) => {
511
541
  {t('SERVICE_FEE', 'Service fee')}
512
542
  {`(${verifyDecimals(order?.service_fee, parseNumber)}%)`}
513
543
  </OText>
514
- <OText mBottom={4}>{parsePrice(order?.summary?.service_fee ?? 0, { currency: order?.currency })}</OText>
544
+ <OText mBottom={4}>{parsePrice(order?.summary?.service_fee ?? 0, { currency: getCurrenySymbol(order?.currency) })}</OText>
515
545
  </Table>
516
546
  )
517
547
  }
518
548
  {
519
- order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0).map((tax: any) => (
549
+ order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0 && tax?.target === 'product').map((tax: any) => (
520
550
  <Table key={tax.id}>
521
551
  <OSRow>
522
552
  <OText mBottom={4}>
523
- {t(tax?.name?.toUpperCase()?.replace(/ /g, '_'), tax?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
553
+ {t(tax?.name?.toUpperCase?.()?.replace(/ /g, '_'), tax?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
524
554
  {`(${verifyDecimals(tax?.rate, parseNumber)}%)`}{' '}
525
555
  </OText>
526
556
  </OSRow>
527
- <OText mBottom={4}>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0, { currency: order?.currency })}</OText>
557
+ <OText mBottom={4}>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0, { currency: getCurrenySymbol(order?.currency) })}</OText>
528
558
  </Table>
529
559
  ))
530
560
  }
@@ -533,11 +563,11 @@ export const OrderContentComponent = (props: OrderContent) => {
533
563
  <Table key={fee.id}>
534
564
  <OSRow>
535
565
  <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}%){' '}
566
+ {t(fee?.name?.toUpperCase?.()?.replace(/ /g, '_'), fee?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
567
+ ({fee?.fixed > 0 && `${parsePrice(fee?.fixed, { currency: getCurrenySymbol(order?.currency) })} + `}{fee.percentage}%){' '}
538
568
  </OText>
539
569
  </OSRow>
540
- <OText mBottom={4}>{parsePrice(fee?.summary?.fixed + (fee?.summary?.percentage_after_discount ?? fee?.summary?.percentage) ?? 0, { currency: order?.currency })}</OText>
570
+ <OText mBottom={4}>{parsePrice(fee?.summary?.fixed + (fee?.summary?.percentage_after_discount ?? fee?.summary?.percentage) ?? 0, { currency: getCurrenySymbol(order?.currency) })}</OText>
541
571
  </Table>
542
572
  ))
543
573
  }
@@ -546,13 +576,13 @@ export const OrderContentComponent = (props: OrderContent) => {
546
576
  <Table key={offer.id}>
547
577
  <OSRow>
548
578
  <OText mBottom={4}>
549
- {t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
579
+ {t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
550
580
  {offer.rate_type === 1 && (
551
581
  <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
552
582
  )}
553
583
  </OText>
554
584
  </OSRow>
555
- <OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: order?.currency })}</OText>
585
+ <OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: getCurrenySymbol(order?.currency) })}</OText>
556
586
  </Table>
557
587
  ))
558
588
  }
@@ -564,23 +594,36 @@ export const OrderContentComponent = (props: OrderContent) => {
564
594
  </OText>
565
595
 
566
596
  <OText mBottom={4}>
567
- {parsePrice(order?.summary?.delivery_price, { currency: order?.currency })}
597
+ {parsePrice(order?.summary?.delivery_price + getIncludedTaxes(true), { currency: getCurrenySymbol(order?.currency) })}
568
598
  </OText>
569
599
  </Table>
570
600
  )
571
601
  }
602
+ {
603
+ order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0 && tax?.target === 'delivery_fee').map((tax: any, i: number) => (
604
+ <Table key={`${tax.description}_${i}`}>
605
+ <OSRow>
606
+ <OText mBottom={4}>
607
+ {tax.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
608
+ {`(${verifyDecimals(tax?.rate, parseNumber)}%)`}
609
+ </OText>
610
+ </OSRow>
611
+ <OText mBottom={4}>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0, { currency: getCurrenySymbol(order?.currency) })}</OText>
612
+ </Table>
613
+ ))
614
+ }
572
615
  {
573
616
  order?.offers?.length > 0 && order?.offers?.filter((offer: any) => offer?.target === 2)?.map((offer: any) => (
574
617
  <Table key={offer.id}>
575
618
  <OSRow>
576
619
  <OText mBottom={4}>
577
- {t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
620
+ {t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
578
621
  {offer.rate_type === 1 && (
579
- <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
622
+ <OText>{`(${verifyDecimals(offer?.rate, parsePrice, { currency: getCurrenySymbol(order?.currency) })}%)`}</OText>
580
623
  )}
581
624
  </OText>
582
625
  </OSRow>
583
- <OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: order?.currency })}</OText>
626
+ <OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: getCurrenySymbol(order?.currency) })}</OText>
584
627
  </Table>
585
628
  ))
586
629
  }
@@ -594,7 +637,7 @@ export const OrderContentComponent = (props: OrderContent) => {
594
637
  `(${verifyDecimals(order?.driver_tip, parseNumber)}%)`
595
638
  )}
596
639
  </OText>
597
- <OText mBottom={4}>{parsePrice(order?.summary?.driver_tip ?? order?.totalDriverTip, { currency: order?.currency })}</OText>
640
+ <OText mBottom={4}>{parsePrice(order?.summary?.driver_tip ?? order?.totalDriverTip, { currency: getCurrenySymbol(order?.currency) })}</OText>
598
641
  </Table>
599
642
  )}
600
643
 
@@ -608,14 +651,19 @@ export const OrderContentComponent = (props: OrderContent) => {
608
651
  mBottom={4}
609
652
  style={styles.textBold}
610
653
  color={theme.colors.primary}>
611
- {parsePrice(order?.summary?.total ?? order?.total, { currency: order?.currency })}
654
+ {parsePrice(order?.summary?.total ?? order?.total, { currency: getCurrenySymbol(order?.currency) })}
612
655
  </OText>
613
656
  </Table>
614
657
  </Total>
615
658
 
616
659
  {order?.payment_events?.length > 0 && (
617
- <View>
618
- <OText size={14} color={theme.colors.textNormal}>{t('PAYMENTS', 'Payments')}</OText>
660
+ <View
661
+ style={{
662
+ backgroundColor: theme?.colors?.primary,
663
+ padding: 10
664
+ }}
665
+ >
666
+ <OText size={14} color={theme?.colors?.white}>{t('PAYMENTS', 'Payments')}</OText>
619
667
  <View
620
668
  style={{
621
669
  width: '100%',
@@ -639,27 +687,89 @@ export const OrderContentComponent = (props: OrderContent) => {
639
687
  flexDirection: 'column',
640
688
  }}
641
689
  >
642
- <OText>
690
+ <OText
691
+ color={theme?.colors?.white}
692
+ >
643
693
  {event?.wallet_event
644
694
  ? walletName[event?.wallet_event?.wallet?.type]?.name
645
695
  : event?.paymethod?.gateway
646
- ? t(event?.paymethod?.gateway?.toUpperCase(), event?.paymethod?.name)
696
+ ? t(event?.paymethod?.gateway?.toUpperCase?.(), event?.paymethod?.name)
647
697
  : order?.paymethod?.id === event?.paymethod_id
648
- ? t(order?.paymethod?.gateway?.toUpperCase(), order?.paymethod?.name)
698
+ ? t(order?.paymethod?.gateway?.toUpperCase?.(), order?.paymethod?.name)
649
699
  : ''}
650
700
  </OText>
651
701
  </View>
652
- <OText>
702
+ <OText
703
+ color={theme?.colors?.white}
704
+ >
653
705
  {(event?.paymethod?.gateway === 'cash' && order?.cash)
654
- ? parsePrice(order?.cash, { currency: order?.currency })
655
- : `-${parsePrice(event?.amount, { currency: order?.currency })}`}
706
+ ? parsePrice(order?.cash, { currency: getCurrenySymbol(order?.currency) })
707
+ : `-${parsePrice(event?.amount, { currency: getCurrenySymbol(order?.currency) })}`}
656
708
  </OText>
657
709
  </View>
658
710
  ))}
659
711
  </View>
660
712
  </View>
661
713
  )}
662
- </OrderBill >
714
+
715
+ </OrderBill>
716
+
717
+ {!!order?.spot_number && (
718
+ <OrderSpot vehicleExists={!!order?.vehicle}>
719
+ <Table>
720
+ <OText style={{ marginBottom: 5 }}>
721
+ {t('SPOT_NUMBER', 'Spot number')}
722
+ </OText>
723
+ <OText style={{ marginBottom: 5 }}>
724
+ {order?.spot_number}
725
+ </OText>
726
+ </Table>
727
+ </OrderSpot>
728
+ )}
729
+
730
+ {!!order?.vehicle && (
731
+ <OrderVehicle>
732
+ <OText
733
+ style={{ marginBottom: 5 }}
734
+ size={16}
735
+ weight="600"
736
+ color={theme.colors.textGray}>
737
+ {t('VEHICLE', 'Vehicle')}
738
+ </OText>
739
+ <Table>
740
+ <OText style={{ marginBottom: 5 }}>
741
+ {t('CAR_REGISTRATION', 'Car registration')}
742
+ </OText>
743
+ <OText style={{ marginBottom: 5 }}>
744
+ {order?.vehicle?.car_registration}
745
+ </OText>
746
+ </Table>
747
+ <Table>
748
+ <OText style={{ marginBottom: 5 }}>
749
+ {t('COLOR', 'Color')}
750
+ </OText>
751
+ <OText style={{ marginBottom: 5 }}>
752
+ {order?.vehicle?.color}
753
+ </OText>
754
+ </Table>
755
+ <Table>
756
+ <OText style={{ marginBottom: 5 }}>
757
+ {t('MODEL', 'Model')}
758
+ </OText>
759
+ <OText style={{ marginBottom: 5 }}>
760
+ {order?.vehicle?.model}
761
+ </OText>
762
+ </Table>
763
+ <Table>
764
+ <OText style={{ marginBottom: 5 }}>
765
+ {t('TYPE', 'Type')}
766
+ </OText>
767
+ <OText style={{ marginBottom: 5 }}>
768
+ {order?.vehicle?.type}
769
+ </OText>
770
+ </Table>
771
+ </OrderVehicle>
772
+ )}
663
773
  <OModal
664
774
  open={openReviewModal}
665
775
  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
+ `;