diff --git a/app/Filters/DocumentFilters.php b/app/Filters/DocumentFilters.php index 50731fc7df76..2fc006f7b3f7 100644 --- a/app/Filters/DocumentFilters.php +++ b/app/Filters/DocumentFilters.php @@ -20,11 +20,6 @@ use Illuminate\Database\Eloquent\Builder; class DocumentFilters extends QueryFilters { - // public function client_id(int $client_id) :Builder - // { - // return $this->builder->where('client_id', $client_id); - // } - /** * Filter based on search text. * @@ -41,6 +36,14 @@ class DocumentFilters extends QueryFilters return $this->builder; } + /* If client ID passed to this entity, simply return */ + public function client_id(string $client_id = '') :Builder + { + + return $this->builder; + + } + /** * Sorts the list based on $sort. * @@ -64,6 +67,7 @@ class DocumentFilters extends QueryFilters */ public function baseQuery(int $company_id, User $user) : Builder { + return $this->builder; } /** diff --git a/app/Filters/PaymentTermFilters.php b/app/Filters/PaymentTermFilters.php new file mode 100644 index 000000000000..93b62e4ce0a4 --- /dev/null +++ b/app/Filters/PaymentTermFilters.php @@ -0,0 +1,118 @@ +builder; + } + + return $this->builder->where(function ($query) use ($filter) { + $query->where('payment_terms.name', 'like', '%'.$filter.'%'); + }); + } + + /** + * Filters the list based on the status + * archived, active, deleted. + * + * @param string filter + * @return Builder + */ + public function status(string $filter = '') : Builder + { + if (strlen($filter) == 0) { + return $this->builder; + } + + $table = 'payment_terms'; + $filters = explode(',', $filter); + + return $this->builder->where(function ($query) use ($filters, $table) { + $query->whereNull($table.'.id'); + + if (in_array(parent::STATUS_ACTIVE, $filters)) { + $query->orWhereNull($table.'.deleted_at'); + } + + if (in_array(parent::STATUS_ARCHIVED, $filters)) { + $query->orWhere(function ($query) use ($table) { + $query->whereNotNull($table.'.deleted_at'); + + if (! in_array($table, ['users'])) { + $query->where($table.'.is_deleted', '=', 0); + } + }); + } + + if (in_array(parent::STATUS_DELETED, $filters)) { + $query->orWhere($table.'.is_deleted', '=', 1); + } + }); + } + + /** + * Sorts the list based on $sort. + * + * @param string sort formatted as column|asc + * @return Builder + */ + public function sort(string $sort) : Builder + { + $sort_col = explode('|', $sort); + + return $this->builder->orderBy($sort_col[0], $sort_col[1]); + } + + /** + * Returns the base query. + * + * @param int company_id + * @param User $user + * @return Builder + * @deprecated + */ + public function baseQuery(int $company_id, User $user) : Builder + { + return $this->builder; + } + + /** + * Filters the query by the users company ID. + * + * @return Illuminate\Database\Query\Builder + */ + public function entityFilter() + { + //return $this->builder->whereCompanyId(auth()->user()->company()->id); + return $this->builder->whereCompanyId(auth()->user()->company()->id)->orWhere('company_id', null); + } +} diff --git a/app/Http/Controllers/PaymentTermController.php b/app/Http/Controllers/PaymentTermController.php index 1f345cf6154c..ccc43424c47a 100644 --- a/app/Http/Controllers/PaymentTermController.php +++ b/app/Http/Controllers/PaymentTermController.php @@ -14,6 +14,7 @@ use App\Transformers\PaymentTermTransformer; use App\Utils\Traits\MakesHash; use Illuminate\Http\Request; use Illuminate\Http\Response; +use App\Filters\PaymentTermFilters; class PaymentTermController extends BaseController { @@ -73,9 +74,9 @@ class PaymentTermController extends BaseController * ), * ) */ - public function index() + public function index(PaymentTermFilters $filters) { - $payment_terms = PaymentTerm::whereCompanyId(auth()->user()->company()->id)->orWhere('company_id', null); + $payment_terms = PaymentTerm::filter($filters); return $this->listResponse($payment_terms); } diff --git a/app/Models/PaymentTerm.php b/app/Models/PaymentTerm.php index fb47f533e30a..5d1e892dfb88 100644 --- a/app/Models/PaymentTerm.php +++ b/app/Models/PaymentTerm.php @@ -11,6 +11,7 @@ namespace App\Models; +use App\Models\Filterable; use Illuminate\Database\Eloquent\SoftDeletes; /** @@ -19,6 +20,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; class PaymentTerm extends BaseModel { use SoftDeletes; + use Filterable; /** * @var bool diff --git a/app/Providers/NinjaTranslationServiceProvider.php b/app/Providers/NinjaTranslationServiceProvider.php index f64af968c497..985987bc0288 100644 --- a/app/Providers/NinjaTranslationServiceProvider.php +++ b/app/Providers/NinjaTranslationServiceProvider.php @@ -33,19 +33,6 @@ class NinjaTranslationServiceProvider extends TranslationServiceProvider * */ - // $this->app->bind('translator', function($app) { - - // $loader = $app['translation.loader']; - // $locale = $app['config']['app.locale']; - - // $trans = new NinjaTranslator($loader, $locale); - - // $trans->setFallback($app['config']['app.fallback_locale']); - - // return $trans; - - // }); - $this->app->singleton('translator', function ($app) { $loader = $app['translation.loader']; diff --git a/app/Services/Invoice/InvoiceService.php b/app/Services/Invoice/InvoiceService.php index 72119404bc6e..a6d40175d24a 100644 --- a/app/Services/Invoice/InvoiceService.php +++ b/app/Services/Invoice/InvoiceService.php @@ -299,7 +299,10 @@ class InvoiceService if($this->invoice->status_id == Invoice::STATUS_DRAFT) return $this; - if ($this->invoice->balance > 0 && $this->invoice->balance < $this->invoice->amount) { + if($this->invoice->balance == 0){ + $this->setStatus(Invoice::STATUS_PAID); + } + elseif ($this->invoice->balance > 0 && $this->invoice->balance < $this->invoice->amount) { $this->setStatus(Invoice::STATUS_PARTIAL); } diff --git a/phpunit.xml b/phpunit.xml index ec8019ee3005..cc7e424e14bd 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -22,7 +22,7 @@ - + diff --git a/resources/views/portal/ninja2020/components/livewire/required-client-info.blade.php b/resources/views/portal/ninja2020/components/livewire/required-client-info.blade.php index 13c8bac6d8ea..3dee6bbfc8ad 100644 --- a/resources/views/portal/ninja2020/components/livewire/required-client-info.blade.php +++ b/resources/views/portal/ninja2020/components/livewire/required-client-info.blade.php @@ -60,7 +60,6 @@