From 19104ec0d557aada2b7fb5ced0efe9bbb700aaf9 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 10 Mar 2023 14:01:07 +1100 Subject: [PATCH] Add functionality to keep payment_balance up to date. : --- .../Payment/PaymentBalanceActivity.php | 49 ++ .../Payment/PaymentEmailFailureActivity.php | 2 - .../Payment/PaymentEmailedActivity.php | 1 - app/Providers/EventServiceProvider.php | 471 +++++++++--------- app/Services/Client/ClientService.php | 18 + 5 files changed, 305 insertions(+), 236 deletions(-) create mode 100644 app/Listeners/Payment/PaymentBalanceActivity.php diff --git a/app/Listeners/Payment/PaymentBalanceActivity.php b/app/Listeners/Payment/PaymentBalanceActivity.php new file mode 100644 index 000000000000..23d021e1c12c --- /dev/null +++ b/app/Listeners/Payment/PaymentBalanceActivity.php @@ -0,0 +1,49 @@ +company->db); + + $event->payment->client->service()->updatePaymentBalance(); + + } + + public function middleware($event): array + { + return [(new WithoutOverlapping($event->payment->client->id))]; + } +} diff --git a/app/Listeners/Payment/PaymentEmailFailureActivity.php b/app/Listeners/Payment/PaymentEmailFailureActivity.php index c478d013ccdb..bcf9ca95983c 100644 --- a/app/Listeners/Payment/PaymentEmailFailureActivity.php +++ b/app/Listeners/Payment/PaymentEmailFailureActivity.php @@ -19,8 +19,6 @@ class PaymentEmailFailureActivity implements ShouldQueue { use UserNotifies; - public $delay = 5; - /** * Create the event listener. * diff --git a/app/Listeners/Payment/PaymentEmailedActivity.php b/app/Listeners/Payment/PaymentEmailedActivity.php index 52ee83b3feaa..af6701c4d486 100644 --- a/app/Listeners/Payment/PaymentEmailedActivity.php +++ b/app/Listeners/Payment/PaymentEmailedActivity.php @@ -17,7 +17,6 @@ use Illuminate\Contracts\Queue\ShouldQueue; class PaymentEmailedActivity implements ShouldQueue { - public $delay = 5; use UserNotifies; diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index a9434ea7f937..a672bafc963b 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -11,259 +11,258 @@ namespace App\Providers; -use App\Events\Account\AccountCreated; -use App\Events\Client\ClientWasArchived; -use App\Events\Client\ClientWasCreated; -use App\Events\Client\ClientWasDeleted; -use App\Events\Client\ClientWasRestored; -use App\Events\Client\ClientWasUpdated; -use App\Events\Client\DesignWasDeleted; -use App\Events\Client\DesignWasRestored; -use App\Events\Client\DesignWasUpdated; -use App\Events\Company\CompanyDocumentsDeleted; -use App\Events\Contact\ContactLoggedIn; -use App\Events\Credit\CreditWasArchived; -use App\Events\Credit\CreditWasCreated; -use App\Events\Credit\CreditWasDeleted; -use App\Events\Credit\CreditWasEmailed; -use App\Events\Credit\CreditWasEmailedAndFailed; -use App\Events\Credit\CreditWasMarkedSent; -use App\Events\Credit\CreditWasRestored; -use App\Events\Credit\CreditWasUpdated; -use App\Events\Credit\CreditWasViewed; -use App\Events\Design\DesignWasArchived; -use App\Events\Expense\ExpenseWasArchived; -use App\Events\Expense\ExpenseWasCreated; -use App\Events\Expense\ExpenseWasDeleted; -use App\Events\Expense\ExpenseWasRestored; -use App\Events\Expense\ExpenseWasUpdated; -use App\Events\Invoice\InvoiceReminderWasEmailed; -use App\Events\Invoice\InvoiceWasArchived; -use App\Events\Invoice\InvoiceWasCancelled; -use App\Events\Invoice\InvoiceWasCreated; -use App\Events\Invoice\InvoiceWasDeleted; -use App\Events\Invoice\InvoiceWasEmailed; -use App\Events\Invoice\InvoiceWasEmailedAndFailed; -use App\Events\Invoice\InvoiceWasMarkedSent; -use App\Events\Invoice\InvoiceWasPaid; -use App\Events\Invoice\InvoiceWasRestored; -use App\Events\Invoice\InvoiceWasReversed; -use App\Events\Invoice\InvoiceWasUpdated; -use App\Events\Invoice\InvoiceWasViewed; -use App\Events\Misc\InvitationWasViewed; -use App\Events\Payment\PaymentWasArchived; -use App\Events\Payment\PaymentWasCreated; -use App\Events\Payment\PaymentWasDeleted; -use App\Events\Payment\PaymentWasEmailed; -use App\Events\Payment\PaymentWasEmailedAndFailed; -use App\Events\Payment\PaymentWasRefunded; -use App\Events\Payment\PaymentWasRestored; -use App\Events\Payment\PaymentWasUpdated; -use App\Events\Payment\PaymentWasVoided; -use App\Events\PurchaseOrder\PurchaseOrderWasAccepted; -use App\Events\PurchaseOrder\PurchaseOrderWasArchived; -use App\Events\PurchaseOrder\PurchaseOrderWasCreated; -use App\Events\PurchaseOrder\PurchaseOrderWasDeleted; -use App\Events\PurchaseOrder\PurchaseOrderWasEmailed; -use App\Events\PurchaseOrder\PurchaseOrderWasRestored; -use App\Events\PurchaseOrder\PurchaseOrderWasUpdated; -use App\Events\PurchaseOrder\PurchaseOrderWasViewed; -use App\Events\Quote\QuoteWasApproved; -use App\Events\Quote\QuoteWasArchived; -use App\Events\Quote\QuoteWasCreated; -use App\Events\Quote\QuoteWasDeleted; -use App\Events\Quote\QuoteWasEmailed; -use App\Events\Quote\QuoteWasRestored; -use App\Events\Quote\QuoteWasUpdated; -use App\Events\Quote\QuoteWasViewed; -use App\Events\RecurringExpense\RecurringExpenseWasArchived; -use App\Events\RecurringExpense\RecurringExpenseWasCreated; -use App\Events\RecurringExpense\RecurringExpenseWasDeleted; -use App\Events\RecurringExpense\RecurringExpenseWasRestored; -use App\Events\RecurringExpense\RecurringExpenseWasUpdated; -use App\Events\RecurringInvoice\RecurringInvoiceWasArchived; -use App\Events\RecurringInvoice\RecurringInvoiceWasCreated; -use App\Events\RecurringInvoice\RecurringInvoiceWasDeleted; -use App\Events\RecurringInvoice\RecurringInvoiceWasRestored; -use App\Events\RecurringInvoice\RecurringInvoiceWasUpdated; -use App\Events\RecurringQuote\RecurringQuoteWasArchived; -use App\Events\RecurringQuote\RecurringQuoteWasCreated; -use App\Events\RecurringQuote\RecurringQuoteWasDeleted; -use App\Events\RecurringQuote\RecurringQuoteWasRestored; -use App\Events\RecurringQuote\RecurringQuoteWasUpdated; -use App\Events\Subscription\SubscriptionWasArchived; -use App\Events\Subscription\SubscriptionWasCreated; -use App\Events\Subscription\SubscriptionWasDeleted; -use App\Events\Subscription\SubscriptionWasRestored; -use App\Events\Subscription\SubscriptionWasUpdated; -use App\Events\Task\TaskWasArchived; -use App\Events\Task\TaskWasCreated; -use App\Events\Task\TaskWasDeleted; -use App\Events\Task\TaskWasRestored; -use App\Events\Task\TaskWasUpdated; -use App\Events\User\UserLoggedIn; -use App\Events\User\UserWasArchived; -use App\Events\User\UserWasCreated; -use App\Events\User\UserWasDeleted; -use App\Events\User\UserWasRestored; -use App\Events\User\UserWasUpdated; -use App\Events\Vendor\VendorWasArchived; -use App\Events\Vendor\VendorWasCreated; -use App\Events\Vendor\VendorWasDeleted; -use App\Events\Vendor\VendorWasRestored; -use App\Events\Vendor\VendorWasUpdated; -use App\Listeners\Activity\ArchivedClientActivity; -use App\Listeners\Activity\ClientUpdatedActivity; -use App\Listeners\Activity\CreatedClientActivity; -use App\Listeners\Activity\CreatedCreditActivity; -use App\Listeners\Activity\CreatedExpenseActivity; -use App\Listeners\Activity\CreatedQuoteActivity; -use App\Listeners\Activity\CreatedSubscriptionActivity; -use App\Listeners\Activity\CreatedTaskActivity; -use App\Listeners\Activity\CreatedVendorActivity; -use App\Listeners\Activity\CreditArchivedActivity; -use App\Listeners\Activity\DeleteClientActivity; -use App\Listeners\Activity\DeleteCreditActivity; -use App\Listeners\Activity\ExpenseArchivedActivity; -use App\Listeners\Activity\ExpenseDeletedActivity; -use App\Listeners\Activity\ExpenseRestoredActivity; -use App\Listeners\Activity\ExpenseUpdatedActivity; -use App\Listeners\Activity\PaymentArchivedActivity; -use App\Listeners\Activity\PaymentCreatedActivity; -use App\Listeners\Activity\PaymentDeletedActivity; -use App\Listeners\Activity\PaymentRefundedActivity; -use App\Listeners\Activity\PaymentUpdatedActivity; -use App\Listeners\Activity\PaymentVoidedActivity; -use App\Listeners\Activity\QuoteUpdatedActivity; -use App\Listeners\Activity\RestoreClientActivity; -use App\Listeners\Activity\SubscriptionArchivedActivity; -use App\Listeners\Activity\SubscriptionDeletedActivity; -use App\Listeners\Activity\SubscriptionRestoredActivity; -use App\Listeners\Activity\SubscriptionUpdatedActivity; -use App\Listeners\Activity\TaskArchivedActivity; -use App\Listeners\Activity\TaskDeletedActivity; -use App\Listeners\Activity\TaskRestoredActivity; -use App\Listeners\Activity\TaskUpdatedActivity; -use App\Listeners\Activity\UpdatedCreditActivity; -use App\Listeners\Activity\VendorArchivedActivity; -use App\Listeners\Activity\VendorDeletedActivity; -use App\Listeners\Activity\VendorRestoredActivity; -use App\Listeners\Activity\VendorUpdatedActivity; -use App\Listeners\Contact\UpdateContactLastLogin; -use App\Listeners\Credit\CreditCreatedNotification; -use App\Listeners\Credit\CreditEmailedNotification; -use App\Listeners\Credit\CreditRestoredActivity; -use App\Listeners\Credit\CreditViewedActivity; -use App\Listeners\Document\DeleteCompanyDocuments; -use App\Listeners\Invoice\CreateInvoiceActivity; -use App\Listeners\Invoice\CreateInvoicePdf; -use App\Listeners\Invoice\InvoiceArchivedActivity; -use App\Listeners\Invoice\InvoiceCancelledActivity; -use App\Listeners\Invoice\InvoiceCreatedNotification; -use App\Listeners\Invoice\InvoiceDeletedActivity; -use App\Listeners\Invoice\InvoiceEmailActivity; -use App\Listeners\Invoice\InvoiceEmailedNotification; -use App\Listeners\Invoice\InvoiceEmailFailedActivity; -use App\Listeners\Invoice\InvoiceFailedEmailNotification; -use App\Listeners\Invoice\InvoicePaidActivity; -use App\Listeners\Invoice\InvoiceReminderEmailActivity; -use App\Listeners\Invoice\InvoiceRestoredActivity; -use App\Listeners\Invoice\InvoiceReversedActivity; -use App\Listeners\Invoice\InvoiceViewedActivity; -use App\Listeners\Invoice\UpdateInvoiceActivity; -use App\Listeners\Mail\MailSentListener; -use App\Listeners\Misc\InvitationViewedListener; -use App\Listeners\Payment\PaymentEmailedActivity; -use App\Listeners\Payment\PaymentEmailFailureActivity; -use App\Listeners\Payment\PaymentNotification; -use App\Listeners\Payment\PaymentRestoredActivity; -use App\Listeners\PurchaseOrder\CreatePurchaseOrderActivity; -use App\Listeners\PurchaseOrder\PurchaseOrderAcceptedActivity; -use App\Listeners\PurchaseOrder\PurchaseOrderAcceptedListener; -use App\Listeners\PurchaseOrder\PurchaseOrderArchivedActivity; -use App\Listeners\PurchaseOrder\PurchaseOrderCreatedListener; -use App\Listeners\PurchaseOrder\PurchaseOrderDeletedActivity; -use App\Listeners\PurchaseOrder\PurchaseOrderEmailActivity; -use App\Listeners\PurchaseOrder\PurchaseOrderEmailedNotification; -use App\Listeners\PurchaseOrder\PurchaseOrderRestoredActivity; -use App\Listeners\PurchaseOrder\PurchaseOrderViewedActivity; -use App\Listeners\PurchaseOrder\UpdatePurchaseOrderActivity; -use App\Listeners\Quote\QuoteApprovedActivity; -use App\Listeners\Quote\QuoteApprovedNotification; -use App\Listeners\Quote\QuoteApprovedWebhook; -use App\Listeners\Quote\QuoteArchivedActivity; -use App\Listeners\Quote\QuoteCreatedNotification; -use App\Listeners\Quote\QuoteDeletedActivity; -use App\Listeners\Quote\QuoteEmailActivity; -use App\Listeners\Quote\QuoteEmailedNotification; -use App\Listeners\Quote\QuoteRestoredActivity; -use App\Listeners\Quote\QuoteViewedActivity; -use App\Listeners\Quote\ReachWorkflowSettings; -use App\Listeners\RecurringExpense\CreatedRecurringExpenseActivity; -use App\Listeners\RecurringExpense\RecurringExpenseArchivedActivity; -use App\Listeners\RecurringExpense\RecurringExpenseDeletedActivity; -use App\Listeners\RecurringExpense\RecurringExpenseRestoredActivity; -use App\Listeners\RecurringExpense\RecurringExpenseUpdatedActivity; -use App\Listeners\RecurringInvoice\CreateRecurringInvoiceActivity; -use App\Listeners\RecurringInvoice\RecurringInvoiceArchivedActivity; -use App\Listeners\RecurringInvoice\RecurringInvoiceDeletedActivity; -use App\Listeners\RecurringInvoice\RecurringInvoiceRestoredActivity; -use App\Listeners\RecurringInvoice\UpdateRecurringInvoiceActivity; -use App\Listeners\RecurringQuote\CreateRecurringQuoteActivity; -use App\Listeners\RecurringQuote\RecurringQuoteArchivedActivity; -use App\Listeners\RecurringQuote\RecurringQuoteDeletedActivity; -use App\Listeners\RecurringQuote\RecurringQuoteRestoredActivity; -use App\Listeners\RecurringQuote\UpdateRecurringQuoteActivity; -use App\Listeners\SendVerificationNotification; -use App\Listeners\User\ArchivedUserActivity; -use App\Listeners\User\CreatedUserActivity; -use App\Listeners\User\DeletedUserActivity; -use App\Listeners\User\RestoredUserActivity; -use App\Listeners\User\UpdatedUserActivity; -use App\Listeners\User\UpdateUserLastLogin; -use App\Models\Account; +use App\Models\Task; +use App\Models\User; +use App\Models\Quote; use App\Models\Client; -use App\Models\ClientContact; -use App\Models\Company; -use App\Models\CompanyGateway; -use App\Models\CompanyToken; use App\Models\Credit; +use App\Models\Vendor; +use App\Models\Account; +use App\Models\Company; use App\Models\Expense; use App\Models\Invoice; use App\Models\Payment; use App\Models\Product; use App\Models\Project; use App\Models\Proposal; -use App\Models\PurchaseOrder; -use App\Models\Quote; +use App\Models\CompanyToken; use App\Models\Subscription; -use App\Models\Task; -use App\Models\User; -use App\Models\Vendor; +use App\Models\ClientContact; +use App\Models\PurchaseOrder; use App\Models\VendorContact; -use App\Observers\AccountObserver; -use App\Observers\ClientContactObserver; +use App\Models\CompanyGateway; +use App\Observers\TaskObserver; +use App\Observers\UserObserver; +use App\Observers\QuoteObserver; +use App\Events\User\UserLoggedIn; use App\Observers\ClientObserver; -use App\Observers\CompanyGatewayObserver; -use App\Observers\CompanyObserver; -use App\Observers\CompanyTokenObserver; use App\Observers\CreditObserver; +use App\Observers\VendorObserver; +use App\Observers\AccountObserver; +use App\Observers\CompanyObserver; use App\Observers\ExpenseObserver; use App\Observers\InvoiceObserver; use App\Observers\PaymentObserver; use App\Observers\ProductObserver; use App\Observers\ProjectObserver; +use App\Events\Task\TaskWasCreated; +use App\Events\Task\TaskWasDeleted; +use App\Events\Task\TaskWasUpdated; +use App\Events\User\UserWasCreated; +use App\Events\User\UserWasDeleted; +use App\Events\User\UserWasUpdated; use App\Observers\ProposalObserver; -use App\Observers\PurchaseOrderObserver; -use App\Observers\QuoteObserver; +use App\Events\Quote\QuoteWasViewed; +use App\Events\Task\TaskWasArchived; +use App\Events\Task\TaskWasRestored; +use App\Events\User\UserWasArchived; +use App\Events\User\UserWasRestored; +use App\Events\Quote\QuoteWasCreated; +use App\Events\Quote\QuoteWasDeleted; +use App\Events\Quote\QuoteWasEmailed; +use App\Events\Quote\QuoteWasUpdated; +use App\Events\Account\AccountCreated; +use App\Events\Credit\CreditWasViewed; +use App\Events\Invoice\InvoiceWasPaid; +use App\Events\Quote\QuoteWasApproved; +use App\Events\Quote\QuoteWasArchived; +use App\Events\Quote\QuoteWasRestored; +use App\Events\Client\ClientWasCreated; +use App\Events\Client\ClientWasDeleted; +use App\Events\Client\ClientWasUpdated; +use App\Events\Client\DesignWasDeleted; +use App\Events\Client\DesignWasUpdated; +use App\Events\Contact\ContactLoggedIn; +use App\Events\Credit\CreditWasCreated; +use App\Events\Credit\CreditWasDeleted; +use App\Events\Credit\CreditWasEmailed; +use App\Events\Credit\CreditWasUpdated; +use App\Events\Vendor\VendorWasCreated; +use App\Events\Vendor\VendorWasDeleted; +use App\Events\Vendor\VendorWasUpdated; +use App\Observers\CompanyTokenObserver; use App\Observers\SubscriptionObserver; -use App\Observers\TaskObserver; -use App\Observers\UserObserver; -use App\Observers\VendorContactObserver; -use App\Observers\VendorObserver; -use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; -use Illuminate\Mail\Events\MessageSending; use Illuminate\Mail\Events\MessageSent; +use App\Events\Client\ClientWasArchived; +use App\Events\Client\ClientWasRestored; +use App\Events\Client\DesignWasRestored; +use App\Events\Credit\CreditWasArchived; +use App\Events\Credit\CreditWasRestored; +use App\Events\Design\DesignWasArchived; +use App\Events\Invoice\InvoiceWasViewed; +use App\Events\Misc\InvitationWasViewed; +use App\Events\Payment\PaymentWasVoided; +use App\Events\Vendor\VendorWasArchived; +use App\Events\Vendor\VendorWasRestored; +use App\Listeners\Mail\MailSentListener; +use App\Observers\ClientContactObserver; +use App\Observers\PurchaseOrderObserver; +use App\Observers\VendorContactObserver; +use App\Events\Expense\ExpenseWasCreated; +use App\Events\Expense\ExpenseWasDeleted; +use App\Events\Expense\ExpenseWasUpdated; +use App\Events\Invoice\InvoiceWasCreated; +use App\Events\Invoice\InvoiceWasDeleted; +use App\Events\Invoice\InvoiceWasEmailed; +use App\Events\Invoice\InvoiceWasUpdated; +use App\Events\Payment\PaymentWasCreated; +use App\Events\Payment\PaymentWasDeleted; +use App\Events\Payment\PaymentWasEmailed; +use App\Events\Payment\PaymentWasUpdated; +use App\Observers\CompanyGatewayObserver; +use App\Events\Credit\CreditWasMarkedSent; +use App\Events\Expense\ExpenseWasArchived; +use App\Events\Expense\ExpenseWasRestored; +use App\Events\Invoice\InvoiceWasArchived; +use App\Events\Invoice\InvoiceWasRestored; +use App\Events\Invoice\InvoiceWasReversed; +use App\Events\Payment\PaymentWasArchived; +use App\Events\Payment\PaymentWasRefunded; +use App\Events\Payment\PaymentWasRestored; +use Illuminate\Mail\Events\MessageSending; +use App\Events\Invoice\InvoiceWasCancelled; +use App\Listeners\Invoice\CreateInvoicePdf; +use App\Listeners\Quote\QuoteEmailActivity; +use App\Listeners\User\CreatedUserActivity; +use App\Listeners\User\DeletedUserActivity; +use App\Listeners\User\UpdatedUserActivity; +use App\Listeners\User\UpdateUserLastLogin; +use App\Events\Invoice\InvoiceWasMarkedSent; +use App\Listeners\Quote\QuoteViewedActivity; +use App\Listeners\User\ArchivedUserActivity; +use App\Listeners\User\RestoredUserActivity; +use App\Listeners\Quote\QuoteApprovedWebhook; +use App\Listeners\Quote\QuoteDeletedActivity; +use App\Listeners\Credit\CreditViewedActivity; +use App\Listeners\Invoice\InvoicePaidActivity; +use App\Listeners\Payment\PaymentNotification; +use App\Listeners\Quote\QuoteApprovedActivity; +use App\Listeners\Quote\QuoteArchivedActivity; +use App\Listeners\Quote\QuoteRestoredActivity; +use App\Listeners\Quote\ReachWorkflowSettings; +use App\Events\Company\CompanyDocumentsDeleted; +use App\Listeners\Activity\CreatedTaskActivity; +use App\Listeners\Activity\TaskDeletedActivity; +use App\Listeners\Activity\TaskUpdatedActivity; +use App\Listeners\Invoice\InvoiceEmailActivity; +use App\Listeners\SendVerificationNotification; +use App\Events\Credit\CreditWasEmailedAndFailed; +use App\Listeners\Activity\CreatedQuoteActivity; +use App\Listeners\Activity\DeleteClientActivity; +use App\Listeners\Activity\DeleteCreditActivity; +use App\Listeners\Activity\QuoteUpdatedActivity; +use App\Listeners\Activity\TaskArchivedActivity; +use App\Listeners\Activity\TaskRestoredActivity; +use App\Listeners\Credit\CreditRestoredActivity; +use App\Listeners\Invoice\CreateInvoiceActivity; +use App\Listeners\Invoice\InvoiceViewedActivity; +use App\Listeners\Invoice\UpdateInvoiceActivity; +use App\Listeners\Misc\InvitationViewedListener; +use App\Events\Invoice\InvoiceReminderWasEmailed; +use App\Listeners\Activity\ClientUpdatedActivity; +use App\Listeners\Activity\CreatedClientActivity; +use App\Listeners\Activity\CreatedCreditActivity; +use App\Listeners\Activity\CreatedVendorActivity; +use App\Listeners\Activity\PaymentVoidedActivity; +use App\Listeners\Activity\RestoreClientActivity; +use App\Listeners\Activity\UpdatedCreditActivity; +use App\Listeners\Activity\VendorDeletedActivity; +use App\Listeners\Activity\VendorUpdatedActivity; +use App\Listeners\Contact\UpdateContactLastLogin; +use App\Listeners\Invoice\InvoiceDeletedActivity; +use App\Listeners\Payment\PaymentBalanceActivity; +use App\Listeners\Quote\QuoteCreatedNotification; +use App\Listeners\Quote\QuoteEmailedNotification; +use App\Events\Invoice\InvoiceWasEmailedAndFailed; +use App\Events\Payment\PaymentWasEmailedAndFailed; +use App\Listeners\Activity\ArchivedClientActivity; +use App\Listeners\Activity\CreatedExpenseActivity; +use App\Listeners\Activity\CreditArchivedActivity; +use App\Listeners\Activity\ExpenseDeletedActivity; +use App\Listeners\Activity\ExpenseUpdatedActivity; +use App\Listeners\Activity\PaymentCreatedActivity; +use App\Listeners\Activity\PaymentDeletedActivity; +use App\Listeners\Activity\PaymentUpdatedActivity; +use App\Listeners\Activity\VendorArchivedActivity; +use App\Listeners\Activity\VendorRestoredActivity; +use App\Listeners\Document\DeleteCompanyDocuments; +use App\Listeners\Invoice\InvoiceArchivedActivity; +use App\Listeners\Invoice\InvoiceRestoredActivity; +use App\Listeners\Invoice\InvoiceReversedActivity; +use App\Listeners\Payment\PaymentRestoredActivity; +use App\Listeners\Quote\QuoteApprovedNotification; +use App\Events\Subscription\SubscriptionWasCreated; +use App\Events\Subscription\SubscriptionWasDeleted; +use App\Events\Subscription\SubscriptionWasUpdated; +use App\Listeners\Activity\ExpenseArchivedActivity; +use App\Listeners\Activity\ExpenseRestoredActivity; +use App\Listeners\Activity\PaymentArchivedActivity; +use App\Listeners\Activity\PaymentRefundedActivity; +use App\Listeners\Credit\CreditCreatedNotification; +use App\Listeners\Credit\CreditEmailedNotification; +use App\Listeners\Invoice\InvoiceCancelledActivity; +use App\Events\PurchaseOrder\PurchaseOrderWasViewed; +use App\Events\Subscription\SubscriptionWasArchived; +use App\Events\Subscription\SubscriptionWasRestored; +use App\Events\PurchaseOrder\PurchaseOrderWasCreated; +use App\Events\PurchaseOrder\PurchaseOrderWasDeleted; +use App\Events\PurchaseOrder\PurchaseOrderWasEmailed; +use App\Events\PurchaseOrder\PurchaseOrderWasUpdated; +use App\Listeners\Invoice\InvoiceCreatedNotification; +use App\Listeners\Invoice\InvoiceEmailedNotification; +use App\Listeners\Invoice\InvoiceEmailFailedActivity; +use App\Events\PurchaseOrder\PurchaseOrderWasAccepted; +use App\Events\PurchaseOrder\PurchaseOrderWasArchived; +use App\Events\PurchaseOrder\PurchaseOrderWasRestored; +use App\Events\RecurringQuote\RecurringQuoteWasCreated; +use App\Events\RecurringQuote\RecurringQuoteWasDeleted; +use App\Events\RecurringQuote\RecurringQuoteWasUpdated; +use App\Listeners\Activity\CreatedSubscriptionActivity; +use App\Listeners\Activity\SubscriptionDeletedActivity; +use App\Listeners\Activity\SubscriptionUpdatedActivity; +use App\Listeners\Invoice\InvoiceReminderEmailActivity; +use App\Events\RecurringQuote\RecurringQuoteWasArchived; +use App\Events\RecurringQuote\RecurringQuoteWasRestored; +use App\Listeners\Activity\SubscriptionArchivedActivity; +use App\Listeners\Activity\SubscriptionRestoredActivity; +use App\Listeners\Invoice\InvoiceFailedEmailNotification; +use App\Events\RecurringExpense\RecurringExpenseWasCreated; +use App\Events\RecurringExpense\RecurringExpenseWasDeleted; +use App\Events\RecurringExpense\RecurringExpenseWasUpdated; +use App\Events\RecurringInvoice\RecurringInvoiceWasCreated; +use App\Events\RecurringInvoice\RecurringInvoiceWasDeleted; +use App\Events\RecurringInvoice\RecurringInvoiceWasUpdated; +use App\Listeners\PurchaseOrder\PurchaseOrderEmailActivity; +use App\Events\RecurringExpense\RecurringExpenseWasArchived; +use App\Events\RecurringExpense\RecurringExpenseWasRestored; +use App\Events\RecurringInvoice\RecurringInvoiceWasArchived; +use App\Events\RecurringInvoice\RecurringInvoiceWasRestored; +use App\Listeners\PurchaseOrder\CreatePurchaseOrderActivity; +use App\Listeners\PurchaseOrder\PurchaseOrderViewedActivity; +use App\Listeners\PurchaseOrder\UpdatePurchaseOrderActivity; +use App\Listeners\PurchaseOrder\PurchaseOrderCreatedListener; +use App\Listeners\PurchaseOrder\PurchaseOrderDeletedActivity; +use App\Listeners\PurchaseOrder\PurchaseOrderAcceptedActivity; +use App\Listeners\PurchaseOrder\PurchaseOrderAcceptedListener; +use App\Listeners\PurchaseOrder\PurchaseOrderArchivedActivity; +use App\Listeners\PurchaseOrder\PurchaseOrderRestoredActivity; +use App\Listeners\RecurringQuote\CreateRecurringQuoteActivity; +use App\Listeners\RecurringQuote\UpdateRecurringQuoteActivity; +use App\Listeners\RecurringQuote\RecurringQuoteDeletedActivity; +use App\Listeners\RecurringQuote\RecurringQuoteArchivedActivity; +use App\Listeners\RecurringQuote\RecurringQuoteRestoredActivity; +use App\Listeners\PurchaseOrder\PurchaseOrderEmailedNotification; +use App\Listeners\RecurringInvoice\CreateRecurringInvoiceActivity; +use App\Listeners\RecurringInvoice\UpdateRecurringInvoiceActivity; +use App\Listeners\RecurringExpense\CreatedRecurringExpenseActivity; +use App\Listeners\RecurringExpense\RecurringExpenseDeletedActivity; +use App\Listeners\RecurringExpense\RecurringExpenseUpdatedActivity; +use App\Listeners\RecurringInvoice\RecurringInvoiceDeletedActivity; +use App\Listeners\RecurringExpense\RecurringExpenseArchivedActivity; +use App\Listeners\RecurringExpense\RecurringExpenseRestoredActivity; +use App\Listeners\RecurringInvoice\RecurringInvoiceArchivedActivity; +use App\Listeners\RecurringInvoice\RecurringInvoiceRestoredActivity; +use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; class EventServiceProvider extends ServiceProvider { @@ -305,24 +304,30 @@ class EventServiceProvider extends ServiceProvider PaymentWasCreated::class => [ PaymentCreatedActivity::class, PaymentNotification::class, + PaymentBalanceActivity::class, ], PaymentWasDeleted::class => [ PaymentDeletedActivity::class, + PaymentBalanceActivity::class, ], PaymentWasArchived::class => [ PaymentArchivedActivity::class, ], PaymentWasUpdated::class => [ PaymentUpdatedActivity::class, + PaymentBalanceActivity::class, ], PaymentWasRefunded::class => [ PaymentRefundedActivity::class, + PaymentBalanceActivity::class, ], PaymentWasVoided::class => [ PaymentVoidedActivity::class, + PaymentBalanceActivity::class, ], PaymentWasRestored::class => [ PaymentRestoredActivity::class, + PaymentBalanceActivity::class, ], // Clients ClientWasCreated::class => [ diff --git a/app/Services/Client/ClientService.php b/app/Services/Client/ClientService.php index 5a88bf755bc0..dd5d944285e5 100644 --- a/app/Services/Client/ClientService.php +++ b/app/Services/Client/ClientService.php @@ -14,6 +14,7 @@ namespace App\Services\Client; use App\Utils\Number; use App\Models\Client; use App\Models\Credit; +use App\Models\Payment; use App\Services\Email\Email; use App\Utils\Traits\MakesDates; use Illuminate\Support\Facades\DB; @@ -75,6 +76,23 @@ class ClientService return $this; } + public function updatePaymentBalance() + { + $amount = Payment::where('client_id', $this->client->id) + ->where('is_deleted', 0) + ->whereIn('status_id', [Payment::STATUS_COMPLETED, Payment::STATUS_PENDING, Payment::STATUS_PARTIALLY_REFUNDED, Payment::STATUS_REFUNDED]) + ->sum(DB::Raw('amount - refunded - applied')); + + DB::connection(config('database.default'))->transaction(function () use ($amount) { + $this->client = Client::withTrashed()->where('id', $this->client->id)->lockForUpdate()->first(); + $this->client->payment_balance = $amount; + $this->client->saveQuietly(); + }, 2); + + return $this; + } + + public function adjustCreditBalance(float $amount) { $this->client->credit_balance += $amount;