From 69007836ac4eb17b2bda00d8055728a19cd7f7c0 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Thu, 7 Mar 2024 17:03:09 +1100 Subject: [PATCH] Minor fixes --- app/Exceptions/Handler.php | 2 -- app/Http/Requests/Invoice/StoreInvoiceRequest.php | 10 ++++++++++ app/Http/Requests/Invoice/UpdateInvoiceRequest.php | 7 +++++++ app/Http/Requests/Webhook/StoreWebhookRequest.php | 10 +++++----- app/Models/Webhook.php | 1 + 5 files changed, 23 insertions(+), 7 deletions(-) diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 444733d814ee..514d8f28dde6 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -55,14 +55,12 @@ class Handler extends ExceptionHandler protected $selfHostDontReport = [ FilePermissionsFailure::class, - PDOException::class, MaxAttemptsExceededException::class, CommandNotFoundException::class, ValidationException::class, ModelNotFoundException::class, NotFoundHttpException::class, UnableToCreateDirectory::class, - ConnectException::class, RuntimeException::class, InvalidArgumentException::class, CredentialsException::class, diff --git a/app/Http/Requests/Invoice/StoreInvoiceRequest.php b/app/Http/Requests/Invoice/StoreInvoiceRequest.php index 018a1d7c7b36..800583d8dc37 100644 --- a/app/Http/Requests/Invoice/StoreInvoiceRequest.php +++ b/app/Http/Requests/Invoice/StoreInvoiceRequest.php @@ -77,6 +77,7 @@ class StoreInvoiceRequest extends Request $rules['exchange_rate'] = 'bail|sometimes|numeric'; $rules['partial'] = 'bail|sometimes|nullable|numeric|gte:0'; $rules['partial_due_date'] = ['bail', 'sometimes', 'exclude_if:partial,0', Rule::requiredIf(fn () => $this->partial > 0), 'date']; + $rules['due_date'] = ['bail', 'sometimes', 'nullable', 'after:partial_due_date', Rule::requiredIf(fn () => strlen($this->partial_due_date) > 1), 'date']; return $rules; @@ -112,6 +113,15 @@ class StoreInvoiceRequest extends Request $input['exchange_rate'] = 1; } + nlog($input['partial_due_date']); + nlog(strlen($input['partial_due_date'])); + + //handles edge case where we need for force set the due date of the invoice. + if((isset($input['partial_due_date']) && strlen($input['partial_due_date']) > 1) && (!array_key_exists('due_date', $input) || strlen($input['due_date']) == 0)) { + $client = \App\Models\Client::withTrashed()->find($input['client_id']); + $input['due_date'] = \Illuminate\Support\Carbon::parse($input['date'])->addDays($client->getSetting('payment_terms'))->format('Y-m-d'); + } + $this->replace($input); } } diff --git a/app/Http/Requests/Invoice/UpdateInvoiceRequest.php b/app/Http/Requests/Invoice/UpdateInvoiceRequest.php index 501c2bab31d3..ce96da492d5d 100644 --- a/app/Http/Requests/Invoice/UpdateInvoiceRequest.php +++ b/app/Http/Requests/Invoice/UpdateInvoiceRequest.php @@ -78,6 +78,7 @@ class UpdateInvoiceRequest extends Request $rules['exchange_rate'] = 'bail|sometimes|numeric'; $rules['partial'] = 'bail|sometimes|nullable|numeric'; $rules['partial_due_date'] = ['bail', 'sometimes', 'exclude_if:partial,0', Rule::requiredIf(fn () => $this->partial > 0), 'date', 'before:due_date']; + $rules['due_date'] = ['bail', 'sometimes', 'nullable', 'after:partial_due_date', Rule::requiredIf(fn () => strlen($this->partial_due_date) > 1), 'date']; return $rules; @@ -107,6 +108,12 @@ class UpdateInvoiceRequest extends Request $input['exchange_rate'] = 1; } + //handles edge case where we need for force set the due date of the invoice. + if((isset($input['partial_due_date']) && strlen($input['partial_due_date']) > 1) && (!array_key_exists('due_date', $input) || strlen($input['due_date']) == 0 || empty($this->invoice->due_date))) { + $client = \App\Models\Client::withTrashed()->find($input['client_id']); + $input['due_date'] = \Illuminate\Support\Carbon::parse($input['date'])->addDays($client->getSetting('payment_terms'))->format('Y-m-d'); + } + $this->replace($input); } diff --git a/app/Http/Requests/Webhook/StoreWebhookRequest.php b/app/Http/Requests/Webhook/StoreWebhookRequest.php index c35b549d0e4a..fd917a1242ad 100644 --- a/app/Http/Requests/Webhook/StoreWebhookRequest.php +++ b/app/Http/Requests/Webhook/StoreWebhookRequest.php @@ -23,7 +23,10 @@ class StoreWebhookRequest extends Request */ public function authorize(): bool { - return auth()->user()->isAdmin() && auth()->user()->account->hasFeature(Account::FEATURE_API); + /** @var \App\Models\User $user */ + $user = auth()->user(); + + return $user->isAdmin() && $user->account->hasFeature(Account::FEATURE_API); } public function rules() @@ -31,7 +34,6 @@ class StoreWebhookRequest extends Request return [ 'target_url' => 'bail|required|url', 'event_id' => 'bail|required', - // 'headers' => 'bail|sometimes|json', 'rest_method' => 'required|in:post,put' ]; } @@ -43,9 +45,7 @@ class StoreWebhookRequest extends Request if (!isset($input['rest_method'])) { $input['rest_method'] = 'post'; } - // if(isset($input['headers']) && count($input['headers']) == 0) - // $input['headers'] = null; - + $this->replace($input); } } diff --git a/app/Models/Webhook.php b/app/Models/Webhook.php index 3422e9315923..3661affb5f98 100644 --- a/app/Models/Webhook.php +++ b/app/Models/Webhook.php @@ -180,6 +180,7 @@ class Webhook extends BaseModel self::EVENT_DELETE_PURCHASE_ORDER, self::EVENT_RESTORE_PURCHASE_ORDER, self::EVENT_ARCHIVE_PURCHASE_ORDER, + self::EVENT_CREATE_PRODUCT, self::EVENT_UPDATE_PRODUCT, self::EVENT_DELETE_PRODUCT, self::EVENT_RESTORE_PRODUCT,