ordering-ui-react-native 0.21.86 → 0.21.87-release
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +6 -7
- package/src/DeliveryApp.tsx +43 -1
- package/src/components/BusinessesListing/index.tsx +1 -1
- package/src/components/StripeMethodForm/index.tsx +6 -4
- package/src/components/VerifyPhone/styles.tsx +1 -2
- package/src/types/index.tsx +3 -1
- package/themes/business/index.tsx +2 -0
- package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -6
- package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
- package/themes/business/src/components/BusinessController/index.tsx +8 -3
- package/themes/business/src/components/BusinessProductList/index.tsx +2 -1
- package/themes/business/src/components/Chat/index.tsx +5 -2
- package/themes/business/src/components/DriverMap/index.tsx +49 -27
- package/themes/business/src/components/GoogleMap/index.tsx +15 -8
- package/themes/business/src/components/Home/index.tsx +5 -1
- package/themes/business/src/components/LanguageSelector/index.tsx +2 -3
- package/themes/business/src/components/LanguageSelector/lang_country.json +515 -70
- package/themes/business/src/components/LogoutButton/index.tsx +1 -1
- package/themes/business/src/components/MapView/index.tsx +36 -17
- package/themes/business/src/components/NewOrderNotification/index.tsx +69 -33
- package/themes/business/src/components/OrderDetails/Business.tsx +74 -9
- package/themes/business/src/components/OrderDetails/Delivery.tsx +131 -51
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +112 -41
- package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +55 -24
- package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
- package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +221 -0
- package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
- package/themes/business/src/components/OrderSummary/index.tsx +223 -73
- package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
- package/themes/business/src/components/OrdersOption/index.tsx +251 -159
- package/themes/business/src/components/PhoneInputNumber/index.tsx +8 -5
- package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
- package/themes/business/src/components/PreviousOrders/OrderItem.tsx +42 -20
- package/themes/business/src/components/PreviousOrders/index.tsx +76 -66
- package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
- package/themes/business/src/components/PrinterEdition/index.tsx +431 -0
- package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
- package/themes/business/src/components/PrinterEdition/styles.tsx +61 -0
- package/themes/business/src/components/PrinterSettings/index.tsx +267 -0
- package/themes/business/src/components/PrinterSettings/styles.tsx +30 -0
- package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
- package/themes/business/src/components/Sessions/index.tsx +1 -1
- package/themes/business/src/components/StoresList/index.tsx +2 -2
- package/themes/business/src/components/UserFormDetails/index.tsx +111 -107
- package/themes/business/src/components/UserProfileForm/index.tsx +56 -35
- package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
- package/themes/business/src/components/shared/OInput.tsx +2 -0
- package/themes/business/src/components/shared/OTextarea.tsx +8 -9
- package/themes/business/src/hooks/useLocation.tsx +5 -4
- package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
- package/themes/business/src/types/index.tsx +14 -4
- package/themes/business/src/utils/index.tsx +25 -1
- package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
- package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
- package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
- package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
- package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
- package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
- package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
- package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
- package/themes/original/index.tsx +13 -1
- package/themes/original/src/components/AddressDetails/index.tsx +20 -10
- package/themes/original/src/components/AddressForm/index.tsx +32 -17
- package/themes/original/src/components/AddressList/index.tsx +8 -7
- package/themes/original/src/components/AnalyticsSegment/index.tsx +6 -6
- package/themes/original/src/components/AppleLogin/index.tsx +4 -4
- package/themes/original/src/components/BusinessBasicInformation/index.tsx +5 -8
- package/themes/original/src/components/BusinessController/index.tsx +12 -7
- package/themes/original/src/components/BusinessItemAccordion/index.tsx +13 -5
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +2 -3
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +1 -3
- package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
- package/themes/original/src/components/BusinessPreorder/index.tsx +20 -15
- package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +5 -5
- package/themes/original/src/components/BusinessProductsList/index.tsx +2 -2
- package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
- package/themes/original/src/components/BusinessProductsListing/index.tsx +18 -6
- package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
- package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
- package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +1 -1
- package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
- package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
- package/themes/original/src/components/Cart/index.tsx +43 -15
- package/themes/original/src/components/CartContent/index.tsx +21 -8
- package/themes/original/src/components/Checkout/index.tsx +109 -60
- package/themes/original/src/components/CitiesControl/index.tsx +0 -3
- package/themes/original/src/components/CouponControl/index.tsx +1 -3
- package/themes/original/src/components/DriverTips/index.tsx +1 -3
- package/themes/original/src/components/Favorite/index.tsx +1 -5
- package/themes/original/src/components/FavoriteList/index.tsx +0 -1
- package/themes/original/src/components/ForgotPasswordForm/index.tsx +5 -7
- package/themes/original/src/components/GiftCard/GiftCardOrdersList/index.tsx +64 -0
- package/themes/original/src/components/GiftCard/GiftCardOrdersList/styles.tsx +8 -0
- package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +15 -17
- package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +3 -7
- package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +24 -32
- package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +7 -9
- package/themes/original/src/components/GiftCard/SingleGiftCard/index.tsx +101 -0
- package/themes/original/src/components/GiftCard/SingleGiftCard/styles.tsx +4 -0
- package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +82 -0
- package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/styles.tsx +9 -0
- package/themes/original/src/components/GoogleMap/index.tsx +39 -18
- package/themes/original/src/components/Help/index.tsx +2 -0
- package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
- package/themes/original/src/components/Home/index.tsx +2 -10
- package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
- package/themes/original/src/components/LoginForm/index.tsx +4 -7
- package/themes/original/src/components/MessageListing/index.tsx +2 -1
- package/themes/original/src/components/Messages/index.tsx +13 -9
- package/themes/original/src/components/MomentOption/index.tsx +13 -2
- package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -3
- package/themes/original/src/components/MultiCheckout/index.tsx +139 -87
- package/themes/original/src/components/MultiOrdersDetails/index.tsx +2 -1
- package/themes/original/src/components/MyOrders/index.tsx +21 -26
- package/themes/original/src/components/NavBar/index.tsx +7 -4
- package/themes/original/src/components/NetworkError/index.tsx +0 -5
- package/themes/original/src/components/NotFoundSource/index.tsx +0 -3
- package/themes/original/src/components/OrderDetails/OrderEta.tsx +4 -3
- package/themes/original/src/components/OrderDetails/OrderHistory.tsx +13 -10
- package/themes/original/src/components/OrderDetails/index.tsx +42 -19
- package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
- package/themes/original/src/components/OrderProgress/index.tsx +26 -6
- package/themes/original/src/components/OrderSummary/index.tsx +28 -9
- package/themes/original/src/components/OrderTypeSelector/index.tsx +7 -6
- package/themes/original/src/components/OrdersOption/index.tsx +4 -6
- package/themes/original/src/components/PaymentOptionStripe/index.tsx +0 -5
- package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
- package/themes/original/src/components/PaymentOptions/index.tsx +17 -9
- package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
- package/themes/original/src/components/PreviousOrders/index.tsx +1 -2
- package/themes/original/src/components/ProductForm/ActionButton.tsx +17 -20
- package/themes/original/src/components/ProductForm/index.tsx +107 -102
- package/themes/original/src/components/ProductItemAccordion/index.tsx +55 -49
- package/themes/original/src/components/ProductItemAccordion/styles.tsx +3 -4
- package/themes/original/src/components/ProductOptionSubOption/index.tsx +16 -8
- package/themes/original/src/components/ProfessionalProfile/index.tsx +4 -5
- package/themes/original/src/components/Promotions/index.tsx +6 -9
- package/themes/original/src/components/ReviewDriver/index.tsx +1 -1
- package/themes/original/src/components/ReviewOrder/index.tsx +2 -2
- package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
- package/themes/original/src/components/ReviewTrigger/index.tsx +2 -2
- package/themes/original/src/components/ServiceForm/index.tsx +52 -54
- package/themes/original/src/components/Sessions/index.tsx +3 -3
- package/themes/original/src/components/SignupForm/index.tsx +86 -78
- package/themes/original/src/components/SingleOrderCard/index.tsx +7 -5
- package/themes/original/src/components/SingleProductCard/index.tsx +3 -4
- package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
- package/themes/original/src/components/StripeCardForm/index.tsx +0 -3
- package/themes/original/src/components/StripeCardsList/index.tsx +10 -3
- package/themes/original/src/components/StripeElementsForm/index.tsx +77 -60
- package/themes/original/src/components/StripeElementsForm/naked.tsx +48 -1
- package/themes/original/src/components/StripeRedirectForm/index.tsx +0 -3
- package/themes/original/src/components/TaxInformation/index.tsx +3 -2
- package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +10 -7
- package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +8 -3
- package/themes/original/src/components/UserDetails/index.tsx +3 -2
- package/themes/original/src/components/UserFormDetails/index.tsx +154 -130
- package/themes/original/src/components/UserProfile/index.tsx +11 -2
- package/themes/original/src/components/Wallets/index.tsx +6 -3
- package/themes/original/src/components/WebsocketStatus/index.tsx +169 -0
- package/themes/original/src/components/WebsocketStatus/styles.tsx +28 -0
- package/themes/original/src/components/shared/OAlert.tsx +2 -1
- package/themes/original/src/components/shared/OButton.tsx +5 -4
- package/themes/original/src/components/shared/OInput.tsx +4 -8
- package/themes/original/src/components/shared/OModal.tsx +7 -2
- package/themes/original/src/types/index.tsx +5 -1
- package/themes/original/src/utils/index.tsx +30 -1
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
|
@@ -2,13 +2,14 @@ import React, { useState, useEffect } from 'react'
|
|
|
2
2
|
import { useLanguage } from 'ordering-components/native';
|
|
3
3
|
import { View, StyleSheet, RefreshControl, Platform } from 'react-native';
|
|
4
4
|
import AntDesignIcon from 'react-native-vector-icons/AntDesign'
|
|
5
|
-
|
|
5
|
+
import { GiftCardOrdersList } from '../GiftCard/GiftCardOrdersList'
|
|
6
6
|
import { OrdersOption } from '../OrdersOption'
|
|
7
7
|
import { HeaderTitle, OButton, OText } from '../shared'
|
|
8
8
|
import { ScrollView } from 'react-native-gesture-handler';
|
|
9
9
|
import { Tab } from './styles'
|
|
10
10
|
import { useTheme } from 'styled-components/native';
|
|
11
11
|
import { Container } from '../../layouts/Container';
|
|
12
|
+
import NavBar from '../NavBar'
|
|
12
13
|
|
|
13
14
|
export const MyOrders = (props: any) => {
|
|
14
15
|
const {
|
|
@@ -40,7 +41,8 @@ export const MyOrders = (props: any) => {
|
|
|
40
41
|
const MyOrdersMenu = [
|
|
41
42
|
{ key: 'orders', value: t('ORDERS', 'Orders'), disabled: false },
|
|
42
43
|
{ key: 'business', value: t('BUSINESS', 'Business'), disabled: hideBusinessTab },
|
|
43
|
-
{ key: 'products', value: t('PRODUCTS', 'Products'), disabled: hideProductsTab }
|
|
44
|
+
{ key: 'products', value: t('PRODUCTS', 'Products'), disabled: hideProductsTab },
|
|
45
|
+
{ key: 'giftCards', value: t('GIFT_CARD', 'Gift card'), disabled: false }
|
|
44
46
|
]
|
|
45
47
|
const goToBack = () => navigation?.canGoBack() && navigation.goBack()
|
|
46
48
|
|
|
@@ -92,29 +94,15 @@ export const MyOrders = (props: any) => {
|
|
|
92
94
|
...props.titleStyle
|
|
93
95
|
}}>
|
|
94
96
|
{!props.hideBackBtn && (!isChewLayout || (isChewLayout && hideOrdersTheme)) && (
|
|
95
|
-
<
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
backgroundColor: '#FFF',
|
|
103
|
-
borderColor: '#FFF',
|
|
104
|
-
shadowColor: '#FFF',
|
|
105
|
-
paddingLeft: 0,
|
|
106
|
-
paddingRight: 0,
|
|
107
|
-
marginTop: 30,
|
|
108
|
-
}}
|
|
109
|
-
onClick={goToBack}
|
|
110
|
-
icon={AntDesignIcon}
|
|
111
|
-
iconProps={{
|
|
112
|
-
name: 'arrowleft',
|
|
113
|
-
size: 26
|
|
114
|
-
}}
|
|
97
|
+
<NavBar
|
|
98
|
+
title={t('MY_ORDERS', 'My Orders')}
|
|
99
|
+
titleAlign={'center'}
|
|
100
|
+
onActionLeft={goToBack}
|
|
101
|
+
showCall={false}
|
|
102
|
+
paddingTop={30}
|
|
103
|
+
btnStyle={{ paddingLeft: 0 }}
|
|
115
104
|
/>
|
|
116
105
|
)}
|
|
117
|
-
<HeaderTitle ph={10} text={t('MY_ORDERS', 'My Orders')} />
|
|
118
106
|
</View>
|
|
119
107
|
)}
|
|
120
108
|
{!hideOrders && !isChewLayout && !showNavbar && (
|
|
@@ -124,7 +112,7 @@ export const MyOrders = (props: any) => {
|
|
|
124
112
|
<ScrollView
|
|
125
113
|
horizontal
|
|
126
114
|
style={{ ...styles.container, borderBottomWidth: 1 }}
|
|
127
|
-
contentContainerStyle={{ paddingHorizontal: !!businessesSearchList ? 0 : 20
|
|
115
|
+
contentContainerStyle={{ paddingHorizontal: !!businessesSearchList ? 0 : 20 }}
|
|
128
116
|
showsHorizontalScrollIndicator={false}
|
|
129
117
|
scrollEventThrottle={16}
|
|
130
118
|
>
|
|
@@ -148,7 +136,7 @@ export const MyOrders = (props: any) => {
|
|
|
148
136
|
)}
|
|
149
137
|
{selectedOption === 'orders' && (
|
|
150
138
|
<>
|
|
151
|
-
<View style={{ paddingHorizontal: 20
|
|
139
|
+
<View style={{ paddingHorizontal: 20 }}>
|
|
152
140
|
<OrdersOption
|
|
153
141
|
{...props}
|
|
154
142
|
preOrders
|
|
@@ -215,7 +203,14 @@ export const MyOrders = (props: any) => {
|
|
|
215
203
|
setOrdersLength={setOrdersLength}
|
|
216
204
|
/>
|
|
217
205
|
)}
|
|
206
|
+
|
|
207
|
+
{selectedOption === 'giftCards' && (
|
|
208
|
+
<View style={{ paddingHorizontal: 20 }}>
|
|
209
|
+
<GiftCardOrdersList
|
|
210
|
+
onNavigationRedirect={props?.onNavigationRedirect}
|
|
211
|
+
/>
|
|
212
|
+
</View>
|
|
213
|
+
)}
|
|
218
214
|
</Container>
|
|
219
|
-
|
|
220
215
|
)
|
|
221
216
|
}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
|
|
1
4
|
import * as React from 'react'
|
|
2
5
|
import styled, { useTheme } from 'styled-components/native'
|
|
3
6
|
import { OButton, OIcon, OText } from '../shared'
|
|
@@ -64,6 +67,7 @@ const NavBar = (props: Props) => {
|
|
|
64
67
|
<Wrapper style={{ paddingTop: props.paddingTop, ...{ flexDirection: props.isVertical ? 'column' : 'row', alignItems: props.isVertical ? 'flex-start' : 'center' }, ...props.style }}>
|
|
65
68
|
{!props.hideArrowLeft && (
|
|
66
69
|
<OButton
|
|
70
|
+
useArrow
|
|
67
71
|
iconProps={{
|
|
68
72
|
name: 'arrowleft',
|
|
69
73
|
size: 26
|
|
@@ -114,8 +118,6 @@ const NavBar = (props: Props) => {
|
|
|
114
118
|
{props.showCall
|
|
115
119
|
? (<OButton
|
|
116
120
|
isCircle={true}
|
|
117
|
-
bgColor={theme.colors.primary}
|
|
118
|
-
borderColor={theme.colors.primary}
|
|
119
121
|
imgRightSrc={null}
|
|
120
122
|
imgLeftStyle={{ tintColor: 'white', width: 30, height: 30 }}
|
|
121
123
|
imgLeftSrc={theme.images.general.support}
|
|
@@ -131,8 +133,9 @@ NavBar.defaultProps = {
|
|
|
131
133
|
textAlign: 'center'
|
|
132
134
|
};
|
|
133
135
|
|
|
134
|
-
const areEqual = (prevProps: { route?: any
|
|
135
|
-
return prevProps.route === nextProps.route
|
|
136
|
+
const areEqual = (prevProps: { route?: any, title?: string }, nextProps: { route?: any, title?: string }) => {
|
|
137
|
+
return prevProps.route === nextProps.route &&
|
|
138
|
+
JSON.stringify(prevProps.title) === JSON.stringify(nextProps.title)
|
|
136
139
|
return true
|
|
137
140
|
}
|
|
138
141
|
|
|
@@ -45,15 +45,10 @@ export const NetworkError = (props: NoNetworkParams) => {
|
|
|
45
45
|
/>
|
|
46
46
|
<OButton
|
|
47
47
|
text={t('REFRESH', 'Refresh')}
|
|
48
|
-
bgColor={theme.colors.primary}
|
|
49
|
-
borderColor={theme.colors.primary}
|
|
50
48
|
style={{
|
|
51
49
|
borderRadius: 8,
|
|
52
50
|
marginTop: 45
|
|
53
51
|
}}
|
|
54
|
-
textStyle={{
|
|
55
|
-
color: theme.colors.white
|
|
56
|
-
}}
|
|
57
52
|
onClick={() => RNRestart.Restart()}
|
|
58
53
|
/>
|
|
59
54
|
</ImageContainer>
|
|
@@ -42,11 +42,8 @@ export const NotFoundSource = (props: NotFoundSourceParams) => {
|
|
|
42
42
|
<View style={{ marginTop: 10, width: '100%' }}>
|
|
43
43
|
<OButton
|
|
44
44
|
style={{ width: '100%', height: 50, ...btnStyle }}
|
|
45
|
-
bgColor={theme.colors.primary}
|
|
46
|
-
borderColor={theme.colors.primary}
|
|
47
45
|
onClick={() => onClickButton()}
|
|
48
46
|
text={btnTitle}
|
|
49
|
-
textStyle={{ color: theme.colors.white }}
|
|
50
47
|
/>
|
|
51
48
|
</View>
|
|
52
49
|
)}
|
|
@@ -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
|
|
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,7 +17,9 @@ 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()
|
|
22
|
+
const changeIdToExternalId = configs?.change_order_id?.value === '1'
|
|
21
23
|
|
|
22
24
|
const styles = StyleSheet.create({
|
|
23
25
|
historyItem: {
|
|
@@ -62,7 +64,10 @@ export const OrderHistory = (props: any) => {
|
|
|
62
64
|
20: 'ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS',
|
|
63
65
|
21: 'ORDER_CUSTOMER_ARRIVED_BUSINESS',
|
|
64
66
|
22: 'ORDER_LOOKING_FOR_DRIVER',
|
|
65
|
-
23: 'ORDER_DRIVER_ON_WAY'
|
|
67
|
+
23: 'ORDER_DRIVER_ON_WAY',
|
|
68
|
+
24: 'ORDER_DRIVER_WAITING_FOR_ORDER',
|
|
69
|
+
25: 'ORDER_ACCEPTED_BY_DRIVER_COMPANY',
|
|
70
|
+
26: 'ORDER_DRIVER_ARRIVED_CUSTOMER'
|
|
66
71
|
}
|
|
67
72
|
|
|
68
73
|
const getLogisticTagStatus = (status: any) => {
|
|
@@ -90,7 +95,7 @@ export const OrderHistory = (props: any) => {
|
|
|
90
95
|
return (
|
|
91
96
|
<ScrollView contentContainerStyle={styles.container}>
|
|
92
97
|
<OText size={20} style={{ alignSelf: 'center', textAlign: 'center' }} mBottom={10}>
|
|
93
|
-
{t('DETAILS_OF_ORDER', 'Details of Order_NUMBER_').replace('_NUMBER_',
|
|
98
|
+
{t('DETAILS_OF_ORDER', 'Details of Order_NUMBER_').replace('_NUMBER_', (changeIdToExternalId && order?.external_id) || `# ${order?.id}`)}
|
|
94
99
|
</OText>
|
|
95
100
|
{!messages?.loading && order && (
|
|
96
101
|
<View style={styles.historyItem}>
|
|
@@ -145,10 +150,10 @@ export const OrderHistory = (props: any) => {
|
|
|
145
150
|
</>
|
|
146
151
|
)
|
|
147
152
|
: message.change?.attribute === 'prepared_in' ? (
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
153
|
+
<>
|
|
154
|
+
{t('TIME_ADDED_BY_BUSINESS', 'Time added by business')}{'\n'}
|
|
155
|
+
{formatSeconds(parseInt(message.change.new, 10))}
|
|
156
|
+
</>
|
|
152
157
|
) : t(ORDER_STATUS[parseInt(message.change.new, 10)])
|
|
153
158
|
}
|
|
154
159
|
</OText>
|
|
@@ -170,11 +175,9 @@ export const OrderHistory = (props: any) => {
|
|
|
170
175
|
))}
|
|
171
176
|
<OButton
|
|
172
177
|
text={enableReview ? t('REVIEW_ORDER', 'Review order') : t('CONTINUE', 'Continue')}
|
|
173
|
-
textStyle={{ fontSize: 14
|
|
178
|
+
textStyle={{ fontSize: 14 }}
|
|
174
179
|
imgRightSrc={theme.images.general.arrow_right}
|
|
175
180
|
imgRightStyle={{ tintColor: theme.colors.white, right: 5, margin: 5 }}
|
|
176
|
-
borderColor='transparent'
|
|
177
|
-
bgColor={theme.colors.primary}
|
|
178
181
|
style={{ borderRadius: 7.6, borderWidth: 1, height: 44, shadowOpacity: 0, marginBottom: 30, marginTop: 20 }}
|
|
179
182
|
onClick={() => handleReview()}
|
|
180
183
|
/>
|
|
@@ -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, 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) => {
|
|
@@ -270,7 +274,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
270
274
|
title: t('DRIVER', 'Driver'),
|
|
271
275
|
icon:
|
|
272
276
|
order?.driver?.photo ||
|
|
273
|
-
|
|
277
|
+
theme?.images?.general?.driverPng,
|
|
274
278
|
},
|
|
275
279
|
{
|
|
276
280
|
...order?.business?.location,
|
|
@@ -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')}
|
|
392
|
+
{`${t('ORDER', 'Order')} ${(changeIdToExternalId && order?.external_id) || `#${order?.id}`}`}
|
|
390
393
|
</OText>
|
|
391
394
|
)}
|
|
392
395
|
</>
|
|
@@ -460,16 +463,19 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
460
463
|
<Header>
|
|
461
464
|
<NavBar
|
|
462
465
|
hideArrowLeft
|
|
463
|
-
title={`${t('ORDER', 'Order')}
|
|
464
|
-
titleAlign={'
|
|
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
|
-
|
|
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} />
|
|
478
|
+
</>
|
|
473
479
|
) : (
|
|
474
480
|
parseDate(order?.reporting_data?.at[`status:${order.status}`])
|
|
475
481
|
)}
|
|
@@ -643,7 +649,6 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
643
649
|
<OButton
|
|
644
650
|
text={t('GET_DIRECTIONS', 'Get Directions')}
|
|
645
651
|
imgRightSrc=''
|
|
646
|
-
textStyle={{ color: theme.colors.white }}
|
|
647
652
|
style={{
|
|
648
653
|
alignSelf: 'center',
|
|
649
654
|
borderRadius: 10,
|
|
@@ -719,7 +724,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
719
724
|
)}
|
|
720
725
|
</InfoBlock>
|
|
721
726
|
</Customer>
|
|
722
|
-
{!isGiftCardOrder && order?.delivery_option !== undefined && order?.delivery_type
|
|
727
|
+
{!isGiftCardOrder && order?.delivery_option !== undefined && deliveryTypes?.includes?.(order?.delivery_type) && (
|
|
723
728
|
<View style={{ marginTop: 15 }}>
|
|
724
729
|
<OText size={16} style={{ textAlign: 'left' }} color={theme.colors.textNormal}>
|
|
725
730
|
{t('DELIVERY_PREFERENCE', 'Delivery Preference')}
|
|
@@ -750,6 +755,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
750
755
|
}
|
|
751
756
|
locations={parsedLocations}
|
|
752
757
|
readOnly
|
|
758
|
+
manualZoom
|
|
753
759
|
/>
|
|
754
760
|
</Map>
|
|
755
761
|
)}
|
|
@@ -832,9 +838,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
832
838
|
<OButton
|
|
833
839
|
text={t('YOUR_ORDERS', 'Your Orders')}
|
|
834
840
|
textStyle={{ fontSize: 14, color: theme.colors.primary }}
|
|
841
|
+
bgColor={theme.colors.white}
|
|
835
842
|
imgRightSrc={null}
|
|
836
|
-
borderColor={theme.colors.primary}
|
|
837
|
-
bgColor={theme.colors.clear}
|
|
838
843
|
style={{ borderRadius: 7.6, borderWidth: 1, height: 44, shadowOpacity: 0 }}
|
|
839
844
|
parentStyle={{ marginTop: 29, marginEnd: 15 }}
|
|
840
845
|
onClick={() => navigation.navigate('BottomTab', { screen: 'MyOrders' })}
|
|
@@ -934,7 +939,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
934
939
|
)
|
|
935
940
|
}
|
|
936
941
|
{
|
|
937
|
-
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) => (
|
|
938
943
|
<Table key={tax.id}>
|
|
939
944
|
<OSRow>
|
|
940
945
|
<OText size={12} lineHeight={18} weight={'400'} color={theme.colors.textNormal} numberOfLines={1}>
|
|
@@ -983,12 +988,30 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
983
988
|
</Table>
|
|
984
989
|
))
|
|
985
990
|
}
|
|
986
|
-
{typeof order?.summary?.delivery_price === 'number' && (
|
|
991
|
+
{typeof order?.summary?.delivery_price === 'number' && !isPickup && (
|
|
987
992
|
<Table>
|
|
988
993
|
<OText size={12} lineHeight={18} weight={'400'} color={theme.colors.textNormal}>{t('DELIVERY_FEE', 'Delivery Fee')}</OText>
|
|
989
|
-
<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>
|
|
990
995
|
</Table>
|
|
991
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
|
+
}
|
|
992
1015
|
{
|
|
993
1016
|
order?.offers?.length > 0 && order?.offers?.filter((offer: any) => offer?.target === 2)?.map((offer: any) => (
|
|
994
1017
|
<Table key={offer.id}>
|
|
@@ -23,6 +23,7 @@ import {
|
|
|
23
23
|
OrderProgressWrapper
|
|
24
24
|
} from './styles'
|
|
25
25
|
import { getOrderStatuPickUp, getOrderStatus } from '../../utils'
|
|
26
|
+
import DeviceInfo from 'react-native-device-info'
|
|
26
27
|
|
|
27
28
|
const OrderProgressUI = (props: any) => {
|
|
28
29
|
const {
|
|
@@ -40,7 +41,8 @@ const OrderProgressUI = (props: any) => {
|
|
|
40
41
|
const [lastOrder, setLastOrder] = useState<any>(null)
|
|
41
42
|
const imageFails = theme.images.general.emptyActiveOrders
|
|
42
43
|
const [initialLoaded, setInitialLoaded] = useState(false)
|
|
43
|
-
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]
|
|
44
46
|
|
|
45
47
|
const styles = StyleSheet.create({
|
|
46
48
|
main: {
|
|
@@ -56,7 +58,9 @@ const OrderProgressUI = (props: any) => {
|
|
|
56
58
|
shadowColor: '#000',
|
|
57
59
|
shadowOpacity: 0.2,
|
|
58
60
|
shadowRadius: 2,
|
|
59
|
-
elevation: 3
|
|
61
|
+
elevation: 3,
|
|
62
|
+
borderWidth: 1,
|
|
63
|
+
borderColor: 'rgba(0,0,0,0.1)'
|
|
60
64
|
},
|
|
61
65
|
logoWrapper: {
|
|
62
66
|
overflow: 'hidden',
|
|
@@ -110,7 +114,7 @@ const OrderProgressUI = (props: any) => {
|
|
|
110
114
|
setInitialLoaded(true)
|
|
111
115
|
}, [orderList.loading, initialLoaded])
|
|
112
116
|
|
|
113
|
-
const progressBarObjt = lastOrder?.delivery_type && lastOrder?.delivery_type === 2 ? getOrderStatuPickUp : getOrderStatus
|
|
117
|
+
const progressBarObjt = (s: any) => lastOrder?.delivery_type && lastOrder?.delivery_type === 2 ? getOrderStatuPickUp(s) : getOrderStatus(s)
|
|
114
118
|
|
|
115
119
|
return (
|
|
116
120
|
<>
|
|
@@ -130,7 +134,7 @@ const OrderProgressUI = (props: any) => {
|
|
|
130
134
|
<View style={styles.logoWrapper}>
|
|
131
135
|
<FastImage
|
|
132
136
|
style={{ width: 50, height: 50 }}
|
|
133
|
-
source={orderList?.orders.length === 1 ? {
|
|
137
|
+
source={orderList?.orders.length === 1 && lastOrder?.business?.logo?.includes?.('http') ? {
|
|
134
138
|
uri: optimizeImage(lastOrder?.business?.logo, 'h_50,c_limit'),
|
|
135
139
|
priority: FastImage.priority.normal,
|
|
136
140
|
} : theme.images.logos.logotype}
|
|
@@ -169,7 +173,7 @@ const OrderProgressUI = (props: any) => {
|
|
|
169
173
|
<ProgressTextWrapper>
|
|
170
174
|
<OText size={12} style={{ width: '50%' }}>{progressBarObjt(lastOrder.status)?.value}</OText>
|
|
171
175
|
<TimeWrapper>
|
|
172
|
-
<OText size={11}>{lastOrder?.delivery_type
|
|
176
|
+
<OText size={11}>{deliveryTypes?.includes?.(lastOrder?.delivery_type) ? t('ESTIMATED_DELIVERY', 'Estimated delivery') : t('ESTIMATED_TIME', 'Estimated time')}</OText>
|
|
173
177
|
<OText size={11}>
|
|
174
178
|
{lastOrder?.delivery_datetime_utc
|
|
175
179
|
? parseTime(lastOrder?.delivery_datetime_utc, { outputFormat: configs?.general_hour_format?.value || 'HH:mm' })
|
|
@@ -202,13 +206,29 @@ export const OrderProgress = (props: any) => {
|
|
|
202
206
|
const orderProgressProps = {
|
|
203
207
|
...props,
|
|
204
208
|
UIComponent: OrderProgressUI,
|
|
205
|
-
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],
|
|
206
210
|
useDefualtSessionManager: true,
|
|
207
211
|
paginationSettings: {
|
|
208
212
|
initialPage: 1,
|
|
209
213
|
pageSize: 10,
|
|
210
214
|
controlType: 'infinity'
|
|
211
215
|
},
|
|
216
|
+
propsToFetch: [
|
|
217
|
+
'id',
|
|
218
|
+
'name',
|
|
219
|
+
'business',
|
|
220
|
+
'status',
|
|
221
|
+
'delivery_type',
|
|
222
|
+
'delivery_datetime_utc',
|
|
223
|
+
'delivery_datetime',
|
|
224
|
+
'reporting_data',
|
|
225
|
+
'eta_current_status_time',
|
|
226
|
+
'eta_previous_status_times',
|
|
227
|
+
'eta_time',
|
|
228
|
+
'delivered_in',
|
|
229
|
+
'prepared_in',
|
|
230
|
+
'eta_drive_time'
|
|
231
|
+
],
|
|
212
232
|
noGiftCardOrders: true
|
|
213
233
|
}
|
|
214
234
|
|
|
@@ -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,10 @@ 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 =
|
|
62
|
-
const hideCartComments =
|
|
62
|
+
const isCouponEnabled = hideCouponByValidationCheckout
|
|
63
|
+
const hideCartComments = hideCommentsByValidationCheckout
|
|
63
64
|
|
|
64
65
|
const cart = orderState?.carts?.[`businessId:${props.cart.business_id}`]
|
|
65
66
|
|
|
@@ -72,12 +73,14 @@ const OrderSummaryUI = (props: any) => {
|
|
|
72
73
|
}
|
|
73
74
|
}
|
|
74
75
|
|
|
75
|
-
const getIncludedTaxes = () => {
|
|
76
|
+
const getIncludedTaxes = (isDeliveryFee?: boolean) => {
|
|
76
77
|
if (cart?.taxes === null || !cart?.taxes) {
|
|
77
78
|
return cart?.business?.tax_type === 1 ? cart?.tax : 0
|
|
78
79
|
} else {
|
|
79
80
|
return cart?.taxes.reduce((taxIncluded: number, tax: any) => {
|
|
80
|
-
return taxIncluded +
|
|
81
|
+
return taxIncluded +
|
|
82
|
+
(((!isDeliveryFee && tax.type === 1 && tax.target === 'product') ||
|
|
83
|
+
(isDeliveryFee && tax.type === 1 && tax.target === 'delivery_fee')) ? tax.summary?.tax : 0)
|
|
81
84
|
}, 0)
|
|
82
85
|
}
|
|
83
86
|
}
|
|
@@ -102,7 +105,7 @@ const OrderSummaryUI = (props: any) => {
|
|
|
102
105
|
}
|
|
103
106
|
|
|
104
107
|
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)
|
|
108
|
+
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
109
|
}
|
|
107
110
|
|
|
108
111
|
const OfferAlert = ({ offerId }: any) => {
|
|
@@ -194,7 +197,7 @@ const OrderSummaryUI = (props: any) => {
|
|
|
194
197
|
</OSTable>
|
|
195
198
|
)}
|
|
196
199
|
{
|
|
197
|
-
cart.taxes?.length > 0 && cart.taxes.filter((tax: any) => tax.type === 2 && tax?.rate !== 0).map((tax: any) => (
|
|
200
|
+
cart.taxes?.length > 0 && cart.taxes.filter((tax: any) => tax.type === 2 && tax?.rate !== 0 && tax?.target === 'product').map((tax: any, i: number) => (
|
|
198
201
|
<OSTable key={tax.id}>
|
|
199
202
|
<OSRow>
|
|
200
203
|
<OText size={12} numberOfLines={1} >
|
|
@@ -249,9 +252,25 @@ const OrderSummaryUI = (props: any) => {
|
|
|
249
252
|
{orderState?.options?.type === 1 && !hideDeliveryFee && (
|
|
250
253
|
<OSTable>
|
|
251
254
|
<OText size={12}>{t('DELIVERY_FEE', 'Delivery Fee')}</OText>
|
|
252
|
-
<OText size={12}>{parsePrice(cart?.delivery_price_with_discount)}</OText>
|
|
255
|
+
<OText size={12}>{parsePrice(cart?.delivery_price_with_discount + getIncludedTaxes(true))}</OText>
|
|
253
256
|
</OSTable>
|
|
254
257
|
)}
|
|
258
|
+
{
|
|
259
|
+
cart?.taxes?.length > 0 && cart?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0 && tax?.target === 'delivery_fee').map((tax: any, i: number) => (
|
|
260
|
+
<OSTable key={`${tax.description}_${i}`}>
|
|
261
|
+
<OSRow>
|
|
262
|
+
<OText size={12} numberOfLines={1}>
|
|
263
|
+
{tax.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
|
|
264
|
+
{`(${verifyDecimals(tax?.rate, parseNumber)}%)`}
|
|
265
|
+
</OText>
|
|
266
|
+
<TouchableOpacity onPress={() => setOpenTaxModal({ open: true, data: tax, type: 'tax' })}>
|
|
267
|
+
<AntIcon name='infocirlceo' size={16} color={theme.colors.primary} />
|
|
268
|
+
</TouchableOpacity>
|
|
269
|
+
</OSRow>
|
|
270
|
+
<OText size={12}>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0)}</OText>
|
|
271
|
+
</OSTable>
|
|
272
|
+
))
|
|
273
|
+
}
|
|
255
274
|
{
|
|
256
275
|
cart?.offers?.length > 0 && cart?.offers?.filter((offer: any) => offer?.target === 2)?.map((offer: any) => (
|
|
257
276
|
<OSTable key={offer.id}>
|
|
@@ -31,14 +31,14 @@ const OrderTypeSelectorUI = (props: OrderTypeSelectParams) => {
|
|
|
31
31
|
const [orderState] = useOrder();
|
|
32
32
|
const [, t] = useLanguage();
|
|
33
33
|
const _orderTypes = orderTypes.filter((type: any) => configTypes?.includes(type.value));
|
|
34
|
-
const orderTypeTitle = (type
|
|
35
|
-
const orderTypeDescription = (type
|
|
36
|
-
const orderTypeCallAction = (type
|
|
34
|
+
const orderTypeTitle = (type: string) => theme?.header?.components?.order_types?.components?.[type]?.components?.title
|
|
35
|
+
const orderTypeDescription = (type: string) => theme?.header?.components?.order_types?.components?.[type]?.components?.description
|
|
36
|
+
const orderTypeCallAction = (type: string) => theme?.header?.components?.order_types?.components?.[type]?.components?.call_to_action
|
|
37
37
|
const items = _orderTypes.map((type) => {
|
|
38
38
|
return {
|
|
39
39
|
value: type.value,
|
|
40
|
-
label:
|
|
41
|
-
description:
|
|
40
|
+
label: t(type.content, type.content),
|
|
41
|
+
description: t(type.description, 'Lorem ipsum dolor sit amet, consectetur.')
|
|
42
42
|
}
|
|
43
43
|
})
|
|
44
44
|
|
|
@@ -102,6 +102,7 @@ const OrderTypeSelectorUI = (props: OrderTypeSelectParams) => {
|
|
|
102
102
|
style={{ paddingBottom: 0 }}
|
|
103
103
|
title={t('HOW_WILL_YOU_DELIVERY_TYPE', 'How will your order type?')}
|
|
104
104
|
titleAlign={'center'}
|
|
105
|
+
titleStyle={{ fontSize: 14 }}
|
|
105
106
|
noMargin
|
|
106
107
|
/>
|
|
107
108
|
{
|
|
@@ -115,7 +116,7 @@ const OrderTypeSelectorUI = (props: OrderTypeSelectParams) => {
|
|
|
115
116
|
<OText size={12} lineHeight={18} color={theme.colors.white} weight={Platform.OS === 'android' ? 'bold' : '600'}>{item?.label}</OText>
|
|
116
117
|
<OText size={10} lineHeight={15} color={theme.colors.white}>{item?.description}</OText>
|
|
117
118
|
<View style={{ flexDirection: 'row', alignItems: 'center' }}>
|
|
118
|
-
<OText size={10} lineHeight={15} color={theme.colors.white}>{
|
|
119
|
+
<OText size={10} lineHeight={15} color={theme.colors.white}>{t('START_MY_ORDER', 'Start my order')}</OText>
|
|
119
120
|
<AntDesignIcon name='arrowleft' size={26} color={theme.colors.white} style={{ transform: [{ rotate: '180deg' }], marginStart: 4 }} />
|
|
120
121
|
</View>
|
|
121
122
|
</MaskCont>
|