Fix for recurring number collisions - use dispatchNow()

This commit is contained in:
David Bomba 2020-10-20 11:53:54 +11:00
parent 686f12261d
commit bc2b0f4aae
7 changed files with 34 additions and 24 deletions

View File

@ -62,40 +62,40 @@ class BaseController extends Controller
'account', 'account',
'token.company_user', 'token.company_user',
'company.activities', 'company.activities',
'company.designs.company',
'company.documents',
'company.users.company_users', 'company.users.company_users',
'company.tax_rates',
'company.groups',
'company.company_gateways.gateway',
'company.clients.contacts', 'company.clients.contacts',
'company.clients.gateway_tokens', 'company.clients.gateway_tokens',
'company.clients.documents', 'company.clients.documents',
'company.products', 'company.company_gateways.gateway',
'company.products.documents', 'company.credits.invitations.contact',
'company.recurring_invoices', 'company.credits.invitations.company',
'company.credits.documents',
'company.expenses.documents',
'company.groups',
'company.invoices.invitations.contact', 'company.invoices.invitations.contact',
'company.invoices.invitations.company', 'company.invoices.invitations.company',
'company.invoices.documents', 'company.invoices.documents',
'company.products',
'company.products.documents',
'company.payments.paymentables',
'company.payments.documents',
'company.payment_terms.company',
'company.projects.documents',
'company.recurring_invoices', 'company.recurring_invoices',
'company.recurring_invoices.invitations.contact', 'company.recurring_invoices.invitations.contact',
'company.recurring_invoices.invitations.company', 'company.recurring_invoices.invitations.company',
'company.recurring_invoices.documents', 'company.recurring_invoices.documents',
'company.payments.paymentables',
'company.payments.documents',
'company.quotes.invitations.contact', 'company.quotes.invitations.contact',
'company.quotes.invitations.company', 'company.quotes.invitations.company',
'company.quotes.documents', 'company.quotes.documents',
'company.credits.invitations.contact', 'company.tasks',
'company.credits.invitations.company',
'company.credits.documents',
'company.payment_terms.company',
'company.vendors.contacts',
'company.expenses.documents',
'company.tasks.documents', 'company.tasks.documents',
'company.projects.documents', 'company.tax_rates',
'company.designs.company',
'company.documents',
'company.webhooks',
'company.tokens_hashed', 'company.tokens_hashed',
'company.vendors.contacts',
'company.webhooks',
]; ];
private $mini_load = [ private $mini_load = [

View File

@ -122,6 +122,9 @@ class EmailController extends BaseController
} }
}); });
$entity_obj->last_sent_date = now();
$entity_obj->save();
/*Only notify the admin ONCE, not once per contact/invite*/ /*Only notify the admin ONCE, not once per contact/invite*/
$invitation = $entity_obj->invitations->first(); $invitation = $entity_obj->invitations->first();

View File

@ -36,6 +36,7 @@ class UpdateRecurringInvoiceRequest extends Request
public function rules() public function rules()
{ {
$rules = []; $rules = [];
if ($this->input('documents') && is_array($this->input('documents'))) { if ($this->input('documents') && is_array($this->input('documents'))) {
@ -49,7 +50,7 @@ class UpdateRecurringInvoiceRequest extends Request
} }
if ($this->input('number')) { if ($this->input('number')) {
$rules['number'] = 'unique:recurring_invoices,number,'.$this->id.',id,company_id,'.$this->recurring_invoice->company_id; $rules['number'] = 'unique:recurring_invoices,number,'.$this->recurring_invoice->id.',id,company_id,'.$this->recurring_invoice->company_id;
} }
return $rules; return $rules;

View File

@ -54,7 +54,7 @@ class RecurringInvoicesCron
info("Current date = " . now()->format("Y-m-d") . " Recurring date = " .$recurring_invoice->next_send_date); info("Current date = " . now()->format("Y-m-d") . " Recurring date = " .$recurring_invoice->next_send_date);
SendRecurring::dispatch($recurring_invoice, $recurring_invoice->company->db); SendRecurring::dispatchNow($recurring_invoice, $recurring_invoice->company->db);
}); });
@ -74,7 +74,7 @@ class RecurringInvoicesCron
info("Current date = " . now()->format("Y-m-d") . " Recurring date = " .$recurring_invoice->next_send_date); info("Current date = " . now()->format("Y-m-d") . " Recurring date = " .$recurring_invoice->next_send_date);
SendRecurring::dispatch($recurring_invoice, $recurring_invoice->company->db); SendRecurring::dispatchNow($recurring_invoice, $recurring_invoice->company->db);
}); });
} }

View File

@ -46,9 +46,9 @@ class InvoiceEmailedNotification implements ShouldQueue
$first_notification_sent = true; $first_notification_sent = true;
// $invoice = $event->invitation->invoice; $invoice = $event->invitation->invoice;
// $invoice->last_sent_date = now(); $invoice->last_sent_date = now();
// $invoice->save(); $invoice->save();
foreach ($event->invitation->company->company_users as $company_user) { foreach ($event->invitation->company->company_users as $company_user) {
$user = $company_user->user; $user = $company_user->user;

View File

@ -27,6 +27,11 @@ class RecurringInvoiceInvitation extends BaseModel
protected $touches = ['recurring_invoice']; protected $touches = ['recurring_invoice'];
protected $with = [
'company',
'contact',
];
public function getEntityType() public function getEntityType()
{ {
return self::class; return self::class;

View File

@ -518,6 +518,7 @@ trait GeneratesCounter
$settings->vendor_number_counter = 1; $settings->vendor_number_counter = 1;
$settings->ticket_number_counter = 1; $settings->ticket_number_counter = 1;
$settings->payment_number_counter = 1; $settings->payment_number_counter = 1;
$settings->project_number_counter = 1;
$settings->task_number_counter = 1; $settings->task_number_counter = 1;
$settings->expense_number_counter = 1; $settings->expense_number_counter = 1;