diff --git a/app/Jobs/RecurringInvoice/SendRecurring.php b/app/Jobs/RecurringInvoice/SendRecurring.php index 63ce5c2e030f..d19ebd3847f3 100644 --- a/app/Jobs/RecurringInvoice/SendRecurring.php +++ b/app/Jobs/RecurringInvoice/SendRecurring.php @@ -116,7 +116,7 @@ class SendRecurring implements ShouldQueue nlog("Invoice {$invoice->number} created"); $invoice->invitations->each(function ($invitation) use ($invoice) { - if ($invitation->contact && strlen($invitation->contact->email) >=1 && $invoice->client->getSetting('auto_email_invoice')) { + if ($invitation->contact && !$invitation->contact->trashed() && strlen($invitation->contact->email) >=1 && $invoice->client->getSetting('auto_email_invoice')) { try{ EmailEntity::dispatch($invitation, $invoice->company); diff --git a/app/Jobs/Util/SendFailedEmails.php b/app/Jobs/Util/SendFailedEmails.php index bffe66caa6eb..ae8f11be1d37 100644 --- a/app/Jobs/Util/SendFailedEmails.php +++ b/app/Jobs/Util/SendFailedEmails.php @@ -63,7 +63,7 @@ class SendFailedEmails implements ShouldQueue $invitation = $job_meta_array['entity_name']::where('key', $job_meta_array['invitation_key'])->with('contact')->first(); if ($invitation->invoice) { - if ($invitation->contact->send_email && $invitation->contact->email) { + if (!$invitation->contact->trashed() && $invitation->contact->send_email && $invitation->contact->email) { EmailEntity::dispatch($invitation, $invitation->company, $job_meta_array['reminder_template']); } } diff --git a/app/PaymentDrivers/BaseDriver.php b/app/PaymentDrivers/BaseDriver.php index 65705fc19c9d..c715a9d46424 100644 --- a/app/PaymentDrivers/BaseDriver.php +++ b/app/PaymentDrivers/BaseDriver.php @@ -394,7 +394,7 @@ class BaseDriver extends AbstractPaymentDriver $invoices->first()->invitations->each(function ($invitation) use ($nmo){ - if ($invitation->contact->send_email && $invitation->contact->email) { + if (!$invitation->contact->trashed() && $invitation->contact->send_email && $invitation->contact->email) { $nmo->to_user = $invitation->contact; NinjaMailerJob::dispatch($nmo); @@ -456,7 +456,7 @@ class BaseDriver extends AbstractPaymentDriver $invoices->first()->invitations->each(function ($invitation) use ($nmo){ - if ($invitation->contact->send_email && $invitation->contact->email) { + if (!$invitation->contact->trashed() && $invitation->contact->send_email && $invitation->contact->email) { $nmo->to_user = $invitation->contact; NinjaMailerJob::dispatch($nmo); diff --git a/app/Services/Credit/SendEmail.php b/app/Services/Credit/SendEmail.php index 3915b7503502..55599323f139 100644 --- a/app/Services/Credit/SendEmail.php +++ b/app/Services/Credit/SendEmail.php @@ -44,7 +44,7 @@ class SendEmail } $this->credit->invitations->each(function ($invitation) { - if ($invitation->contact->send_email && $invitation->contact->email) { + if (!$invitation->contact->trashed() && $invitation->contact->send_email && $invitation->contact->email) { $email_builder = (new CreditEmail())->build($invitation, $this->reminder_template); // EmailCredit::dispatchNow($email_builder, $invitation, $invitation->company); diff --git a/app/Services/Invoice/SendEmail.php b/app/Services/Invoice/SendEmail.php index 54cd0f326623..f96b95cbaabc 100644 --- a/app/Services/Invoice/SendEmail.php +++ b/app/Services/Invoice/SendEmail.php @@ -44,7 +44,7 @@ class SendEmail extends AbstractService } $this->invoice->invitations->each(function ($invitation) { - if ($invitation->contact->send_email && $invitation->contact->email) { + if (!$invitation->contact->trashed() && $invitation->contact->send_email && $invitation->contact->email) { EmailEntity::dispatchNow($invitation, $invitation->company, $this->reminder_template); } }); diff --git a/app/Services/Quote/SendEmail.php b/app/Services/Quote/SendEmail.php index 91ff69586505..8fb1c30024a0 100644 --- a/app/Services/Quote/SendEmail.php +++ b/app/Services/Quote/SendEmail.php @@ -42,7 +42,7 @@ class SendEmail } $this->quote->invitations->each(function ($invitation) { - if ($invitation->contact->send_email && $invitation->contact->email) { + if (!$invitation->contact->trashed() && $invitation->contact->send_email && $invitation->contact->email) { EmailEntity::dispatchNow($invitation, $invitation->company, $this->reminder_template); } }); diff --git a/tests/Feature/CancelInvoiceTest.php b/tests/Feature/CancelInvoiceTest.php index a4d5a8104cf7..5bdaf24e6b2b 100644 --- a/tests/Feature/CancelInvoiceTest.php +++ b/tests/Feature/CancelInvoiceTest.php @@ -54,11 +54,11 @@ class CancelInvoiceTest extends TestCase $this->assertEquals(Invoice::STATUS_SENT, $this->invoice->status_id); - $this->invoice->service()->handleCancellation()->save(); + $this->invoice->fresh()->service()->handleCancellation()->save(); $this->assertEquals(0, $this->invoice->fresh()->balance); $this->assertEquals($this->client->fresh()->balance, ($client_balance - $invoice_balance)); $this->assertNotEquals($client_balance, $this->client->fresh()->balance); - $this->assertEquals(Invoice::STATUS_CANCELLED, $this->invoice->status_id); + $this->assertEquals(Invoice::STATUS_CANCELLED, $this->invoice->fresh()->status_id); } } diff --git a/tests/Feature/RefundTest.php b/tests/Feature/RefundTest.php index 1e4af1b635f4..8c33246569bf 100644 --- a/tests/Feature/RefundTest.php +++ b/tests/Feature/RefundTest.php @@ -14,6 +14,7 @@ use App\Factory\ClientFactory; use App\Factory\CreditFactory; use App\Factory\InvoiceFactory; use App\Helpers\Invoice\InvoiceSum; +use App\Models\ClientContact; use App\Models\Invoice; use App\Models\Payment; use App\Utils\Traits\MakesHash; @@ -63,6 +64,14 @@ class RefundTest extends TestCase $client = ClientFactory::create($this->company->id, $this->user->id); $client->save(); + $contact = ClientContact::factory()->create([ + 'user_id' => $this->user->id, + 'client_id' => $client->id, + 'company_id' => $this->company->id, + 'is_primary' => 1, + 'send_email' => true, + ]); + $this->invoice = InvoiceFactory::create($this->company->id, $this->user->id); //stub the company and user_id $this->invoice->client_id = $client->id; $this->invoice->status_id = Invoice::STATUS_SENT; @@ -138,6 +147,15 @@ class RefundTest extends TestCase $client = ClientFactory::create($this->company->id, $this->user->id); $client->save(); + $contact = ClientContact::factory()->create([ + 'user_id' => $this->user->id, + 'client_id' => $client->id, + 'company_id' => $this->company->id, + 'is_primary' => 1, + 'send_email' => true, + ]); + + $this->invoice = InvoiceFactory::create($this->company->id, $this->user->id); //stub the company and user_id $this->invoice->client_id = $client->id; $this->invoice->status_id = Invoice::STATUS_SENT; @@ -227,6 +245,14 @@ class RefundTest extends TestCase $client = ClientFactory::create($this->company->id, $this->user->id); $client->save(); + $contact = ClientContact::factory()->create([ + 'user_id' => $this->user->id, + 'client_id' => $client->id, + 'company_id' => $this->company->id, + 'is_primary' => 1, + 'send_email' => true, + ]); + $this->invoice = InvoiceFactory::create($this->company->id, $this->user->id); //stub the company and user_id $this->invoice->client_id = $client->id; $this->invoice->status_id = Invoice::STATUS_SENT; @@ -303,6 +329,15 @@ class RefundTest extends TestCase $client = ClientFactory::create($this->company->id, $this->user->id); $client->save(); + $contact = ClientContact::factory()->create([ + 'user_id' => $this->user->id, + 'client_id' => $client->id, + 'company_id' => $this->company->id, + 'is_primary' => 1, + 'send_email' => true, + ]); + + $this->invoice = InvoiceFactory::create($this->company->id, $this->user->id); //stub the company and user_id $this->invoice->client_id = $client->id; $this->invoice->status_id = Invoice::STATUS_SENT; @@ -388,6 +423,15 @@ class RefundTest extends TestCase $client = ClientFactory::create($this->company->id, $this->user->id); $client->save(); + $contact = ClientContact::factory()->create([ + 'user_id' => $this->user->id, + 'client_id' => $client->id, + 'company_id' => $this->company->id, + 'is_primary' => 1, + 'send_email' => true, + ]); + + $this->invoice = InvoiceFactory::create($this->company->id, $this->user->id); //stub the company and user_id $this->invoice->client_id = $client->id; $this->invoice->status_id = Invoice::STATUS_SENT; @@ -497,6 +541,15 @@ class RefundTest extends TestCase $client = ClientFactory::create($this->company->id, $this->user->id); $client->save(); + $contact = ClientContact::factory()->create([ + 'user_id' => $this->user->id, + 'client_id' => $client->id, + 'company_id' => $this->company->id, + 'is_primary' => 1, + 'send_email' => true, + ]); + + $this->invoice = InvoiceFactory::create($this->company->id, $this->user->id); //stub the company and user_id $this->invoice->client_id = $client->id; $this->invoice->status_id = Invoice::STATUS_SENT;