mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-11-04 02:57:33 -05:00 
			
		
		
		
	v5.3.4
This commit is contained in:
		
							parent
							
								
									d053092cb6
								
							
						
					
					
						commit
						2d988be36b
					
				@ -1 +1 @@
 | 
				
			|||||||
5.3.3
 | 
					5.3.4
 | 
				
			||||||
@ -52,8 +52,11 @@ class AutoBillCron
 | 
				
			|||||||
                                        ->where('auto_bill_enabled', true)
 | 
					                                        ->where('auto_bill_enabled', true)
 | 
				
			||||||
                                        ->where('balance', '>', 0)
 | 
					                                        ->where('balance', '>', 0)
 | 
				
			||||||
                                        ->where('is_deleted', false)
 | 
					                                        ->where('is_deleted', false)
 | 
				
			||||||
                                        ->with('company')
 | 
					                                        ->with('company');
 | 
				
			||||||
                                        ->cursor()->each(function ($invoice){
 | 
					
 | 
				
			||||||
 | 
					                                        nlog($auto_bill_partial_invoices->count(). " partial invoices to auto bill");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        $auto_bill_partial_invoices->cursor()->each(function ($invoice){
 | 
				
			||||||
                                            $this->runAutoBiller($invoice);
 | 
					                                            $this->runAutoBiller($invoice);
 | 
				
			||||||
                                        });
 | 
					                                        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -62,8 +65,11 @@ class AutoBillCron
 | 
				
			|||||||
                                        ->where('auto_bill_enabled', true)
 | 
					                                        ->where('auto_bill_enabled', true)
 | 
				
			||||||
                                        ->where('balance', '>', 0)
 | 
					                                        ->where('balance', '>', 0)
 | 
				
			||||||
                                        ->where('is_deleted', false)
 | 
					                                        ->where('is_deleted', false)
 | 
				
			||||||
                                        ->with('company')
 | 
					                                        ->with('company');
 | 
				
			||||||
                                        ->cursor()->each(function ($invoice){
 | 
					
 | 
				
			||||||
 | 
					                                        nlog($auto_bill_invoices->count(). " full invoices to auto bill");
 | 
				
			||||||
 | 
					                                        
 | 
				
			||||||
 | 
					                                        $auto_bill_invoices->cursor()->each(function ($invoice){
 | 
				
			||||||
                                            $this->runAutoBiller($invoice);
 | 
					                                            $this->runAutoBiller($invoice);
 | 
				
			||||||
                                        });
 | 
					                                        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -79,8 +85,11 @@ class AutoBillCron
 | 
				
			|||||||
                                            ->where('auto_bill_enabled', true)
 | 
					                                            ->where('auto_bill_enabled', true)
 | 
				
			||||||
                                            ->where('balance', '>', 0)
 | 
					                                            ->where('balance', '>', 0)
 | 
				
			||||||
                                            ->where('is_deleted', false)
 | 
					                                            ->where('is_deleted', false)
 | 
				
			||||||
                                            ->with('company')
 | 
					                                            ->with('company');
 | 
				
			||||||
                                            ->cursor()->each(function ($invoice){
 | 
					
 | 
				
			||||||
 | 
					                                            nlog($auto_bill_partial_invoices->count(). " partial invoices to auto bill db = {$db}");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                            $auto_bill_partial_invoices->cursor()->each(function ($invoice){
 | 
				
			||||||
                                                $this->runAutoBiller($invoice);
 | 
					                                                $this->runAutoBiller($invoice);
 | 
				
			||||||
                                            });
 | 
					                                            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -89,8 +98,11 @@ class AutoBillCron
 | 
				
			|||||||
                                            ->where('auto_bill_enabled', true)
 | 
					                                            ->where('auto_bill_enabled', true)
 | 
				
			||||||
                                            ->where('balance', '>', 0)
 | 
					                                            ->where('balance', '>', 0)
 | 
				
			||||||
                                            ->where('is_deleted', false)
 | 
					                                            ->where('is_deleted', false)
 | 
				
			||||||
                                            ->with('company')
 | 
					                                            ->with('company');
 | 
				
			||||||
                                            ->cursor()->each(function ($invoice){
 | 
					
 | 
				
			||||||
 | 
					                                            nlog($auto_bill_invoices->count(). " full invoices to auto bill db = {$db}");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                            $auto_bill_invoices->cursor()->each(function ($invoice){
 | 
				
			||||||
                                                $this->runAutoBiller($invoice);
 | 
					                                                $this->runAutoBiller($invoice);
 | 
				
			||||||
                                            });
 | 
					                                            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -130,8 +130,20 @@ class SendRecurring implements ShouldQueue
 | 
				
			|||||||
        });
 | 
					        });
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        if ($invoice->client->getSetting('auto_bill_date') == 'on_send_date' && $invoice->auto_bill_enabled) {
 | 
					        if ($invoice->client->getSetting('auto_bill_date') == 'on_send_date' && $invoice->auto_bill_enabled) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            nlog("attempting to autobill {$invoice->number}");
 | 
					            nlog("attempting to autobill {$invoice->number}");
 | 
				
			||||||
            $invoice->service()->autoBill()->save();
 | 
					            $invoice->service()->autoBill()->save();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        elseif($invoice->client->getSetting('auto_bill_date') == 'on_due_date' && $invoice->auto_bill_enabled) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if($invoice->due_date && Carbon\Carbon::parse($invoice->due_date)->startOfDay()->lte(now()->startOfDay())) {
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					                nlog("attempting to autobill {$invoice->number}");
 | 
				
			||||||
 | 
					                $invoice->service()->autoBill()->save();
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -29,6 +29,7 @@ class TestMailServer extends Mailable
 | 
				
			|||||||
        $this->from_email = $from_email;
 | 
					        $this->from_email = $from_email;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Test Server mail.
 | 
					     * Test Server mail.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
@ -36,12 +37,18 @@ class TestMailServer extends Mailable
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    public function build()
 | 
					    public function build()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $settings = new \stdClass;
 | 
				
			||||||
 | 
					        $settings->primary_color = "#4caf50";
 | 
				
			||||||
 | 
					        $settings->email_style = 'dark';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return $this->from(config('mail.from.address'), config('mail.from.name'))
 | 
					        return $this->from(config('mail.from.address'), config('mail.from.name'))
 | 
				
			||||||
            ->subject(ctrans('texts.email'))
 | 
					            ->subject(ctrans('texts.email'))
 | 
				
			||||||
            ->markdown('email.support.message', [
 | 
					            ->markdown('email.support.message', [
 | 
				
			||||||
                'support_message' => $this->support_messages,
 | 
					                'support_message' => $this->support_messages,
 | 
				
			||||||
                'system_info' => '',
 | 
					                'system_info' => '',
 | 
				
			||||||
                'laravel_log' => [],
 | 
					                'laravel_log' => [],
 | 
				
			||||||
 | 
					                'settings' => $settings,
 | 
				
			||||||
            ]);
 | 
					            ]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -45,7 +45,7 @@ class ClientGatewayToken extends BaseModel
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public function client()
 | 
					    public function client()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return $this->hasOne(Client::class)->withTrashed();
 | 
					        return $this->belongsTo(Client::class)->withTrashed();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function gateway()
 | 
					    public function gateway()
 | 
				
			||||||
@ -60,12 +60,12 @@ class ClientGatewayToken extends BaseModel
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public function company()
 | 
					    public function company()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return $this->hasOne(Company::class);
 | 
					        return $this->belongsTo(Company::class);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function user()
 | 
					    public function user()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return $this->hasOne(User::class)->withTrashed();
 | 
					        return $this->belongsTo(User::class)->withTrashed();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
 | 
				
			|||||||
@ -63,7 +63,7 @@ class CreditCard
 | 
				
			|||||||
            'amount' => $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency()),
 | 
					            'amount' => $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency()),
 | 
				
			||||||
            'currency' => $this->stripe->client->getCurrencyCode(),
 | 
					            'currency' => $this->stripe->client->getCurrencyCode(),
 | 
				
			||||||
            'customer' => $this->stripe->findOrCreateCustomer(),
 | 
					            'customer' => $this->stripe->findOrCreateCustomer(),
 | 
				
			||||||
            'description' => ctrans('texts.invoices') . ': ' . collect($data['invoices'])->pluck('invoice_number'), // TODO: More meaningful description.
 | 
					            'description' => $this->decodeUnicodeString(ctrans('texts.invoices') . ': ' . collect($data['invoices'])->pluck('invoice_number')),
 | 
				
			||||||
        ];
 | 
					        ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $payment_intent_data['setup_future_usage'] = 'off_session';
 | 
					        $payment_intent_data['setup_future_usage'] = 'off_session';
 | 
				
			||||||
@ -74,6 +74,15 @@ class CreditCard
 | 
				
			|||||||
        return render('gateways.stripe.credit_card.pay', $data);
 | 
					        return render('gateways.stripe.credit_card.pay', $data);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private function decodeUnicodeString($string)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return iconv("UTF-8", "ISO-8859-1//TRANSLIT", $this->decode_encoded_utf8($string));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private function decode_encoded_utf8($string){
 | 
				
			||||||
 | 
					        return preg_replace_callback('#\\\\u([0-9a-f]{4})#ism', function($matches) { return mb_convert_encoding(pack("H*", $matches[1]), "UTF-8", "UCS-2BE"); }, $string);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function paymentResponse(PaymentResponseRequest $request)
 | 
					    public function paymentResponse(PaymentResponseRequest $request)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->stripe->init();
 | 
					        $this->stripe->init();
 | 
				
			||||||
 | 
				
			|||||||
@ -23,6 +23,7 @@ use App\Models\Currency;
 | 
				
			|||||||
use App\Models\GatewayType;
 | 
					use App\Models\GatewayType;
 | 
				
			||||||
use App\PaymentDrivers\StripePaymentDriver;
 | 
					use App\PaymentDrivers\StripePaymentDriver;
 | 
				
			||||||
use App\PaymentDrivers\Stripe\UpdatePaymentMethods;
 | 
					use App\PaymentDrivers\Stripe\UpdatePaymentMethods;
 | 
				
			||||||
 | 
					use App\Utils\Ninja;
 | 
				
			||||||
use App\Utils\Traits\GeneratesCounter;
 | 
					use App\Utils\Traits\GeneratesCounter;
 | 
				
			||||||
use App\Utils\Traits\MakesHash;
 | 
					use App\Utils\Traits\MakesHash;
 | 
				
			||||||
use Stripe\Customer;
 | 
					use Stripe\Customer;
 | 
				
			||||||
@ -51,7 +52,7 @@ class ImportCustomers
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        $this->update_payment_methods = new UpdatePaymentMethods($this->stripe);
 | 
					        $this->update_payment_methods = new UpdatePaymentMethods($this->stripe);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if(strlen($this->stripe->company_gateway->getConfigField('account_id')) < 1)
 | 
					        if(Ninja::isHosted() && strlen($this->stripe->company_gateway->getConfigField('account_id')) < 1)
 | 
				
			||||||
            throw new StripeConnectFailure('Stripe Connect has not been configured');
 | 
					            throw new StripeConnectFailure('Stripe Connect has not been configured');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $customers = Customer::all([], $this->stripe->stripe_connect_auth);
 | 
					        $customers = Customer::all([], $this->stripe->stripe_connect_auth);
 | 
				
			||||||
@ -61,9 +62,6 @@ class ImportCustomers
 | 
				
			|||||||
            $this->addCustomer($customer);
 | 
					            $this->addCustomer($customer);
 | 
				
			||||||
        }   
 | 
					        }   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /* Now call the update payment methods handler*/
 | 
					 | 
				
			||||||
        // $this->stripe->updateAllPaymentMethods();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private function addCustomer(Customer $customer)
 | 
					    private function addCustomer(Customer $customer)
 | 
				
			||||||
@ -76,15 +74,15 @@ class ImportCustomers
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        nlog("search Stripe for {$customer->id}");
 | 
					        nlog("search Stripe for {$customer->id}");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $existing_customer = $this->stripe
 | 
					        $existing_customer_token = $this->stripe
 | 
				
			||||||
                                  ->company_gateway
 | 
					                                  ->company_gateway
 | 
				
			||||||
                                  ->client_gateway_tokens()
 | 
					                                  ->client_gateway_tokens()
 | 
				
			||||||
                                  ->where('gateway_customer_reference', $customer->id)
 | 
					                                  ->where('gateway_customer_reference', $customer->id)
 | 
				
			||||||
                                  ->exists();
 | 
					                                  ->first();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if($existing_customer){
 | 
					        if($existing_customer_token){
 | 
				
			||||||
            nlog("Skipping - Customer exists: {$customer->email} just updating payment methods");
 | 
					            nlog("Skipping - Customer exists: {$customer->email} just updating payment methods");
 | 
				
			||||||
            $this->update_payment_methods->updateMethods($customer, $contact->client);
 | 
					            $this->update_payment_methods->updateMethods($customer, $existing_customer_token->client);
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -14,8 +14,8 @@ return [
 | 
				
			|||||||
    'require_https' => env('REQUIRE_HTTPS', true),
 | 
					    'require_https' => env('REQUIRE_HTTPS', true),
 | 
				
			||||||
    'app_url' => rtrim(env('APP_URL', ''), '/'),
 | 
					    'app_url' => rtrim(env('APP_URL', ''), '/'),
 | 
				
			||||||
    'app_domain' => env('APP_DOMAIN', 'invoicing.co'),
 | 
					    'app_domain' => env('APP_DOMAIN', 'invoicing.co'),
 | 
				
			||||||
    'app_version' => '5.3.3',
 | 
					    'app_version' => '5.3.4',
 | 
				
			||||||
    'app_tag' => '5.3.3',
 | 
					    'app_tag' => '5.3.4',
 | 
				
			||||||
    'minimum_client_version' => '5.0.16',
 | 
					    'minimum_client_version' => '5.0.16',
 | 
				
			||||||
    'terms_version' => '1.0.1',
 | 
					    'terms_version' => '1.0.1',
 | 
				
			||||||
    'api_secret' => env('API_SECRET', ''),
 | 
					    'api_secret' => env('API_SECRET', ''),
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user