From 4ef2de8583e3b52a06e5e941e39a2041e5a3426b Mon Sep 17 00:00:00 2001 From: adonis Date: Sun, 6 Sep 2026 11:38:46 +0330 Subject: [PATCH] fix(products): force direct_price=1 when saving a manual price Keeps weight-based live enrich from replacing an explicit stored mid price. Co-authored-by: Cursor --- app/Http/Controllers/Admin/ProductController.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/app/Http/Controllers/Admin/ProductController.php b/app/Http/Controllers/Admin/ProductController.php index 5d84097..30e1be5 100644 --- a/app/Http/Controllers/Admin/ProductController.php +++ b/app/Http/Controllers/Admin/ProductController.php @@ -117,6 +117,17 @@ class ProductController extends SuperController public function store(Request $request) { $data = $this->filterProductData($request->all()); + $formulaEnabled = Product::hasPriceFormulaColumns() + && filter_var($data['price_formula_enabled'] ?? false, FILTER_VALIDATE_BOOLEAN); + if (isset($data['price']) && empty($data['app_price']) && ! $formulaEnabled) { + $data['reading_method'] = null; + if (Product::hasDirectPriceColumn()) { + $data['direct_price'] = 1; + } + if (Product::hasPriceOffsetColumn()) { + $data['price_offset_percent'] = 0; + } + } $product = Product::create($data); @@ -146,6 +157,10 @@ class ProductController extends SuperController && filter_var($data['price_formula_enabled'] ?? false, FILTER_VALIDATE_BOOLEAN); if (isset($data['price']) && empty($data['app_price']) && ! $formulaEnabled) { $data['reading_method'] = null; + // قیمت دستی ذخیره‌شده ⇒ وزن‌محور (مظنه زنده) نباید قیمت را عوض کند + if (Product::hasDirectPriceColumn()) { + $data['direct_price'] = 1; + } if (Product::hasPriceOffsetColumn()) { $data['price_offset_percent'] = 0; }