@bjsdistribution/dms-client-return 0.1.19-dev → 0.1.19-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 (181) 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/OutstandingTable.d.ts +3 -0
  4. package/dist/components/client-portal/ReturnRTFilters.d.ts +3 -0
  5. package/dist/components/client-portal/ReturnStatus.d.ts +5 -0
  6. package/dist/components/client-portal/return-confirm/ConfirmedMain.d.ts +3 -0
  7. package/dist/components/client-portal/return-confirm/ReturnConfirmedTable.d.ts +3 -0
  8. package/dist/components/order-daily-overview/header/route-header/ClientRouterHeader.d.ts +11 -0
  9. package/dist/components/order-daily-overview/table-view/TableStyle.d.ts +4 -4
  10. package/dist/components/order-view/DynamicTable.d.ts +2 -1
  11. package/dist/components/order-view/general-information/Status.d.ts +1 -1
  12. package/dist/components/order-view/general-information/index.d.ts +1 -1
  13. package/dist/components/order-view/index.d.ts +1 -1
  14. package/dist/components/order-view/notes/AddNote.d.ts +1 -0
  15. package/dist/components/order-view/notes/order-dropdown/NewReturnDropdown.d.ts +3 -0
  16. package/dist/components/order-view/order-actions/actions/clear-booking-status/ClearBookingStatus.d.ts +4 -1
  17. package/dist/components/order-view/order-actions/actions/confirm-order/index.d.ts +4 -1
  18. package/dist/components/order-view/order-actions/actions/force-debrief/BaseChargeConfirmationModal.d.ts +7 -0
  19. package/dist/components/order-view/order-actions/actions/force-debrief/ForceDebriefModal.d.ts +11 -0
  20. package/dist/components/order-view/order-actions/actions/force-debrief/Selector.d.ts +11 -0
  21. package/dist/components/order-view/order-actions/actions/force-debrief/charges/adhoc/index.d.ts +3 -0
  22. package/dist/components/order-view/order-actions/actions/force-debrief/charges/base-charge/index.d.ts +8 -0
  23. package/dist/components/order-view/order-actions/actions/force-debrief/charges/collection-add-ons/index.d.ts +7 -0
  24. package/dist/components/order-view/order-actions/actions/force-debrief/charges/delivery-add-ons/index.d.ts +7 -0
  25. package/dist/components/order-view/order-actions/actions/force-debrief/charges/disposal-charges/index.d.ts +7 -0
  26. package/dist/components/order-view/order-actions/actions/force-debrief/charges/order-charges/index.d.ts +7 -0
  27. package/dist/components/order-view/order-actions/actions/force-debrief/escalation/EscalationCategory.d.ts +3 -0
  28. package/dist/components/order-view/order-actions/actions/force-debrief/escalation/EscalationLevel.d.ts +3 -0
  29. package/dist/components/order-view/order-actions/actions/force-debrief/escalation/EscalationReason.d.ts +3 -0
  30. package/dist/components/order-view/order-actions/actions/force-debrief/escalation/index.d.ts +3 -0
  31. package/dist/components/order-view/order-actions/actions/force-debrief/notifications/FlagsTemplate.d.ts +3 -0
  32. package/dist/components/order-view/order-actions/actions/force-debrief/notifications/OrderTemplate.d.ts +3 -0
  33. package/dist/components/order-view/order-actions/actions/force-debrief/notifications/Tabs.d.ts +3 -0
  34. package/dist/components/order-view/order-actions/actions/force-debrief/notifications/index.d.ts +3 -0
  35. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/RadioButtons.d.ts +7 -0
  36. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/CancellationReasonDropdown.d.ts +3 -0
  37. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/FailureReasonDropdown.d.ts +3 -0
  38. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/OrderHoldReasonDropdown.d.ts +3 -0
  39. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/StatusDropdown.d.ts +3 -0
  40. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/ZoneDropdown.d.ts +3 -0
  41. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/failure-content/index.d.ts +3 -0
  42. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/index.d.ts +4 -0
  43. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/success-content/index.d.ts +3 -0
  44. package/dist/components/order-view/order-actions/actions/force-debrief/styles.d.ts +8 -0
  45. package/dist/components/order-view/order-actions/actions/hold-order/HoldOrderModal.d.ts +1 -0
  46. package/dist/components/order-view/order-actions/actions/remove-from-route/RemoveFromRoute.d.ts +1 -1
  47. package/dist/components/order-view/order-actions/actions/unhold-order/UnholdOrder.d.ts +1 -0
  48. package/dist/components/order-view/order-actions/types.d.ts +3 -3
  49. package/dist/components/order-view/order-details/expanded-content/index.d.ts +1 -1
  50. package/dist/components/order-view/order-details/index.d.ts +1 -1
  51. package/dist/components/order-view/order-resources/expanded-content/index.d.ts +1 -1
  52. package/dist/components/order-view/products-info/expanded-content/index.d.ts +6 -1
  53. package/dist/components/order-view/products-info/index.d.ts +1 -1
  54. package/dist/components/order-view/return-client-products/ProductTable.d.ts +6 -1
  55. package/dist/components/order-view/return-client-products/product-table/ReturnProductTable.d.ts +6 -1
  56. package/dist/components/order-view/store.d.ts +15 -3
  57. package/dist/components/order-view/system-event-logs/expanded-content/index.d.ts +1 -1
  58. package/dist/components/order-view/types.d.ts +55 -1
  59. package/dist/components/order-view/utils.d.ts +11 -2
  60. package/dist/components/store.d.ts +6 -2
  61. package/dist/dms-client-return.cjs.development.js +9140 -5835
  62. package/dist/dms-client-return.cjs.development.js.map +1 -1
  63. package/dist/dms-client-return.cjs.production.min.js +1 -1
  64. package/dist/dms-client-return.cjs.production.min.js.map +1 -1
  65. package/dist/dms-client-return.esm.js +7617 -4312
  66. package/dist/dms-client-return.esm.js.map +1 -1
  67. package/package.json +6 -4
  68. package/src/assets/icons/ActionIcon.tsx +1 -1
  69. package/src/assets/icons/ArrowDownIcon.tsx +2 -2
  70. package/src/components/client-portal/DateFilterStore.ts +139 -0
  71. package/src/components/client-portal/OutstandingTable.tsx +356 -0
  72. package/src/components/client-portal/ReturnAfterSearchBar.tsx +77 -17
  73. package/src/components/client-portal/ReturnOverview.tsx +15 -6
  74. package/src/components/client-portal/ReturnRTFilters.tsx +196 -80
  75. package/src/components/client-portal/ReturnSearchBar.tsx +64 -94
  76. package/src/components/client-portal/ReturnStatus.tsx +50 -66
  77. package/src/components/client-portal/return-confirm/ConfirmedMain.tsx +224 -0
  78. package/src/components/client-portal/return-confirm/ReturnConfirmedTable.tsx +327 -0
  79. package/src/components/order-daily-overview/header/route-header/ClientRouterHeader.tsx +166 -0
  80. package/src/components/order-daily-overview/header/route-header/RouterHeader.tsx +2 -86
  81. package/src/components/order-daily-overview/header-filters/SelectionFilter.tsx +46 -15
  82. package/src/components/order-daily-overview/index.tsx +23 -4
  83. package/src/components/order-daily-overview/return-after-table/ReturnAfterTable.tsx +23 -38
  84. package/src/components/order-daily-overview/return-after-table/table/OrderTable.tsx +21 -24
  85. package/src/components/order-daily-overview/return-after-table/table-filters/ReturnFilterStore.ts +36 -36
  86. package/src/components/order-daily-overview/return-after-table/table-filters/ReturnOrderFilter.tsx +12 -2
  87. package/src/components/order-daily-overview/return-order-table/ReturnTable.tsx +16 -0
  88. package/src/components/order-daily-overview/return-order-table/return-orders-filters/ReturnOrderTable.tsx +58 -155
  89. package/src/components/order-daily-overview/table/ReturnTable.tsx +8 -4
  90. package/src/components/order-view/DynamicTable.tsx +21 -8
  91. package/src/components/order-view/details-filters/left-side-filters/dropdowns/DropDowns.tsx +1 -1
  92. package/src/components/order-view/details-filters/left-side-filters/dropdowns/OptionsDropDown.tsx +9 -0
  93. package/src/components/order-view/details-filters/right-side-filters/Details.tsx +28 -3
  94. package/src/components/order-view/flags-action-modal/Dropdowns.tsx +2 -0
  95. package/src/components/order-view/general-information/Status.tsx +92 -18
  96. package/src/components/order-view/general-information/index.tsx +2 -2
  97. package/src/components/order-view/generic-table/AuditLogs.tsx +39 -12
  98. package/src/components/order-view/index.tsx +50 -8
  99. package/src/components/order-view/modalsPopup/ModalManager.tsx +1 -1
  100. package/src/components/order-view/notes/AddNote.tsx +95 -65
  101. package/src/components/order-view/notes/order-dropdown/NewReturnDropdown.tsx +8 -10
  102. package/src/components/order-view/notification/FlagTemplate.tsx +21 -10
  103. package/src/components/order-view/notification/OrderTemplate.tsx +192 -41
  104. package/src/components/order-view/notification/ReminderTemplate.tsx +28 -13
  105. package/src/components/order-view/notification/index.tsx +100 -55
  106. package/src/components/order-view/order-actions/actions/add-resources/DocFileUpload.tsx +92 -72
  107. package/src/components/order-view/order-actions/actions/add-resources/index.tsx +27 -10
  108. package/src/components/order-view/order-actions/actions/cancel-order/ReturnAction.tsx +25 -4
  109. package/src/components/order-view/order-actions/actions/cancel-order/ReturnReason.tsx +24 -4
  110. package/src/components/order-view/order-actions/actions/clear-booking-status/ClearBookingStatus.tsx +9 -2
  111. package/src/components/order-view/order-actions/actions/confirm-order/index.tsx +12 -35
  112. package/src/components/order-view/order-actions/actions/confirm-order/tables/NotesTable.tsx +1 -0
  113. package/src/components/order-view/order-actions/actions/create-task-reminder/CreateReminderModal.tsx +88 -30
  114. package/src/components/order-view/order-actions/actions/create-task-reminder/CreateTaskModal.tsx +5 -3
  115. package/src/components/order-view/order-actions/actions/create-task-reminder/TaskModal.tsx +2 -2
  116. package/src/components/order-view/order-actions/actions/force-debrief/BaseChargeConfirmationModal.tsx +94 -0
  117. package/src/components/order-view/order-actions/actions/force-debrief/ForceDebriefModal.tsx +635 -0
  118. package/src/components/order-view/order-actions/actions/force-debrief/Selector.tsx +65 -0
  119. package/src/components/order-view/order-actions/actions/force-debrief/charges/adhoc/index.tsx +94 -0
  120. package/src/components/order-view/order-actions/actions/force-debrief/charges/base-charge/index.tsx +106 -0
  121. package/src/components/order-view/order-actions/actions/force-debrief/charges/collection-add-ons/index.tsx +77 -0
  122. package/src/components/order-view/order-actions/actions/force-debrief/charges/delivery-add-ons/index.tsx +78 -0
  123. package/src/components/order-view/order-actions/actions/force-debrief/charges/disposal-charges/index.tsx +77 -0
  124. package/src/components/order-view/order-actions/actions/force-debrief/charges/order-charges/index.tsx +124 -0
  125. package/src/components/order-view/order-actions/actions/force-debrief/escalation/EscalationCategory.tsx +92 -0
  126. package/src/components/order-view/order-actions/actions/force-debrief/escalation/EscalationLevel.tsx +90 -0
  127. package/src/components/order-view/order-actions/actions/force-debrief/escalation/EscalationReason.tsx +122 -0
  128. package/src/components/order-view/order-actions/actions/force-debrief/escalation/index.tsx +16 -0
  129. package/src/components/order-view/order-actions/actions/force-debrief/notifications/FlagsTemplate.tsx +46 -0
  130. package/src/components/order-view/order-actions/actions/force-debrief/notifications/OrderTemplate.tsx +117 -0
  131. package/src/components/order-view/order-actions/actions/force-debrief/notifications/Tabs.tsx +32 -0
  132. package/src/components/order-view/order-actions/actions/force-debrief/notifications/index.tsx +180 -0
  133. package/src/components/order-view/order-actions/actions/force-debrief/order-info/RadioButtons.tsx +150 -0
  134. package/src/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/CancellationReasonDropdown.tsx +40 -0
  135. package/src/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/FailureReasonDropdown.tsx +108 -0
  136. package/src/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/OrderHoldReasonDropdown.tsx +37 -0
  137. package/src/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/StatusDropdown.tsx +48 -0
  138. package/src/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/ZoneDropdown.tsx +27 -0
  139. package/src/components/order-view/order-actions/actions/force-debrief/order-info/failure-content/index.tsx +187 -0
  140. package/src/components/order-view/order-actions/actions/force-debrief/order-info/index.tsx +55 -0
  141. package/src/components/order-view/order-actions/actions/force-debrief/order-info/success-content/index.tsx +221 -0
  142. package/src/components/order-view/order-actions/actions/force-debrief/styles.tsx +51 -0
  143. package/src/components/order-view/order-actions/actions/hold-order/HoldOrderModal.tsx +2 -0
  144. package/src/components/order-view/order-actions/actions/remove-from-route/RemoveFromRoute.tsx +7 -2
  145. package/src/components/order-view/order-actions/actions/unhold-order/UnholdOrder.tsx +2 -0
  146. package/src/components/order-view/order-actions/index.tsx +19 -10
  147. package/src/components/order-view/order-actions/store.ts +1 -1
  148. package/src/components/order-view/order-actions/types.ts +3 -3
  149. package/src/components/order-view/order-details/expanded-content/customer-section/contact-info/ContactHome.tsx +102 -45
  150. package/src/components/order-view/order-details/expanded-content/customer-section/contact-info/ContactMobile.tsx +93 -34
  151. package/src/components/order-view/order-details/expanded-content/customer-section/contact-info/ContactWork.tsx +88 -31
  152. package/src/components/order-view/order-details/expanded-content/footer/index.tsx +55 -80
  153. package/src/components/order-view/order-details/expanded-content/index.tsx +37 -16
  154. package/src/components/order-view/order-details/expanded-content/instruction-section/index.tsx +1 -1
  155. package/src/components/order-view/order-details/expanded-content/services-section/AssemblyType.tsx +9 -91
  156. package/src/components/order-view/order-details/expanded-content/services-section/OrderServices.tsx +10 -182
  157. package/src/components/order-view/order-details/expanded-content/services-section/ServiceLevel.tsx +3 -4
  158. package/src/components/order-view/order-details/index.tsx +5 -2
  159. package/src/components/order-view/order-resources/expanded-content/index.tsx +2 -2
  160. package/src/components/order-view/products-info/expanded-content/index.tsx +33 -11
  161. package/src/components/order-view/products-info/index.tsx +10 -6
  162. package/src/components/order-view/return-client-products/ProductTable.tsx +12 -2
  163. package/src/components/order-view/return-client-products/product-table/ReturnProductTable.tsx +73 -23
  164. package/src/components/order-view/store.ts +113 -1
  165. package/src/components/order-view/system-event-logs/expanded-content/index.tsx +6 -2
  166. package/src/components/order-view/types.ts +60 -1
  167. package/src/components/order-view/utils.ts +49 -33
  168. package/src/components/order-view/view-reminder/AssigneeDropdown.tsx +85 -26
  169. package/src/components/order-view/view-reminder/ViewReminder.tsx +31 -14
  170. package/src/components/store.ts +25 -2
  171. package/src/index.tsx +23 -5
  172. package/dist/components/order-view/order-actions/actions/log-service-refusal/DeliveryPoint.d.ts +0 -7
  173. package/dist/components/order-view/order-actions/actions/log-service-refusal/Notes.d.ts +0 -7
  174. package/dist/components/order-view/order-actions/actions/log-service-refusal/OrderServices.d.ts +0 -7
  175. package/dist/components/order-view/order-actions/actions/log-service-refusal/helper.d.ts +0 -3
  176. package/dist/components/order-view/order-actions/actions/log-service-refusal/index.d.ts +0 -3
  177. package/src/components/order-view/order-actions/actions/log-service-refusal/DeliveryPoint.tsx +0 -50
  178. package/src/components/order-view/order-actions/actions/log-service-refusal/Notes.tsx +0 -50
  179. package/src/components/order-view/order-actions/actions/log-service-refusal/OrderServices.tsx +0 -57
  180. package/src/components/order-view/order-actions/actions/log-service-refusal/helper.ts +0 -26
  181. package/src/components/order-view/order-actions/actions/log-service-refusal/index.tsx +0 -130
