@bjsdistribution/dms-client-return 0.1.9-prod → 0.1.10-prod

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 (135) hide show
  1. package/dist/components/client-portal/OutstandingTable.d.ts +3 -0
  2. package/dist/components/client-portal/ReturnAfterSearchBar.d.ts +4 -0
  3. package/dist/components/client-portal/ReturnOverview.d.ts +3 -0
  4. package/dist/components/client-portal/ReturnRTFilters.d.ts +5 -0
  5. package/dist/components/client-portal/ReturnSearchBar.d.ts +4 -0
  6. package/dist/components/client-portal/ReturnStatus.d.ts +8 -0
  7. package/dist/components/client-portal/return-confirm/ConfirmedMain.d.ts +3 -0
  8. package/dist/components/client-portal/return-confirm/ReturnConfirmedTable.d.ts +3 -0
  9. package/dist/components/order-daily-overview/common/fakedata.d.ts +1 -0
  10. package/dist/components/order-daily-overview/header/route-header/RouterHeader.d.ts +1 -0
  11. package/dist/components/order-view/notes/AddNote.d.ts +1 -0
  12. package/dist/components/order-view/notes/order-dropdown/NewReturnDropdown.d.ts +3 -0
  13. package/dist/components/order-view/order-actions/actions/clear-booking-status/ClearBookingStatus.d.ts +4 -1
  14. package/dist/components/order-view/order-actions/actions/confirm-order/index.d.ts +4 -1
  15. package/dist/components/order-view/order-actions/actions/force-debrief/BaseChargeConfirmationModal.d.ts +7 -0
  16. package/dist/components/order-view/order-actions/actions/force-debrief/ForceDebriefModal.d.ts +11 -0
  17. package/dist/components/order-view/order-actions/actions/force-debrief/Selector.d.ts +11 -0
  18. package/dist/components/order-view/order-actions/actions/force-debrief/charges/adhoc/index.d.ts +3 -0
  19. package/dist/components/order-view/order-actions/actions/force-debrief/charges/base-charge/index.d.ts +8 -0
  20. package/dist/components/order-view/order-actions/actions/force-debrief/charges/collection-add-ons/index.d.ts +7 -0
  21. package/dist/components/order-view/order-actions/actions/force-debrief/charges/delivery-add-ons/index.d.ts +7 -0
  22. package/dist/components/order-view/order-actions/actions/force-debrief/charges/disposal-charges/index.d.ts +7 -0
  23. package/dist/components/order-view/order-actions/actions/force-debrief/charges/order-charges/index.d.ts +7 -0
  24. package/dist/components/order-view/order-actions/actions/force-debrief/escalation/EscalationCategory.d.ts +3 -0
  25. package/dist/components/order-view/order-actions/actions/force-debrief/escalation/EscalationLevel.d.ts +3 -0
  26. package/dist/components/order-view/order-actions/actions/force-debrief/escalation/EscalationReason.d.ts +3 -0
  27. package/dist/components/order-view/order-actions/actions/force-debrief/escalation/index.d.ts +3 -0
  28. package/dist/components/order-view/order-actions/actions/force-debrief/notifications/FlagsTemplate.d.ts +3 -0
  29. package/dist/components/order-view/order-actions/actions/force-debrief/notifications/OrderTemplate.d.ts +3 -0
  30. package/dist/components/order-view/order-actions/actions/force-debrief/notifications/Tabs.d.ts +3 -0
  31. package/dist/components/order-view/order-actions/actions/force-debrief/notifications/index.d.ts +3 -0
  32. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/RadioButtons.d.ts +7 -0
  33. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/CancellationReasonDropdown.d.ts +3 -0
  34. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/FailureReasonDropdown.d.ts +3 -0
  35. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/OrderHoldReasonDropdown.d.ts +3 -0
  36. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/StatusDropdown.d.ts +3 -0
  37. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/ZoneDropdown.d.ts +3 -0
  38. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/failure-content/index.d.ts +3 -0
  39. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/index.d.ts +4 -0
  40. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/success-content/index.d.ts +3 -0
  41. package/dist/components/order-view/order-actions/actions/force-debrief/styles.d.ts +8 -0
  42. package/dist/components/order-view/order-actions/actions/hold-order/HoldOrderModal.d.ts +1 -0
  43. package/dist/components/order-view/order-actions/actions/remove-from-route/RemoveFromRoute.d.ts +1 -1
  44. package/dist/components/order-view/order-actions/actions/unhold-order/UnholdOrder.d.ts +1 -0
  45. package/dist/components/order-view/products-info/expanded-content/index.d.ts +4 -1
  46. package/dist/components/order-view/return-client-products/ProductTable.d.ts +4 -1
  47. package/dist/components/order-view/return-client-products/product-table/ReturnProductTable.d.ts +4 -1
  48. package/dist/components/order-view/store.d.ts +14 -2
  49. package/dist/components/order-view/types.d.ts +49 -1
  50. package/dist/components/order-view/utils.d.ts +3 -0
  51. package/dist/components/store.d.ts +12 -1
  52. package/dist/components/utils.d.ts +1 -0
  53. package/dist/dms-client-return.cjs.development.js +7053 -2711
  54. package/dist/dms-client-return.cjs.development.js.map +1 -1
  55. package/dist/dms-client-return.cjs.production.min.js +1 -1
  56. package/dist/dms-client-return.cjs.production.min.js.map +1 -1
  57. package/dist/dms-client-return.esm.js +7111 -2769
  58. package/dist/dms-client-return.esm.js.map +1 -1
  59. package/package.json +6 -4
  60. package/src/assets/icons/ActionIcon.tsx +1 -1
  61. package/src/assets/icons/ArrowDownIcon.tsx +2 -2
  62. package/src/components/client-portal/OutstandingTable.tsx +412 -0
  63. package/src/components/client-portal/ReturnAfterSearchBar.tsx +242 -0
  64. package/src/components/client-portal/ReturnOverview.tsx +185 -0
  65. package/src/components/client-portal/ReturnRTFilters.tsx +228 -0
  66. package/src/components/client-portal/ReturnSearchBar.tsx +294 -0
  67. package/src/components/client-portal/ReturnStatus.tsx +252 -0
  68. package/src/components/client-portal/return-confirm/ConfirmedMain.tsx +235 -0
  69. package/src/components/client-portal/return-confirm/ReturnConfirmedTable.tsx +404 -0
  70. package/src/components/order-daily-overview/common/fakedata.tsx +18 -0
  71. package/src/components/order-daily-overview/header/route-header/RouterHeader.tsx +130 -1
  72. package/src/components/order-daily-overview/header-filters/HeaderFilter.tsx +15 -3
  73. package/src/components/order-daily-overview/header-filters/SelectionFilter.tsx +100 -70
  74. package/src/components/order-daily-overview/return-after-table/table/OrderTable.tsx +4 -0
  75. package/src/components/order-daily-overview/return-after-table/table-filters/ReturnFilterStore.ts +86 -0
  76. package/src/components/order-daily-overview/return-after-table/table-filters/ReturnOrderFilter.tsx +12 -2
  77. package/src/components/order-daily-overview/return-after-table/table-filters/TableFilters.tsx +22 -1
  78. package/src/components/order-daily-overview/return-order-table/return-orders-filters/ReturnFilter.tsx +34 -6
  79. package/src/components/order-daily-overview/return-order-table/return-orders-filters/ReturnOrderTable.tsx +24 -11
  80. package/src/components/order-daily-overview/return-order-table/return-orders-filters/RightFilters.tsx +26 -6
  81. package/src/components/order-daily-overview/shared/elements/PrintDropDown.tsx +5 -3
  82. package/src/components/order-view/details-filters/left-side-filters/dropdowns/OptionsDropDown.tsx +5 -0
  83. package/src/components/order-view/details-filters/right-side-filters/Details.tsx +28 -3
  84. package/src/components/order-view/generic-table/AuditLogs.tsx +39 -12
  85. package/src/components/order-view/index.tsx +45 -0
  86. package/src/components/order-view/notes/AddNote.tsx +94 -65
  87. package/src/components/order-view/notes/order-dropdown/NewReturnDropdown.tsx +8 -10
  88. package/src/components/order-view/notification/OrderTemplate.tsx +192 -41
  89. package/src/components/order-view/order-actions/actions/cancel-order/ReturnAction.tsx +25 -4
  90. package/src/components/order-view/order-actions/actions/cancel-order/ReturnReason.tsx +24 -4
  91. package/src/components/order-view/order-actions/actions/clear-booking-status/ClearBookingStatus.tsx +9 -2
  92. package/src/components/order-view/order-actions/actions/confirm-order/index.tsx +12 -6
  93. package/src/components/order-view/order-actions/actions/create-task-reminder/CreateReminderModal.tsx +2 -2
  94. package/src/components/order-view/order-actions/actions/force-debrief/BaseChargeConfirmationModal.tsx +94 -0
  95. package/src/components/order-view/order-actions/actions/force-debrief/ForceDebriefModal.tsx +620 -0
  96. package/src/components/order-view/order-actions/actions/force-debrief/Selector.tsx +65 -0
  97. package/src/components/order-view/order-actions/actions/force-debrief/charges/adhoc/index.tsx +94 -0
  98. package/src/components/order-view/order-actions/actions/force-debrief/charges/base-charge/index.tsx +106 -0
  99. package/src/components/order-view/order-actions/actions/force-debrief/charges/collection-add-ons/index.tsx +77 -0
  100. package/src/components/order-view/order-actions/actions/force-debrief/charges/delivery-add-ons/index.tsx +78 -0
  101. package/src/components/order-view/order-actions/actions/force-debrief/charges/disposal-charges/index.tsx +77 -0
  102. package/src/components/order-view/order-actions/actions/force-debrief/charges/order-charges/index.tsx +124 -0
  103. package/src/components/order-view/order-actions/actions/force-debrief/escalation/EscalationCategory.tsx +92 -0
  104. package/src/components/order-view/order-actions/actions/force-debrief/escalation/EscalationLevel.tsx +90 -0
  105. package/src/components/order-view/order-actions/actions/force-debrief/escalation/EscalationReason.tsx +122 -0
  106. package/src/components/order-view/order-actions/actions/force-debrief/escalation/index.tsx +16 -0
  107. package/src/components/order-view/order-actions/actions/force-debrief/notifications/FlagsTemplate.tsx +46 -0
  108. package/src/components/order-view/order-actions/actions/force-debrief/notifications/OrderTemplate.tsx +117 -0
  109. package/src/components/order-view/order-actions/actions/force-debrief/notifications/Tabs.tsx +32 -0
  110. package/src/components/order-view/order-actions/actions/force-debrief/notifications/index.tsx +180 -0
  111. package/src/components/order-view/order-actions/actions/force-debrief/order-info/RadioButtons.tsx +201 -0
  112. package/src/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/CancellationReasonDropdown.tsx +40 -0
  113. package/src/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/FailureReasonDropdown.tsx +108 -0
  114. package/src/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/OrderHoldReasonDropdown.tsx +37 -0
  115. package/src/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/StatusDropdown.tsx +48 -0
  116. package/src/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/ZoneDropdown.tsx +27 -0
  117. package/src/components/order-view/order-actions/actions/force-debrief/order-info/failure-content/index.tsx +187 -0
  118. package/src/components/order-view/order-actions/actions/force-debrief/order-info/index.tsx +55 -0
  119. package/src/components/order-view/order-actions/actions/force-debrief/order-info/success-content/index.tsx +221 -0
  120. package/src/components/order-view/order-actions/actions/force-debrief/styles.tsx +51 -0
  121. package/src/components/order-view/order-actions/actions/hold-order/HoldOrderModal.tsx +2 -0
  122. package/src/components/order-view/order-actions/actions/remove-from-route/RemoveFromRoute.tsx +7 -2
  123. package/src/components/order-view/order-actions/actions/unhold-order/UnholdOrder.tsx +2 -0
  124. package/src/components/order-view/order-actions/index.tsx +15 -3
  125. package/src/components/order-view/order-details/expanded-content/instruction-section/index.tsx +1 -1
  126. package/src/components/order-view/products-info/expanded-content/index.tsx +27 -11
  127. package/src/components/order-view/products-info/index.tsx +4 -4
  128. package/src/components/order-view/return-client-products/ProductTable.tsx +6 -2
  129. package/src/components/order-view/return-client-products/product-table/ReturnProductTable.tsx +54 -15
  130. package/src/components/order-view/store.ts +106 -0
  131. package/src/components/order-view/types.ts +54 -1
  132. package/src/components/order-view/utils.ts +37 -0
  133. package/src/components/store.ts +62 -1
  134. package/src/components/utils.ts +13 -3
  135. package/src/index.tsx +26 -16
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.1.9-prod",
2
+ "version": "0.1.10-prod",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
@@ -59,7 +59,7 @@
59
59
  "testEnvironment": "jest-environment-jsdom-sixteen"
