ソースを参照

Dn draft fix

master
kelvin.yau 1ヶ月前
コミット
bb0ea6158f
5個のファイルの変更53行の追加42行の削除
  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 ファイルの表示

@@ -77,12 +77,11 @@ export interface AssignByStoreResponse {
} }


export interface PrintDeliveryNoteRequest{ export interface PrintDeliveryNoteRequest{
deliveryOrderId: number;
doPickOrderId: number;
printerId: number; printerId: number;
printQty: number; printQty: number;
numOfCarton: number; numOfCarton: number;
isDraft: boolean; isDraft: boolean;
pickOrderId: number;
} }


export interface PrintDeliveryNoteResponse{ export interface PrintDeliveryNoteResponse{
@@ -91,10 +90,10 @@ export interface PrintDeliveryNoteResponse{
} }


export interface PrintDNLabelsRequest{ export interface PrintDNLabelsRequest{
deliveryOrderId: number,
printerId: number,
printQty: number,
numOfCarton: number
doPickOrderId: number;
printerId: number;
printQty: number;
numOfCarton: number;
} }


export interface PrintDNLabelsRespone{ export interface PrintDNLabelsRespone{
@@ -186,14 +185,13 @@ export const fetchDoSearch = cache(async (code: string, shopName: string, status


export async function printDN(request: PrintDeliveryNoteRequest){ export async function printDN(request: PrintDeliveryNoteRequest){
const params = new URLSearchParams(); const params = new URLSearchParams();
params.append('deliveryOrderId', request.deliveryOrderId.toString());
params.append('doPickOrderId', request.doPickOrderId.toString());
params.append('printerId', request.printerId.toString()); params.append('printerId', request.printerId.toString());
if (request.printQty !== null && request.printQty !== undefined) { if (request.printQty !== null && request.printQty !== undefined) {
params.append('printQty', request.printQty.toString()); params.append('printQty', request.printQty.toString());
} }
params.append('numOfCarton', request.numOfCarton.toString()); params.append('numOfCarton', request.numOfCarton.toString());
params.append('isDraft', request.isDraft.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()}`,{ const response = await serverFetchWithNoContent(`${BASE_API_URL}/do/print-DN?${params.toString()}`,{
method: "GET", method: "GET",
@@ -204,7 +202,7 @@ export async function printDN(request: PrintDeliveryNoteRequest){


export async function printDNLabels(request: PrintDNLabelsRequest){ export async function printDNLabels(request: PrintDNLabelsRequest){
const params = new URLSearchParams(); const params = new URLSearchParams();
params.append('deliveryOrderId', request.deliveryOrderId.toString());
params.append('doPickOrderId', request.doPickOrderId.toString());
params.append('printerId', request.printerId.toString()); params.append('printerId', request.printerId.toString());
if (request.printQty !== null && request.printQty !== undefined) { if (request.printQty !== null && request.printQty !== undefined) {
params.append('printQty', request.printQty.toString()); params.append('printQty', request.printQty.toString());


+ 18
- 10
src/components/FinishedGoodSearch/FinishedGoodSearch.tsx ファイルの表示

@@ -77,7 +77,7 @@ const PickOrderSearch: React.FC<Props> = ({ pickOrders }) => {
const fetchReleasedOrderCount = useCallback(async () => { const fetchReleasedOrderCount = useCallback(async () => {
try { try {
const releasedOrders = await fetchReleasedDoPickOrders(); const releasedOrders = await fetchReleasedDoPickOrders();
const validCount = releasedOrders.filter(order => order.doOrderId).length;
const validCount = releasedOrders.length;
setReleasedOrderCount(validCount); setReleasedOrderCount(validCount);
} catch (error) { } catch (error) {
console.error("Error fetching released order count:", error); console.error("Error fetching released order count:", error);
@@ -111,6 +111,11 @@ const PickOrderSearch: React.FC<Props> = ({ pickOrders }) => {
try{ try{
if (fgPickOrdersData.length === 0) { if (fgPickOrdersData.length === 0) {
console.error("No FG Pick order data available"); 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; return;
} }


@@ -121,8 +126,7 @@ const PickOrderSearch: React.FC<Props> = ({ pickOrders }) => {
printQty: 1, printQty: 1,
isDraft: true, isDraft: true,
numOfCarton: 0, numOfCarton: 0,
deliveryOrderId: currentFgOrder.deliveryOrderId,
pickOrderId: currentFgOrder.pickOrderId
doPickOrderId: currentFgOrder.doPickOrderId
}; };


console.log("Printing draft with request: ", printRequest); console.log("Printing draft with request: ", printRequest);
@@ -149,11 +153,16 @@ const PickOrderSearch: React.FC<Props> = ({ pickOrders }) => {


const handleAllDraft = useCallback(async () =>{ const handleAllDraft = useCallback(async () =>{
try { try {
const releasedOrders = await fetchReleasedDoPickOrders();
const releasedOrders = await fetchReleasedDoPickOrders();
console.log('fgPickOrdersData length:' + releasedOrders.length)


if(releasedOrders.length === 0) { if(releasedOrders.length === 0) {
console.log("No released do_pick_order records found"); console.log("No released do_pick_order records found");
Swal.fire({
title: "",
text: t("No released pick order records found."),
icon: "info"
})
return; return;
} }
console.log("Found released orders:", releasedOrders); console.log("Found released orders:", releasedOrders);
@@ -184,17 +193,16 @@ const PickOrderSearch: React.FC<Props> = ({ pickOrders }) => {
}); });


for (const order of releasedOrders) { 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 = { const printRequest = {
printerId: 1, printerId: 1,
printQty: 1, printQty: 1,
isDraft: true, isDraft: true,
numOfCarton: 0, numOfCarton: 0,
deliveryOrderId: doOrderId,
pickOrderId: pickOrderId
doPickOrderId: doPickOrderId
}; };


console.log("Printing draft with request:", printRequest) console.log("Printing draft with request:", printRequest)
@@ -216,7 +224,7 @@ const PickOrderSearch: React.FC<Props> = ({ pickOrders }) => {
console.error("Error in handleAllDraft:",error); console.error("Error in handleAllDraft:",error);
} }


},[t]);
},[t, fgPickOrdersData]);








+ 9
- 0
src/components/FinishedGoodSearch/GoodPickExecution.tsx ファイルの表示

@@ -371,10 +371,19 @@ const fetchFgPickOrdersData = useCallback(async () => {
setFgPickOrders(fgPickOrders); setFgPickOrders(fgPickOrders);


if (onFgPickOrdersChange) {
onFgPickOrdersChange(fgPickOrders);
}

} catch (error) { } catch (error) {
console.error("❌ Error fetching FG pick orders:", error); console.error("❌ Error fetching FG pick orders:", error);
setFgPickOrders([]); setFgPickOrders([]);

if (onFgPickOrdersChange) {
onFgPickOrdersChange([]);
}
} finally { } finally {
setFgPickOrdersLoading(false); setFgPickOrdersLoading(false);
} }


+ 16
- 22
src/components/FinishedGoodSearch/GoodPickExecutionRecord.tsx ファイルの表示

@@ -111,8 +111,7 @@ const GoodPickExecutionRecord: React.FC<Props> = ({ filterArgs }) => {
const formProps = useForm(); const formProps = useForm();
const errors = formProps.formState.errors; 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({ const askNumofCarton = await Swal.fire({
title: t("Enter the number of cartons: "), title: t("Enter the number of cartons: "),
icon: "info", icon: "info",
@@ -148,8 +147,7 @@ const GoodPickExecutionRecord: React.FC<Props> = ({ filterArgs }) => {
printQty: 1, printQty: 1,
isDraft: false, isDraft: false,
numOfCarton: numOfCartons, numOfCarton: numOfCartons,
deliveryOrderId: deliveryOrderId,
pickOrderId: pickOrderId
doPickOrderId: doPickOrderId
}; };


console.log("Printing Delivery Note with request: ", printRequest); console.log("Printing Delivery Note with request: ", printRequest);
@@ -173,7 +171,7 @@ const GoodPickExecutionRecord: React.FC<Props> = ({ filterArgs }) => {
} }
}, [t]); }, [t]);


const handleDNandLabel = useCallback(async (deliveryOrderId: number, pickOrderId: number) => {
const handleDNandLabel = useCallback(async (doPickOrderId: number) => {
const askNumofCarton = await Swal.fire({ const askNumofCarton = await Swal.fire({
title: t("Enter the number of cartons: "), title: t("Enter the number of cartons: "),
icon: "info", icon: "info",
@@ -205,19 +203,18 @@ const GoodPickExecutionRecord: React.FC<Props> = ({ filterArgs }) => {
const numOfCartons = askNumofCarton.value; const numOfCartons = askNumofCarton.value;
try{ try{
const printDNRequest = { 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 = { const printDNLabelsRequest = {
printerId: 1, printerId: 1,
printQty: 1, printQty: 1,
numOfCarton: numOfCartons, numOfCarton: numOfCartons,
deliveryOrderId: deliveryOrderId
doPickOrderId: doPickOrderId
}; };
console.log("Printing Labels with request: ", printDNLabelsRequest); console.log("Printing Labels with request: ", printDNLabelsRequest);
@@ -251,7 +248,7 @@ const GoodPickExecutionRecord: React.FC<Props> = ({ filterArgs }) => {
} }
}, [t]); }, [t]);


const handleLabel = useCallback(async (deliveryOrderId: number) => {
const handleLabel = useCallback(async (doPickOrderId: number) => {
const askNumofCarton = await Swal.fire({ const askNumofCarton = await Swal.fire({
title: t("Enter the number of cartons: "), title: t("Enter the number of cartons: "),
icon: "info", icon: "info",
@@ -286,7 +283,7 @@ const GoodPickExecutionRecord: React.FC<Props> = ({ filterArgs }) => {
printerId: 1, printerId: 1,
printQty: 1, printQty: 1,
numOfCarton: numOfCartons, numOfCarton: numOfCartons,
deliveryOrderId: deliveryOrderId,
doPickOrderId: doPickOrderId
}; };


console.log("Printing Labels with request: ", printRequest); console.log("Printing Labels with request: ", printRequest);
@@ -687,14 +684,12 @@ if (showDetailView && selectedDoPickOrder) {
> >
{t("View Details")} {t("View Details")}
</Button> </Button>
{doPickOrder.fgPickOrders && doPickOrder.fgPickOrders.length > 0 && (
<> <>
<Button <Button
variant="contained" variant="contained"
onClick={() => handleDN( onClick={() => handleDN(
doPickOrder.fgPickOrders[0].deliveryOrderId,
doPickOrder.fgPickOrders[0].pickOrderId
doPickOrder.id
)} )}
> >
{t("Print Pick Order")} {t("Print Pick Order")}
@@ -702,8 +697,7 @@ if (showDetailView && selectedDoPickOrder) {
<Button <Button
variant="contained" variant="contained"
onClick={() => handleDNandLabel( onClick={() => handleDNandLabel(
doPickOrder.fgPickOrders[0].deliveryOrderId,
doPickOrder.fgPickOrders[0].pickOrderId
doPickOrder.id
)} )}
> >
{t("Print DN & Label")} {t("Print DN & Label")}
@@ -711,13 +705,13 @@ if (showDetailView && selectedDoPickOrder) {
<Button <Button
variant="contained" variant="contained"
onClick={() => handleLabel( onClick={() => handleLabel(
doPickOrder.fgPickOrders[0].deliveryOrderId
doPickOrder.id
)} )}
> >
{t("Print Label")} {t("Print Label")}
</Button> </Button>
</> </>
)}
)
</CardActions> </CardActions>
</Card> </Card>
))} ))}


+ 3
- 1
src/i18n/zh/pickOrder.json ファイルの表示

@@ -403,5 +403,7 @@
"Select Date": "請選擇日期", "Select Date": "請選擇日期",
"Print DN & Label": "列印提料單和送貨單標籤", "Print DN & Label": "列印提料單和送貨單標籤",
"Print Label": "列印送貨單標籤", "Print Label": "列印送貨單標籤",
"Ticket Release Table": "查看提貨情況"
"Ticket Release Table": "查看提貨情況",
"Please take one pick order before printing the draft.": "請先從下方選取提料單,再列印草稿。",
"No released pick order records found.": "目前沒有可用的提料單。"
} }

読み込み中…
キャンセル
保存