1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-11 21:52:35 +01:00

Merge pull request #7319 from turbo124/v5-stable

v5.3.75
This commit is contained in:
David Bomba 2022-03-20 17:58:05 +11:00 committed by GitHub
commit 79f191cf3f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 306 additions and 958 deletions

View File

@ -1 +1 @@
5.3.74 5.3.75

View File

@ -43,7 +43,6 @@ class S3Cleanup extends Command
public function handle() public function handle()
{ {
if(!Ninja::isHosted()) if(!Ninja::isHosted())
return; return;

View File

@ -94,7 +94,7 @@ class Kernel extends ConsoleKernel
if(config('queue.default') == 'database' && Ninja::isSelfHost() && config('ninja.internal_queue_enabled') && !config('ninja.is_docker')) { if(config('queue.default') == 'database' && Ninja::isSelfHost() && config('ninja.internal_queue_enabled') && !config('ninja.is_docker')) {
$schedule->command('queue:work')->everyMinute()->withoutOverlapping(); $schedule->command('queue:work database --stop-when-empty')->everyMinute()->withoutOverlapping();
$schedule->command('queue:restart')->everyFiveMinutes()->withoutOverlapping(); $schedule->command('queue:restart')->everyFiveMinutes()->withoutOverlapping();

View File

@ -18,12 +18,15 @@ use App\Http\Requests\ClientPortal\RegisterRequest;
use App\Models\Client; use App\Models\Client;
use App\Models\Company; use App\Models\Company;
use App\Utils\Ninja; use App\Utils\Ninja;
use App\Utils\Traits\GeneratesCounter;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\App;
class ContactRegisterController extends Controller class ContactRegisterController extends Controller
{ {
use GeneratesCounter;
public function __construct() public function __construct()
{ {
$this->middleware(['guest']); $this->middleware(['guest']);
@ -61,6 +64,16 @@ class ContactRegisterController extends Controller
$client->fill($data); $client->fill($data);
$client->save(); $client->save();
$client->number = $this->getNextClientNumber($client);
$client->save();
if(!$client->country_id && strlen($client->company->settings->country_id) > 1){
$client->update(['country_id' => $client->company->settings->country_id]);
}
$this->getClientContact($data, $client);
return $client; return $client;
} }

View File

@ -141,7 +141,7 @@ class SelfUpdateController extends BaseController
if(strpos($file->getPathname(), '.git') !== false) if(strpos($file->getPathname(), '.git') !== false)
continue; continue;
// nlog($file->getPathname()); //nlog($file->getPathname());
if ($file->isFile() && ! $file->isWritable()) { if ($file->isFile() && ! $file->isWritable()) {
// throw new FilePermissionsFailure($file); // throw new FilePermissionsFailure($file);

View File

@ -44,30 +44,36 @@ class ContactRegister
} }
$query = [ if(Ninja::isHosted())
'portal_domain' => $request->getSchemeAndHttpHost(),
'portal_mode' => 'domain',
];
if($company = Company::where($query)->first())
{ {
$query = [
'portal_domain' => $request->getSchemeAndHttpHost(),
'portal_mode' => 'domain',
];
if(! $company->client_can_register) if($company = Company::where($query)->first())
abort(400, 'Registration disabled'); {
// $request->merge(['key' => $company->company_key]); if(! $company->client_can_register)
session()->put('company_key', $company->company_key); abort(400, 'Registration disabled');
// $request->merge(['key' => $company->company_key]);
session()->put('company_key', $company->company_key);
return $next($request);
}
return $next($request);
} }
// For self-hosted platforms with multiple companies, resolving is done using company key // For self-hosted platforms with multiple companies, resolving is done using company key
// if it doesn't resolve using a domain. // if it doesn't resolve using a domain.
if ($request->route()->parameter('company_key') && Ninja::isSelfHost()) {
if ($request->company_key && Ninja::isSelfHost()) {
$company = Company::where('company_key', $request->company_key)->firstOrFail(); $company = Company::where('company_key', $request->company_key)->firstOrFail();
if(! (bool)$company->client_can_register); if(! (bool)$company->client_can_register)
abort(400, 'Registration disabled'); abort(400, 'Registration disabled');
//$request->merge(['key' => $company->company_key]); //$request->merge(['key' => $company->company_key]);

View File

@ -153,7 +153,7 @@ class GoCardlessPaymentDriver extends BaseDriver
'gateway_type_id' => GatewayType::BANK_TRANSFER, 'gateway_type_id' => GatewayType::BANK_TRANSFER,
]; ];
$payment = $this->createPayment($data, Payment::STATUS_COMPLETED); $payment = $this->createPayment($data, Payment::STATUS_PENDING);
SystemLogger::dispatch( SystemLogger::dispatch(
['response' => $payment, 'data' => $data], ['response' => $payment, 'data' => $data],
@ -242,7 +242,6 @@ class GoCardlessPaymentDriver extends BaseDriver
} }
foreach ($request->events as $event) { foreach ($request->events as $event) {
if ($event['action'] === 'confirmed') { if ($event['action'] === 'confirmed') {
$payment = Payment::query() $payment = Payment::query()
@ -254,10 +253,13 @@ class GoCardlessPaymentDriver extends BaseDriver
$payment->status_id = Payment::STATUS_COMPLETED; $payment->status_id = Payment::STATUS_COMPLETED;
$payment->save(); $payment->save();
} }
//finalize payments on invoices here.
} }
if ($event['action'] === 'failed') { if ($event['action'] === 'failed') {
// Update invoices, etc?
$payment = Payment::query() $payment = Payment::query()
->where('transaction_reference', $event['links']['payment']) ->where('transaction_reference', $event['links']['payment'])

View File

@ -170,33 +170,4 @@ class PaymentIntentWebhook implements ShouldQueue
} }
//charge # optional($this->stripe_request['object']['charges']['data'][0])['id']
//metadata # optional($this->stripe_request['object']['charges']['data'][0]['metadata']['gateway_type_id']
//metadata # optional($this->stripe_request['object']['charges']['data'][0]['metadata']['payment_hash']
/**
*
* $intent = \Stripe\PaymentIntent::retrieve('{{PAYMENT_INTENT_ID}}');
$charges = $intent->charges->data;
*
*
* $payment = Payment::query()
->where('company_id', $request->getCompany()->id)
->where('transaction_reference', $transaction['id'])
->first();
if ($payment) {
$payment->status_id = Payment::STATUS_COMPLETED;
$payment->save();
}
* */
} }

1157
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -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.74', 'app_version' => '5.3.75',
'app_tag' => '5.3.74', 'app_tag' => '5.3.75',
'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', ''),

View File

@ -4,7 +4,7 @@
<!-- Source: https://github.com/invoiceninja/invoiceninja --> <!-- Source: https://github.com/invoiceninja/invoiceninja -->
<!-- Version: {{ config('ninja.app_version') }} --> <!-- Version: {{ config('ninja.app_version') }} -->
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Invoice Ninja</title> <title>{{config('ninja.app_name')}}</title>
<meta name="google-signin-client_id" content="{{ config('services.google.client_id') }}"> <meta name="google-signin-client_id" content="{{ config('services.google.client_id') }}">
<link rel="manifest" href="manifest.json?v={{ config('ninja.app_version') }}"> <link rel="manifest" href="manifest.json?v={{ config('ninja.app_version') }}">
<script src="{{ asset('js/pdf.min.js') }}"></script> <script src="{{ asset('js/pdf.min.js') }}"></script>

View File

@ -40,7 +40,7 @@
class="input w-full" class="input w-full"
type="email" type="email"
name="{{ $field['key'] }}" name="{{ $field['key'] }}"
value="{{ old($field['key']) }}" value=""
{{ $field['required'] ? 'required' : '' }} /> {{ $field['required'] ? 'required' : '' }} />
@elseif($field['key'] === 'password') @elseif($field['key'] === 'password')
<input <input

View File

@ -12,7 +12,11 @@
@section('body') @section('body')
@if(!$invoice->isPayable() && $client->getSetting('custom_message_paid_invoice')) @if($invoice->isPayable() && $client->getSetting('custom_message_unpaid_invoice'))
@component('portal.ninja2020.components.message')
{{ $client->getSetting('custom_message_unpaid_invoice') }}
@endcomponent
@elseif($invoice->status_id === 4 && $client->getSetting('custom_message_paid_invoice'))
@component('portal.ninja2020.components.message') @component('portal.ninja2020.components.message')
{{ $client->getSetting('custom_message_paid_invoice') }} {{ $client->getSetting('custom_message_paid_invoice') }}
@endcomponent @endcomponent

View File

@ -15,9 +15,9 @@
@section('body') @section('body')
@if(!$quote->isApproved() && $client->getSetting('custom_message_unpaid_invoice')) @if(!$quote->isApproved() && $client->getSetting('custom_message_unapproved_quote'))
@component('portal.ninja2020.components.message') @component('portal.ninja2020.components.message')
{{ $client->getSetting('custom_message_unpaid_invoice') }} {{ $client->getSetting('custom_message_unapproved_quote') }}
@endcomponent @endcomponent
@endif @endif