ordering-ui-admin-external 1.39.9 → 1.40.0

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 (114) hide show
  1. package/_bundles/{ordering-ui-admin.a195abab9ce10c18d568.js → ordering-ui-admin.27b7bb0f04b6581074ce.js} +2 -2
  2. package/_modules/components/BusinessIntelligence/InvoiceDriverPdf/index.js +2 -1
  3. package/_modules/components/BusinessIntelligence/Reports/ReportsSlaOrders/index.js +84 -8
  4. package/_modules/components/BusinessIntelligence/Reports/ReportsSlaOrders/styles.js +8 -4
  5. package/_modules/components/Delivery/DriversGroupAddForm/BusinessesForm/index.js +23 -4
  6. package/_modules/components/Delivery/DriversGroupAddForm/BusinessesForm/styles.js +7 -3
  7. package/_modules/components/Delivery/DriversGroupBusinesses/index.js +23 -4
  8. package/_modules/components/Delivery/DriversGroupBusinesses/styles.js +7 -3
  9. package/_modules/components/Delivery/DriversGroupsListing/index.js +2 -0
  10. package/_modules/components/Delivery/UsersListingHeader/index.js +9 -1
  11. package/_modules/components/Delivery/UsersListingHeader/styles.js +17 -2
  12. package/_modules/components/MyProducts/AdvancedSettings/index.js +20 -0
  13. package/_modules/components/MyProducts/AppLayout/index.js +56 -46
  14. package/_modules/components/MyProducts/CallCenterApp/index.js +2 -6
  15. package/_modules/components/MyProducts/CustomProject/index.js +1 -1
  16. package/_modules/components/MyProducts/CustomerApp/index.js +3 -1
  17. package/_modules/components/MyProducts/DriverApp/index.js +3 -1
  18. package/_modules/components/MyProducts/KioskApp/index.js +2 -4
  19. package/_modules/components/MyProducts/StoreApp/index.js +3 -1
  20. package/_modules/components/Orders/AllInOne/DriversManager/index.js +13 -5
  21. package/_modules/components/Orders/AllInOne/index.js +13 -4
  22. package/_modules/components/Orders/DeliveriesLocation/index.js +6 -2
  23. package/_modules/components/Orders/DriversBusyStatusFilter/index.js +5 -2
  24. package/_modules/components/Orders/DriversBusyStatusFilter/styles.js +5 -2
  25. package/_modules/components/Orders/DriversList/Driver.js +67 -0
  26. package/_modules/components/Orders/DriversList/index.js +21 -48
  27. package/_modules/components/Orders/DriversList/styles.js +35 -26
  28. package/_modules/components/Orders/DriversLocation/index.js +8 -13
  29. package/_modules/components/Orders/DriversManager/index.js +10 -1
  30. package/_modules/components/Orders/DriversManager/styles.js +18 -3
  31. package/_modules/components/Orders/DriversOnlineOfflineFilter/index.js +5 -2
  32. package/_modules/components/Orders/DriversOnlineOfflineFilter/styles.js +11 -8
  33. package/_modules/components/Orders/OrderContactInformation/index.js +39 -18
  34. package/_modules/components/Orders/OrderContactInformation/styles.js +4 -3
  35. package/_modules/components/Orders/OrderDetails/index.js +8 -3
  36. package/_modules/components/Orders/OrderDetailsHeader/styles.js +1 -1
  37. package/_modules/components/Orders/OrderStatusTypeSelector/index.js +19 -27
  38. package/_modules/components/Orders/OrdersDashboard/index.js +2 -2
  39. package/_modules/components/Orders/OrdersFilterGroup/index.js +5 -2
  40. package/_modules/components/Orders/OrdersFilterGroup/styles.js +9 -3
  41. package/_modules/components/Orders/OrdersLateralBar/index.js +1 -0
  42. package/_modules/components/Orders/OrdersListing/index.js +12 -3
  43. package/_modules/components/Orders/OrdersListing/styles.js +23 -2
  44. package/_modules/components/Orders/OrdersManager/index.js +4 -2
  45. package/_modules/components/Orders/OrdersManager/test.js +975 -0
  46. package/_modules/components/Orders/OrdersTable/Order.js +230 -0
  47. package/_modules/components/Orders/OrdersTable/index.js +30 -200
  48. package/_modules/components/Orders/ProductItemAccordion/styles.js +1 -1
  49. package/_modules/components/Settings/SettingsLogs/index.js +174 -0
  50. package/_modules/components/Settings/SettingsLogs/styles.js +80 -0
  51. package/_modules/components/Settings/index.js +7 -0
  52. package/_modules/components/SidebarMenu/index.js +6 -1
  53. package/_modules/components/Stores/BusinessAdd/BusinessDetails/index.js +8 -3
  54. package/_modules/index.js +6 -0
  55. package/index-template.js +1 -1
  56. package/package.json +2 -2
  57. package/src/components/BusinessIntelligence/InvoiceDriverPdf/index.js +1 -1
  58. package/src/components/BusinessIntelligence/Reports/ReportsSlaOrders/index.js +71 -2
  59. package/src/components/BusinessIntelligence/Reports/ReportsSlaOrders/styles.js +15 -1
  60. package/src/components/Delivery/DriversGroupAddForm/BusinessesForm/index.js +46 -18
  61. package/src/components/Delivery/DriversGroupAddForm/BusinessesForm/styles.js +12 -0
  62. package/src/components/Delivery/DriversGroupBusinesses/index.js +46 -18
  63. package/src/components/Delivery/DriversGroupBusinesses/styles.js +12 -0
  64. package/src/components/Delivery/DriversGroupsListing/index.js +2 -0
  65. package/src/components/Delivery/UsersListingHeader/index.js +14 -2
  66. package/src/components/Delivery/UsersListingHeader/styles.js +55 -0
  67. package/src/components/MyProducts/AdvancedSettings/index.js +6 -1
  68. package/src/components/MyProducts/AppLayout/index.js +82 -64
  69. package/src/components/MyProducts/CallCenterApp/index.js +2 -6
  70. package/src/components/MyProducts/CustomProject/index.js +1 -1
  71. package/src/components/MyProducts/CustomerApp/index.js +3 -1
  72. package/src/components/MyProducts/DriverApp/index.js +3 -1
  73. package/src/components/MyProducts/KioskApp/index.js +2 -4
  74. package/src/components/MyProducts/StoreApp/index.js +3 -1
  75. package/src/components/Orders/AllInOne/DriversManager/index.js +8 -2
  76. package/src/components/Orders/AllInOne/index.js +10 -2
  77. package/src/components/Orders/DeliveriesLocation/index.js +8 -2
  78. package/src/components/Orders/DriversBusyStatusFilter/index.js +3 -2
  79. package/src/components/Orders/DriversBusyStatusFilter/styles.js +5 -0
  80. package/src/components/Orders/DriversList/Driver.js +61 -0
  81. package/src/components/Orders/DriversList/index.js +14 -41
  82. package/src/components/Orders/DriversList/styles.js +25 -1
  83. package/src/components/Orders/DriversLocation/index.js +12 -25
  84. package/src/components/Orders/DriversManager/index.js +15 -2
  85. package/src/components/Orders/DriversManager/styles.js +55 -0
  86. package/src/components/Orders/DriversOnlineOfflineFilter/index.js +3 -2
  87. package/src/components/Orders/DriversOnlineOfflineFilter/styles.js +11 -0
  88. package/src/components/Orders/OrderContactInformation/index.js +26 -3
  89. package/src/components/Orders/OrderContactInformation/styles.js +16 -0
  90. package/src/components/Orders/OrderDetails/index.js +19 -2
  91. package/src/components/Orders/OrderDetailsHeader/styles.js +3 -1
  92. package/src/components/Orders/OrderStatusTypeSelector/index.js +19 -27
  93. package/src/components/Orders/OrdersDashboard/index.js +2 -2
  94. package/src/components/Orders/OrdersFilterGroup/index.js +2 -1
  95. package/src/components/Orders/OrdersFilterGroup/styles.js +14 -5
  96. package/src/components/Orders/OrdersLateralBar/index.js +1 -0
  97. package/src/components/Orders/OrdersListing/index.js +20 -4
  98. package/src/components/Orders/OrdersListing/styles.js +62 -0
  99. package/src/components/Orders/OrdersManager/index.js +2 -0
  100. package/src/components/Orders/OrdersManager/test.js +602 -0
  101. package/src/components/Orders/OrdersTable/Order.js +281 -0
  102. package/src/components/Orders/OrdersTable/index.js +35 -252
  103. package/src/components/Orders/ProductItemAccordion/styles.js +0 -4
  104. package/src/components/Settings/SettingsLogs/index.js +307 -0
  105. package/src/components/Settings/SettingsLogs/styles.js +268 -0
  106. package/src/components/Settings/index.js +2 -0
  107. package/src/components/SidebarMenu/index.js +8 -1
  108. package/src/components/Stores/BusinessAdd/BusinessDetails/index.js +9 -0
  109. package/src/index.js +2 -0
  110. package/template/app.js +4 -0
  111. package/template/components/ListenPageChanges/index.js +1 -0
  112. package/template/helmetdata.json +7 -0
  113. package/template/pages/SettingsLogs/index.js +12 -0
  114. /package/_bundles/{ordering-ui-admin.a195abab9ce10c18d568.js.LICENSE.txt → ordering-ui-admin.27b7bb0f04b6581074ce.js.LICENSE.txt} +0 -0
