mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-11-02 22:57:33 -05:00 
			
		
		
		
	fixes for endless recursion
This commit is contained in:
		
							parent
							
								
									5279888d6d
								
							
						
					
					
						commit
						1696c63ba4
					
				@ -46,7 +46,7 @@ trait GeneratesCounter
 | 
			
		||||
        $counter_string = $this->getEntityCounter($entity, $client);  
 | 
			
		||||
        $pattern = $this->getNumberPattern($entity, $client);  
 | 
			
		||||
 | 
			
		||||
        if (strpos($pattern, 'clientCounter') || strpos($pattern, 'client_counter')) {
 | 
			
		||||
        if ((strpos($pattern, 'clientCounter') !== false) || (strpos($pattern, 'client_counter') !==false) ) {
 | 
			
		||||
 | 
			
		||||
            if (property_exists($client->settings, $counter_string)) {
 | 
			
		||||
                $counter = $client->settings->{$counter_string};
 | 
			
		||||
@ -55,7 +55,7 @@ trait GeneratesCounter
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            $counter_entity = $client;
 | 
			
		||||
        } elseif (strpos($pattern, 'groupCounter') || strpos($pattern, 'group_counter')) {
 | 
			
		||||
        } elseif ((strpos($pattern, 'groupCounter') !== false) || (strpos($pattern, 'group_counter') !== false)) {
 | 
			
		||||
 | 
			
		||||
            if (property_exists($client->group_settings, $counter_string)) {
 | 
			
		||||
            $counter = $client->group_settings->{$counter_string};
 | 
			
		||||
@ -73,6 +73,10 @@ trait GeneratesCounter
 | 
			
		||||
        //If it is a quote - we need to 
 | 
			
		||||
        $pattern = $this->getNumberPattern($entity, $client);
 | 
			
		||||
        
 | 
			
		||||
        if(strlen($pattern) > 1 && (stripos($pattern, 'counter') === false)){
 | 
			
		||||
            $pattern = $pattern.'{$counter}';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $padding = $client->getSetting('counter_padding');
 | 
			
		||||
 | 
			
		||||
        if($is_recurring)
 | 
			
		||||
@ -333,6 +337,7 @@ trait GeneratesCounter
 | 
			
		||||
     */
 | 
			
		||||
    private function checkEntityNumber($class, $entity, $counter, $padding, $pattern, $prefix = '')
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
        $check = false;
 | 
			
		||||
 | 
			
		||||
        do {
 | 
			
		||||
@ -347,6 +352,11 @@ trait GeneratesCounter
 | 
			
		||||
            $counter++;
 | 
			
		||||
        } while ($check);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        nlog($counter);
 | 
			
		||||
        nlog($pattern);
 | 
			
		||||
        nlog($number);
 | 
			
		||||
 | 
			
		||||
        return $number;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -482,6 +492,9 @@ trait GeneratesCounter
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        switch ($company->reset_counter_frequency_id) {
 | 
			
		||||
            case RecurringInvoice::FREQUENCY_DAILY:
 | 
			
		||||
                $reset_date->addDay();
 | 
			
		||||
                break;
 | 
			
		||||
            case RecurringInvoice::FREQUENCY_WEEKLY:
 | 
			
		||||
                $reset_date->addWeek();
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
@ -73,6 +73,45 @@ class GeneratesCounterTest extends TestCase
 | 
			
		||||
        $this->assertTrue($this->hasSharedCounter($this->client));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testNoCounterBeingSpecifiedInCounterStringStub()
 | 
			
		||||
    {
 | 
			
		||||
        $settings = $this->client->company->settings;
 | 
			
		||||
        $settings->invoice_number_counter = 1;
 | 
			
		||||
        $settings->invoice_number_pattern = 'test-{$counter}';
 | 
			
		||||
        $settings->shared_invoice_quote_counter = 1;
 | 
			
		||||
        $this->client->company->settings = $settings;
 | 
			
		||||
        $this->client->company->save();
 | 
			
		||||
 | 
			
		||||
        $this->client->settings = $settings;
 | 
			
		||||
        $this->client->save();
 | 
			
		||||
        $this->client->fresh();
 | 
			
		||||
 | 
			
		||||
        $invoice_number = $this->getNextInvoiceNumber($this->client, $this->invoice);
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals('test-0001', $invoice_number);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testNoCounterBeingSpecifiedInCounterStringWithFix()
 | 
			
		||||
    {
 | 
			
		||||
        $settings = $this->client->company->settings;
 | 
			
		||||
        $settings->invoice_number_counter = 100;
 | 
			
		||||
        $settings->invoice_number_pattern = 'test-';
 | 
			
		||||
        $settings->shared_invoice_quote_counter = 100;
 | 
			
		||||
        $this->client->company->settings = $settings;
 | 
			
		||||
        $this->client->company->save();
 | 
			
		||||
 | 
			
		||||
        $this->client->settings = $settings;
 | 
			
		||||
        $this->client->save();
 | 
			
		||||
        $this->client->fresh();
 | 
			
		||||
 | 
			
		||||
        $invoice_number = $this->getNextInvoiceNumber($this->client, $this->invoice);
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals('test-0100', $invoice_number);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public function testInvoiceNumberValue()
 | 
			
		||||
    {
 | 
			
		||||
        $invoice_number = $this->getNextInvoiceNumber($this->client, $this->invoice);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user