ordering-ui-react-native 0.18.55 → 0.18.56-crash-driver-1

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 (266) hide show
  1. package/package.json +6 -4
  2. package/src/components/BusinessInformation/index.tsx +10 -9
  3. package/src/components/PaymentOptionsWebView/index.tsx +30 -8
  4. package/src/components/PhoneInputNumber/index.tsx +6 -2
  5. package/src/components/StripeMethodForm/index.tsx +60 -55
  6. package/src/components/shared/OToast.tsx +3 -2
  7. package/src/types/index.tsx +3 -1
  8. package/src/utils/index.tsx +2 -2
  9. package/themes/business/index.tsx +6 -0
  10. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +15 -8
  11. package/themes/business/src/components/BusinessController/index.tsx +19 -17
  12. package/themes/business/src/components/BusinessProductList/AccordionDropdown.tsx +63 -0
  13. package/themes/business/src/components/BusinessProductList/IterateCategories.tsx +108 -0
  14. package/themes/business/src/components/BusinessProductList/ProductList.tsx +196 -0
  15. package/themes/business/src/components/BusinessProductList/index.tsx +196 -0
  16. package/themes/business/src/components/BusinessProductList/styles.tsx +10 -0
  17. package/themes/business/src/components/Chat/index.tsx +48 -19
  18. package/themes/business/src/components/DriverMap/index.tsx +36 -23
  19. package/themes/business/src/components/DriverSchedule/index.tsx +45 -8
  20. package/themes/business/src/components/FloatingButton/index.tsx +34 -31
  21. package/themes/business/src/components/GoogleMap/index.tsx +15 -8
  22. package/themes/business/src/components/Home/index.tsx +5 -1
  23. package/themes/business/src/components/LanguageSelector/index.tsx +1 -2
  24. package/themes/business/src/components/LanguageSelector/lang_country.json +515 -70
  25. package/themes/business/src/components/LoginForm/index.tsx +2 -2
  26. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  27. package/themes/business/src/components/MapView/index.tsx +28 -17
  28. package/themes/business/src/components/MessagesOption/index.tsx +22 -94
  29. package/themes/business/src/components/NewOrderNotification/index.tsx +162 -106
  30. package/themes/business/src/components/NotFoundSource/index.tsx +2 -2
  31. package/themes/business/src/components/OrderDetails/Business.tsx +53 -3
  32. package/themes/business/src/components/OrderDetails/Delivery.tsx +209 -13
  33. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +107 -75
  34. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +79 -41
  35. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +220 -0
  36. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +7 -2
  37. package/themes/business/src/components/OrderMessage/index.tsx +1 -1
  38. package/themes/business/src/components/OrderSummary/index.tsx +245 -82
  39. package/themes/business/src/components/OrdersListManager/index.tsx +7 -2
  40. package/themes/business/src/components/OrdersListManager/utils.tsx +1 -1
  41. package/themes/business/src/components/OrdersOption/index.tsx +125 -48
  42. package/themes/business/src/components/PhoneInputNumber/index.tsx +8 -5
  43. package/themes/business/src/components/PreviousMessages/FooterMessageComponent.tsx +103 -0
  44. package/themes/business/src/components/PreviousMessages/index.tsx +97 -55
  45. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +43 -41
  46. package/themes/business/src/components/PreviousOrders/OrderList.tsx +93 -0
  47. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +1 -1
  48. package/themes/business/src/components/PreviousOrders/index.tsx +195 -221
  49. package/themes/business/src/components/PreviousOrders/styles.tsx +10 -0
  50. package/themes/business/src/components/PrinterEdition/index.tsx +363 -0
  51. package/themes/business/src/components/PrinterEdition/styles.tsx +61 -0
  52. package/themes/business/src/components/PrinterSettings/index.tsx +267 -0
  53. package/themes/business/src/components/PrinterSettings/styles.tsx +30 -0
  54. package/themes/business/src/components/ProductItemAccordion/index.tsx +2 -2
  55. package/themes/business/src/components/ReviewCustomer/index.tsx +1 -1
  56. package/themes/business/src/components/SearchBar/index.tsx +2 -1
  57. package/themes/business/src/components/Sessions/index.tsx +187 -0
  58. package/themes/business/src/components/Sessions/styles.tsx +20 -0
  59. package/themes/business/src/components/StoresList/index.tsx +4 -3
  60. package/themes/business/src/components/UserFormDetails/index.tsx +111 -107
  61. package/themes/business/src/components/UserProfileForm/index.tsx +103 -53
  62. package/themes/business/src/components/WebsocketStatus/index.tsx +171 -0
  63. package/themes/business/src/components/WebsocketStatus/styles.tsx +28 -0
  64. package/themes/business/src/components/shared/OInput.tsx +2 -0
  65. package/themes/business/src/hooks/useLocation.tsx +5 -4
  66. package/themes/business/src/types/index.tsx +21 -1
  67. package/themes/business/src/utils/index.tsx +5 -0
  68. package/themes/kiosk/src/components/Checkout/index.tsx +5 -3
  69. package/themes/kiosk/src/components/CustomerName/index.tsx +1 -1
  70. package/themes/kiosk/src/components/Intro/index.tsx +16 -1
  71. package/themes/kiosk/src/components/LoginForm/index.tsx +131 -101
  72. package/themes/kiosk/src/components/PaymentOptions/index.tsx +57 -121
  73. package/themes/original/index.tsx +11 -3
  74. package/themes/original/src/components/AddressDetails/index.tsx +20 -10
  75. package/themes/original/src/components/AddressForm/index.tsx +41 -20
  76. package/themes/original/src/components/AddressForm/styles.tsx +1 -1
  77. package/themes/original/src/components/AddressList/index.tsx +22 -11
  78. package/themes/original/src/components/AddressList/styles.tsx +4 -4
  79. package/themes/original/src/components/AnalyticsSegment/index.tsx +10 -7
  80. package/themes/original/src/components/AppleLogin/styles.tsx +3 -1
  81. package/themes/original/src/components/BusinessBasicInformation/index.tsx +8 -11
  82. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +1 -1
  83. package/themes/original/src/components/BusinessController/index.tsx +40 -43
  84. package/themes/original/src/components/BusinessController/styles.tsx +12 -12
  85. package/themes/original/src/components/BusinessInformation/index.tsx +45 -17
  86. package/themes/original/src/components/BusinessInformation/styles.tsx +2 -2
  87. package/themes/original/src/components/BusinessItemAccordion/index.tsx +11 -7
  88. package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +317 -0
  89. package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +96 -0
  90. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +1 -1
  91. package/themes/original/src/components/BusinessListingSearch/index.tsx +57 -361
  92. package/themes/original/src/components/BusinessListingSearch/styles.tsx +1 -1
  93. package/themes/original/src/components/BusinessPreorder/index.tsx +9 -7
  94. package/themes/original/src/components/BusinessProductsCategories/index.tsx +2 -3
  95. package/themes/original/src/components/BusinessProductsList/index.tsx +5 -4
  96. package/themes/original/src/components/BusinessProductsListing/index.tsx +67 -28
  97. package/themes/original/src/components/BusinessProductsListing/styles.tsx +3 -4
  98. package/themes/original/src/components/BusinessReviews/index.tsx +1 -1
  99. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +1 -1
  100. package/themes/original/src/components/BusinessesListing/Layout/Appointment/styles.tsx +5 -5
  101. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListFooter.tsx +69 -0
  102. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListHeader.tsx +406 -0
  103. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListing.tsx +76 -0
  104. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +30 -404
  105. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +2 -2
  106. package/themes/original/src/components/Cart/index.tsx +51 -40
  107. package/themes/original/src/components/CartContent/index.tsx +98 -54
  108. package/themes/original/src/components/CartStoresListing/styles.tsx +2 -2
  109. package/themes/original/src/components/Checkout/index.tsx +308 -75
  110. package/themes/original/src/components/Checkout/styles.tsx +17 -0
  111. package/themes/original/src/components/CitiesControl/styles.tsx +1 -1
  112. package/themes/original/src/components/DatePicker/index.tsx +33 -0
  113. package/themes/original/src/components/DatePicker/styles.tsx +20 -0
  114. package/themes/original/src/components/DriverTips/index.tsx +6 -3
  115. package/themes/original/src/components/FacebookLogin/styles.tsx +3 -1
  116. package/themes/original/src/components/Favorite/index.tsx +8 -4
  117. package/themes/original/src/components/Favorite/styles.tsx +0 -2
  118. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  119. package/themes/original/src/components/ForgotPasswordForm/index.tsx +5 -0
  120. package/themes/original/src/components/GPSButton/index.tsx +7 -5
  121. package/themes/original/src/components/GiftCard/GiftCardOrdersList/index.tsx +64 -0
  122. package/themes/original/src/components/GiftCard/GiftCardOrdersList/styles.tsx +8 -0
  123. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +8 -3
  124. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +36 -3
  125. package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +1 -1
  126. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +84 -8
  127. package/themes/original/src/components/GiftCard/RedeemGiftCard/styles.tsx +1 -1
  128. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +2 -2
  129. package/themes/original/src/components/GiftCard/SendGiftCard/styles.tsx +1 -1
  130. package/themes/original/src/components/GiftCard/SingleGiftCard/index.tsx +101 -0
  131. package/themes/original/src/components/GiftCard/SingleGiftCard/styles.tsx +4 -0
  132. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +83 -0
  133. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/styles.tsx +9 -0
  134. package/themes/original/src/components/GoogleLogin/styles.tsx +1 -1
  135. package/themes/original/src/components/GoogleMap/index.tsx +52 -5
  136. package/themes/original/src/components/Help/index.tsx +7 -0
  137. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +5 -0
  138. package/themes/original/src/components/HelpGuide/index.tsx +5 -0
  139. package/themes/original/src/components/HelpOrder/index.tsx +5 -0
  140. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
  141. package/themes/original/src/components/HighestRatedBusinesses/styles.tsx +1 -1
  142. package/themes/original/src/components/Home/index.tsx +3 -2
  143. package/themes/original/src/components/LastOrder/index.tsx +2 -1
  144. package/themes/original/src/components/LastOrders/index.tsx +2 -1
  145. package/themes/original/src/components/LoginForm/Otp/index.tsx +79 -25
  146. package/themes/original/src/components/LoginForm/index.tsx +38 -14
  147. package/themes/original/src/components/MessageListing/index.tsx +6 -0
  148. package/themes/original/src/components/Messages/index.tsx +9 -3
  149. package/themes/original/src/components/Messages/styles.tsx +1 -1
  150. package/themes/original/src/components/MomentOption/index.tsx +20 -5
  151. package/themes/original/src/components/MomentSelector/index.tsx +1 -1
  152. package/themes/original/src/components/MultiCart/index.tsx +1 -1
  153. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +48 -15
  154. package/themes/original/src/components/MultiCheckout/index.tsx +295 -56
  155. package/themes/original/src/components/MultiCheckout/styles.tsx +20 -1
  156. package/themes/original/src/components/MultiOrdersDetails/index.tsx +21 -16
  157. package/themes/original/src/components/MyOrders/index.tsx +37 -39
  158. package/themes/original/src/components/NavBar/index.tsx +15 -14
  159. package/themes/original/src/components/NetworkError/index.tsx +2 -3
  160. package/themes/original/src/components/NetworkError/styles.tsx +2 -2
  161. package/themes/original/src/components/Notifications/index.tsx +9 -8
  162. package/themes/original/src/components/Notifications/styles.tsx +0 -1
  163. package/themes/original/src/components/OrderDetails/OrderEta.tsx +21 -6
  164. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +14 -5
  165. package/themes/original/src/components/OrderDetails/index.tsx +718 -667
  166. package/themes/original/src/components/OrderDetails/styles.tsx +24 -7
  167. package/themes/original/src/components/OrderProgress/index.tsx +50 -14
  168. package/themes/original/src/components/OrderProgress/styles.tsx +1 -1
  169. package/themes/original/src/components/OrderSummary/index.tsx +26 -34
  170. package/themes/original/src/components/OrderTypeSelector/index.tsx +5 -0
  171. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +1 -1
  172. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +1 -1
  173. package/themes/original/src/components/OrdersOption/index.tsx +14 -6
  174. package/themes/original/src/components/OrdersOption/styles.tsx +1 -1
  175. package/themes/original/src/components/PageBanner/index.tsx +3 -0
  176. package/themes/original/src/components/PaymentOptionCard/index.tsx +182 -0
  177. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +3 -0
  178. package/themes/original/src/components/PaymentOptions/index.tsx +118 -37
  179. package/themes/original/src/components/PhoneInputNumber/index.tsx +15 -1
  180. package/themes/original/src/components/PreviousOrders/index.tsx +2 -0
  181. package/themes/original/src/components/ProductForm/ActionButton.tsx +122 -0
  182. package/themes/original/src/components/ProductForm/ExtraOptions.tsx +56 -0
  183. package/themes/original/src/components/ProductForm/index.tsx +193 -267
  184. package/themes/original/src/components/ProductForm/styles.tsx +1 -1
  185. package/themes/original/src/components/ProductItemAccordion/index.tsx +55 -42
  186. package/themes/original/src/components/ProductItemAccordion/styles.tsx +3 -4
  187. package/themes/original/src/components/ProductOptionSubOption/index.tsx +120 -79
  188. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +10 -9
  189. package/themes/original/src/components/ProfessionalProfile/styles.tsx +3 -3
  190. package/themes/original/src/components/Promotions/index.tsx +13 -11
  191. package/themes/original/src/components/Promotions/styles.tsx +0 -2
  192. package/themes/original/src/components/ReviewDriver/index.tsx +5 -0
  193. package/themes/original/src/components/ReviewDriver/styles.tsx +1 -1
  194. package/themes/original/src/components/ReviewOrder/index.tsx +5 -0
  195. package/themes/original/src/components/ReviewOrder/styles.tsx +1 -1
  196. package/themes/original/src/components/ReviewProducts/index.tsx +5 -0
  197. package/themes/original/src/components/ReviewProducts/styles.tsx +1 -1
  198. package/themes/original/src/components/ScheduleAccordion/index.tsx +3 -3
  199. package/themes/original/src/components/ServiceForm/index.tsx +2 -2
  200. package/themes/original/src/components/ServiceForm/styles.tsx +4 -4
  201. package/themes/original/src/components/Sessions/index.tsx +5 -0
  202. package/themes/original/src/components/SignupForm/index.tsx +76 -60
  203. package/themes/original/src/components/SingleOrderCard/index.tsx +6 -5
  204. package/themes/original/src/components/SingleProductCard/index.tsx +5 -4
  205. package/themes/original/src/components/SingleProductCard/styles.tsx +0 -5
  206. package/themes/original/src/components/StripeCardsList/index.tsx +26 -8
  207. package/themes/original/src/components/StripeElementsForm/index.tsx +80 -62
  208. package/themes/original/src/components/StripeElementsForm/naked.tsx +59 -1
  209. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +170 -0
  210. package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +91 -0
  211. package/themes/original/src/components/UpsellingProducts/index.tsx +15 -199
  212. package/themes/original/src/components/UpsellingProducts/styles.tsx +19 -0
  213. package/themes/original/src/components/UserFormDetails/index.tsx +128 -79
  214. package/themes/original/src/components/UserFormDetails/styles.tsx +8 -1
  215. package/themes/original/src/components/UserProfile/index.tsx +5 -4
  216. package/themes/original/src/components/UserProfileForm/index.tsx +35 -36
  217. package/themes/original/src/components/UserVerification/index.tsx +55 -50
  218. package/themes/original/src/components/WalletTransactionItem/index.tsx +2 -2
  219. package/themes/original/src/components/WalletTransactions/styles.tsx +1 -0
  220. package/themes/original/src/components/Wallets/index.tsx +35 -49
  221. package/themes/original/src/components/Wallets/styles.tsx +3 -4
  222. package/themes/original/src/components/WebsocketStatus/index.tsx +172 -0
  223. package/themes/original/src/components/WebsocketStatus/styles.tsx +28 -0
  224. package/themes/original/src/components/shared/HeaderTitle.tsx +1 -1
  225. package/themes/original/src/components/shared/OButton.tsx +5 -5
  226. package/themes/original/src/components/shared/OInput.tsx +7 -4
  227. package/themes/original/src/components/shared/OModal.tsx +12 -14
  228. package/themes/original/src/layouts/Container.tsx +5 -3
  229. package/themes/original/src/types/index.tsx +13 -2
  230. package/themes/original/src/utils/index.tsx +124 -22
  231. package/src/navigators/BottomNavigator.tsx +0 -117
  232. package/src/navigators/CheckoutNavigator.tsx +0 -66
  233. package/src/navigators/HomeNavigator.tsx +0 -202
  234. package/src/navigators/NavigationRef.tsx +0 -7
  235. package/src/navigators/RootNavigator.tsx +0 -269
  236. package/src/pages/Account.tsx +0 -34
  237. package/src/pages/AddressForm.tsx +0 -62
  238. package/src/pages/AddressList.tsx +0 -24
  239. package/src/pages/BusinessProductsList.tsx +0 -81
  240. package/src/pages/BusinessesListing.tsx +0 -43
  241. package/src/pages/CartList.tsx +0 -49
  242. package/src/pages/Checkout.tsx +0 -101
  243. package/src/pages/ForgotPassword.tsx +0 -24
  244. package/src/pages/Help.tsx +0 -23
  245. package/src/pages/HelpAccountAndPayment.tsx +0 -23
  246. package/src/pages/HelpGuide.tsx +0 -23
  247. package/src/pages/HelpOrder.tsx +0 -23
  248. package/src/pages/Home.tsx +0 -36
  249. package/src/pages/IntroductoryTutorial.tsx +0 -170
  250. package/src/pages/Login.tsx +0 -47
  251. package/src/pages/MomentOption.tsx +0 -30
  252. package/src/pages/MultiCheckout.tsx +0 -31
  253. package/src/pages/MultiOrdersDetails.tsx +0 -27
  254. package/src/pages/MyOrders.tsx +0 -40
  255. package/src/pages/NetworkError.tsx +0 -24
  256. package/src/pages/NotFound.tsx +0 -22
  257. package/src/pages/OrderDetails.tsx +0 -25
  258. package/src/pages/ProductDetails.tsx +0 -55
  259. package/src/pages/Profile.tsx +0 -36
  260. package/src/pages/ReviewDriver.tsx +0 -30
  261. package/src/pages/ReviewOrder.tsx +0 -32
  262. package/src/pages/ReviewProducts.tsx +0 -30
  263. package/src/pages/Sessions.tsx +0 -22
  264. package/src/pages/Signup.tsx +0 -53
  265. package/src/pages/SpinnerLoader.tsx +0 -10
  266. package/src/pages/Splash.tsx +0 -21
