| @@ -77,12 +77,11 @@ export interface AssignByStoreResponse { | |||
| } | |||
| export interface PrintDeliveryNoteRequest{ | |||
| deliveryOrderId: number; | |||
| doPickOrderId: number; | |||
| printerId: number; | |||
| printQty: number; | |||
| numOfCarton: number; | |||
| isDraft: boolean; | |||
| pickOrderId: number; | |||
| } | |||
| export interface PrintDeliveryNoteResponse{ | |||
| @@ -91,10 +90,10 @@ export interface PrintDeliveryNoteResponse{ | |||
| } | |||
| export interface PrintDNLabelsRequest{ | |||
| deliveryOrderId: number, | |||
| printerId: number, | |||
| printQty: number, | |||
| numOfCarton: number | |||
| doPickOrderId: number; | |||
| printerId: number; | |||
| printQty: number; | |||
| numOfCarton: number; | |||
| } | |||
| export interface PrintDNLabelsRespone{ | |||
| @@ -186,14 +185,13 @@ export const fetchDoSearch = cache(async (code: string, shopName: string, status | |||
| export async function printDN(request: PrintDeliveryNoteRequest){ | |||
| const params = new URLSearchParams(); | |||
| params.append('deliveryOrderId', request.deliveryOrderId.toString()); | |||
| params.append('doPickOrderId', request.doPickOrderId.toString()); | |||
| params.append('printerId', request.printerId.toString()); | |||
| if (request.printQty !== null && request.printQty !== undefined) { | |||
| params.append('printQty', request.printQty.toString()); | |||
| } | |||
| params.append('numOfCarton', request.numOfCarton.toString()); | |||
| params.append('isDraft', request.isDraft.toString()); | |||
| params.append('pickOrderId', request.pickOrderId.toString()); | |||
| const response = await serverFetchWithNoContent(`${BASE_API_URL}/do/print-DN?${params.toString()}`,{ | |||
| method: "GET", | |||
| @@ -204,7 +202,7 @@ export async function printDN(request: PrintDeliveryNoteRequest){ | |||
| export async function printDNLabels(request: PrintDNLabelsRequest){ | |||
| const params = new URLSearchParams(); | |||
| params.append('deliveryOrderId', request.deliveryOrderId.toString()); | |||
| params.append('doPickOrderId', request.doPickOrderId.toString()); | |||
| params.append('printerId', request.printerId.toString()); | |||
| if (request.printQty !== null && request.printQty !== undefined) { | |||
| params.append('printQty', request.printQty.toString()); | |||
| @@ -77,7 +77,7 @@ const PickOrderSearch: React.FC<Props> = ({ pickOrders }) => { | |||
| const fetchReleasedOrderCount = useCallback(async () => { | |||
| try { | |||
| const releasedOrders = await fetchReleasedDoPickOrders(); | |||
| const validCount = releasedOrders.filter(order => order.doOrderId).length; | |||
| const validCount = releasedOrders.length; | |||
| setReleasedOrderCount(validCount); | |||
| } catch (error) { | |||
| console.error("Error fetching released order count:", error); | |||
| @@ -111,6 +111,11 @@ const PickOrderSearch: React.FC<Props> = ({ pickOrders }) => { | |||
| try{ | |||
| if (fgPickOrdersData.length === 0) { | |||
| console.error("No FG Pick order data available"); | |||
| Swal.fire({ | |||
| title: "", | |||
| text: t("Please take one pick order before printing the draft."), | |||
| icon: "info" | |||
| }) | |||
| return; | |||
| } | |||
| @@ -121,8 +126,7 @@ const PickOrderSearch: React.FC<Props> = ({ pickOrders }) => { | |||
| printQty: 1, | |||
| isDraft: true, | |||
| numOfCarton: 0, | |||
| deliveryOrderId: currentFgOrder.deliveryOrderId, | |||
| pickOrderId: currentFgOrder.pickOrderId | |||
| doPickOrderId: currentFgOrder.doPickOrderId | |||
| }; | |||
| console.log("Printing draft with request: ", printRequest); | |||
| @@ -149,11 +153,16 @@ const PickOrderSearch: React.FC<Props> = ({ pickOrders }) => { | |||
| const handleAllDraft = useCallback(async () =>{ | |||
| try { | |||
| const releasedOrders = await fetchReleasedDoPickOrders(); | |||
| const releasedOrders = await fetchReleasedDoPickOrders(); | |||
| console.log('fgPickOrdersData length:' + releasedOrders.length) | |||
| if(releasedOrders.length === 0) { | |||
| console.log("No released do_pick_order records found"); | |||
| Swal.fire({ | |||
| title: "", | |||
| text: t("No released pick order records found."), | |||
| icon: "info" | |||
| }) | |||
| return; | |||
| } | |||
| console.log("Found released orders:", releasedOrders); | |||
| @@ -184,17 +193,16 @@ const PickOrderSearch: React.FC<Props> = ({ pickOrders }) => { | |||
| }); | |||
| for (const order of releasedOrders) { | |||
| const { doOrderId, pickOrderId } = order; | |||
| const doPickOrderId = order.id | |||
| console.log(`Processing order - DO Order ID: ${doOrderId}, Pick order ID: ${pickOrderId}`); | |||
| console.log(`Processing order - DoPickOrder ID: ${doPickOrderId}, Ticket No: ${order.ticketNo}`); | |||
| const printRequest = { | |||
| printerId: 1, | |||
| printQty: 1, | |||
| isDraft: true, | |||
| numOfCarton: 0, | |||
| deliveryOrderId: doOrderId, | |||
| pickOrderId: pickOrderId | |||
| doPickOrderId: doPickOrderId | |||
| }; | |||
| console.log("Printing draft with request:", printRequest) | |||
| @@ -216,7 +224,7 @@ const PickOrderSearch: React.FC<Props> = ({ pickOrders }) => { | |||
| console.error("Error in handleAllDraft:",error); | |||
| } | |||
| },[t]); | |||
| },[t, fgPickOrdersData]); | |||
| @@ -371,10 +371,19 @@ const fetchFgPickOrdersData = useCallback(async () => { | |||
| setFgPickOrders(fgPickOrders); | |||
| if (onFgPickOrdersChange) { | |||
| onFgPickOrdersChange(fgPickOrders); | |||
| } | |||
| } catch (error) { | |||
| console.error("❌ Error fetching FG pick orders:", error); | |||
| setFgPickOrders([]); | |||
| if (onFgPickOrdersChange) { | |||
| onFgPickOrdersChange([]); | |||
| } | |||
| } finally { | |||
| setFgPickOrdersLoading(false); | |||
| } | |||
| @@ -111,8 +111,7 @@ const GoodPickExecutionRecord: React.FC<Props> = ({ filterArgs }) => { | |||
| const formProps = useForm(); | |||
| const errors = formProps.formState.errors; | |||
| // ✅ Print handler functions | |||
| const handleDN = useCallback(async (deliveryOrderId: number, pickOrderId: number) => { | |||
| const handleDN = useCallback(async (doPickOrderId: number) => { | |||
| const askNumofCarton = await Swal.fire({ | |||
| title: t("Enter the number of cartons: "), | |||
| icon: "info", | |||
| @@ -148,8 +147,7 @@ const GoodPickExecutionRecord: React.FC<Props> = ({ filterArgs }) => { | |||
| printQty: 1, | |||
| isDraft: false, | |||
| numOfCarton: numOfCartons, | |||
| deliveryOrderId: deliveryOrderId, | |||
| pickOrderId: pickOrderId | |||
| doPickOrderId: doPickOrderId | |||
| }; | |||
| console.log("Printing Delivery Note with request: ", printRequest); | |||
| @@ -173,7 +171,7 @@ const GoodPickExecutionRecord: React.FC<Props> = ({ filterArgs }) => { | |||
| } | |||
| }, [t]); | |||
| const handleDNandLabel = useCallback(async (deliveryOrderId: number, pickOrderId: number) => { | |||
| const handleDNandLabel = useCallback(async (doPickOrderId: number) => { | |||
| const askNumofCarton = await Swal.fire({ | |||
| title: t("Enter the number of cartons: "), | |||
| icon: "info", | |||
| @@ -205,19 +203,18 @@ const GoodPickExecutionRecord: React.FC<Props> = ({ filterArgs }) => { | |||
| const numOfCartons = askNumofCarton.value; | |||
| try{ | |||
| const printDNRequest = { | |||
| printerId: 1, | |||
| printQty: 1, | |||
| isDraft: false, | |||
| numOfCarton: numOfCartons, | |||
| deliveryOrderId: deliveryOrderId, | |||
| pickOrderId: pickOrderId | |||
| printerId: 1, | |||
| printQty: 1, | |||
| isDraft: false, | |||
| numOfCarton: numOfCartons, | |||
| doPickOrderId: doPickOrderId, | |||
| }; | |||
| const printDNLabelsRequest = { | |||
| printerId: 1, | |||
| printQty: 1, | |||
| numOfCarton: numOfCartons, | |||
| deliveryOrderId: deliveryOrderId | |||
| doPickOrderId: doPickOrderId | |||
| }; | |||
| console.log("Printing Labels with request: ", printDNLabelsRequest); | |||
| @@ -251,7 +248,7 @@ const GoodPickExecutionRecord: React.FC<Props> = ({ filterArgs }) => { | |||
| } | |||
| }, [t]); | |||
| const handleLabel = useCallback(async (deliveryOrderId: number) => { | |||
| const handleLabel = useCallback(async (doPickOrderId: number) => { | |||
| const askNumofCarton = await Swal.fire({ | |||
| title: t("Enter the number of cartons: "), | |||
| icon: "info", | |||
| @@ -286,7 +283,7 @@ const GoodPickExecutionRecord: React.FC<Props> = ({ filterArgs }) => { | |||
| printerId: 1, | |||
| printQty: 1, | |||
| numOfCarton: numOfCartons, | |||
| deliveryOrderId: deliveryOrderId, | |||
| doPickOrderId: doPickOrderId | |||
| }; | |||
| console.log("Printing Labels with request: ", printRequest); | |||
| @@ -687,14 +684,12 @@ if (showDetailView && selectedDoPickOrder) { | |||
| > | |||
| {t("View Details")} | |||
| </Button> | |||
| {doPickOrder.fgPickOrders && doPickOrder.fgPickOrders.length > 0 && ( | |||
| <> | |||
| <Button | |||
| variant="contained" | |||
| onClick={() => handleDN( | |||
| doPickOrder.fgPickOrders[0].deliveryOrderId, | |||
| doPickOrder.fgPickOrders[0].pickOrderId | |||
| doPickOrder.id | |||
| )} | |||
| > | |||
| {t("Print Pick Order")} | |||
| @@ -702,8 +697,7 @@ if (showDetailView && selectedDoPickOrder) { | |||
| <Button | |||
| variant="contained" | |||
| onClick={() => handleDNandLabel( | |||
| doPickOrder.fgPickOrders[0].deliveryOrderId, | |||
| doPickOrder.fgPickOrders[0].pickOrderId | |||
| doPickOrder.id | |||
| )} | |||
| > | |||
| {t("Print DN & Label")} | |||
| @@ -711,13 +705,13 @@ if (showDetailView && selectedDoPickOrder) { | |||
| <Button | |||
| variant="contained" | |||
| onClick={() => handleLabel( | |||
| doPickOrder.fgPickOrders[0].deliveryOrderId | |||
| doPickOrder.id | |||
| )} | |||
| > | |||
| {t("Print Label")} | |||
| </Button> | |||
| </> | |||
| )} | |||
| ) | |||
| </CardActions> | |||
| </Card> | |||
| ))} | |||
| @@ -403,5 +403,7 @@ | |||
| "Select Date": "請選擇日期", | |||
| "Print DN & Label": "列印提料單和送貨單標籤", | |||
| "Print Label": "列印送貨單標籤", | |||
| "Ticket Release Table": "查看提貨情況" | |||
| "Ticket Release Table": "查看提貨情況", | |||
| "Please take one pick order before printing the draft.": "請先從下方選取提料單,再列印草稿。", | |||
| "No released pick order records found.": "目前沒有可用的提料單。" | |||
| } | |||