umwd-components 0.1.721 → 0.1.723
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/cjs/src/components/e-commerce/iro/IroItemDisplay.js +1 -1
- package/dist/cjs/src/components/e-commerce/iro/IroItemUpdater.js +1 -1
- package/dist/cjs/src/components/e-commerce/iro/ManageIROForm.js +1 -1
- package/dist/cjs/src/components/e-commerce/iro/RmaForm.js +1 -1
- package/dist/cjs/src/components/e-commerce/iro/TextualIROItemUpdater.js +1 -1
- package/dist/cjs/src/components/e-commerce/iro/TextualManageIROForm.js +1 -1
- package/dist/cjs/src/components/e-commerce/opo/ManageOpoForm.js +1 -1
- package/dist/cjs/src/components/e-commerce/opo/OpoItemDisplay.js +1 -1
- package/dist/cjs/src/components/e-commerce/opo/OpoItemUpdater.js +1 -1
- package/dist/cjs/src/components/e-commerce/opo/OpoSummary.js +1 -1
- package/dist/cjs/src/components/e-commerce/opo/TextualManageOpoForm.js +1 -1
- package/dist/cjs/src/components/e-commerce/opo/TextualOpoItemUpdater.js +1 -1
- package/dist/cjs/src/components/logistics/ipo/IPOItemUpdater.js +1 -1
- package/dist/cjs/src/components/logistics/ipo/ManageIPOForm.js +1 -1
- package/dist/cjs/src/components/logistics/ipo/TextualIPOItemUpdater.js +1 -1
- package/dist/cjs/src/components/logistics/ipo/TextualManageIPOForm.js +1 -1
- package/dist/cjs/src/data/loaders/e-commerce/getAllOpos.js +1 -1
- package/dist/cjs/src/data/loaders/e-commerce-loaders.js +1 -1
- package/dist/cjs/src/lib/isEORIValid.js +1 -1
- package/dist/cjs/tsconfig.build.tsbuildinfo +1 -1
- package/dist/esm/src/components/e-commerce/iro/IroItemDisplay.js +1 -1
- package/dist/esm/src/components/e-commerce/iro/IroItemUpdater.js +5 -5
- package/dist/esm/src/components/e-commerce/iro/ManageIROForm.js +3 -3
- package/dist/esm/src/components/e-commerce/iro/RmaForm.js +1 -1
- package/dist/esm/src/components/e-commerce/iro/TextualIROItemUpdater.js +8 -8
- package/dist/esm/src/components/e-commerce/iro/TextualManageIROForm.js +15 -15
- package/dist/esm/src/components/e-commerce/opo/ManageOpoForm.js +5 -5
- package/dist/esm/src/components/e-commerce/opo/OpoItemDisplay.js +1 -1
- package/dist/esm/src/components/e-commerce/opo/OpoItemUpdater.js +8 -7
- package/dist/esm/src/components/e-commerce/opo/OpoSummary.js +2 -2
- package/dist/esm/src/components/e-commerce/opo/TextualManageOpoForm.js +12 -12
- package/dist/esm/src/components/e-commerce/opo/TextualOpoItemUpdater.js +8 -8
- package/dist/esm/src/components/logistics/ipo/IPOItemUpdater.js +5 -5
- package/dist/esm/src/components/logistics/ipo/ManageIPOForm.js +4 -4
- package/dist/esm/src/components/logistics/ipo/TextualIPOItemUpdater.js +8 -8
- package/dist/esm/src/components/logistics/ipo/TextualManageIPOForm.js +12 -12
- package/dist/esm/src/data/loaders/e-commerce/getAllOpos.js +1 -1
- package/dist/esm/src/data/loaders/e-commerce-loaders.js +0 -1
- package/dist/esm/src/lib/isEORIValid.js +0 -1
- package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
- package/dist/esm/types/data/services/archive-service.d.ts +2 -2
- package/dist/esm/types/data/services/common/cancellation-service.d.ts +1 -1
- package/dist/esm/types/data/services/common/confirmation-service.d.ts +1 -1
- package/dist/esm/types/types/e-commerce/iro/types.d.ts +5 -9
- package/dist/esm/types/types/e-commerce/opo/types.d.ts +5 -9
- package/dist/esm/types/types/logistics/Ipo.d.ts +5 -9
- package/package.json +1 -1
|
@@ -23,23 +23,23 @@ function TextualIPOItemUpdater({ item, index, handleAddReport, handleUpdateQuant
|
|
|
23
23
|
const { line_item_number, product, ordered_quantity, received_quantity, registered_quantity, released_quantity, reports, } = item;
|
|
24
24
|
const [open, setOpen] = useState(false);
|
|
25
25
|
// these values where wrapped with useMemo before but that did not work well while updating values
|
|
26
|
-
reports
|
|
27
|
-
? reports
|
|
26
|
+
reports !== undefined && reports.length > 0
|
|
27
|
+
? reports
|
|
28
28
|
.filter((report) => report.type === "received")
|
|
29
29
|
.reduce((a, b) => a + b.quantity, 0)
|
|
30
30
|
: 0;
|
|
31
|
-
const registered_reports_quantity = reports
|
|
32
|
-
? reports
|
|
31
|
+
const registered_reports_quantity = reports !== undefined && reports.length > 0
|
|
32
|
+
? reports
|
|
33
33
|
.filter((report) => report.type === "registered")
|
|
34
34
|
.reduce((a, b) => a + b.quantity, 0)
|
|
35
35
|
: 0;
|
|
36
|
-
reports
|
|
37
|
-
? reports
|
|
36
|
+
reports !== undefined && reports.length > 0
|
|
37
|
+
? reports
|
|
38
38
|
.filter((report) => report.type === "released")
|
|
39
39
|
.reduce((a, b) => a + b.quantity, 0)
|
|
40
40
|
: 0;
|
|
41
|
-
const dbReports = item.reports?.
|
|
42
|
-
const preReports = item.reports?.
|
|
41
|
+
const dbReports = item.reports?.filter((report) => "id" in report) || [];
|
|
42
|
+
const preReports = item.reports?.filter((report) => Boolean("id" in report) === false) ||
|
|
43
43
|
[];
|
|
44
44
|
return (jsx(Stack, { spacing: 1, children: item && (jsxs(Fragment, { children: [jsxs(Stack, { direction: "row", justifyContent: "space-between", alignItems: "center", sx: { mb: 1 }, children: [jsxs(Typography, { variant: "body1", children: ["Line Item Number: ", line_item_number] }), jsxs(Typography, { variant: "body1", children: ["Part Number: ", product?.product_number] }), image && (jsx(Fragment, { children: jsx(ImagePreviewTooltip, { image: image, label: item.product?.title }) }))] }), jsx(Divider, { sx: { mb: 1 } }), showing && showing.includes("received") && (jsxs(Fragment, { children: [jsxs(Stack, { direction: "row", justifyContent: "space-between", alignItems: "center", sx: { mb: 1 }, children: [jsx(Typography, { variant: "body2", children: "Received" }), jsx(TextualAmountUpdater, { label: "Received", currentValue: received_quantity, totalValue: ordered_quantity, minNewValue: 0 + registered_quantity, maxNewValue: ordered_quantity, color: "info", handleChange: (newValue) => {
|
|
45
45
|
handleUpdateQuantity(newValue, item.id, "received_quantity");
|
|
@@ -100,7 +100,7 @@ function CancelIpoDialog({ open, handleClose, orderID, revalidateCallback, }) {
|
|
|
100
100
|
function TextualManageIPOForm({ data, sx, revalidateCallback, handleClose, role, }) {
|
|
101
101
|
const [formState, formAction] = useFormState((prevState, formData) => updateIpoAction(data.id, prevState, formData), INITIAL_STATE);
|
|
102
102
|
const { handleAddMessage } = useSnackbar();
|
|
103
|
-
const [items, setItems] = useState(data.items
|
|
103
|
+
const [items, setItems] = useState(data.items ? data.items : []);
|
|
104
104
|
const [confirmDialogOpen, setConfirmDialogOpen] = useState(false);
|
|
105
105
|
const [cancelDialogOpen, setCancelDialogOpen] = useState(false);
|
|
106
106
|
const [showing, setShowing] = useState(["received", "registered", "released", "reports"]);
|
|
@@ -138,7 +138,7 @@ function TextualManageIPOForm({ data, sx, revalidateCallback, handleClose, role,
|
|
|
138
138
|
received_quantity: item.received_quantity,
|
|
139
139
|
registered_quantity: item.registered_quantity,
|
|
140
140
|
released_quantity: item.released_quantity,
|
|
141
|
-
reports: item.reports?.
|
|
141
|
+
reports: item.reports?.map((report) => {
|
|
142
142
|
return {
|
|
143
143
|
id: "id" in report ? report.id : undefined,
|
|
144
144
|
quantity: report.quantity,
|
|
@@ -161,23 +161,23 @@ function TextualManageIPOForm({ data, sx, revalidateCallback, handleClose, role,
|
|
|
161
161
|
const handleAddReport = (report, itemID) => {
|
|
162
162
|
const newItems = [...items];
|
|
163
163
|
const index = newItems.findIndex((item) => item.id === itemID);
|
|
164
|
-
const reportsOnItem = newItems[index]?.reports
|
|
164
|
+
const reportsOnItem = newItems[index]?.reports || [];
|
|
165
165
|
const newReports = [...reportsOnItem, report];
|
|
166
166
|
if (newItems[index]?.reports == undefined) {
|
|
167
|
-
newItems[index] = { ...newItems[index], reports:
|
|
167
|
+
newItems[index] = { ...newItems[index], reports: [] };
|
|
168
168
|
}
|
|
169
|
-
newItems[index].reports
|
|
169
|
+
newItems[index].reports = newReports;
|
|
170
170
|
setItems(newItems);
|
|
171
171
|
};
|
|
172
172
|
const handleRemoveReportAtIndex = (itemID, index) => {
|
|
173
173
|
const newItems = [...items];
|
|
174
174
|
const itemIndex = newItems.findIndex((item) => item.id === itemID);
|
|
175
|
-
const reportsOnItem = newItems[itemIndex]?.reports
|
|
175
|
+
const reportsOnItem = newItems[itemIndex]?.reports || [];
|
|
176
176
|
const dbReports = reportsOnItem.filter((report) => "id" in report);
|
|
177
177
|
const preReports = reportsOnItem.filter((report) => !("id" in report));
|
|
178
178
|
preReports.splice(index, 1);
|
|
179
179
|
const newReports = [...dbReports, ...preReports];
|
|
180
|
-
newItems[itemIndex].reports
|
|
180
|
+
newItems[itemIndex].reports = newReports;
|
|
181
181
|
setItems(newItems);
|
|
182
182
|
};
|
|
183
183
|
useEffect(() => {
|
|
@@ -200,20 +200,20 @@ function TextualManageIPOForm({ data, sx, revalidateCallback, handleClose, role,
|
|
|
200
200
|
}, [formState?.strapiErrors]);
|
|
201
201
|
useEffect(() => {
|
|
202
202
|
console.log("data", data);
|
|
203
|
-
if (data.items
|
|
204
|
-
setItems(data.items
|
|
203
|
+
if (data.items) {
|
|
204
|
+
setItems(data.items ? data.items : []);
|
|
205
205
|
}
|
|
206
206
|
}, [data]);
|
|
207
207
|
return (jsx(Box, { sx: [
|
|
208
208
|
// You cannot spread `sx` directly because `SxProps` (typeof sx) can be an array.
|
|
209
209
|
...(Array.isArray(sx) ? sx : [sx]),
|
|
210
210
|
], children: jsxs(Grid, { container: true, spacing: 2, children: [jsx(Grid, { item: true, xs: 12, children: jsxs(Stack, { spacing: 2, children: [jsxs(Stack, { direction: "row", spacing: 2, justifyContent: "space-between", children: [jsxs(Stack, { spacing: 2, children: [jsx(Typography, { variant: "h3", component: "h1", children: "Management Inbound Purchase Order" }), jsx(Typography, { variant: "body1", children: "Manage arrival, registration and recieval of purchase order" })] }), jsx(NoteTakingComponent, { content: "", related: [{ id: data.id, __type: "api::logistics.ipo" }], revalidateCallback: revalidateCallback })] }), jsx(Divider, {})] }) }), jsx(Grid, { item: true, xs: 12, children: jsx(Typography, { variant: "h5", sx: { py: 1 }, children: "Details" }) }), jsx(Grid, { item: true, xs: 6, children: jsx(Paper, { elevation: 2, sx: { p: 2, height: "100%" }, children: jsxs(Stack, { spacing: 2, children: [jsxs(Stack, { direction: "row", spacing: 2, alignItems: "center", children: [jsx(NumbersIcon, { color: "primary" }), jsx(Typography, { variant: "subtitle1", color: "text.secondary", width: "200px", children: "Purchase Order Number" }), jsx(Typography, { variant: "body1", fontWeight: "medium", children: data.ipo_number })] }), jsxs(Stack, { direction: "row", spacing: 2, alignItems: "center", children: [jsx(DescriptionIcon, { color: "primary" }), jsx(Typography, { variant: "subtitle1", color: "text.secondary", width: "200px", children: "Custom Reference" }), jsx(Typography, { variant: "body1", fontWeight: "medium", children: data.customer_reference })] }), jsxs(Stack, { direction: "row", spacing: 2, alignItems: "center", children: [jsx(CalendarTodayIcon, { color: "primary" }), jsx(Typography, { variant: "subtitle1", color: "text.secondary", width: "200px", children: "Order Date" }), jsx(Typography, { variant: "body1", fontWeight: "medium", children: data.order_date })] }), jsxs(Stack, { direction: "row", spacing: 2, alignItems: "center", children: [jsx(BusinessIcon, { color: "primary" }), jsx(Typography, { variant: "subtitle1", color: "text.secondary", width: "200px", children: "Supplier" }), jsx(Typography, { variant: "body1", fontWeight: "medium", children: data.vendor_profile?.business_credentials?.company_name })] }), jsxs(Stack, { direction: "row", spacing: 2, alignItems: "center", children: [jsx(UpdateIcon, { color: "primary" }), jsx(Typography, { variant: "subtitle1", color: "text.secondary", width: "200px", children: "Order Status" }), jsx(IpoStatusIndicator, { status: data.internal_status })] })] }) }) }), role === "enduser" && (jsx(Grid, { item: true, xs: 6, children: jsx(Paper, { elevation: 2, sx: { p: 2, height: "100%" }, children: jsxs(Stack, { spacing: 2, children: [(data.internal_status === "placed" ||
|
|
211
|
-
data.internal_status === "released_on_stock") && (jsxs(Fragment, { children: [jsx(Button, { variant: "contained", color: "primary", onClick: () => setConfirmDialogOpen(true), children: "Confirm order" }), jsx(Alert, { severity: "warning", children: "Please confirm the order as soon as possible, only upon confirmation this order will be available to the dispatcher" }), jsx(ConfirmFormDialog, { open: confirmDialogOpen, handleClose: () => setConfirmDialogOpen(false), orderID: data.
|
|
212
|
-
data.internal_status === "ordered") && (jsxs(Fragment, { children: [jsx(Button, { variant: "contained", color: "error", onClick: () => setCancelDialogOpen(true), children: "Cancel order" }), jsx(CancelIpoDialog, { open: cancelDialogOpen, handleClose: () => setCancelDialogOpen(false), orderID: data.
|
|
211
|
+
data.internal_status === "released_on_stock") && (jsxs(Fragment, { children: [jsx(Button, { variant: "contained", color: "primary", onClick: () => setConfirmDialogOpen(true), children: "Confirm order" }), jsx(Alert, { severity: "warning", children: "Please confirm the order as soon as possible, only upon confirmation this order will be available to the dispatcher" }), jsx(ConfirmFormDialog, { open: confirmDialogOpen, handleClose: () => setConfirmDialogOpen(false), orderID: data.documentId, currentStatus: data.internal_status, revalidateCallback: revalidateCallback })] })), (data.internal_status === "placed" ||
|
|
212
|
+
data.internal_status === "ordered") && (jsxs(Fragment, { children: [jsx(Button, { variant: "contained", color: "error", onClick: () => setCancelDialogOpen(true), children: "Cancel order" }), jsx(CancelIpoDialog, { open: cancelDialogOpen, handleClose: () => setCancelDialogOpen(false), orderID: data.documentId, revalidateCallback: revalidateCallback })] }))] }) }) })), jsx(Grid, { item: true, xs: 12, children: jsxs(Stack, { spacing: 2, children: [jsx(Typography, { variant: "h5", children: "Documents" }), jsx(Paper, { sx: { p: 2 }, children: jsxs(Stack, { spacing: 1, children: [role === "enduser" && (jsx(Fragment, { children: data.order_confirmation ? (jsxs(Fragment, { children: [jsx(Typography, { variant: "h6", children: "Order Confirmation" }), jsx(Typography, { children: data.order_confirmation?.name }), jsx(Button, { variant: "contained", onClick: () => {
|
|
213
213
|
downloadBase64File(`api/ipos/${data.id}`, "order_confirmation");
|
|
214
214
|
}, children: "Download" })] })) : (jsxs(Fragment, { children: [jsx(Typography, { variant: "h5", children: "Order Confirmation" }), jsx(Typography, { variant: "body1", children: "Here you can upload the the order confirmation for this order" }), jsx(Typography, { variant: "body1", children: "FileUpload" }), jsx(Divider, {}), jsx(UploadBase64MediaForm /* This form manages it's own state internally */, { reference: "api::logistics.ipo", refID: data.id, field: "order_confirmation", multiple: false, accept: "text/*,application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document", path: "api/ipos", componentName: "order_confirmation", componentReference: "common.base64-encoded-media", revalidateCallback: revalidateCallback })] })) })), data.delivery_note ? (jsxs(Fragment, { children: [jsx(Typography, { variant: "h6", children: "Delivery Note" }), jsx(Typography, { children: data.delivery_note?.name }), jsx(Button, { variant: "contained", onClick: () => {
|
|
215
215
|
downloadBase64File(`api/ipos/${data.id}`, "delivery_note");
|
|
216
|
-
}, children: "Download" })] })) : (jsxs(Fragment, { children: [jsx(Typography, { variant: "h5", children: "Delivery Note" }), jsx(Typography, { variant: "body1", children: "Here you can upload the the delivery note for this order" }), jsx(Divider, {}), jsx(UploadBase64MediaForm, { reference: "api::logistics.ipo", refID: data.id, field: "delivery_note", multiple: false, accept: "text/*,application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document", path: "api/ipos", componentName: "delivery_note", componentReference: "common.base64-encoded-media", revalidateCallback: revalidateCallback })] }))] }) })] }) }), data?.notes?.
|
|
216
|
+
}, children: "Download" })] })) : (jsxs(Fragment, { children: [jsx(Typography, { variant: "h5", children: "Delivery Note" }), jsx(Typography, { variant: "body1", children: "Here you can upload the the delivery note for this order" }), jsx(Divider, {}), jsx(UploadBase64MediaForm, { reference: "api::logistics.ipo", refID: data.id, field: "delivery_note", multiple: false, accept: "text/*,application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document", path: "api/ipos", componentName: "delivery_note", componentReference: "common.base64-encoded-media", revalidateCallback: revalidateCallback })] }))] }) })] }) }), data?.notes?.length > 0 && (jsx(Grid, { item: true, xs: 12, children: jsxs(Stack, { spacing: 2, children: [jsx(Typography, { variant: "h5", children: "Notes" }), jsx(NotesDisplay, { notes: data.notes }), jsx(Divider, {})] }) })), jsx(Grid, { item: true, xs: 12, children: jsxs(Stack, { spacing: 1, children: [jsx(Typography, { variant: "h5", children: "Items" }), jsxs(Stack, { direction: "row", alignItems: "center", justifyContent: "flex-end", spacing: 2, component: Paper, p: 1, sx: {
|
|
217
217
|
bgcolor: "background.default",
|
|
218
218
|
border: "1px solid",
|
|
219
219
|
borderColor: "divider",
|
|
@@ -9,7 +9,6 @@ import qs from '../../../node_modules/qs/lib/index.js';
|
|
|
9
9
|
import { fetchData } from './loaders.js';
|
|
10
10
|
import { getStrapiURL } from '../../lib/utils.js';
|
|
11
11
|
import { unstable_noStore } from 'next/cache';
|
|
12
|
-
import '../services/get-user-me-loader.js';
|
|
13
12
|
|
|
14
13
|
const baseUrl = getStrapiURL();
|
|
15
14
|
// this function should not be deleted because it is used in for the front-end
|