mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Working on restoring deleted invoices
This commit is contained in:
parent
fa105210bb
commit
ea6cd9e012
@ -7,16 +7,19 @@ use Illuminate\Queue\SerializesModels;
|
|||||||
class InvoiceWasRestored extends Event {
|
class InvoiceWasRestored extends Event {
|
||||||
|
|
||||||
use SerializesModels;
|
use SerializesModels;
|
||||||
|
|
||||||
public $invoice;
|
public $invoice;
|
||||||
|
public $fromDeleted;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new event instance.
|
* Create a new event instance.
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function __construct($invoice)
|
public function __construct($invoice, $fromDeleted)
|
||||||
{
|
{
|
||||||
$this->invoice = $invoice;
|
$this->invoice = $invoice;
|
||||||
|
$this->fromDeleted = $fromDeleted;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -7,16 +7,19 @@ use Illuminate\Queue\SerializesModels;
|
|||||||
class PaymentWasRestored extends Event {
|
class PaymentWasRestored extends Event {
|
||||||
|
|
||||||
use SerializesModels;
|
use SerializesModels;
|
||||||
|
|
||||||
public $payment;
|
public $payment;
|
||||||
|
public $fromDeleted;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new event instance.
|
* Create a new event instance.
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function __construct($payment)
|
public function __construct($payment, $fromDeleted)
|
||||||
{
|
{
|
||||||
$this->payment = $payment;
|
$this->payment = $payment;
|
||||||
|
$this->fromDeleted = $fromDeleted;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,10 @@
|
|||||||
<?php namespace app\Listeners;
|
<?php namespace app\Listeners;
|
||||||
|
|
||||||
use Auth;
|
|
||||||
use Utils;
|
|
||||||
use App\Models\Invoice;
|
use App\Models\Invoice;
|
||||||
|
|
||||||
use App\Events\ClientWasCreated;
|
use App\Events\ClientWasCreated;
|
||||||
use App\Events\ClientWasDeleted;
|
use App\Events\ClientWasDeleted;
|
||||||
use App\Events\ClientWasArchived;
|
use App\Events\ClientWasArchived;
|
||||||
use App\Events\ClientWasRestored;
|
use App\Events\ClientWasRestored;
|
||||||
|
|
||||||
use App\Events\InvoiceWasCreated;
|
use App\Events\InvoiceWasCreated;
|
||||||
use App\Events\InvoiceWasUpdated;
|
use App\Events\InvoiceWasUpdated;
|
||||||
use App\Events\InvoiceWasDeleted;
|
use App\Events\InvoiceWasDeleted;
|
||||||
@ -16,7 +12,6 @@ use App\Events\InvoiceWasArchived;
|
|||||||
use App\Events\InvoiceWasRestored;
|
use App\Events\InvoiceWasRestored;
|
||||||
use App\Events\InvoiceInvitationWasEmailed;
|
use App\Events\InvoiceInvitationWasEmailed;
|
||||||
use App\Events\InvoiceInvitationWasViewed;
|
use App\Events\InvoiceInvitationWasViewed;
|
||||||
|
|
||||||
use App\Events\QuoteWasCreated;
|
use App\Events\QuoteWasCreated;
|
||||||
use App\Events\QuoteWasUpdated;
|
use App\Events\QuoteWasUpdated;
|
||||||
use App\Events\QuoteWasDeleted;
|
use App\Events\QuoteWasDeleted;
|
||||||
@ -25,17 +20,14 @@ use App\Events\QuoteWasRestored;
|
|||||||
use App\Events\QuoteInvitationWasEmailed;
|
use App\Events\QuoteInvitationWasEmailed;
|
||||||
use App\Events\QuoteInvitationWasViewed;
|
use App\Events\QuoteInvitationWasViewed;
|
||||||
use App\Events\QuoteInvitationWasApproved;
|
use App\Events\QuoteInvitationWasApproved;
|
||||||
|
|
||||||
use App\Events\PaymentWasCreated;
|
use App\Events\PaymentWasCreated;
|
||||||
use App\Events\PaymentWasDeleted;
|
use App\Events\PaymentWasDeleted;
|
||||||
use App\Events\PaymentWasArchived;
|
use App\Events\PaymentWasArchived;
|
||||||
use App\Events\PaymentWasRestored;
|
use App\Events\PaymentWasRestored;
|
||||||
|
|
||||||
use App\Events\CreditWasCreated;
|
use App\Events\CreditWasCreated;
|
||||||
use App\Events\CreditWasDeleted;
|
use App\Events\CreditWasDeleted;
|
||||||
use App\Events\CreditWasArchived;
|
use App\Events\CreditWasArchived;
|
||||||
use App\Events\CreditWasRestored;
|
use App\Events\CreditWasRestored;
|
||||||
|
|
||||||
use App\Ninja\Repositories\ActivityRepository;
|
use App\Ninja\Repositories\ActivityRepository;
|
||||||
|
|
||||||
class ActivityListener
|
class ActivityListener
|
||||||
@ -51,7 +43,7 @@ class ActivityListener
|
|||||||
public function createdClient(ClientWasCreated $event)
|
public function createdClient(ClientWasCreated $event)
|
||||||
{
|
{
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->client,
|
$event->client,
|
||||||
ACTIVITY_TYPE_CREATE_CLIENT
|
ACTIVITY_TYPE_CREATE_CLIENT
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -59,7 +51,7 @@ class ActivityListener
|
|||||||
public function deletedClient(ClientWasDeleted $event)
|
public function deletedClient(ClientWasDeleted $event)
|
||||||
{
|
{
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->client,
|
$event->client,
|
||||||
ACTIVITY_TYPE_DELETE_CLIENT
|
ACTIVITY_TYPE_DELETE_CLIENT
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -71,7 +63,7 @@ class ActivityListener
|
|||||||
}
|
}
|
||||||
|
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->client,
|
$event->client,
|
||||||
ACTIVITY_TYPE_ARCHIVE_CLIENT
|
ACTIVITY_TYPE_ARCHIVE_CLIENT
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -79,17 +71,16 @@ class ActivityListener
|
|||||||
public function restoredClient(ClientWasRestored $event)
|
public function restoredClient(ClientWasRestored $event)
|
||||||
{
|
{
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->client,
|
$event->client,
|
||||||
ACTIVITY_TYPE_RESTORE_CLIENT
|
ACTIVITY_TYPE_RESTORE_CLIENT
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Invoices
|
// Invoices
|
||||||
public function createdInvoice(InvoiceWasCreated $event)
|
public function createdInvoice(InvoiceWasCreated $event)
|
||||||
{
|
{
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->invoice,
|
$event->invoice,
|
||||||
ACTIVITY_TYPE_CREATE_INVOICE,
|
ACTIVITY_TYPE_CREATE_INVOICE,
|
||||||
$event->invoice->getAdjustment()
|
$event->invoice->getAdjustment()
|
||||||
);
|
);
|
||||||
@ -97,14 +88,14 @@ class ActivityListener
|
|||||||
|
|
||||||
public function updatedInvoice(InvoiceWasUpdated $event)
|
public function updatedInvoice(InvoiceWasUpdated $event)
|
||||||
{
|
{
|
||||||
if ( ! $event->invoice->isChanged()) {
|
if (! $event->invoice->isChanged()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$backupInvoice = Invoice::with('invoice_items', 'client.account', 'client.contacts')->find($event->invoice->id);
|
$backupInvoice = Invoice::with('invoice_items', 'client.account', 'client.contacts')->find($event->invoice->id);
|
||||||
|
|
||||||
$activity = $this->activityRepo->create(
|
$activity = $this->activityRepo->create(
|
||||||
$event->invoice,
|
$event->invoice,
|
||||||
ACTIVITY_TYPE_UPDATE_INVOICE,
|
ACTIVITY_TYPE_UPDATE_INVOICE,
|
||||||
$event->invoice->getAdjustment()
|
$event->invoice->getAdjustment()
|
||||||
);
|
);
|
||||||
@ -116,7 +107,7 @@ class ActivityListener
|
|||||||
public function deletedInvoice(InvoiceWasDeleted $event)
|
public function deletedInvoice(InvoiceWasDeleted $event)
|
||||||
{
|
{
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->invoice,
|
$event->invoice,
|
||||||
ACTIVITY_TYPE_DELETE_INVOICE,
|
ACTIVITY_TYPE_DELETE_INVOICE,
|
||||||
$event->invoice->balance * -1,
|
$event->invoice->balance * -1,
|
||||||
$event->invoice->getAmountPaid() * -1
|
$event->invoice->getAmountPaid() * -1
|
||||||
@ -138,15 +129,17 @@ class ActivityListener
|
|||||||
public function restoredInvoice(InvoiceWasRestored $event)
|
public function restoredInvoice(InvoiceWasRestored $event)
|
||||||
{
|
{
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->invoice,
|
$event->invoice,
|
||||||
ACTIVITY_TYPE_RESTORE_INVOICE
|
ACTIVITY_TYPE_RESTORE_INVOICE,
|
||||||
|
$event->fromDeleted ? $event->invoice->balance : 0,
|
||||||
|
$event->fromDeleted ? $event->invoice->getAmountPaid() : 0
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function emailedInvoice(InvoiceInvitationWasEmailed $event)
|
public function emailedInvoice(InvoiceInvitationWasEmailed $event)
|
||||||
{
|
{
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->invitation->invoice,
|
$event->invitation->invoice,
|
||||||
ACTIVITY_TYPE_EMAIL_INVOICE,
|
ACTIVITY_TYPE_EMAIL_INVOICE,
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
@ -157,7 +150,7 @@ class ActivityListener
|
|||||||
public function viewedInvoice(InvoiceInvitationWasViewed $event)
|
public function viewedInvoice(InvoiceInvitationWasViewed $event)
|
||||||
{
|
{
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->invoice,
|
$event->invoice,
|
||||||
ACTIVITY_TYPE_VIEW_INVOICE,
|
ACTIVITY_TYPE_VIEW_INVOICE,
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
@ -165,28 +158,26 @@ class ActivityListener
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Quotes
|
// Quotes
|
||||||
public function createdQuote(QuoteWasCreated $event)
|
public function createdQuote(QuoteWasCreated $event)
|
||||||
{
|
{
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->quote,
|
$event->quote,
|
||||||
ACTIVITY_TYPE_CREATE_QUOTE
|
ACTIVITY_TYPE_CREATE_QUOTE
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updatedQuote(QuoteWasUpdated $event)
|
public function updatedQuote(QuoteWasUpdated $event)
|
||||||
{
|
{
|
||||||
if ( ! $event->quote->isChanged()) {
|
if (! $event->quote->isChanged()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$backupQuote = Invoice::with('invoice_items', 'client.account', 'client.contacts')->find($event->quote->id);
|
$backupQuote = Invoice::with('invoice_items', 'client.account', 'client.contacts')->find($event->quote->id);
|
||||||
|
|
||||||
$activity = $this->activityRepo->create(
|
$activity = $this->activityRepo->create(
|
||||||
$event->quote,
|
$event->quote,
|
||||||
ACTIVITY_TYPE_UPDATE_QUOTE,
|
ACTIVITY_TYPE_UPDATE_QUOTE
|
||||||
$event->quote->getAdjustment()
|
|
||||||
);
|
);
|
||||||
|
|
||||||
$activity->json_backup = $backupQuote->hidePrivateFields()->toJSON();
|
$activity->json_backup = $backupQuote->hidePrivateFields()->toJSON();
|
||||||
@ -196,7 +187,7 @@ class ActivityListener
|
|||||||
public function deletedQuote(QuoteWasDeleted $event)
|
public function deletedQuote(QuoteWasDeleted $event)
|
||||||
{
|
{
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->quote,
|
$event->quote,
|
||||||
ACTIVITY_TYPE_DELETE_QUOTE
|
ACTIVITY_TYPE_DELETE_QUOTE
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -208,7 +199,7 @@ class ActivityListener
|
|||||||
}
|
}
|
||||||
|
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->quote,
|
$event->quote,
|
||||||
ACTIVITY_TYPE_ARCHIVE_QUOTE
|
ACTIVITY_TYPE_ARCHIVE_QUOTE
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -216,7 +207,7 @@ class ActivityListener
|
|||||||
public function restoredQuote(QuoteWasRestored $event)
|
public function restoredQuote(QuoteWasRestored $event)
|
||||||
{
|
{
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->quote,
|
$event->quote,
|
||||||
ACTIVITY_TYPE_RESTORE_QUOTE
|
ACTIVITY_TYPE_RESTORE_QUOTE
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -224,7 +215,7 @@ class ActivityListener
|
|||||||
public function emailedQuote(QuoteInvitationWasEmailed $event)
|
public function emailedQuote(QuoteInvitationWasEmailed $event)
|
||||||
{
|
{
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->invitation->invoice,
|
$event->invitation->invoice,
|
||||||
ACTIVITY_TYPE_EMAIL_QUOTE,
|
ACTIVITY_TYPE_EMAIL_QUOTE,
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
@ -235,7 +226,7 @@ class ActivityListener
|
|||||||
public function viewedQuote(QuoteInvitationWasViewed $event)
|
public function viewedQuote(QuoteInvitationWasViewed $event)
|
||||||
{
|
{
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->quote,
|
$event->quote,
|
||||||
ACTIVITY_TYPE_VIEW_QUOTE,
|
ACTIVITY_TYPE_VIEW_QUOTE,
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
@ -246,7 +237,7 @@ class ActivityListener
|
|||||||
public function approvedQuote(QuoteInvitationWasApproved $event)
|
public function approvedQuote(QuoteInvitationWasApproved $event)
|
||||||
{
|
{
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->quote,
|
$event->quote,
|
||||||
ACTIVITY_TYPE_APPROVE_QUOTE,
|
ACTIVITY_TYPE_APPROVE_QUOTE,
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
@ -254,12 +245,11 @@ class ActivityListener
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Credits
|
// Credits
|
||||||
public function createdCredit(CreditWasCreated $event)
|
public function createdCredit(CreditWasCreated $event)
|
||||||
{
|
{
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->credit,
|
$event->credit,
|
||||||
ACTIVITY_TYPE_CREATE_CREDIT
|
ACTIVITY_TYPE_CREATE_CREDIT
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -267,7 +257,7 @@ class ActivityListener
|
|||||||
public function deletedCredit(CreditWasDeleted $event)
|
public function deletedCredit(CreditWasDeleted $event)
|
||||||
{
|
{
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->credit,
|
$event->credit,
|
||||||
ACTIVITY_TYPE_DELETE_CREDIT
|
ACTIVITY_TYPE_DELETE_CREDIT
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -279,7 +269,7 @@ class ActivityListener
|
|||||||
}
|
}
|
||||||
|
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->credit,
|
$event->credit,
|
||||||
ACTIVITY_TYPE_ARCHIVE_CREDIT
|
ACTIVITY_TYPE_ARCHIVE_CREDIT
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -287,17 +277,16 @@ class ActivityListener
|
|||||||
public function restoredCredit(CreditWasRestored $event)
|
public function restoredCredit(CreditWasRestored $event)
|
||||||
{
|
{
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->credit,
|
$event->credit,
|
||||||
ACTIVITY_TYPE_RESTORE_CREDIT
|
ACTIVITY_TYPE_RESTORE_CREDIT
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Payments
|
// Payments
|
||||||
public function createdPayment(PaymentWasCreated $event)
|
public function createdPayment(PaymentWasCreated $event)
|
||||||
{
|
{
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->payment,
|
$event->payment,
|
||||||
ACTIVITY_TYPE_CREATE_PAYMENT,
|
ACTIVITY_TYPE_CREATE_PAYMENT,
|
||||||
$event->payment->amount * -1,
|
$event->payment->amount * -1,
|
||||||
$event->payment->amount
|
$event->payment->amount
|
||||||
@ -307,7 +296,7 @@ class ActivityListener
|
|||||||
public function deletedPayment(PaymentWasDeleted $event)
|
public function deletedPayment(PaymentWasDeleted $event)
|
||||||
{
|
{
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->payment,
|
$event->payment,
|
||||||
ACTIVITY_TYPE_DELETE_PAYMENT,
|
ACTIVITY_TYPE_DELETE_PAYMENT,
|
||||||
$event->payment->amount,
|
$event->payment->amount,
|
||||||
$event->payment->amount * -1
|
$event->payment->amount * -1
|
||||||
@ -321,7 +310,7 @@ class ActivityListener
|
|||||||
}
|
}
|
||||||
|
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->payment,
|
$event->payment,
|
||||||
ACTIVITY_TYPE_ARCHIVE_PAYMENT
|
ACTIVITY_TYPE_ARCHIVE_PAYMENT
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -329,9 +318,8 @@ class ActivityListener
|
|||||||
public function restoredPayment(PaymentWasRestored $event)
|
public function restoredPayment(PaymentWasRestored $event)
|
||||||
{
|
{
|
||||||
$this->activityRepo->create(
|
$this->activityRepo->create(
|
||||||
$event->payment,
|
$event->payment,
|
||||||
ACTIVITY_TYPE_RESTORE_PAYMENT
|
ACTIVITY_TYPE_RESTORE_PAYMENT
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -13,27 +13,32 @@ class BaseRepository
|
|||||||
return new $className();
|
return new $className();
|
||||||
}
|
}
|
||||||
|
|
||||||
private function dispatchEvent($entity, $type)
|
private function getEventClass($entity, $type)
|
||||||
{
|
{
|
||||||
$className = 'App\Events\\' . ucfirst($entity->getEntityType()) . 'Was' . $type;
|
return 'App\Events\\' . ucfirst($entity->getEntityType()) . 'Was' . $type;
|
||||||
event(new $className($entity));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function archive($entity)
|
public function archive($entity)
|
||||||
{
|
{
|
||||||
$entity->delete();
|
$entity->delete();
|
||||||
|
|
||||||
$this->dispatchEvent($entity, 'Archived');
|
$className = $this->getEventClass($entity, 'Archived');
|
||||||
|
event(new $className($entity));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function restore($entity)
|
public function restore($entity)
|
||||||
{
|
{
|
||||||
|
$fromDeleted = false;
|
||||||
$entity->restore();
|
$entity->restore();
|
||||||
|
|
||||||
$entity->is_deleted = false;
|
if ($entity->is_deleted) {
|
||||||
$entity->save();
|
$fromDeleted = true;
|
||||||
|
$entity->is_deleted = false;
|
||||||
|
$entity->save();
|
||||||
|
}
|
||||||
|
|
||||||
$this->dispatchEvent($entity, 'Restored');
|
$className = $this->getEventClass($entity, 'Restored');
|
||||||
|
event(new $className($entity, $fromDeleted));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function delete($entity)
|
public function delete($entity)
|
||||||
@ -43,7 +48,8 @@ class BaseRepository
|
|||||||
|
|
||||||
$entity->delete();
|
$entity->delete();
|
||||||
|
|
||||||
$this->dispatchEvent($entity, 'Deleted');
|
$className = $this->getEventClass($entity, 'Deleted');
|
||||||
|
event(new $className($entity));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function findByPublicIds($ids)
|
public function findByPublicIds($ids)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user