ordering-ui-react-native 0.21.83 → 0.21.84-release

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/package.json +6 -7
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessesListing/index.tsx +1 -1
  4. package/src/components/PaymentOptionsWebView/index.tsx +1 -0
  5. package/src/components/StripeMethodForm/index.tsx +6 -4
  6. package/src/components/VerifyPhone/styles.tsx +1 -2
  7. package/src/types/index.tsx +3 -1
  8. package/themes/business/index.tsx +4 -0
  9. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -6
  10. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
  11. package/themes/business/src/components/BusinessController/index.tsx +8 -3
  12. package/themes/business/src/components/BusinessProductList/index.tsx +2 -1
  13. package/themes/business/src/components/Chat/index.tsx +3 -1
  14. package/themes/business/src/components/DriverMap/index.tsx +44 -27
  15. package/themes/business/src/components/GoogleMap/index.tsx +15 -8
  16. package/themes/business/src/components/Home/index.tsx +5 -1
  17. package/themes/business/src/components/LanguageSelector/index.tsx +2 -3
  18. package/themes/business/src/components/LanguageSelector/lang_country.json +515 -70
  19. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  20. package/themes/business/src/components/MapView/index.tsx +36 -17
  21. package/themes/business/src/components/NewOrderNotification/index.tsx +64 -28
  22. package/themes/business/src/components/OrderDetails/Business.tsx +65 -7
  23. package/themes/business/src/components/OrderDetails/Delivery.tsx +35 -20
  24. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +110 -40
  25. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +50 -24
  26. package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
  27. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +221 -0
  28. package/themes/business/src/components/OrderSummary/index.tsx +223 -73
  29. package/themes/business/src/components/OrdersListManager/index.tsx +9 -1
  30. package/themes/business/src/components/OrdersOption/index.tsx +247 -159
  31. package/themes/business/src/components/PhoneInputNumber/index.tsx +8 -5
  32. package/themes/business/src/components/PreviousMessages/index.tsx +20 -3
  33. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +27 -16
  34. package/themes/business/src/components/PreviousOrders/index.tsx +5 -3
  35. package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
  36. package/themes/business/src/components/PrinterEdition/index.tsx +431 -0
  37. package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
  38. package/themes/business/src/components/PrinterEdition/styles.tsx +61 -0
  39. package/themes/business/src/components/PrinterSettings/index.tsx +267 -0
  40. package/themes/business/src/components/PrinterSettings/styles.tsx +30 -0
  41. package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
  42. package/themes/business/src/components/Sessions/index.tsx +187 -0
  43. package/themes/business/src/components/Sessions/styles.tsx +20 -0
  44. package/themes/business/src/components/StoresList/index.tsx +2 -2
  45. package/themes/business/src/components/UserFormDetails/index.tsx +111 -107
  46. package/themes/business/src/components/UserProfileForm/index.tsx +63 -30
  47. package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
  48. package/themes/business/src/components/shared/OInput.tsx +2 -0
  49. package/themes/business/src/components/shared/OTextarea.tsx +8 -9
  50. package/themes/business/src/hooks/useLocation.tsx +5 -4
  51. package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
  52. package/themes/business/src/types/index.tsx +23 -5
  53. package/themes/business/src/utils/index.tsx +19 -1
  54. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  55. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  56. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  57. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  58. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  59. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  60. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  61. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  62. package/themes/original/index.tsx +13 -1
  63. package/themes/original/src/components/AddressDetails/index.tsx +20 -10
  64. package/themes/original/src/components/AddressForm/index.tsx +32 -17
  65. package/themes/original/src/components/AddressList/index.tsx +8 -7
  66. package/themes/original/src/components/AnalyticsSegment/index.tsx +6 -6
  67. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  68. package/themes/original/src/components/BusinessBasicInformation/index.tsx +5 -8
  69. package/themes/original/src/components/BusinessController/index.tsx +12 -7
  70. package/themes/original/src/components/BusinessItemAccordion/index.tsx +13 -5
  71. package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +2 -3
  72. package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +1 -3
  73. package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
  74. package/themes/original/src/components/BusinessPreorder/index.tsx +20 -15
  75. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +5 -5
  76. package/themes/original/src/components/BusinessProductsList/index.tsx +2 -2
  77. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  78. package/themes/original/src/components/BusinessProductsListing/index.tsx +18 -6
  79. package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
  80. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
  81. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +1 -1
  82. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
  83. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  84. package/themes/original/src/components/Cart/index.tsx +43 -15
  85. package/themes/original/src/components/CartContent/index.tsx +21 -8
  86. package/themes/original/src/components/Checkout/index.tsx +108 -60
  87. package/themes/original/src/components/CitiesControl/index.tsx +0 -3
  88. package/themes/original/src/components/CouponControl/index.tsx +1 -3
  89. package/themes/original/src/components/DriverTips/index.tsx +1 -3
  90. package/themes/original/src/components/Favorite/index.tsx +1 -5
  91. package/themes/original/src/components/FavoriteList/index.tsx +0 -1
  92. package/themes/original/src/components/ForgotPasswordForm/index.tsx +5 -7
  93. package/themes/original/src/components/GiftCard/GiftCardOrdersList/index.tsx +64 -0
  94. package/themes/original/src/components/GiftCard/GiftCardOrdersList/styles.tsx +8 -0
  95. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +15 -17
  96. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +3 -7
  97. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +24 -32
  98. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +7 -9
  99. package/themes/original/src/components/GiftCard/SingleGiftCard/index.tsx +101 -0
  100. package/themes/original/src/components/GiftCard/SingleGiftCard/styles.tsx +4 -0
  101. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +82 -0
  102. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/styles.tsx +9 -0
  103. package/themes/original/src/components/GoogleMap/index.tsx +39 -18
  104. package/themes/original/src/components/Help/index.tsx +2 -0
  105. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
  106. package/themes/original/src/components/Home/index.tsx +2 -10
  107. package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
  108. package/themes/original/src/components/LoginForm/index.tsx +4 -7
  109. package/themes/original/src/components/MessageListing/index.tsx +1 -0
  110. package/themes/original/src/components/Messages/index.tsx +8 -7
  111. package/themes/original/src/components/MomentOption/index.tsx +13 -2
  112. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -3
  113. package/themes/original/src/components/MultiCheckout/index.tsx +139 -87
  114. package/themes/original/src/components/MultiOrdersDetails/index.tsx +2 -1
  115. package/themes/original/src/components/MyOrders/index.tsx +21 -26
  116. package/themes/original/src/components/NavBar/index.tsx +4 -2
  117. package/themes/original/src/components/NetworkError/index.tsx +0 -5
  118. package/themes/original/src/components/NotFoundSource/index.tsx +0 -3
  119. package/themes/original/src/components/OrderDetails/OrderEta.tsx +1 -1
  120. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +9 -9
  121. package/themes/original/src/components/OrderDetails/index.tsx +32 -13
  122. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  123. package/themes/original/src/components/OrderProgress/index.tsx +22 -3
  124. package/themes/original/src/components/OrderSummary/index.tsx +28 -9
  125. package/themes/original/src/components/OrderTypeSelector/index.tsx +7 -6
  126. package/themes/original/src/components/OrdersOption/index.tsx +2 -4
  127. package/themes/original/src/components/PaymentOptionStripe/index.tsx +0 -5
  128. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  129. package/themes/original/src/components/PaymentOptions/index.tsx +17 -9
  130. package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
  131. package/themes/original/src/components/PreviousOrders/index.tsx +1 -2
  132. package/themes/original/src/components/ProductForm/ActionButton.tsx +17 -20
  133. package/themes/original/src/components/ProductForm/index.tsx +107 -102
  134. package/themes/original/src/components/ProductItemAccordion/index.tsx +55 -49
  135. package/themes/original/src/components/ProductItemAccordion/styles.tsx +3 -4
  136. package/themes/original/src/components/ProductOptionSubOption/index.tsx +16 -8
  137. package/themes/original/src/components/ProfessionalProfile/index.tsx +4 -5
  138. package/themes/original/src/components/Promotions/index.tsx +6 -9
  139. package/themes/original/src/components/ReviewDriver/index.tsx +1 -1
  140. package/themes/original/src/components/ReviewOrder/index.tsx +2 -2
  141. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  142. package/themes/original/src/components/ReviewTrigger/index.tsx +2 -2
  143. package/themes/original/src/components/ServiceForm/index.tsx +52 -54
  144. package/themes/original/src/components/Sessions/index.tsx +3 -3
  145. package/themes/original/src/components/SignupForm/index.tsx +86 -78
  146. package/themes/original/src/components/SingleOrderCard/index.tsx +7 -5
  147. package/themes/original/src/components/SingleProductCard/index.tsx +3 -4
  148. package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
  149. package/themes/original/src/components/StripeCardForm/index.tsx +0 -3
  150. package/themes/original/src/components/StripeCardsList/index.tsx +10 -3
  151. package/themes/original/src/components/StripeElementsForm/index.tsx +77 -60
  152. package/themes/original/src/components/StripeElementsForm/naked.tsx +48 -1
  153. package/themes/original/src/components/StripeRedirectForm/index.tsx +0 -3
  154. package/themes/original/src/components/TaxInformation/index.tsx +3 -2
  155. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +10 -7
  156. package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +8 -3
  157. package/themes/original/src/components/UserDetails/index.tsx +3 -2
  158. package/themes/original/src/components/UserFormDetails/index.tsx +155 -131
  159. package/themes/original/src/components/UserProfile/index.tsx +11 -2
  160. package/themes/original/src/components/Wallets/index.tsx +6 -3
  161. package/themes/original/src/components/WebsocketStatus/index.tsx +169 -0
  162. package/themes/original/src/components/WebsocketStatus/styles.tsx +28 -0
  163. package/themes/original/src/components/shared/OAlert.tsx +2 -1
  164. package/themes/original/src/components/shared/OButton.tsx +5 -4
  165. package/themes/original/src/components/shared/OInput.tsx +4 -8
  166. package/themes/original/src/types/index.tsx +5 -1
  167. package/themes/original/src/utils/index.tsx +12 -1
  168. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -148,6 +148,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
