calculateAmounts(); } /** * @return string */ public function message() { return ctrans('texts.insufficient_applied_amount_remaining'); } private function calculateAmounts() :bool { $payment = Payment::withTrashed()->whereId($this->decodePrimaryKey(request()->segment(4)))->company()->first(); if (! $payment) { return false; } $payment_amounts = 0; $invoice_amounts = 0; $payment_amounts = $payment->amount - $payment->refunded - $payment->applied; if(request()->has('credits') && is_array(request()->input('credits')) && count(request()->input('credits')) == 0 && request()->has('invoices') && is_array(request()->input('invoices')) && count(request()->input('invoices')) == 0){ return true; } if (request()->input('credits') && is_array(request()->input('credits'))) { foreach (request()->input('credits') as $credit) { $payment_amounts += $credit['amount']; } } if (request()->input('invoices') && is_array(request()->input('invoices'))) { foreach (request()->input('invoices') as $invoice) { $invoice_amounts += $invoice['amount']; } } return $payment_amounts >= $invoice_amounts; } }