@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.
- package/dist/common/date-picker/header/ClearDate.d.ts +1 -1
- package/dist/components/client-portal/DateFilterStore.d.ts +15 -0
- package/dist/components/client-portal/OutstandingTable.d.ts +3 -0
- package/dist/components/client-portal/ReturnRTFilters.d.ts +3 -0
- package/dist/components/client-portal/ReturnStatus.d.ts +5 -0
- package/dist/components/client-portal/return-confirm/ConfirmedMain.d.ts +3 -0
- package/dist/components/client-portal/return-confirm/ReturnConfirmedTable.d.ts +3 -0
- package/dist/components/order-daily-overview/header/route-header/ClientRouterHeader.d.ts +11 -0
- package/dist/components/order-daily-overview/table-view/TableStyle.d.ts +4 -4
- package/dist/components/order-view/DynamicTable.d.ts +2 -1
- package/dist/components/order-view/general-information/Status.d.ts +1 -1
- package/dist/components/order-view/general-information/index.d.ts +1 -1
- package/dist/components/order-view/index.d.ts +1 -1
- package/dist/components/order-view/notes/AddNote.d.ts +1 -0
- package/dist/components/order-view/notes/order-dropdown/NewReturnDropdown.d.ts +3 -0
- package/dist/components/order-view/order-actions/actions/clear-booking-status/ClearBookingStatus.d.ts +4 -1
- package/dist/components/order-view/order-actions/actions/confirm-order/index.d.ts +4 -1
- package/dist/components/order-view/order-actions/actions/force-debrief/BaseChargeConfirmationModal.d.ts +7 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/ForceDebriefModal.d.ts +11 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/Selector.d.ts +11 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/charges/adhoc/index.d.ts +3 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/charges/base-charge/index.d.ts +8 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/charges/collection-add-ons/index.d.ts +7 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/charges/delivery-add-ons/index.d.ts +7 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/charges/disposal-charges/index.d.ts +7 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/charges/order-charges/index.d.ts +7 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/escalation/EscalationCategory.d.ts +3 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/escalation/EscalationLevel.d.ts +3 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/escalation/EscalationReason.d.ts +3 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/escalation/index.d.ts +3 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/notifications/FlagsTemplate.d.ts +3 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/notifications/OrderTemplate.d.ts +3 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/notifications/Tabs.d.ts +3 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/notifications/index.d.ts +3 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/order-info/RadioButtons.d.ts +7 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/CancellationReasonDropdown.d.ts +3 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/FailureReasonDropdown.d.ts +3 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/OrderHoldReasonDropdown.d.ts +3 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/StatusDropdown.d.ts +3 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/ZoneDropdown.d.ts +3 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/order-info/failure-content/index.d.ts +3 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/order-info/index.d.ts +4 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/order-info/success-content/index.d.ts +3 -0
- package/dist/components/order-view/order-actions/actions/force-debrief/styles.d.ts +8 -0
- package/dist/components/order-view/order-actions/actions/hold-order/HoldOrderModal.d.ts +1 -0
- package/dist/components/order-view/order-actions/actions/remove-from-route/RemoveFromRoute.d.ts +1 -1
- package/dist/components/order-view/order-actions/actions/unhold-order/UnholdOrder.d.ts +1 -0
- package/dist/components/order-view/order-actions/types.d.ts +3 -3
- package/dist/components/order-view/order-details/expanded-content/index.d.ts +1 -1
- package/dist/components/order-view/order-details/index.d.ts +1 -1
- package/dist/components/order-view/order-resources/expanded-content/index.d.ts +1 -1
- package/dist/components/order-view/products-info/expanded-content/index.d.ts +6 -1
- package/dist/components/order-view/products-info/index.d.ts +1 -1
- package/dist/components/order-view/return-client-products/ProductTable.d.ts +6 -1
- package/dist/components/order-view/return-client-products/product-table/ReturnProductTable.d.ts +6 -1
- package/dist/components/order-view/store.d.ts +15 -3
- package/dist/components/order-view/system-event-logs/expanded-content/index.d.ts +1 -1
- package/dist/components/order-view/types.d.ts +55 -1
- package/dist/components/order-view/utils.d.ts +11 -2
- package/dist/components/store.d.ts +6 -2
- package/dist/dms-client-return.cjs.development.js +9140 -5835
- package/dist/dms-client-return.cjs.development.js.map +1 -1
- package/dist/dms-client-return.cjs.production.min.js +1 -1
- package/dist/dms-client-return.cjs.production.min.js.map +1 -1
- package/dist/dms-client-return.esm.js +7617 -4312
- package/dist/dms-client-return.esm.js.map +1 -1
- package/package.json +6 -4
- package/src/assets/icons/ActionIcon.tsx +1 -1
- package/src/assets/icons/ArrowDownIcon.tsx +2 -2
- package/src/components/client-portal/DateFilterStore.ts +139 -0
- package/src/components/client-portal/OutstandingTable.tsx +356 -0
- package/src/components/client-portal/ReturnAfterSearchBar.tsx +77 -17
- package/src/components/client-portal/ReturnOverview.tsx +15 -6
- package/src/components/client-portal/ReturnRTFilters.tsx +196 -80
- package/src/components/client-portal/ReturnSearchBar.tsx +64 -94
- package/src/components/client-portal/ReturnStatus.tsx +50 -66
- package/src/components/client-portal/return-confirm/ConfirmedMain.tsx +224 -0
- package/src/components/client-portal/return-confirm/ReturnConfirmedTable.tsx +327 -0
- package/src/components/order-daily-overview/header/route-header/ClientRouterHeader.tsx +166 -0
- package/src/components/order-daily-overview/header/route-header/RouterHeader.tsx +2 -86
- package/src/components/order-daily-overview/header-filters/SelectionFilter.tsx +46 -15
- package/src/components/order-daily-overview/index.tsx +23 -4
- package/src/components/order-daily-overview/return-after-table/ReturnAfterTable.tsx +23 -38
- package/src/components/order-daily-overview/return-after-table/table/OrderTable.tsx +21 -24
- package/src/components/order-daily-overview/return-after-table/table-filters/ReturnFilterStore.ts +36 -36
- package/src/components/order-daily-overview/return-after-table/table-filters/ReturnOrderFilter.tsx +12 -2
- package/src/components/order-daily-overview/return-order-table/ReturnTable.tsx +16 -0
- package/src/components/order-daily-overview/return-order-table/return-orders-filters/ReturnOrderTable.tsx +58 -155
- package/src/components/order-daily-overview/table/ReturnTable.tsx +8 -4
- package/src/components/order-view/DynamicTable.tsx +21 -8
- package/src/components/order-view/details-filters/left-side-filters/dropdowns/DropDowns.tsx +1 -1
- package/src/components/order-view/details-filters/left-side-filters/dropdowns/OptionsDropDown.tsx +9 -0
- package/src/components/order-view/details-filters/right-side-filters/Details.tsx +28 -3
- package/src/components/order-view/flags-action-modal/Dropdowns.tsx +2 -0
- package/src/components/order-view/general-information/Status.tsx +92 -18
- package/src/components/order-view/general-information/index.tsx +2 -2
- package/src/components/order-view/generic-table/AuditLogs.tsx +39 -12
- package/src/components/order-view/index.tsx +50 -8
- package/src/components/order-view/modalsPopup/ModalManager.tsx +1 -1
- package/src/components/order-view/notes/AddNote.tsx +95 -65
- package/src/components/order-view/notes/order-dropdown/NewReturnDropdown.tsx +8 -10
- package/src/components/order-view/notification/FlagTemplate.tsx +21 -10
- package/src/components/order-view/notification/OrderTemplate.tsx +192 -41
- package/src/components/order-view/notification/ReminderTemplate.tsx +28 -13
- package/src/components/order-view/notification/index.tsx +100 -55
- package/src/components/order-view/order-actions/actions/add-resources/DocFileUpload.tsx +92 -72
- package/src/components/order-view/order-actions/actions/add-resources/index.tsx +27 -10
- package/src/components/order-view/order-actions/actions/cancel-order/ReturnAction.tsx +25 -4
- package/src/components/order-view/order-actions/actions/cancel-order/ReturnReason.tsx +24 -4
- package/src/components/order-view/order-actions/actions/clear-booking-status/ClearBookingStatus.tsx +9 -2
- package/src/components/order-view/order-actions/actions/confirm-order/index.tsx +12 -35
- package/src/components/order-view/order-actions/actions/confirm-order/tables/NotesTable.tsx +1 -0
- package/src/components/order-view/order-actions/actions/create-task-reminder/CreateReminderModal.tsx +88 -30
- package/src/components/order-view/order-actions/actions/create-task-reminder/CreateTaskModal.tsx +5 -3
- package/src/components/order-view/order-actions/actions/create-task-reminder/TaskModal.tsx +2 -2
- package/src/components/order-view/order-actions/actions/force-debrief/BaseChargeConfirmationModal.tsx +94 -0
- package/src/components/order-view/order-actions/actions/force-debrief/ForceDebriefModal.tsx +635 -0
- package/src/components/order-view/order-actions/actions/force-debrief/Selector.tsx +65 -0
- package/src/components/order-view/order-actions/actions/force-debrief/charges/adhoc/index.tsx +94 -0
- package/src/components/order-view/order-actions/actions/force-debrief/charges/base-charge/index.tsx +106 -0
- package/src/components/order-view/order-actions/actions/force-debrief/charges/collection-add-ons/index.tsx +77 -0
- package/src/components/order-view/order-actions/actions/force-debrief/charges/delivery-add-ons/index.tsx +78 -0
- package/src/components/order-view/order-actions/actions/force-debrief/charges/disposal-charges/index.tsx +77 -0
- package/src/components/order-view/order-actions/actions/force-debrief/charges/order-charges/index.tsx +124 -0
- package/src/components/order-view/order-actions/actions/force-debrief/escalation/EscalationCategory.tsx +92 -0
- package/src/components/order-view/order-actions/actions/force-debrief/escalation/EscalationLevel.tsx +90 -0
- package/src/components/order-view/order-actions/actions/force-debrief/escalation/EscalationReason.tsx +122 -0
- package/src/components/order-view/order-actions/actions/force-debrief/escalation/index.tsx +16 -0
- package/src/components/order-view/order-actions/actions/force-debrief/notifications/FlagsTemplate.tsx +46 -0
- package/src/components/order-view/order-actions/actions/force-debrief/notifications/OrderTemplate.tsx +117 -0
- package/src/components/order-view/order-actions/actions/force-debrief/notifications/Tabs.tsx +32 -0
- package/src/components/order-view/order-actions/actions/force-debrief/notifications/index.tsx +180 -0
- package/src/components/order-view/order-actions/actions/force-debrief/order-info/RadioButtons.tsx +150 -0
- package/src/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/CancellationReasonDropdown.tsx +40 -0
- package/src/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/FailureReasonDropdown.tsx +108 -0
- package/src/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/OrderHoldReasonDropdown.tsx +37 -0
- package/src/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/StatusDropdown.tsx +48 -0
- package/src/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/ZoneDropdown.tsx +27 -0
- package/src/components/order-view/order-actions/actions/force-debrief/order-info/failure-content/index.tsx +187 -0
- package/src/components/order-view/order-actions/actions/force-debrief/order-info/index.tsx +55 -0
- package/src/components/order-view/order-actions/actions/force-debrief/order-info/success-content/index.tsx +221 -0
- package/src/components/order-view/order-actions/actions/force-debrief/styles.tsx +51 -0
- package/src/components/order-view/order-actions/actions/hold-order/HoldOrderModal.tsx +2 -0
- package/src/components/order-view/order-actions/actions/remove-from-route/RemoveFromRoute.tsx +7 -2
- package/src/components/order-view/order-actions/actions/unhold-order/UnholdOrder.tsx +2 -0
- package/src/components/order-view/order-actions/index.tsx +19 -10
- package/src/components/order-view/order-actions/store.ts +1 -1
- package/src/components/order-view/order-actions/types.ts +3 -3
- package/src/components/order-view/order-details/expanded-content/customer-section/contact-info/ContactHome.tsx +102 -45
- package/src/components/order-view/order-details/expanded-content/customer-section/contact-info/ContactMobile.tsx +93 -34
- package/src/components/order-view/order-details/expanded-content/customer-section/contact-info/ContactWork.tsx +88 -31
- package/src/components/order-view/order-details/expanded-content/footer/index.tsx +55 -80
- package/src/components/order-view/order-details/expanded-content/index.tsx +37 -16
- package/src/components/order-view/order-details/expanded-content/instruction-section/index.tsx +1 -1
- package/src/components/order-view/order-details/expanded-content/services-section/AssemblyType.tsx +9 -91
- package/src/components/order-view/order-details/expanded-content/services-section/OrderServices.tsx +10 -182
- package/src/components/order-view/order-details/expanded-content/services-section/ServiceLevel.tsx +3 -4
- package/src/components/order-view/order-details/index.tsx +5 -2
- package/src/components/order-view/order-resources/expanded-content/index.tsx +2 -2
- package/src/components/order-view/products-info/expanded-content/index.tsx +33 -11
- package/src/components/order-view/products-info/index.tsx +10 -6
- package/src/components/order-view/return-client-products/ProductTable.tsx +12 -2
- package/src/components/order-view/return-client-products/product-table/ReturnProductTable.tsx +73 -23
- package/src/components/order-view/store.ts +113 -1
- package/src/components/order-view/system-event-logs/expanded-content/index.tsx +6 -2
- package/src/components/order-view/types.ts +60 -1
- package/src/components/order-view/utils.ts +49 -33
- package/src/components/order-view/view-reminder/AssigneeDropdown.tsx +85 -26
- package/src/components/order-view/view-reminder/ViewReminder.tsx +31 -14
- package/src/components/store.ts +25 -2
- package/src/index.tsx +23 -5
- package/dist/components/order-view/order-actions/actions/log-service-refusal/DeliveryPoint.d.ts +0 -7
- package/dist/components/order-view/order-actions/actions/log-service-refusal/Notes.d.ts +0 -7
- package/dist/components/order-view/order-actions/actions/log-service-refusal/OrderServices.d.ts +0 -7
- package/dist/components/order-view/order-actions/actions/log-service-refusal/helper.d.ts +0 -3
- package/dist/components/order-view/order-actions/actions/log-service-refusal/index.d.ts +0 -3
- package/src/components/order-view/order-actions/actions/log-service-refusal/DeliveryPoint.tsx +0 -50
- package/src/components/order-view/order-actions/actions/log-service-refusal/Notes.tsx +0 -50
- package/src/components/order-view/order-actions/actions/log-service-refusal/OrderServices.tsx +0 -57
- package/src/components/order-view/order-actions/actions/log-service-refusal/helper.ts +0 -26
- 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 {
|
|
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 [,
|
|
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
|
|
46
|
+
filters: filters,
|
|
35
47
|
pagination: pagination,
|
|
36
48
|
});
|
|
37
49
|
|
|
38
50
|
useEffect(() => {
|
|
39
|
-
if (debouncedSearchText
|
|
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
|
-
|
|
63
|
+
setReturnConfirmedData(response?.data);
|
|
52
64
|
} else {
|
|
53
|
-
|
|
65
|
+
setReturnConfirmedData([]);
|
|
54
66
|
}
|
|
55
67
|
});
|
|
56
68
|
} else if (
|
|
57
|
-
debouncedSearchText
|
|
58
|
-
debouncedSearchText
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
<
|
|
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
|
-
<
|
|
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
|
-
|
|
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 {
|
|
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 [
|
|
17
|
-
const [
|
|
18
|
-
const [
|
|
19
|
-
|
|
20
|
-
|
|
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
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
|
52
|
-
|
|
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
|
|
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:
|
|
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
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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
|
-
<
|
|
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;
|