Widen order price columns so current gold rial quotes persist.

Gold gram prices now exceed the old DECIMAL/INT range and MySQL 1264 aborted buys; store money fields as DECIMAL(20,4) and hide the raw SQL error from the app.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-31 16:14:02 +03:30
co-authored by Cursor
parent 5537cd7086
commit 4c2200a0e0
4 changed files with 251 additions and 0 deletions
@@ -1801,6 +1801,30 @@ class SingleOrderController extends Controller
$data['_fee_uses_app_price'],
$data['_fee_base_price']
);
$this->roundOrderMoneyFields($data);
}
/** اعداد پولی سفارش را قبل از INSERT گرد کن تا با DECIMAL(20,4) سازگار باشد. */
private function roundOrderMoneyFields(array &$data): void
{
foreach ([
'price',
'price_original',
'total_price',
'total_price_original',
'total_price_liman',
'fee',
'total_fee',
'service_charge_price',
'payment_amount',
'payment_remind',
] as $key) {
if (!isset($data[$key]) || !is_numeric($data[$key])) {
continue;
}
$data[$key] = round((float) $data[$key], 4);
}
}
private function bonusGift($customer, $referrer)