ordering-ui-react-native 0.22.75 → 0.22.76-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 (137) hide show
  1. package/package.json +5 -7
  2. package/src/components/BusinessesListing/index.tsx +1 -1
  3. package/src/components/Checkout/index.tsx +40 -39
  4. package/src/components/VerifyPhone/styles.tsx +1 -2
  5. package/src/context/OfflineActions/index.tsx +236 -0
  6. package/src/providers/AlertProvider.tsx +3 -1
  7. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +5 -3
  8. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
  9. package/themes/business/src/components/BusinessController/index.tsx +8 -3
  10. package/themes/business/src/components/BusinessProductList/index.tsx +3 -2
  11. package/themes/business/src/components/Chat/index.tsx +15 -3
  12. package/themes/business/src/components/DriverMap/index.tsx +44 -33
  13. package/themes/business/src/components/FloatingButton/index.tsx +3 -2
  14. package/themes/business/src/components/LanguageSelector/index.tsx +1 -1
  15. package/themes/business/src/components/LoginForm/index.tsx +123 -98
  16. package/themes/business/src/components/LogoutButton/index.tsx +13 -4
  17. package/themes/business/src/components/MapView/RenderMarker.tsx +146 -0
  18. package/themes/business/src/components/MapView/index.tsx +68 -142
  19. package/themes/business/src/components/NewOrderNotification/index.tsx +38 -54
  20. package/themes/business/src/components/OrderDetails/Business.tsx +56 -20
  21. package/themes/business/src/components/OrderDetails/Delivery.tsx +111 -42
  22. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +146 -36
  23. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +51 -28
  24. package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
  25. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +17 -16
  26. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
  27. package/themes/business/src/components/OrderSummary/index.tsx +271 -176
  28. package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
  29. package/themes/business/src/components/OrdersOption/index.tsx +207 -144
  30. package/themes/business/src/components/OrdersOption/styles.tsx +14 -0
  31. package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
  32. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +20 -8
  33. package/themes/business/src/components/PreviousOrders/index.tsx +74 -66
  34. package/themes/business/src/components/PreviousOrders/styles.tsx +2 -1
  35. package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
  36. package/themes/business/src/components/PrinterEdition/index.tsx +143 -75
  37. package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
  38. package/themes/business/src/components/PrinterSettings/index.tsx +1 -1
  39. package/themes/business/src/components/ProductItemAccordion/index.tsx +15 -16
  40. package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
  41. package/themes/business/src/components/StoresList/index.tsx +2 -2
  42. package/themes/business/src/components/UserProfileForm/index.tsx +48 -10
  43. package/themes/business/src/components/UserProfileForm/styles.tsx +7 -0
  44. package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
  45. package/themes/business/src/config/currency.tsx +1010 -0
  46. package/themes/business/src/hooks/useLocation.tsx +16 -12
  47. package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
  48. package/themes/business/src/types/index.tsx +26 -4
  49. package/themes/business/src/utils/index.tsx +26 -2
  50. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  51. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  52. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  53. package/themes/kiosk/src/components/Checkout/index.tsx +9 -5
  54. package/themes/kiosk/src/components/CustomerName/index.tsx +1 -1
  55. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  56. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  57. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  58. package/themes/kiosk/src/components/PaymentOptions/index.tsx +121 -57
  59. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  60. package/themes/original/index.tsx +223 -219
  61. package/themes/original/src/components/AddressForm/index.tsx +56 -17
  62. package/themes/original/src/components/AppleLogin/index.tsx +3 -4
  63. package/themes/original/src/components/BusinessController/index.tsx +4 -2
  64. package/themes/original/src/components/BusinessItemAccordion/index.tsx +8 -3
  65. package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +102 -90
  66. package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +7 -3
  67. package/themes/original/src/components/BusinessListingSearch/index.tsx +8 -13
  68. package/themes/original/src/components/BusinessPreorder/index.tsx +30 -17
  69. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +72 -69
  70. package/themes/original/src/components/BusinessProductsList/index.tsx +4 -5
  71. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  72. package/themes/original/src/components/BusinessProductsListing/index.tsx +5 -4
  73. package/themes/original/src/components/BusinessesListing/Layout/Appointment/styles.tsx +1 -0
  74. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +2 -1
  75. package/themes/original/src/components/Cart/index.tsx +43 -12
  76. package/themes/original/src/components/Checkout/index.tsx +126 -98
  77. package/themes/original/src/components/FloatingButton/index.tsx +1 -1
  78. package/themes/original/src/components/GPSButton/index.tsx +2 -1
  79. package/themes/original/src/components/GoogleMap/index.tsx +3 -2
  80. package/themes/original/src/components/Help/functions.tsx +76 -0
  81. package/themes/original/src/components/Help/index.tsx +74 -29
  82. package/themes/original/src/components/Help/styles.tsx +4 -1
  83. package/themes/original/src/components/HelpOptions/index.tsx +53 -0
  84. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
  85. package/themes/original/src/components/Home/index.tsx +36 -11
  86. package/themes/original/src/components/LastOrder/index.tsx +1 -1
  87. package/themes/original/src/components/LoginForm/index.tsx +11 -5
  88. package/themes/original/src/components/MessageListing/index.tsx +1 -1
  89. package/themes/original/src/components/Messages/index.tsx +562 -555
  90. package/themes/original/src/components/MomentOption/TimeListItem.tsx +56 -0
  91. package/themes/original/src/components/MomentOption/index.tsx +141 -61
  92. package/themes/original/src/components/MomentOption/styles.tsx +1 -1
  93. package/themes/original/src/components/MomentSelector/index.tsx +5 -2
  94. package/themes/original/src/components/MultiCheckout/index.tsx +78 -33
  95. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +2 -2
  96. package/themes/original/src/components/MultiOrdersDetails/index.tsx +2 -2
  97. package/themes/original/src/components/NavBar/index.tsx +6 -2
  98. package/themes/original/src/components/NotFoundSource/index.tsx +40 -39
  99. package/themes/original/src/components/NotFoundSource/styles.tsx +18 -9
  100. package/themes/original/src/components/OrderDetails/OrderEta.tsx +4 -3
  101. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +11 -4
  102. package/themes/original/src/components/OrderDetails/index.tsx +44 -20
  103. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  104. package/themes/original/src/components/OrderProgress/index.tsx +5 -4
  105. package/themes/original/src/components/OrderSummary/index.tsx +32 -11
  106. package/themes/original/src/components/OrderTypeSelector/index.tsx +120 -120
  107. package/themes/original/src/components/OrdersOption/index.tsx +325 -325
  108. package/themes/original/src/components/PaymentOptionWallet/index.tsx +1 -0
  109. package/themes/original/src/components/PaymentOptions/index.tsx +471 -459
  110. package/themes/original/src/components/PhoneInputNumber/index.tsx +92 -7
  111. package/themes/original/src/components/ProductItemAccordion/index.tsx +28 -37
  112. package/themes/original/src/components/ProductOptionSubOption/index.tsx +15 -14
  113. package/themes/original/src/components/ServiceForm/index.tsx +2 -2
  114. package/themes/original/src/components/SignupForm/index.tsx +40 -24
  115. package/themes/original/src/components/SingleOrderCard/index.tsx +8 -5
  116. package/themes/original/src/components/SingleProductCard/index.tsx +2 -1
  117. package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
  118. package/themes/original/src/components/StripeCardsList/index.tsx +7 -1
  119. package/themes/original/src/components/StripeElementsForm/index.tsx +2 -2
  120. package/themes/original/src/components/TaxInformation/index.tsx +3 -2
  121. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +7 -2
  122. package/themes/original/src/components/UserDetails/index.tsx +17 -16
  123. package/themes/original/src/components/UserFormDetails/index.tsx +109 -67
  124. package/themes/original/src/components/UserVerification/index.tsx +18 -5
  125. package/themes/original/src/components/VerifyPhone/index.tsx +1 -1
  126. package/themes/original/src/components/shared/OInput.tsx +97 -97
  127. package/themes/original/src/components/shared/OModal.tsx +7 -2
  128. package/themes/original/src/providers/AlertProvider.tsx +1 -1
  129. package/themes/original/src/types/index.tsx +700 -695
  130. package/themes/original/src/utils/index.tsx +50 -34
  131. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
  132. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +0 -62
  133. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +0 -12
  134. package/themes/original/src/components/HelpGuide/index.tsx +0 -68
  135. package/themes/original/src/components/HelpGuide/styles.tsx +0 -12
  136. package/themes/original/src/components/HelpOrder/index.tsx +0 -71
  137. package/themes/original/src/components/HelpOrder/styles.tsx +0 -13
