CANCERYS\kw093 1 month ago
parent
commit
4fc19f05e5
5 changed files with 53 additions and 42 deletions
  1. +7
    -9
      src/app/api/do/actions.tsx
  2. +18
    -10
      src/components/FinishedGoodSearch/FinishedGoodSearch.tsx
  3. +9
    -0
      src/components/FinishedGoodSearch/GoodPickExecution.tsx
  4. +16
    -22
      src/components/FinishedGoodSearch/GoodPickExecutionRecord.tsx
  5. +3
    -1
      src/i18n/zh/pickOrder.json

+ 7
- 9
src/app/api/do/actions.tsx View File

@@ -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());


+ 18
- 10
src/components/FinishedGoodSearch/FinishedGoodSearch.tsx View File

@@ -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]);





+ 9
- 0
src/components/FinishedGoodSearch/GoodPickExecution.tsx View File

@@ -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);
}


+ 16
- 22
src/components/FinishedGoodSearch/GoodPickExecutionRecord.tsx View File

@@ -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>
))}


+ 3
- 1
src/i18n/zh/pickOrder.json View File

@@ -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.": "目前沒有可用的提料單。"
}

Loading…
Cancel
Save