From ee67911afb6102e979d570339adab2f57f7c88d0 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 6 Oct 2020 22:32:07 +1100 Subject: [PATCH 1/9] Fixes for tests --- tests/Feature/ProductTest.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/Feature/ProductTest.php b/tests/Feature/ProductTest.php index 6002efdd03eb..8a45791223fd 100644 --- a/tests/Feature/ProductTest.php +++ b/tests/Feature/ProductTest.php @@ -86,7 +86,10 @@ class ProductTest extends TestCase ) ->assertStatus(200); - $product = Product::all()->first(); + + $arr = $response->json(); + $product = Product::find($this->decodePrimaryKey($arr['data']['id'])); + $product_update = [ 'notes' => 'CHANGE', From 70a575386c68c8160c9e5e95e6d9776ae9c4b0c9 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 7 Oct 2020 10:16:57 +1100 Subject: [PATCH 2/9] Fixes for designs in migration: --- app/Helpers/Invoice/InvoiceItemSum.php | 8 ++++++-- .../Invoice/UniqueInvoiceNumberRule.php | 3 +++ app/Models/Gateway.php | 1 + app/Services/Invoice/ApplyNumber.php | 4 ++-- app/Utils/Traits/GeneratesCounter.php | 10 ++++++++-- database/factories/CompanyFactory.php | 1 + tests/Feature/InvoiceEmailTest.php | 8 ++++---- tests/MockAccountData.php | 12 ++++++------ tests/Unit/GeneratesCounterTest.php | 16 ++++++++-------- 9 files changed, 39 insertions(+), 24 deletions(-) diff --git a/app/Helpers/Invoice/InvoiceItemSum.php b/app/Helpers/Invoice/InvoiceItemSum.php index eaecb3338c42..ee66fddc67cc 100644 --- a/app/Helpers/Invoice/InvoiceItemSum.php +++ b/app/Helpers/Invoice/InvoiceItemSum.php @@ -230,7 +230,10 @@ class InvoiceItemSum continue; } - $amount = $this->item->line_total - ($this->item->line_total * ($this->invoice->discount / $this->sub_total)); + //$amount = $this->item->line_total - ($this->item->line_total * ($this->invoice->discount / $this->sub_total)); + $amount = ( $this->sub_total > 0 ) ? $this->item->line_total - ($this->item->line_total * ($this->invoice->discount / $this->sub_total)) : 0; + + $item_tax_rate1_total = $this->calcAmountLineTax($this->item->tax_rate1, $amount); $item_tax += $item_tax_rate1_total; @@ -260,7 +263,8 @@ class InvoiceItemSum } /** - * Sets default values for the line_items. + * Sets default casts for the values in the line_items. + * * @return $this */ private function cleanLineItem() diff --git a/app/Http/ValidationRules/Invoice/UniqueInvoiceNumberRule.php b/app/Http/ValidationRules/Invoice/UniqueInvoiceNumberRule.php index 15523687bc40..f8156b7a97e5 100644 --- a/app/Http/ValidationRules/Invoice/UniqueInvoiceNumberRule.php +++ b/app/Http/ValidationRules/Invoice/UniqueInvoiceNumberRule.php @@ -55,6 +55,9 @@ class UniqueInvoiceNumberRule implements Rule */ private function checkIfInvoiceNumberUnique() : bool { + if(empty($this->input['number'])) + return true; + $invoice = Invoice::where('client_id', $this->input['client_id']) ->where('number', $this->input['number']) ->withTrashed() diff --git a/app/Models/Gateway.php b/app/Models/Gateway.php index 801d4d5eec3e..448c522e3afb 100644 --- a/app/Models/Gateway.php +++ b/app/Models/Gateway.php @@ -37,6 +37,7 @@ class Gateway extends StaticModel /** * @return mixed + * @deprecated 5.0.17 No longer needs as we are removing omnipay dependence */ public function getFields() { diff --git a/app/Services/Invoice/ApplyNumber.php b/app/Services/Invoice/ApplyNumber.php index ccd30dbdce74..72edd57a5d6d 100644 --- a/app/Services/Invoice/ApplyNumber.php +++ b/app/Services/Invoice/ApplyNumber.php @@ -44,11 +44,11 @@ class ApplyNumber extends AbstractService switch ($this->client->getSetting('counter_number_applied')) { case 'when_saved': - $this->invoice->number = $this->getNextInvoiceNumber($this->client); + $this->invoice->number = $this->getNextInvoiceNumber($this->client, $this->invoice); break; case 'when_sent': if ($this->invoice->status_id == Invoice::STATUS_SENT) { - $this->invoice->number = $this->getNextInvoiceNumber($this->client); + $this->invoice->number = $this->getNextInvoiceNumber($this->client, $this->invoice); } break; diff --git a/app/Utils/Traits/GeneratesCounter.php b/app/Utils/Traits/GeneratesCounter.php index a94a231cfcc4..bd84bb285a01 100644 --- a/app/Utils/Traits/GeneratesCounter.php +++ b/app/Utils/Traits/GeneratesCounter.php @@ -37,7 +37,7 @@ trait GeneratesCounter * * @return string The next invoice number. */ - public function getNextInvoiceNumber(Client $client) :string + public function getNextInvoiceNumber(Client $client, ?Invoice $invoice) :string { //Reset counters if enabled $this->resetCounters($client); @@ -67,6 +67,9 @@ trait GeneratesCounter $invoice_number = $this->checkEntityNumber(Invoice::class, $client, $counter, $padding, $pattern); + if($invoice && $invoice->recurring_id) + $invoice_number = $this->prefixCounter($invoice_number, $client->getSetting('recurring_number_prefix')); + $this->incrementCounter($counter_entity, 'invoice_number_counter'); return $invoice_number; @@ -140,6 +143,9 @@ trait GeneratesCounter $quote_number = $this->checkEntityNumber(Quote::class, $client, $counter, $padding, $pattern); + // if($this->recurring_id) + // $quote_number = $this->prefixCounter($quote_number, $client->getSetting('recurring_number_prefix')); + $this->incrementCounter($counter_entity, $used_counter); return $quote_number; @@ -168,7 +174,7 @@ trait GeneratesCounter $pattern = ''; $padding = $client->getSetting('counter_padding'); $invoice_number = $this->checkEntityNumber(RecurringInvoice::class, $client, $counter, $padding, $pattern); - $invoice_number = $this->prefixCounter($invoice_number, $client->getSetting('recurring_number_prefix')); + //$invoice_number = $this->prefixCounter($invoice_number, $client->getSetting('recurring_number_prefix')); //increment the correct invoice_number Counter (company vs client) if ($is_client_counter) { diff --git a/database/factories/CompanyFactory.php b/database/factories/CompanyFactory.php index b01724b8ace8..bd6239854ef9 100644 --- a/database/factories/CompanyFactory.php +++ b/database/factories/CompanyFactory.php @@ -39,6 +39,7 @@ class CompanyFactory extends Factory 'db' => config('database.default'), 'settings' => CompanySettings::defaults(), 'is_large' => false, + 'enabled_modules' => config('ninja.enabled_modules'), 'custom_fields' => (object) [ //'invoice1' => 'Custom Date|date', // 'invoice2' => '2|switch', diff --git a/tests/Feature/InvoiceEmailTest.php b/tests/Feature/InvoiceEmailTest.php index 58a2d1d01372..1e4887a75d30 100644 --- a/tests/Feature/InvoiceEmailTest.php +++ b/tests/Feature/InvoiceEmailTest.php @@ -54,7 +54,7 @@ class InvoiceEmailTest extends TestCase { $this->invoice->date = now(); $this->invoice->due_date = now()->addDays(7); - $this->invoice->number = $this->getNextInvoiceNumber($this->client); + $this->invoice->number = $this->getNextInvoiceNumber($this->client, $this->invoice); $this->invoice->client_id = $this->client->id; @@ -90,7 +90,7 @@ class InvoiceEmailTest extends TestCase $this->invoice->date = now(); $this->invoice->due_date = now()->addDays(7); - $this->invoice->number = $this->getNextInvoiceNumber($this->client); + $this->invoice->number = $this->getNextInvoiceNumber($this->client, $this->invoice); $this->invoice->client_id = $this->client->id; $this->invoice->setRelation('client', $this->client); @@ -115,7 +115,7 @@ class InvoiceEmailTest extends TestCase $this->invoice->date = now(); $this->invoice->due_date = now()->addDays(7); - $this->invoice->number = $this->getNextInvoiceNumber($this->client); + $this->invoice->number = $this->getNextInvoiceNumber($this->client, $this->invoice); $this->invoice->client_id = $this->client->id; @@ -145,7 +145,7 @@ class InvoiceEmailTest extends TestCase $this->invoice->date = now(); $this->invoice->due_date = now()->addDays(7); - $this->invoice->number = $this->getNextInvoiceNumber($this->client); + $this->invoice->number = $this->getNextInvoiceNumber($this->client, $this->invoice); $this->invoice->client_id = $this->client->id; $this->invoice->setRelation('client', $this->client); diff --git a/tests/MockAccountData.php b/tests/MockAccountData.php index 36dcf0e9fd30..d4a3bca6e25f 100644 --- a/tests/MockAccountData.php +++ b/tests/MockAccountData.php @@ -356,7 +356,7 @@ trait MockAccountData $recurring_invoice->next_send_date = Carbon::now(); $recurring_invoice->save(); - $recurring_invoice->number = $this->getNextInvoiceNumber($this->invoice->client); + $recurring_invoice->number = $this->getNextInvoiceNumber($this->invoice->client, $this->invoice); $recurring_invoice->save(); $recurring_invoice = InvoiceToRecurringInvoiceFactory::create($this->invoice); @@ -366,7 +366,7 @@ trait MockAccountData $recurring_invoice->next_send_date = Carbon::now(); $recurring_invoice->save(); - $recurring_invoice->number = $this->getNextInvoiceNumber($this->invoice->client); + $recurring_invoice->number = $this->getNextInvoiceNumber($this->invoice->client, $this->invoice); $recurring_invoice->save(); $recurring_invoice = InvoiceToRecurringInvoiceFactory::create($this->invoice); @@ -376,7 +376,7 @@ trait MockAccountData $recurring_invoice->next_send_date = Carbon::now(); $recurring_invoice->save(); - $recurring_invoice->number = $this->getNextInvoiceNumber($this->invoice->client); + $recurring_invoice->number = $this->getNextInvoiceNumber($this->invoice->client, $this->invoice); $recurring_invoice->save(); $recurring_invoice = InvoiceToRecurringInvoiceFactory::create($this->invoice); @@ -386,7 +386,7 @@ trait MockAccountData $recurring_invoice->next_send_date = Carbon::now(); $recurring_invoice->save(); - $recurring_invoice->number = $this->getNextInvoiceNumber($this->invoice->client); + $recurring_invoice->number = $this->getNextInvoiceNumber($this->invoice->client, $this->invoice); $recurring_invoice->save(); $recurring_invoice = InvoiceToRecurringInvoiceFactory::create($this->invoice); @@ -396,7 +396,7 @@ trait MockAccountData $recurring_invoice->next_send_date = Carbon::now(); $recurring_invoice->save(); - $recurring_invoice->number = $this->getNextInvoiceNumber($this->invoice->client); + $recurring_invoice->number = $this->getNextInvoiceNumber($this->invoice->client, $this->invoice); $recurring_invoice->save(); $recurring_invoice = InvoiceToRecurringInvoiceFactory::create($this->invoice); @@ -406,7 +406,7 @@ trait MockAccountData $recurring_invoice->next_send_date = Carbon::now()->addDays(10); $recurring_invoice->save(); - $recurring_invoice->number = $this->getNextInvoiceNumber($this->invoice->client); + $recurring_invoice->number = $this->getNextInvoiceNumber($this->invoice->client, $this->invoice); $recurring_invoice->save(); $gs = new GroupSetting; diff --git a/tests/Unit/GeneratesCounterTest.php b/tests/Unit/GeneratesCounterTest.php index da4d204b7a47..25980d1205d2 100644 --- a/tests/Unit/GeneratesCounterTest.php +++ b/tests/Unit/GeneratesCounterTest.php @@ -79,11 +79,11 @@ class GeneratesCounterTest extends TestCase public function testInvoiceNumberValue() { - $invoice_number = $this->getNextInvoiceNumber($this->client); + $invoice_number = $this->getNextInvoiceNumber($this->client, $this->invoice); $this->assertEquals($invoice_number, '0008'); - $invoice_number = $this->getNextInvoiceNumber($this->client); + $invoice_number = $this->getNextInvoiceNumber($this->client, $this->invoice); $this->assertEquals($invoice_number, '0009'); } @@ -112,8 +112,8 @@ class GeneratesCounterTest extends TestCase $this->client->save(); $this->client->fresh(); - $invoice_number = $this->getNextInvoiceNumber($this->client); - $invoice_number2 = $this->getNextInvoiceNumber($this->client); + $invoice_number = $this->getNextInvoiceNumber($this->client, $this->invoice); + $invoice_number2 = $this->getNextInvoiceNumber($this->client, $this->invoice); $this->assertEquals($invoice_number, date('Y').'-0001'); $this->assertEquals($invoice_number2, date('Y').'-0002'); @@ -203,7 +203,7 @@ class GeneratesCounterTest extends TestCase $cliz = ClientFactory::create($this->company->id, $this->user->id); $cliz->settings = ClientSettings::defaults(); $cliz->save(); - $invoice_number = $this->getNextInvoiceNumber($cliz); + $invoice_number = $this->getNextInvoiceNumber($cliz, $this->invoice); $this->assertEquals($cliz->getSetting('counter_padding'), 5); $this->assertEquals($invoice_number, '00007'); @@ -218,7 +218,7 @@ class GeneratesCounterTest extends TestCase $cliz->settings = ClientSettings::defaults(); $cliz->save(); - $invoice_number = $this->getNextInvoiceNumber($cliz); + $invoice_number = $this->getNextInvoiceNumber($cliz, $this->invoice); $this->assertEquals($cliz->getSetting('counter_padding'), 10); $this->assertEquals(strlen($invoice_number), 10); @@ -235,11 +235,11 @@ class GeneratesCounterTest extends TestCase $cliz->settings = ClientSettings::defaults(); $cliz->save(); - $invoice_number = $this->getNextInvoiceNumber($cliz); + $invoice_number = $this->getNextInvoiceNumber($cliz, $this->invoice); $this->assertEquals($invoice_number, '0008'); - $invoice_number = $this->getNextInvoiceNumber($cliz); + $invoice_number = $this->getNextInvoiceNumber($cliz, $this->invoice); $this->assertEquals($invoice_number, '0009'); } From ff00ed3815a8b0e2129e9cdc70c946995d91c863 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 7 Oct 2020 11:20:28 +1100 Subject: [PATCH 3/9] Fixes for Recurring --- .../UpdateRecurringInvoiceRequest.php | 2 +- app/Models/RecurringInvoice.php | 14 +------------- app/Services/Recurring/RecurringService.php | 7 +++++-- 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/app/Http/Requests/RecurringInvoice/UpdateRecurringInvoiceRequest.php b/app/Http/Requests/RecurringInvoice/UpdateRecurringInvoiceRequest.php index 5b1e9111f38a..6364c7c5488b 100644 --- a/app/Http/Requests/RecurringInvoice/UpdateRecurringInvoiceRequest.php +++ b/app/Http/Requests/RecurringInvoice/UpdateRecurringInvoiceRequest.php @@ -54,7 +54,7 @@ class UpdateRecurringInvoiceRequest extends Request protected function prepareForValidation() { $input = $this->all(); - info($input); + if (array_key_exists('design_id', $input) && is_string($input['design_id'])) { $input['design_id'] = $this->decodePrimaryKey($input['design_id']); } diff --git a/app/Models/RecurringInvoice.php b/app/Models/RecurringInvoice.php index 70a9795c89c6..1c4e827102b0 100644 --- a/app/Models/RecurringInvoice.php +++ b/app/Models/RecurringInvoice.php @@ -44,20 +44,8 @@ class RecurringInvoice extends BaseModel const STATUS_PENDING = -1; /** - * Recurring intervals //todo MAP WHEN WE MIGRATE. + * Invoice Frequencies. */ - - /* Make sure we support overflow!!!!!!!!!! - $start = Carbon::today(); - $subscription = Carbon::parse('2017-12-31'); - - foreach (range(1, 12) as $month) { - $day = $start->addMonthNoOverflow()->thisDayOrLast($subscription->day); - - echo "You will be billed on {$day} in month {$month}\n"; - } - */ - const FREQUENCY_DAILY = 1; const FREQUENCY_WEEKLY = 2; const FREQUENCY_TWO_WEEKS = 3; diff --git a/app/Services/Recurring/RecurringService.php b/app/Services/Recurring/RecurringService.php index a6cd1394cd72..7cbfa0e8b163 100644 --- a/app/Services/Recurring/RecurringService.php +++ b/app/Services/Recurring/RecurringService.php @@ -49,8 +49,11 @@ class RecurringService public function start() { //make sure next_send_date is either now or in the future else return. - if(Carbon::parse($this->recurring_entity->next_send_date)->lt(now())) - return $this; + // if(Carbon::parse($this->recurring_entity->next_send_date)->lt(now())) + // return $this; + + if($this->recurring_entity->remaining_cycles == 0) + return $this; $this->recurring_entity->status_id = RecurringInvoice::STATUS_ACTIVE; From b8b3149582fbc06975f079256090a1a618085edf Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 7 Oct 2020 14:00:32 +1100 Subject: [PATCH 4/9] Working on recurring & analytics --- .../Analytics/EmailInvoiceFailure.php | 57 +++++++++++++++++++ app/DataMapper/Analytics/MigrationFailure.php | 57 +++++++++++++++++++ .../Analytics/SendRecurringFailure.php | 57 +++++++++++++++++++ .../RecurringInvoiceToInvoiceFactory.php | 2 +- app/Jobs/Invoice/EmailInvoice.php | 15 +++++ app/Jobs/RecurringInvoice/SendRecurring.php | 27 +++++++-- app/Jobs/Util/Import.php | 11 ++++ app/Utils/Traits/GeneratesCounter.php | 11 ++-- 8 files changed, 228 insertions(+), 9 deletions(-) create mode 100644 app/DataMapper/Analytics/EmailInvoiceFailure.php create mode 100644 app/DataMapper/Analytics/MigrationFailure.php create mode 100644 app/DataMapper/Analytics/SendRecurringFailure.php 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) From d4e2a0071a11dbaaa974356d755a7a602df3c0fe Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 7 Oct 2020 14:56:35 +1100 Subject: [PATCH 5/9] Analytics --- app/DataMapper/Analytics/AccountCreated.php | 49 +++++++++++++++++++ app/DataMapper/Analytics/AccountDeleted.php | 49 +++++++++++++++++++ app/Http/Controllers/CompanyController.php | 7 +++ app/Jobs/Account/CreateAccount.php | 15 ++++++ .../views/email/template/master.blade.php | 4 ++ 5 files changed, 124 insertions(+) create mode 100644 app/DataMapper/Analytics/AccountCreated.php create mode 100644 app/DataMapper/Analytics/AccountDeleted.php diff --git a/app/DataMapper/Analytics/AccountCreated.php b/app/DataMapper/Analytics/AccountCreated.php new file mode 100644 index 000000000000..67a50c68d4da --- /dev/null +++ b/app/DataMapper/Analytics/AccountCreated.php @@ -0,0 +1,49 @@ +delete(); + + LightLogs::create(new AccountDeleted()) + ->increment() + ->batch(); + } else { $company_id = $company->id; $company->delete(); diff --git a/app/Jobs/Account/CreateAccount.php b/app/Jobs/Account/CreateAccount.php index 794a2753077d..70b9d1be080a 100644 --- a/app/Jobs/Account/CreateAccount.php +++ b/app/Jobs/Account/CreateAccount.php @@ -1,7 +1,17 @@ notification(new NewAccountCreated($spaa9f78, $sp035a66))->ninja(); + LightLogs::create(new AnalyticsAccountCreated()) + ->increment() + ->batch(); + return $sp794f3f; } } diff --git a/resources/views/email/template/master.blade.php b/resources/views/email/template/master.blade.php index cf44f3f41687..7ca372a82fee 100644 --- a/resources/views/email/template/master.blade.php +++ b/resources/views/email/template/master.blade.php @@ -13,7 +13,11 @@ if(!isset($design)) $design = 'light';