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',
'token.company_user',
'company.activities',
'company.designs.company',
'company.documents',
'company.users.company_users',
'company.tax_rates',
'company.groups',
'company.company_gateways.gateway',
'company.clients.contacts',
'company.clients.gateway_tokens',
'company.clients.documents',
'company.products',
'company.products.documents',
'company.recurring_invoices',
'company.company_gateways.gateway',
'company.credits.invitations.contact',
'company.credits.invitations.company',
'company.credits.documents',
'company.expenses.documents',
'company.groups',
'company.invoices.invitations.contact',
'company.invoices.invitations.company',
'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.invitations.contact',
'company.recurring_invoices.invitations.company',
'company.recurring_invoices.documents',
'company.payments.paymentables',
'company.payments.documents',
'company.quotes.invitations.contact',
'company.quotes.invitations.company',
'company.quotes.documents',
'company.credits.invitations.contact',
'company.credits.invitations.company',
'company.credits.documents',
'company.payment_terms.company',
'company.vendors.contacts',
'company.expenses.documents',
'company.tasks',
'company.tasks.documents',
'company.projects.documents',
'company.designs.company',
'company.documents',
'company.webhooks',
'company.tax_rates',
'company.tokens_hashed',
'company.vendors.contacts',
'company.webhooks',
];
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*/
$invitation = $entity_obj->invitations->first();

View File

@ -36,6 +36,7 @@ class UpdateRecurringInvoiceRequest extends Request
public function rules()
{
$rules = [];
if ($this->input('documents') && is_array($this->input('documents'))) {
@ -49,7 +50,7 @@ class UpdateRecurringInvoiceRequest extends Request
}
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;

View File

@ -54,7 +54,7 @@ class RecurringInvoicesCron
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);
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;
// $invoice = $event->invitation->invoice;
// $invoice->last_sent_date = now();
// $invoice->save();
$invoice = $event->invitation->invoice;
$invoice->last_sent_date = now();
$invoice->save();
foreach ($event->invitation->company->company_users as $company_user) {
$user = $company_user->user;

View File

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

View File

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