148
148
  const hideDriverMessages = theme?.confirmation?.components?.driver?.components?.messages?.hidden
149
149
  const hideCustomerPhone = theme?.confirmation?.components?.customer?.components?.phone?.hidden
150
150
  const hideCustomerAddress = theme?.confirmation?.components?.customer?.components?.address?.hidden
151
+ const changeIdToExternalId = configs?.change_order_id?.value === '1'
152
+
151
153
  const progressBarObjt = isPickup ? getOrderStatuPickUp : getOrderStatus
152
154
  const walletName: any = {
153
155
  cash: {
@@ -185,18 +187,18 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
185
187
  navigation.navigate('BottomTab');
186
188
  };
187
189
 
188
- const getIncludedTaxes = () => {
190
+ const getIncludedTaxes = (isDeliveryFee?: boolean) => {
189
191
  if (order?.taxes?.length === 0 || !order?.taxes) {
190
192
  return order.tax_type === 1 ? order?.summary?.tax ?? 0 : 0
191
193
  } else {
192
194
  return order?.taxes.reduce((taxIncluded: number, tax: any) => {
193
- return taxIncluded + (tax.type === 1 ? tax.summary?.tax : 0)
195
+ return taxIncluded + (((!isDeliveryFee && tax.type === 1 && tax.target === 'product') || (isDeliveryFee && tax.type === 1 && tax.target === 'delivery_fee')) ? tax.summary?.tax : 0)
194
196
  }, 0)
195
197
  }
196
198
  }
197
199
 
198
200
  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)
201
+ 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
202
  }
