From 0b978dcdf6b5df65a9237cea037255906dd623ef Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Sun, 26 Mar 2017 21:31:13 +0300 Subject: [PATCH] Support negative payments --- app/Http/Controllers/PaymentController.php | 2 +- app/Http/Requests/CreatePaymentAPIRequest.php | 2 +- app/Http/Requests/CreatePaymentRequest.php | 2 +- app/Models/Invoice.php | 4 ++-- app/Ninja/Presenters/InvoicePresenter.php | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/PaymentController.php b/app/Http/Controllers/PaymentController.php index a7fad7e7e6c7..5037a3063ee4 100644 --- a/app/Http/Controllers/PaymentController.php +++ b/app/Http/Controllers/PaymentController.php @@ -90,7 +90,7 @@ class PaymentController extends BaseController { $invoices = Invoice::scope() ->invoices() - ->where('invoices.balance', '>', 0) + ->where('invoices.balance', '!=', 0) ->with('client', 'invoice_status') ->orderBy('invoice_number')->get(); diff --git a/app/Http/Requests/CreatePaymentAPIRequest.php b/app/Http/Requests/CreatePaymentAPIRequest.php index 6f5cda03823a..04fe56320ba5 100644 --- a/app/Http/Requests/CreatePaymentAPIRequest.php +++ b/app/Http/Requests/CreatePaymentAPIRequest.php @@ -26,7 +26,7 @@ class CreatePaymentAPIRequest extends PaymentRequest if (! $this->invoice_id || ! $this->amount) { return [ 'invoice_id' => 'required|numeric|min:1', - 'amount' => 'required|numeric|min:0.01', + 'amount' => 'required|numeric|not_in:0', ]; } diff --git a/app/Http/Requests/CreatePaymentRequest.php b/app/Http/Requests/CreatePaymentRequest.php index 9398cb13beb5..d9e187a6e159 100644 --- a/app/Http/Requests/CreatePaymentRequest.php +++ b/app/Http/Requests/CreatePaymentRequest.php @@ -36,7 +36,7 @@ class CreatePaymentRequest extends PaymentRequest $rules = [ 'client' => 'required', // TODO: change to client_id once views are updated 'invoice' => 'required', // TODO: change to invoice_id once views are updated - 'amount' => "required|numeric|min:0.01", + 'amount' => 'required|numeric|not_in:0', 'payment_date' => 'required', ]; diff --git a/app/Models/Invoice.php b/app/Models/Invoice.php index 19cc7583fb57..2fd76bcd9ef9 100644 --- a/app/Models/Invoice.php +++ b/app/Models/Invoice.php @@ -541,7 +541,7 @@ class Invoice extends EntityModel implements BalanceAffecting public function updatePaidStatus($save = true) { $statusId = false; - if ($this->amount > 0 && $this->balance == 0) { + if ($this->amount != 0 && $this->balance == 0) { $statusId = INVOICE_STATUS_PAID; } elseif ($this->balance > 0 && $this->balance < $this->amount) { $statusId = INVOICE_STATUS_PARTIAL; @@ -626,7 +626,7 @@ class Invoice extends EntityModel implements BalanceAffecting public function canBePaid() { - return floatval($this->balance) > 0 && ! $this->is_deleted && $this->isInvoice(); + return floatval($this->balance) != 0 && ! $this->is_deleted && $this->isInvoice(); } public static function calcStatusLabel($status, $class, $entityType, $quoteInvoiceId) diff --git a/app/Ninja/Presenters/InvoicePresenter.php b/app/Ninja/Presenters/InvoicePresenter.php index 246cb6df37ff..473423aad520 100644 --- a/app/Ninja/Presenters/InvoicePresenter.php +++ b/app/Ninja/Presenters/InvoicePresenter.php @@ -225,7 +225,7 @@ class InvoicePresenter extends EntityPresenter $actions[] = ['url' => url("quotes/{$invoice->quote_id}/edit"), 'label' => trans('texts.view_quote')]; } - if (!$invoice->deleted_at && ! $invoice->is_recurring && $invoice->balance > 0) { + if (!$invoice->deleted_at && ! $invoice->is_recurring && $invoice->balance != 0) { $actions[] = ['url' => 'javascript:submitBulkAction("markPaid")', 'label' => trans('texts.mark_paid')]; $actions[] = ['url' => 'javascript:onPaymentClick()', 'label' => trans('texts.enter_payment')]; }