1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-06 03:02:34 +01:00

Fixes for payments (#3271)

* Fixes + tests for unapplied amounts not adjusting when updating a payment

* fixes for payment amounts check
This commit is contained in:
David Bomba 2020-01-31 07:53:14 +11:00 committed by GitHub
parent c3da9c80b3
commit cdf22f6a1f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 5 deletions

View File

@ -16,7 +16,7 @@ use App\Models\User;
use Illuminate\Contracts\Validation\Rule; use Illuminate\Contracts\Validation\Rule;
/** /**
* Class NewUniqueUserRule * Class PaymentAmountsBalanceRule
* @package App\Http\ValidationRules * @package App\Http\ValidationRules
*/ */
class PaymentAmountsBalanceRule implements Rule class PaymentAmountsBalanceRule implements Rule
@ -42,6 +42,17 @@ class PaymentAmountsBalanceRule implements Rule
private function calculateAmounts() :bool private function calculateAmounts() :bool
{ {
/**
* Sometimes the request may not contain the amount or it may be zero,
* and this is a valid use case, only compare the amounts if they
* have been presented!
*/
if(!request()->has('amount'))
return true;
if(request()->has('amount') && request()->input('amount') == 0)
return true
$payment_amounts = 0; $payment_amounts = 0;
$invoice_amounts = 0; $invoice_amounts = 0;

View File

@ -69,8 +69,8 @@ class PaymentRepository extends BaseRepository
private function applyPayment(array $data, Payment $payment): ?Payment private function applyPayment(array $data, Payment $payment): ?Payment
{ {
$payment->fill($data); $payment->fill($data);
$payment->status_id = Payment::STATUS_COMPLETED; $payment->status_id = Payment::STATUS_COMPLETED;
$payment->save(); $payment->save();
@ -127,9 +127,9 @@ class PaymentRepository extends BaseRepository
$invoice_totals -= $credit_totals; $invoice_totals -= $credit_totals;
if ($invoice_totals == $payment->amount) if ($invoice_totals == $payment->amount)
$payment->applied = $payment->amount; $payment->applied += $payment->amount;
elseif ($invoice_totals < $payment->amount) elseif ($invoice_totals < $payment->amount)
$payment->applied = $invoice_totals; $payment->applied += $invoice_totals;
//UpdateInvoicePayment::dispatchNow($payment); //UpdateInvoicePayment::dispatchNow($payment);
$payment->save(); $payment->save();

View File

@ -946,6 +946,10 @@ class PaymentTest extends TestCase
$response->assertStatus(200); $response->assertStatus(200);
$arr = $response->json();
$this->assertEquals(20, $arr['data']['applied']);
} }