diff --git a/VERSION.txt b/VERSION.txt index cae032632b73..e0b13d4547dc 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -5.5.56 \ No newline at end of file +5.5.57 \ No newline at end of file diff --git a/app/Filters/ClientFilters.php b/app/Filters/ClientFilters.php index df4b86fdbca3..63a6598b9541 100644 --- a/app/Filters/ClientFilters.php +++ b/app/Filters/ClientFilters.php @@ -108,17 +108,17 @@ class ClientFilters extends QueryFilters } return $this->builder->where(function ($query) use ($filter) { - $query->where('clients.name', 'like', '%'.$filter.'%') - ->orWhere('clients.id_number', 'like', '%'.$filter.'%') + $query->where('name', 'like', '%'.$filter.'%') + ->orWhere('id_number', 'like', '%'.$filter.'%') ->orWhereHas('contacts', function ($query) use ($filter) { $query->where('first_name', 'like', '%'.$filter.'%'); $query->orWhere('last_name', 'like', '%'.$filter.'%'); $query->orWhere('email', 'like', '%'.$filter.'%'); }) - ->orWhere('clients.custom_value1', 'like', '%'.$filter.'%') - ->orWhere('clients.custom_value2', 'like', '%'.$filter.'%') - ->orWhere('clients.custom_value3', 'like', '%'.$filter.'%') - ->orWhere('clients.custom_value4', 'like', '%'.$filter.'%'); + ->orWhere('custom_value1', 'like', '%'.$filter.'%') + ->orWhere('custom_value2', 'like', '%'.$filter.'%') + ->orWhere('custom_value3', 'like', '%'.$filter.'%') + ->orWhere('custom_value4', 'like', '%'.$filter.'%'); }); } @@ -147,4 +147,14 @@ class ClientFilters extends QueryFilters { return $this->builder->company(); } + + public function filter_details(string $filter = '') + { + + if($filter == 'true') + return $this->builder->select('id', 'name', 'number', 'id_number'); + + return $this->builder; + + } } diff --git a/app/Http/Livewire/PaymentsTable.php b/app/Http/Livewire/PaymentsTable.php index 1ad99fa2bbcf..b6781a8917a4 100644 --- a/app/Http/Livewire/PaymentsTable.php +++ b/app/Http/Livewire/PaymentsTable.php @@ -42,7 +42,7 @@ class PaymentsTable extends Component public function render() { $query = Payment::query() - ->with('type', 'client') + ->with('type', 'client', 'invoices') ->where('company_id', $this->company->id) ->where('client_id', auth()->guard('contact')->user()->client_id) ->whereIn('status_id', [Payment::STATUS_FAILED, Payment::STATUS_COMPLETED, Payment::STATUS_PENDING, Payment::STATUS_REFUNDED, Payment::STATUS_PARTIALLY_REFUNDED]) diff --git a/app/Http/Requests/Shop/StoreShopClientRequest.php b/app/Http/Requests/Shop/StoreShopClientRequest.php index 95932ea24985..e599ad0fb500 100644 --- a/app/Http/Requests/Shop/StoreShopClientRequest.php +++ b/app/Http/Requests/Shop/StoreShopClientRequest.php @@ -78,8 +78,6 @@ class StoreShopClientRequest extends Request $input = $this->all(); - //@todo implement feature permissions for > 100 clients - // $settings = ClientSettings::defaults(); if (array_key_exists('settings', $input) && ! empty($input['settings'])) { diff --git a/app/Http/Requests/User/StoreUserRequest.php b/app/Http/Requests/User/StoreUserRequest.php index ea5571140c3c..bf5093be71a1 100644 --- a/app/Http/Requests/User/StoreUserRequest.php +++ b/app/Http/Requests/User/StoreUserRequest.php @@ -63,8 +63,6 @@ class StoreUserRequest extends Request { $input = $this->all(); - //unique user rule - check company_user table for user_id / company_id / account_id if none exist we can add the user. ELSE return false - if (array_key_exists('email', $input)) { $input['email'] = trim($input['email']); } @@ -79,12 +77,10 @@ class StoreUserRequest extends Request } if (! isset($input['company_user']['settings'])) { - //$input['company_user']['settings'] = DefaultSettings::userSettings(); $input['company_user']['settings'] = null; } } else { $input['company_user'] = [ - //'settings' => DefaultSettings::userSettings(), 'settings' => null, 'permissions' => '', ]; diff --git a/app/Jobs/Invoice/InvoiceWorkflowSettings.php b/app/Jobs/Invoice/InvoiceWorkflowSettings.php index 006b8ebff76f..c9a64ac9cee4 100644 --- a/app/Jobs/Invoice/InvoiceWorkflowSettings.php +++ b/app/Jobs/Invoice/InvoiceWorkflowSettings.php @@ -56,12 +56,5 @@ class InvoiceWorkflowSettings implements ShouldQueue /* Throws: Payment amount xxx does not match invoice totals. */ $this->base_repository->archive($this->invoice); } - - //@TODO this setting should only fire for recurring invoices - // if ($this->client->getSetting('auto_email_invoice')) { - // $this->invoice->invitations->each(function ($invitation, $key) { - // $this->invoice->service()->sendEmail($invitation->contact); - // }); - // } } } diff --git a/app/Models/Payment.php b/app/Models/Payment.php index 153f9b551e37..159fd2c35801 100644 --- a/app/Models/Payment.php +++ b/app/Models/Payment.php @@ -212,6 +212,11 @@ class Payment extends BaseModel return Number::formatMoney($this->amount, $this->client); } + public function formatAmount(float $amount): string + { + return Number::formatMoney($amount, $this->client); + } + public function clientPaymentDate() { if (! $this->date) { diff --git a/app/Models/Paymentable.php b/app/Models/Paymentable.php index 594162829132..3eaf405d2177 100644 --- a/app/Models/Paymentable.php +++ b/app/Models/Paymentable.php @@ -43,4 +43,5 @@ class Paymentable extends Pivot { return $this->belongsTo(Payment::class); } + } diff --git a/app/Models/Presenters/ClientPresenter.php b/app/Models/Presenters/ClientPresenter.php index de04af406752..be3df720a13b 100644 --- a/app/Models/Presenters/ClientPresenter.php +++ b/app/Models/Presenters/ClientPresenter.php @@ -27,7 +27,6 @@ class ClientPresenter extends EntityPresenter return $this->entity->name; } - //$contact = $this->entity->primary_contact->first(); $contact = $this->entity->contacts->whereNotNull('email')->first(); $contact_name = 'No Contact Set'; diff --git a/app/Models/User.php b/app/Models/User.php index c018089d7818..b27f81f043f7 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -370,11 +370,6 @@ class User extends Authenticatable implements MustVerifyEmail (is_int(stripos($this->token()->cu->permissions, $all_permission))) || (is_int(stripos($this->token()->cu->permissions, $permission))); - //23-03-2021 - stripos return an int if true and bool false, but 0 is also interpreted as false, so we simply use is_int() to verify state - // return $this->isOwner() || - // $this->isAdmin() || - // (stripos($this->company_user->permissions, $all_permission) !== false) || - // (stripos($this->company_user->permissions, $permission) !== false); } public function documents() diff --git a/app/Repositories/ClientRepository.php b/app/Repositories/ClientRepository.php index 6114916e80ad..9d5a0c757d78 100644 --- a/app/Repositories/ClientRepository.php +++ b/app/Repositories/ClientRepository.php @@ -52,7 +52,6 @@ class ClientRepository extends BaseRepository * @return Client|Client|null Client Object * * @throws \Laracasts\Presenter\Exceptions\PresenterException - * @todo Write tests to make sure that custom client numbers work as expected. */ public function save(array $data, Client $client) : ?Client { diff --git a/config/ninja.php b/config/ninja.php index 0b3a99c33a3c..9006c72572b6 100644 --- a/config/ninja.php +++ b/config/ninja.php @@ -14,8 +14,8 @@ return [ 'require_https' => env('REQUIRE_HTTPS', true), 'app_url' => rtrim(env('APP_URL', ''), '/'), 'app_domain' => env('APP_DOMAIN', 'invoicing.co'), - 'app_version' => '5.5.56', - 'app_tag' => '5.5.56', + 'app_version' => '5.5.57', + 'app_tag' => '5.5.57', 'minimum_client_version' => '5.0.16', 'terms_version' => '1.0.1', 'api_secret' => env('API_SECRET', ''), diff --git a/resources/views/portal/ninja2020/components/livewire/payments-table.blade.php b/resources/views/portal/ninja2020/components/livewire/payments-table.blade.php index 1c9c5010d8b5..14ba9de42481 100644 --- a/resources/views/portal/ninja2020/components/livewire/payments-table.blade.php +++ b/resources/views/portal/ninja2020/components/livewire/payments-table.blade.php @@ -60,7 +60,7 @@ {{ $payment->translatedType() }} - {!! \App\Utils\Number::formatMoney($payment->amount, $payment->client) !!} + {!! \App\Utils\Number::formatMoney($payment->amount > 0 ? $payment->amount : $payment->credits->sum('pivot.amount'), $payment->client) !!} {{ \Illuminate\Support\Str::limit($payment->transaction_reference, 35) }} diff --git a/resources/views/portal/ninja2020/payments/show.blade.php b/resources/views/portal/ninja2020/payments/show.blade.php index 86f67bafb354..11e42598a526 100644 --- a/resources/views/portal/ninja2020/payments/show.blade.php +++ b/resources/views/portal/ninja2020/payments/show.blade.php @@ -66,7 +66,7 @@ {{ ctrans('texts.amount') }}
- {{ $payment->formattedAmount() }} + {{ $payment->formatAmount($payment->amount > 0 ? $payment->amount : $payment?->invoices->sum('pivot.amount')) }}
@endif @@ -116,6 +116,7 @@ href="{{ route('client.invoice.show', ['invoice' => $invoice->hashed_id])}}"> {{ $invoice->number }} + - {{ \App\Utils\Number::formatMoney($payment->invoices->where('id', $invoice->id)->sum('pivot.amount') - $payment->invoices->where('id', $invoice->id)->sum('pivot.refunded'), $payment->client) }} @endforeach