From 9ae0474de3610473ab2db5d093bfba0bf21c4c2b Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 1 Jul 2022 16:56:36 +1000 Subject: [PATCH] Fixes for type checking for purchase orders --- app/Filters/InvoiceFilters.php | 10 +++++++++- .../PurchaseOrder/StorePurchaseOrderRequest.php | 11 +++++++++-- .../PurchaseOrder/UpdatePurchaseOrderRequest.php | 6 ++++++ app/Jobs/Mail/NinjaMailerJob.php | 11 ++++++++--- .../2022_06_30_000126_add_flag_to_accounts_table.php | 1 + 5 files changed, 33 insertions(+), 6 deletions(-) diff --git a/app/Filters/InvoiceFilters.php b/app/Filters/InvoiceFilters.php index b10fbc1fd02d..4bb25f5867e2 100644 --- a/app/Filters/InvoiceFilters.php +++ b/app/Filters/InvoiceFilters.php @@ -138,6 +138,14 @@ class InvoiceFilters extends QueryFilters }); } + public function without_deleted_clients() + { + + return $this->builder->whereHas('client', function ($query) { + $query->where('is_deleted',0); + }); + } + public function upcoming() { return $this->builder @@ -212,7 +220,7 @@ class InvoiceFilters extends QueryFilters { if (auth()->guard('contact')->user()) { return $this->contactViewFilter(); - } else { + } else { return $this->builder->company()->with(['invitations.company'], ['documents.company']); } diff --git a/app/Http/Requests/PurchaseOrder/StorePurchaseOrderRequest.php b/app/Http/Requests/PurchaseOrder/StorePurchaseOrderRequest.php index 5b63416e468e..6bad2016aee1 100644 --- a/app/Http/Requests/PurchaseOrder/StorePurchaseOrderRequest.php +++ b/app/Http/Requests/PurchaseOrder/StorePurchaseOrderRequest.php @@ -14,12 +14,15 @@ namespace App\Http\Requests\PurchaseOrder; use App\Http\Requests\Request; use App\Models\PurchaseOrder; +use App\Utils\Traits\CleanLineItems; use App\Utils\Traits\MakesHash; use Illuminate\Validation\Rule; class StorePurchaseOrderRequest extends Request { use MakesHash; + use CleanLineItems; + /** * Determine if the user is authorized to make this request. * @@ -43,8 +46,6 @@ class StorePurchaseOrderRequest extends Request $rules['number'] = ['nullable', Rule::unique('purchase_orders')->where('company_id', auth()->user()->company()->id)]; $rules['discount'] = 'sometimes|numeric'; $rules['is_amount_discount'] = ['boolean']; - - $rules['line_items'] = 'array'; return $rules; @@ -56,6 +57,12 @@ class StorePurchaseOrderRequest extends Request $input = $this->decodePrimaryKeys($input); + if (isset($input['line_items']) && is_array($input['line_items'])) + $input['line_items'] = isset($input['line_items']) ? $this->cleanItems($input['line_items']) : []; + + $input['amount'] = 0; + $input['balance'] = 0; + $this->replace($input); } diff --git a/app/Http/Requests/PurchaseOrder/UpdatePurchaseOrderRequest.php b/app/Http/Requests/PurchaseOrder/UpdatePurchaseOrderRequest.php index d2e83154fb95..a95e1ee4c0c0 100644 --- a/app/Http/Requests/PurchaseOrder/UpdatePurchaseOrderRequest.php +++ b/app/Http/Requests/PurchaseOrder/UpdatePurchaseOrderRequest.php @@ -14,6 +14,7 @@ namespace App\Http\Requests\PurchaseOrder; use App\Http\Requests\Request; use App\Utils\Traits\ChecksEntityStatus; +use App\Utils\Traits\CleanLineItems; use App\Utils\Traits\MakesHash; use Illuminate\Validation\Rule; @@ -21,6 +22,7 @@ class UpdatePurchaseOrderRequest extends Request { use ChecksEntityStatus; use MakesHash; + use CleanLineItems; /** * Determine if the user is authorized to make this request. @@ -57,6 +59,10 @@ class UpdatePurchaseOrderRequest extends Request $input['id'] = $this->purchase_order->id; + if (isset($input['line_items']) && is_array($input['line_items'])) { + $input['line_items'] = isset($input['line_items']) ? $this->cleanItems($input['line_items']) : []; + } + $this->replace($input); } } diff --git a/app/Jobs/Mail/NinjaMailerJob.php b/app/Jobs/Mail/NinjaMailerJob.php index 6e7296e96c52..ed5fc8476dde 100644 --- a/app/Jobs/Mail/NinjaMailerJob.php +++ b/app/Jobs/Mail/NinjaMailerJob.php @@ -318,20 +318,25 @@ class NinjaMailerJob implements ShouldQueue return true; /* GMail users are uncapped */ - if(Ninja::isHosted() && $this->nmo->settings->email_sending_method == 'gmail') + if(Ninja::isHosted() && ($this->nmo->settings->email_sending_method == 'gmail' || $this->nmo->settings->email_sending_method == 'office365')) return false; /* On the hosted platform, if the user is over the email quotas, we do not send the email. */ if(Ninja::isHosted() && $this->company->account && $this->company->account->emailQuotaExceeded()) return true; + /* To handle spam users we drop all emails from flagged accounts */ if(Ninja::isHosted() && $this->company->account && $this->nmo->company->account->is_flagged) return true; /* Ensure the user has a valid email address */ if(!str_contains($this->nmo->to_user->email, "@")) return true; - + + /* On the hosted platform we actively scan all outbound emails to ensure outbound email quality remains high */ + if(Ninja::isHosted()) + return (new \Modules\Admin\Jobs\Account\EmailQuality($this->nmo, $this->company))->run(); + return false; } @@ -373,7 +378,7 @@ class NinjaMailerJob implements ShouldQueue 'form_params' => [ 'client_id' => config('ninja.o365.client_id') , 'client_secret' => config('ninja.o365.client_secret') , - 'scope' => 'email Mail.ReadWrite Mail.Send offline_access profile User.Read openid', + 'scope' => 'email Mail.Send offline_access profile User.Read openid', 'grant_type' => 'refresh_token', 'refresh_token' => $user->oauth_user_refresh_token ], diff --git a/database/migrations/2022_06_30_000126_add_flag_to_accounts_table.php b/database/migrations/2022_06_30_000126_add_flag_to_accounts_table.php index 7118a7d7f564..c43b25db0c7a 100644 --- a/database/migrations/2022_06_30_000126_add_flag_to_accounts_table.php +++ b/database/migrations/2022_06_30_000126_add_flag_to_accounts_table.php @@ -15,6 +15,7 @@ class AddFlagToAccountsTable extends Migration { Schema::table('accounts', function (Blueprint $table) { $table->boolean('is_flagged')->default(0); + $table->boolean('is_verified_account')->default(0); }); }