diff --git a/app/Utils/Traits/GeneratesConvertedQuoteCounter.php b/app/Utils/Traits/GeneratesConvertedQuoteCounter.php index 3b1d3cf6a70d..39012ecfb452 100644 --- a/app/Utils/Traits/GeneratesConvertedQuoteCounter.php +++ b/app/Utils/Traits/GeneratesConvertedQuoteCounter.php @@ -33,6 +33,9 @@ use Illuminate\Support\Str; */ trait GeneratesConvertedQuoteCounter { + + private int $update_counter; + private function harvestQuoteCounter($quote, $invoice, Client $client) { $settings = $client->getMergedSettings(); diff --git a/app/Utils/Traits/GeneratesCounter.php b/app/Utils/Traits/GeneratesCounter.php index 2debb8ac9647..30c8a58f7b33 100644 --- a/app/Utils/Traits/GeneratesCounter.php +++ b/app/Utils/Traits/GeneratesCounter.php @@ -34,6 +34,9 @@ use Illuminate\Support\Str; */ trait GeneratesCounter { + + private int $update_counter; + //todo in the form validation, we need to ensure that if a prefix and pattern is set we throw a validation error, //only one type is allow else this will cause confusion to the end user @@ -418,7 +421,8 @@ trait GeneratesCounter $check_counter = 1; do { - + nlog($counter); + $number = $this->padCounter($counter, $padding); $number = $this->applyNumberPattern($entity, $number, $pattern); @@ -432,12 +436,16 @@ trait GeneratesCounter if ($check_counter > 100) { + $this->update_counter = $counter--; + return $number.'_'.Str::random(5); } } while ($check); + $this->update_counter = $counter--; + return $number; } @@ -469,7 +477,8 @@ trait GeneratesCounter $settings->{$counter_name} = 1; } - $settings->{$counter_name} = $settings->{$counter_name} + 1; + // $settings->{$counter_name} = $settings->{$counter_name} + 1; + $settings->{$counter_name} = $this->update_counter; $entity->settings = $settings; diff --git a/tests/Unit/GeneratesCounterTest.php b/tests/Unit/GeneratesCounterTest.php index 05687fa185e6..5d6f68c4776f 100644 --- a/tests/Unit/GeneratesCounterTest.php +++ b/tests/Unit/GeneratesCounterTest.php @@ -179,7 +179,7 @@ class GeneratesCounterTest extends TestCase $invoice_number = $this->getNextInvoiceNumber($this->client->fresh(), $this->invoice->fresh()); - $this->assertEquals($invoice_number, '0002'); + $this->assertEquals($invoice_number, '0003'); } public function testQuoteNumberValue() @@ -351,7 +351,7 @@ class GeneratesCounterTest extends TestCase $invoice_number = $this->getNextInvoiceNumber($cliz->fresh(), $this->invoice); - $this->assertEquals($invoice_number, '0002'); + $this->assertEquals($invoice_number, '0003'); } public function testClientNumber()