|
|
@@ -24,7 +24,7 @@ import NewCreateItem from "./newcreatitem"; |
|
|
import AssignAndRelease from "./AssignAndRelease"; |
|
|
import AssignAndRelease from "./AssignAndRelease"; |
|
|
import AssignTo from "./assignTo"; |
|
|
import AssignTo from "./assignTo"; |
|
|
import { fetchAllItemsInClient, ItemCombo } from "@/app/api/settings/item/actions"; |
|
|
import { fetchAllItemsInClient, ItemCombo } from "@/app/api/settings/item/actions"; |
|
|
import { fetchPickOrderClient, autoAssignAndReleasePickOrder, autoAssignAndReleasePickOrderByStore } from "@/app/api/pickOrder/actions"; |
|
|
|
|
|
|
|
|
import { fetchPickOrderClient, autoAssignAndReleasePickOrder, autoAssignAndReleasePickOrderByStore, fetchReleasedDoPickOrders } from "@/app/api/pickOrder/actions"; |
|
|
import Jobcreatitem from "./Jobcreatitem"; |
|
|
import Jobcreatitem from "./Jobcreatitem"; |
|
|
import { useSession } from "next-auth/react"; |
|
|
import { useSession } from "next-auth/react"; |
|
|
import { SessionWithTokens } from "@/config/authConfig"; |
|
|
import { SessionWithTokens } from "@/config/authConfig"; |
|
|
@@ -64,6 +64,19 @@ const PickOrderSearch: React.FC<Props> = ({ pickOrders }) => { |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
const [fgPickOrdersData, setFgPickOrdersData] = useState<FGPickOrderResponse[]>([]); |
|
|
const [fgPickOrdersData, setFgPickOrdersData] = useState<FGPickOrderResponse[]>([]); |
|
|
|
|
|
const [releasedOrderCount, setReleasedOrderCount] = useState<number>(0); |
|
|
|
|
|
|
|
|
|
|
|
const fetchReleasedOrderCount = useCallback(async () => { |
|
|
|
|
|
try { |
|
|
|
|
|
const releasedOrders = await fetchReleasedDoPickOrders(); |
|
|
|
|
|
// Count only orders that have a valid doOrderId |
|
|
|
|
|
const validCount = releasedOrders.filter(order => order.doOrderId).length; |
|
|
|
|
|
setReleasedOrderCount(validCount); |
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
console.error("Error fetching released order count:", error); |
|
|
|
|
|
setReleasedOrderCount(0); |
|
|
|
|
|
} |
|
|
|
|
|
}, []); |
|
|
|
|
|
|
|
|
const handleDraft = useCallback(async () =>{ |
|
|
const handleDraft = useCallback(async () =>{ |
|
|
try{ |
|
|
try{ |
|
|
@@ -105,6 +118,68 @@ const PickOrderSearch: React.FC<Props> = ({ pickOrders }) => { |
|
|
} |
|
|
} |
|
|
},[t, fgPickOrdersData]); |
|
|
},[t, fgPickOrdersData]); |
|
|
|
|
|
|
|
|
|
|
|
const handleAllDraft = useCallback(async () =>{ |
|
|
|
|
|
try { |
|
|
|
|
|
const releasedOrders = await fetchReleasedDoPickOrders(); |
|
|
|
|
|
|
|
|
|
|
|
if(releasedOrders.length === 0) { |
|
|
|
|
|
console.log("No released do_pick_order records found"); |
|
|
|
|
|
|
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
console.log("Found released orders:", releasedOrders); |
|
|
|
|
|
|
|
|
|
|
|
const confirmResult = await Swal.fire({ |
|
|
|
|
|
title: t("Confirm Print"), |
|
|
|
|
|
text: t(`Do you want to print ${releasedOrders.length} draft(s)?`), |
|
|
|
|
|
icon: "question", |
|
|
|
|
|
showCancelButton: true, |
|
|
|
|
|
confirmButtonText: t("Yes, print"), |
|
|
|
|
|
cancelButtonText: t("Cancel"), |
|
|
|
|
|
confirmButtonColor: "#3085d6", |
|
|
|
|
|
cancelButtonColor: "#d33" |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
// If user cancels, exit the function |
|
|
|
|
|
if (!confirmResult.isConfirmed) { |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for (const order of releasedOrders) { |
|
|
|
|
|
const { doOrderId, pickOrderId } = order; |
|
|
|
|
|
|
|
|
|
|
|
console.log(`Processing order - DO Order ID: ${doOrderId}, Pick order ID: ${pickOrderId}`); |
|
|
|
|
|
|
|
|
|
|
|
const printRequest = { |
|
|
|
|
|
printerId: 1, |
|
|
|
|
|
printQty: 1, |
|
|
|
|
|
isDraft: true, |
|
|
|
|
|
numOfCarton: 0, |
|
|
|
|
|
deliveryOrderId: doOrderId, |
|
|
|
|
|
pickOrderId: pickOrderId |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
console.log("Printing draft with request:", printRequest) |
|
|
|
|
|
|
|
|
|
|
|
const response = await printDN(printRequest); |
|
|
|
|
|
if(!response.success) { |
|
|
|
|
|
console.error(`Print failed for order ${order.ticketNo}:`, response.message); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Swal.fire({ |
|
|
|
|
|
position: "bottom-end", |
|
|
|
|
|
icon: "success", |
|
|
|
|
|
text: t(`Printed ${releasedOrders.length} draft(s) successfully.`), |
|
|
|
|
|
showConfirmButton: false, |
|
|
|
|
|
timer: 1500 |
|
|
|
|
|
}); |
|
|
|
|
|
} catch(error){ |
|
|
|
|
|
console.error("Error in handleAllDraft:",error); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
},[t]); |
|
|
|
|
|
|
|
|
const handleDN = useCallback(async () =>{ |
|
|
const handleDN = useCallback(async () =>{ |
|
|
const askNumofCarton = await Swal.fire({ |
|
|
const askNumofCarton = await Swal.fire({ |
|
|
title: t("Enter the number of cartons: "), |
|
|
title: t("Enter the number of cartons: "), |
|
|
@@ -319,6 +394,10 @@ const PickOrderSearch: React.FC<Props> = ({ pickOrders }) => { |
|
|
} |
|
|
} |
|
|
},[t, fgPickOrdersData]); |
|
|
},[t, fgPickOrdersData]); |
|
|
|
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
|
|
fetchReleasedOrderCount(); |
|
|
|
|
|
}, [fetchReleasedOrderCount]); |
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
useEffect(() => { |
|
|
const onAssigned = () => { |
|
|
const onAssigned = () => { |
|
|
localStorage.removeItem('hideCompletedUntilNext'); |
|
|
localStorage.removeItem('hideCompletedUntilNext'); |
|
|
@@ -413,7 +492,6 @@ const PickOrderSearch: React.FC<Props> = ({ pickOrders }) => { |
|
|
setIsOpenCreateModal(false) |
|
|
setIsOpenCreateModal(false) |
|
|
}, []) |
|
|
}, []) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
useEffect(() => { |
|
|
|
|
|
|
|
|
if (tabIndex === 3) { |
|
|
if (tabIndex === 3) { |
|
|
@@ -629,6 +707,12 @@ const PickOrderSearch: React.FC<Props> = ({ pickOrders }) => { |
|
|
{/* ✅ Updated print buttons with completion status */} |
|
|
{/* ✅ Updated print buttons with completion status */} |
|
|
<Grid item xs={6} display="flex" justifyContent="flex-end"> |
|
|
<Grid item xs={6} display="flex" justifyContent="flex-end"> |
|
|
<Stack direction="row" spacing={1}> |
|
|
<Stack direction="row" spacing={1}> |
|
|
|
|
|
<Button |
|
|
|
|
|
variant="contained" |
|
|
|
|
|
onClick={handleAllDraft} |
|
|
|
|
|
> |
|
|
|
|
|
{t("Print All Draft")} ({releasedOrderCount}) |
|
|
|
|
|
</Button> |
|
|
|
|
|
|
|
|
<Button |
|
|
<Button |
|
|
variant="contained" |
|
|
variant="contained" |
|
|
|