ordering-ui-react-native 0.21.63 → 0.21.64-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/PaymentOptionsWebView/index.tsx +1 -0
- 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 +4 -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/Chat/index.tsx +3 -1
- package/themes/business/src/components/DriverMap/index.tsx +36 -23
- 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 +1 -2
- 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 +30 -15
- package/themes/business/src/components/NewOrderNotification/index.tsx +76 -26
- package/themes/business/src/components/OrderDetails/Business.tsx +63 -7
- package/themes/business/src/components/OrderDetails/Delivery.tsx +36 -21
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +107 -56
- package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +61 -35
- package/themes/business/src/components/OrderDetails/styles.tsx +29 -3
- package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +220 -0
- package/themes/business/src/components/OrderSummary/index.tsx +240 -76
- package/themes/business/src/components/OrdersListManager/index.tsx +9 -1
- package/themes/business/src/components/OrdersOption/index.tsx +249 -126
- package/themes/business/src/components/PhoneInputNumber/index.tsx +8 -5
- package/themes/business/src/components/PreviousMessages/index.tsx +12 -0
- package/themes/business/src/components/PreviousOrders/OrderItem.tsx +29 -19
- package/themes/business/src/components/PreviousOrders/index.tsx +5 -3
- package/themes/business/src/components/PrinterEdition/index.tsx +363 -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/ProductItemAccordion/index.tsx +2 -2
- package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
- package/themes/business/src/components/Sessions/index.tsx +187 -0
- package/themes/business/src/components/Sessions/styles.tsx +20 -0
- 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 +106 -54
- 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/types/index.tsx +23 -5
- package/themes/business/src/utils/index.tsx +19 -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 +6 -9
- package/themes/original/src/components/BusinessController/index.tsx +14 -9
- package/themes/original/src/components/BusinessController/styles.tsx +8 -7
- package/themes/original/src/components/BusinessItemAccordion/index.tsx +15 -7
- 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 +3 -3
- package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
- package/themes/original/src/components/BusinessProductsListing/index.tsx +28 -13
- 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 +26 -9
- package/themes/original/src/components/CartContent/index.tsx +60 -45
- package/themes/original/src/components/Checkout/index.tsx +94 -62
- 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 +9 -11
- 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 +2 -2
- package/themes/original/src/components/Home/index.tsx +2 -10
- package/themes/original/src/components/LoginForm/Otp/index.tsx +4 -19
- package/themes/original/src/components/LoginForm/index.tsx +4 -7
- package/themes/original/src/components/MessageListing/index.tsx +1 -0
- package/themes/original/src/components/Messages/index.tsx +8 -7
- 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 +123 -62
- package/themes/original/src/components/MultiCheckout/styles.tsx +17 -0
- package/themes/original/src/components/MultiOrdersDetails/index.tsx +20 -14
- package/themes/original/src/components/MyOrders/index.tsx +21 -26
- package/themes/original/src/components/NavBar/index.tsx +4 -2
- 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/OrderHistory.tsx +5 -7
- package/themes/original/src/components/OrderDetails/index.tsx +5 -7
- package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
- package/themes/original/src/components/OrderProgress/index.tsx +22 -3
- package/themes/original/src/components/OrderTypeSelector/index.tsx +7 -6
- package/themes/original/src/components/OrdersOption/index.tsx +2 -4
- package/themes/original/src/components/PaymentOptionCard/index.tsx +4 -2
- 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 +47 -6
- 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 +16 -19
- package/themes/original/src/components/ProductForm/index.tsx +120 -109
- 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 +112 -91
- 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 +65 -67
- package/themes/original/src/components/SingleOrderCard/index.tsx +1 -2
- package/themes/original/src/components/SingleProductCard/index.tsx +5 -6
- 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 +12 -36
- package/themes/original/src/components/StripeElementsForm/index.tsx +78 -59
- 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/UpsellingProducts/UpsellingContent.tsx +10 -7
- package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +8 -3
- package/themes/original/src/components/UserFormDetails/index.tsx +83 -84
- package/themes/original/src/components/UserProfile/index.tsx +11 -2
- package/themes/original/src/components/Wallets/index.tsx +7 -4
- 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 +8 -7
- package/themes/original/src/components/shared/OInput.tsx +1 -4
- package/themes/original/src/types/index.tsx +5 -1
- package/themes/original/src/utils/index.tsx +12 -1
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { useState, useCallback } from 'react'
|
|
2
2
|
|
|
3
3
|
import { Platform, StyleSheet, View, TouchableOpacity, ScrollView } from 'react-native';
|
|
4
|
+
import AntDesignIcon from 'react-native-vector-icons/AntDesign'
|
|
4
5
|
|
|
5
6
|
import { OButton, OText, OLink, OModal } from '../shared'
|
|
6
7
|
import {
|
|
@@ -12,6 +13,7 @@ import {
|
|
|
12
13
|
OrderBill,
|
|
13
14
|
Total,
|
|
14
15
|
OSRow,
|
|
16
|
+
OrderVehicle,
|
|
15
17
|
} from './styles';
|
|
16
18
|
|
|
17
19
|
import { ProductItemAccordion } from '../ProductItemAccordion';
|
|
@@ -53,6 +55,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
53
55
|
const WIDTH_SCREEN = orientationState?.dimensions?.width
|
|
54
56
|
|
|
55
57
|
const [openReviewModal, setOpenReviewModal] = useState(false)
|
|
58
|
+
const [showCustomFields, setShowCustomFields] = useState<boolean>(false);
|
|
56
59
|
|
|
57
60
|
const [isReadMore, setIsReadMore] = useState({
|
|
58
61
|
customerAddress: false,
|
|
@@ -134,27 +137,36 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
134
137
|
|
|
135
138
|
{order?.metafields?.length > 0 && (
|
|
136
139
|
<OrderBusiness>
|
|
137
|
-
<
|
|
138
|
-
{
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
140
|
+
<TouchableOpacity onPress={() => setShowCustomFields((prev: boolean) => !prev)} style={{ flexDirection: 'row', width: '100%', justifyContent: 'space-between', alignItems: 'flex-start' }}>
|
|
141
|
+
<OText style={{ marginBottom: 5 }} size={16} weight="600">
|
|
142
|
+
{t('CUSTOM_FIELDS', 'Custom fields')}
|
|
143
|
+
</OText>
|
|
144
|
+
<AntDesignIcon
|
|
145
|
+
name={showCustomFields ? 'up' : 'down'}
|
|
146
|
+
size={14}
|
|
147
|
+
/>
|
|
148
|
+
</TouchableOpacity>
|
|
149
|
+
{showCustomFields && (
|
|
150
|
+
<>
|
|
151
|
+
{order.metafields.map((field: any) => (
|
|
152
|
+
<View
|
|
153
|
+
key={field.id}
|
|
154
|
+
style={{
|
|
155
|
+
width: '100%',
|
|
156
|
+
flexDirection: 'row',
|
|
157
|
+
marginBottom: 5
|
|
158
|
+
}}
|
|
159
|
+
>
|
|
160
|
+
<OText style={{ width: '50%' }}>
|
|
161
|
+
{field.key}
|
|
162
|
+
</OText>
|
|
163
|
+
<OText style={{ width: '45%', textAlign: 'right' }}>
|
|
164
|
+
{field.value}
|
|
165
|
+
</OText>
|
|
166
|
+
</View>
|
|
167
|
+
))}
|
|
168
|
+
</>
|
|
169
|
+
)}
|
|
158
170
|
</OrderBusiness>
|
|
159
171
|
)}
|
|
160
172
|
|
|
@@ -208,8 +220,8 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
208
220
|
<OLink
|
|
209
221
|
PressStyle={styles.linkWithIcons}
|
|
210
222
|
url={Platform.select({
|
|
211
|
-
ios: `maps:0,0?q=${order?.business?.address}`,
|
|
212
|
-
android: `geo:0,0?q=${order?.business?.address}`,
|
|
223
|
+
ios: `maps:0,0?q=${order?.business?.address}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
|
|
224
|
+
android: `geo:0,0?q=${order?.business?.address}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
|
|
213
225
|
})}
|
|
214
226
|
numberOfLines={2}
|
|
215
227
|
shorcut={order?.business?.address}
|
|
@@ -219,7 +231,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
219
231
|
)}
|
|
220
232
|
{!!order?.business?.location && order?.customer?.location && (
|
|
221
233
|
<OText>
|
|
222
|
-
{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
|
|
234
|
+
{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)}
|
|
223
235
|
</OText>
|
|
224
236
|
)}
|
|
225
237
|
{!!order?.business?.address_notes && (
|
|
@@ -228,8 +240,8 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
228
240
|
<OLink
|
|
229
241
|
PressStyle={styles.linkWithIcons}
|
|
230
242
|
url={Platform.select({
|
|
231
|
-
ios: `maps:0,0?q=${order?.business?.address_notes}`,
|
|
232
|
-
android: `geo:0,0?q=${order?.business?.address_notes}`,
|
|
243
|
+
ios: `maps:0,0?q=${order?.business?.address_notes}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
|
|
244
|
+
android: `geo:0,0?q=${order?.business?.address_notes}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
|
|
233
245
|
})}
|
|
234
246
|
shorcut={order?.business?.address_notes}
|
|
235
247
|
TextStyle={styles.textLink}
|
|
@@ -349,8 +361,8 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
349
361
|
<OLink
|
|
350
362
|
PressStyle={{ ...styles.linkWithIcons, marginBottom: 0 }}
|
|
351
363
|
url={Platform.select({
|
|
352
|
-
ios: `maps:0,0?q=${order?.customer?.address}`,
|
|
353
|
-
android: `geo:0,0?q=${order?.customer?.address}`,
|
|
364
|
+
ios: `maps:0,0?q=${order?.customer?.address}@${order?.customer?.location?.lat},${order?.customer?.location?.lng}`,
|
|
365
|
+
android: `geo:0,0?q=${order?.customer?.address}@${order?.customer?.location?.lat},${order?.customer?.location?.lng}`,
|
|
354
366
|
})}
|
|
355
367
|
onTextLayout={e => onTextLayout(e, 'customerAddress')}
|
|
356
368
|
numberOfLines={isReadMore.customerAddress ? 20 : 2}
|
|
@@ -397,26 +409,16 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
397
409
|
{t('ON_BEHALF_OF', 'On behalf of')}{': '} {order?.on_behalf_of}
|
|
398
410
|
</OText>
|
|
399
411
|
)}
|
|
400
|
-
{(
|
|
412
|
+
{(order?.delivery_option !== undefined && order?.delivery_type === 1) && (
|
|
401
413
|
<View style={{ marginTop: 10 }}>
|
|
402
414
|
{order?.delivery_option !== undefined && order?.delivery_type === 1 && (
|
|
403
415
|
<OText>
|
|
404
|
-
{t(order?.delivery_option?.name?.toUpperCase()?.replace(/ /g, '_'), order?.delivery_option?.name)}
|
|
416
|
+
{t(order?.delivery_option?.name?.toUpperCase?.()?.replace(/ /g, '_'), order?.delivery_option?.name)}
|
|
405
417
|
</OText>
|
|
406
418
|
)}
|
|
407
|
-
{!!order?.comment && (
|
|
408
|
-
<>
|
|
409
|
-
<OText weight='500' style={{ marginBottom: 5 }}>
|
|
410
|
-
{t('ORDER_COMMENT', 'Order Comment')}
|
|
411
|
-
</OText>
|
|
412
|
-
<OText style={{ fontStyle: 'italic', opacity: 0.6, marginBottom: 20 }}>
|
|
413
|
-
{order?.comment}
|
|
414
|
-
</OText>
|
|
415
|
-
</>
|
|
416
|
-
)}
|
|
417
419
|
</View>
|
|
418
420
|
)}
|
|
419
|
-
{!order?.user_review && pastOrderStatuses.includes(order?.status) && (
|
|
421
|
+
{!order?.user_review && pastOrderStatuses.includes(order?.status) && order?.customer_id && (
|
|
420
422
|
<OButton
|
|
421
423
|
style={styles.btnReview}
|
|
422
424
|
textStyle={{ color: theme.colors.white }}
|
|
@@ -428,10 +430,16 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
428
430
|
</OrderCustomer>
|
|
429
431
|
|
|
430
432
|
<OrderProducts>
|
|
431
|
-
<OText style={{ marginBottom:
|
|
433
|
+
<OText style={{ marginBottom: 10 }} size={16} weight="600">
|
|
432
434
|
{t('ORDER_DETAILS', 'Order Details')}
|
|
433
435
|
</OText>
|
|
434
436
|
|
|
437
|
+
{!!order?.comment && (
|
|
438
|
+
<OText>
|
|
439
|
+
{`${t('ORDER_COMMENT', 'Order Comment')}: ${order?.comment}`}
|
|
440
|
+
</OText>
|
|
441
|
+
)}
|
|
442
|
+
|
|
435
443
|
{order?.products?.length > 0 &&
|
|
436
444
|
order?.products.map((product: any, i: number) => (
|
|
437
445
|
<ProductItemAccordion
|
|
@@ -442,7 +450,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
442
450
|
))}
|
|
443
451
|
</OrderProducts>
|
|
444
452
|
|
|
445
|
-
<OrderBill>
|
|
453
|
+
<OrderBill vehicleExists={!!order?.vehicle}>
|
|
446
454
|
<Table>
|
|
447
455
|
<OText mBottom={4}>{t('SUBTOTAL', 'Subtotal')}</OText>
|
|
448
456
|
<OText mBottom={4}>
|
|
@@ -467,7 +475,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
467
475
|
<Table key={offer.id}>
|
|
468
476
|
<OSRow>
|
|
469
477
|
<OText mBottom={4}>
|
|
470
|
-
{t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
|
|
478
|
+
{t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
|
|
471
479
|
{offer.rate_type === 1 && (
|
|
472
480
|
<OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
|
|
473
481
|
)}
|
|
@@ -513,7 +521,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
513
521
|
<Table key={tax.id}>
|
|
514
522
|
<OSRow>
|
|
515
523
|
<OText mBottom={4}>
|
|
516
|
-
{t(tax?.name?.toUpperCase()?.replace(/ /g, '_'), tax?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
|
|
524
|
+
{t(tax?.name?.toUpperCase?.()?.replace(/ /g, '_'), tax?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
|
|
517
525
|
{`(${verifyDecimals(tax?.rate, parseNumber)}%)`}{' '}
|
|
518
526
|
</OText>
|
|
519
527
|
</OSRow>
|
|
@@ -526,7 +534,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
526
534
|
<Table key={fee.id}>
|
|
527
535
|
<OSRow>
|
|
528
536
|
<OText mBottom={4}>
|
|
529
|
-
{t(fee?.name?.toUpperCase()?.replace(/ /g, '_'), fee?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
|
|
537
|
+
{t(fee?.name?.toUpperCase?.()?.replace(/ /g, '_'), fee?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
|
|
530
538
|
({fee?.fixed > 0 && `${parsePrice(fee?.fixed, { currency: order?.currency })} + `}{fee.percentage}%){' '}
|
|
531
539
|
</OText>
|
|
532
540
|
</OSRow>
|
|
@@ -539,7 +547,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
539
547
|
<Table key={offer.id}>
|
|
540
548
|
<OSRow>
|
|
541
549
|
<OText mBottom={4}>
|
|
542
|
-
{t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
|
|
550
|
+
{t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
|
|
543
551
|
{offer.rate_type === 1 && (
|
|
544
552
|
<OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
|
|
545
553
|
)}
|
|
@@ -550,7 +558,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
550
558
|
))
|
|
551
559
|
}
|
|
552
560
|
{
|
|
553
|
-
typeof order?.summary?.delivery_price === 'number' && (
|
|
561
|
+
typeof order?.summary?.delivery_price === 'number' && order.delivery_type !== 2 && (
|
|
554
562
|
<Table>
|
|
555
563
|
<OText mBottom={4}>
|
|
556
564
|
{t('DELIVERY_FEE', 'Delivery Fee')}
|
|
@@ -567,7 +575,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
567
575
|
<Table key={offer.id}>
|
|
568
576
|
<OSRow>
|
|
569
577
|
<OText mBottom={4}>
|
|
570
|
-
{t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
|
|
578
|
+
{t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
|
|
571
579
|
{offer.rate_type === 1 && (
|
|
572
580
|
<OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
|
|
573
581
|
)}
|
|
@@ -577,7 +585,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
577
585
|
</Table>
|
|
578
586
|
))
|
|
579
587
|
}
|
|
580
|
-
{(order?.summary?.driver_tip > 0 || order?.driver_tip > 0) && (
|
|
588
|
+
{(order?.summary?.driver_tip > 0 || order?.driver_tip > 0) && order.delivery_type !== 2 && (
|
|
581
589
|
<Table>
|
|
582
590
|
<OText mBottom={4}>
|
|
583
591
|
{t('DRIVER_TIP', 'Driver tip')}
|
|
@@ -635,13 +643,12 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
635
643
|
<OText>
|
|
636
644
|
{event?.wallet_event
|
|
637
645
|
? walletName[event?.wallet_event?.wallet?.type]?.name
|
|
638
|
-
:
|
|
646
|
+
: event?.paymethod?.gateway
|
|
647
|
+
? t(event?.paymethod?.gateway?.toUpperCase?.(), event?.paymethod?.name)
|
|
648
|
+
: order?.paymethod?.id === event?.paymethod_id
|
|
649
|
+
? t(order?.paymethod?.gateway?.toUpperCase?.(), order?.paymethod?.name)
|
|
650
|
+
: ''}
|
|
639
651
|
</OText>
|
|
640
|
-
{/* {event?.data?.charge_id && (
|
|
641
|
-
<OText>
|
|
642
|
-
{`${t('CODE', 'Code')}: ${event?.data?.charge_id}`}
|
|
643
|
-
</OText>
|
|
644
|
-
)} */}
|
|
645
652
|
</View>
|
|
646
653
|
<OText>
|
|
647
654
|
{(event?.paymethod?.gateway === 'cash' && order?.cash)
|
|
@@ -653,7 +660,51 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
653
660
|
</View>
|
|
654
661
|
</View>
|
|
655
662
|
)}
|
|
663
|
+
|
|
656
664
|
</OrderBill >
|
|
665
|
+
{!!order?.vehicle && (
|
|
666
|
+
<OrderVehicle>
|
|
667
|
+
<OText
|
|
668
|
+
style={{ marginBottom: 5 }}
|
|
669
|
+
size={16}
|
|
670
|
+
weight="600"
|
|
671
|
+
color={theme.colors.textGray}>
|
|
672
|
+
{t('VEHICLE', 'Vehicle')}
|
|
673
|
+
</OText>
|
|
674
|
+
<Table>
|
|
675
|
+
<OText style={{ marginBottom: 5 }}>
|
|
676
|
+
{t('CAR_REGISTRATION', 'Car registration')}
|
|
677
|
+
</OText>
|
|
678
|
+
<OText style={{ marginBottom: 5 }}>
|
|
679
|
+
{order?.vehicle?.car_registration}
|
|
680
|
+
</OText>
|
|
681
|
+
</Table>
|
|
682
|
+
<Table>
|
|
683
|
+
<OText style={{ marginBottom: 5 }}>
|
|
684
|
+
{t('COLOR', 'Color')}
|
|
685
|
+
</OText>
|
|
686
|
+
<OText style={{ marginBottom: 5 }}>
|
|
687
|
+
{order?.vehicle?.color}
|
|
688
|
+
</OText>
|
|
689
|
+
</Table>
|
|
690
|
+
<Table>
|
|
691
|
+
<OText style={{ marginBottom: 5 }}>
|
|
692
|
+
{t('MODEL', 'Model')}
|
|
693
|
+
</OText>
|
|
694
|
+
<OText style={{ marginBottom: 5 }}>
|
|
695
|
+
{order?.vehicle?.model}
|
|
696
|
+
</OText>
|
|
697
|
+
</Table>
|
|
698
|
+
<Table>
|
|
699
|
+
<OText style={{ marginBottom: 5 }}>
|
|
700
|
+
{t('TYPE', 'Type')}
|
|
701
|
+
</OText>
|
|
702
|
+
<OText style={{ marginBottom: 5 }}>
|
|
703
|
+
{order?.vehicle?.type}
|
|
704
|
+
</OText>
|
|
705
|
+
</Table>
|
|
706
|
+
</OrderVehicle>
|
|
707
|
+
)}
|
|
657
708
|
<OModal
|
|
658
709
|
open={openReviewModal}
|
|
659
710
|
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,11 +51,20 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
|
|
|
45
51
|
getOrderStatus,
|
|
46
52
|
logisticOrderStatus,
|
|
47
53
|
handleViewSummaryOrder,
|
|
48
|
-
handleCopyClipboard
|
|
54
|
+
handleCopyClipboard,
|
|
55
|
+
messages,
|
|
56
|
+
messagesReadList
|
|
49
57
|
} = props
|
|
50
58
|
const theme = useTheme();
|
|
51
59
|
const [, t] = useLanguage();
|
|
52
|
-
const [
|
|
60
|
+
const [configState] = useConfig()
|
|
61
|
+
const [{ user }] = useSession()
|
|
62
|
+
const [{ parseDate, parsePrice }] = useUtils();
|
|
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
|
|
53
68
|
|
|
54
69
|
const styles = StyleSheet.create({
|
|
55
70
|
icons: {
|
|
@@ -120,6 +135,30 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
|
|
|
120
135
|
? t('CURBSIDE', 'Curbside')
|
|
121
136
|
: t('DRIVER_THRU', 'Driver thru')
|
|
122
137
|
|
|
138
|
+
const handlePaymethodsListString = () => {
|
|
139
|
+
const paymethodsList = order?.payment_events?.filter((item: any) => item.event === 'payment').map((paymethod: any) => {
|
|
140
|
+
return paymethod?.wallet_event
|
|
141
|
+
? walletName[paymethod?.wallet_event?.wallet?.type]?.name
|
|
142
|
+
: paymethod?.paymethod?.gateway && paymethod?.paymethod?.gateway === 'cash' && order?.cash > 0
|
|
143
|
+
? `${t(paymethod?.paymethod?.gateway?.toUpperCase(), paymethod?.paymethod?.name)} (${t('CASH_CHANGE_OF', 'Change of :amount:').replace(':amount:', parsePrice(order?.cash))})`
|
|
144
|
+
: paymethod?.paymethod?.gateway
|
|
145
|
+
? t(paymethod?.paymethod?.gateway?.toUpperCase(), paymethod?.paymethod?.name)
|
|
146
|
+
: t(order?.paymethod?.gateway?.toUpperCase(), order?.paymethod?.name)
|
|
147
|
+
})
|
|
148
|
+
return paymethodsList.join(', ')
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
const deliveryDate = () => {
|
|
152
|
+
const dateString = order?.delivery_datetime_utc ?? order?.delivery_datetime
|
|
153
|
+
const currentDate = new Date();
|
|
154
|
+
const receivedDate: any = new Date(order?.delivery_datetime);
|
|
155
|
+
|
|
156
|
+
const formattedDate = receivedDate <= currentDate
|
|
157
|
+
? `${t('ASAP_ABBREVIATION', 'ASAP')}(${parseDate(dateString, { utc: !!order?.delivery_datetime_utc })})`
|
|
158
|
+
: parseDate(dateString, { utc: !!order?.delivery_datetime_utc })
|
|
159
|
+
return formattedDate
|
|
160
|
+
}
|
|
161
|
+
|
|
123
162
|
return (
|
|
124
163
|
<>
|
|
125
164
|
{!props.isCustomView && (
|
|
@@ -163,18 +202,20 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
|
|
|
163
202
|
style={styles.icons}
|
|
164
203
|
onClick={() => handleOpenMapView()}
|
|
165
204
|
/>
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
205
|
+
<Messages>
|
|
206
|
+
{filteredMessages?.filter((message: any) => message?.author_id !== user?.id && !message?.read)?.length > 0 && <Dot />}
|
|
207
|
+
<OIconButton
|
|
208
|
+
icon={theme.images.general.messages}
|
|
209
|
+
iconStyle={{
|
|
210
|
+
width: 20,
|
|
211
|
+
height: 20,
|
|
212
|
+
tintColor: theme.colors.textGray,
|
|
213
|
+
}}
|
|
214
|
+
borderColor={theme.colors.clear}
|
|
215
|
+
style={styles.icons}
|
|
216
|
+
onClick={() => handleOpenMessagesForBusiness()}
|
|
217
|
+
/>
|
|
218
|
+
</Messages>
|
|
178
219
|
</Actions>
|
|
179
220
|
)}
|
|
180
221
|
</Header>
|
|
@@ -182,16 +223,12 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
|
|
|
182
223
|
<OrderHeader>
|
|
183
224
|
{!props.isCustomView ? (
|
|
184
225
|
<OText size={13} style={{ marginBottom: 5 }}>
|
|
185
|
-
{
|
|
186
|
-
? parseDate(order?.delivery_datetime_utc)
|
|
187
|
-
: parseDate(order?.delivery_datetime, { utc: false })}
|
|
226
|
+
{deliveryDate()}
|
|
188
227
|
</OText>
|
|
189
228
|
) : (
|
|
190
229
|
<Header style={{ alignItems: 'center' }}>
|
|
191
230
|
<OText size={13} style={{ marginBottom: 5 }}>
|
|
192
|
-
{
|
|
193
|
-
? parseDate(order?.delivery_datetime_utc)
|
|
194
|
-
: parseDate(order?.delivery_datetime, { utc: false })}
|
|
231
|
+
{deliveryDate()}
|
|
195
232
|
</OText>
|
|
196
233
|
|
|
197
234
|
{(!order?.isLogistic || (!logisticOrderStatus?.includes(order?.status) && !order?.order_group)) && (
|
|
@@ -230,7 +267,6 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
|
|
|
230
267
|
style={styles.icons}
|
|
231
268
|
onClick={() => handleOpenMapView()}
|
|
232
269
|
/>
|
|
233
|
-
|
|
234
270
|
<OIconButton
|
|
235
271
|
icon={theme.images.general.messages}
|
|
236
272
|
iconStyle={{
|
|
@@ -249,7 +285,7 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
|
|
|
249
285
|
|
|
250
286
|
<OText numberOfLines={2} size={20} weight="600">
|
|
251
287
|
<>
|
|
252
|
-
{`${t('INVOICE_ORDER_NO', 'Order No.')} ${order?.id} `}
|
|
288
|
+
{`${t('INVOICE_ORDER_NO', 'Order No.')} ${showExternalId ? order?.external_id || order?.id : order?.id} `}
|
|
253
289
|
{!order?.isLogistic && (!order?.order_group_id || !logisticOrderStatus?.includes(order?.status)) && (
|
|
254
290
|
<>
|
|
255
291
|
{t('IS', 'is')}{' '}
|
|
@@ -263,7 +299,7 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
|
|
|
263
299
|
)}
|
|
264
300
|
</>
|
|
265
301
|
</OText>
|
|
266
|
-
{order?.external_id && (
|
|
302
|
+
{order?.external_id && !showExternalId && (
|
|
267
303
|
<OText size={13}>
|
|
268
304
|
<OText size={13} weight='bold'>{`${t('EXTERNAL_ID', 'External ID :')} `}</OText>
|
|
269
305
|
{order?.external_id}
|
|
@@ -283,20 +319,10 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
|
|
|
283
319
|
)}
|
|
284
320
|
<OText>
|
|
285
321
|
<OText size={13} weight='bold'>
|
|
286
|
-
{`${t('PAYMENT_METHODS', 'Payment methods')}: `}
|
|
322
|
+
{`${t(paymethodsLength > 1 ? 'PAYMENT_METHODS' : 'PAYMENT_METHOD', paymethodsLength > 1 ? 'Payment methods' : 'Payment method')}: `}
|
|
287
323
|
</OText>
|
|
288
324
|
{order?.payment_events?.length > 0 ? (
|
|
289
|
-
<OText size={13}>
|
|
290
|
-
{order?.payment_events?.map((event: any, idx: number) => {
|
|
291
|
-
return event?.wallet_event
|
|
292
|
-
? idx < order?.payment_events?.length - 1
|
|
293
|
-
? `${walletName[event?.wallet_event?.wallet?.type]?.name} - `
|
|
294
|
-
: walletName[event?.wallet_event?.wallet?.type]?.name
|
|
295
|
-
: idx < order?.payment_events?.length - 1
|
|
296
|
-
? `${t(event?.paymethod?.name?.toUpperCase()?.replace(/ /g, '_'), event?.paymethod?.name)} - `
|
|
297
|
-
: t(event?.paymethod?.name?.toUpperCase()?.replace(/ /g, '_'), event?.paymethod?.name)
|
|
298
|
-
})}
|
|
299
|
-
</OText>
|
|
325
|
+
<OText size={13}>{`${handlePaymethodsListString()}`}</OText>
|
|
300
326
|
) : (
|
|
301
327
|
<OText size={13}>{t(order?.paymethod?.gateway?.toUpperCase(), order?.paymethod?.name)}</OText>
|
|
302
328
|
)}
|
|
@@ -25,13 +25,13 @@ export const Logo = styled.View`
|
|
|
25
25
|
|
|
26
26
|
export const OrderContent = styled.View`
|
|
27
27
|
flex: 1;
|
|
28
|
-
${(props
|
|
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
|
|
34
|
+
${(props: any) => props.lastOrder && css`
|
|
35
35
|
margin-bottom: 50px;
|
|
36
36
|
`}
|
|
37
37
|
`;
|
|
@@ -68,7 +68,18 @@ export const Table = styled.View`
|
|
|
68
68
|
|
|
69
69
|
export const OrderBill = styled.View`
|
|
70
70
|
padding-vertical: 20px;
|
|
71
|
-
|
|
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;
|
|
72
83
|
flex: 1;
|
|
73
84
|
`;
|
|
74
85
|
|
|
@@ -98,3 +109,18 @@ export const OSRow = styled.View`
|
|
|
98
109
|
width: 70%;
|
|
99
110
|
flex-wrap: wrap;
|
|
100
111
|
`
|
|
112
|
+
|
|
113
|
+
export const Messages = styled.View`
|
|
114
|
+
position: relative;
|
|
115
|
+
`;
|
|
116
|
+
|
|
117
|
+
export const Dot = styled.View`
|
|
118
|
+
position: absolute;
|
|
119
|
+
width: 8px;
|
|
120
|
+
height: 8px;
|
|
121
|
+
border-radius: 4px;
|
|
122
|
+
background-color: ${(props: any) => props.theme.colors.red};
|
|
123
|
+
top: 10;
|
|
124
|
+
right: 10;
|
|
125
|
+
z-index: 99;
|
|
126
|
+
`;
|