@@ -5,48 +5,49 @@ import { NotFoundSourceParams } from '../../types'
5
5
  import { useTheme } from 'styled-components/native';
6
6
  import Foundation from 'react-native-vector-icons/Foundation'
7
7
  import {
8
- NotFound,
9
- NotFoundImage
8
+ NotFound,
9
+ NotFoundImage
10
10
  } from './styles'
11
11
 
12
12
  export const NotFoundSource = (props: NotFoundSourceParams) => {
13
- const {
14
- hideImage,
15
- content,
16
- btnTitle,
17
- btnStyle,
18
- conditioned,
19
- onClickButton
20
- } = props
13
+ const {
14
+ hideImage,
15
+ content,
16
+ btnTitle,
17
+ btnStyle,
18
+ conditioned,
19
+ onClickButton,
20
+ simple
21
+ } = props
21
22
 
22
- const theme = useTheme();
23
+ const theme = useTheme();
23
24
 
24
- return (
25
- <NotFound>
26
- {!hideImage && (
27
- <NotFoundImage>
28
- <Foundation
29
- name='page-search'
30
- color={theme.colors.primary}
31
- size={60}
32
- style={{ marginBottom: 10 }}
33
- />
34
- </NotFoundImage>
35
- )}
36
- {content && conditioned && <OText color={theme.colors.disabled} size={16} style={{ textAlign: 'center' }}>{content}</OText>}
37
- {content && !conditioned && <OText color={theme.colors.disabled} size={16} style={{ textAlign: 'center' }}>{content}</OText>}
38
- {!onClickButton && props.children && (
39
- props.children
40
- )}
41
- {onClickButton && (
42
- <View style={{ marginTop: 10, width: '100%' }}>
43
- <OButton
44
- style={{ width: '100%', height: 50, ...btnStyle }}
45
- onClick={() => onClickButton()}
46
- text={btnTitle}
47
- />
48
- </View>
49
- )}
50
- </NotFound>
51
- )
25
+ return (
26
+ <NotFound simple={simple}>
27
+ {!hideImage && !simple && (
28
+ <NotFoundImage>
29
+ <Foundation
30
+ name='page-search'
31
+ color={theme.colors.primary}
32
+ size={60}
33
+ style={{ marginBottom: 10 }}
34
+ />
35
+ </NotFoundImage>
36
+ )}
37
+ {content && conditioned && <OText color={theme.colors.disabled} size={16} style={{ textAlign: 'center' }}>{content}</OText>}
38
+ {content && !conditioned && <OText color={theme.colors.disabled} size={16} style={{ textAlign: 'center' }}>{content}</OText>}
39
+ {!onClickButton && props.children && (
40
+ props.children
41
+ )}
42
+ {onClickButton && (
43
+ <View style={{ marginTop: 10, width: '100%' }}>
44
+ <OButton
45
+ style={{ width: '100%', height: 50, ...btnStyle }}
46
+ onClick={() => onClickButton()}
47
+ text={btnTitle}
48
+ />
49
+ </View>
50
+ )}
51
+ </NotFound>
52
+ )
52
53
  }