@@ -4,8 +4,10 @@ import {
4
4
  View,
5
5
  TouchableOpacity,
6
6
  ActivityIndicator,
7
+ Alert,
7
8
  } from 'react-native';
8
9
  import Clipboard from '@react-native-clipboard/clipboard';
10
+ import { StarPRNT } from 'react-native-star-prnt';
9
11
  import { Placeholder, PlaceholderLine, Fade } from 'rn-placeholder';
10
12
  import { useTheme } from 'styled-components/native';
11
13
  import {
@@ -35,6 +37,8 @@ import CountryPicker from 'react-native-country-picker-modal';
35
37
  import { NotFoundSource } from '../NotFoundSource';
36
38
  import { OrderHeaderComponent } from './OrderHeaderComponent';
37
39
  import { OrderContentComponent } from './OrderContentComponent';
40
+ import { _retrieveStoreData } from '../../providers/StoreUtil'
41
+ import { usePrinterCommands } from './usePrinterCommands'
38
42
 
39
43
  export const OrderDetailsUI = (props: OrderDetailsParams) => {
40
44
  const {
@@ -44,7 +48,6 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
44
48
  readMessages,
45
49
  messagesReadList,
46
50
  handleAssignDriver,
47
- handleChangeOrderStatus,
48
51
  isFromCheckout,
49
52
  driverLocation,
50
53
  actions,
@@ -57,6 +60,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
57
60
  const [{ parsePrice, parseNumber, parseDate }] = useUtils();
58
61
  const [{ user, token }] = useSession();
59
62
  const [{ configs }] = useConfig();
63
+ const { generateCommands } = usePrinterCommands()
60
64
  const [, { showToast }] = useToast();
61
65
  const [unreadAlert, setUnreadAlert] = useState({
62
66
  business: false,
@@ -70,6 +74,10 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
70
74
  const [openModalForAccept, setOpenModalForAccept] = useState(false);
71
75
  const [openModalForMapView, setOpenModalForMapView] = useState(false);
72
76
  const [isDriverModalVisible, setIsDriverModalVisible] = useState(false);
77
+ const [printerSettings, setPrinterSettings] = useState<any>('')
78
+ const [autoPrintEnabled, setAutoPrintEnabled] = useState<boolean>(false)
79
+
80
+ const orderToComplete = [4,20,21]
73
81
 
74
82
  if (order?.status === 7 || order?.status === 4) {
75
83
  if (drivers?.length > 0 && drivers) {
@@ -120,6 +128,16 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
120
128
  }
121
129
  }
122
130
 
131
+ const handleChangeOrderStatus = async (status: any, isAcceptOrReject: any = {}) => {
132
+ if (props.handleChangeOrderStatus) {
133
+ const order: any = await props.handleChangeOrderStatus(status, isAcceptOrReject)
134
+
135
+ if (order?.status === 7 && autoPrintEnabled && printerSettings) {
136
+ handleViewSummaryOrder()
137
+ }
138
+ }
139
+ }
140
+
123
141
  const getFormattedSubOptionName = ({ quantity, name, position, price }: any) => {
124
142
  if (name !== 'No') {
125
143
  const pos = position && position !== 'whole' ? `(${t(position.toUpperCase(), position)})` : '';
@@ -291,7 +309,28 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
291
309
  setOpenModalForAccept(true);
292
310
  };
293
311
 
312
+ const printAction = async (printerSettings: any, commands: any, showAlert: boolean = true) => {
313
+ try {
314
+ var printResult = await StarPRNT.print(printerSettings?.emulation, commands, printerSettings?.portName);
315
+ showAlert && showToast(ToastType.Info, t('ORDER_PRINTED_SUCCESS', 'Order printed'), 1000)
316
+ } catch (e) {
317
+ showAlert && showToast(ToastType.Error, t('ORDER_PRINTED_FAILED', 'Order not printed, connection failed'), 1000)
318
+ }
319
+ }
320
+
294
321
  const handleViewSummaryOrder = () => {
322
+ if (printerSettings) {
323
+ printerSettings.map((printer: any, idx: number) => {
324
+ const commands: any = generateCommands({
325
+ ...order,
326
+ orderStatus: getOrderStatus(order?.status, t)?.value
327
+ }, printer?.printMode)
328
+ commands.push({ appendCutPaper: StarPRNT.CutPaperAction.PartialCutWithFeed })
329
+
330
+ printAction(printer, commands, idx === printerSettings.length - 1)
331
+ })
332
+ return
333
+ }
295
334
  navigation?.navigate &&
296
335
  navigation.navigate('OrderSummary', {
297
336
  order,
@@ -372,6 +411,17 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
372
411
  }
373
412
  }, [driverLocation]);
374
413
 
414
+ useEffect(() => {
415
+ const getStorageData = async () => {
416
+ const printers = await _retrieveStoreData('printers')
417
+ const autoPrint = await _retrieveStoreData('auto_print_after_accept_order')
418
+ setPrinterSettings(printers?.length && printers)
419
+ setAutoPrintEnabled(!!autoPrint)
420
+ }
421
+
422
+ getStorageData()
423
+ }, [])
424
+
375
425
  const styles = StyleSheet.create({
376
426
  driverOff: {
377
427
  backgroundColor: theme.colors.notAvailable,
@@ -410,7 +460,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
410
460
  </View>
411
461
  )}
412
462
 
413
- {(!!error || error) && (
463
+ {(!!error || error?.length > 0) && (
414
464
  <NotFoundSource
415
465
  btnTitle={t('GO_TO_MY_ORDERS', 'Go to my orders')}
416
466
  content={
@@ -607,7 +657,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
607
657
  disabled={loading}
608
658
  />
609
659
  )}
610
- {order?.status === 4 && ![1].includes(order?.delivery_type) && (
660
+ {orderToComplete.includes(order?.status) && ![1].includes(order?.delivery_type) && (
611
661
  <FloatingButton
612
662
  btnText={t(
613
663
  'ORDER_NOT_PICKEDUP_BY_CUSTOMER',
@@ -4,6 +4,7 @@ import { StyleSheet, View } from 'react-native';
4
4
 
5
5
  // Thirds
6
6
  import { Placeholder, PlaceholderLine, Fade } from 'rn-placeholder';
7
+ import Clipboard from '@react-native-clipboard/clipboard';
7
8
 
8
9
  //OrderingComponent
9
10
  import {
@@ -12,6 +13,8 @@ import {
12
13
  useToast,
13
14
  useSession,
14
15
  ToastType,
16
+ useUtils,
17
+ useConfig
15
18
  } from 'ordering-components/native';
16
19
 
17
20
  //Components
@@ -26,7 +29,7 @@ import { OrderDetailsParams } from '../../types';
26
29
  import { USER_TYPE } from '../../config/constants';
27
30
  import { useTheme } from 'styled-components/native';
28
31
  import { NotFoundSource } from '../NotFoundSource';
29
- import { getOrderStatus } from '../../utils';
32
+ import { verifyDecimals, getProductPrice, getOrderStatus } from '../../utils';
30
33
  import { OrderHeaderComponent } from './OrderHeaderComponent';
31
34
  import { OrderContentComponent } from './OrderContentComponent';
32
35
  //Styles
@@ -56,7 +59,16 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
56
59
  isGrantedPermissions,
57
60
  } = props;
58
61
  const [, { showToast }] = useToast();
62
+ const [{ parsePrice, parseNumber }] = useUtils();
63
+ const [{ configs }] = useConfig();
64
+
59
65
  const { order } = props.order
66
+
67
+ const hideTimer = configs?.hidden_driver_eta_time?.value === '1'
68
+ const isAllowedDriverRejectOrder = configs?.allow_driver_reject_order?.value === '1'
69
+ const isHideRejectButtons = configs?.reject_orders_enabled && configs?.reject_orders_enabled?.value !== '1'
70
+ const isEnabledOrderNotReady = configs?.order_not_ready_enabled?.value === '1'
71
+ const isEnabledFailedPickupDriver = configs?.failed_pickup_by_driver_enabled?.value === '1'
60
72
  const theme = useTheme();
61
73
  const [, t] = useLanguage();
62
74
  const [session] = useSession();
@@ -76,12 +88,14 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
76
88
 
77
89
  const validStatusComplete = [9, 19, 23]
78
90
 
91
+ const pendingOrderStatus = [1, 4, 7, 13]
92
+
79
93
  const logisticOrderStatus = [4, 6, 7]
80
94
 
81
95
  const showFloatButtonsPickUp: any = {
82
- 8: true,
96
+ 8: !isHideRejectButtons,
83
97
  3: true,
84
- 18: true,
98
+ 18: !isHideRejectButtons,
85
99
  };
86
100
 
87
101
  const showFloatButtonsAcceptOrReject: any = {
@@ -104,6 +118,10 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
104
118
  readMessages && readMessages();
105
119
  };
106
120
 
121
+ const goToPermissionPage = () => {
122
+ navigation.navigate('RequestPermissions')
123
+ }
124
+
107
125
  const handleOpenMapView = async () => {
108
126
  if (!isGrantedPermissions) {
109
127
  navigation.navigate('RequestPermissions')
@@ -134,7 +152,174 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
134
152
  }
135
153
  };
136
154
 
155
+ const getFormattedSubOptionName = ({ quantity, name, position, price }: any) => {
156
+ if (name !== 'No') {
157
+ const pos = position && position !== 'whole' ? `(${t(position.toUpperCase(), position)})` : '';
158
+ return pos
159
+ ? `${quantity} x ${name} ${pos} +${parsePrice(price)}\n`
160
+ : `${quantity} x ${name} +${parsePrice(price)}\n`;
161
+ } else {
162
+ return 'No\n';
163
+ }
164
+ };
165
+
166
+ const handleCopyClipboard = () => {
167
+ const businessName = !!order?.business?.name
168
+ ? `${order?.business?.name} \n`
169
+ : '';
170
+
171
+ const businessEmail = !!order?.business?.email
172
+ ? `${order?.business?.email} \n`
173
+ : '';
174
+
175
+ const businessCellphone = !!order?.business?.cellphone
176
+ ? `${order?.business?.cellphone} \n`
177
+ : '';
178
+
179
+ const businessPhone = !!order?.business?.phone
180
+ ? `${order?.business?.phone} \n`
181
+ : '';
182
+
183
+ const businessAddress = !!order?.business?.address
184
+ ? `${order?.business?.address} \n`
185
+ : '';
186
+
187
+ const businessSpecialAddress = !!order?.business?.address_notes
188
+ ? `${order?.business?.address_notes} \n \n`
189
+ : '';
190
+
191
+ const customerName = !!order?.customer?.name
192
+ ? `${order?.customer?.name} ${order?.customer?.middle_name || ''} ${order?.customer?.lastname || ''
193
+ } ${order?.customer?.second_lastname || ''} \n`
194
+ : '';
195
+
196
+ const customerEmail = !!order?.customer.email
197
+ ? `${order?.customer.email} \n`
198
+ : '';
199
+
200
+ const customerCellPhone = !!order?.customer?.cellphone
201
+ ? `${order?.customer?.cellphone} \n`
202
+ : '';
203
+
204
+ const customerPhone = !!order?.customer?.phone
205
+ ? `${order?.customer?.phone} \n`
206
+ : '';
207
+
208
+ const customerAddress = !!order?.customer?.address
209
+ ? `${order?.customer?.address} \n`
210
+ : '';
211
+
212
+ const customerSpecialAddress = !!order?.customer?.address_notes
213
+ ? `${order?.customer?.address_notes} \n`
214
+ : '';
215
+
216
+ const payment = order?.paymethod?.name
217
+ ? `${order?.paymethod?.name} - ${order.delivery_type === 1
218
+ ? t('DELIVERY', 'Delivery')
219
+ : order.delivery_type === 2
220
+ ? t('PICKUP', 'Pickup')
221
+ : order.delivery_type === 3
222
+ ? t('EAT_IN', 'Eat in')
223
+ : order.delivery_type === 4
224
+ ? t('CURBSIDE', 'Curbside')
225
+ : t('DRIVER_THRU', 'Driver thru')
226
+ }\n`
227
+ : '';
228
+
229
+ const getSuboptions = (suboptions: any) => {
230
+ const array: any = []
231
+ suboptions?.length > 0 &&
232
+ suboptions?.map((suboption: any) => {
233
+ const string = `${getFormattedSubOptionName(suboption)}`
234
+ array.push(string)
235
+ })
236
+
237
+ return array.join('')
238
+ }
239
+
240
+ const getOptions = (options: any, productComment: string = '') => {
241
+ const array: any = [];
242
+
243
+ options?.length &&
244
+ options?.map((option: any) => {
245
+ const string =
246
+ ` ${option.name}\n ${getSuboptions(option.suboptions)}`;
247
+
248
+ array.push(string)
249
+ })
250
+
251
+ if (productComment) {
252
+ array.push(` ${t('COMMENT', 'Comment')}\n ${productComment}\n`)
253
+ }
254
+
255
+ return array.join('')
256
+ }
257
+
258
+ const productsInArray =
259
+ order?.products.length &&
260
+ order?.products.map((product: any, i: number) => {
261
+ const string =
262
+ `${product?.quantity} X ${product?.name} ${parsePrice(product.total ?? getProductPrice(product))}\n${getOptions(product.options, product.comment)}`;
263
+
264
+ return i === 0 ? ` ${string}` : string
265
+ });
266
+
267
+ const productsInString = productsInArray.join(' ');
268
+ const orderDetails = `${t(
269
+ 'ORDER_DETAILS',
270
+ 'Order Details',
271
+ )}:\n${productsInString}\n`;
272
+
273
+ const subtotal = `${t('SUBTOTAL', 'Subtotal')}: ${parsePrice(
274
+ order?.subtotal,
275
+ )}\n`;
276
+
277
+ const drivertip = `${t('DRIVER_TIP', 'Driver tip')} ${parsePrice(
278
+ order?.summary?.driver_tip || order?.totalDriverTip,
279
+ )}\n`;
280
+
281
+ const deliveryFee = `${t('DELIVERY_FEE', 'Delivery fee')} ${verifyDecimals(
282
+ order?.service_fee,
283
+ parseNumber,
284
+ )}% ${parsePrice(order?.summary?.service_fee || order?.serviceFee || 0)}\n`;
285
+
286
+ const total = `${t('TOTAL', 'Total')} ${parsePrice(
287
+ order?.summary?.total || order?.total,
288
+ )}\n`;
289
+
290
+ const orderStatus = `${t('INVOICE_ORDER_NO', 'Order No.')} ${order.id} ${t(
291
+ 'IS',
292
+ 'is',
293
+ )} ${getOrderStatus(order?.status, t)?.value}\n`;
294
+
295
+ Clipboard.setString(
296
+ `${orderStatus} ${payment} ${t(
297
+ 'BUSINESS_DETAILS',
298
+ 'Business Details',
299
+ )}\n ${businessName} ${businessEmail} ${businessCellphone} ${businessPhone} ${businessAddress} ${businessSpecialAddress}${t(
300
+ 'CUSTOMER_DETAILS',
301
+ 'Customer Details',
302
+ )}\n ${customerName} ${customerEmail} ${customerCellPhone} ${customerPhone} ${customerAddress} ${customerSpecialAddress}\n${orderDetails} ${subtotal} ${drivertip} ${deliveryFee} ${total}`,
303
+ );
304
+
305
+ showToast(
306
+ ToastType.Info,
307
+ t('COPY_TO_CLIPBOARD', 'Copy to clipboard.'),
308
+ 1000,
309
+ );
310
+ };
311
+
137
312
  const handleViewActionOrder = (action: string) => {
313
+ if (action === 'reject' && !isAllowedDriverRejectOrder) {
314
+ setAlertState({
315
+ open: true,
316
+ content: [
317
+ t('DRIVER_NOT_ALLOWED_TO_REJECT_ORDER', 'The driver is not allowed to reject an order.'),
318
+ ],
319
+ key: null,
320
+ })
321
+ return
322
+ }
138
323
  if (!isGrantedPermissions) {
139
324
  navigation.navigate('RequestPermissions')
140
325
  return
@@ -151,6 +336,13 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
151
336
  };
152
337
 
153
338
  const handleArrowBack: any = () => {
339
+ if (alertState?.open && !isAllowedDriverRejectOrder && !pendingOrderStatus.includes(order?.status)) {
340
+ setAlertState({
341
+ ...alertState,
342
+ open: false
343
+ })
344
+ return
345
+ }
154
346
  navigation?.canGoBack() && navigation.goBack();
155
347
  };
156
348
 
@@ -204,7 +396,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
204
396
  }, [props.order?.loading]);
205
397
 
206
398
  useEffect(() => {
207
- if (order?.driver === null && session?.user?.level === 4) {
399
+ if (order?.driver_id === null && session?.user?.level === 4) {
208
400
  setAlertState({
209
401
  open: true,
210
402
  content: [
@@ -293,13 +485,13 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
293
485
  textStyle={{ color: theme.colors.primary }}
294
486
  text={t('ARRIVED_TO_BUSINESS', 'Arrived to bussiness')}
295
487
  onClick={() =>
296
- handleChangeOrderStatus && handleChangeOrderStatus(3)
488
+ handleChangeOrderStatus && isGrantedPermissions ? handleChangeOrderStatus(3) : goToPermissionPage()
297
489
  }
298
490
  imgLeftStyle={{ tintColor: theme.colors.backArrow }}
299
491
  />
300
492
  </Pickup>
301
493
  )}
302
- {order?.status === 3 && order?.delivery_type === 1 && (
494
+ {order?.status === 3 && order?.delivery_type === 1 && !isHideRejectButtons && isEnabledOrderNotReady && (
303
495
  <View style={{ paddingVertical: 20, marginBottom: 20 }}>
304
496
  <OButton
305
497
  style={styles.btnPickUp}
@@ -344,7 +536,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
344
536
  </View>
345
537
  )}
346
538
 
347
- {(!!props.order?.error || props.order?.error) && (
539
+ {(!!props.order?.error || props.order?.error?.length > 0) && (
348
540
  <NotFoundSource
349
541
  btnTitle={t('GO_TO_MY_ORDERS', 'Go to my orders')}
350
542
  content={
@@ -362,6 +554,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
362
554
  order={order}
363
555
  handleOpenMapView={handleOpenMapView}
364
556
  handleOpenMessagesForBusiness={handleOpenMessagesForBusiness}
557
+ handleCopyClipboard={handleCopyClipboard}
365
558
  getOrderStatus={getOrderStatus}
366
559
  handleArrowBack={handleArrowBack}
367
560
  logisticOrderStatus={logisticOrderStatus}
@@ -384,7 +577,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
384
577
  btnText={t('PICKUP_FAILED', 'Pickup failed')}
385
578
  isSecondaryBtn={false}
386
579
  secondButtonClick={() =>
387
- handleChangeOrderStatus && handleChangeOrderStatus(9)
580
+ handleChangeOrderStatus && isGrantedPermissions ? handleChangeOrderStatus(9) : goToPermissionPage()
388
581
  }
389
582
  firstButtonClick={() =>
390
583
  handleViewActionOrder && handleViewActionOrder('pickupFailed')
@@ -393,7 +586,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
393
586
  secondButton={true}
394
587
  firstColorCustom={theme.colors.red}
395
588
  secondColorCustom={theme.colors.green}
396
- widthButton={'45%'}
589
+ widthButton={isHideRejectButtons || !isEnabledFailedPickupDriver ? '100%' : '45%'}
590
+ isHideRejectButtons={isHideRejectButtons || !isEnabledFailedPickupDriver}
397
591
  />
398
592
  )}
399
593
  {(validStatusComplete.includes(order?.status)) && (
@@ -403,7 +597,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
403
597
  btnText={t('DELIVERY_FAILED', 'Delivery Failed')}
404
598
  isSecondaryBtn={false}
405
599
  secondButtonClick={() =>
406
- handleChangeOrderStatus && handleChangeOrderStatus(11)
600
+ handleChangeOrderStatus && isGrantedPermissions ? handleChangeOrderStatus(11) : goToPermissionPage()
407
601
  }
408
602
  firstButtonClick={() =>
409
603
  handleViewActionOrder && handleViewActionOrder('deliveryFailed')
@@ -412,7 +606,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
412
606
  secondButton={true}
413
607
  firstColorCustom={theme.colors.red}
414
608
  secondColorCustom={theme.colors.green}
415
- widthButton={'45%'}
609
+ widthButton={isHideRejectButtons ? '100%' : '45%'}
610
+ isHideRejectButtons={isHideRejectButtons}
416
611
  />
417
612
  </>
418
613
  )}
@@ -420,13 +615,14 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
420
615
  <FloatingButton
421
616
  btnText={t('REJECT', 'Reject')}
422
617
  isSecondaryBtn={false}
423
- secondButtonClick={() => (order?.isLogistic && (order?.order_group || logisticOrderStatus.includes(order?.status))) ? handleAcceptLogisticOrder(order) : handleViewActionOrder('accept')}
618
+ secondButtonClick={() => hideTimer ? handleChangeOrderStatus && handleChangeOrderStatus(8) : (order?.isLogistic && (order?.order_group || logisticOrderStatus.includes(order?.status))) ? handleAcceptLogisticOrder(order) : handleViewActionOrder('accept')}
424
619
  firstButtonClick={() => order?.isLogistic && (order?.order_group || logisticOrderStatus.includes(order?.status)) ? handleRejectLogisticOrder() : handleViewActionOrder('reject')}
425
620
  secondBtnText={t('ACCEPT', 'Accept')}
426
621
  secondButton={true}
427
622
  firstColorCustom={theme.colors.red}
428
623
  secondColorCustom={theme.colors.green}
429
- widthButton={'45%'}
624
+ widthButton={isHideRejectButtons ? '100%' : '45%'}
625
+ isHideRejectButtons={isHideRejectButtons}
430
626
  />
431
627
  )}
432
628
  </>