60
60
  },
61
61
  "devDependencies": {
62
- "@bjsdistribution/dms-component-library": "0.3.19-dev",
62
+ "@bjsdistribution/dms-component-library": "0.3.42-prod",
63
63
  "@size-limit/preset-small-lib": "^11.0.1",
64
64
  "@tippyjs/react": "^4.2.6",
65
65
  "@types/react": "^18.2.47",
@@ -82,7 +82,8 @@
82
82
  "styled-components": "^6.1.8",
83
83
  "tsdx": "^0.14.1",
84
84
  "tslib": "^2.6.2",
85
- "typescript": "^5.3.3"
85
+ "typescript": "^5.3.3",
86
+ "@types/uuid": "^10.0.0"
86
87
  },
87
88
  "dependencies": {
88
89
  "@emotion/react": "^11.11.3",
@@ -95,6 +96,7 @@
95
96
  "jotai": "^2.6.3",
96
97
  "react-custom-scrollbars-2": "^4.5.0",
97
98
  "react-redux": "^9.2.0",
98
- "react-switch-selector": "^2.2.1"
99
+ "react-switch-selector": "^2.2.1",
100
+ "uuid": "^10.0.0"
99
101
  }
100
102
  }
@@ -11,7 +11,7 @@ const ActionIcon = () => (
11
11
  <path
12
12
  d="M0.5 12.2432C0.5 5.61581 5.87258 0.243225 12.5 0.243225C19.1274 0.243225 24.5 5.61581 24.5 12.2432C24.5 18.8706 19.1274 24.2432 12.5 24.2432C5.87258 24.2432 0.5 18.8706 0.5 12.2432Z"
13
13
  fill="#E95252"
14
- fill-opacity="0.5"
14
+ fillOpacity="0.5"
15
15
  />
16
16
  <path
17
17
  d="M16.566 9.23825C16.6377 9.16909 16.6948 9.08636 16.7342 8.99488C16.7735 8.90339 16.7943 8.80499 16.7952 8.70541C16.7961 8.60582 16.7772 8.50705 16.7395 8.41486C16.7018 8.32267 16.6462 8.23891 16.5758 8.16846C16.5054 8.098 16.4217 8.04228 16.3295 8.00452C16.2374 7.96677 16.1386 7.94774 16.0391 7.94856C15.9395 7.94938 15.841 7.97002 15.7495 8.00929C15.658 8.04855 15.5752 8.10565 15.506 8.17725L12.5 11.1822L9.495 8.17725C9.42634 8.10356 9.34354 8.04446 9.25154 8.00347C9.15954 7.96247 9.06022 7.94043 8.95952 7.93865C8.85882 7.93688 8.75879 7.9554 8.6654 7.99312C8.57201 8.03084 8.48718 8.08699 8.41596 8.15821C8.34474 8.22943 8.2886 8.31426 8.25087 8.40765C8.21315 8.50104 8.19463 8.60107 8.19641 8.70177C8.19818 8.80247 8.22022 8.90178 8.26122 8.99378C8.30221 9.08578 8.36131 9.16858 8.435 9.23725L11.438 12.2432L8.433 15.2482C8.30052 15.3904 8.22839 15.5785 8.23182 15.7728C8.23525 15.9671 8.31396 16.1525 8.45138 16.2899C8.58879 16.4273 8.77417 16.506 8.96847 16.5094C9.16278 16.5128 9.35082 16.4407 9.493 16.3082L12.5 13.3032L15.505 16.3092C15.6472 16.4417 15.8352 16.5139 16.0295 16.5104C16.2238 16.507 16.4092 16.4283 16.5466 16.2909C16.684 16.1535 16.7627 15.9681 16.7662 15.7738C16.7696 15.5795 16.6975 15.3914 16.565 15.2492L13.562 12.2432L16.566 9.23825Z"
@@ -16,8 +16,8 @@ const ArrowDownIcon: React.FC<ArrowDownIconProps> = ({ fill = '#3A3630' }) => {
16
16
  <rect width="24" height="24" fill={fill} />
17
17
  <path
18
18
  opacity="0.4"
19
- fill-rule="evenodd"
20
- clip-rule="evenodd"
19
+ fillRule="evenodd"
20
+ clipRule="evenodd"
21
21
  d="M6.69104 9.8912C6.82604 9.75637 7.00903 9.68063 7.19984 9.68063C7.39064 9.68063 7.57363 9.75637 7.70864 9.8912L11.9998 14.1824L16.291 9.8912C16.4275 9.76402 16.608 9.69478 16.7946 9.69807C16.9811 9.70136 17.1591 9.77693 17.291 9.90884C17.4229 10.0408 17.4985 10.2187 17.5018 10.4053C17.5051 10.5918 17.4358 10.7723 17.3086 10.9088L12.5086 15.7088C12.3736 15.8436 12.1906 15.9194 11.9998 15.9194C11.809 15.9194 11.626 15.8436 11.491 15.7088L6.69104 10.9088C6.5562 10.7738 6.48047 10.5908 6.48047 10.4C6.48047 10.2092 6.5562 10.0262 6.69104 9.8912Z"
22
22
  fill="#3A3630"
23
23
  />
@@ -0,0 +1,412 @@
1
+ import {
2
+ Checkbox,
3
+ displayValueOrNA,
4
+ useAxios,
5
+ } from '@bjsdistribution/dms-component-library';
6
+ import { Empty, notification, Skeleton } from 'antd';
7
+ import { format } from 'date-fns';
8
+ import { useAtom } from 'jotai';
9
+ import React, { useEffect, useMemo, useRef, useState } from 'react';
10
+ import { NavLink, useParams } from 'react-router-dom';
11
+ import dayjs from 'dayjs';
12
+ import { filtersReducerAtom } from '../order-daily-overview/header-filters/filterStore';
13
+ import {
14
+ useClientOutstandingReturnData,
15
+ useClientPortal,
16
+ useEndDate,
17
+ useLocationData,
18
+ useSearchText,
19
+ useSelectedClientPortOrders,
20
+ useStartDate,
21
+ } from '../store';
22
+ import { usefetchAgain } from '../order-view/store';
23
+ import {
24
+ useLoading,
25
+ UsePaginationData,
26
+ usePrintOptionTOggle,
27
+ } from '../order-daily-overview/store/store';
28
+ import SortIcon from '../../common/SortIcon';
29
+ import CaretDownFilledIcon from '../../common/CaretDownFilledIcon';
30
+ import { ApiResponse } from '../types';
31
+ import {
32
+ CustomDrop,
33
+ EmptyDataContainer,
34
+ StyledTable,
35
+ StyledTableWrapper,
36
+ } from '../order-daily-overview/return-order-table/return-orders-filters/returnstyles';
37
+ import PrinterIcon from '../../assets/icons/PrinterIcon';
38
+ import DownIcon from '../../assets/icons/DownIcon';
39
+ import PrintDropDownReturn from '../order-view/details-filters/left-side-filters/dropdowns/PrintDropDownReturn';
40
+
41
+ const OutstandingTable = () => {
42
+ const [state] = useAtom(filtersReducerAtom);
43
+ const { 'x-pagination': pagination } = state;
44
+ const [
45
+ outstandingReturnData,
46
+ setOutstandingReturnData,
47
+ ] = useClientOutstandingReturnData();
48
+ const [load, setLoading] = useLoading();
49
+ const dropdownRefParent = useRef<HTMLDivElement>(null);
50
+ const dropdownRef = useRef<HTMLDivElement>(null);
51
+ const [printToogle, setPrintToggle] = usePrintOptionTOggle();
52
+ const [locationData] = useLocationData();
53
+ const [, setPaginationObject] = UsePaginationData();
54
+ const [callForFetch] = usefetchAgain();
55
+ const [clientPortal] = useClientPortal();
56
+ const { status } = useParams();
57
+ const [selectedOrderIds, setSelectedOrderIds] = useSelectedClientPortOrders();
58
+ const [selectClientAll, setSelectClientAll] = useState(false);
59
+ const [debouncedSearchText] = useSearchText();
60
+
61
+ //sorting
62
+ const [sortConfig, setSortConfig] = useState<{
63
+ key: string;
64
+ direction: 'asc' | 'desc';
65
+ } | null>(null);
66
+
67
+ const handleSort = (key: string) => {
68
+ setSortConfig((prev: any) => {
69
+ if (prev?.key === key && prev.direction === 'asc') {
70
+ return { key, direction: 'desc' };
71
+ }
72
+ return { key, direction: 'asc' };
73
+ });
74
+ };
75
+
76
+ const sortedData = useMemo(() => {
77
+ if (!outstandingReturnData || !sortConfig) return outstandingReturnData;
78
+
79
+ const { key, direction } = sortConfig;
80
+ return [...outstandingReturnData].sort((a, b) => {
81
+ const valueA = a[key];
82
+ const valueB = b[key];
83
+
84
+ if (typeof valueA === 'number' && typeof valueB === 'number') {
85
+ return direction === 'asc' ? valueA - valueB : valueB - valueA;
86
+ }
87
+ if (typeof valueA === 'string' && typeof valueB === 'string') {
88
+ return direction === 'asc'
89
+ ? valueA.localeCompare(valueB)
90
+ : valueB.localeCompare(valueA);
91
+ }
92
+ return 0;
93
+ });
94
+ }, [outstandingReturnData, sortConfig]);
95
+
96
+ const renderSortIcon = (columnKey: string) => {
97
+ if (!sortConfig || sortConfig.key !== columnKey) {
98
+ return <SortIcon />;
99
+ }
100
+ return sortConfig.direction === 'asc' ? (
101
+ <CaretDownFilledIcon />
102
+ ) : (
103
+ <CaretDownFilledIcon />
104
+ );
105
+ };
106
+
107
+ const OpenDropDown = (index: number) => {
108
+ setPrintToggle(prevIndex => (prevIndex === index ? null : index));
109
+ };
110
+ // Close dropdown outside click
111
+ useEffect(() => {
112
+ document.addEventListener('mousedown', handleClickOutside);
113
+ return () => {
114
+ document.removeEventListener('mousedown', handleClickOutside);
115
+ };
116
+ }, []);
117
+ const handleClickOutside = (event: MouseEvent) => {
118
+ if (
119
+ dropdownRef.current &&
120
+ !dropdownRef.current.contains(event.target as Node)
121
+ ) {
122
+ setPrintToggle(null);
123
+ }
124
+ };
125
+
126
+ //CP
127
+ const [startDate] = useStartDate();
128
+ const [endDate] = useEndDate();
129
+
130
+ const filters = useMemo(() => {
131
+ if (!clientPortal) return [];
132
+
133
+ const stored = JSON.parse(localStorage.getItem('returnDate') || '{}');
134
+
135
+ const sDate = startDate?.isValid?.() ? startDate : dayjs(stored?.startDate);
136
+ const eDate = endDate?.isValid?.()
137
+ ? endDate
138
+ : stored?.endDate
139
+ ? dayjs(stored?.endDate)
140
+ : null;
141
+
142
+ if (!sDate?.isValid?.()) return [];
143
+
144
+ let dateFilters: any[] = [];
145
+
146
+ if (eDate && eDate.isValid()) {
147
+ dateFilters = [
148
+ { field: 'created_at', op: '>=', value: sDate.format('YYYY-MM-DD') },
149
+ {
150
+ field: 'created_at',
151
+ op: '<=',
152
+ value: eDate.add(1, 'day').format('YYYY-MM-DD'),
153
+ },
154
+ ];
155
+ } else {
156
+ dateFilters = [
157
+ {
158
+ field: 'created_at',
159
+ op: '=',
160
+ value: sDate.format('YYYY-MM-DD'),
161
+ },
162
+ ];
163
+ }
164
+
165
+ const baseFilters: any[] =
166
+ status === 'outstanding_return'
167
+ ? [
168
+ { field: 'isdeleted', op: '=', value: 0 },
169
+ { field: 'product_return_action_id', op: '=', value: 'RTS' },
170
+ ]
171
+ : [];
172
+
173
+ return [...baseFilters, ...dateFilters];
174
+ }, [startDate, endDate, status]);
175
+
176
+ const {
177
+ data: fetchedOrderData,
178
+ loading: returnDataLoad,
179
+ paginationData,
180
+ fetchData,
181
+ } = useAxios<ApiResponse>({
182
+ endpoint: '/v1/return/product/pending/',
183
+ method: 'GET',
184
+ filters: filters,
185
+ pagination: pagination,
186
+ });
187
+ console.log(filters, 'outstanding filters');
188
+ const hasFetchedRef = useRef(false);
189
+
190
+ useEffect(() => {
191
+ const shouldFetch =
192
+ clientPortal &&
193
+ debouncedSearchText === '' &&
194
+ filters?.length > 0 &&
195
+ !hasFetchedRef.current;
196
+
197
+ if (shouldFetch) {
198
+ fetchData();
199
+ hasFetchedRef.current = true;
200
+ }
201
+ }, [debouncedSearchText, filters, clientPortal]);
202
+ useEffect(() => {
203
+ hasFetchedRef.current = false;
204
+ }, [debouncedSearchText, filters]);
205
+
206
+ useEffect(() => {
207
+ setLoading(returnDataLoad);
208
+ if (fetchedOrderData && fetchedOrderData?.data) {
209
+ setOutstandingReturnData(fetchedOrderData?.data);
210
+ if (paginationData) {
211
+ try {
212
+ const { count, ...rest } = JSON.parse(paginationData);
213
+ setPaginationObject(rest);
214
+ } catch (error) {
215
+ console.error('Error parsing paginationData:', error);
216
+ notification.error({
217
+ message: 'Error',
218
+ description: 'Failed to parse pagination data',
219
+ });
220
+ }
221
+ } else {
222
+ notification.error({
223
+ message: 'Error',
224
+ description: 'Pagination data is null or undefined',
225
+ });
226
+ }
227
+ }
228
+ }, [fetchedOrderData, returnDataLoad]);
229
+
230
+ // console.log(modifiedFilters, 'modifiedFilters');
231
+ useEffect(() => {
232
+ setLoading(returnDataLoad);
233
+ if (fetchedOrderData && fetchedOrderData?.data && locationData) {
234
+ const updatedReturnData = fetchedOrderData.data.map(returnItem => {
235
+ const matchingLocation = locationData.find(
236
+ (location: any) => location?.token === returnItem?.return_location
237
+ );
238
+ return {
239
+ ...returnItem,
240
+ new_location: matchingLocation
241
+ ? matchingLocation?.location_name
242
+ : null,
243
+ };
244
+ });
245
+
246
+ setOutstandingReturnData(updatedReturnData);
247
+ }
248
+ }, [fetchedOrderData, returnDataLoad, locationData, state, callForFetch]);
249
+
250
+ //Client Portal
251
+ const handleSelectOrderId = (id: string | number) => {
252
+ setSelectedOrderIds(prev =>
253
+ prev.includes(id) ? prev.filter(orderId => orderId !== id) : [...prev, id]
254
+ );
255
+ };
256
+
257
+ const handleClientSelectAll = (e: React.ChangeEvent<HTMLInputElement>) => {
258
+ const isChecked = e.target.checked;
259
+ setSelectClientAll(isChecked);
260
+
261
+ if (isChecked) {
262
+ setSelectedOrderIds(
263
+ outstandingReturnData?.map((item: any) => item?.order_id) || []
264
+ );
265
+ } else {
266
+ setSelectedOrderIds([]);
267
+ }
268
+ };
269
+ return (
270
+ <>
271
+ <StyledTableWrapper className="fortables">
272
+ <StyledTable>
273
+ <thead>
274
+ <tr>
275
+ {/* <th className="emailInvoiceCheckbox">
276
+ <Checkbox checked={selectAll} onChange={handleSelectAll} />
277
+ </th> */}
278
+ <th className="emailInvoiceCheckbox">
279
+ <Checkbox
280
+ checked={selectClientAll}
281
+ onChange={handleClientSelectAll}
282
+ />
283
+ </th>
284
+ <th onClick={() => handleSort('return_location_name')}>
285
+ <div className="sortIconClass">
286
+ Return Location {renderSortIcon('return_location_name')}
287
+ </div>
288
+ </th>
289
+ <th onClick={() => handleSort('recipient_name')}>
290
+ <div className="sortIconClass">
291
+ Recipient {renderSortIcon('recipient_name')}
292
+ </div>
293
+ </th>
294
+ <th>Return Action</th>
295
+ <th>Code</th>
296
+ <th>Description</th>
297
+ <th>Part</th>
298
+ <th onClick={() => handleSort('weight')}>
299
+ <div className="sortIconClass">
300
+ Weight {renderSortIcon('weight')}
301
+ </div>
302
+ </th>
303
+ <th>CBM</th>
304
+ <th onClick={() => handleSort('return_reason')}>
305
+ <div className="sortIconClass">
306
+ Return Reason {renderSortIcon('return_reason')}
307
+ </div>
308
+ </th>
309
+ <th>Collected</th>
310
+ <th onClick={() => handleSort('collection_reason')}>
311
+ <div className="sortIconClass">
312
+ Collection Reason {renderSortIcon('collection_reason')}
313
+ </div>
314
+ </th>
315
+ <th className="emailInvoiceShare">Labels</th>
316
+ </tr>
317
+ </thead>
318
+ <tbody>
319
+ {load ? (
320
+ <tr>
321
+ <td colSpan={14}>
322
+ <Skeleton active />
323
+ </td>
324
+ </tr>
325
+ ) : sortedData?.length === 0 ? (
326
+ <tr>
327
+ <td colSpan={14}>
328
+ <EmptyDataContainer>
329
+ <Empty />
330
+ </EmptyDataContainer>
331
+ </td>
332
+ </tr>
333
+ ) : (
334
+ sortedData?.map((item: any, index: any) => (
335
+ <tr key={item.id}>
336
+ <td>
337
+ <Checkbox
338
+ checked={selectedOrderIds.includes(item?.order_id)}
339
+ onChange={() => handleSelectOrderId(item?.order_id)}
340
+ />
341
+ </td>
342
+ <td> {displayValueOrNA(item?.return_location_name)}</td>
343
+ <td>
344
+ <ul style={{ listStyleType: 'none', padding: 0 }}>
345
+ <li
346
+ style={{
347
+ color: '#0099ff',
348
+ fontWeight: 600,
349
+ paddingLeft: 0,
350
+ }}
351
+ >
352
+ <NavLink to={`/orders/view/${item?.order_id}`}>
353
+ {displayValueOrNA(item?.recipient_name)}
354
+ </NavLink>
355
+ </li>
356
+ <li style={{ color: '#888075' }}>
357
+ {displayValueOrNA(item?.postcode)}
358
+ </li>
359
+ </ul>
360
+ </td>
361
+ <td>{displayValueOrNA(item?.product_return_action)}</td>
362
+ <td>{displayValueOrNA(item?.code)}</td>
363
+ <td>{displayValueOrNA(item?.description)}</td>
364
+ <td>{displayValueOrNA(item?.part)}</td>
365
+ <td>
366
+ {displayValueOrNA(item?.weight)}{' '}
367
+ {item?.weight && item?.weight !== null ? 'KG' : ''}
368
+ </td>
369
+ <td>{displayValueOrNA(item?.cube)}</td>
370
+ <td>{displayValueOrNA(item?.return_reason)}</td>
371
+ <td>
372
+ {item?.collected_at
373
+ ? format(new Date(item?.collected_at), 'dd/MM/yyyy')
374
+ : 'UNKNOWN'}
375
+ </td>
376
+
377
+ <td>{displayValueOrNA(item?.collection_reason)}</td>
378
+ <td>
379
+ <ul className="actionbox">
380
+ <CustomDrop
381
+ ref={dropdownRefParent}
382
+ className={printToogle === index ? 'active' : ''}
383
+ >
384
+ <li
385
+ className="shareIconContainer"
386
+ onClick={() => OpenDropDown(index)}
387
+ >
388
+ <PrinterIcon />
389
+ <DownIcon />
390
+ {printToogle === index && (
391
+ <div ref={dropdownRef}>
392
+ <PrintDropDownReturn
393
+ legacyURL={item?.return_order_product_label}
394
+ legacyProductID={item?.legacy_product_id}
395
+ />
396
+ </div>
397
+ )}
398
+ </li>
399
+ </CustomDrop>
400
+ </ul>
401
+ </td>
402
+ </tr>
403
+ ))
404
+ )}
405
+ </tbody>
406
+ </StyledTable>
407
+ </StyledTableWrapper>
408
+ </>
409
+ );
410
+ };
411
+
412
+ export default OutstandingTable;