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 <cursoragent@cursor.com>
This commit is contained in:
2026-09-06 11:38:46 +03:30
co-authored by Cursor
parent 00b23ac404
commit 4ef2de8583
@@ -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;
}