私は現在、 "支払い"テーブルと "請求書"テーブルの間に多くの関係をたくさん作ることをやっています...しかし、私の問題は、新しい支払いと私は私がライン217で「非オブジェクトのプロパティを取得しようとすると、」与えlaravel請求書の電子リストを選択...非オブジェクトのプロパティを取得しようとしています - ラベラー
が、これは私のコードです:
$ selectedInvoices = $入力[「請求書」] ;
$invoices = collect([]);
foreach ($selectedInvoices as $invoice) {
$invoices = $invoices->merge([Invoice::find(Invoice::getPrivateId($invoice))]);
}
$invoices->all();
$invoices = $invoices->sortByDesc(function($invoice)
{
return $invoice->invoice_date;
});
$invoices->values()->all();
$totalAmount = 0;
foreach ($invoices as $invoice)
{
$totalAmount = $totalAmount + $invoice->balance;
}
if($payment->amount > $totalAmount){
foreach ($invoices as $invoice){
$adjustment = $invoice->balance * -1;
$partial = max(0, $invoice->partial - 0);
$invoice->updateBalances($adjustment, $partial);
$invoice->updatePaidStatus();
$payment->invoices()->attach($invoice->id) ;
}
$credit = Credit::createNew();
$credit->client_id = $clientId;
$credit->amount = $payment->amount - $totalAmount ;
$credit->balance = $payment->amount - $totalAmount ;
$credit->credit_date = $payment->payment_date;
$credit->private_notes = 'Crédit créé automatiquement suite au payement '.$payment->id.
' avec un montant de '.$payment->amount.' à la date de '.$payment->payment_date;
$credit->save();
}
if($payment->amount <= $totalAmount)
{
/*line 217*/ while ($payment->amount >= $invoices->last()->balance){
$payment->amount = $payment->amount - $invoices->last()->balance ;
$adjustment = $invoices->last()->balance * -1;
$partial = max(0, $invoices->last()->partial - 0);
$invoices->last()->updateBalances($adjustment, $partial);
$invoices->last()->updatePaidStatus();
$payment->invoices()->attach($invoices->last()->id) ;
$invoices->pop();
$invoices->all();
}
if ($payment->amount < $invoices->last()->balance){
$adjustment = $payment->amount * -1;
$partial = max(0, $invoices->last()->partial - $payment->amount);
$invoices->last()->updateBalances($adjustment, $partial);
$invoices->last()->updatePaidStatus();
$payment->invoices()->attach($invoices->last()->id) ;
}
}
PS:私は量を与える>私は額にそれはあまりにも動作します<総量を与えるとき、それはまた、働く私の請求書の合計金額...
217行目のコードは何ですか?あなたが投稿したコードでそれを強調表示できますか? – Dwijen
if($ payment-> amount <= $ totalAmount) { /* line 217 */while($ payment-> amount> = $請求書 - > last() - > balance){..... –
Checkあなたの '$ invoices-> last()'はその行にあります。明らかに、それは存在しません。それ以外に、 ' - > all()'と ' - > values()'を使用していますが、それらのメソッドは何かを返します。コレクション自体は変更されません。また、foreachを行う代わりに ' - > sum( 'balance)'をチェックしてください。 – Robert