@@ -5,38 +5,50 @@ import {
5
5
  } from '@bjsdistribution/dms-component-library';
6
6
  import React, { useEffect, useState } from 'react';
7
7
  import styled from 'styled-components';
8
- import { useAtom, useSearchAfterText } from '../store';
8
+ import {
9
+ useAtom,
10
+ useClientPortal,
11
+ useReturnConfirmedOrderData,
12
+ useSearchAfterText,
13
+ useStatsCPCount,
14
+ } from '../store';
9
15
 
10
16
  import { ApiResponse } from '../types';
11
17
  import { javascriptStringDumpToJSON } from '../utils';
12
18
  import { UsePaginationData } from '../order-daily-overview/store/store';
13
19
  import { notification } from 'antd';
14
- import { useReturnAfterOrderData } from '../order-view/store';
15
20
  import { filtersReducerReturnAtom } from '../order-daily-overview/return-after-table/table-filters/ReturnFilterStore';
21
+ import { returnCountType } from './ReturnStatus';
22
+ import { useParams } from 'react-router-dom';
23
+ import { dateFilterCPReducer } from './DateFilterStore';
16
24
 
17
25
  function ReturnAfterSearchBar() {
18
26
  const [searchText, setSearchText] = useState('');
19
27
  const [debouncedSearchText, setDebouncedSearchText] = useSearchAfterText();
20
- const [, setReturnOrderData] = useReturnAfterOrderData();
21
- //condition on client view
28
+ const [, setReturnConfirmedData] = useReturnConfirmedOrderData();
22
29
  const [, setPaginationObject] = UsePaginationData();
30
+
31
+ const [statePagination] = useAtom(filtersReducerReturnAtom);
32
+ const { 'x-pagination': pagination } = statePagination;
33
+ const [, setCount] = useStatsCPCount();
34
+ const [clientPortal] = useClientPortal();
35
+ const [state] = useAtom(dateFilterCPReducer);
36
+ const { 'x-filters': filters } = state;
37
+ const { status } = useParams();
38
+
23
39
  const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {
24
40
  setSearchText(event.target.value);
25
41
  };
26
- //CP
27
-
28
- const [state] = useAtom(filtersReducerReturnAtom);
29
- const { 'x-filters': filters, 'x-pagination': pagination } = state;
30
42
 
31
43
  const { paginationData, fetchData: returnAfterCall } = useAxios<ApiResponse>({
32
44
  endpoint: '/v1/return/orders/',
33
45
  method: 'GET',
34
- filters: filters && filters?.length > 0 ? filters : undefined,
46
+ filters: filters,
35
47
  pagination: pagination,
36
48
  });
37
49
 
38
50
  useEffect(() => {
39
- if (debouncedSearchText.length > 1) {
51
+ if (debouncedSearchText?.length > 2) {
40
52
  returnAfterCall({
41
53
  endPointQuery: `?search_term=${debouncedSearchText}`,
42
54
  }).then((response: any) => {
@@ -48,20 +60,21 @@ function ReturnAfterSearchBar() {
48
60
  setPaginationObject(rest);
49
61
  }
50
62
  if (response?.data) {
51
- setReturnOrderData(response?.data);
63
+ setReturnConfirmedData(response?.data);
52
64
  } else {
53
- setReturnOrderData([]);
65
+ setReturnConfirmedData([]);
54
66
  }
55
67
  });
56
68
  } else if (
57
- debouncedSearchText.length > 0 &&
58
- debouncedSearchText.length <= 2
69
+ debouncedSearchText?.length > 0 &&
70
+ debouncedSearchText?.length <= 2
59
71
  ) {
60
72
  notification.warning({
61
73
  message: 'Search Phrase cannot be less than 3 characters',
62
74
  });
63
75
  }
64
- }, [debouncedSearchText]);
76
+ }, [debouncedSearchText, JSON.stringify(filters)]);
77
+
65
78
  // Debouncing effect
