mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-06-05 08:44:35 -04:00
Fixes for Tests, MultiDB (#3334)
* refactor send_invoice to generic -> send * Code cleanup * Fixes for tests and multidb
This commit is contained in:
parent
bd8a6b462a
commit
1e35c90ee6
@ -94,7 +94,7 @@ class SendTestEmails extends Command
|
|||||||
'client_id' => $client->id,
|
'client_id' => $client->id,
|
||||||
'company_id' => $company->id,
|
'company_id' => $company->id,
|
||||||
'is_primary' => 1,
|
'is_primary' => 1,
|
||||||
'send_invoice' => true,
|
'send' => true,
|
||||||
'email' => $faker->safeEmail,
|
'email' => $faker->safeEmail,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ class SendTestEmails extends Command
|
|||||||
'user_id' => $user->id,
|
'user_id' => $user->id,
|
||||||
'client_id' => $client->id,
|
'client_id' => $client->id,
|
||||||
'company_id' => $company->id,
|
'company_id' => $company->id,
|
||||||
'send_invoice' => true,
|
'send' => true,
|
||||||
'email' => $faker->safeEmail,
|
'email' => $faker->safeEmail,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@ use App\Factory\CloneInvoiceFactory;
|
|||||||
use App\Factory\CloneInvoiceToQuoteFactory;
|
use App\Factory\CloneInvoiceToQuoteFactory;
|
||||||
use App\Factory\InvoiceFactory;
|
use App\Factory\InvoiceFactory;
|
||||||
use App\Filters\InvoiceFilters;
|
use App\Filters\InvoiceFilters;
|
||||||
|
use App\Helpers\Email\InvoiceEmail;
|
||||||
use App\Http\Requests\Invoice\ActionInvoiceRequest;
|
use App\Http\Requests\Invoice\ActionInvoiceRequest;
|
||||||
use App\Http\Requests\Invoice\CreateInvoiceRequest;
|
use App\Http\Requests\Invoice\CreateInvoiceRequest;
|
||||||
use App\Http\Requests\Invoice\DestroyInvoiceRequest;
|
use App\Http\Requests\Invoice\DestroyInvoiceRequest;
|
||||||
@ -663,7 +664,12 @@ class InvoiceController extends BaseController {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'email':
|
case 'email':
|
||||||
EmailInvoice::dispatch($invoice, $invoice->company);
|
$invoice->invitations->each(function ($invitation) use($invoice){
|
||||||
|
|
||||||
|
EmailInvoice::dispatch((new InvoiceEmail)->build($invoice, null, null), $invitation, $invoice->company);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
if (!$bulk) {
|
if (!$bulk) {
|
||||||
return response()->json(['message' => 'email sent'], 200);
|
return response()->json(['message' => 'email sent'], 200);
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,7 @@ class EmailCredit implements ShouldQueue
|
|||||||
$template_style = $this->credit->client->getSetting('email_style');
|
$template_style = $this->credit->client->getSetting('email_style');
|
||||||
|
|
||||||
$this->credit->invitations->each(function ($invitation) use ($template_style) {
|
$this->credit->invitations->each(function ($invitation) use ($template_style) {
|
||||||
if ($invitation->contact->send_invoice && $invitation->contact->email) {
|
if ($invitation->contact->send && $invitation->contact->email) {
|
||||||
$message_array = $this->credit->getEmailData('', $invitation->contact);
|
$message_array = $this->credit->getEmailData('', $invitation->contact);
|
||||||
$message_array['title'] = &$message_array['subject'];
|
$message_array['title'] = &$message_array['subject'];
|
||||||
$message_array['footer'] = "Sent to ".$invitation->contact->present()->name();
|
$message_array['footer'] = "Sent to ".$invitation->contact->present()->name();
|
||||||
|
@ -6,6 +6,7 @@ use App\Events\Invoice\InvoiceWasEmailed;
|
|||||||
use App\Events\Invoice\InvoiceWasEmailedAndFailed;
|
use App\Events\Invoice\InvoiceWasEmailedAndFailed;
|
||||||
use App\Helpers\Email\InvoiceEmail;
|
use App\Helpers\Email\InvoiceEmail;
|
||||||
use App\Jobs\Utils\SystemLogger;
|
use App\Jobs\Utils\SystemLogger;
|
||||||
|
use App\Libraries\MultiDB;
|
||||||
use App\Mail\TemplateEmail;
|
use App\Mail\TemplateEmail;
|
||||||
use App\Models\Company;
|
use App\Models\Company;
|
||||||
use App\Models\Invoice;
|
use App\Models\Invoice;
|
||||||
@ -27,14 +28,18 @@ class EmailInvoice implements ShouldQueue
|
|||||||
|
|
||||||
public $email_builder;
|
public $email_builder;
|
||||||
|
|
||||||
|
public $company;
|
||||||
/**
|
/**
|
||||||
|
*
|
||||||
* EmailQuote constructor.
|
* EmailQuote constructor.
|
||||||
* @param BuildEmail $email_builder
|
* @param BuildEmail $email_builder
|
||||||
* @param QuoteInvitation $quote_invitation
|
* @param QuoteInvitation $quote_invitation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public function __construct(InvoiceEmail $email_builder, InvoiceInvitation $invoice_invitation)
|
public function __construct(InvoiceEmail $email_builder, InvoiceInvitation $invoice_invitation, Company $company)
|
||||||
{
|
{
|
||||||
|
$this->company = $company;
|
||||||
|
|
||||||
$this->invoice_invitation = $invoice_invitation;
|
$this->invoice_invitation = $invoice_invitation;
|
||||||
|
|
||||||
$this->email_builder = $email_builder;
|
$this->email_builder = $email_builder;
|
||||||
@ -49,6 +54,7 @@ class EmailInvoice implements ShouldQueue
|
|||||||
|
|
||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
|
MultiDB::setDb($this->company->db);
|
||||||
|
|
||||||
Mail::to($this->invoice_invitation->contact->email, $this->invoice_invitation->contact->present()->name())
|
Mail::to($this->invoice_invitation->contact->email, $this->invoice_invitation->contact->present()->name())
|
||||||
->send(new TemplateEmail($this->email_builder,
|
->send(new TemplateEmail($this->email_builder,
|
||||||
|
@ -55,12 +55,12 @@ class CreateQuoteInvitations implements ShouldQueue
|
|||||||
->whereQuoteId($this->quote->id)
|
->whereQuoteId($this->quote->id)
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
if (!$invitation && $contact->send_invoice) {
|
if (!$invitation && $contact->send) {
|
||||||
$ii = QuoteInvitationFactory::create($this->quote->company_id, $this->quote->user_id);
|
$ii = QuoteInvitationFactory::create($this->quote->company_id, $this->quote->user_id);
|
||||||
$ii->quote_id = $this->quote->id;
|
$ii->quote_id = $this->quote->id;
|
||||||
$ii->client_contact_id = $contact->id;
|
$ii->client_contact_id = $contact->id;
|
||||||
$ii->save();
|
$ii->save();
|
||||||
} elseif ($invitation && !$contact->send_invoice) {
|
} elseif ($invitation && !$contact->send) {
|
||||||
$invitation->delete();
|
$invitation->delete();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -42,12 +42,12 @@ class CreateInvoiceInvitation implements ShouldQueue
|
|||||||
->whereInvoiceId($invoice->id)
|
->whereInvoiceId($invoice->id)
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
if (!$invitation && $contact->send_invoice) {
|
if (!$invitation && $contact->send) {
|
||||||
$ii = InvoiceInvitationFactory::create($invoice->company_id, $invoice->user_id);
|
$ii = InvoiceInvitationFactory::create($invoice->company_id, $invoice->user_id);
|
||||||
$ii->invoice_id = $invoice->id;
|
$ii->invoice_id = $invoice->id;
|
||||||
$ii->client_contact_id = $contact->id;
|
$ii->client_contact_id = $contact->id;
|
||||||
$ii->save();
|
$ii->save();
|
||||||
} elseif ($invitation && !$contact->send_invoice) {
|
} elseif ($invitation && !$contact->send) {
|
||||||
$invitation->delete();
|
$invitation->delete();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -56,9 +56,9 @@ class InvoiceRepository extends BaseRepository {
|
|||||||
|
|
||||||
if (isset($data['client_contacts'])) {
|
if (isset($data['client_contacts'])) {
|
||||||
foreach ($data['client_contacts'] as $contact) {
|
foreach ($data['client_contacts'] as $contact) {
|
||||||
if ($contact['send_invoice'] == 1) {
|
if ($contact['send'] == 1) {
|
||||||
$client_contact = ClientContact::find($this->decodePrimaryKey($contact['id']));
|
$client_contact = ClientContact::find($this->decodePrimaryKey($contact['id']));
|
||||||
$client_contact->send_invoice = true;
|
$client_contact->send = true;
|
||||||
$client_contact->save();
|
$client_contact->save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,9 +47,9 @@ class QuoteRepository extends BaseRepository
|
|||||||
|
|
||||||
if (isset($data['client_contacts'])) {
|
if (isset($data['client_contacts'])) {
|
||||||
foreach ($data['client_contacts'] as $contact) {
|
foreach ($data['client_contacts'] as $contact) {
|
||||||
if ($contact['send_invoice'] == 1) {
|
if ($contact['send'] == 1) {
|
||||||
$client_contact = ClientContact::find($this->decodePrimaryKey($contact['id']));
|
$client_contact = ClientContact::find($this->decodePrimaryKey($contact['id']));
|
||||||
$client_contact->send_invoice = true;
|
$client_contact->send = true;
|
||||||
$client_contact->save();
|
$client_contact->save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,12 +35,12 @@ class CreateInvitations
|
|||||||
->whereInvoiceId($invoice->id)
|
->whereInvoiceId($invoice->id)
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
if (!$invitation && $contact->send_invoice) {
|
if (!$invitation && $contact->send) {
|
||||||
$ii = InvoiceInvitationFactory::create($invoice->company_id, $invoice->user_id);
|
$ii = InvoiceInvitationFactory::create($invoice->company_id, $invoice->user_id);
|
||||||
$ii->invoice_id = $invoice->id;
|
$ii->invoice_id = $invoice->id;
|
||||||
$ii->client_contact_id = $contact->id;
|
$ii->client_contact_id = $contact->id;
|
||||||
$ii->save();
|
$ii->save();
|
||||||
} elseif ($invitation && !$contact->send_invoice) {
|
} elseif ($invitation && !$contact->send) {
|
||||||
$invitation->delete();
|
$invitation->delete();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -41,8 +41,8 @@ class SendEmail
|
|||||||
$email_builder = (new InvoiceEmail())->build($this->invoice, $reminder_template, $contact);
|
$email_builder = (new InvoiceEmail())->build($this->invoice, $reminder_template, $contact);
|
||||||
|
|
||||||
$this->invoice->invitations->each(function ($invitation) use ($email_builder) {
|
$this->invoice->invitations->each(function ($invitation) use ($email_builder) {
|
||||||
if ($invitation->contact->send_invoice && $invitation->contact->email) {
|
if ($invitation->contact->send && $invitation->contact->email) {
|
||||||
EmailInvoice::dispatch($email_builder, $invitation);
|
EmailInvoice::dispatch($email_builder, $invitation, $invitation->company);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ class SendEmail
|
|||||||
$email_builder = (new PaymentEmail())->build($this->payment, $contact);
|
$email_builder = (new PaymentEmail())->build($this->payment, $contact);
|
||||||
|
|
||||||
$this->payment->client->contacts->each(function ($contact) use ($email_builder) {
|
$this->payment->client->contacts->each(function ($contact) use ($email_builder) {
|
||||||
if ($contact->send_invoice && $contact->email) {
|
if ($contact->send && $contact->email) {
|
||||||
EmailPayment::dispatchNow($this->payment, $email_builder, $contact);
|
EmailPayment::dispatchNow($this->payment, $email_builder, $contact);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -22,12 +22,12 @@ class CreateInvitations
|
|||||||
->whereQuoteId($quote->id)
|
->whereQuoteId($quote->id)
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
if (!$invitation && $contact->send_invoice) {
|
if (!$invitation && $contact->send) {
|
||||||
$ii = QuoteInvitationFactory::create($quote->company_id, $quote->user_id);
|
$ii = QuoteInvitationFactory::create($quote->company_id, $quote->user_id);
|
||||||
$ii->quote_id = $quote->id;
|
$ii->quote_id = $quote->id;
|
||||||
$ii->client_contact_id = $contact->id;
|
$ii->client_contact_id = $contact->id;
|
||||||
$ii->save();
|
$ii->save();
|
||||||
} elseif ($invitation && !$contact->send_invoice) {
|
} elseif ($invitation && !$contact->send) {
|
||||||
$invitation->delete();
|
$invitation->delete();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -30,7 +30,7 @@ class SendEmail
|
|||||||
$email_builder = (new QuoteEmail())->build($this->quote, $reminder_template, $contact);
|
$email_builder = (new QuoteEmail())->build($this->quote, $reminder_template, $contact);
|
||||||
|
|
||||||
$this->quote->invitations->each(function ($invitation) use ($email_builder) {
|
$this->quote->invitations->each(function ($invitation) use ($email_builder) {
|
||||||
if ($invitation->contact->send_invoice && $invitation->contact->email) {
|
if ($invitation->contact->send && $invitation->contact->email) {
|
||||||
EmailQuote::dispatchNow($email_builder, $invitation);
|
EmailQuote::dispatchNow($email_builder, $invitation);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -44,7 +44,7 @@ class ClientContactTransformer extends EntityTransformer
|
|||||||
'custom_value3' => $contact->custom_value3 ?: '',
|
'custom_value3' => $contact->custom_value3 ?: '',
|
||||||
'custom_value4' => $contact->custom_value4 ?: '',
|
'custom_value4' => $contact->custom_value4 ?: '',
|
||||||
'contact_key' => $contact->contact_key ?: '',
|
'contact_key' => $contact->contact_key ?: '',
|
||||||
'send_invoice' => (bool) $contact->send_invoice,
|
'send' => (bool) $contact->send,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -378,7 +378,7 @@ class CreateUsersTable extends Migration
|
|||||||
$table->string('password');
|
$table->string('password');
|
||||||
$table->string('token')->nullable();
|
$table->string('token')->nullable();
|
||||||
$table->boolean('is_locked')->default(false);
|
$table->boolean('is_locked')->default(false);
|
||||||
$table->boolean('send_invoice')->default(true);
|
$table->boolean('send')->default(true);
|
||||||
$table->string('contact_key')->nullable();
|
$table->string('contact_key')->nullable();
|
||||||
$table->rememberToken();
|
$table->rememberToken();
|
||||||
$table->timestamps(6);
|
$table->timestamps(6);
|
||||||
|
@ -58,9 +58,9 @@ class InvoiceEmailTest extends TestCase
|
|||||||
|
|
||||||
$invitations->each(function ($invitation) use ($email_builder) {
|
$invitations->each(function ($invitation) use ($email_builder) {
|
||||||
|
|
||||||
if ($invitation->contact->send_invoice && $invitation->contact->email) {
|
if ($invitation->contact->send && $invitation->contact->email) {
|
||||||
|
|
||||||
EmailInvoice::dispatch($email_builder, $invitation);
|
EmailInvoice::dispatch($email_builder, $invitation, $invitation->company);
|
||||||
|
|
||||||
$this->expectsJobs(EmailInvoice::class);
|
$this->expectsJobs(EmailInvoice::class);
|
||||||
|
|
||||||
|
@ -139,14 +139,14 @@ trait MockAccountData
|
|||||||
'client_id' => $this->client->id,
|
'client_id' => $this->client->id,
|
||||||
'company_id' => $this->company->id,
|
'company_id' => $this->company->id,
|
||||||
'is_primary' => 1,
|
'is_primary' => 1,
|
||||||
'send_invoice' => true,
|
'send' => true,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
factory(\App\Models\ClientContact::class,1)->create([
|
factory(\App\Models\ClientContact::class,1)->create([
|
||||||
'user_id' => $this->user->id,
|
'user_id' => $this->user->id,
|
||||||
'client_id' => $this->client->id,
|
'client_id' => $this->client->id,
|
||||||
'company_id' => $this->company->id,
|
'company_id' => $this->company->id,
|
||||||
'send_invoice' => true
|
'send' => true
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
||||||
@ -200,13 +200,13 @@ trait MockAccountData
|
|||||||
->whereInvoiceId($this->invoice->id)
|
->whereInvoiceId($this->invoice->id)
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
if(!$invitation && $contact->send_invoice) {
|
if(!$invitation && $contact->send) {
|
||||||
$ii = InvoiceInvitationFactory::create($this->invoice->company_id, $this->invoice->user_id);
|
$ii = InvoiceInvitationFactory::create($this->invoice->company_id, $this->invoice->user_id);
|
||||||
$ii->invoice_id = $this->invoice->id;
|
$ii->invoice_id = $this->invoice->id;
|
||||||
$ii->client_contact_id = $contact->id;
|
$ii->client_contact_id = $contact->id;
|
||||||
$ii->save();
|
$ii->save();
|
||||||
}
|
}
|
||||||
else if($invitation && !$contact->send_invoice) {
|
else if($invitation && !$contact->send) {
|
||||||
$invitation->delete();
|
$invitation->delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user