Files
star-erp/resources/js/utils/validation.ts

90 lines
2.0 KiB
TypeScript
Raw Normal View History

2025-12-30 15:03:19 +08:00
/**
*
*/
/**
*
*/
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 };
};