@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,34 +1,66 @@
1
1
  import React from 'react';
2
2
  import styled from 'styled-components';
3
3
  import { StatusOptions } from '../helper';
4
- import Divider from '../../../assets/icons/Divider';
5
4
  // Import icon
6
5
  import RouteIcon from '../../../assets/icons/RoutedIcon';
7
6
  import SuccessIcon from '../../../assets/icons/SuccessIcon';
8
7
  import DeliveredIcon from '../../../assets/icons/DeliveredIcon';
9
8
  import ConfirmedIcon from '../../../assets/icons/ConfirmedIcon';
10
9
  import { useStatusDetails } from '../store';
10
+ import { Skeleton } from 'antd';
11
+ import Divider from '../../../assets/icons/Divider';
11
12
 
12
- function Status() {
13
+ function Status({ statusDataLoading }: any) {
13
14
  const [orderStatus] = useStatusDetails();
14
-
15
15
  return (
16
- <Container>
17
- <BoxContainer>
18
- {StatusOptions.map((option, index) => (
19
- <React.Fragment key={index}>
20
- <TextContainer>
21
- {renderIcon(option.value, orderStatus)}
22
- <Heading>{option.label}</Heading>
23
- </TextContainer>
24
- {index < StatusOptions.length - 1 && <Divider />}
25
- </React.Fragment>
26
- ))}
27
- </BoxContainer>
28
- </Container>
16
+ <>
17
+ <Container>
18
+ <BoxContainer>
19
+ {statusDataLoading ? (
20
+ <>
21
+ <StatusSkeletonRow />
22
+ </>
23
+ ) : (
24
+ StatusOptions?.map((option, index) => (
25
+ <React.Fragment key={index}>
26
+ <TextContainer>
27
+ {renderIcon(option.value, orderStatus)}
28
+ <Heading>{option.label}</Heading>
29
+ </TextContainer>
30
+ {index < StatusOptions.length - 1 && <Divider />}
31
+ </React.Fragment>
32
+ ))
33
+ )}
34
+ </BoxContainer>
35
+ </Container>
36
+ </>
29
37
  );
30
38
  }
31
-
39
+ const StatusSkeletonItem = () => (
40
+ <SkeletonItemContainer>
41
+ <Skeleton.Avatar size="small" style={{ marginRight: 12 }} />
42
+ <Skeleton.Input
43
+ active
44
+ size="small"
45
+ style={{ width: 150, borderRadius: 8 }}
46
+ />
47
+ </SkeletonItemContainer>
48
+ );
49
+ const StatusSkeletonRow = () => (
50
+ <StatusBox>
51
+ <StatusSkeletonItem />
52
+ <SkeletonDivider />
53
+ <StatusSkeletonItem />
54
+ <SkeletonDivider />
55
+ <StatusSkeletonItem />
56
+ <SkeletonDivider />
57
+ <StatusSkeletonItem />
58
+ <SkeletonDivider />
59
+ <StatusSkeletonItem />
60
+ <SkeletonDivider />
61
+ <StatusSkeletonItem />
62
+ </StatusBox>
63
+ );
32
64
  const renderIcon = (value: any, orderStatus: any) => {
33
65
  const status = orderStatus && orderStatus.length > 0 ? orderStatus[0] : null;
34
66
 
@@ -72,11 +104,53 @@ const renderIcon = (value: any, orderStatus: any) => {
72
104
  }
73
105
  };
74
106
 
107
+ // const RowWrapper = styled.div`
108
+ // display: flex;
109
+ // flex-direction: column;
110
+ // background: #fff;
111
+ // border-radius: 12px;
112
+ // box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
113
+ // padding: 16px;
114
+ // `;
115
+
116
+ // const HeaderPlaceholder = styled.div`
117
+ // display: flex;
118
+ // align-items: center;
119
+ // padding: 8px 0;
120
+ // gap: 12px;
121
+ // `;
122
+
123
+ const StatusBox = styled.div`
124
+ display: flex;
125
+ align-items: center;
126
+ background: #fcfcfc;
127
+ border: 1px solid #eee;
128
+ border-radius: 20px;
129
+ justify-content: space-between;
130
+ flex-wrap: wrap;
131
+ padding: 5px;
132
+ width: -webkit-fill-available;
133
+ `;
134
+
135
+ const SkeletonItemContainer = styled.div`
136
+ display: flex;
137
+ align-items: center;
138
+ gap: 8px;
139
+ `;
140
+
141
+ const SkeletonDivider = styled.div`
142
+ width: 12px;
143
+ height: 2px;
144
+ background-color: #e0e0e0;
145
+ margin: 0 4px;
146
+ border-radius: 2px;
147
+ `;
148
+
75
149
  const BoxContainer = styled.div`
76
150
  border: 1px solid #e3e3e3;
77
151
  display: flex;
78
152
  justify-content: space-evenly;
79
- border-radius: 8px;
153
+ border-radius: 20px;
80
154
  background: #f8fafc;
81
155
  align-items: center;
82
156
  height: 5%;
@@ -3,10 +3,10 @@ import Status from './Status';
3
3
  import styled from 'styled-components';
4
4
  // import DropDownOptions from './dropdowns';
5
5
 
6
- function GeneralHeader() {
6
+ function GeneralHeader({ statusDataLoading }: any) {
7
7
  return (
8
8
  <Section>
9
- <Status />
9
+ <Status statusDataLoading={statusDataLoading} />
10
10
  {/* <DropDownOptions /> */}
11
11
  </Section>
12
12
  );
@@ -1,12 +1,16 @@
1
1
  import styled from 'styled-components';
2
2
  import React from 'react';
3
+
3
4
  import { Skeleton } from 'antd';
4
- import { formatUtcToLocal } from '@bjsdistribution/dms-component-library';
5
- import { useAuditLogLoadingState, usegetNotes } from '../store';
5
+ import {
6
+ PrivateIcon,
7
+ formatUtcToLocal,
8
+ } from '@bjsdistribution/dms-component-library';
6
9
  import { NotesTableData } from '../notes/logs/fakeData';
10
+ import { useAuditLogLoadingState, usegetNotes } from '../store';
7
11
 
8
12
  const GenericAuditLogsTable = () => {
9
- const tableHeadData = NotesTableData[0].tableHead; // Assuming NotesTableData contains table header information
13
+ const tableHeadData = NotesTableData[0]?.tableHead; // Assuming NotesTableData contains table header information
10
14
  const [getNotes] = usegetNotes();
11
15
  const [auditLogLoadingStatus] = useAuditLogLoadingState();
12
16
 
@@ -35,9 +39,23 @@ const GenericAuditLogsTable = () => {
35
39
  <div className="bold" title={note?.created_by}>
36
40
  {note?.created_by}
37
41
  </div>
38
- <div>{`${formatUtcToLocal(note?.created_at).date} @ ${
39
- formatUtcToLocal(note?.created_at).time
40
- }`}</div>
42
+ <div className="notesIcon">
43
+ {note?.is_private ? (
44
+ <>
45
+ <PrivateIcon />{' '}
46
+ <span className="datetime">{`${
47
+ formatUtcToLocal(note?.created_at).date
48
+ } @ ${
49
+ formatUtcToLocal(note?.created_at).time
50
+ }`}</span>
51
+ </>
52
+ ) : (
53
+ <span className="datetime">{`${
54
+ formatUtcToLocal(note?.created_at).date
55
+ } @ ${formatUtcToLocal(note?.created_at).time}`}</span>
56
+ )}
57
+ </div>
58
+ <div>{note?.note_type || 'N/A'}</div>
41
59
  </td>
42
60
  <td
43
61
  dangerouslySetInnerHTML={{ __html: note?.description }}
@@ -56,6 +74,8 @@ const GenericAuditLogsTable = () => {
56
74
  );
57
75
  };
58
76
 
77
+ const ScrollableTableWrapper = styled.div``;
78
+
59
79
  export const AuditTableWrapper = styled.div`
60
80
  height: 250px;
61
81
  min-height: 200px;
@@ -82,22 +102,29 @@ export const AuditTableWrapper = styled.div`
82
102
  color: #667085;
83
103
  font-family: Lato;
84
104
  font-size: 13px;
85
- font-style: normal;
86
105
  font-weight: 400;
87
106
  line-height: 16px;
88
107
  padding: 10px;
108
+ border-bottom: 1px solid #efe8e8;
109
+ word-break: break-word;
110
+ vertical-align: top;
111
+
89
112
  .bold {
90
113
  font-weight: 500;
91
114
  font-size: 14px;
92
115
  }
116
+ .notesIcon {
117
+ display: flex;
118
+ align-items: center;
119
+ gap: 5px;
120
+
121
+ .datetime {
122
+ min-width: 155px;
123
+ }
124
+ }
93
125
  }
94
126
  }
95
127
  }
96
128
  `;
97
129
 
98
- const ScrollableTableWrapper = styled.div`
99
- height: 550px;
100
- overflow: auto;
101
- `;
102
-
103
130
  export default GenericAuditLogsTable;
@@ -6,7 +6,11 @@ import SystemLogs from './system-event-logs/expanded-content';
6
6
  import GeneralHeader from './general-information';
7
7
  import ProductsInfo from './products-info';
8
8
  import OrderActions from './order-actions';
9
- import { useApiHook, useAxios } from '@bjsdistribution/dms-component-library';
9
+ import {
10
+ DocumentTitle,
11
+ useApiHook,
12
+ useAxios,
13
+ } from '@bjsdistribution/dms-component-library';
10
14
  import {
11
15
  useOrderDetails,
12
16
  // useOrderStaticData,
@@ -27,6 +31,7 @@ import {
27
31
  useGlobalStateHitOrder,
28
32
  useAtom,
29
33
  usegetClientData,
34
+ useGlobalEscData,
30
35
  } from './store';
31
36
  import { OrdersType } from './types';
32
37
  import { useLocation } from 'react-router-dom';
@@ -47,7 +52,7 @@ interface ApiResponse {
47
52
  setShouldPerformAction: boolean;
48
53
  }
49
54
 
50
- function OrderView() {
55
+ function OrderView({ locationloading }: any) {
51
56
  notification.config({
52
57
  top: 150,
53
58
  });
@@ -59,7 +64,7 @@ function OrderView() {
59
64
  const [, setLoading] = useState<boolean>(false);
60
65
  const [, setOrderStatus] = useStatusDetails();
61
66
  const [, setDepotOptions] = useDepotOptions();
62
- const [, setCustomerInfo] = useCustomerInfo();
67
+ const [customerInfo, setCustomerInfo] = useCustomerInfo();
63
68
  const [, setLocationOptions] = useLocationOptions();
64
69
  const [orderResources, setOrderResources] = useOrderProductsResources();
65
70
  const [GsitCUstomerId, setGsitCUstomerId] = useGsitCUstomerId();
@@ -73,6 +78,7 @@ function OrderView() {
73
78
  const order_id = orderDetails?.id;
74
79
  const [getResources] = useAtom(setResourcesCall);
75
80
  const [, setClientData] = usegetClientData();
81
+ const [, setGlobalEscData] = useGlobalEscData();
76
82
 
77
83
  useEffect(() => {
78
84
  setStatusVal(orderDetails?.status_value);
@@ -96,6 +102,7 @@ function OrderView() {
96
102
  value: `${order_id}`,
97
103
  },
98
104
  ],
105
+ showLoader: false,
99
106
  });
100
107
 
101
108
  // query param
@@ -256,6 +263,7 @@ function OrderView() {
256
263
  useEffect(() => {
257
264
  if (orderId) {
258
265
  callCLientApi();
266
+ callEscalationApi();
259
267
  }
260
268
  }, [orderId]);
261
269
 
@@ -288,12 +296,14 @@ function OrderView() {
288
296
  const {
289
297
  data: fetchedResourcesData,
290
298
  setShouldPerformAction: setActions,
299
+ loading: loadingResources,
291
300
  } = useApiHook<{
292
301
  data: ApiResponse[];
293
302
  }>({
294
303
  endpoint: `/orders/${orderId}/order_resources/`,
295
304
  method: 'GET',
296
305
  performAction: false,
306
+ showLoader: false,
297
307
  });
298
308
 
299
309
  useEffect(() => {
@@ -418,21 +428,53 @@ function OrderView() {
418
428
  setSubContracterData(formattedData);
419
429
  }
420
430
  }, [fetchedSubcontractotData, fetchedSubcontractotData, apiLoading]);
431
+
432
+ // ESCALATIONS API
433
+
434
+ const {
435
+ data: fetchedEscalationData,
436
+ fetchData: callEscalationApi,
437
+ loading: escalationDataLoading,
438
+ } = useAxios<{
439
+ data: any;
440
+ }>({
441
+ endpoint: `/orders/escalations/${orderId}`,
442
+ method: 'GET',
443
+ });
444
+
445
+ useEffect(() => {
446
+ if (fetchedEscalationData?.data) {
447
+ const escalationData = fetchedEscalationData?.data;
448
+ const sortedEscData = escalationData?.sort(
449
+ (a: any, b: any) =>
450
+ new Date(b?.created_at).getTime() - new Date(a?.created_at).getTime()
451
+ );
452
+ const showEsc = sortedEscData != null && sortedEscData.length > 0;
453
+ showEsc ? setGlobalEscData(sortedEscData) : setGlobalEscData([]);
454
+ }
455
+ }, [escalationDataLoading]);
456
+
457
+ const docTitle = `${customerInfo?.recipient_name}, ${customerInfo?.postcode}`;
458
+
421
459
  return (
422
460
  <MainContainer>
423
- <GeneralHeader />
461
+ <DocumentTitle title={docTitle} />
462
+ <GeneralHeader statusDataLoading={statusDataLoading} />
424
463
 
425
464
  <DetailsFilters />
426
465
  <Notification />
427
- <OrderDetails />
428
- <ProductsInfo />
466
+ <OrderDetails
467
+ orderLoading={loading}
468
+ depotDataLoading={depotDataLoading}
469
+ />
470
+ <ProductsInfo locationloading={locationloading} />
429
471
  <SplitLayout>
430
472
  <NotesContainer>
431
473
  <Notes />
432
474
  </NotesContainer>
433
475
  <TablesContainer>
434
- <Order />
435
- <SystemLogs />
476
+ <Order loading={loadingResources} />
477
+ <SystemLogs loading={logsLoading} />
436
478
  </TablesContainer>
437
479
  </SplitLayout>
438
480
  <OrderActions />
@@ -74,7 +74,7 @@ const ModalManager = () => {
74
74
 
75
75
  useEffect(() => {
76
76
  // @ts-ignore
77
- if (response && response?.code == 500) {
77
+ if ((response && response?.code == 500) || response?.code == 400) {
78
78
  // @ts-ignore
79
79
  notification.error({
80
80
  message: 'Failure',
@@ -1,41 +1,80 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import styled from 'styled-components';
1
3
  import {
2
4
  Button,
3
5
  Label,
4
6
  useAxios,
5
- // SelectDropdown,
6
7
  } from '@bjsdistribution/dms-component-library';
7
- import React, { useEffect, useState } from 'react';
8
- import styled from 'styled-components';
9
- import { useLocation } from 'react-router-dom';
8
+ import { Select, notification } from 'antd';
10
9
  import { useGlobalStateHitAuditLog, usemoduleIds, useOrderId } from '../store';
11
- import { notification } from 'antd';
10
+ import { useLocation } from 'react-router-dom';
11
+ import { useClientPortal, useSelectedData } from '../../store';
12
12
  import NoteType from './NoteType';
13
- import { useSelectedData } from '../../store';
14
13
  import { ApiResponse } from '../types';
14
+ const template = `REASON- \nSTC- \nACTION- `;
15
15
 
16
16
  function AddNote() {
17
- const [noteText, setNoteText] = useState('');
17
+ const [noteText, setNoteText] = useState(template);
18
+ const [noteOptions, setNoteOptions] = useState<
19
+ { label: string; value: string }[]
20
+ >([]);
21
+ const [selectedNoteType, setSelectedNoteType] = useState<string | null>(
22
+ 'standard'
23
+ );
18
24
  const [orderId] = useOrderId();
19
25
  const location = useLocation();
20
26
  const pathname = location.pathname;
21
27
  const orderIdLocaation = pathname.split('/')[1];
28
+ const [isClientPortal] = useClientPortal();
22
29
  const [moduleIds] = usemoduleIds();
23
30
  const [, setRecallAuditLog] = useGlobalStateHitAuditLog();
24
- const [selected] = useSelectedData();
31
+ const [selectedAssignee] = useSelectedData();
32
+
33
+ const { fetchData: getNoteType, data: fetchedData } = useAxios<any>({
34
+ endpoint: `audit_logs/order/type`,
35
+ method: 'GET',
36
+ showLoader: false,
37
+ });
38
+
39
+ useEffect(() => {
40
+ getNoteType();
41
+ }, []);
42
+
43
+ useEffect(() => {
44
+ if (fetchedData?.data) {
45
+ const options = fetchedData?.data?.map((item: any) => ({
46
+ label: item?.name,
47
+ value: item?.name,
48
+ }));
49
+ setNoteOptions(options);
50
+
51
+ const standardOption = options?.find(
52
+ (opt: any) => opt?.value?.toLowerCase() === 'standard'
53
+ );
54
+ if (standardOption) {
55
+ setSelectedNoteType(standardOption?.value);
56
+ } else if (options?.length > 0) {
57
+ setSelectedNoteType(options[0]?.value);
58
+ }
59
+ }
60
+ }, [fetchedData]);
25
61
 
26
- // Save New Note
27
- const { fetchData: callAuditLogs } = useAxios<{
28
- data: ApiResponse[];
29
- }>({
62
+ const { fetchData: callAuditLogs } = useAxios<{ data: ApiResponse[] }>({
30
63
  endpoint: `/audit_logs/orders/`,
31
64
  method: 'POST',
32
65
  });
33
66
 
34
- const [notificationData, setNotificationData] = useState<{
35
- type: 'success' | 'error';
36
- message: string;
37
- description: string;
38
- } | null>(null);
67
+ // `const isValidFormat = () => {
68
+ // const lines = noteText.split('\n');
69
+ // if (lines.length < 3) return false;
70
+ // return (
71
+ // lines[0].startsWith('REASON-') &&
72
+ // lines[1].startsWith('STC-') &&
73
+ // lines[2].startsWith('ACTION-')
74
+ // );
75
+ // };
76
+
77
+ const isDisabled = !noteText.trim() || !selectedAssignee;
39
78
 
40
79
  const saveNote = async () => {
41
80
  setRecallAuditLog(false);
@@ -46,34 +85,38 @@ function AddNote() {
46
85
  parent_object_id: orderId || orderIdLocaation,
47
86
  parent_module_id: moduleIds?.parentId,
48
87
  module_id: moduleIds?.id,
88
+ note_type: selectedNoteType,
49
89
  module_object_id: orderId || orderIdLocaation,
50
90
  action: 'create',
51
91
  description: noteText,
52
92
  data_dump: '{}',
53
93
  manual: 1,
54
- is_private: selected,
94
+ is_private: isClientPortal
95
+ ? false
96
+ : selectedAssignee === '0'
97
+ ? true
98
+ : false,
55
99
  },
56
100
  ],
57
101
  };
58
102
  try {
59
- let response = (await callAuditLogs({
60
- payload: payload,
61
- })) as {
62
- code: number | null;
63
- error?: string | null | undefined;
64
- [key: string]: any;
65
- };
66
- if (response.code == 200 && response?.data) {
103
+ const response = await callAuditLogs({ payload });
104
+ //@ts-ignore
105
+ if (response?.code === 200 && response?.data) {
67
106
  notification.success({
68
107
  message: 'Success',
69
- description: `${response?.message}`,
108
+ //@ts-ignore
109
+ description: response?.message || 'Note saved successfully',
70
110
  });
71
- setNoteText('');
111
+
112
+ setNoteText(template);
113
+ setSelectedNoteType('Standard');
72
114
  setRecallAuditLog(true);
73
115
  } else {
74
116
  notification.error({
75
117
  message: 'Error',
76
- description: `${response?.error}`,
118
+ //@ts-ignore
119
+ description: response?.error || 'Failed to save note',
77
120
  });
78
121
  }
79
122
  } catch (error) {
@@ -83,38 +126,25 @@ function AddNote() {
83
126
  });
84
127
  }
85
128
  };
86
-
87
- useEffect(() => {
88
- if (notificationData) {
89
- const { type, message, description } = notificationData;
90
- notification[type]({
91
- message,
92
- description,
93
- duration: 5,
94
- });
95
- setNotificationData(null); // Clear notification data after showing
96
- }
97
-
98
- // Set top position for notifications
99
- notification.config({
100
- top: 80,
101
- });
102
- }, [notificationData]);
129
+ const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {
130
+ setNoteText(e.target.value);
131
+ };
103
132
 
104
133
  return (
105
134
  <Container>
106
- <Label label="Add New Note" />
107
- <StyledTextArea
108
- name="description"
109
- placeholder="Enter your note here..."
110
- value={noteText}
111
- onChange={(e: any) => setNoteText(e.target.value)}
135
+ <Label label="Add New Note" required style={{ color: 'black' }} />
136
+ <StyledAntSelect
137
+ options={noteOptions}
138
+ placeholder="Select Note Type"
139
+ onChange={(value: string) => setSelectedNoteType(value)}
140
+ value={selectedNoteType}
112
141
  />
142
+ <StyledTextArea value={noteText} onChange={handleChange} rows={3} />
113
143
  <SaveNoteContainer>
114
- <Button disabled={!noteText} onClick={saveNote}>
144
+ <Button disabled={isDisabled} onClick={saveNote}>
115
145
  SAVE NOTE
116
146
  </Button>
117
- <NoteType />
147
+ {!isClientPortal && <NoteType />}
118
148
  </SaveNoteContainer>
119
149
  </Container>
120
150
  );
@@ -137,20 +167,20 @@ const SaveNoteContainer = styled.div`
137
167
  `;
138
168
 
139
169
  const StyledTextArea = styled.textarea`
140
- height: 57px;
141
- border-radius: 12px;
142
- background: #fff;
143
- resize: none;
170
+ height: 65px;
144
171
  border-radius: 8px;
145
- border: 1px solid var(--Neutral-Gray-Gray-100, #e0e2e7);
146
- background: var(--Flowkit-White, #fff);
172
+ background: #fff;
173
+ resize: vertical;
174
+ border: 1px solid #e0e2e7;
147
175
  padding: 8px 12px;
176
+ font-family: monospace;
177
+ white-space: pre-wrap;
148
178
  `;
149
179
 
150
- // const StyledSelectDropdown = styled(SelectDropdown)`
151
- // border-color: #e0e2e7 !important;
152
- // width: 8vw;
153
- // margin-bottom: 5px;
154
- // `;
180
+ export const StyledAntSelect: any = styled(Select)`
181
+ .ant-select-selector {
182
+ border-radius: 8px;
183
+ }
184
+ `;
155
185
 
156
186
  export default AddNote;
@@ -8,12 +8,13 @@ import { useNewReturnOrderData, useSelectedProducts } from '../../../store';
8
8
  import { atom, useAtom } from 'jotai';
9
9
 
10
10
  export const payloadAtom = atom<any>(null);
11
+ export const selectedOrderId = atom<any>(null);
11
12
 
12
13
  const NewReturnDropdown = () => {
13
14
  const defaultSelectStyle = { width: '100%' };
14
15
  const defaultPopupClassName = 'dropDownStyle';
15
16
  const [returnOrderData, setReturnOrderData] = useNewReturnOrderData();
16
- const [selectedOrderId, setSelectedOrderId] = useState<string | null>(null);
17
+ const [selectedId, setSelectedOrderId] = useAtom(selectedOrderId);
17
18
  const [selectedProducts] = useSelectedProducts();
18
19
  const [orderData] = useOrderDetails();
19
20
  const [, setPayload] = useAtom(payloadAtom);
@@ -67,14 +68,14 @@ const NewReturnDropdown = () => {
67
68
  }, [fetchedReturnOrderData, id]);
68
69
 
69
70
  useEffect(() => {
70
- if (selectedOrderId && selectedProducts?.length > 0) {
71
+ if (selectedId && selectedProducts?.length > 0) {
71
72
  const newPayload = {
72
- new_return_order: selectedOrderId,
73
+ new_return_order: selectedId,
73
74
  products: selectedProducts,
74
75
  };
75
76
  setPayload(newPayload);
76
77
  }
77
- }, [selectedOrderId, selectedProducts, setPayload]);
78
+ }, [selectedId, selectedProducts, setPayload]);
78
79
 
79
80
  const handleDropdownChange = (value: string) => {
80
81
  setSelectedOrderId(value);
@@ -83,23 +84,20 @@ const NewReturnDropdown = () => {
83
84
  label: `${order?.recipient_name} - ${order?.postcode}`,
84
85
  value: order?.id,
85
86
  }));
86
-
87
87
  return (
88
88
  <Container>
89
89
  <Text>New Return Order:</Text>
90
90
  <StyledAntSelect
91
91
  options={dropdownOptions}
92
- value={selectedOrderId}
92
+ value={selectedId}
93
93
  placeholder="Select"
94
94
  // @ts-ignore
95
95
  onChange={handleDropdownChange}
96
96
  style={defaultSelectStyle}
97
97
  showSearch
98
- dropdownStyle={{ width: 'max-content' }}
98
+ dropdownStyle={{ width: '250px' }}
99
99
  popupClassName={defaultPopupClassName}
100
- status={
101
- dropdownOptions.length === 0 ? '' : selectedOrderId ? '' : 'error'
102
- }
100
+ status={dropdownOptions.length === 0 ? '' : selectedId ? '' : 'error'}
103
101
  notFoundContent="No orders found with a similar postcode"
104
102
  />
105
103
  </Container>