fix: 更新商品代號驗證規則為 2-8 碼
1. ProductImport.php: 匯入規則調整 2. ProductController.php: 新增/編輯 API 規則調整 3. UI: 匯入與編輯視窗提示更新
This commit is contained in:
@@ -114,7 +114,7 @@ class ProductController extends Controller
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'code' => 'required|string|min:1|max:5|unique:products,code',
|
||||
'code' => 'required|string|min:2|max:8|unique:products,code',
|
||||
'barcode' => 'required|string|unique:products,barcode',
|
||||
'name' => 'required|string|max:255',
|
||||
'category_id' => 'required|exists:categories,id',
|
||||
@@ -127,8 +127,8 @@ class ProductController extends Controller
|
||||
'purchase_unit_id' => 'nullable|exists:units,id',
|
||||
], [
|
||||
'code.required' => '商品代號為必填',
|
||||
'code.max' => '商品代號最多 5 碼',
|
||||
'code.min' => '商品代號最少 1 碼',
|
||||
'code.max' => '商品代號最多 8 碼',
|
||||
'code.min' => '商品代號最少 2 碼',
|
||||
'code.unique' => '商品代號已存在',
|
||||
'barcode.required' => '條碼編號為必填',
|
||||
'barcode.unique' => '條碼編號已存在',
|
||||
@@ -153,7 +153,7 @@ class ProductController extends Controller
|
||||
public function update(Request $request, Product $product)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'code' => 'required|string|min:1|max:5|unique:products,code,' . $product->id,
|
||||
'code' => 'required|string|min:2|max:8|unique:products,code,' . $product->id,
|
||||
'barcode' => 'required|string|unique:products,barcode,' . $product->id,
|
||||
'name' => 'required|string|max:255',
|
||||
'category_id' => 'required|exists:categories,id',
|
||||
@@ -165,8 +165,8 @@ class ProductController extends Controller
|
||||
'purchase_unit_id' => 'nullable|exists:units,id',
|
||||
], [
|
||||
'code.required' => '商品代號為必填',
|
||||
'code.max' => '商品代號最多 5 碼',
|
||||
'code.min' => '商品代號最少 1 碼',
|
||||
'code.max' => '商品代號最多 8 碼',
|
||||
'code.min' => '商品代號最少 2 碼',
|
||||
'code.unique' => '商品代號已存在',
|
||||
'barcode.required' => '條碼編號為必填',
|
||||
'barcode.unique' => '條碼編號已存在',
|
||||
|
||||
@@ -80,7 +80,7 @@ class ProductImport implements ToModel, WithHeadingRow, WithValidation, WithMapp
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'商品代號' => ['required', 'string', 'min:1', 'max:5', 'unique:products,code'],
|
||||
'商品代號' => ['required', 'string', 'min:2', 'max:8', 'unique:products,code'],
|
||||
'條碼' => ['required', 'string', 'unique:products,barcode'],
|
||||
'商品名稱' => ['required', 'string'],
|
||||
'類別名稱' => ['required', function($attribute, $value, $fail) {
|
||||
|
||||
@@ -160,8 +160,8 @@ export default function ProductDialog({
|
||||
id="code"
|
||||
value={data.code}
|
||||
onChange={(e) => setData("code", e.target.value)}
|
||||
placeholder="例:A1 (最多2碼)"
|
||||
maxLength={2}
|
||||
placeholder="例:A1 (2-8碼)"
|
||||
maxLength={8}
|
||||
className={errors.code ? "border-red-500" : ""}
|
||||
/>
|
||||
{errors.code && <p className="text-sm text-red-500">{errors.code}</p>}
|
||||
|
||||
@@ -111,7 +111,7 @@ export default function ProductImportDialog({ open, onOpenChange }: ProductImpor
|
||||
<AccordionContent>
|
||||
<div className="text-sm text-gray-600 space-y-2 pb-2 pl-6">
|
||||
<ul className="list-disc space-y-1">
|
||||
<li><span className="font-medium text-gray-700">必填欄位</span>:商品代號 (1-5 碼)、條碼、商品名稱、類別名稱、基本單位。</li>
|
||||
<li><span className="font-medium text-gray-700">必填欄位</span>:商品代號 (2-8 碼)、條碼、商品名稱、類別名稱、基本單位。</li>
|
||||
<li><span className="font-medium text-gray-700">唯一性</span>:商品代號與條碼不可與現有資料重複。</li>
|
||||
<li><span className="font-medium text-gray-700">自動關聯</span>:類別與單位請填寫系統當前存在的「名稱」(如:飲品、瓶)。</li>
|
||||
<li><span className="font-medium text-gray-700">大單位</span>:若填寫大單位,則「換算率」為必填(需大於 0)。</li>
|
||||
|
||||
Reference in New Issue
Block a user