mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-24 02:14:21 -04:00
Apply payments and adjust ledgeR
This commit is contained in:
parent
c236925e6d
commit
8b3432f350
@ -25,6 +25,7 @@ use App\Http\Requests\Invoice\ShowInvoiceRequest;
|
||||
use App\Http\Requests\Invoice\StoreInvoiceRequest;
|
||||
use App\Http\Requests\Invoice\UpdateInvoiceRequest;
|
||||
use App\Jobs\Entity\ActionEntity;
|
||||
use App\Jobs\Invoice\MarkPaid;
|
||||
use App\Jobs\Invoice\StoreInvoice;
|
||||
use App\Models\Invoice;
|
||||
use App\Repositories\BaseRepository;
|
||||
@ -233,7 +234,11 @@ class InvoiceController extends BaseController
|
||||
# code...
|
||||
break;
|
||||
case 'mark_paid':
|
||||
# code...
|
||||
if($invoice->balance == 0 || $invoice->status_id == Invoice::STATUS_PAID)
|
||||
return $this->errorResponse(['message' => 'Invoice has no balance owing'], 400);
|
||||
|
||||
$invoice = MarkPaid::dispatchNow($invoice);
|
||||
return $this->itemResponse($invoice);
|
||||
break;
|
||||
case 'archive':
|
||||
# code...
|
||||
|
@ -23,6 +23,7 @@ class UpdateCompanyLedgerWithInvoice
|
||||
public $adjustment;
|
||||
|
||||
public $invoice;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
@ -58,6 +59,7 @@ class UpdateCompanyLedgerWithInvoice
|
||||
|
||||
$company_ledger = CompanyLedgerFactory::create($this->invoice->company_id, $this->invoice->user_id);
|
||||
$company_ledger->client_id = $this->invoice->client_id;
|
||||
$company_ledger->adjustment = $this->adjustment;
|
||||
$company_ledger->balance = $balance + $this->adjustment;
|
||||
$company_ledger->save();
|
||||
|
||||
|
@ -26,7 +26,7 @@ class UpdateCompanyLedgerWithPayment
|
||||
|
||||
public $adjustment;
|
||||
|
||||
public $payment
|
||||
public $payment;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
@ -51,6 +51,7 @@ class UpdateCompanyLedgerWithPayment
|
||||
public function handle()
|
||||
{
|
||||
$balance = 0;
|
||||
$this->adjustment = $this->adjustment * -1;
|
||||
|
||||
/* Get the last record for the client and set the current balance*/
|
||||
$ledger = CompanyLedger::whereClientId($this->payment->client_id)
|
||||
@ -62,8 +63,9 @@ class UpdateCompanyLedgerWithPayment
|
||||
$balance = $ledger->balance;
|
||||
|
||||
|
||||
$company_ledger = CompanyLedgerFactory::create($this->invoice->company_id, $this->invoice->user_id);
|
||||
$company_ledger = CompanyLedgerFactory::create($this->payment->company_id, $this->payment->user_id);
|
||||
$company_ledger->client_id = $this->payment->client_id;
|
||||
$company_ledger->adjustment = $this->adjustment;
|
||||
$company_ledger->balance = $balance + $this->adjustment;
|
||||
$company_ledger->save();
|
||||
|
||||
|
@ -107,5 +107,6 @@ class ApplyPaymentToInvoice implements ShouldQueue
|
||||
|
||||
$this->invoice->save();
|
||||
|
||||
return $this->invoice;
|
||||
}
|
||||
}
|
||||
|
@ -13,6 +13,7 @@ namespace App\Jobs\Invoice;
|
||||
|
||||
use App\Events\Payment\PaymentWasCreated;
|
||||
use App\Factory\PaymentFactory;
|
||||
use App\Jobs\Company\UpdateCompanyLedgerWithPayment;
|
||||
use App\Jobs\Invoice\ApplyPaymentToInvoice;
|
||||
use App\Models\Invoice;
|
||||
use App\Models\Payment;
|
||||
@ -72,7 +73,10 @@ class MarkPaid implements ShouldQueue
|
||||
event(new PaymentWasCreated($data));
|
||||
|
||||
/* Update Invoice balance */
|
||||
ApplyPaymentToInvoice::dispatchNow($payment, $this->invoice);
|
||||
$invoice = ApplyPaymentToInvoice::dispatchNow($payment, $this->invoice);
|
||||
|
||||
UpdateCompanyLedgerWithPayment::dispatchNow($payment, $payment->amount);
|
||||
|
||||
return $invoice;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user