201
203
 
202
204
  const handleClickOrderReview = (order: any) => {
@@ -270,7 +272,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
270
272
  title: t('DRIVER', 'Driver'),
271
273
  icon:
272
274
  order?.driver?.photo ||
273
- 'https://res.cloudinary.com/demo/image/fetch/c_thumb,g_face,r_max/https://www.freeiconspng.com/thumbs/driver-icon/driver-icon-14.png',
275
+ theme?.images?.general?.driverPng,
274
276
  },
275
277
  {
276
278
  ...order?.business?.location,
@@ -386,7 +388,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
386
388
  numberOfLines={2}
387
389
  ellipsizeMode='tail'
388
390
  >
389
- {`${t('ORDER', 'Order')} #${order?.id}`}
391
+ {`${t('ORDER', 'Order')} ${(changeIdToExternalId && order?.external_id) || `#${order?.id}`}`}
390
392
  </OText>
391
393
  )}
392
394
  </>
@@ -460,8 +462,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
460
462
  <Header>
461
463
  <NavBar
462
464
  hideArrowLeft
463
- title={`${t('ORDER', 'Order')} #${order?.id}`}
464
- titleAlign={'center'}
465
+ title={`${t('ORDER', 'Order')} ${(changeIdToExternalId && order?.external_id) || `#${order?.id}`}`}
466
+ titleAlign={'left'}
465
467
  showCall={false}
466
468
  btnStyle={{ paddingLeft: 0 }}
467
469
  style={{ marginTop: Platform.OS === 'ios' ? 0 : 20 }}
@@ -643,7 +645,6 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
643
645
  <OButton
644
646
  text={t('GET_DIRECTIONS', 'Get Directions')}
645
647
  imgRightSrc=''
646
- textStyle={{ color: theme.colors.white }}
647
648
  style={{
648
649
  alignSelf: 'center',
649
650
  borderRadius: 10,
@@ -750,6 +751,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
750
751
  }
751
752
  locations={parsedLocations}
752
753
  readOnly
754
+ manualZoom
753
755
  />
754
756
  </Map>
755
757
  )}
