invoice_amount = array_sum(array_column($this->getContext()['payable_invoices'], 'amount')); $this->currency = $this->getContext()['invitation']->contact->client->currency(); $this->payableInvoices = $this->getContext()['payable_invoices']; } public function checkValue(array $payableInvoices) { $this->errors = ''; $settings = $this->getContext()['settings']; foreach($payableInvoices as $key => $invoice){ $payableInvoices[$key]['amount'] = Number::parseFloat($invoice['formatted_amount']); $payableInvoices[$key]['formatted_currency'] = Number::FormatMoney($payableInvoices[$key]['amount'], $this->getContext()['invitation']->contact->client); } $input_amount = collect($payableInvoices)->sum('amount'); if($settings->client_portal_allow_under_payment) { if($input_amount <= $settings->client_portal_under_payment_minimum || $input_amount <= 0){ // return error message under payment too low. $this->errors = ctrans('texts.minimum_required_payment', ['amount' => max($settings->client_portal_under_payment_minimum, 1)]); $this->dispatch('errorMessageUpdate', errors: $this->errors); } } if(!$settings->client_portal_allow_over_payment && ($input_amount > $this->invoice_amount)){ $this->errors = ctrans('texts.over_payments_disabled'); $this->dispatch('errorMessageUpdate', errors: $this->errors); } if(!$this->errors){ $this->setContext('payable_invoices', $payableInvoices); $this->dispatch('payable-amount', payable_amount: $input_amount ); } } public function render(): \Illuminate\Contracts\View\Factory|\Illuminate\View\View { return render('flow2.under-over-payments'); } }