diff --git a/app/DataMapper/Analytics/EmailInvoiceFailure.php b/app/DataMapper/Analytics/EmailInvoiceFailure.php new file mode 100644 index 000000000000..47218e7dbc3c --- /dev/null +++ b/app/DataMapper/Analytics/EmailInvoiceFailure.php @@ -0,0 +1,57 @@ +terms = $recurring_invoice->terms; $invoice->public_notes = $recurring_invoice->public_notes; $invoice->private_notes = $recurring_invoice->private_notes; - $invoice->date = date_create()->format($client->date_format()); + //$invoice->date = now()->format($client->date_format()); $invoice->due_date = $recurring_invoice->calculateDueDate($recurring_invoice->next_send_date); $invoice->is_deleted = $recurring_invoice->is_deleted; $invoice->line_items = $recurring_invoice->line_items; diff --git a/app/Jobs/Invoice/EmailInvoice.php b/app/Jobs/Invoice/EmailInvoice.php index 3e8180d068f0..4f84dd975a27 100644 --- a/app/Jobs/Invoice/EmailInvoice.php +++ b/app/Jobs/Invoice/EmailInvoice.php @@ -11,6 +11,7 @@ namespace App\Jobs\Invoice; +use App\DataMapper\Analytics\EmailInvoiceFailure; use App\Events\Invoice\InvoiceWasEmailed; use App\Events\Invoice\InvoiceWasEmailedAndFailed; use App\Helpers\Email\InvoiceEmail; @@ -30,6 +31,7 @@ use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Mail; use Symfony\Component\Mime\Test\Constraint\EmailTextBodyContains; +use Turbo124\Beacon\Facades\LightLogs; /*Multi Mailer implemented*/ @@ -95,4 +97,17 @@ class EmailInvoice extends BaseMailerJob implements ShouldQueue /* Mark invoice sent */ $this->invoice_invitation->invoice->service()->markSent()->save(); } + + public function failed($exception = null) + { + info('the job failed'); + + $job_failure = new EmailInvoiceFailure(); + $job_failure->string_metric5 = get_class($this); + $job_failure->string_metric6 = $exception->getMessage(); + + LightLogs::create($job_failure) + ->batch(); + + } } diff --git a/app/Jobs/RecurringInvoice/SendRecurring.php b/app/Jobs/RecurringInvoice/SendRecurring.php index cb2d10f34a1c..ccbdc7ae949b 100644 --- a/app/Jobs/RecurringInvoice/SendRecurring.php +++ b/app/Jobs/RecurringInvoice/SendRecurring.php @@ -11,6 +11,7 @@ namespace App\Jobs\RecurringInvoice; +use App\DataMapper\Analytics\SendRecurringFailure; use App\Events\Invoice\InvoiceWasEmailed; use App\Factory\RecurringInvoiceToInvoiceFactory; use App\Helpers\Email\InvoiceEmail; @@ -26,6 +27,7 @@ use Illuminate\Http\Request; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Carbon; +use Turbo124\Beacon\Facades\LightLogs; class SendRecurring implements ShouldQueue { @@ -58,7 +60,9 @@ class SendRecurring implements ShouldQueue // Generate Standard Invoice $invoice = RecurringInvoiceToInvoiceFactory::create($this->recurring_invoice, $this->recurring_invoice->client); - + + $invoice->date = now()->format('Y-m-d'); + $invoice = $invoice->service() ->markSent() ->applyNumber() @@ -71,9 +75,10 @@ class SendRecurring implements ShouldQueue $email_builder = (new InvoiceEmail())->build($invitation); - EmailInvoice::dispatch($email_builder, $invitation, $invoice->company); - - info("Firing email for invoice {$invoice->number}"); + if($invitation->contact && strlen($invitation->contact->email) >=1){ + EmailInvoice::dispatch($email_builder, $invitation, $invoice->company); + info("Firing email for invoice {$invoice->number}"); + } }); @@ -101,4 +106,18 @@ class SendRecurring implements ShouldQueue } + public function failed($exception = null) + { + info('the job failed'); + + $job_failure = new SendRecurringFailure(); + $job_failure->string_metric5 = get_class($this); + $job_failure->string_metric6 = $exception->getMessage(); + + LightLogs::create($job_failure) + ->batch(); + + info(print_r($exception->getMessage(), 1)); + } + } diff --git a/app/Jobs/Util/Import.php b/app/Jobs/Util/Import.php index 10c7911a7059..b556b5c3d99a 100644 --- a/app/Jobs/Util/Import.php +++ b/app/Jobs/Util/Import.php @@ -11,6 +11,7 @@ namespace App\Jobs\Util; +use App\DataMapper\Analytics\MigrationFailure; use App\DataMapper\CompanySettings; use App\Exceptions\MigrationValidatorFailed; use App\Exceptions\ResourceDependencyMissing; @@ -72,6 +73,7 @@ use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Validator; use Illuminate\Support\Str; +use Turbo124\Beacon\Facades\LightLogs; class Import implements ShouldQueue { @@ -966,6 +968,15 @@ class Import implements ShouldQueue public function failed($exception = null) { info('the job failed'); + + $job_failure = new MigrationFailure(); + $job_failure->string_metric5 = get_class($this); + $job_failure->string_metric6 = $exception->getMessage(); + + LightLogs::create($job_failure) + ->batch(); + info(print_r($exception->getMessage(), 1)); } + } diff --git a/app/Utils/Traits/GeneratesCounter.php b/app/Utils/Traits/GeneratesCounter.php index bd84bb285a01..ad1dc4d9898f 100644 --- a/app/Utils/Traits/GeneratesCounter.php +++ b/app/Utils/Traits/GeneratesCounter.php @@ -64,11 +64,12 @@ trait GeneratesCounter //Return a valid counter $pattern = $client->getSetting('invoice_number_pattern'); $padding = $client->getSetting('counter_padding'); - - $invoice_number = $this->checkEntityNumber(Invoice::class, $client, $counter, $padding, $pattern); + $prefix = ''; if($invoice && $invoice->recurring_id) - $invoice_number = $this->prefixCounter($invoice_number, $client->getSetting('recurring_number_prefix')); + $prefix = $client->getSetting('recurring_number_prefix'); + + $invoice_number = $this->checkEntityNumber(Invoice::class, $client, $counter, $padding, $pattern, $prefix); $this->incrementCounter($counter_entity, 'invoice_number_counter'); @@ -289,7 +290,7 @@ trait GeneratesCounter * * @return string The padded and prefixed entity number */ - private function checkEntityNumber($class, $entity, $counter, $padding, $pattern) + private function checkEntityNumber($class, $entity, $counter, $padding, $pattern, $prefix = '') { $check = false; @@ -298,6 +299,8 @@ trait GeneratesCounter $number = $this->applyNumberPattern($entity, $number, $pattern); + $number = $this->prefixCounter($number, $prefix); + if ($class == Invoice::class || $class == RecurringInvoice::class) $check = $class::whereCompanyId($entity->company_id)->whereNumber($number)->withTrashed()->first(); elseif ($class == Client::class || $class == Vendor::class)