@@ -1,14 +1,23 @@
1
- import styled from 'styled-components/native'
1
+ import styled, { css } from 'styled-components/native'
2
2
 
3
3
  export const NotFound = styled.View`
4
- display: flex;
5
- flex-direction: column;
6
- justify-content: center;
7
- align-items: center;
8
- width: 100%;
9
- height: auto;
10
- margin: 10px auto;
11
- padding: 10px;
4
+ ${(props: any) => props.simple
5
+ ? css`
6
+ background-color: ${(props: any) => props.theme.colors?.white};
7
+ border-radius: 10px;
8
+ padding: 15px;
9
+ padding-horizontal: 20px;
10
+ border: 1px ${(props: any) => props.theme.colors?.border};
11
+ ` : css`
12
+ display: flex;
13
+ flex-direction: column;
14
+ justify-content: center;
15
+ align-items: center;
16
+ width: 100%;
17
+ height: auto;
18
+ margin: auto auto;
19
+ padding: 10px;
20
+ `}
12
21
  `
13
22
 
14
23
  export const NotFoundImage = styled.View`
@@ -10,13 +10,14 @@ export const OrderEta = (props: any) => {
10
10
 
11
11
  const [{ parseDate }] = useUtils()
12
12
  const [estimatedDeliveryTime, setEstimatedDeliveryTime] = useState(null)
13
-
13
+ const deliveryTypes = [1, 7]
14
+
14
15
  const getEstimatedDeliveryTime = () => {
15
16
  let estimatedUtcTime = null
16
17
  let totalEta = 0
17
18
  if (order?.delivered_in) totalEta += order?.delivered_in
18
19
  if (order?.prepared_in) totalEta += order?.prepared_in
19
- if (order?.delivery_type === 1 && order?.eta_drive_time) {
20
+ if (deliveryTypes?.includes?.(order?.delivery_type) && order?.eta_drive_time) {
20
21
  totalEta += order?.eta_drive_time
21
22
  }
22
23
 
@@ -57,7 +58,7 @@ export const OrderEta = (props: any) => {
57
58
  }
58
59
  estimatedUtcTime = moment.utc(_delivery).add(totalEta, 'minutes')
59
60
  const _estimatedTime = outputFormat ? moment(estimatedUtcTime).local().format(outputFormat) : parseDate(estimatedUtcTime, { utc: false })
60
- setEstimatedDeliveryTime(_estimatedTime)
61
+ setEstimatedDeliveryTime(order?.status === 13 ? parseDate(_delivery, { utc: !!order?.delivery_datetime_utc, outputFormat: outputFormat }) : _estimatedTime)
61
62
  }
62
63
 
63
64
  useEffect(() => {
@@ -1,7 +1,7 @@
1
1
  import React from 'react'
2
2
  import { useTheme } from 'styled-components/native'
3
3
  import { ScrollView, StyleSheet, View } from 'react-native'
4
- import { useLanguage, useUtils } from 'ordering-components/native'
4
+ import { useLanguage, useUtils, useConfig } from 'ordering-components/native'
5
5
  import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons'
6
6
  import { OText, OButton } from '../shared'
7
7
  import { formatSeconds } from '../../utils'
@@ -17,8 +17,12 @@ export const OrderHistory = (props: any) => {
17
17
 
18
18
  const [, t] = useLanguage()
19
19
  const [{ parseDate }] = useUtils()
20
+ const [{ configs }] = useConfig();
20
21
  const theme = useTheme()
21
22
 
23
+ const excludedMessages = ['manual_driver_assignment_comment', 'driver_group_id', 'manual_driver_assignment_author_id']
24
+ const changeIdToExternalId = configs?.change_order_id?.value === '1'
25
+
22
26
  const styles = StyleSheet.create({
23
27
  historyItem: {
24
28
  display: 'flex',
@@ -62,7 +66,10 @@ export const OrderHistory = (props: any) => {
62
66
  20: 'ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS',
63
67
  21: 'ORDER_CUSTOMER_ARRIVED_BUSINESS',
64
68
  22: 'ORDER_LOOKING_FOR_DRIVER',
65
- 23: 'ORDER_DRIVER_ON_WAY'
69
+ 23: 'ORDER_DRIVER_ON_WAY',
70
+ 24: 'ORDER_DRIVER_WAITING_FOR_ORDER',
71
+ 25: 'ORDER_ACCEPTED_BY_DRIVER_COMPANY',
72
+ 26: 'ORDER_DRIVER_ARRIVED_CUSTOMER'
66
73
  }
67
74
 
68
75
  const getLogisticTagStatus = (status: any) => {
@@ -90,7 +97,7 @@ export const OrderHistory = (props: any) => {
90
97
  return (
91
98
  <ScrollView contentContainerStyle={styles.container}>
92
99
  <OText size={20} style={{ alignSelf: 'center', textAlign: 'center' }} mBottom={10}>
93
- {t('DETAILS_OF_ORDER', 'Details of Order_NUMBER_').replace('_NUMBER_', ` # ${order?.id}`)}
100
+ {t('DETAILS_OF_ORDER', 'Details of Order_NUMBER_').replace('_NUMBER_', (changeIdToExternalId && order?.external_id) || `# ${order?.id}`)}
94
101
  </OText>