66
79
  useEffect(() => {
67
80
  const handler = setTimeout(() => {
@@ -73,14 +86,61 @@ function ReturnAfterSearchBar() {
73
86
  }, [searchText]);
74
87
 
75
88
  useEffect(() => {
76
- if (debouncedSearchText.length === 0) {
89
+ if (debouncedSearchText?.length === 0) {
77
90
  setSearchText('');
78
91
  }
79
92
  }, [debouncedSearchText]);
93
+ const cleanedFilters = filters.filter(f => f.field !== 'order_status');
94
+
95
+ const { fetchData: fetchStatsData } = useAxios<{
96
+ data: returnCountType[];
97
+ }>({
98
+ endpoint: `v1/portal/return/stats/`,
99
+ method: 'GET',
100
+ pagination: { is_pagination: false },
101
+ filters: [...cleanedFilters],
102
+ });
103
+
104
+ useEffect(() => {
105
+ const validStatuses = ['scheduled_for_return', 'return_completed'];
106
+ const isClientView = clientPortal && validStatuses.includes(status || '');
107
+
108
+ if (!isClientView) return;
109
+
110
+ const trimmedText = debouncedSearchText?.trim() || '';
111
+ if (trimmedText.length > 0 && trimmedText.length <= 2) {
112
+ notification.warning({
113
+ message: 'Search phrase cannot be less than 2 characters',
114
+ });
115
+ return;
116
+ }
117
+ if (trimmedText.length === 0) return;
118
+ const statusTypeMap: Record<string, string> = {
119
+ scheduled_for_return: 'scheduled',
120
+ return_completed: 'complete',
121
+ };
122
+
123
+ const type = statusTypeMap[status as keyof typeof statusTypeMap];
124
+
125
+ fetchStatsData({
126
+ endPointQuery: `?search_term=${trimmedText}&type=${type}`,
127
+ })
128
+ .then((response: any) => {
129
+ if (response?.data) {
130
+ console.log('inside response', response);
131
+ setCount(response.data);
132
+ } else {
133
+ setCount(null);
134
+ }
135
+ })
136
+ .catch((error: any) => {
137
+ console.error('Error fetching stats:', error);
138
+ setCount(null);
139
+ });
140
+ }, [debouncedSearchText, status]);
80
141
 
81
142
  const handleClear = () => {
82
143
  setSearchText('');
83
- setDebouncedSearchText('');
84
144
  };
85
145
  return (
86
146
  <Search>
@@ -2,8 +2,6 @@ import React, { useState } from 'react';
2
2
  import HeaderFilter from '../order-daily-overview/header-filters/HeaderFilter';
3
3
  import styled from 'styled-components';
4
4
  import ReturnFilter from '../order-daily-overview/return-order-table/return-orders-filters/ReturnFilter';
5
- import ReturnOrderTable from '../order-daily-overview/return-order-table/return-orders-filters/ReturnOrderTable';
6
- import ReturnAfterTable from '../order-daily-overview/return-after-table/ReturnAfterTable';
7
5
  import Pagination from '../order-daily-overview/table-view/Pagination';
8
6
  import {
9
7
  useItemsPerPage,
@@ -11,7 +9,9 @@ import {
11
9
  } from '../order-daily-overview/store/store';
12
10
  import { useClientPortal } from '../store';
13
11
  import { useParams } from 'react-router-dom';
14
- import RouterHeader from '../order-daily-overview/header/route-header/RouterHeader';
12
+ import OutstandingTable from './OutstandingTable';
13
+ import ConfirmedMain from './return-confirm/ConfirmedMain';
14
+ import ClientRouterHeader from '../order-daily-overview/header/route-header/ClientRouterHeader';
15
15
 
16
16
  const ReturnOverview = () => {
17
17
  const [paginationObj] = UsePaginationData();
@@ -32,9 +32,18 @@ const ReturnOverview = () => {
32
32
  const shouldShowReturnAfterTable =
33
33
  (clientPortal && status === 'scheduled_for_return') ||
34
34
  (clientPortal && status === 'return_completed');
35
+
36
+ const validStatuses = [
37
+ 'outstanding_return',
38
+ 'scheduled_for_return',
39
+ 'return_completed',
40
+ ];
41
+
35
42
  return (
36
43
  <>
37
- <RouterHeader />
44
+ {clientPortal &&
45
+ typeof status === 'string' &&
46
+ validStatuses.includes(status) && <ClientRouterHeader />}
38
47
  <div>
39
48
  <DashBoardWrapper>
40
49
  <div className="Tableconatiner">
@@ -43,7 +52,7 @@ const ReturnOverview = () => {
43
52
  <ReturnFilter />
44
53
  {clientPortal && status === 'outstanding_return' && (
45
54
  <>
46
- <ReturnOrderTable />
55
+ <OutstandingTable />
47
56
  {total > 0 && (
48
57
  <Pagination
49
58
  currentPage={page}
@@ -57,7 +66,7 @@ const ReturnOverview = () => {
57
66
  )}
58
67
  {shouldShowReturnAfterTable && (
59
68
  <>
60
- <ReturnAfterTable />
69
+ <ConfirmedMain />
61
70
  </>
62
71
  )}
63
72
  </Container>
@@ -1,55 +1,133 @@
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';
13
- import { useSelectedClientPortOrders } from '../store';
6
+ // import { filtersReducerReturnAtom } from '../order-daily-overview/return-after-table/table-filters/ReturnFilterStore';
7
+ import { notification, Spin } from 'antd';
8
+ import {
9
+ useClientOutstandingReturnData,
10
+ useReturnConfirmedOrderData,
11
+ useSelectedClientAfterOrders,
12
+ useSelectedClientPortOrders,
13
+ } from '../store';
14
+ import { dateFilterCPReducer } from './DateFilterStore';
14
15
 
15
16
  const ReturnRTFilters = () => {
16
- const [returnData] = useReturnData();
17
- const [pendingState] = useAtom(filtersReducerAtom);
18
- const [state] = useAtom(filtersReducerReturnAtom);
19
- const [returnAfterOrder] = useReturnAfterOrderData();
20
- const [selectedReturnOrder] = useSelectedClientPortOrders();
21
-
17
+ const [outstandingReturnData] = useClientOutstandingReturnData();
18
+ const [returnConfirmedData] = useReturnConfirmedOrderData();
19
+ const [
20
+ selectedOrderIds,
21
+ setSelectedOrderIds,
22
+ ] = useSelectedClientAfterOrders();
23
+ const [
24
+ selectedPendingOrderIds,
25
+ setSelectedPendingOrderIds,
26
+ ] = useSelectedClientPortOrders();
22
27
  const { status } = useParams<{ status: any }>();
23
- const { 'x-filters': pendingFilters } = pendingState;
24
-
25
- let moduleInfo: any | null = null;
26
- if (status === 'outstanding_return') {
27
- moduleInfo = {
28
- isExportedData: returnData?.length > 0,
29
- moduleName: 'return',
30
- filter: pendingFilters,
31
- file_type: 'csv',
32
- apiUrlEndPoint: `v1/return/product/pending/`,
33
- reference: 'return_export',
34
- feature_name: 'return',
35
- };
36
- } else if (['scheduled_for_return', 'return_completed'].includes(status)) {
37
- const { 'x-filters': orderFilters } = state;
38
-
39
- moduleInfo = {
40
- isExportedData: returnAfterOrder?.length > 0,
41
- moduleName: 'return',
42
- filter: orderFilters,
43
- file_type: 'csv',
44
- apiUrlEndPoint: `v1/return/orders/`,
45
- reference: 'return_overview_export',
46
- feature_name: 'return',
47
- };
48
- }
49
- // console.log(selectedReturnOrder, 'selectedReturnOrder');
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
+
50
124
  //Export Manifest
51
- const onlyIds = selectedReturnOrder?.map(item => item.id);
52
- const isExportEnabled = onlyIds?.length > 0;
125
+ const isExportEnabled =
126
+ status === 'outstanding_return'
127
+ ? selectedPendingOrderIds?.length > 0
128
+ : status === 'scheduled_for_return' || status === 'return_completed'
129
+ ? selectedOrderIds?.length > 0
130
+ : false;
53
131
  const { fetchData: callExportApi } = useAxios<{
54
132
  data: any[];
55
133
  message: string;
@@ -58,12 +136,19 @@ const ReturnRTFilters = () => {
58
136
  method: 'POST',
59
137
  });
60
138
 
61
- const handleExport = async () => {
139
+ const handleExportManifest = async () => {
62
140
  if (!isExportEnabled) return;
63
141
 
142
+ const exportOrderIds =
143
+ status === 'outstanding_return'
144
+ ? selectedPendingOrderIds
145
+ : status === 'scheduled_for_return' || status === 'return_completed'
146
+ ? selectedOrderIds
147
+ : [];
148
+
64
149
  try {
65
150
  const response = (await callExportApi({
66
- payload: { order_ids: onlyIds },
151
+ payload: { order_ids: exportOrderIds },
67
152
  })) as {
68
153
  code: number | null;
69
154
  error?: string | null;
@@ -78,38 +163,16 @@ const ReturnRTFilters = () => {
78
163
  message: 'Success',
79
164
  description: response?.message || 'Export completed.',
80
165
  });
166
+ window.open(response?.data?.url, '_blank');
81
167
 
82
- // setSelectedIds([]);
83
- const resourceUrl = response.data.url;
84
- const downloadResponse = await fetch(resourceUrl);
85
-
86
- if (!downloadResponse.ok) {
87
- throw new Error('Failed to fetch the export file.');
168
+ if (status === 'outstanding_return') {
169
+ setSelectedPendingOrderIds([]);
170
+ } else if (
171
+ status === 'scheduled_for_return' ||
172
+ status === 'return_completed'
173
+ ) {
174
+ setSelectedOrderIds([]);
88
175
  }
89
-
90
- const blob = await downloadResponse.blob();
91
-
92
- const urlObject = window.URL.createObjectURL(blob);
93
- const link = document.createElement('a');
94
- link.href = urlObject;
95
-
96
- // You can customize the filename or extract it from headers
97
- const contentDisposition = downloadResponse.headers.get(
98
- 'Content-Disposition'
99
- );
100
- const filenameMatch = contentDisposition?.match(/filename="?(.+)"?/);
101
- const filename = filenameMatch?.[1] || 'download.csv';
102
-
103
- link.download = filename;
104
- document.body.appendChild(link);
105
- link.click();
106
- document.body.removeChild(link);
107
- window.URL.revokeObjectURL(urlObject);
108
-
109
- notification.success({
110
- message: 'Downloaded',
111
- description: 'File downloaded successfully.',
112
- });
113
176
  } else {
114
177
  notification.error({
115
178
  message: 'No File URL',
@@ -122,13 +185,33 @@ const ReturnRTFilters = () => {
122
185
  message: 'Export Failed',
123
186
  description: 'Something went wrong during export.',
124
187
  });
188
+
189
+ if (status === 'outstanding_return') {
190
+ setSelectedPendingOrderIds([]);
191
+ } else if (
192
+ status === 'scheduled_for_return' ||
193
+ status === 'return_completed'
194
+ ) {
195
+ setSelectedOrderIds([]);
196
+ }
125
197
  }
126
198
  };
127
199
 
128
200
  return (
129
201
  <StyledBulkFilterCover className="dmsBulkFilter">
130
- <ExportButton moduleInfoModule={moduleInfo} />
131
- <StyledBulkItem onClick={handleExport}>
202
+ {/* <ExportButton moduleInfoModule={moduleInfo} /> */}
203
+ <ExportCSVButton type="left" onClick={handleExportCSV}>
204
+ <div className="label">
205
+ Export CSV <Spin spinning={spinLoading} />
206
+ </div>
207
+ </ExportCSVButton>
208
+ <StyledBulkItem
209
+ onClick={handleExportManifest}
210
+ style={{
211
+ pointerEvents: isExportEnabled ? 'auto' : 'none',
212
+ opacity: isExportEnabled ? 1 : 0.5,
213
+ }}
214
+ >
132
215
  <Text>Export Manifest</Text>
133
216
  </StyledBulkItem>
134
217
  </StyledBulkFilterCover>
@@ -174,6 +257,11 @@ export const StyledBulkItem = styled.div`
174
257
  }
175
258
  }
176
259
  }
260
+ &:hover:not(:disabled) {
261
+ background: #f0f0f0;
262
+ cursor: pointer;
263
+ }
264
+
177
265
  @media screen and (max-width: 1030px) {
178
266
  padding: 6px 4px;
179
267
  }
@@ -206,4 +294,32 @@ export const StyledBulkItem = styled.div`
206
294
  padding: 0;
207
295
  }
208
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
+ `;
209
325
  export default ReturnRTFilters;