credit = $credit; $this->payment = $payment; $this->amount = $amount; } /** * Execute the job. * * * @return void */ public function handle() { /* Update Pivot Record amount */ $this->payment->credits->each(function ($cred) { if ($cred->id == $this->credit->id) { $cred->pivot->amount = $this->amount; $cred->pivot->save(); $cred->paid_to_date += $this->amount; $cred->save(); } }); $credit_balance = $this->credit->balance; $item_date = Carbon::parse($this->payment->date)->format($this->payment->client->date_format()); $invoice_numbers = $this->payment->invoices->pluck('number')->implode(","); $item = new InvoiceItem(); $item->quantity = 0; $item->cost = $this->amount * -1; $item->notes = "{$item_date} - " . ctrans('texts.credit_payment', ['invoice_number' => $invoice_numbers]) . " ". Number::formatMoney($this->amount, $this->payment->client); $item->type_id = "1"; $line_items = $this->credit->line_items; $line_items[] = $item; $this->credit->line_items = $line_items; if ($this->amount == $credit_balance) { //total credit applied. $this->credit ->service() ->markSent() ->setStatus(Credit::STATUS_APPLIED) ->adjustBalance($this->amount * -1) ->updatePaidToDate($this->amount) ->save(); } elseif ($this->amount < $credit_balance) { //compare number appropriately $this->credit ->service() ->markSent() ->setStatus(Credit::STATUS_PARTIAL) ->adjustBalance($this->amount * -1) ->updatePaidToDate($this->amount) ->save(); } //22-08-2022 $this->credit ->client ->service() ->adjustCreditBalance($this->amount * -1) ->save(); /* Update Payment Applied Amount*/ $this->payment->save(); } }