fix bug
This commit is contained in:
@@ -6,6 +6,7 @@ use App\DB\Te\TableEngine;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Price;
|
||||
use App\Models\PriceCandle;
|
||||
use App\Services\ZaarboxPriceService;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class PriceController extends Controller
|
||||
@@ -46,6 +47,18 @@ class PriceController extends Controller
|
||||
->export($prise);
|
||||
return response()->json($prise);
|
||||
}
|
||||
|
||||
public function chartPrices(ZaarboxPriceService $zaarboxPriceService)
|
||||
{
|
||||
return response()->json([
|
||||
'code' => 0,
|
||||
'message' => 'عملیات با موفقیت انجام شد.',
|
||||
'data' => [
|
||||
'prices' => $zaarboxPriceService->getAllPrices(),
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
public function table(Request $request){
|
||||
$records = Price::with(['user']);
|
||||
TableEngine::create($records, $request->all())
|
||||
|
||||
@@ -349,6 +349,33 @@ class ProductController extends SuperController
|
||||
unset($data['price_offset_percent']);
|
||||
}
|
||||
|
||||
if (!Product::hasOrderLimitColumns()) {
|
||||
unset($data['order_limit_enabled'], $data['min_order_cash'], $data['max_order_cash']);
|
||||
} elseif (empty($data['order_limit_enabled'])) {
|
||||
$data['order_limit_enabled'] = false;
|
||||
$data['min_order_cash'] = null;
|
||||
$data['max_order_cash'] = null;
|
||||
} else {
|
||||
$min = $data['min_order_cash'] ?? null;
|
||||
$max = $data['max_order_cash'] ?? null;
|
||||
$hasMin = $min !== null && $min !== '';
|
||||
$hasMax = $max !== null && $max !== '';
|
||||
|
||||
if (!$hasMin && !$hasMax) {
|
||||
throw new UnprocessableEntityHttpException(
|
||||
'با فعال بودن محدودیت مبلغ سفارش، حداقل یکی از حداقل یا حداکثر مبلغ باید وارد شود'
|
||||
);
|
||||
}
|
||||
|
||||
if ($hasMin && $hasMax && (float) $min > (float) $max) {
|
||||
throw new UnprocessableEntityHttpException('حداقل مبلغ نمیتواند بیشتر از حداکثر باشد');
|
||||
}
|
||||
|
||||
$data['order_limit_enabled'] = true;
|
||||
$data['min_order_cash'] = $hasMin ? (int) $min : null;
|
||||
$data['max_order_cash'] = $hasMax ? (int) $max : null;
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -219,6 +219,8 @@ class SingleOrderController extends Controller
|
||||
$data['total_price'] = $data['amount'] * $data['price'];
|
||||
$data['payment_amount'] = $data['total_price'];
|
||||
|
||||
$this->enforceProductOrderLimits($data, (float) $data['total_price']);
|
||||
|
||||
if (!empty($data['first_buy']) && ($minFirstBuy = Setting::where('is_active', 1)->where('key', 'min_first_buy')->value('value'))) {
|
||||
if ($data['total_price'] < (int) $minFirstBuy) {
|
||||
throw new UnprocessableEntityHttpException('حداقل سفارش اول ' . number_format((int) $minFirstBuy) . ' ریال میباشد.');
|
||||
@@ -256,6 +258,8 @@ class SingleOrderController extends Controller
|
||||
$data['total_price'] = $data['total_amount'] * $data['price'];
|
||||
$data['payment_amount'] = $data['total_price'];
|
||||
|
||||
$this->enforceProductOrderLimits($data, (float) $data['total_price']);
|
||||
|
||||
if (!empty($data['first_buy']) && ($minFirstBuy = Setting::where('is_active', 1)->where('key', 'min_first_buy')->value('value'))) {
|
||||
if ($data['total_price'] < (int) $minFirstBuy) {
|
||||
throw new UnprocessableEntityHttpException('حداقل سفارش اول ' . number_format((int) $minFirstBuy) . ' ریال میباشد.');
|
||||
@@ -306,6 +310,7 @@ class SingleOrderController extends Controller
|
||||
$data['total_amount'] = $data['amount'] + ($data['product']['percent_fee_buy'] * $data['amount']);
|
||||
$data['total_price'] = $data['total_amount'] * $data['price'];
|
||||
$data['payment_amount'] = $data['total_price'];
|
||||
$this->enforceProductOrderLimits($data, (float) $data['total_price']);
|
||||
$data['service_charge'] = isset($data['fee_free']) && $data['fee_free'] === true ? 0 : ($data['product']['percent_fee_buy'] * $data['amount']);
|
||||
$data['total_fee'] = 0;
|
||||
$data['service_charge_price'] = $data['service_charge'] * $data['price_original'];
|
||||
@@ -345,6 +350,8 @@ class SingleOrderController extends Controller
|
||||
{
|
||||
$response = [];
|
||||
$data['price'] -= $data['difference'];
|
||||
$grossTotal = $data['amount'] * $data['price'];
|
||||
$this->enforceProductOrderLimits($data, (float) $grossTotal);
|
||||
$data['service_charge'] = isset($data['fee_free']) && $data['fee_free'] === true ? 0 : $data['service_charge_percentage'] * $data['amount'];
|
||||
$data['service_charge_price'] = $data['service_charge'] * $data['price_original'];
|
||||
$data['total_price'] = $data['amount'] * $data['price'] - $data['service_charge_price'];
|
||||
@@ -376,6 +383,8 @@ class SingleOrderController extends Controller
|
||||
$data['total_amount'] = $data['amount'] - ($data['product']['percent_fee_sell'] * $data['amount']);
|
||||
$data['total_price'] = $data['total_amount'] * $data['price'];
|
||||
$data['payment_amount'] = $data['total_price'];
|
||||
$grossTotal = (float) ($data['amount'] * $data['price']);
|
||||
$this->enforceProductOrderLimits($data, $grossTotal);
|
||||
$data['service_charge'] = isset($data['fee_free']) && $data['fee_free'] === true ? 0 : ($data['product']['percent_fee_sell'] * $data['amount']);
|
||||
$data['service_charge_price'] = $data['service_charge'] * $data['price_original'];
|
||||
$wallet_interface_product = new WalletInterface(auth('customer')->id(), auth('customer')->user()->type, null, $data["product_id"]);
|
||||
@@ -417,6 +426,8 @@ class SingleOrderController extends Controller
|
||||
$data['total_amount'] = $data['amount'] - ($data['product']['percent_fee_sell'] * $data['amount']);
|
||||
$data['total_price'] = $data['total_amount'] * $data['price'];
|
||||
$data['payment_amount'] = $data['total_price'];
|
||||
$grossTotal = (float) ($data['amount'] * $data['price']);
|
||||
$this->enforceProductOrderLimits($data, $grossTotal);
|
||||
$data['service_charge'] = isset($data['fee_free']) && $data['fee_free'] === true ? 0 : ($data['product']['percent_fee_sell'] * $data['amount']);
|
||||
$data['total_fee'] = 0;
|
||||
$data['service_charge_price'] = $data['service_charge'] * $data['price_original'];
|
||||
@@ -843,4 +854,28 @@ class SingleOrderController extends Controller
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private function enforceProductOrderLimits(array &$data, float $totalPriceRial): void
|
||||
{
|
||||
$product = $data['product'] ?? null;
|
||||
|
||||
if (!$product instanceof Product) {
|
||||
$productId = (int) ($data['abshode_id'] ?? $data['product_id'] ?? 0);
|
||||
if ($productId) {
|
||||
$product = Product::find($productId);
|
||||
if ($product) {
|
||||
$data['product'] = $product;
|
||||
}
|
||||
}
|
||||
} elseif (is_array($product)) {
|
||||
$product = Product::find($product['id'] ?? $data['product_id'] ?? 0);
|
||||
if ($product) {
|
||||
$data['product'] = $product;
|
||||
}
|
||||
}
|
||||
|
||||
if ($product instanceof Product) {
|
||||
$product->validateOrderCashLimit($totalPriceRial);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user