@bjsdistribution/dms-client-return 0.1.20-dev → 0.1.20-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 (177) hide show
  1. package/dist/common/date-picker/header/ClearDate.d.ts +1 -1
  2. package/dist/components/client-portal/DateFilterStore.d.ts +15 -0
  3. package/dist/components/client-portal/ReturnRTFilters.d.ts +3 -0
  4. package/dist/components/order-daily-overview/header/route-header/ClientRouterHeader.d.ts +11 -0
  5. package/dist/components/order-daily-overview/table-view/TableStyle.d.ts +4 -4
  6. package/dist/components/order-view/DynamicTable.d.ts +2 -1
  7. package/dist/components/order-view/general-information/Status.d.ts +1 -1
  8. package/dist/components/order-view/general-information/index.d.ts +1 -1
  9. package/dist/components/order-view/index.d.ts +1 -1
  10. package/dist/components/order-view/notes/AddNote.d.ts +1 -0
  11. package/dist/components/order-view/notes/order-dropdown/NewReturnDropdown.d.ts +3 -0
  12. package/dist/components/order-view/order-actions/actions/clear-booking-status/ClearBookingStatus.d.ts +4 -1
  13. package/dist/components/order-view/order-actions/actions/confirm-order/index.d.ts +4 -1
  14. package/dist/components/order-view/order-actions/actions/force-debrief/BaseChargeConfirmationModal.d.ts +7 -0
  15. package/dist/components/order-view/order-actions/actions/force-debrief/ForceDebriefModal.d.ts +11 -0
  16. package/dist/components/order-view/order-actions/actions/force-debrief/Selector.d.ts +11 -0
  17. package/dist/components/order-view/order-actions/actions/force-debrief/charges/adhoc/index.d.ts +3 -0
  18. package/dist/components/order-view/order-actions/actions/force-debrief/charges/base-charge/index.d.ts +8 -0
  19. package/dist/components/order-view/order-actions/actions/force-debrief/charges/collection-add-ons/index.d.ts +7 -0
  20. package/dist/components/order-view/order-actions/actions/force-debrief/charges/delivery-add-ons/index.d.ts +7 -0
  21. package/dist/components/order-view/order-actions/actions/force-debrief/charges/disposal-charges/index.d.ts +7 -0
  22. package/dist/components/order-view/order-actions/actions/force-debrief/charges/order-charges/index.d.ts +7 -0
  23. package/dist/components/order-view/order-actions/actions/force-debrief/escalation/EscalationCategory.d.ts +3 -0
  24. package/dist/components/order-view/order-actions/actions/force-debrief/escalation/EscalationLevel.d.ts +3 -0
  25. package/dist/components/order-view/order-actions/actions/force-debrief/escalation/EscalationReason.d.ts +3 -0
  26. package/dist/components/order-view/order-actions/actions/force-debrief/escalation/index.d.ts +3 -0
  27. package/dist/components/order-view/order-actions/actions/force-debrief/notifications/FlagsTemplate.d.ts +3 -0
  28. package/dist/components/order-view/order-actions/actions/force-debrief/notifications/OrderTemplate.d.ts +3 -0
  29. package/dist/components/order-view/order-actions/actions/force-debrief/notifications/Tabs.d.ts +3 -0
  30. package/dist/components/order-view/order-actions/actions/force-debrief/notifications/index.d.ts +3 -0
  31. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/RadioButtons.d.ts +7 -0
  32. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/CancellationReasonDropdown.d.ts +3 -0
  33. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/FailureReasonDropdown.d.ts +3 -0
  34. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/OrderHoldReasonDropdown.d.ts +3 -0
  35. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/StatusDropdown.d.ts +3 -0
  36. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/ZoneDropdown.d.ts +3 -0
  37. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/failure-content/index.d.ts +3 -0
  38. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/index.d.ts +4 -0
  39. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/success-content/index.d.ts +3 -0
  40. package/dist/components/order-view/order-actions/actions/force-debrief/styles.d.ts +8 -0
  41. package/dist/components/order-view/order-actions/actions/hold-order/HoldOrderModal.d.ts +1 -0
  42. package/dist/components/order-view/order-actions/actions/remove-from-route/RemoveFromRoute.d.ts +1 -1
  43. package/dist/components/order-view/order-actions/actions/unhold-order/UnholdOrder.d.ts +1 -0
  44. package/dist/components/order-view/order-actions/types.d.ts +3 -3
  45. package/dist/components/order-view/order-details/expanded-content/index.d.ts +1 -1
  46. package/dist/components/order-view/order-details/index.d.ts +1 -1
  47. package/dist/components/order-view/order-resources/expanded-content/index.d.ts +1 -1
  48. package/dist/components/order-view/products-info/expanded-content/index.d.ts +6 -1
  49. package/dist/components/order-view/products-info/index.d.ts +1 -1
  50. package/dist/components/order-view/return-client-products/ProductTable.d.ts +6 -1
  51. package/dist/components/order-view/return-client-products/product-table/ReturnProductTable.d.ts +6 -1
  52. package/dist/components/order-view/store.d.ts +15 -3
  53. package/dist/components/order-view/system-event-logs/expanded-content/index.d.ts +1 -1
  54. package/dist/components/order-view/types.d.ts +55 -1
  55. package/dist/components/order-view/utils.d.ts +11 -2
  56. package/dist/components/store.d.ts +1 -1
  57. package/dist/dms-client-return.cjs.development.js +7157 -4661
  58. package/dist/dms-client-return.cjs.development.js.map +1 -1
  59. package/dist/dms-client-return.cjs.production.min.js +1 -1
  60. package/dist/dms-client-return.cjs.production.min.js.map +1 -1
  61. package/dist/dms-client-return.esm.js +7173 -4677
  62. package/dist/dms-client-return.esm.js.map +1 -1
  63. package/package.json +6 -4
  64. package/src/assets/icons/ActionIcon.tsx +1 -1
  65. package/src/assets/icons/ArrowDownIcon.tsx +2 -2
  66. package/src/components/client-portal/DateFilterStore.ts +139 -0
  67. package/src/components/client-portal/OutstandingTable.tsx +16 -72
  68. package/src/components/client-portal/ReturnAfterSearchBar.tsx +42 -87
  69. package/src/components/client-portal/ReturnOverview.tsx +11 -2
  70. package/src/components/client-portal/ReturnRTFilters.tsx +140 -43
  71. package/src/components/client-portal/ReturnSearchBar.tsx +42 -153
  72. package/src/components/client-portal/ReturnStatus.tsx +33 -82
  73. package/src/components/client-portal/return-confirm/ConfirmedMain.tsx +12 -23
  74. package/src/components/client-portal/return-confirm/ReturnConfirmedTable.tsx +9 -86
  75. package/src/components/order-daily-overview/header/route-header/ClientRouterHeader.tsx +166 -0
  76. package/src/components/order-daily-overview/header/route-header/RouterHeader.tsx +2 -86
  77. package/src/components/order-daily-overview/header-filters/SelectionFilter.tsx +46 -15
  78. package/src/components/order-daily-overview/index.tsx +23 -4
  79. package/src/components/order-daily-overview/return-after-table/ReturnAfterTable.tsx +6 -1
  80. package/src/components/order-daily-overview/return-after-table/table/OrderTable.tsx +3 -0
  81. package/src/components/order-daily-overview/return-after-table/table-filters/ReturnFilterStore.ts +36 -36
  82. package/src/components/order-daily-overview/return-after-table/table-filters/ReturnOrderFilter.tsx +12 -2
  83. package/src/components/order-daily-overview/return-order-table/ReturnTable.tsx +16 -0
  84. package/src/components/order-daily-overview/return-order-table/return-orders-filters/ReturnOrderTable.tsx +25 -11
  85. package/src/components/order-daily-overview/table/ReturnTable.tsx +8 -4
  86. package/src/components/order-view/DynamicTable.tsx +21 -8
  87. package/src/components/order-view/details-filters/left-side-filters/dropdowns/DropDowns.tsx +1 -1
  88. package/src/components/order-view/details-filters/left-side-filters/dropdowns/OptionsDropDown.tsx +9 -0
  89. package/src/components/order-view/details-filters/right-side-filters/Details.tsx +28 -3
  90. package/src/components/order-view/flags-action-modal/Dropdowns.tsx +2 -0
  91. package/src/components/order-view/general-information/Status.tsx +92 -18
  92. package/src/components/order-view/general-information/index.tsx +2 -2
  93. package/src/components/order-view/generic-table/AuditLogs.tsx +39 -12
  94. package/src/components/order-view/index.tsx +50 -8
  95. package/src/components/order-view/modalsPopup/ModalManager.tsx +1 -1
  96. package/src/components/order-view/notes/AddNote.tsx +95 -65
  97. package/src/components/order-view/notes/order-dropdown/NewReturnDropdown.tsx +8 -10
  98. package/src/components/order-view/notification/FlagTemplate.tsx +21 -10
  99. package/src/components/order-view/notification/OrderTemplate.tsx +192 -41
  100. package/src/components/order-view/notification/ReminderTemplate.tsx +28 -13
  101. package/src/components/order-view/notification/index.tsx +100 -55
  102. package/src/components/order-view/order-actions/actions/add-resources/DocFileUpload.tsx +92 -72
  103. package/src/components/order-view/order-actions/actions/add-resources/index.tsx +27 -10
  104. package/src/components/order-view/order-actions/actions/cancel-order/ReturnAction.tsx +25 -4
  105. package/src/components/order-view/order-actions/actions/cancel-order/ReturnReason.tsx +24 -4
  106. package/src/components/order-view/order-actions/actions/clear-booking-status/ClearBookingStatus.tsx +9 -2
  107. package/src/components/order-view/order-actions/actions/confirm-order/index.tsx +12 -35
  108. package/src/components/order-view/order-actions/actions/confirm-order/tables/NotesTable.tsx +1 -0
  109. package/src/components/order-view/order-actions/actions/create-task-reminder/CreateReminderModal.tsx +88 -30
  110. package/src/components/order-view/order-actions/actions/create-task-reminder/CreateTaskModal.tsx +5 -3
  111. package/src/components/order-view/order-actions/actions/create-task-reminder/TaskModal.tsx +2 -2
  112. package/src/components/order-view/order-actions/actions/force-debrief/BaseChargeConfirmationModal.tsx +94 -0
  113. package/src/components/order-view/order-actions/actions/force-debrief/ForceDebriefModal.tsx +635 -0
  114. package/src/components/order-view/order-actions/actions/force-debrief/Selector.tsx +65 -0
  115. package/src/components/order-view/order-actions/actions/force-debrief/charges/adhoc/index.tsx +94 -0
  116. package/src/components/order-view/order-actions/actions/force-debrief/charges/base-charge/index.tsx +106 -0
  117. package/src/components/order-view/order-actions/actions/force-debrief/charges/collection-add-ons/index.tsx +77 -0
  118. package/src/components/order-view/order-actions/actions/force-debrief/charges/delivery-add-ons/index.tsx +78 -0
  119. package/src/components/order-view/order-actions/actions/force-debrief/charges/disposal-charges/index.tsx +77 -0
  120. package/src/components/order-view/order-actions/actions/force-debrief/charges/order-charges/index.tsx +124 -0
  121. package/src/components/order-view/order-actions/actions/force-debrief/escalation/EscalationCategory.tsx +92 -0
  122. package/src/components/order-view/order-actions/actions/force-debrief/escalation/EscalationLevel.tsx +90 -0
  123. package/src/components/order-view/order-actions/actions/force-debrief/escalation/EscalationReason.tsx +122 -0
  124. package/src/components/order-view/order-actions/actions/force-debrief/escalation/index.tsx +16 -0
  125. package/src/components/order-view/order-actions/actions/force-debrief/notifications/FlagsTemplate.tsx +46 -0
  126. package/src/components/order-view/order-actions/actions/force-debrief/notifications/OrderTemplate.tsx +117 -0
  127. package/src/components/order-view/order-actions/actions/force-debrief/notifications/Tabs.tsx +32 -0
  128. package/src/components/order-view/order-actions/actions/force-debrief/notifications/index.tsx +180 -0
  129. package/src/components/order-view/order-actions/actions/force-debrief/order-info/RadioButtons.tsx +150 -0
  130. package/src/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/CancellationReasonDropdown.tsx +40 -0
  131. package/src/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/FailureReasonDropdown.tsx +108 -0
  132. package/src/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/OrderHoldReasonDropdown.tsx +37 -0
  133. package/src/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/StatusDropdown.tsx +48 -0
  134. package/src/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/ZoneDropdown.tsx +27 -0
  135. package/src/components/order-view/order-actions/actions/force-debrief/order-info/failure-content/index.tsx +187 -0
  136. package/src/components/order-view/order-actions/actions/force-debrief/order-info/index.tsx +55 -0
  137. package/src/components/order-view/order-actions/actions/force-debrief/order-info/success-content/index.tsx +221 -0
  138. package/src/components/order-view/order-actions/actions/force-debrief/styles.tsx +51 -0
  139. package/src/components/order-view/order-actions/actions/hold-order/HoldOrderModal.tsx +2 -0
  140. package/src/components/order-view/order-actions/actions/remove-from-route/RemoveFromRoute.tsx +7 -2
  141. package/src/components/order-view/order-actions/actions/unhold-order/UnholdOrder.tsx +2 -0
  142. package/src/components/order-view/order-actions/index.tsx +19 -10
  143. package/src/components/order-view/order-actions/store.ts +1 -1
  144. package/src/components/order-view/order-actions/types.ts +3 -3
  145. package/src/components/order-view/order-details/expanded-content/customer-section/contact-info/ContactHome.tsx +102 -45
  146. package/src/components/order-view/order-details/expanded-content/customer-section/contact-info/ContactMobile.tsx +93 -34
  147. package/src/components/order-view/order-details/expanded-content/customer-section/contact-info/ContactWork.tsx +88 -31
  148. package/src/components/order-view/order-details/expanded-content/footer/index.tsx +55 -80
  149. package/src/components/order-view/order-details/expanded-content/index.tsx +37 -16
  150. package/src/components/order-view/order-details/expanded-content/instruction-section/index.tsx +1 -1
  151. package/src/components/order-view/order-details/expanded-content/services-section/AssemblyType.tsx +9 -91
  152. package/src/components/order-view/order-details/expanded-content/services-section/OrderServices.tsx +10 -182
  153. package/src/components/order-view/order-details/expanded-content/services-section/ServiceLevel.tsx +3 -4
  154. package/src/components/order-view/order-details/index.tsx +5 -2
  155. package/src/components/order-view/order-resources/expanded-content/index.tsx +2 -2
  156. package/src/components/order-view/products-info/expanded-content/index.tsx +33 -11
  157. package/src/components/order-view/products-info/index.tsx +10 -6
  158. package/src/components/order-view/return-client-products/ProductTable.tsx +12 -2
  159. package/src/components/order-view/return-client-products/product-table/ReturnProductTable.tsx +73 -23
  160. package/src/components/order-view/store.ts +113 -1
  161. package/src/components/order-view/system-event-logs/expanded-content/index.tsx +6 -2
  162. package/src/components/order-view/types.ts +60 -1
  163. package/src/components/order-view/utils.ts +49 -33
  164. package/src/components/order-view/view-reminder/AssigneeDropdown.tsx +85 -26
  165. package/src/components/order-view/view-reminder/ViewReminder.tsx +31 -14
  166. package/src/components/store.ts +2 -2
  167. package/src/index.tsx +23 -5
  168. package/dist/components/order-view/order-actions/actions/log-service-refusal/DeliveryPoint.d.ts +0 -7
  169. package/dist/components/order-view/order-actions/actions/log-service-refusal/Notes.d.ts +0 -7
  170. package/dist/components/order-view/order-actions/actions/log-service-refusal/OrderServices.d.ts +0 -7
  171. package/dist/components/order-view/order-actions/actions/log-service-refusal/helper.d.ts +0 -3
  172. package/dist/components/order-view/order-actions/actions/log-service-refusal/index.d.ts +0 -3
  173. package/src/components/order-view/order-actions/actions/log-service-refusal/DeliveryPoint.tsx +0 -50
  174. package/src/components/order-view/order-actions/actions/log-service-refusal/Notes.tsx +0 -50
  175. package/src/components/order-view/order-actions/actions/log-service-refusal/OrderServices.tsx +0 -57
  176. package/src/components/order-view/order-actions/actions/log-service-refusal/helper.ts +0 -26
  177. package/src/components/order-view/order-actions/actions/log-service-refusal/index.tsx +0 -130