@@ -0,0 +1,281 @@
1
+ import React from 'react'
2
+ import { BusinessInfo, CheckBox, CustomerInfo, LogisticStatusDot, OrderNumberContainer, OrdersCountWrapper, PriorityDot, StatusInfo, Timer, Timestatus, WrapperImage } from './styles'
3
+ import RiCheckboxFill from '@meronex/icons/ri/RiCheckboxFill'
4
+ import RiCheckboxBlankLine from '@meronex/icons/ri/RiCheckboxBlankLine'
5
+ import { useLanguage, useUtils } from 'ordering-components-admin-external'
6
+ import { useTheme } from 'styled-components'
7
+ import FaUserAlt from '@meronex/icons/fa/FaUserAlt'
8
+
9
+ const OrderPropsAreEqual = (prevProps, nextProps) => {
10
+ return JSON.stringify(prevProps.order) === JSON.stringify(nextProps.order) &&
11
+ JSON.stringify(prevProps.allowColumns) === JSON.stringify(nextProps.allowColumns) &&
12
+ prevProps.isEnabledRowInColor === nextProps.isEnabledRowInColor &&
13
+ JSON.stringify(prevProps.selectedOrderIds) === JSON.stringify(nextProps.selectedOrderIds) &&
14
+ JSON.stringify(prevProps.isSelectedOrders) === JSON.stringify(nextProps.isSelectedOrders) &&
15
+ prevProps.showExternalId === nextProps.showExternalId &&
16
+ prevProps.groupStatus === nextProps.groupStatus
17
+ }
18
+
19
+ export const Order = React.memo((props) => {
20
+ const {
21
+ orderDetailId,
22
+ order,
23
+ i,
24
+ isEnabledRowInColor,
25
+ handleClickOrder,
26
+ allowColumns,
27
+ isSelectedOrders,
28
+ selectedOrderIds,
29
+ handleSelectedOrderIds,
30
+ showExternalId,
31
+ getOrderStatus,
32
+ hidePhoto,
33
+ getLogisticTag,
34
+ getPriorityTag,
35
+ groupStatus,
36
+ displayDelayedTime,
37
+ getCurrenySymbol,
38
+ franchiseImages
39
+ } = props
40
+
41
+ const [, t] = useLanguage()
42
+ const theme = useTheme()
43
+
44
+ const [{ parseDate, optimizeImage, getTimeAgo, parsePrice }] = useUtils()
45
+
46
+ return (
47
+ <tr
48
+ key={i}
49
+ className={parseInt(orderDetailId) === order.id ? 'active' : ''}
50
+ data-tour={i === 0 ? 'tour_start' : ''}
51
+ data-status={isEnabledRowInColor && order?.time_status}
52
+ onClick={(e) => handleClickOrder(order, e)}
53
+ >
54
+ {Object.keys(allowColumns).filter(col => allowColumns[col]?.visable)
55
+ .sort((col1, col2) => allowColumns[col1]?.order - allowColumns[col2]?.order)
56
+ .map((column, index) => {
57
+ if (column === 'slaBar') {
58
+ return (
59
+ <td key={`slaBar${i}-${index}`}>
60
+ <Timestatus
61
+ timeState={order?.time_status}
62
+ />
63
+ </td>
64
+ )
65
+ }
66
+ if (column === 'externalId' && !isSelectedOrders) {
67
+ return (
68
+ <td className='externalId' key={`externalId${i}-${index}`}>
69
+ <StatusInfo>
70
+ <p className='bold'>{order?.external_id}</p>
71
+ </StatusInfo>
72
+ </td>
73
+ )
74
+ }
75
+ if (column === 'orderNumber') {
76
+ return (
77
+ <td
78
+ className={!(allowColumns?.orderNumber?.visable || allowColumns?.dateTime?.visable) ? 'small' : ''}
79
+ key={`orderNumber${i}-${index}`}
80
+ >
81
+ <OrderNumberContainer>
82
+ {!isSelectedOrders && (
83
+ <CheckBox
84
+ isChecked={selectedOrderIds.includes(order?.id)}
85
+ onClick={() => handleSelectedOrderIds(order.id)}
86
+ className='orderCheckBox'
87
+ >
88
+ {selectedOrderIds.includes(order?.id) ? (
89
+ <RiCheckboxFill />
90
+ ) : (
91
+ <RiCheckboxBlankLine />
92
+ )}
93
+ </CheckBox>
94
+ )}
95
+ <div className='info'>
96
+ {allowColumns?.orderNumber?.visable && !showExternalId && (
97
+ <p className='bold'>{t('INVOICE_ORDER_NO', 'Order No.')} {order?.id}</p>
98
+ )}
99
+ {allowColumns?.dateTime?.visable && (
100
+ <p className='date'>
101
+ {
102
+ order?.delivery_datetime_utc
103
+ ? parseDate(order?.delivery_datetime_utc)
104
+ : parseDate(order?.delivery_datetime, { utc: false })
105
+ }
106
+ </p>
107
+ )}
108
+ </div>
109
+ </OrderNumberContainer>
110
+ </td>
111
+ )
112
+ }
113
+ if (column === 'status' && !isSelectedOrders) {
114
+ return (
115
+ <td className='statusInfo' key={`statusInfo${i}-${index}`}>
116
+ <StatusInfo>
117
+ <p className='bold'>{getOrderStatus(order.status)}</p>
118
+ </StatusInfo>
119
+ </td>
120
+ )
121
+ }
122
+ if (column === 'cartGroupId') {
123
+ return (
124
+ <td className='orderGroupId' key={`cart_group_id${i}-${index}`}>
125
+ <StatusInfo>
126
+ {order?.cart_group_id && (
127
+ <p className='bold'>{t('No', 'No')}. {order?.cart_group_id}</p>
128
+ )}
129
+ </StatusInfo>
130
+ </td>
131
+ )
132
+ }
133
+ if (column === 'driverGroupId') {
134
+ return (
135
+ <td className='orderGroupId' key={`cart_group_id${i}-${index}`}>
136
+ <StatusInfo>
137
+ {order?.driver_group_id && (
138
+ <p className='bold'>{t('No', 'No')}. {order?.driver_group_id}</p>
139
+ )}
140
+ </StatusInfo>
141
+ </td>
142
+ )
143
+ }
144
+ if (column === 'business') {
145
+ return (
146
+ <td className='businessInfo' key={`businessInfo${i}-${index}`}>
147
+ <BusinessInfo>
148
+ {!hidePhoto && (
149
+ <WrapperImage>
150
+ <img src={optimizeImage(franchiseImages[order?.business?.franchise_id] || order.business?.logo || theme.images?.dummies?.businessLogo, 'h_50,c_limit')} loading='lazy' alt='' />
151
+ </WrapperImage>
152
+ )}
153
+ <div className='info'>
154
+ <p className='bold'>{order?.business?.name}</p>
155
+ <p>{order?.business?.city?.name}</p>
156
+ </div>
157
+ </BusinessInfo>
158
+ </td>
159
+ )
160
+ }
161
+ if (column === 'customer') {
162
+ return (
163
+ <td className='customerInfo' key={`customerInfo${i}-${index}`}>
164
+ <CustomerInfo>
165
+ {!hidePhoto && (
166
+ <WrapperImage>
167
+ {order?.customer?.photo ? (
168
+ <img src={optimizeImage(order?.customer?.photo, 'h_50,c_limit')} loading='lazy' alt='' />
169
+ ) : (
170
+ <FaUserAlt />
171
+ )}
172
+ <OrdersCountWrapper isNew={order?.customer?.orders_count === 0}>
173
+ {order?.customer?.orders_count || t('NEW', 'New')}
174
+ </OrdersCountWrapper>
175
+ </WrapperImage>
176
+ )}
177
+ <div className='info'>
178
+ <p className='bold'>
179
+ {(!order?.customer?.email && !order?.customer?.cellphone && !order?.customer?.name) ? t('GUEST_USER', 'Guest user') : order?.customer?.name}
180
+ </p>
181
+ <p>{order?.customer?.cellphone}</p>
182
+ </div>
183
+ </CustomerInfo>
184
+ </td>
185
+ )
186
+ }
187
+ if (column === 'driver' && !isSelectedOrders) {
188
+ return (
189
+ <td key={`driver${i}-${index}`}>
190
+ {order?.delivery_type === 1 && (
191
+ <CustomerInfo>
192
+ {!hidePhoto && (
193
+ <WrapperImage>
194
+ {order?.driver?.photo ? (
195
+ <img src={optimizeImage(order?.driver?.photo, 'h_50,c_limit')} loading='lazy' alt='' />
196
+ ) : (
197
+ <FaUserAlt />
198
+ )}
199
+ </WrapperImage>
200
+ )}
201
+ <div className='info'>
202
+ {order?.driver ? (
203
+ <>
204
+ <p className='bold'>{order?.driver?.name}</p>
205
+ <p>{order?.driver?.cellphone}</p>
206
+ </>
207
+ ) : (
208
+ <p className='bold'>{t('NO_DRIVER', 'No Driver')}</p>
209
+ )}
210
+ </div>
211
+ </CustomerInfo>
212
+ )}
213
+ </td>
214
+ )
215
+ }
216
+ if (column === 'advanced' && !isSelectedOrders) {
217
+ return (
218
+ <React.Fragment key={`advanced${i}-${index}`}>
219
+ <td className='logistic'>
220
+ <div className='info'>
221
+ <p className='bold'>{t('LOGISTIC', 'Logistic')}</p>
222
+ <p>
223
+ {getLogisticTag(order?.logistic_status)}
224
+ <LogisticStatusDot
225
+ status={order?.logistic_status}
226
+ />
227
+ </p>
228
+ </div>
229
+ </td>
230
+ <td className='attempts'>
231
+ <div className='info'>
232
+ <p className='bold'>{t('ATTEMPTS', 'Attempts')}</p>
233
+ <p>{order?.logistic_attemps}</p>
234
+ </div>
235
+ </td>
236
+ <td className='priority'>
237
+ <div className='info'>
238
+ <p className='bold'>{t('PRIORITY', 'Priority')}</p>
239
+ <p>
240
+ {getPriorityTag(order?.priority)}
241
+ <PriorityDot priority={order?.priority} />
242
+ </p>
243
+ </div>
244
+ </td>
245
+ </React.Fragment>
246
+ )
247
+ }
248
+ if (column === 'timer' && (groupStatus === 'pending' || groupStatus === 'inProgress')) {
249
+ return (
250
+ <td className='timer' key={`timer${i}-${index}`}>
251
+ <Timer>
252
+ <p className='bold'>{t('TIMER', 'Timer')}</p>
253
+ <p className={order?.time_status}>{displayDelayedTime(order)}</p>
254
+ </Timer>
255
+ </td>
256
+ )
257
+ }
258
+ if (column === 'total') {
259
+ return (
260
+ <td className='orderPrice' key={`total${i}-${index}`}>
261
+ <div className='info'>
262
+ {allowColumns?.total?.visable && (
263
+ <p className='bold'>{parsePrice(order?.summary?.total, { currency: getCurrenySymbol(order?.currency) })}</p>
264
+ )}
265
+ {!(order?.status === 1 || order?.status === 11 || order?.status === 2 || order?.status === 5 || order?.status === 6 || order?.status === 10 || order.status === 12) && (
266
+ <p>
267
+ {
268
+ order?.delivery_datetime_utc
269
+ ? getTimeAgo(order?.delivery_datetime_utc)
270
+ : getTimeAgo(order?.delivery_datetime, { utc: false })
271
+ }
272
+ </p>
273
+ )}
274
+ </div>
275
+ </td>
276
+ )
277
+ }
278
+ })}
279
+ </tr>
280
+ )
281
+ }, OrderPropsAreEqual)
@@ -2,7 +2,6 @@ import React, { memo, useEffect, useState } from 'react'
2
2
  import moment from 'moment'
