From f40b72c0149f52887321f651f621b7f6de1e2a57 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Sun, 2 Apr 2017 20:35:10 +0300 Subject: [PATCH] Refactor client invoice/quote counter --- app/Models/Invoice.php | 3 +-- app/Models/Traits/GeneratesNumbers.php | 19 +++++++------------ app/Providers/AppServiceProvider.php | 2 +- resources/lang/en/validation.php | 2 +- resources/views/clients/edit.blade.php | 6 +++--- resources/views/invoices/edit.blade.php | 7 +++++-- 6 files changed, 18 insertions(+), 21 deletions(-) diff --git a/app/Models/Invoice.php b/app/Models/Invoice.php index ef9cc26615a6..fe79657ff926 100644 --- a/app/Models/Invoice.php +++ b/app/Models/Invoice.php @@ -64,9 +64,8 @@ class Invoice extends EntityModel implements BalanceAffecting */ public static $patternFields = [ 'counter', + 'clientCounter', 'clientIdNumber', - 'clientInvoiceCounter', - 'clientQuoteCounter', 'clientCustom1', 'clientCustom2', 'userId', diff --git a/app/Models/Traits/GeneratesNumbers.php b/app/Models/Traits/GeneratesNumbers.php index 09bbc923c7e0..c94e50e3edba 100644 --- a/app/Models/Traits/GeneratesNumbers.php +++ b/app/Models/Traits/GeneratesNumbers.php @@ -191,8 +191,7 @@ trait GeneratesNumbers '{$clientCustom1}', '{$clientCustom2}', '{$clientIdNumber}', - '{$clientInvoiceCounter}', - '{$clientQuoteCounter}', + '{$clientCounter}', ]; $replace = [ @@ -253,10 +252,11 @@ trait GeneratesNumbers } if ($this->usesClientInvoiceCounter()) { - $entity->client->invoice_number_counter += 1; - $entity->client->save(); - } elseif ($this->usesClientQuoteCounter()) { - $entity->client->quote_number_counter += 1; + if ($entity->isType(INVOICE_TYPE_QUOTE) && ! $this->share_counter) { + $entity->client->quote_number_counter += 1; + } else { + $entity->client->invoice_number_counter += 1; + } $entity->client->save(); } @@ -277,12 +277,7 @@ trait GeneratesNumbers public function usesClientInvoiceCounter() { - return strpos($this->invoice_number_pattern, '{$clientInvoiceCounter}') !== false; - } - - public function usesClientQuoteCounter() - { - return strpos($this->invoice_number_pattern, '{$clientQuoteCounter}') !== false; + return strpos($this->invoice_number_pattern, '{$clientCounter}') !== false; } public function clientNumbersEnabled() diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 2151ecd70cf0..1a11e06b2071 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -183,7 +183,7 @@ class AppServiceProvider extends ServiceProvider return true; } - return ((strstr($value, '{$idNumber}') !== false || strstr($value, '{$clientIdNumber}') != false) && (strstr($value, '{$clientInvoiceCounter}') || strstr($value, '{$clientQuoteCounter}'))); + return ((strstr($value, '{$idNumber}') !== false || strstr($value, '{$clientIdNumber}') != false) && (strstr($value, '{$clientCounter}'))); }); Validator::extend('valid_invoice_items', function ($attribute, $value, $parameters) { diff --git a/resources/lang/en/validation.php b/resources/lang/en/validation.php index c385fd285289..37ffbfc56488 100644 --- a/resources/lang/en/validation.php +++ b/resources/lang/en/validation.php @@ -73,7 +73,7 @@ return array( "has_credit" => "The client does not have enough credit.", "notmasked" => "The values are masked", "less_than" => "The :attribute must be less than :value", - "has_counter" => "To enusre all invoice numbers are unique the pattern needs to contain either {\$counter} or {\$clientIdNumber} and {\$clientInvoiceCounter}", + "has_counter" => "To enusre all invoice numbers are unique the pattern needs to contain either {\$counter} or {\$clientIdNumber} and {\$clientCounter}", "valid_contacts" => "The contact must have either an email or name", "valid_invoice_items" => "The invoice exceeds the maximum amount", "valid_subdomain" => "The subdomain is restricted", diff --git a/resources/views/clients/edit.blade.php b/resources/views/clients/edit.blade.php index 4081c0f833b2..74a146af2f59 100644 --- a/resources/views/clients/edit.blade.php +++ b/resources/views/clients/edit.blade.php @@ -59,10 +59,10 @@ @if ($account->usesClientInvoiceCounter()) {!! Former::text('invoice_number_counter')->label('invoice_counter') !!} - @endif - @if ($account->usesClientQuoteCounter()) - {!! Former::text('quote_number_counter')->label('quote_counter') !!} + @if (! $account->share_counter) + {!! Former::text('quote_number_counter')->label('quote_counter') !!} + @endif @endif diff --git a/resources/views/invoices/edit.blade.php b/resources/views/invoices/edit.blade.php index 4e91f5b0c222..72d34bce38da 100644 --- a/resources/views/invoices/edit.blade.php +++ b/resources/views/invoices/edit.blade.php @@ -1629,8 +1629,11 @@ number = number.replace('{$clientCustom1}', client.custom_value1 ? client.custom_value1 : ''); number = number.replace('{$clientCustom2}', client.custom_value2 ? client.custom_value1 : ''); number = number.replace('{$clientIdNumber}', client.id_number ? client.id_number : ''); - number = number.replace('{$clientInvoiceCounter}', pad(client.invoice_number_counter, {{ $account->invoice_number_padding }})); - number = number.replace('{$clientQuoteCounter}', pad(client.quote_number_counter, {{ $account->invoice_number_padding }})); + @if ($invoice->isQuote() && ! $account->share_counter) + number = number.replace('{$clientCounter}', pad(client.quote_number_counter, {{ $account->invoice_number_padding }})); + @else + number = number.replace('{$clientCounter}', pad(client.invoice_number_counter, {{ $account->invoice_number_padding }})); + @endif // backwards compatibility number = number.replace('{$custom1}', client.custom_value1 ? client.custom_value1 : ''); number = number.replace('{$custom2}', client.custom_value2 ? client.custom_value1 : '');