@@ -1,27 +1,21 @@
1
- import React from 'react';
1
+ import React, { useState } from 'react';
2
2
  import styled from 'styled-components';
3
- import {
4
- useAtom,
5
- useReturnAfterOrderData,
6
- useReturnData,
7
- } from '../order-view/store';
8
- import { filtersReducerAtom } from '../order-daily-overview/header-filters/filterStore';
9
- import { ExportButton, useAxios } from '@bjsdistribution/dms-component-library';
3
+ import { useAtom } from '../order-view/store';
4
+ import { useAxios } from '@bjsdistribution/dms-component-library';
10
5
  import { useParams } from 'react-router-dom';
11
- import { filtersReducerReturnAtom } from '../order-daily-overview/return-after-table/table-filters/ReturnFilterStore';
12
- import { notification } from 'antd';
6
+ // import { filtersReducerReturnAtom } from '../order-daily-overview/return-after-table/table-filters/ReturnFilterStore';
7
+ import { notification, Spin } from 'antd';
13
8
  import {
9
+ useClientOutstandingReturnData,
10
+ useReturnConfirmedOrderData,
14
11
  useSelectedClientAfterOrders,
15
12
  useSelectedClientPortOrders,
16
- // useSelectedClientPortOrders,
17
13
  } from '../store';