95
102
  {!messages?.loading && order && (
96
103
  <View style={styles.historyItem}>
@@ -118,7 +125,7 @@ export const OrderHistory = (props: any) => {
118
125
  </View>
119
126
  </View>
120
127
  )}
121
- {messages && messages?.messages.map((message: any, i: number) => message.type === 1 && (
128
+ {messages && messages?.messages.map((message: any, i: number) => (message.type === 1 && !excludedMessages.includes(message?.change?.attribute)) && (
122
129
  <View
123
130
  style={styles.historyItem}
124
131
  key={i}
@@ -129,11 +129,13 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
129
129
  const [showTitle, setShowTitle] = useState(false)
130
130
 
131
131
  const { order, businessData } = props.order;
132
- const mapValidStatuses = [9, 19, 23]
132
+ const mapValidStatuses = [9, 18, 19, 23, 26]
133
133
  const placeSpotTypes = [3, 4, 5]
134
134
  const directionTypes = [2, 3, 4, 5]
135
- const activeStatus = [0, 3, 4, 7, 8, 9, 13, 14, 18, 19, 20, 21, 22, 23]
135
+ const activeStatus = [0, 3, 4, 7, 8, 9, 13, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26]
136
136
  const reorderStatus = [1, 2, 5, 6, 10, 11, 12]
137
+ const cateringTypes = [7, 8]
138
+ const deliveryTypes = [1, 7]
137
139
  const [isPickup, setIsPickup] = useState(order?.delivery_type === 2)
138
140
  const enabledPoweredByOrdering = configs?.powered_by_ordering_module?.value
139
141
  const isGiftCardOrder = !order?.business_id
@@ -148,6 +150,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
148
150
  const hideDriverMessages = theme?.confirmation?.components?.driver?.components?.messages?.hidden
149
151
  const hideCustomerPhone = theme?.confirmation?.components?.customer?.components?.phone?.hidden
150
152
  const hideCustomerAddress = theme?.confirmation?.components?.customer?.components?.address?.hidden
153
+ const changeIdToExternalId = configs?.change_order_id?.value === '1'
154
+
151
155
  const progressBarObjt = isPickup ? getOrderStatuPickUp : getOrderStatus
152
156
  const walletName: any = {
153
157
  cash: {
@@ -185,18 +189,18 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
185
189
  navigation.navigate('BottomTab');
186
190
  };
187
191
 
188
- const getIncludedTaxes = () => {
192
+ const getIncludedTaxes = (isDeliveryFee?: boolean) => {
189
193
  if (order?.taxes?.length === 0 || !order?.taxes) {
190
194
  return order.tax_type === 1 ? order?.summary?.tax ?? 0 : 0
191
195
  } else {
192
196
  return order?.taxes.reduce((taxIncluded: number, tax: any) => {
193
- return taxIncluded + (tax.type === 1 ? tax.summary?.tax : 0)
197
+ return taxIncluded + (((!isDeliveryFee && tax.type === 1 && tax.target === 'product') || (isDeliveryFee && tax.type === 1 && tax.target === 'delivery_fee')) ? tax.summary?.tax : 0)
194
198
  }, 0)
195
199
  }
196
200
  }
197
201
 
198
202
  const getIncludedTaxesDiscounts = () => {
199
- return order?.taxes?.filter((tax: any) => tax?.type === 1)?.reduce((carry: number, tax: any) => carry + (tax?.summary?.tax_after_discount ?? tax?.summary?.tax), 0)
203
+ 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)
200
204
  }
201
205
 
202
206
  const handleClickOrderReview = (order: any) => {
@@ -361,7 +365,6 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
361
365
  }
362
366
  }, [props?.order?.error, props?.order?.loading])
363
367
 
364
-
365
368
  useEffect(() => {
366
369
  if (!order?.delivery_type) return
367
370
  setIsPickup(order?.delivery_type === 2)
@@ -386,7 +389,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
386
389
  numberOfLines={2}
387
390
  ellipsizeMode='tail'
388
391
  >
389
- {`${t('ORDER', 'Order')} #${order?.id}`}
392
+ {`${t('ORDER', 'Order')} ${(changeIdToExternalId && order?.external_id) || `#${order?.id}`}`}
390
393
  </OText>
391
394
  )}
392
395
  </>
@@ -460,18 +463,21 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
460
463
  <Header>
461
464
  <NavBar
462
465
  hideArrowLeft
463
- title={`${t('ORDER', 'Order')} #${order?.id}`}
464
- titleAlign={'center'}
466
+ title={`${t('ORDER', 'Order')} ${(changeIdToExternalId && order?.external_id) || `#${order?.id}`}`}
467
+ titleAlign={'left'}
465
468
  showCall={false}
466
469
  btnStyle={{ paddingLeft: 0 }}
467
470
  style={{ marginTop: Platform.OS === 'ios' ? 0 : 20 }}
468
471
  titleWrapStyle={{ paddingHorizontal: 0 }}
469
- titleStyle={{ marginRight: 0, marginLeft: 0 }}
472
+ titleStyle={{ marginRight: 0, marginLeft: 0, paddingHorizontal: 0 }}
470
473
  subTitle={!hideDeliveryDate && <OText size={12} lineHeight={18} color={theme.colors.textNormal}>
471
474
  {activeStatus.includes(order?.status) ? (
472
- <OrderEta order={order} />
475
+ <>
476
+ {cateringTypes.includes(order?.delivery_type) ? `${t('CREATED_AT', 'Created at')}: ${parseDate(order?.created_at)}\n` : ''}
477
+ {cateringTypes.includes(order?.delivery_type) ? `${t('PLACED_TO', 'Placed to')}:` : ''} <OrderEta order={order} outputFormat={`YYYY-MM-DD ${configs?.general_hour_format?.value}`} />
478
+ </>
473
479
  ) : (
474
- parseDate(order?.reporting_data?.at[`status:${order.status}`])
480
+ parseDate(order?.reporting_data?.at[`status:${order.status}`], { outputFormat: `YYYY-MM-DD ${configs?.general_hour_format?.value}` })
475
481
  )}
476
482
  </OText>}
477
483
  />
@@ -528,7 +534,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
528
534
  <LinearGradient
529
535
  start={{ x: 0.0, y: 0.0 }}
530
536
  end={{
531
- x: progressBarObjt(order?.status)?.percentage || 0,
537
+ x: progressBarObjt(order?.status, t)?.percentage || 0,
532
538
  y: 0,
533
539
  }}
534
540
  locations={[0.9999, 0.9999]}
@@ -541,7 +547,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
541
547
  lineHeight={24}
542
548
  weight={'600'}
543
549
  color={theme.colors.textNormal}>
544
- {progressBarObjt(order?.status)?.value}
550
+ {progressBarObjt(order?.status, t)?.value}
545
551
  </OText>
546
552
  </>
547
553
  )}
@@ -707,18 +713,18 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
707
713
  {order?.customer?.address}
708
714
  </OText>
709
715
  )}
710
- {(!!order?.customer?.cellphone && !hideCustomerPhone) && (
716
+ {(!!(order?.customer?.cellphone || order?.customer?.guest_cellphone) && !hideCustomerPhone) && (
711
717
  <OText
712
718
  size={12}
713
719
  lineHeight={18}
714
720
  color={theme.colors.textNormal}
715
721
  mBottom={2}>
716
- {`${!!order?.customer?.country_phone_code ? '+' + order?.customer?.country_phone_code : ''} ${order?.customer?.cellphone}`}
722
+ {`${!!order?.customer?.country_phone_code ? '+' + order?.customer?.country_phone_code : ''} ${order?.customer?.guest_id ? order?.customer?.guest_cellphone : order?.customer?.cellphone}`}
717
723
  </OText>
718
724
  )}
719
725
  </InfoBlock>
720
726
  </Customer>
721
- {!isGiftCardOrder && order?.delivery_option !== undefined && order?.delivery_type === 1 && (
727
+ {!isGiftCardOrder && order?.delivery_option !== undefined && deliveryTypes?.includes?.(order?.delivery_type) && (
722
728
  <View style={{ marginTop: 15 }}>
723
729
  <OText size={16} style={{ textAlign: 'left' }} color={theme.colors.textNormal}>
724
730
  {t('DELIVERY_PREFERENCE', 'Delivery Preference')}
@@ -933,7 +939,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
933
939
  )
934
940
  }
935
941
  {
936
- order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0).map((tax: any) => (
942
+ order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0 && tax?.target === 'product').map((tax: any) => (
937
943
  <Table key={tax.id}>
938
944
  <OSRow>
939
945
  <OText size={12} lineHeight={18} weight={'400'} color={theme.colors.textNormal} numberOfLines={1}>
@@ -982,12 +988,30 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
982
988
  </Table>
983
989
  ))
984
990
  }
985
- {typeof order?.summary?.delivery_price === 'number' && (
991
+ {typeof order?.summary?.delivery_price === 'number' && !isPickup && (
986
992
  <Table>
987
993
  <OText size={12} lineHeight={18} weight={'400'} color={theme.colors.textNormal}>{t('DELIVERY_FEE', 'Delivery Fee')}</OText>
988
- <OText size={12} lineHeight={18} weight={'400'} color={theme.colors.textNormal}>{parsePrice(order?.summary?.delivery_price)}</OText>
994
+ <OText size={12} lineHeight={18} weight={'400'} color={theme.colors.textNormal}>{parsePrice(order?.summary?.delivery_price + getIncludedTaxes(true))}</OText>
989
995
  </Table>
990
996
  )}
997
+ {
998
+ order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0 && tax?.target === 'delivery_fee').map((tax: any, i: number) => (
999
+ <Table key={`${tax?.description}_${i}`}>
1000
+ <OSRow>
1001
+ <OText size={12} lineHeight={18} weight={'400'} color={theme.colors.textNormal} numberOfLines={1}>
1002
+ {t(tax?.name?.toUpperCase()?.replace(/ /g, '_'), tax?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
1003
+ {`(${verifyDecimals(tax?.rate, parseNumber)}%)`}
1004
+ </OText>
1005
+ {setOpenTaxModal && (
1006
+ <TouchableOpacity onClick={() => setOpenTaxModal({ open: true, data: tax, type: 'tax' })}>
1007
+ <AntIcon name='infocirlceo' size={16} color={theme.colors.primary} />
1008
+ </TouchableOpacity>
1009
+ )}
1010
+ </OSRow>
1011
+ <OText size={12} lineHeight={18} weight={'400'} color={theme.colors.textNormal}>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0)}</OText>
1012
+ </Table>
1013
+ ))
1014
+ }
991
1015
  {
992
1016
  order?.offers?.length > 0 && order?.offers?.filter((offer: any) => offer?.target === 2)?.map((offer: any) => (
993
1017
  <Table key={offer.id}>
@@ -5,7 +5,6 @@ export const OrderDetailsContainer = styled.ScrollView`
5
5
  `
6
6
 
7
7
  export const NavBack = styled.TouchableOpacity`
8
-
9
8
  `
10
9
 
11
10
 
@@ -41,7 +41,8 @@ const OrderProgressUI = (props: any) => {
41
41
  const [lastOrder, setLastOrder] = useState<any>(null)
42
42
  const imageFails = theme.images.general.emptyActiveOrders
43
43
  const [initialLoaded, setInitialLoaded] = useState(false)
44
- const statusToShow = [0, 3, 4, 7, 8, 9, 13, 14, 18, 19, 20, 21, 22, 23]
44
+ const statusToShow = [0, 3, 4, 7, 8, 9, 13, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26]
45
+ const deliveryTypes = [1, 7]
45
46
 
46
47
  const styles = StyleSheet.create({
47
48
  main: {
@@ -113,7 +114,7 @@ const OrderProgressUI = (props: any) => {
113
114
  setInitialLoaded(true)
114
115
  }, [orderList.loading, initialLoaded])
115
116
 
116
- const progressBarObjt = (s: any) => lastOrder?.delivery_type && lastOrder?.delivery_type === 2 ? getOrderStatuPickUp(s) : getOrderStatus(s)
117
+ const progressBarObjt = (s: any) => lastOrder?.delivery_type && lastOrder?.delivery_type === 2 ? getOrderStatuPickUp(s, t) : getOrderStatus(s, t)
117
118
 
118
119
  return (
119
120
  <>
@@ -172,7 +173,7 @@ const OrderProgressUI = (props: any) => {
172
173
  <ProgressTextWrapper>
173
174
  <OText size={12} style={{ width: '50%' }}>{progressBarObjt(lastOrder.status)?.value}</OText>
174
175
  <TimeWrapper>
175
- <OText size={11}>{lastOrder?.delivery_type === 1 ? t('ESTIMATED_DELIVERY', 'Estimated delivery') : t('ESTIMATED_TIME', 'Estimated time')}</OText>
176
+ <OText size={11}>{deliveryTypes?.includes?.(lastOrder?.delivery_type) ? t('ESTIMATED_DELIVERY', 'Estimated delivery') : t('ESTIMATED_TIME', 'Estimated time')}</OText>
176
177
  <OText size={11}>
177
178
  {lastOrder?.delivery_datetime_utc
178
179
  ? parseTime(lastOrder?.delivery_datetime_utc, { outputFormat: configs?.general_hour_format?.value || 'HH:mm' })
@@ -205,7 +206,7 @@ export const OrderProgress = (props: any) => {
205
206
  const orderProgressProps = {
206
207
  ...props,
207
208
  UIComponent: OrderProgressUI,
208
- orderStatus: [0, 3, 4, 7, 8, 9, 13, 14, 18, 19, 20, 21, 22, 23],
209
+ orderStatus: [0, 3, 4, 7, 8, 9, 13, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26],
209
210
  useDefualtSessionManager: true,
210
211
  paginationSettings: {
211
212
  initialPage: 1,
@@ -47,7 +47,9 @@ const OrderSummaryUI = (props: any) => {
47
47
  cateringTypes,
48
48
  hideDeliveryFee,
49
49
  loyaltyRewardRate,
50
- maxDate
50
+ maxDate,
51
+ hideCommentsByValidationCheckout,
52
+ hideCouponByValidationCheckout
51
53
  } = props;
52
54
 
53
55
  const theme = useTheme()
@@ -55,11 +57,11 @@ const OrderSummaryUI = (props: any) => {
55
57
  const [{ configs }] = useConfig();
56
58
  const [orderState] = useOrder();
57
59
  const [{ parsePrice, parseNumber }] = useUtils();
58
- const [validationFields] = useValidationFields();
59
60
  const commentRef = useRef()
60
61
  const [openTaxModal, setOpenTaxModal] = useState<any>({ open: false, data: null, type: '' })
61
- const isCouponEnabled = validationFields?.fields?.checkout?.coupon?.enabled;
62
- const hideCartComments = !validationFields?.fields?.checkout?.comments?.enabled
62
+ const [comment] = useState<any>(orderState?.carts?.[`businessId:${props.cart.business_id}`]?.comment ?? '')
63
+ const hideCartDiscount = hideCouponByValidationCheckout
64
+ const hideCartComments = hideCommentsByValidationCheckout
63
65
 
64
66
  const cart = orderState?.carts?.[`businessId:${props.cart.business_id}`]
65
67
 
@@ -72,12 +74,14 @@ const OrderSummaryUI = (props: any) => {
72
74
  }
73
75
  }
74
76
 
75
- const getIncludedTaxes = () => {
77
+ const getIncludedTaxes = (isDeliveryFee?: boolean) => {
76
78
  if (cart?.taxes === null || !cart?.taxes) {
77
79
  return cart?.business?.tax_type === 1 ? cart?.tax : 0
78
80
  } else {
79
81
  return cart?.taxes.reduce((taxIncluded: number, tax: any) => {
80
- return taxIncluded + (tax.type === 1 ? tax.summary?.tax : 0)
82
+ return taxIncluded +
83
+ (((!isDeliveryFee && tax.type === 1 && tax.target === 'product') ||
84
+ (isDeliveryFee && tax.type === 1 && tax.target === 'delivery_fee')) ? tax.summary?.tax : 0)
81
85
  }, 0)
82
86
  }
83
87
  }
@@ -102,7 +106,7 @@ const OrderSummaryUI = (props: any) => {
102
106
  }
103
107
 
104
108
  const getIncludedTaxesDiscounts = () => {
105
- return cart?.taxes?.filter((tax: any) => tax?.type === 1)?.reduce((carry: number, tax: any) => carry + (tax?.summary?.tax_after_discount ?? tax?.summary?.tax), 0)
109
+ return cart?.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)
106
110
  }
107
111
 
108
112
  const OfferAlert = ({ offerId }: any) => {
@@ -194,7 +198,7 @@ const OrderSummaryUI = (props: any) => {
194
198
  </OSTable>
195
199
  )}
196
200
  {
197
- cart.taxes?.length > 0 && cart.taxes.filter((tax: any) => tax.type === 2 && tax?.rate !== 0).map((tax: any) => (
201
+ cart.taxes?.length > 0 && cart.taxes.filter((tax: any) => tax.type === 2 && tax?.rate !== 0 && tax?.target === 'product').map((tax: any, i: number) => (
198
202
  <OSTable key={tax.id}>
199
203
  <OSRow>
200
204
  <OText size={12} numberOfLines={1} >
@@ -249,9 +253,25 @@ const OrderSummaryUI = (props: any) => {
249
253
  {orderState?.options?.type === 1 && !hideDeliveryFee && (
250
254
  <OSTable>
251
255
  <OText size={12}>{t('DELIVERY_FEE', 'Delivery Fee')}</OText>
252
- <OText size={12}>{parsePrice(cart?.delivery_price_with_discount)}</OText>
256
+ <OText size={12}>{parsePrice(cart?.delivery_price_with_discount + getIncludedTaxes(true))}</OText>
253
257
  </OSTable>
254
258
  )}
259
+ {
260
+ cart?.taxes?.length > 0 && cart?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0 && tax?.target === 'delivery_fee').map((tax: any, i: number) => (
261
+ <OSTable key={`${tax.description}_${i}`}>
262
+ <OSRow>
263
+ <OText size={12} numberOfLines={1}>
264
+ {tax.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
265
+ {`(${verifyDecimals(tax?.rate, parseNumber)}%)`}
266
+ </OText>
267
+ <TouchableOpacity onPress={() => setOpenTaxModal({ open: true, data: tax, type: 'tax' })}>
268
+ <AntIcon name='infocirlceo' size={16} color={theme.colors.primary} />
269
+ </TouchableOpacity>
270
+ </OSRow>
271
+ <OText size={12}>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0)}</OText>
272
+ </OSTable>
273
+ ))
274
+ }
255
275
  {
256
276
  cart?.offers?.length > 0 && cart?.offers?.filter((offer: any) => offer?.target === 2)?.map((offer: any) => (
257
277
  <OSTable key={offer.id}>
@@ -295,7 +315,7 @@ const OrderSummaryUI = (props: any) => {
295
315
  <OText size={12}>-{parsePrice(event.amount, { isTruncable: true })}</OText>
296
316
  </OSTable>
297
317
  ))}
298
- {isCouponEnabled && !isCartPending && cart?.business_id && (
318
+ {!hideCartDiscount && !isCartPending && cart?.business_id && (
299
319
  <View>
300
320
  <View style={{ paddingVertical: 5 }}>
301
321
  <CouponControl
@@ -330,7 +350,7 @@ const OrderSummaryUI = (props: any) => {
330
350
  <OText size={12}>{t('COMMENTS', 'Comments')}</OText>
331
351
  <View style={{ flex: 1, width: '100%' }}>
332
352
  <OInput
333
- value={cart?.comment}
353
+ value={comment || cart?.comment}
334
354
  placeholder={t('SPECIAL_COMMENTS', 'Special Comments')}
335
355
  onChange={(value: string) => handleChangeComment(value)}
336
356
  style={{
@@ -397,6 +417,7 @@ const OrderSummaryUI = (props: any) => {
397
417
  export const OrderSummary = (props: any) => {
398
418
  const orderSummaryProps = {
399
419
  ...props,
420
+ disablePreviousComment: true,
400
421
  UIComponent: OrderSummaryUI
401
422
  }
402
423