ordering-ui-react-native 0.22.2 → 0.22.3-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 +4 -2
- package/src/components/VerifyPhone/styles.tsx +1 -2
- package/src/context/OfflineActions/index.tsx +236 -0
- package/src/types/index.tsx +2 -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 +15 -3
- package/themes/business/src/components/DriverMap/index.tsx +49 -27
- package/themes/business/src/components/FloatingButton/index.tsx +3 -2
- package/themes/business/src/components/GoogleMap/index.tsx +15 -8
- 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 +40 -27
- package/themes/business/src/components/OrderDetails/Business.tsx +54 -37
- package/themes/business/src/components/OrderDetails/Delivery.tsx +138 -55
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +125 -43
- package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +62 -24
- package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
- package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +138 -64
- package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
- package/themes/business/src/components/OrderSummary/index.tsx +210 -65
- package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
- package/themes/business/src/components/OrdersOption/index.tsx +217 -156
- 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 +39 -16
- 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 +173 -154
- package/themes/business/src/components/PrinterSettings/styles.tsx +20 -0
- package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
- package/themes/business/src/components/StoresList/index.tsx +2 -2
- package/themes/business/src/components/UserProfileForm/index.tsx +16 -17
- package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
- package/themes/business/src/components/shared/OTextarea.tsx +8 -9
- package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
- package/themes/business/src/types/index.tsx +14 -5
- 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 +11 -0
- 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 +5 -5
- 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 +44 -32
- package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +73 -70
- package/themes/original/src/components/BusinessProductsList/index.tsx +6 -7
- 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 +38 -14
- package/themes/original/src/components/CartContent/index.tsx +2 -4
- package/themes/original/src/components/Checkout/index.tsx +112 -58
- 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/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/VerticalGiftCardOrdersLayout/index.tsx +11 -12
- 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 +3 -11
- 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 +29 -17
- package/themes/original/src/components/MomentOption/TimeListItem.tsx +56 -0
- package/themes/original/src/components/MomentOption/index.tsx +79 -56
- package/themes/original/src/components/MomentSelector/index.tsx +1 -1
- package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -3
- package/themes/original/src/components/MultiCheckout/index.tsx +55 -27
- package/themes/original/src/components/MultiOrdersDetails/index.tsx +1 -0
- package/themes/original/src/components/MyOrders/index.tsx +2 -2
- 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 +44 -21
- package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
- package/themes/original/src/components/OrderProgress/index.tsx +5 -4
- package/themes/original/src/components/OrderSummary/index.tsx +29 -10
- package/themes/original/src/components/OrderTypeSelector/index.tsx +7 -6
- package/themes/original/src/components/OrdersOption/index.tsx +3 -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 +10 -8
- 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 +51 -44
- 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 +6 -4
- 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 +76 -62
- 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 +17 -16
- package/themes/original/src/components/UserFormDetails/index.tsx +159 -133
- package/themes/original/src/components/UserProfile/index.tsx +9 -1
- package/themes/original/src/components/UserVerification/index.tsx +14 -4
- package/themes/original/src/components/Wallets/index.tsx +6 -3
- package/themes/original/src/components/WebsocketStatus/index.tsx +1 -4
- 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
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import React, { useState, useCallback } from 'react'
|
|
2
|
-
|
|
3
2
|
import { Platform, StyleSheet, View, TouchableOpacity, ScrollView } from 'react-native';
|
|
4
3
|
import AntDesignIcon from 'react-native-vector-icons/AntDesign'
|
|
5
4
|
|
|
@@ -13,6 +12,8 @@ import {
|
|
|
13
12
|
OrderBill,
|
|
14
13
|
Total,
|
|
15
14
|
OSRow,
|
|
15
|
+
OrderVehicle,
|
|
16
|
+
OrderSpot,
|
|
16
17
|
} from './styles';
|
|
17
18
|
|
|
18
19
|
import { ProductItemAccordion } from '../ProductItemAccordion';
|
|
@@ -23,7 +24,8 @@ import {
|
|
|
23
24
|
useLanguage,
|
|
24
25
|
useUtils,
|
|
25
26
|
useConfig,
|
|
26
|
-
useSession
|
|
27
|
+
useSession,
|
|
28
|
+
useApi
|
|
27
29
|
} from 'ordering-components/native';
|
|
28
30
|
import { useTheme } from 'styled-components/native';
|
|
29
31
|
import { ReviewCustomer } from '../ReviewCustomer'
|
|
@@ -44,6 +46,7 @@ interface OrderContent {
|
|
|
44
46
|
export const OrderContentComponent = (props: OrderContent) => {
|
|
45
47
|
const [, t] = useLanguage();
|
|
46
48
|
const theme = useTheme()
|
|
49
|
+
const [ordering] = useApi()
|
|
47
50
|
const [{ user }] = useSession()
|
|
48
51
|
const { order, logisticOrderStatus, isOrderGroup, lastOrder } = props;
|
|
49
52
|
const [{ parsePrice, parseNumber }] = useUtils();
|
|
@@ -66,6 +69,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
66
69
|
})
|
|
67
70
|
|
|
68
71
|
const pastOrderStatuses = [1, 2, 5, 6, 10, 11, 12, 16, 17]
|
|
72
|
+
const deliveryTypes = [1, 7]
|
|
69
73
|
|
|
70
74
|
const walletName: any = {
|
|
71
75
|
cash: {
|
|
@@ -97,19 +101,21 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
97
101
|
}
|
|
98
102
|
})
|
|
99
103
|
|
|
100
|
-
const getIncludedTaxes = () => {
|
|
104
|
+
const getIncludedTaxes = (isDeliveryFee?: boolean) => {
|
|
101
105
|
if (!order?.taxes) return 0
|
|
102
106
|
if (order?.taxes?.length === 0) {
|
|
103
107
|
return order.tax_type === 1 ? order?.summary?.tax ?? 0 : 0
|
|
104
108
|
} else {
|
|
105
109
|
return order?.taxes.reduce((taxIncluded: number, tax: any) => {
|
|
106
|
-
return taxIncluded +
|
|
110
|
+
return taxIncluded +
|
|
111
|
+
(((!isDeliveryFee && tax.type === 1 && tax.target === 'product') ||
|
|
112
|
+
(isDeliveryFee && tax.type === 1 && tax.target === 'delivery_fee')) ? tax.summary?.tax : 0)
|
|
107
113
|
}, 0)
|
|
108
114
|
}
|
|
109
115
|
}
|
|
110
116
|
|
|
111
117
|
const getIncludedTaxesDiscounts = () => {
|
|
112
|
-
return order?.taxes?.filter((tax: any) => tax?.type === 1)?.reduce((carry: number, tax: any) => carry + (tax?.summary?.tax_after_discount ?? tax?.summary?.tax), 0)
|
|
118
|
+
return order?.taxes?.filter((tax: any) => tax?.type === 1 && tax?.target === 'product')?.reduce((carry: number, tax: any) => carry + (tax?.summary?.tax_after_discount ?? tax?.summary?.tax), 0)
|
|
113
119
|
}
|
|
114
120
|
|
|
115
121
|
const containsOnlyNumbers = (str: string) => {
|
|
@@ -219,8 +225,8 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
219
225
|
<OLink
|
|
220
226
|
PressStyle={styles.linkWithIcons}
|
|
221
227
|
url={Platform.select({
|
|
222
|
-
ios: `maps:0,0?q=${order?.business?.address}`,
|
|
223
|
-
android: `geo:0,0?q=${order?.business?.address}`,
|
|
228
|
+
ios: `maps:0,0?q=${order?.business?.address}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
|
|
229
|
+
android: `geo:0,0?q=${order?.business?.address}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
|
|
224
230
|
})}
|
|
225
231
|
numberOfLines={2}
|
|
226
232
|
shorcut={order?.business?.address}
|
|
@@ -230,7 +236,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
230
236
|
)}
|
|
231
237
|
{!!order?.business?.location && order?.customer?.location && (
|
|
232
238
|
<OText>
|
|
233
|
-
{t('DISTANCE_TO_THE_BUSINESS', 'Distance to the business')}: {transformDistance(calculateDistance(order?.business?.location, { latitude: order?.customer?.location?.lat, longitude: order?.customer?.location?.lng }), distanceUnit)} {t(distanceUnit
|
|
239
|
+
{t('DISTANCE_TO_THE_BUSINESS', 'Distance to the business')}: {transformDistance(calculateDistance(order?.business?.location, { latitude: order?.customer?.location?.lat, longitude: order?.customer?.location?.lng }), distanceUnit)} {t(distanceUnit?.toUpperCase?.(), distanceUnit)}
|
|
234
240
|
</OText>
|
|
235
241
|
)}
|
|
236
242
|
{!!order?.business?.address_notes && (
|
|
@@ -239,8 +245,8 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
239
245
|
<OLink
|
|
240
246
|
PressStyle={styles.linkWithIcons}
|
|
241
247
|
url={Platform.select({
|
|
242
|
-
ios: `maps:0,0?q=${order?.business?.address_notes}`,
|
|
243
|
-
android: `geo:0,0?q=${order?.business?.address_notes}`,
|
|
248
|
+
ios: `maps:0,0?q=${order?.business?.address_notes}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
|
|
249
|
+
android: `geo:0,0?q=${order?.business?.address_notes}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
|
|
244
250
|
})}
|
|
245
251
|
shorcut={order?.business?.address_notes}
|
|
246
252
|
TextStyle={styles.textLink}
|
|
@@ -360,8 +366,8 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
360
366
|
<OLink
|
|
361
367
|
PressStyle={{ ...styles.linkWithIcons, marginBottom: 0 }}
|
|
362
368
|
url={Platform.select({
|
|
363
|
-
ios: `maps:0,0?q=${order?.customer?.address}`,
|
|
364
|
-
android: `geo:0,0?q=${order?.customer?.address}`,
|
|
369
|
+
ios: `maps:0,0?q=${order?.customer?.address}@${order?.customer?.location?.lat},${order?.customer?.location?.lng}`,
|
|
370
|
+
android: `geo:0,0?q=${order?.customer?.address}@${order?.customer?.location?.lat},${order?.customer?.location?.lng}`,
|
|
365
371
|
})}
|
|
366
372
|
onTextLayout={e => onTextLayout(e, 'customerAddress')}
|
|
367
373
|
numberOfLines={isReadMore.customerAddress ? 20 : 2}
|
|
@@ -408,26 +414,16 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
408
414
|
{t('ON_BEHALF_OF', 'On behalf of')}{': '} {order?.on_behalf_of}
|
|
409
415
|
</OText>
|
|
410
416
|
)}
|
|
411
|
-
{(
|
|
417
|
+
{(order?.delivery_option !== undefined && deliveryTypes.includes(order?.delivery_type)) && (
|
|
412
418
|
<View style={{ marginTop: 10 }}>
|
|
413
|
-
{order?.delivery_option !== undefined && order?.delivery_type
|
|
419
|
+
{order?.delivery_option !== undefined && deliveryTypes.includes(order?.delivery_type) && (
|
|
414
420
|
<OText>
|
|
415
|
-
{t(order?.delivery_option?.name?.toUpperCase()?.replace(/ /g, '_'), order?.delivery_option?.name)}
|
|
421
|
+
{t(order?.delivery_option?.name?.toUpperCase?.()?.replace(/ /g, '_'), order?.delivery_option?.name)}
|
|
416
422
|
</OText>
|
|
417
423
|
)}
|
|
418
|
-
{!!order?.comment && (
|
|
419
|
-
<>
|
|
420
|
-
<OText weight='500' style={{ marginBottom: 5 }}>
|
|
421
|
-
{t('ORDER_COMMENT', 'Order Comment')}
|
|
422
|
-
</OText>
|
|
423
|
-
<OText style={{ fontStyle: 'italic', opacity: 0.6, marginBottom: 20 }}>
|
|
424
|
-
{order?.comment}
|
|
425
|
-
</OText>
|
|
426
|
-
</>
|
|
427
|
-
)}
|
|
428
424
|
</View>
|
|
429
425
|
)}
|
|
430
|
-
{!order?.user_review && pastOrderStatuses.includes(order?.status) && (
|
|
426
|
+
{!order?.user_review && pastOrderStatuses.includes(order?.status) && order?.customer_id && (
|
|
431
427
|
<OButton
|
|
432
428
|
style={styles.btnReview}
|
|
433
429
|
textStyle={{ color: theme.colors.white }}
|
|
@@ -439,10 +435,26 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
439
435
|
</OrderCustomer>
|
|
440
436
|
|
|
441
437
|
<OrderProducts>
|
|
442
|
-
<OText style={{ marginBottom:
|
|
438
|
+
<OText style={{ marginBottom: 10 }} size={16} weight="600">
|
|
443
439
|
{t('ORDER_DETAILS', 'Order Details')}
|
|
444
440
|
</OText>
|
|
445
441
|
|
|
442
|
+
{!!order?.comment && (
|
|
443
|
+
<>
|
|
444
|
+
<OText>
|
|
445
|
+
{`${t('ORDER_COMMENT', 'Order Comment')}: `}
|
|
446
|
+
</OText>
|
|
447
|
+
<OText
|
|
448
|
+
{...(ordering?.project?.includes('delosi') && {
|
|
449
|
+
color: theme.colors.primary,
|
|
450
|
+
weight: 'bold'
|
|
451
|
+
})}
|
|
452
|
+
>
|
|
453
|
+
{order?.comment}
|
|
454
|
+
</OText>
|
|
455
|
+
</>
|
|
456
|
+
)}
|
|
457
|
+
|
|
446
458
|
{order?.products?.length > 0 &&
|
|
447
459
|
order?.products.map((product: any, i: number) => (
|
|
448
460
|
<ProductItemAccordion
|
|
@@ -453,7 +465,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
453
465
|
))}
|
|
454
466
|
</OrderProducts>
|
|
455
467
|
|
|
456
|
-
<OrderBill>
|
|
468
|
+
<OrderBill vehicleExists={!!order?.vehicle}>
|
|
457
469
|
<Table>
|
|
458
470
|
<OText mBottom={4}>{t('SUBTOTAL', 'Subtotal')}</OText>
|
|
459
471
|
<OText mBottom={4}>
|
|
@@ -478,7 +490,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
478
490
|
<Table key={offer.id}>
|
|
479
491
|
<OSRow>
|
|
480
492
|
<OText mBottom={4}>
|
|
481
|
-
{t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
|
|
493
|
+
{t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
|
|
482
494
|
{offer.rate_type === 1 && (
|
|
483
495
|
<OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
|
|
484
496
|
)}
|
|
@@ -520,11 +532,11 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
520
532
|
)
|
|
521
533
|
}
|
|
522
534
|
{
|
|
523
|
-
order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0).map((tax: any) => (
|
|
535
|
+
order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0 && tax?.target === 'product').map((tax: any) => (
|
|
524
536
|
<Table key={tax.id}>
|
|
525
537
|
<OSRow>
|
|
526
538
|
<OText mBottom={4}>
|
|
527
|
-
{t(tax?.name?.toUpperCase()?.replace(/ /g, '_'), tax?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
|
|
539
|
+
{t(tax?.name?.toUpperCase?.()?.replace(/ /g, '_'), tax?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
|
|
528
540
|
{`(${verifyDecimals(tax?.rate, parseNumber)}%)`}{' '}
|
|
529
541
|
</OText>
|
|
530
542
|
</OSRow>
|
|
@@ -537,7 +549,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
537
549
|
<Table key={fee.id}>
|
|
538
550
|
<OSRow>
|
|
539
551
|
<OText mBottom={4}>
|
|
540
|
-
{t(fee?.name?.toUpperCase()?.replace(/ /g, '_'), fee?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
|
|
552
|
+
{t(fee?.name?.toUpperCase?.()?.replace(/ /g, '_'), fee?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
|
|
541
553
|
({fee?.fixed > 0 && `${parsePrice(fee?.fixed, { currency: order?.currency })} + `}{fee.percentage}%){' '}
|
|
542
554
|
</OText>
|
|
543
555
|
</OSRow>
|
|
@@ -550,7 +562,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
550
562
|
<Table key={offer.id}>
|
|
551
563
|
<OSRow>
|
|
552
564
|
<OText mBottom={4}>
|
|
553
|
-
{t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
|
|
565
|
+
{t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
|
|
554
566
|
{offer.rate_type === 1 && (
|
|
555
567
|
<OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
|
|
556
568
|
)}
|
|
@@ -561,24 +573,37 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
561
573
|
))
|
|
562
574
|
}
|
|
563
575
|
{
|
|
564
|
-
typeof order?.summary?.delivery_price === 'number' && (
|
|
576
|
+
typeof order?.summary?.delivery_price === 'number' && order.delivery_type !== 2 && (
|
|
565
577
|
<Table>
|
|
566
578
|
<OText mBottom={4}>
|
|
567
579
|
{t('DELIVERY_FEE', 'Delivery Fee')}
|
|
568
580
|
</OText>
|
|
569
581
|
|
|
570
582
|
<OText mBottom={4}>
|
|
571
|
-
{parsePrice(order?.summary?.delivery_price, { currency: order?.currency })}
|
|
583
|
+
{parsePrice(order?.summary?.delivery_price + getIncludedTaxes(true), { currency: order?.currency })}
|
|
572
584
|
</OText>
|
|
573
585
|
</Table>
|
|
574
586
|
)
|
|
575
587
|
}
|
|
588
|
+
{
|
|
589
|
+
order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0 && tax?.target === 'delivery_fee').map((tax: any, i: number) => (
|
|
590
|
+
<Table key={`${tax.description}_${i}`}>
|
|
591
|
+
<OSRow>
|
|
592
|
+
<OText mBottom={4}>
|
|
593
|
+
{tax.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
|
|
594
|
+
{`(${verifyDecimals(tax?.rate, parseNumber)}%)`}
|
|
595
|
+
</OText>
|
|
596
|
+
</OSRow>
|
|
597
|
+
<OText mBottom={4}>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0)}</OText>
|
|
598
|
+
</Table>
|
|
599
|
+
))
|
|
600
|
+
}
|
|
576
601
|
{
|
|
577
602
|
order?.offers?.length > 0 && order?.offers?.filter((offer: any) => offer?.target === 2)?.map((offer: any) => (
|
|
578
603
|
<Table key={offer.id}>
|
|
579
604
|
<OSRow>
|
|
580
605
|
<OText mBottom={4}>
|
|
581
|
-
{t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
|
|
606
|
+
{t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
|
|
582
607
|
{offer.rate_type === 1 && (
|
|
583
608
|
<OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
|
|
584
609
|
)}
|
|
@@ -588,7 +613,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
588
613
|
</Table>
|
|
589
614
|
))
|
|
590
615
|
}
|
|
591
|
-
{(order?.summary?.driver_tip > 0 || order?.driver_tip > 0) && (
|
|
616
|
+
{(order?.summary?.driver_tip > 0 || order?.driver_tip > 0) && order.delivery_type !== 2 && (
|
|
592
617
|
<Table>
|
|
593
618
|
<OText mBottom={4}>
|
|
594
619
|
{t('DRIVER_TIP', 'Driver tip')}
|
|
@@ -646,13 +671,12 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
646
671
|
<OText>
|
|
647
672
|
{event?.wallet_event
|
|
648
673
|
? walletName[event?.wallet_event?.wallet?.type]?.name
|
|
649
|
-
:
|
|
674
|
+
: event?.paymethod?.gateway
|
|
675
|
+
? t(event?.paymethod?.gateway?.toUpperCase?.(), event?.paymethod?.name)
|
|
676
|
+
: order?.paymethod?.id === event?.paymethod_id
|
|
677
|
+
? t(order?.paymethod?.gateway?.toUpperCase?.(), order?.paymethod?.name)
|
|
678
|
+
: ''}
|
|
650
679
|
</OText>
|
|
651
|
-
{/* {event?.data?.charge_id && (
|
|
652
|
-
<OText>
|
|
653
|
-
{`${t('CODE', 'Code')}: ${event?.data?.charge_id}`}
|
|
654
|
-
</OText>
|
|
655
|
-
)} */}
|
|
656
680
|
</View>
|
|
657
681
|
<OText>
|
|
658
682
|
{(event?.paymethod?.gateway === 'cash' && order?.cash)
|
|
@@ -664,7 +688,65 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
664
688
|
</View>
|
|
665
689
|
</View>
|
|
666
690
|
)}
|
|
691
|
+
|
|
667
692
|
</OrderBill >
|
|
693
|
+
|
|
694
|
+
{!!order?.spot_number && (
|
|
695
|
+
<OrderSpot vehicleExists={!!order?.vehicle}>
|
|
696
|
+
<Table>
|
|
697
|
+
<OText style={{ marginBottom: 5 }}>
|
|
698
|
+
{t('SPOT_NUMBER', 'Spot number')}
|
|
699
|
+
</OText>
|
|
700
|
+
<OText style={{ marginBottom: 5 }}>
|
|
701
|
+
{order?.spot_number}
|
|
702
|
+
</OText>
|
|
703
|
+
</Table>
|
|
704
|
+
</OrderSpot>
|
|
705
|
+
)}
|
|
706
|
+
|
|
707
|
+
{!!order?.vehicle && (
|
|
708
|
+
<OrderVehicle>
|
|
709
|
+
<OText
|
|
710
|
+
style={{ marginBottom: 5 }}
|
|
711
|
+
size={16}
|
|
712
|
+
weight="600"
|
|
713
|
+
color={theme.colors.textGray}>
|
|
714
|
+
{t('VEHICLE', 'Vehicle')}
|
|
715
|
+
</OText>
|
|
716
|
+
<Table>
|
|
717
|
+
<OText style={{ marginBottom: 5 }}>
|
|
718
|
+
{t('CAR_REGISTRATION', 'Car registration')}
|
|
719
|
+
</OText>
|
|
720
|
+
<OText style={{ marginBottom: 5 }}>
|
|
721
|
+
{order?.vehicle?.car_registration}
|
|
722
|
+
</OText>
|
|
723
|
+
</Table>
|
|
724
|
+
<Table>
|
|
725
|
+
<OText style={{ marginBottom: 5 }}>
|
|
726
|
+
{t('COLOR', 'Color')}
|
|
727
|
+
</OText>
|
|
728
|
+
<OText style={{ marginBottom: 5 }}>
|
|
729
|
+
{order?.vehicle?.color}
|
|
730
|
+
</OText>
|
|
731
|
+
</Table>
|
|
732
|
+
<Table>
|
|
733
|
+
<OText style={{ marginBottom: 5 }}>
|
|
734
|
+
{t('MODEL', 'Model')}
|
|
735
|
+
</OText>
|
|
736
|
+
<OText style={{ marginBottom: 5 }}>
|
|
737
|
+
{order?.vehicle?.model}
|
|
738
|
+
</OText>
|
|
739
|
+
</Table>
|
|
740
|
+
<Table>
|
|
741
|
+
<OText style={{ marginBottom: 5 }}>
|
|
742
|
+
{t('TYPE', 'Type')}
|
|
743
|
+
</OText>
|
|
744
|
+
<OText style={{ marginBottom: 5 }}>
|
|
745
|
+
{order?.vehicle?.type}
|
|
746
|
+
</OText>
|
|
747
|
+
</Table>
|
|
748
|
+
</OrderVehicle>
|
|
749
|
+
)}
|
|
668
750
|
<OModal
|
|
669
751
|
open={openReviewModal}
|
|
670
752
|
onClose={() => setOpenReviewModal(false)}
|
|
@@ -3,7 +3,9 @@ import React from 'react';
|
|
|
3
3
|
//Styles
|
|
4
4
|
import {
|
|
5
5
|
Actions,
|
|
6
|
+
Dot,
|
|
6
7
|
Header,
|
|
8
|
+
Messages,
|
|
7
9
|
OrderHeader,
|
|
8
10
|
} from './styles';
|
|
9
11
|
|
|
@@ -22,6 +24,8 @@ import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityI
|
|
|
22
24
|
import {
|
|
23
25
|
useLanguage,
|
|
24
26
|
useUtils,
|
|
27
|
+
useConfig,
|
|
28
|
+
useSession
|
|
25
29
|
} from 'ordering-components/native';
|
|
26
30
|
|
|
27
31
|
interface OrderHeader {
|
|
@@ -34,6 +38,8 @@ interface OrderHeader {
|
|
|
34
38
|
handleViewSummaryOrder?: any;
|
|
35
39
|
handleCopyClipboard?: any
|
|
36
40
|
isCustomView?: any
|
|
41
|
+
messages?: any
|
|
42
|
+
messagesReadList?: any
|
|
37
43
|
}
|
|
38
44
|
|
|
39
45
|
export const OrderHeaderComponent = (props: OrderHeader) => {
|
|
@@ -45,12 +51,21 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
|
|
|
45
51
|
getOrderStatus,
|
|
46
52
|
logisticOrderStatus,
|
|
47
53
|
handleViewSummaryOrder,
|
|
48
|
-
handleCopyClipboard
|
|
54
|
+
handleCopyClipboard,
|
|
55
|
+
messages,
|
|
56
|
+
messagesReadList
|
|
49
57
|
} = props
|
|
50
58
|
const theme = useTheme();
|
|
51
59
|
const [, t] = useLanguage();
|
|
52
|
-
const [
|
|
60
|
+
const [configState] = useConfig()
|
|
61
|
+
const [{ user }] = useSession()
|
|
62
|
+
const [{ parseDate, parsePrice }] = useUtils();
|
|
53
63
|
const paymethodsLength = order?.payment_events?.filter((item: any) => item.event === 'payment')?.length
|
|
64
|
+
const showExternalId = configState?.configs?.change_order_id?.value === '1'
|
|
65
|
+
const messagesReadIds = messagesReadList?.map((message: any) => message?.order_message_id)
|
|
66
|
+
|
|
67
|
+
const filteredMessages = messagesReadList?.length > 0 ? messages?.messages?.filter((message: any) => !messagesReadIds?.includes(message?.id)) : messages?.messages
|
|
68
|
+
const cateringTypes = [7, 8]
|
|
54
69
|
|
|
55
70
|
const styles = StyleSheet.create({
|
|
56
71
|
icons: {
|
|
@@ -88,6 +103,11 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
|
|
|
88
103
|
19: theme.colors.statusOrderBlue,
|
|
89
104
|
20: theme.colors.statusOrderBlue,
|
|
90
105
|
21: theme.colors.statusOrderBlue,
|
|
106
|
+
22: theme.colors.statusOrderBlue,
|
|
107
|
+
23: theme.colors.statusOrderBlue,
|
|
108
|
+
24: theme.colors.statusOrderBlue,
|
|
109
|
+
25: theme.colors.statusOrderBlue,
|
|
110
|
+
26: theme.colors.statusOrderBlue,
|
|
91
111
|
//GREEN
|
|
92
112
|
1: theme.colors.statusOrderGreen,
|
|
93
113
|
11: theme.colors.statusOrderGreen,
|
|
@@ -125,11 +145,26 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
|
|
|
125
145
|
const paymethodsList = order?.payment_events?.filter((item: any) => item.event === 'payment').map((paymethod: any) => {
|
|
126
146
|
return paymethod?.wallet_event
|
|
127
147
|
? walletName[paymethod?.wallet_event?.wallet?.type]?.name
|
|
128
|
-
:
|
|
148
|
+
: paymethod?.paymethod?.gateway && paymethod?.paymethod?.gateway === 'cash' && order?.cash > 0
|
|
149
|
+
? `${t(paymethod?.paymethod?.gateway?.toUpperCase(), paymethod?.paymethod?.name)} (${t('CASH_CHANGE_OF', 'Change of :amount:').replace(':amount:', parsePrice(order?.cash))})`
|
|
150
|
+
: paymethod?.paymethod?.gateway
|
|
151
|
+
? t(paymethod?.paymethod?.gateway?.toUpperCase(), paymethod?.paymethod?.name)
|
|
152
|
+
: t(order?.paymethod?.gateway?.toUpperCase(), order?.paymethod?.name)
|
|
129
153
|
})
|
|
130
154
|
return paymethodsList.join(', ')
|
|
131
155
|
}
|
|
132
156
|
|
|
157
|
+
const deliveryDate = () => {
|
|
158
|
+
const dateString = order?.delivery_datetime_utc ?? order?.delivery_datetime
|
|
159
|
+
const currentDate = new Date();
|
|
160
|
+
const receivedDate: any = new Date(order?.delivery_datetime);
|
|
161
|
+
|
|
162
|
+
const formattedDate = receivedDate <= currentDate
|
|
163
|
+
? `${t('ASAP_ABBREVIATION', 'ASAP')}(${parseDate(dateString, { utc: !!order?.delivery_datetime_utc })})`
|
|
164
|
+
: parseDate(dateString, { utc: !!order?.delivery_datetime_utc })
|
|
165
|
+
return formattedDate
|
|
166
|
+
}
|
|
167
|
+
|
|
133
168
|
return (
|
|
134
169
|
<>
|
|
135
170
|
{!props.isCustomView && (
|
|
@@ -173,18 +208,20 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
|
|
|
173
208
|
style={styles.icons}
|
|
174
209
|
onClick={() => handleOpenMapView()}
|
|
175
210
|
/>
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
211
|
+
<Messages>
|
|
212
|
+
{filteredMessages?.filter((message: any) => message?.author_id !== user?.id && !message?.read)?.length > 0 && <Dot />}
|
|
213
|
+
<OIconButton
|
|
214
|
+
icon={theme.images.general.messages}
|
|
215
|
+
iconStyle={{
|
|
216
|
+
width: 20,
|
|
217
|
+
height: 20,
|
|
218
|
+
tintColor: theme.colors.textGray,
|
|
219
|
+
}}
|
|
220
|
+
borderColor={theme.colors.clear}
|
|
221
|
+
style={styles.icons}
|
|
222
|
+
onClick={() => handleOpenMessagesForBusiness()}
|
|
223
|
+
/>
|
|
224
|
+
</Messages>
|
|
188
225
|
</Actions>
|
|
189
226
|
)}
|
|
190
227
|
</Header>
|
|
@@ -192,16 +229,18 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
|
|
|
192
229
|
<OrderHeader>
|
|
193
230
|
{!props.isCustomView ? (
|
|
194
231
|
<OText size={13} style={{ marginBottom: 5 }}>
|
|
195
|
-
|
|
196
|
-
? parseDate(order?.
|
|
197
|
-
|
|
232
|
+
<>
|
|
233
|
+
{cateringTypes.includes(order?.delivery_type) ? `${t('CREATED_AT', 'Created at')}: ${parseDate(order?.created_at)}\n` : ''}
|
|
234
|
+
{cateringTypes.includes(order?.delivery_type) ? `${t('PLACED_TO', 'Placed to')}: ` : ''}{deliveryDate()}
|
|
235
|
+
</>
|
|
198
236
|
</OText>
|
|
199
237
|
) : (
|
|
200
238
|
<Header style={{ alignItems: 'center' }}>
|
|
201
239
|
<OText size={13} style={{ marginBottom: 5 }}>
|
|
202
|
-
|
|
203
|
-
? parseDate(order?.
|
|
204
|
-
|
|
240
|
+
<>
|
|
241
|
+
{cateringTypes.includes(order?.delivery_type) ? `${t('CREATED_AT', 'Created at')}: ${parseDate(order?.created_at)}\n` : ''}
|
|
242
|
+
{cateringTypes.includes(order?.delivery_type) ? `${t('PLACED_TO', 'Placed to')}: ` : ''}{deliveryDate()}
|
|
243
|
+
</>
|
|
205
244
|
</OText>
|
|
206
245
|
|
|
207
246
|
{(!order?.isLogistic || (!logisticOrderStatus?.includes(order?.status) && !order?.order_group)) && (
|
|
@@ -240,7 +279,6 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
|
|
|
240
279
|
style={styles.icons}
|
|
241
280
|
onClick={() => handleOpenMapView()}
|
|
242
281
|
/>
|
|
243
|
-
|
|
244
282
|
<OIconButton
|
|
245
283
|
icon={theme.images.general.messages}
|
|
246
284
|
iconStyle={{
|
|
@@ -259,7 +297,7 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
|
|
|
259
297
|
|
|
260
298
|
<OText numberOfLines={2} size={20} weight="600">
|
|
261
299
|
<>
|
|
262
|
-
{`${t('INVOICE_ORDER_NO', 'Order No.')} ${order?.id} `}
|
|
300
|
+
{`${t('INVOICE_ORDER_NO', 'Order No.')} ${showExternalId ? order?.external_id || order?.id : order?.id} `}
|
|
263
301
|
{!order?.isLogistic && (!order?.order_group_id || !logisticOrderStatus?.includes(order?.status)) && (
|
|
264
302
|
<>
|
|
265
303
|
{t('IS', 'is')}{' '}
|
|
@@ -273,7 +311,7 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
|
|
|
273
311
|
)}
|
|
274
312
|
</>
|
|
275
313
|
</OText>
|
|
276
|
-
{order?.external_id && (
|
|
314
|
+
{order?.external_id && !showExternalId && (
|
|
277
315
|
<OText size={13}>
|
|
278
316
|
<OText size={13} weight='bold'>{`${t('EXTERNAL_ID', 'External ID :')} `}</OText>
|
|
279
317
|
{order?.external_id}
|
|
@@ -25,13 +25,13 @@ export const Logo = styled.View`
|
|
|
25
25
|
|
|
26
26
|
export const OrderContent = styled.View`
|
|
27
27
|
flex: 1;
|
|
28
|
-
${(props
|
|
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,28 @@ 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;
|
|
83
|
+
flex: 1;
|
|
84
|
+
`;
|
|
85
|
+
|
|
86
|
+
export const OrderSpot = styled.View`
|
|
87
|
+
border-top-width: 1px;
|
|
88
|
+
border-top-color: ${(props: any) => props.theme.colors.borderTops};
|
|
89
|
+
padding-vertical: 20px;
|
|
90
|
+
${(props: any) => !props.vehicleExists && css`
|
|
91
|
+
padding-bottom: 50px;
|
|
92
|
+
`}
|
|
72
93
|
flex: 1;
|
|
73
94
|
`;
|
|
74
95
|
|
|
@@ -98,3 +119,18 @@ export const OSRow = styled.View`
|
|
|
98
119
|
width: 70%;
|
|
99
120
|
flex-wrap: wrap;
|
|
100
121
|
`
|
|
122
|
+
|
|
123
|
+
export const Messages = styled.View`
|
|
124
|
+
position: relative;
|
|
125
|
+
`;
|
|
126
|
+
|
|
127
|
+
export const Dot = styled.View`
|
|
128
|
+
position: absolute;
|
|
129
|
+
width: 8px;
|
|
130
|
+
height: 8px;
|
|
131
|
+
border-radius: 4px;
|
|
132
|
+
background-color: ${(props: any) => props.theme.colors.red};
|
|
133
|
+
top: 10px;
|
|
134
|
+
right: 10px;
|
|
135
|
+
z-index: 99;
|
|
136
|
+
`;
|