mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-24 02:14:21 -04:00
Working on more tests for generates numbers
This commit is contained in:
parent
87bae37350
commit
599ff31f9d
@ -123,7 +123,7 @@ class Client extends BaseModel
|
||||
return $this->getSettings();
|
||||
}
|
||||
else {
|
||||
//Log::error('harvesting company settings for key = '. $key);
|
||||
//Log::error(print_r(new CompanySettings($this->company->settings),1));
|
||||
return new CompanySettings($this->company->settings);
|
||||
}
|
||||
|
||||
@ -133,14 +133,16 @@ class Client extends BaseModel
|
||||
{
|
||||
switch ($entity) {
|
||||
case Client::class:
|
||||
// Log::error('saving client settings');
|
||||
Log::error('saving client settings');
|
||||
$this->settings = $settings;
|
||||
$this->save();
|
||||
$this->fresh();
|
||||
break;
|
||||
case Company::class:
|
||||
// Log::error('saving company settings');
|
||||
Log::error('saving company settings');
|
||||
$this->company->settings = $settings;
|
||||
$this->company->save();
|
||||
$this->company->fresh();
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -25,19 +25,19 @@ trait GeneratesNumberCounter
|
||||
$prefix = $this->getNumberPrefix($entity);
|
||||
$lastNumber = false;
|
||||
|
||||
|
||||
$check = false;
|
||||
|
||||
do {
|
||||
|
||||
if ($this->hasNumberPattern($entity)) {
|
||||
$number = $this->applyNumberPattern($entity, $counter);
|
||||
} else {
|
||||
$number = $prefix . str_pad($counter, $this->invoice_number_padding, '0', STR_PAD_LEFT);
|
||||
}
|
||||
|
||||
if ($entity == RecurringInvoice::class) {
|
||||
$number = $this->recurring_invoice_number_prefix . $number;
|
||||
}
|
||||
// if ($entity == RecurringInvoice::class) {
|
||||
// $number = $this->getSettingsByKey('recurring_invoice_number_prefix')->recurring_invoice_number_prefix . $number;
|
||||
// }
|
||||
|
||||
if ($entity == Client::class) {
|
||||
$check = Client::company($this->company_id)->whereIdNumber($number)->withTrashed()->first();
|
||||
@ -60,7 +60,8 @@ trait GeneratesNumberCounter
|
||||
|
||||
} while ($check);
|
||||
|
||||
|
||||
$this->incrementCounter($entity);
|
||||
|
||||
return $number;
|
||||
|
||||
//increment the counter here
|
||||
@ -68,7 +69,7 @@ trait GeneratesNumberCounter
|
||||
|
||||
public function hasSharedCounter() : bool
|
||||
{
|
||||
Log::error('The Shared Counter = '. $this->getSettingsByKey('shared_invoice_quote_counter')->shared_invoice_quote_counter);
|
||||
|
||||
return $this->getSettingsByKey('shared_invoice_quote_counter')->shared_invoice_quote_counter === TRUE;
|
||||
|
||||
}
|
||||
@ -125,20 +126,23 @@ trait GeneratesNumberCounter
|
||||
|
||||
$counter = $this->entityName($entity) . '_number_counter';
|
||||
|
||||
//Log::error($counter);
|
||||
Log::error('entity = '.$entity);
|
||||
|
||||
$entity_settings = $this->getSettingsByKey( $counter );
|
||||
|
||||
//Log::error(print_r($entity_settings,1));
|
||||
|
||||
$entity_settings->{$counter} = $entity_settings->{$counter} + 1;
|
||||
|
||||
$entity_settings->$counter = $entity_settings->$counter + 1;
|
||||
// Log::error('name '.$counter);
|
||||
// Log::error('key '.$entity_settings->$counter);
|
||||
// Log::error('value '.$entity_settings->{$counter});
|
||||
// Log::error('value inc '.$entity_settings->{$counter}++);
|
||||
//Log::error($entity_settings->{$counter});
|
||||
//Log::error($entity_settings->entity);
|
||||
|
||||
$this->setSettingsByEntity($entity_settings->entity, $entity_settings);
|
||||
|
||||
//Log::error(print_r($entity_settings,1));
|
||||
Log::error(print_r($entity_settings,1));
|
||||
|
||||
|
||||
}
|
||||
@ -186,9 +190,9 @@ trait GeneratesNumberCounter
|
||||
$replace[] = str_pad($counter, $this->getSettingsByKey( 'counter_padding' )->counter_padding, '0', STR_PAD_LEFT);
|
||||
|
||||
if (strstr($pattern, '{$user_id}')) {
|
||||
$user_id = $entity->user ? $entity->user->id : (auth()->check() ? auth()->user()->id : 0);
|
||||
$user_id = auth()->check() ? auth()->user()->id : 0;
|
||||
$search[] = '{$user_id}';
|
||||
$replace[] = str_pad(($user_id + 1), 2, '0', STR_PAD_LEFT);
|
||||
$replace[] = str_pad(($user_id), 2, '0', STR_PAD_LEFT);
|
||||
}
|
||||
|
||||
$matches = false;
|
||||
@ -202,10 +206,42 @@ trait GeneratesNumberCounter
|
||||
}
|
||||
|
||||
$pattern = str_replace($search, $replace, $pattern);
|
||||
$pattern = $this->getClientInvoiceNumber($pattern, $entity);
|
||||
// $pattern = $this->getClientInvoiceNumber($pattern, $entity);
|
||||
|
||||
return $pattern;
|
||||
|
||||
}
|
||||
|
||||
private function getClientInvoiceNumber($pattern, $invoice)
|
||||
{
|
||||
if (! $invoice->client_id) {
|
||||
return $pattern;
|
||||
}
|
||||
|
||||
$search = [
|
||||
'{$custom1}',
|
||||
'{$custom2}',
|
||||
'{$idNumber}',
|
||||
'{$clientCustom1}',
|
||||
'{$clientCustom2}',
|
||||
'{$clientIdNumber}',
|
||||
'{$clientCounter}',
|
||||
];
|
||||
|
||||
$client = $invoice->client;
|
||||
$clientCounter = ($invoice->isQuote() && ! $this->share_counter) ? $client->quote_number_counter : $client->invoice_number_counter;
|
||||
|
||||
$replace = [
|
||||
$client->custom_value1,
|
||||
$client->custom_value2,
|
||||
$client->id_number,
|
||||
$client->custom_value1, // backwards compatibility
|
||||
$client->custom_value2,
|
||||
$client->id_number,
|
||||
str_pad($clientCounter, $this->invoice_number_padding, '0', STR_PAD_LEFT),
|
||||
];
|
||||
|
||||
return str_replace($search, $replace, $pattern);
|
||||
}
|
||||
|
||||
}
|
@ -4,6 +4,7 @@ namespace Tests\Unit;
|
||||
|
||||
use App\DataMapper\DefaultSettings;
|
||||
use App\Models\Client;
|
||||
use App\Models\Company;
|
||||
use App\Models\Credit;
|
||||
use App\Models\Invoice;
|
||||
use App\Models\RecurringInvoice;
|
||||
@ -121,11 +122,9 @@ class GenerateNumberTest extends TestCase
|
||||
public function testRecurringInvoiceNumberPrefix()
|
||||
{
|
||||
|
||||
$settings = $this->client->getSettingsByKey('recurring_invoice_number_prefix');
|
||||
$settings->recurring_invoice_number_prefix = 'R';
|
||||
$this->client->setSettingsByEntity($settings->entity, $settings);
|
||||
|
||||
$this->assertEquals($this->client->getNextNumber(RecurringInvoice::class), 'R1');
|
||||
$this->assertEquals($this->client->getNextNumber(RecurringInvoice::class), 'R1');
|
||||
$this->assertEquals($this->client->getCounter(Client::class), 1);
|
||||
|
||||
}
|
||||
|
||||
public function testClientIncrementer()
|
||||
@ -156,11 +155,29 @@ class GenerateNumberTest extends TestCase
|
||||
$this->assertEquals($this->client->getCounter(Invoice::class), 3);
|
||||
$this->assertEquals($this->client->getCounter(RecurringInvoice::class), 3);
|
||||
$this->assertEquals($this->client->getCounter(Credit::class), 2);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* {$counter}
|
||||
* {$userId}
|
||||
* {$year}
|
||||
* {$date:format} - See options
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function testClientNumberPattern()
|
||||
{
|
||||
|
||||
|
||||
$settings = $this->client->getSettingsByKey('client_number_pattern');
|
||||
$settings->client_number_pattern = '{$year}-{$counter}';
|
||||
$this->client->setSettingsByEntity($settings->entity, $settings);
|
||||
$this->assertEquals($this->client->getNextNumber(Client::class), '2019-1');
|
||||
$this->assertEquals($this->client->getNextNumber(Client::class), '2019-2');
|
||||
|
||||
$company = Company::find($this->client->company_id);
|
||||
|
||||
$this->assertEquals($company->settings->client_number_counter,3);
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user