90 lines
2.0 KiB
TypeScript
90 lines
2.0 KiB
TypeScript
/**
|
||
* 驗證相關工具函式
|
||
*/
|
||
|
||
|
||
|
||
/**
|
||
* 驗證撥補單表單資料
|
||
*/
|
||
export const validateTransferOrder = (formData: {
|
||
sourceWarehouseId: string;
|
||
targetWarehouseId: string;
|
||
productId: string;
|
||
quantity: number;
|
||
}): { isValid: boolean; error?: string } => {
|
||
if (!formData.sourceWarehouseId) {
|
||
return { isValid: false, error: "請選擇來源倉庫" };
|
||
}
|
||
|
||
if (!formData.targetWarehouseId) {
|
||
return { isValid: false, error: "請選擇目標倉庫" };
|
||
}
|
||
|
||
if (formData.sourceWarehouseId === formData.targetWarehouseId) {
|
||
return { isValid: false, error: "來源倉庫與目標倉庫不能相同" };
|
||
}
|
||
|
||
if (!formData.productId) {
|
||
return { isValid: false, error: "請選擇撥補商品" };
|
||
}
|
||
|
||
if (formData.quantity <= 0) {
|
||
return { isValid: false, error: "撥補數量必須大於0" };
|
||
}
|
||
|
||
return { isValid: true };
|
||
};
|
||
|
||
/**
|
||
* 驗證撥補數量是否超過可用庫存
|
||
*/
|
||
export const validateTransferQuantity = (
|
||
quantity: number,
|
||
availableQuantity: number
|
||
): { isValid: boolean; error?: string } => {
|
||
if (quantity > availableQuantity) {
|
||
return {
|
||
isValid: false,
|
||
error: `撥補數量不能超過可用庫存 (${availableQuantity})`,
|
||
};
|
||
}
|
||
return { isValid: true };
|
||
};
|
||
|
||
/**
|
||
* 驗證倉庫表單資料
|
||
*/
|
||
export const validateWarehouse = (formData: {
|
||
code: string;
|
||
name: string;
|
||
address: string;
|
||
}): { isValid: boolean; error?: string } => {
|
||
if (!formData.name.trim()) {
|
||
return { isValid: false, error: "倉庫名稱為必填欄位" };
|
||
}
|
||
|
||
if (!formData.address.trim()) {
|
||
return { isValid: false, error: "倉庫地址為必填欄位" };
|
||
}
|
||
|
||
return { isValid: true };
|
||
};
|
||
|
||
/**
|
||
* 驗證發票號碼格式 (AA-12345678)
|
||
*/
|
||
export const validateInvoiceNumber = (invoiceNumber?: string): { isValid: boolean; error?: string } => {
|
||
if (!invoiceNumber) return { isValid: true };
|
||
|
||
const regex = /^[A-Z]{2}-\d{8}$/;
|
||
if (!regex.test(invoiceNumber)) {
|
||
return {
|
||
isValid: false,
|
||
error: "發票號碼格式錯誤,應為:AB-12345678",
|
||
};
|
||
}
|
||
|
||
return { isValid: true };
|
||
};
|