@@ -832,9 +834,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
832
834
  <OButton
833
835
  text={t('YOUR_ORDERS', 'Your Orders')}
834
836
  textStyle={{ fontSize: 14, color: theme.colors.primary }}
837
+ bgColor={theme.colors.white}
835
838
  imgRightSrc={null}
836
- borderColor={theme.colors.primary}
837
- bgColor={theme.colors.clear}
838
839
  style={{ borderRadius: 7.6, borderWidth: 1, height: 44, shadowOpacity: 0 }}
839
840
  parentStyle={{ marginTop: 29, marginEnd: 15 }}
840
841
  onClick={() => navigation.navigate('BottomTab', { screen: 'MyOrders' })}
@@ -934,7 +935,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
934
935
  )
935
936
  }
936
937
  {
937
- order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0).map((tax: any) => (
938
+ order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0 && tax?.target === 'product').map((tax: any) => (
938
939
  <Table key={tax.id}>
939
940
  <OSRow>
940
941
  <OText size={12} lineHeight={18} weight={'400'} color={theme.colors.textNormal} numberOfLines={1}>
@@ -983,12 +984,30 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
983
984
  </Table>
984
985
  ))
985
986
  }
986
- {typeof order?.summary?.delivery_price === 'number' && (
987
+ {typeof order?.summary?.delivery_price === 'number' && !isPickup && (
987
988
  <Table>
988
989
  <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>
990
+ <OText size={12} lineHeight={18} weight={'400'} color={theme.colors.textNormal}>{parsePrice(order?.summary?.delivery_price + getIncludedTaxes(true))}</OText>
990
991
  </Table>
991
992
  )}
993
+ {
994
+ order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0 && tax?.target === 'delivery_fee').map((tax: any, i: number) => (
995
+ <Table key={`${tax?.description}_${i}`}>
996
+ <OSRow>
997
+ <OText size={12} lineHeight={18} weight={'400'} color={theme.colors.textNormal} numberOfLines={1}>
998
+ {t(tax?.name?.toUpperCase()?.replace(/ /g, '_'), tax?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
999
+ {`(${verifyDecimals(tax?.rate, parseNumber)}%)`}
1000
+ </OText>
1001
+ {setOpenTaxModal && (
1002
+ <TouchableOpacity onClick={() => setOpenTaxModal({ open: true, data: tax, type: 'tax' })}>
1003
+ <AntIcon name='infocirlceo' size={16} color={theme.colors.primary} />
1004
+ </TouchableOpacity>
1005
+ )}
1006
+ </OSRow>
1007
+ <OText size={12} lineHeight={18} weight={'400'} color={theme.colors.textNormal}>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0)}</OText>
1008
+ </Table>
1009
+ ))
1010
+ }
992
1011
  {
993
1012
  order?.offers?.length > 0 && order?.offers?.filter((offer: any) => offer?.target === 2)?.map((offer: any) => (
994
1013
  <Table key={offer.id}>
@@ -5,7 +5,6 @@ export const OrderDetailsContainer = styled.ScrollView`
5
5
  `
6
6
 
7
7
  export const NavBack = styled.TouchableOpacity`
8
-
9
8
  `
10
9
 
11
10
 
@@ -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 {
@@ -56,7 +57,9 @@ const OrderProgressUI = (props: any) => {
56
57
  shadowColor: '#000',
57
58
  shadowOpacity: 0.2,
58
59
  shadowRadius: 2,
59
- elevation: 3
60
+ elevation: 3,
61
+ borderWidth: 1,
62
+ borderColor: 'rgba(0,0,0,0.1)'
60
63
  },
61
64
  logoWrapper: {
62
65
  overflow: 'hidden',
@@ -110,7 +113,7 @@ const OrderProgressUI = (props: any) => {
110
113
  setInitialLoaded(true)
111
114
  }, [orderList.loading, initialLoaded])
112
115
 
113
- const progressBarObjt = lastOrder?.delivery_type && lastOrder?.delivery_type === 2 ? getOrderStatuPickUp : getOrderStatus
116
+ const progressBarObjt = (s: any) => lastOrder?.delivery_type && lastOrder?.delivery_type === 2 ? getOrderStatuPickUp(s) : getOrderStatus(s)
114
117
 
115
118
  return (
116
119
  <>
@@ -130,7 +133,7 @@ const OrderProgressUI = (props: any) => {
130
133
  <View style={styles.logoWrapper}>
131
134
  <FastImage
132
135
  style={{ width: 50, height: 50 }}
133
- source={orderList?.orders.length === 1 ? {
136
+ source={orderList?.orders.length === 1 && lastOrder?.business?.logo?.includes?.('http') ? {
134
137
  uri: optimizeImage(lastOrder?.business?.logo, 'h_50,c_limit'),
135
138
  priority: FastImage.priority.normal,
136
139
  } : theme.images.logos.logotype}
@@ -209,6 +212,22 @@ export const OrderProgress = (props: any) => {
209
212
  pageSize: 10,
210
213
  controlType: 'infinity'
211
214
  },
215
+ propsToFetch: [
216
+ 'id',
217
+ 'name',
218
+ 'business',
219
+ 'status',
220
+ 'delivery_type',
221
+ 'delivery_datetime_utc',
222
+ 'delivery_datetime',
223
+ 'reporting_data',
224
+ 'eta_current_status_time',
225
+ 'eta_previous_status_times',
226
+ 'eta_time',
227
+ 'delivered_in',
228
+ 'prepared_in',
229
+ 'eta_drive_time'
230
+ ],
212
231
  noGiftCardOrders: true
213
232
  }
214
233
 
@@ -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 = validationFields?.fields?.checkout?.coupon?.enabled;
62
- const hideCartComments = !validationFields?.fields?.checkout?.comments?.enabled
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 + (tax.type === 1 ? tax.summary?.tax : 0)
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 : 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
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: orderTypeTitle(type.value) || t(type.content, type.content),
41
- description: orderTypeDescription(type.value) || t(type.description, 'Lorem ipsum dolor sit amet, consectetur.')
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}>{orderTypeCallAction(item?.value) || t('START_MY_ORDER', 'Start my order')}</OText>
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>
@@ -159,10 +159,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
159
159
 
160
160
  useEffect(() => {
161
161
  if (reorderState?.error) {
162
- const errorMessage = (Array.isArray(reorderState?.result) || typeof reorderState?.result === 'string')
163
- ? reorderState?.result
164
- : t('CANT_REORDER_FOR_THIS_BUSINESS', 'Can’t reorder for this store, please create order manually.')
165
- showToast(ToastType.Error, errorMessage)
162
+ showToast(ToastType.Error, reorderState?.result)
166
163
  }
167
164
  }, [reorderState])
168
165
 
@@ -353,6 +350,7 @@ export const OrdersOption = (props: OrdersOptionParams) => {
353
350
  const MyOrdersProps = {
354
351
  ...props,
355
352
  UIComponent: OrdersOptionUI,
353
+ noGiftCardOrders: true,
356
354
  orderStatus: getAllOrders
357
355
  ? [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
358
356
  : props.preOrders ? [13] : props.activeOrders
@@ -131,7 +131,6 @@ const PaymentOptionStripeUI = (props: any) => {
131
131
  bgColor={theme.colors.backgroundGray}
132
132
  borderColor={theme.colors.backgroundGray}
133
133
  style={styles.btnAddStyle}
134
- textStyle={{ color: 'white' }}
135
134
  imgRightSrc={null}
136
135
  onClick={() => setAddCardOpen(true)}
137
136
  />
@@ -141,7 +140,6 @@ const PaymentOptionStripeUI = (props: any) => {
141
140
  text={t('CANCEL', 'Cancel')}
142
141
  bgColor={theme.colors.backgroundGray}
143
142
  borderColor={theme.colors.backgroundGray}
144
- textStyle={{ color: 'white' }}
145
143
  style={styles.btnAction}
146
144
  imgRightSrc={null}
147
145
  onClick={() => onCancel()}
@@ -150,9 +148,6 @@ const PaymentOptionStripeUI = (props: any) => {
150
148
  <View style={{ width: '48%' }}>
151
149
  <OButton
152
150
  text={t('ACCEPT', 'Accept')}
153
- bgColor={theme.colors.primary}
154
- borderColor={theme.colors.primary}
155
- textStyle={{ color: 'white' }}
156
151
  style={styles.btnAction}
157
152
  imgRightSrc={null}
158
153
  isDisabled={!cardSelected || cardsList?.cards?.length === 0}
@@ -45,7 +45,7 @@ const PaymentOptionWalletUI = (props: any) => {
45
45
  new Array(walletsState.result?.length).fill(false)
46
46
  );
47
47
 
48
- const creditBalance: any = (wallet: any) => ` = ${parsePrice(wallet.balance / wallet.redemption_rate, { isTruncable: true })}`
48
+ const creditBalance: any = (wallet: any) => ` = ${parsePrice(wallet.balance / wallet.redemption_rate)}`
49
49
 
50
50
  const walletName: any = {
51
51
  cash: {
@@ -87,65 +87,65 @@ const PaymentOptionWalletUI = (props: any) => {
87
87
  {!walletsState.loading &&
88
88
  !walletsState.error &&
89
89
  walletsState.result?.length > 0 &&
90
- (
91
- <>
92
- {walletsState.result?.map((wallet: any, idx: any) => wallet.valid && wallet.balance >= 0 && walletName[wallet.type]?.isActive && (
93
- <Container
94
- key={wallet.id}
95
- isBottomBorder={idx === walletsState.result?.filter((wallet: any) => wallet.valid)?.length - 1}
96
- onPress={() => handleOnChange(idx, wallet)}
97
- disabled={(cart?.balance === 0 && !checkedState[idx]) || wallet.balance === 0}
98
- >
99
- <SectionLeft>
100
- {checkedState[idx] ? (
101
- <MaterialCommunityIcons
102
- name="checkbox-marked"
103
- size={25}
104
- color={theme.colors.primary}
105
- />
106
- ) : (
107
- <MaterialCommunityIcons
108
- name="checkbox-blank-outline"
109
- size={25}
110
- color={theme.colors.disabled}
111
- />
112
- )}
113
- <View style={{ alignItems: 'baseline', marginLeft: 5 }}>
114
- <View>
115
- <OText
116
- style={((cart?.balance === 0 && !checkedState[idx]) || wallet.balance === 0) ? {
117
- color: theme.colors.disabled
118
- } : {}}
119
- >
120
- {walletName[wallet.type]?.name}
121
- </OText>
122
- </View>
90
+ (
91
+ <>
92
+ {walletsState.result?.map((wallet: any, idx: any) => wallet.valid && wallet.balance >= 0 && walletName[wallet.type]?.isActive && (
93
+ <Container
94
+ key={wallet.id}
95
+ isBottomBorder={idx === walletsState.result?.filter((wallet: any) => wallet.valid)?.length - 1}
96
+ onPress={() => handleOnChange(idx, wallet)}
97
+ disabled={(cart?.balance === 0 && !checkedState[idx]) || wallet.balance === 0}
98
+ >
99
+ <SectionLeft>
100
+ {checkedState[idx] ? (
101
+ <MaterialCommunityIcons
102
+ name="checkbox-marked"
103
+ size={25}
104
+ color={theme.colors.primary}
105
+ />
106
+ ) : (
107
+ <MaterialCommunityIcons
108
+ name="checkbox-blank-outline"
109
+ size={25}
110
+ color={theme.colors.disabled}
111
+ />
112
+ )}
113
+ <View style={{ alignItems: 'baseline', marginLeft: 5 }}>
114
+ <View>
115
+ <OText
116
+ style={((cart?.balance === 0 && !checkedState[idx]) || wallet.balance === 0) ?{
117
+ color: theme.colors.disabled
118
+ } : {}}
119
+ >
120
+ {walletName[wallet.type]?.name}
121
+ </OText>
123
122
  </View>
124
- </SectionLeft>
125
-
126
- <View style={{ maxWidth: '35%', alignItems: 'flex-end' }}>
127
- {wallet.type === 'cash' && (
128
- <OText>
129
- {parsePrice(wallet?.balance, { isTruncable: true })}
123
+ </View>
124
+ </SectionLeft>
125
+
126
+ <View style={{maxWidth: '35%', alignItems: 'flex-end' }}>
127
+ {wallet.type === 'cash' && (
128
+ <OText>
129
+ {parsePrice(wallet?.balance)}
130
+ </OText>
131
+ )}
132
+ {wallet.type === 'credit_point' && (
133
+ <OText>
134
+ <OText color={theme.colors.primary} weight='bold'>
135
+ {`${wallet?.balance} ${t('POINTS', 'Points')}`}
130
136
  </OText>
131
- )}
132
- {wallet.type === 'credit_point' && (
133
137
  <OText>
134
- <OText color={theme.colors.primary} weight='bold'>
135
- {`${wallet?.balance} ${t('POINTS', 'Points')}`}
136
- </OText>
137
- <OText>
138
- {wallet?.balance > 0
139
- ? creditBalance(wallet)
140
- : null}
141
- </OText>
138
+ {wallet?.balance > 0
139
+ ? creditBalance(wallet)
140
+ : null}
142
141
  </OText>
143
- )}
144
- </View>
145
- </Container>
146
- ))}
147
- </>
148
- )}
142
+ </OText>
143
+ )}
144
+ </View>
145
+ </Container>
146
+ ))}
147
+ </>
148
+ )}
149
149
 
150
150
  {walletsState?.loading && (
151
151
  <View>
@@ -65,6 +65,7 @@ const PaymentOptionsUI = (props: any) => {
65
65
  handlePaymentMethodClickCustom,
66
66
  handlePlaceOrder,
67
67
  merchantId,
68
+ urlscheme,
68
69
  setMethodPaySupported,
69
70
  placeByMethodPay,
70
71
  methodPaySupported,
@@ -74,7 +75,8 @@ const PaymentOptionsUI = (props: any) => {
74
75
  requiredFields,
75
76
  openUserModal,
76
77
  paymethodClicked,
77
- setPaymethodClicked
78
+ setPaymethodClicked,
79
+ androidAppId
78
80
  } = props
79
81
 
80
82
  const theme = useTheme();
@@ -324,7 +326,6 @@ const PaymentOptionsUI = (props: any) => {
324
326
  <OButton
325
327
  text={t('ADD_PAYMENT_CARD', 'Add New Payment Card')}
326
328
  bgColor={theme.colors.white}
327
- borderColor={theme.colors.primary}
328
329
  style={styles.btnAddStyle}
329
330
  textStyle={{ color: theme.colors.primary, fontSize: 12 }}
330
331
  imgRightSrc={null}
@@ -342,10 +343,11 @@ const PaymentOptionsUI = (props: any) => {
342
343
  setAddCardOpen={setAddCardOpen}
343
344
  addCardOpen={addCardOpen}
344
345
  isOpenMethod={isOpenMethod}
345
- handlePaymethodDataChange={handlePaymethodDataChange}
346
+ handleSource={handlePaymethodDataChange}
346
347
  clientSecret={props.clientSecret}
347
348
  businessId={props.businessId}
348
349
  onPaymentChange={onPaymentChange}
350
+ paySelected={props.paySelected}
349
351
  />
350
352
  </View>
351
353
  )}
@@ -360,11 +362,13 @@ const PaymentOptionsUI = (props: any) => {
360
362
  handleSource={handlePaymethodDataChange}
361
363
  onCancel={() => handlePaymethodClick(null)}
362
364
  merchantId={merchantId}
365
+ urlscheme={urlscheme}
366
+ androidAppId={androidAppId}
363
367
  setMethodPaySupported={setMethodPaySupported}
364
368
  methodPaySupported={methodPaySupported}
365
369
  placeByMethodPay={placeByMethodPay}
366
370
  setPlaceByMethodPay={setPlaceByMethodPay}
367
- publicKeyAddCard={isOpenMethod?.paymethod?.credentials?.stripe?.publishable}
371
+ publicKeyAddCard={isOpenMethod?.paymethod?.credentials?.stripe?.publishable || isOpenMethod?.paymethod?.credentials?.publishable}
368
372
  />
369
373
  )}
370
374
 
@@ -407,7 +411,10 @@ const PaymentOptionsUI = (props: any) => {
407
411
  handleSource={handlePaymethodDataChange}
408
412
  onCancel={() => handlePaymethodClick(null)}
409
413
  merchantId={merchantId}
410
- publicKeyAddCard={isOpenMethod?.paymethod?.credentials?.stripe?.publishable}
414
+ urlscheme={urlscheme}
415
+ androidAppId={androidAppId}
416
+ publicKeyAddCard={isOpenMethod?.paymethod?.credentials?.stripe?.publishable || isOpenMethod?.paymethod?.credentials?.publishable}
417
+ paySelected={props.paySelected}
411
418
  />
412
419
  </KeyboardAvoidingView>
413
420
  </OModal>
@@ -418,7 +425,6 @@ const PaymentOptionsUI = (props: any) => {
418
425
  <OButton
419
426
  text={t('ADD_PAYMENT_CARD', 'Add New Payment Card')}
420
427
  bgColor={theme.colors.white}
421
- borderColor={theme.colors.primary}
422
428
  style={styles.btnAddStyle}
423
429
  textStyle={{ color: theme.colors.primary, fontSize: 12 }}
424
430
  imgRightSrc={null}
@@ -432,7 +438,8 @@ const PaymentOptionsUI = (props: any) => {
432
438
  onNavigationRedirect={onNavigationRedirect}
433
439
  onCancel={() => handlePaymethodClick(null)}
434
440
  publicKey={isOpenMethod?.paymethod?.credentials.publishable}
435
- publicKeyAddCard={isOpenMethod?.paymethod?.credentials?.stripe?.publishable}
441
+ publicKeyAddCard={isOpenMethod?.paymethod?.credentials?.stripe?.publishable || isOpenMethod?.paymethod?.credentials?.publishable}
442
+ paySelected={props.paySelected}
436
443
  />
437
444
  </View>
438
445
  )}
@@ -457,7 +464,7 @@ const PaymentOptionsUI = (props: any) => {
457
464
  accountId={isOpenMethod?.paymethod?.credentials?.user}
458
465
  onSelectCard={handlePaymethodDataChange}
459
466
  onCancel={() => setAddCardOpen({ ...addCardOpen, stripeConnect: false })}
460
- publicKeyAddCard={isOpenMethod?.paymethod?.credentials?.stripe?.publishable}
467
+ publicKeyAddCard={isOpenMethod?.paymethod?.credentials?.stripe?.publishable || isOpenMethod?.paymethod?.credentials?.publishable}
461
468
  />
462
469
  </KeyboardAvoidingView>
463
470
  </OModal>
@@ -483,9 +490,10 @@ const PaymentOptionsUI = (props: any) => {
483
490
  publicKey={props.publicKey || isOpenMethod?.paymethod?.credentials?.publishable}
484
491
  setCardsList={setCardList}
485
492
  requirements={props.clientSecret}
493
+ handleSource={handlePaymethodDataChange}
486
494
  onSelectCard={handlePaymethodDataChange}
487
495
  onCancel={() => setAddCardOpen({ ...addCardOpen, stripe: false })}
488
- publicKeyAddCard={isOpenMethod?.paymethod?.credentials?.stripe?.publishable}
496
+ publicKeyAddCard={isOpenMethod?.paymethod?.credentials?.stripe?.publishable || isOpenMethod?.paymethod?.credentials?.publishable}
489
497
  />
490
498
  </KeyboardAvoidingView>
491
499
  </OModal>
@@ -236,9 +236,7 @@ const PlaceSpotUI = (props: PlaceSpotParams) => {
236
236
  <View style={{ alignItems: 'flex-start' }}>
237
237
  <OButton
238
238
  onClick={() => onChangeSpot()}
239
- bgColor={theme.colors.primary}
240
- borderColor={theme.colors.primary}
241
- textStyle={{ color: 'white', fontSize: 12 }}
239
+ textStyle={{ fontSize: 12 }}
242
240
  imgRightSrc={null}
243
241
  text={t('UPDATE_SPOT_NUMBER', 'Update')}
244
242
  isDisabled={(!spotNumber && !Object.values(vehicle).every(e => e))}
@@ -27,7 +27,7 @@ export const PreviousOrders = (props: PreviousOrdersParams) => {
27
27
 
28
28
  const [, t] = useLanguage();
29
29
 
30
- const pastOrders = [1, 2, 5, 6, 10, 11, 12, 15, 16, 17]
30
+ const pastOrders = [1, 2, 5, 6, 10, 11, 12, 15, 16, 17]
31
31
 
32
32
  return (
33
33
  <View style={{ marginBottom: 30 }}>
@@ -49,7 +49,6 @@ export const PreviousOrders = (props: PreviousOrdersParams) => {
49
49
  onClick={loadMoreOrders}
50
50
  text={t('LOAD_MORE_ORDERS', 'Load more orders')}
51
51
  imgRightSrc={null}
52
- textStyle={{ color: theme.colors.white }}
53
52
  style={{ borderRadius: 7.6, shadowOpacity: 0, marginTop: 20 }}
54
53
  />
55
54
  </WrappButton>