Я хотел бы попросить вас о помощи. Я не жесткий программист, поэтому не могу составить правильный код для этого.
У меня есть приложение для оплаты заказа, которое сохраняет оплату для определенных заказов. Там нет проблем там. данные сохраняются в таблице ORDER_PAYMENTs .
в моей функции создания у меня есть
public function create($order_id)
{
$order = Orders::find($order_id);
$order->company;
$order->currency;
$banks = Banks::all('name','acronym','id')->pluck('name','id')->all();
$balance = Orderpayments::where('order_id', '=', $order_id)->sum('amount');
// dd($balance);
return view('orderPayments.create', compact('balance'))
->with('banks', $banks)
->with('order', $order);
}
переменная $ balance выполните вычисление общей суммы, затем я выполню фактическое вычисление в create.blade
, чтобы проверить, есть ли еще сумма остатка. вот как это выглядит
<div class="form-group">
<span><strong>Remaining Balance</strong></span>
<p class="text-danger">@php $remainingBalance = $order->grandtotal-$balance; @endphp
{{ number_format($remainingBalance, 2) }}</p>
</div>
Теперь я хочу сделать условие для ХРАНЕНИЯ данных (я имею в виду функцию STORE), что если платеж покрывает весь оставшийся остаток, он должен обновить столбец, ПЛАТА в ЗАКАЗЫ в таблице. Вот текущий вид функции моего магазина.
public function store(Request $request)
{
$this->validate($request, [
'order_id' => '',
'company_id' => '',
'currency_id' => '',
'bank' => '',
'type' => '',
'payment_date' => '',
'amount' => 'min:1',
'rate' => '',
'bank' => '',
'page' => '',
'number' => '',
'booklet_number'=> '',
'voucher_num' => '',
'notes' => '',
'user_id' => ''
]);
$orderpayments = Orderpayments::create($request->only(
'order_id',
'company_id',
'currency_id',
'bank',
'type',
'payment_date',
'amount',
'rate',
'bank',
'page',
'number',
'booklet_number',
'voucher_num',
'notes',
'user_id'
));
// NO IDEA ON HOW TO MAKE THE CONDITION PROPERLY
// $balance = Orderpayments::where('order_id', '=', $order_id)->sum('amount');
$order = Orders::all();
// $paidOrder = $order->paid;
dd($balance);
// if ($balance < 1) {
// $amount = ;
// $item->save();
// }
if ($request){
Session::flash('message','Purchase order was successfully added');
Session::flash('m-class','alert-success');
} else {
Session::flash('message','Data is not saved');
Session::flash('m-class','alert-danger');
return redirect()->route('orders.index');
}
return redirect()->route('orders.index');
}
Сначала я подумываю получить переменную $ balance из функции CREATE , поскольку она уже имеет вычисления, а затем я проверю, не меньше ли $balance
1, а затем, если обновить столбец PAID из таблицы заказов до '1'
Я не жесткий программист, я сделал это далеко только из-за обучающих программ отовсюду и задающих вопросы здесь. Я не могу найти подходящий учебник, чтобы охватить мою проблему. Можете ли вы помочь мне построить логику, которую я хочу достичь?
Заранее большое спасибо, ребята !!!
ОБНОВЛЕНИЕ ПРОГРЕССА
Теперь у меня есть это
// HERE'S THE PART THAT THE CONDITION IS PLACE
//get the total amount paid
$totalPaidAmount = Orderpayments::where('order_id', '=', $orderpayments->order_id)->sum('amount');
//get the total order cost
$orderGrandTotal = Orders::where('id', '=', $orderpayments->order_id)->get();
//Set variable for grand total attribute Orders table
$grandtotal = $orderGrandTotal->first()->grandtotal;
//set variable for paid attribute in Orders table
$paid = $orderGrandTotal->first()->paid;
//Get the difference between total order cost and total amount paid
$totalBalance = $grandtotal - $totalPaidAmount;
// dd($totalBalance);
if ($totalBalance == 0) {
$paid = 1;
$paid->save();
}
Моя новая проблема заключается в том, что когда баланс достигнет 0, условие, которое я поставил, должно сохранить правильность $ paid = 1? вместо этого у меня эта ошибка
![enter image description here](https://i.stack.imgur.com/CFfDZ.png)
В настоящее время это моя проблема. спасительная часть и состояние.
Надеюсь, вы могли бы помочь мне, ребята. заранее спасибо !!!
решаемые
ребята, на случай, если вы попадете в ловушку в подобной ситуации, вот что я сделал.
// HERE'S THE PART THAT THE CONDITION IS PLACE
//get the total amount paid
$totalPaidAmount = Orderpayments::where('order_id', '=', $orderpayments->order_id)->sum('amount');
//get the total order cost
$orderGrandTotal = Orders::where('id', '=', $orderpayments->order_id)->get();
//Set variable for grand total attribute Orders table
$grandtotal = $orderGrandTotal->first()->grandtotal;
//Get the difference between total order cost and total amount paid
$totalBalance = $grandtotal - $totalPaidAmount;
if ($totalBalance < 1) {
$setToPaid = \App\Orders::where('id', '=', $orderpayments->order_id)->first();
$setToPaid->paid = 1;
$setToPaid->save();
}
if ($request){
Session::flash('message','Purchase order was successfully added');
Session::flash('m-class','alert-success');
} else {
Session::flash('message','Data is not saved');
Session::flash('m-class','alert-danger');
return redirect()->route('orders.index');
}
return redirect()->route('orders.index');
Узнайте больше здесь Спасибо @Marco за подсказку!