mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-10 13:12:50 +01:00
Delete payment workflow
This commit is contained in:
parent
8eed07b8f5
commit
f36bbf75b8
@ -261,6 +261,12 @@ class Payment extends BaseModel
|
|||||||
return $this->status_id == self::STATUS_REFUNDED;
|
return $this->status_id == self::STATUS_REFUNDED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setStatus($status)
|
||||||
|
{
|
||||||
|
$this->status_id = $status;
|
||||||
|
$this->save();
|
||||||
|
}
|
||||||
|
|
||||||
public function markVoided()
|
public function markVoided()
|
||||||
{
|
{
|
||||||
if ($this->isVoided() || $this->isPartiallyRefunded() || $this->isRefunded()) {
|
if ($this->isVoided() || $this->isPartiallyRefunded() || $this->isRefunded()) {
|
||||||
|
@ -196,11 +196,22 @@ class PaymentRepository extends BaseRepository
|
|||||||
|
|
||||||
public function delete($payment)
|
public function delete($payment)
|
||||||
{
|
{
|
||||||
|
//cannot double delete a payment
|
||||||
if($payment->is_deleted)
|
if($payment->is_deleted)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
$payment->service()->deletePayment();
|
$payment->service()->deletePayment();
|
||||||
|
|
||||||
|
return parent::delete($payment);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function restore($payment)
|
||||||
|
{
|
||||||
|
//we cannot restore a deleted payment.
|
||||||
|
if($payment->is_deleted)
|
||||||
|
return;
|
||||||
|
|
||||||
|
return parent::restore($payment);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,14 +28,14 @@ class DeletePayment
|
|||||||
public function run()
|
public function run()
|
||||||
{
|
{
|
||||||
|
|
||||||
return $this->setStatus() //sets status of payment
|
return $this->setStatus(Payment::STATUS_VOIDED) //sets status of payment
|
||||||
->updateCreditables() //return the credits first
|
->updateCreditables() //return the credits first
|
||||||
->updatePaymentables() //update the paymentable items
|
|
||||||
->adjustInvoices()
|
->adjustInvoices()
|
||||||
|
->updateClient()
|
||||||
->save();
|
->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
//reverse paymentables->invoices
|
//reverse paymentables->invoices
|
||||||
|
|
||||||
@ -45,7 +45,63 @@ class DeletePayment
|
|||||||
|
|
||||||
//set applied amount to 0
|
//set applied amount to 0
|
||||||
|
|
||||||
|
private function updateClient()
|
||||||
|
{
|
||||||
|
$this->payment->client->service()->updatePaidToDate(-1*$this->payment->amount)->save();
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function adjustInvoices()
|
||||||
|
{
|
||||||
|
if ($this->payment->invoices()->exists())
|
||||||
|
{
|
||||||
|
|
||||||
|
$this->payment->invoices()->each(function ($paymentable_invoice){
|
||||||
|
|
||||||
|
$paymentable_invoice->service()->updateBalance($paymentable_invoice->pivot->amount)->save();
|
||||||
|
$paymentable_invoice->ledger()->updateInvoiceBalance($paymentable_invoice->pivot->amount)->save();
|
||||||
|
|
||||||
|
if(floatval($paymentable_invoice->balance) == 0)
|
||||||
|
$paymentable_invoice->service()->setStatus(Invoice::STATUS_SENT)->save();
|
||||||
|
else
|
||||||
|
$paymentable_invoice->service()->setStatus(Invoice::STATUS_PARTIAL)->save();
|
||||||
|
|
||||||
|
//fire event for this credit
|
||||||
|
//
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function updateCreditables()
|
||||||
|
{
|
||||||
|
if ($this->payment->credits()->exists())
|
||||||
|
{
|
||||||
|
|
||||||
|
$this->payment->credits()->each(function ($paymentable_credit){
|
||||||
|
|
||||||
|
$paymentable_credit->balance += $paymentable_credit->pivot->amount;
|
||||||
|
$paymentable_credit->setStatus(Credit::STATUS_SENT);
|
||||||
|
//fire event for this credit
|
||||||
|
//
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function setStatus($status)
|
||||||
|
{
|
||||||
|
$this->payment->status_id = Payment::STATUS_VOIDED;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Saves the payment
|
* Saves the payment
|
||||||
*
|
*
|
||||||
|
@ -80,7 +80,7 @@ class PaymentService
|
|||||||
|
|
||||||
public function deletePayment() :?Payment
|
public function deletePayment() :?Payment
|
||||||
{
|
{
|
||||||
return (new DeletePayment())->run();
|
return (new DeletePayment($this->payment))->run();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updateInvoicePayment() :?Payment
|
public function updateInvoicePayment() :?Payment
|
||||||
|
@ -249,11 +249,9 @@ class RefundPayment
|
|||||||
|
|
||||||
// $this->credit_note->ledger()->updateCreditBalance($adjustment_amount, $ledger_string);
|
// $this->credit_note->ledger()->updateCreditBalance($adjustment_amount, $ledger_string);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$client = $this->payment->client->fresh();
|
$client = $this->payment->client->fresh();
|
||||||
$client->paid_to_date -= $this->total_refund;
|
$client->service()->updatePaidToDate(-1*$this->total_refund)->save();
|
||||||
$client->save();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
|
Loading…
Reference in New Issue
Block a user