Use invoice 'balance' when comparing with over & under payments.

This commit is contained in:
Benjamin Beganović 2020-10-09 16:08:12 +02:00
parent 5cd1acd484
commit f33e6768c0

View File

@ -12,7 +12,6 @@
namespace App\Http\Controllers\ClientPortal; namespace App\Http\Controllers\ClientPortal;
use App\Filters\PaymentFilters;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\ClientPortal\Payments\PaymentResponseRequest; use App\Http\Requests\ClientPortal\Payments\PaymentResponseRequest;
use App\Jobs\Invoice\InjectSignature; use App\Jobs\Invoice\InjectSignature;
@ -23,11 +22,8 @@ use App\Models\PaymentHash;
use App\Utils\Number; use App\Utils\Number;
use App\Utils\Traits\MakesDates; use App\Utils\Traits\MakesDates;
use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesHash;
use Cache;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Yajra\DataTables\Facades\DataTables;
/** /**
* Class PaymentController. * Class PaymentController.
@ -108,7 +104,7 @@ class PaymentController extends Controller
// In case it doesn't this is where process should stop. // In case it doesn't this is where process should stop.
$payable_amount = Number::roundValue(Number::parseFloat($payable_invoice['amount']), auth()->user()->client->currency()->precision); $payable_amount = Number::roundValue(Number::parseFloat($payable_invoice['amount']), auth()->user()->client->currency()->precision);
$invoice_amount = Number::roundValue($invoice->amount, auth()->user()->client->currency()->precision); $invoice_balance = Number::roundValue($invoice->balance, auth()->user()->client->currency()->precision);
if ($settings->client_portal_allow_under_payment == false && $settings->client_portal_allow_over_payment == false) { if ($settings->client_portal_allow_under_payment == false && $settings->client_portal_allow_over_payment == false) {
$payable_invoice['amount'] = Number::roundValue(($invoice->partial > 0 ? $invoice->partial : $invoice->balance), auth()->user()->client->currency()->precision); $payable_invoice['amount'] = Number::roundValue(($invoice->partial > 0 ? $invoice->partial : $invoice->balance), auth()->user()->client->currency()->precision);
@ -122,9 +118,9 @@ class PaymentController extends Controller
} }
} else { } else {
$payable_amount = Number::roundValue(Number::parseFloat($payable_invoice['amount']), auth()->user()->client->currency()->precision); $payable_amount = Number::roundValue(Number::parseFloat($payable_invoice['amount']), auth()->user()->client->currency()->precision);
$invoice_amount = Number::roundValue($invoice->amount, auth()->user()->client->currency()->precision); $invoice_balance = Number::roundValue($invoice->balance, auth()->user()->client->currency()->precision);
if ($payable_amount < $invoice_amount) { if ($payable_amount < $invoice_balance) {
return redirect() return redirect()
->route('client.invoices.index') ->route('client.invoices.index')
->with('message', ctrans('texts.under_payments_disabled')); ->with('message', ctrans('texts.under_payments_disabled'));
@ -132,7 +128,7 @@ class PaymentController extends Controller
} // Make sure 'amount' from form is not lower than 'amount' from invoice. } // Make sure 'amount' from form is not lower than 'amount' from invoice.
if ($settings->client_portal_allow_over_payment == false) { if ($settings->client_portal_allow_over_payment == false) {
if ($payable_amount > $invoice_amount) { if ($payable_amount > $invoice_balance) {
return redirect() return redirect()
->route('client.invoices.index') ->route('client.invoices.index')
->with('message', ctrans('texts.over_payments_disabled')); ->with('message', ctrans('texts.over_payments_disabled'));