3
3
  import RiCheckboxBlankLine from '@meronex/icons/ri/RiCheckboxBlankLine'
4
4
  import RiCheckboxFill from '@meronex/icons/ri/RiCheckboxFill'
5
- import FaUserAlt from '@meronex/icons/fa/FaUserAlt'
6
5
  import Skeleton from 'react-loading-skeleton'
7
6
  import {
8
7
  useLanguage,
@@ -19,7 +18,6 @@ import {
19
18
  OrderTbody,
20
19
  OrderNumberContainer,
21
20
  CheckBox,
22
- WrapperImage,
23
21
  BusinessInfo,
24
22
  CustomerInfo,
25
23
  DriversInfo,
@@ -27,13 +25,21 @@ import {
27
25
  WrapOrderStatusSelector,
28
26
  WrapperPagination,
29
27
  StatusInfo,
30
- LogisticStatusDot,
31
- PriorityDot,
32
28
  Timestatus,
33
- Timer,
34
- OrdersCountWrapper,
35
29
  DragTh
36
30
  } from './styles'
31
+ import { Order } from './Order'
32
+
33
+ const OrderTablePropsAreEqual = (prevProps, nextProps) => {
34
+ return prevProps.isSelectedOrders === nextProps.isSelectedOrders &&
35
+ JSON.stringify(prevProps.orderList) === JSON.stringify(nextProps.orderList) &&
36
+ JSON.stringify(prevProps.pagination) === JSON.stringify(nextProps.pagination) &&
37
+ JSON.stringify(prevProps.selectedOrderIds) === JSON.stringify(nextProps.selectedOrderIds) &&
38
+ JSON.stringify(prevProps.isTourOpen) === JSON.stringify(nextProps.isTourOpen) &&
39
+ prevProps.groupStatus === nextProps.groupStatus &&
40
+ JSON.stringify(prevProps.allowColumns) === JSON.stringify(nextProps.allowColumns) &&
41
+ prevProps.isUseQuery === nextProps.isUseQuery
42
+ }
37
43
 
38
44
  export const OrdersTable = memo((props) => {
39
45
  const {
@@ -51,7 +57,6 @@ export const OrdersTable = memo((props) => {
51
57
  isTourOpen,
52
58
  handleOpenTour,
53
59
  setIsTourOpen,
54
- slaSettingTime,
55
60
  groupStatus,
56
61
  allowColumns,
57
62
  setAllowColumns,
@@ -62,9 +67,8 @@ export const OrdersTable = memo((props) => {
62
67
  } = props
63
68
  const [{ dictionary }, t] = useLanguage()
64
69
  const theme = useTheme()
65
- const [{ parseDate, optimizeImage, getTimeAgo, parsePrice }] = useUtils()
70
+ const [{ parseDate }] = useUtils()
66
71
  const [isAllChecked, setIsAllChecked] = useState(false)
67
- const [, setCurrentTime] = useState()
68
72
  const [dragOverd, setDragOverd] = useState('')
69
73
  const handleChangePage = (page) => {
70
74
  getPageOrders(pagination.pageSize, page)
@@ -628,248 +632,27 @@ export const OrdersTable = memo((props) => {
628
632
  ) : (
629
633
  <OrderTbody>
630
634
  {orderList.orders.map((order, i) => (
631
- <tr
632
- key={i}
633
- className={parseInt(orderDetailId) === order.id ? 'active' : ''}
634
- data-tour={i === 0 ? 'tour_start' : ''}
635
- data-status={isEnabledRowInColor && order?.time_status}
636
- onClick={(e) => handleClickOrder(order, e)}
637
- >
638
- {Object.keys(allowColumns).filter(col => allowColumns[col]?.visable)
639
- .sort((col1, col2) => allowColumns[col1]?.order - allowColumns[col2]?.order)
640
- .map((column, index) => {
641
- if (column === 'slaBar') {
642
- return (
643
- <td key={`slaBar${i}-${index}`}>
644
- <Timestatus
645
- timeState={order?.time_status}
646
- />
647
- </td>
648
- )
649
- }
650
- if (column === 'externalId' && !isSelectedOrders) {
651
- return (
652
- <td className='externalId' key={`externalId${i}-${index}`}>
653
- <StatusInfo>
654
- <p className='bold'>{order?.external_id}</p>
655
- </StatusInfo>
656
- </td>
657
- )
658
- }
659
- if (column === 'orderNumber') {
660
- return (
661
- <td
662
- className={!(allowColumns?.orderNumber?.visable || allowColumns?.dateTime?.visable) ? 'small' : ''}
663
- key={`orderNumber${i}-${index}`}
664
- >
665
- <OrderNumberContainer>
666
- {!isSelectedOrders && (
667
- <CheckBox
668
- isChecked={selectedOrderIds.includes(order?.id)}
669
- onClick={() => handleSelectedOrderIds(order.id)}
670
- className='orderCheckBox'
671
- >
672
- {selectedOrderIds.includes(order?.id) ? (
673
- <RiCheckboxFill />
674
- ) : (
675
- <RiCheckboxBlankLine />
676
- )}
677
- </CheckBox>
678
- )}
679
- <div className='info'>
680
- {allowColumns?.orderNumber?.visable && !showExternalId && (
681
- <p className='bold'>{t('INVOICE_ORDER_NO', 'Order No.')} {order?.id}</p>
682
- )}
683
- {allowColumns?.dateTime?.visable && (
684
- <p className='date'>
685
- {
686
- order?.delivery_datetime_utc
687
- ? parseDate(order?.delivery_datetime_utc)
688
- : parseDate(order?.delivery_datetime, { utc: false })
689
- }
690
- </p>
691
- )}
692
- </div>
693
- </OrderNumberContainer>
694
- </td>
695
- )
696
- }
697
- if (column === 'status' && !isSelectedOrders) {
698
- return (
699
- <td className='statusInfo' key={`statusInfo${i}-${index}`}>
700
- <StatusInfo>
701
- <p className='bold'>{getOrderStatus(order.status)}</p>
702
- </StatusInfo>
703
- </td>
704
- )
705
- }
706
- if (column === 'cartGroupId') {
707
- return (
708
- <td className='orderGroupId' key={`cart_group_id${i}-${index}`}>
709
- <StatusInfo>
710
- {order?.cart_group_id && (
711
- <p className='bold'>{t('No', 'No')}. {order?.cart_group_id}</p>
712
- )}
713
- </StatusInfo>
714
- </td>
715
- )
716
- }
717
- if (column === 'driverGroupId') {
718
- return (
719
- <td className='orderGroupId' key={`cart_group_id${i}-${index}`}>
720
- <StatusInfo>
721
- {order?.driver_group_id && (
722
- <p className='bold'>{t('No', 'No')}. {order?.driver_group_id}</p>
723
- )}
724
- </StatusInfo>
725
- </td>
726
- )
727
- }
728
- if (column === 'business') {
729
- return (
730
- <td className='businessInfo' key={`businessInfo${i}-${index}`}>
731
- <BusinessInfo>
732
- {!hidePhoto && (
733
- <WrapperImage>
734
- <img src={optimizeImage(franchiseImages[order?.business?.franchise_id] || order.business?.logo || theme.images?.dummies?.businessLogo, 'h_50,c_limit')} loading='lazy' alt='' />
735
- </WrapperImage>
736
- )}
737
- <div className='info'>
738
- <p className='bold'>{order?.business?.name}</p>
739
- <p>{order?.business?.city?.name}</p>
740
- </div>
741
- </BusinessInfo>
742
- </td>
743
- )
744
- }
745
- if (column === 'customer') {
746
- return (
747
- <td className='customerInfo' key={`customerInfo${i}-${index}`}>
748
- <CustomerInfo>
749
- {!hidePhoto && (
750
- <WrapperImage>
751
- {order?.customer?.photo ? (
752
- <img src={optimizeImage(order?.customer?.photo, 'h_50,c_limit')} loading='lazy' alt='' />
753
- ) : (
754
- <FaUserAlt />
755
- )}
756
- <OrdersCountWrapper isNew={order?.customer?.orders_count === 0}>
757
- {order?.customer?.orders_count || t('NEW', 'New')}
758
- </OrdersCountWrapper>
759
- </WrapperImage>
760
- )}
761
- <div className='info'>
762
- <p className='bold'>
763
- {(!order?.customer?.email && !order?.customer?.cellphone && !order?.customer?.name) ? t('GUEST_USER', 'Guest user') : order?.customer?.name}
764
- </p>
765
- <p>{order?.customer?.cellphone}</p>
766
- </div>
767
- </CustomerInfo>
768
- </td>
769
- )
770
- }
771
- if (column === 'driver' && !isSelectedOrders) {
772
- return (
773
- <td key={`driver${i}-${index}`}>
774
- {order?.delivery_type === 1 && (
775
- <CustomerInfo>
776
- {!hidePhoto && (
777
- <WrapperImage>
778
- {order?.driver?.photo ? (
779
- <img src={optimizeImage(order?.driver?.photo, 'h_50,c_limit')} loading='lazy' alt='' />
780
- ) : (
781
- <FaUserAlt />
782
- )}
783
- </WrapperImage>
784
- )}
785
- <div className='info'>
786
- {order?.driver ? (
787
- <>
788
- <p className='bold'>{order?.driver?.name}</p>
789
- <p>{order?.driver?.cellphone}</p>
790
- </>
791
- ) : (
792
- <p className='bold'>{t('NO_DRIVER', 'No Driver')}</p>
793
- )}
794
- </div>
795
- </CustomerInfo>
796
- )}
797
- </td>
798
- )
799
- }
800
- if (column === 'advanced' && !isSelectedOrders) {
801
- return (
802
- <React.Fragment key={`advanced${i}-${index}`}>
803
- <td className='logistic'>
804
- <div className='info'>
805
- <p className='bold'>{t('LOGISTIC', 'Logistic')}</p>
806
- <p>
807
- {getLogisticTag(order?.logistic_status)}
808
- <LogisticStatusDot
809
- status={order?.logistic_status}
810
- />
811
- </p>
812
- </div>
813
- </td>
814
- <td className='attempts'>
815
- <div className='info'>
816
- <p className='bold'>{t('ATTEMPTS', 'Attempts')}</p>
817
- <p>{order?.logistic_attemps}</p>
818
- </div>
819
- </td>
820
- <td className='priority'>
821
- <div className='info'>
822
- <p className='bold'>{t('PRIORITY', 'Priority')}</p>
823
- <p>
824
- {getPriorityTag(order?.priority)}
825
- <PriorityDot priority={order?.priority} />
826
- </p>
827
- </div>
828
- </td>
829
- </React.Fragment>
830
- )
831
- }
832
- if (column === 'timer' && (groupStatus === 'pending' || groupStatus === 'inProgress')) {
833
- return (
834
- <td className='timer' key={`timer${i}-${index}`}>
835
- <Timer>
836
- <p className='bold'>{t('TIMER', 'Timer')}</p>
837
- <p className={order?.time_status}>{displayDelayedTime(order)}</p>
838
- </Timer>
839
- </td>
840
- )
841
- }
842
- if (column === 'eta') {
843
- return (
844
- <td className='eta' key={`eta${i}-${index}`}>
845
- <div className='info'>
846
- <p className='bold'>{order?.eta_time} min</p>
847
- </div>
848
- </td>
849
- )
850
- }
851
- if (column === 'total') {
852
- return (
853
- <td className='orderPrice' key={`total${i}-${index}`}>
854
- <div className='info'>
855
- {allowColumns?.total?.visable && (
856
- <p className='bold'>{parsePrice(order?.summary?.total, { currency: getCurrenySymbol(order?.currency) })}</p>
857
- )}
858
- {!(order?.status === 1 || order?.status === 11 || order?.status === 2 || order?.status === 5 || order?.status === 6 || order?.status === 10 || order.status === 12) && (
859
- <p>
860
- {
861
- order?.delivery_datetime_utc
862
- ? getTimeAgo(order?.delivery_datetime_utc)
863
- : getTimeAgo(order?.delivery_datetime, { utc: false })
864
- }
865
- </p>
866
- )}
867
- </div>
868
- </td>
869
- )
870
- }
871
- })}
872
- </tr>
635
+ <Order
636
+ key={order?.id}
637
+ i={i}
638
+ order={order}
639
+ orderDetailId={orderDetailId}
640
+ isEnabledRowInColor={isEnabledRowInColor}
641
+ handleClickOrder={handleClickOrder}
642
+ allowColumns={allowColumns}
643
+ isSelectedOrders={isSelectedOrders}
644
+ selectedOrderIds={selectedOrderIds}
645
+ handleSelectedOrderIds={handleSelectedOrderIds}
646
+ showExternalId={showExternalId}
647
+ getOrderStatus={getOrderStatus}
648
+ hidePhoto={hidePhoto}
649
+ getLogisticTag={getLogisticTag}
650
+ getPriorityTag={getPriorityTag}
651
+ groupStatus={groupStatus}
652
+ displayDelayedTime={displayDelayedTime}
653
+ getCurrenySymbol={getCurrenySymbol}
654
+ franchiseImages={franchiseImages}
655
+ />
873
656
  ))}
874
657
  </OrderTbody>
875
658
  )}
@@ -889,4 +672,4 @@ export const OrdersTable = memo((props) => {
889
672
  )}
890
673
  </>
891
674
  )
892
- })
675
+ }, OrderTablePropsAreEqual)
@@ -187,12 +187,8 @@ export const ProductComment = styled.div`
187
187
  font-weight: normal;
188
188
  text-transform: capitalize;
189
189
  margin: 0px 20px 0px 40px;
190
- text-overflow: ellipsis;
191
190
  display: -webkit-box;
192
- -webkit-box-orient: vertical;
193
- -webkit-line-clamp: 2;
194
191
  line-height: 1.5;
195
- overflow: hidden;
196
192
  ${props => props.theme?.rtl && css`
197
193
  margin: 0px 40px 0px 20px;
198
194
  `}