14
+ import { dateFilterCPReducer } from './DateFilterStore';
18
15
 
19
16
  const ReturnRTFilters = () => {
20
- const [returnData] = useReturnData();
21
- const [pendingState] = useAtom(filtersReducerAtom);
22
- const [state] = useAtom(filtersReducerReturnAtom);
23
- const [returnAfterOrder] = useReturnAfterOrderData();
24
- // const [selectedReturnOrder] = useSelectedClientPortOrders();
17
+ const [outstandingReturnData] = useClientOutstandingReturnData();
18
+ const [returnConfirmedData] = useReturnConfirmedOrderData();
25
19
  const [
26
20
  selectedOrderIds,
27
21
  setSelectedOrderIds,
@@ -31,32 +25,102 @@ const ReturnRTFilters = () => {
31
25
  setSelectedPendingOrderIds,
32
26
  ] = useSelectedClientPortOrders();
33
27
  const { status } = useParams<{ status: any }>();
34
- const { 'x-filters': pendingFilters } = pendingState;
35
-
36
- let moduleInfo: any | null = null;
37
- if (status === 'outstanding_return') {
38
- moduleInfo = {
39
- isExportedData: returnData?.length > 0,
40
- moduleName: 'return',
41
- filter: pendingFilters,
42
- file_type: 'csv',
43
- apiUrlEndPoint: `v1/return/product/pending/`,
44
- reference: 'return_export',
45
- feature_name: 'return',
46
- };
47
- } else if (['scheduled_for_return', 'return_completed'].includes(status)) {
48
- const { 'x-filters': orderFilters } = state;
49
-
50
- moduleInfo = {
51
- isExportedData: returnAfterOrder?.length > 0,
52
- moduleName: 'return',
53
- filter: orderFilters,
54
- file_type: 'csv',
55
- apiUrlEndPoint: `v1/return/orders/`,
56
- reference: 'return_overview_export',
57
- feature_name: 'return',
58
- };
59
- }
28
+ const [spinLoading, setSpinLoading] = useState<boolean>(false);
29
+ const [state] = useAtom(dateFilterCPReducer);
30
+ const { 'x-filters': filters } = state;
31
+
32
+ //export csv
33
+ const { fetchData: callExportCSV } = useAxios<{
34
+ data: any[];
35
+ message: string;
36
+ }>({
37
+ endpoint: `/v1/export/generate/`,
38
+ method: 'POST',
39
+ });
40
+ const { fetchData: downloadFile } = useAxios({
41
+ endpoint: '/v1/export/download/',
42
+ method: 'POST',
43
+ });
44
+ const download: any = (response: any) => {
45
+ downloadFile({
46
+ endPointQuery: `${response?.data?.file_reference}`,
47
+ })
48
+ .then((response: any) => {
49
+ if (response?.data?.url) {
50
+ window.open(response?.data?.url, '_blank');
51
+ }
52
+ setSpinLoading(false);
53
+ })
54
+ .catch((err: any) => {
55
+ notification.error({
56
+ message: 'Failed to download file',
57
+ description: err,
58
+ });
59
+ setSpinLoading(false);
60
+ });
61
+ };
62
+
63
+ const handleExportCSV = () => {
64
+ let moduleInfo: any | null = null;
65
+ const url =
66
+ process.env.REACT_APP_API_PATH ||
67
+ 'https://development.dmsbackend.bjshomedelivery.com';
68
+ if (status === 'outstanding_return') {
69
+ moduleInfo = {
70
+ isExportedData: outstandingReturnData?.length > 0,
71
+ file_type: 'csv',
72
+ moduleName: 'return',
73
+ filter: [
74
+ { field: 'isdeleted', op: '=', value: 0 },
75
+ { field: 'product_return_action_id', op: '=', value: 'RTS' },
76
+ ],
77
+ url: `${url}/v1/return/product/pending/`,
78
+ reference: 'return_outstanding_export',
79
+ feature_name: 'return',
80
+ };
81
+ } else if (['scheduled_for_return', 'return_completed'].includes(status)) {
82
+ moduleInfo = {
83
+ isExportedData: returnConfirmedData?.length > 0,
84
+ file_type: 'csv',
85
+ moduleName: 'return',
86
+ url: `${url}/v1/return/orders/`,
87
+
88
+ reference:
89
+ status === 'scheduled_for_return'
90
+ ? 'return_scheduled_export'
91
+ : 'return_completed_export',
92
+ feature_name: 'return',
93
+ filter: filters,
94
+ };
95
+ }
96
+
97
+ if (moduleInfo?.isExportedData) {
98
+ setSpinLoading(true);
99
+
100
+ callExportCSV({
101
+ payload: {
102
+ file_type: moduleInfo?.file_type,
103
+ url: moduleInfo?.url,
104
+ reference: moduleInfo?.reference,
105
+ feature_name: moduleInfo?.feature_name,
106
+ filter: moduleInfo?.filter,
107
+ },
108
+ })
109
+ .then((res: any) => {
110
+ setTimeout(() => download(res), 10000);
111
+ })
112
+ .catch(err => {
113
+ notification.error({
114
+ message: 'Failed to export csv',
115
+ description: err,
116
+ });
117
+ setSpinLoading(false);
118
+ });
119
+ } else {
120
+ notification.warning({ message: 'No data to Export' });
121
+ }
122
+ };
123
+
60
124
  //Export Manifest
61
125
  const isExportEnabled =
62
126
  status === 'outstanding_return'
@@ -135,7 +199,12 @@ const ReturnRTFilters = () => {
135
199
 
136
200
  return (
137
201
  <StyledBulkFilterCover className="dmsBulkFilter">
138
- <ExportButton moduleInfoModule={moduleInfo} />
202
+ {/* <ExportButton moduleInfoModule={moduleInfo} /> */}
203
+ <ExportCSVButton type="left" onClick={handleExportCSV}>
204
+ <div className="label">
205
+ Export CSV <Spin spinning={spinLoading} />
206
+ </div>
207
+ </ExportCSVButton>
139
208
  <StyledBulkItem
140
209
  onClick={handleExportManifest}
141
210
  style={{
@@ -225,4 +294,32 @@ export const StyledBulkItem = styled.div`
225
294
  padding: 0;
226
295
  }
227
296
  `;
297
+
298
+ export const ExportCSVButton = styled.div<{
299
+ type: 'left' | 'right' | 'middle';
300
+ }>`
301
+ display: flex;
302
+ background: #fff;
303
+ min-height: 40px;
304
+ padding: 8px 12px;
305
+ align-items: center;
306
+ gap: 8px;
307
+ cursor: pointer;
308
+ border-radius: ${props =>
309
+ props?.type === 'left'
310
+ ? '50px 0px 0px 50px'
311
+ : props?.type === 'right'
312
+ ? ' 0px 50px 50px 0px'
313
+ : ''};
314
+ border-right: ${props => (props.type === 'right' ? '' : '1px solid #d0d5dd')};
315
+ .label {
316
+ color: #6a7378;
317
+ text-align: center;
318
+ font-family: Lato;
319
+ font-size: 14px;
320
+ font-style: normal;
321
+ font-weight: 500;
322
+ line-height: 18px;
323
+ }
324
+ `;
228
325
  export default ReturnRTFilters;
@@ -8,163 +8,52 @@ import styled from 'styled-components';
8
8
  import {
9
9
  useAtom,
10
10
  useClientOutstandingReturnData,
11
- useClientPortal,
12
- useEndDate,
13
11
  useSearchText,
14
- useStartDate,
15
12
  useStatsCPCount,
16
13
  } from '../store';
17
- import dayjs from 'dayjs';
18
14
  import { filtersReducerAtom } from '../order-daily-overview/header-filters/filterStore';
19
15
  import { ApiResponse } from '../types';
20
16
  import { javascriptStringDumpToJSON } from '../utils';
21
17
  import { UsePaginationData } from '../order-daily-overview/store/store';
22
18
  import { notification } from 'antd';
23
- import { useParams } from 'react-router-dom';
24
19
  import { returnCountType } from './ReturnStatus';
20
+ import { dateFilterCPReducer } from './DateFilterStore';
25
21
 
26
22
  function ReturnSearchBar() {
27
23
  const [searchText, setSearchText] = useState('');
28
24
  const [debouncedSearchText, setDebouncedSearchText] = useSearchText();
29
- const [modifiedFilters, setModifiedFilters] = useState<any[]>([]);
30
25
  const [, setOutstandingData] = useClientOutstandingReturnData();
31
- const { status } = useParams();
32
- //condition on client view
33
- const [clientPortal] = useClientPortal();
34
26
  const [, setPaginationObject] = UsePaginationData();
35
27
  const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {
36
28
  setSearchText(event.target.value);
37
29
  };
38
- //CP
39
- const [startDate] = useStartDate();
40
- const [endDate] = useEndDate();
41
- const [state] = useAtom(filtersReducerAtom);
30
+ const [state] = useAtom(dateFilterCPReducer);
31
+ const { 'x-filters': filters } = state;
32
+ const [statePagination] = useAtom(filtersReducerAtom);
42
33
  const [, setCount] = useStatsCPCount();
43
- const [modifiedStatsFilters, setModifiedStatsFilters] = useState<any[]>([]);
34
+ const { 'x-pagination': pagination } = statePagination;
44
35
 
45
- const { 'x-pagination': pagination } = state;
36
+ const baseFilters = [
37
+ { field: 'isdeleted', op: '=', value: 0 },
38
+ { field: 'product_return_action_id', op: '=', value: 'RTS' },
39
+ ];
40
+ const cleanedFilters = filters.filter(f => f.field !== 'order_status');
46
41
 
47
- useEffect(() => {
48
- const isClientOutstanding = clientPortal && status === 'outstanding_return';
49
- if (!isClientOutstanding) return;
50
-
51
- setModifiedFilters([
52
- { field: 'isdeleted', op: '=', value: 0 },
53
- { field: 'product_return_action_id', op: '=', value: 'RTS' },
54
- ]);
55
- }, []);
56
-
57
- useEffect(() => {
58
- if (!clientPortal) return;
59
-
60
- const stored = JSON.parse(localStorage.getItem('returnDate') || '{}');
61
-
62
- const sDate = startDate?.isValid?.() ? startDate : dayjs(stored?.startDate);
63
- const eDate = endDate?.isValid?.()
64
- ? endDate
65
- : stored?.endDate
66
- ? dayjs(stored?.endDate)
67
- : null;
68
-
69
- if (!sDate?.isValid?.()) return;
70
-
71
- let dateFilters = [];
72
-
73
- if (eDate && eDate.isValid()) {
74
- dateFilters = [
75
- { field: 'created_at', op: '>=', value: sDate.format('YYYY-MM-DD') },
76
- {
77
- field: 'created_at',
78
- op: '<=',
79
- value: eDate.add(1, 'day').format('YYYY-MM-DD'),
80
- },
81
- ];
82
- } else {
83
- dateFilters = [
84
- {
85
- field: 'created_at',
86
- op: '=',
87
- value: sDate.format('YYYY-MM-DD'),
88
- },
89
- ];
90
- }
91
-
92
- const updatedFilters =
93
- status === 'outstanding_return'
94
- ? [
95
- { field: 'isdeleted', op: '=', value: 0 },
96
- { field: 'product_return_action_id', op: '=', value: 'RTS' },
97
- ...dateFilters,
98
- ]
99
- : dateFilters;
100
-
101
- setModifiedFilters(updatedFilters);
102
- }, [startDate, endDate, status]);
103
-
104
- //For stats
105
-
106
- const getDateFilters = (
107
- startDate: dayjs.Dayjs | null,
108
- endDate: dayjs.Dayjs | null
109
- ) => {
110
- const stored = JSON.parse(localStorage.getItem('returnDate') || '{}');
111
-
112
- const sDate = startDate?.isValid?.() ? startDate : dayjs(stored?.startDate);
113
- const eDate = endDate?.isValid?.()
114
- ? endDate
115
- : stored?.endDate
116
- ? dayjs(stored?.endDate)
117
- : null;
118
-
119
- if (!sDate?.isValid?.()) return [];
120
-
121
- let dateFilters = [];
122
-
123
- if (eDate && eDate.isValid()) {
124
- dateFilters = [
125
- { field: 'created_at', op: '>=', value: sDate.format('YYYY-MM-DD') },
126
- {
127
- field: 'created_at',
128
- op: '<=',
129
- value: eDate.add(1, 'day').format('YYYY-MM-DD'),
130
- },
131
- ];
132
- } else {
133
- dateFilters = [
134
- {
135
- field: 'created_at',
136
- op: '=',
137
- value: sDate.format('YYYY-MM-DD'),
138
- },
139
- ];
140
- }
141
-
142
- return dateFilters;
143
- };
144
-
145
- useEffect(() => {
146
- if (!clientPortal) return;
147
-
148
- const dateFilters = getDateFilters(startDate, endDate);
149
- setModifiedStatsFilters(dateFilters);
150
- }, [startDate, endDate]);
151
-
152
- const {
153
- // loading,
154
- paginationData,
155
- fetchData: getPendingData,
156
- // data: fetchedReturnOrderData,
157
- } = useAxios<ApiResponse>({
42
+ const modifiedFilters = [...baseFilters, ...cleanedFilters];
43
+ const { paginationData, fetchData: getPendingData } = useAxios<ApiResponse>({
158
44
  endpoint: '/v1/return/product/pending/',
159
45
  method: 'GET',
160
46
  filters: modifiedFilters,
161
47
  pagination: pagination,
162
48
  });
163
49
 
50
+ // Debouncing effect
164
51
  useEffect(() => {
165
- if (debouncedSearchText?.length > 1) {
52
+ const trimmedText = debouncedSearchText?.trim() || '';
53
+
54
+ if (trimmedText.length > 2) {
166
55
  getPendingData({
167
- endPointQuery: `?search_term=${debouncedSearchText}`,
56
+ endPointQuery: `?search_term=${trimmedText}`,
168
57
  }).then((response: any) => {
169
58
  if (paginationData) {
170
59
  const formattedPagination = javascriptStringDumpToJSON(
@@ -175,22 +64,18 @@ function ReturnSearchBar() {
175
64
  }
176
65
 
177
66
  if (response?.data?.length > 0) {
178
- setOutstandingData(response?.data);
67
+ setOutstandingData(response.data);
179
68
  } else {
180
69
  setOutstandingData([]);
181
70
  }
182
71
  });
183
- } else if (
184
- debouncedSearchText?.length > 0 &&
185
- debouncedSearchText?.length <= 2
186
- ) {
72
+ } else if (trimmedText.length > 0 && trimmedText.length <= 2) {
187
73
  notification.warning({
188
- message: 'Search Phrase cannot be less than 3 characters',
74
+ message: 'Search phrase cannot be less than 2 characters',
189
75
  });
190
76
  }
191
- }, [debouncedSearchText]);
77
+ }, [debouncedSearchText, JSON.stringify(modifiedFilters)]);
192
78
 
193
- // Debouncing effect
194
79
  useEffect(() => {
195
80
  const handler = setTimeout(() => {
196
81
  setDebouncedSearchText(searchText);
@@ -205,7 +90,6 @@ function ReturnSearchBar() {
205
90
  setSearchText('');
206
91
  }
207
92
  }, [debouncedSearchText]);
208
-
209
93
  //
210
94
  const { fetchData: fetchStatsData } = useAxios<{
211
95
  data: returnCountType[];
@@ -213,28 +97,33 @@ function ReturnSearchBar() {
213
97
  endpoint: `v1/portal/return/stats/`,
214
98
  method: 'GET',
215
99
  pagination: { is_pagination: false },
216
- filters: modifiedStatsFilters,
100
+ filters: [...cleanedFilters],
217
101
  });
218
102
 
219
103
  useEffect(() => {
220
- const isClientOutstanding = clientPortal && status === 'outstanding_return';
221
- if (!isClientOutstanding || debouncedSearchText?.length < 3) return;
104
+ const trimmedText = debouncedSearchText?.trim() || '';
222
105
 
223
- const fetchStats = async () => {
224
- const response = await fetchStatsData({
225
- endPointQuery: `?search_term=${debouncedSearchText}&type=outstanding`,
226
- });
227
- //@ts-ignore
228
- if (response?.data) {
106
+ if (trimmedText.length > 2) {
107
+ const fetchStats = async () => {
108
+ const response = await fetchStatsData({
109
+ endPointQuery: `?search_term=${trimmedText}&type=outstanding`,
110
+ });
229
111
  //@ts-ignore
230
- setCount(response?.data); // Set the count here
231
- } else {
232
- setCount(null); // fallback if no data
233
- }
234
- };
112
+ if (response?.data) {
113
+ //@ts-ignore
114
+ setCount(response?.data);
115
+ } else {
116
+ setCount(null);
117
+ }
118
+ };
235
119
 
236
- fetchStats();
237
- }, [debouncedSearchText, status, clientPortal]);
120
+ fetchStats();
121
+ } else if (trimmedText.length > 0 && trimmedText.length <= 2) {
122
+ notification.warning({
123
+ message: 'Search phrase cannot be less than 3 characters',
124
+ });
125
+ }
126
+ }, [debouncedSearchText, JSON.stringify(modifiedFilters)]);
238
127
 
239
128
  const handleClear = () => {
240
129
  setSearchText('');
@@ -3,21 +3,19 @@ import {
3
3
  device,
4
4
  useAxios,
5
5
  } from '@bjsdistribution/dms-component-library';
6
- import React, { useEffect, useRef, useState } from 'react';
6
+ import React, { useEffect } from 'react';
7
7
  import styled from 'styled-components';
8
8
  import {
9
9
  useActiveCardId,
10
10
  useAtom,
11
11
  useClientPortal,
12
- useEndDate,
13
12
  useSearchAfterText,
14
13
  useSearchText,
15
- useStartDate,
16
14
  useStatsCPCount,
17
15
  } from '../store';
18
16
  import { useNavigate, useParams } from 'react-router-dom';
19
- import { filtersReducerReturnAtom } from '../order-daily-overview/return-after-table/table-filters/ReturnFilterStore';
20
- import dayjs from 'dayjs';
17
+ import { dateFilterCPReducer } from './DateFilterStore';
18
+ // import dayjs from 'dayjs';
21
19
  export type returnCountType = {
22
20
  outstanding_count: number | null;
23
21
  scheduled_count: number;
@@ -31,66 +29,21 @@ const ReturnStatus = () => {
31
29
  completed_count: number;
32
30
  };
33
31
 
34
- // const [count, setCount] = useState<returnCountType[] | undefined>();
35
32
  const [activeCardId, setActiveCardId] = useActiveCardId();
36
- const [, dispatch] = useAtom(filtersReducerReturnAtom);
33
+ const [state, dispatch] = useAtom(dateFilterCPReducer);
34
+ const { 'x-filters': filters } = state;
37
35
  const { status } = useParams();
36
+ const navigate = useNavigate();
38
37
  const [count, setCount] = useStatsCPCount();
39
- const [startDate] = useStartDate();
40
- const [endDate] = useEndDate();
41
38
  const [clientPortal] = useClientPortal();
42
- const [modifiedFilters, setModifiedFilters] = useState<any[]>([]);
43
- const [debouncedSearchText] = useSearchText();
44
- const [debouncedSearchAfterText] = useSearchAfterText();
45
-
46
- const getDateFilters = (
47
- startDate: dayjs.Dayjs | null,
48
- endDate: dayjs.Dayjs | null
49
- ) => {
50
- const stored = JSON.parse(localStorage.getItem('returnDate') || '{}');
51
-
52
- const sDate = startDate?.isValid?.() ? startDate : dayjs(stored?.startDate);
53
- const eDate = endDate?.isValid?.()
54
- ? endDate
55
- : stored?.endDate
56
- ? dayjs(stored?.endDate)
57
- : null;
58
-
59
- if (!sDate?.isValid?.()) return [];
60
-
61
- let dateFilters = [];
62
-
63
- if (eDate && eDate.isValid()) {
64
- dateFilters = [
65
- { field: 'created_at', op: '>=', value: sDate.format('YYYY-MM-DD') },
66
- {
67
- field: 'created_at',
68
- op: '<=',
69
- value: eDate.add(1, 'day').format('YYYY-MM-DD'),
70
- },
71
- ];
72
- } else {
73
- dateFilters = [
74
- {
75
- field: 'created_at',
76
- op: '=',
77
- value: sDate.format('YYYY-MM-DD'),
78
- },
79
- ];
80
- }
81
-
82
- return dateFilters;
83
- };
84
-
85
- useEffect(() => {
86
- if (!clientPortal) return;
87
-
88
- const dateFilters = getDateFilters(startDate, endDate);
89
- setModifiedFilters(dateFilters);
90
- }, [startDate, endDate]);
39
+ const [debouncedSearchText, setOutstandingSearch] = useSearchText();
91
40
 
92
- //stats API
41
+ const cleanedFilters = filters.filter(f => f.field !== 'order_status');
93
42
 
43
+ const [
44
+ debouncedSearchAfterText,
45
+ setDebouncedSearchText,
46
+ ] = useSearchAfterText();
94
47
  const { data: statsData, loading: apiLoading, fetchData } = useAxios<{
95
48
  data: returnCountType[];
96
49
  }>({
@@ -98,33 +51,29 @@ const ReturnStatus = () => {
98
51
  method: 'GET',
99
52
  //@ts-ignore
100
53
  pagination: { is_pagination: false },
101
- filters: modifiedFilters,
54
+ filters: cleanedFilters,
102
55
  });
103
56
 
104
- const prevSearchTextRef = useRef('');
105
- const prevSearchAfterTextRef = useRef('');
106
-
107
57
  useEffect(() => {
108
- const prev = prevSearchTextRef.current;
109
- if (clientPortal && prev && debouncedSearchText === '') {
58
+ if (
59
+ clientPortal &&
60
+ debouncedSearchText === '' &&
61
+ status == 'outstanding_return'
62
+ ) {
110
63
  fetchData();
111
64
  }
112
- prevSearchTextRef.current = debouncedSearchText;
113
- }, [debouncedSearchText, startDate, endDate]);
65
+ }, [debouncedSearchText, debouncedSearchAfterText, JSON.stringify(filters)]);
114
66
 
115
67
  useEffect(() => {
116
- const prev = prevSearchAfterTextRef.current;
117
- if (clientPortal && prev && debouncedSearchAfterText === '') {
68
+ if (
69
+ (clientPortal &&
70
+ debouncedSearchAfterText === '' &&
71
+ status == 'scheduled_for_return') ||
72
+ status == 'return_completed'
73
+ ) {
118
74
  fetchData();
119
75
  }
120
- prevSearchAfterTextRef.current = debouncedSearchAfterText;
121
- }, [debouncedSearchAfterText, startDate, endDate]);
122
-
123
- console.log(debouncedSearchText, 'debouncedSearchText');
124
- console.log(debouncedSearchAfterText, 'debouncedSearchAfterText');
125
- useEffect(() => {
126
- fetchData();
127
- }, [startDate, endDate]);
76
+ }, [debouncedSearchAfterText, debouncedSearchText, JSON.stringify(filters)]);
128
77
 
129
78
  useEffect(() => {
130
79
  if (statsData && statsData?.data) {
@@ -138,33 +87,35 @@ const ReturnStatus = () => {
138
87
  id: 1,
139
88
  icon: 'outstanding_return',
140
89
  status: 'outstanding_return',
141
- count: count?.outstanding_count || 0,
90
+ count: count?.outstanding_count,
142
91
  label: 'Outstanding Return',
143
92
  },
144
93
  {
145
94
  id: 2,
146
95
  icon: 'scheduled_for_return',
147
96
  status: 'scheduled_for_return',
148
- count: count?.scheduled_count || 0,
97
+ count: count?.scheduled_count,
149
98
  label: 'Scheduled For Return',
150
99
  },
151
100
  {
152
101
  id: 3,
153
102
  icon: 'return_completed',
154
103
  status: 'return_completed',
155
- count: count?.completed_count || 0,
104
+ count: count?.completed_count,
156
105
  label: 'Return Completed',
157
106
  },
158
107
  ];
159
- const navigate = useNavigate();
160
- const [, setDebouncedSearchText] = useSearchAfterText();
161
108
 
162
109
  const handleCardClick = (item: any) => {
163
110
  if (activeCardId === item?.id) {
164
111
  return;
165
112
  }
166
113
  setActiveCardId(item?.id);
114
+ //for dev
167
115
  navigate(`/return/${item?.status}`);
116
+ //for local
117
+ //navigate(`/${item?.status}`);
118
+ setOutstandingSearch('');
168
119
  setDebouncedSearchText('');
169
120
  if (item?.status == 'scheduled_for_return') {
170
121
  dispatch({