diff --git a/app/Http/Requests/Invoice/StoreInvoiceRequest.php b/app/Http/Requests/Invoice/StoreInvoiceRequest.php index 4381f4abcb3b..393ada465aa0 100644 --- a/app/Http/Requests/Invoice/StoreInvoiceRequest.php +++ b/app/Http/Requests/Invoice/StoreInvoiceRequest.php @@ -114,7 +114,7 @@ class StoreInvoiceRequest extends Request } //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)) { + if((isset($input['partial_due_date']) && strlen($input['partial_due_date']) > 1) && (!array_key_exists('due_date', $input) || (empty($input['due_date']) && 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'); } diff --git a/app/Http/Requests/Invoice/UpdateInvoiceRequest.php b/app/Http/Requests/Invoice/UpdateInvoiceRequest.php index ce96da492d5d..42d32ef81479 100644 --- a/app/Http/Requests/Invoice/UpdateInvoiceRequest.php +++ b/app/Http/Requests/Invoice/UpdateInvoiceRequest.php @@ -109,7 +109,7 @@ class UpdateInvoiceRequest extends Request } //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))) { + if((isset($input['partial_due_date']) && strlen($input['partial_due_date']) > 1) && (!array_key_exists('due_date', $input) || (empty($input['due_date']) && 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'); } diff --git a/app/Http/Requests/TaskScheduler/StoreSchedulerRequest.php b/app/Http/Requests/TaskScheduler/StoreSchedulerRequest.php index 42416cea35c6..9ec78ec0d163 100644 --- a/app/Http/Requests/TaskScheduler/StoreSchedulerRequest.php +++ b/app/Http/Requests/TaskScheduler/StoreSchedulerRequest.php @@ -18,6 +18,28 @@ use App\Utils\Traits\MakesHash; class StoreSchedulerRequest extends Request { use MakesHash; + + public array $client_statuses = [ + 'all', + 'draft', + 'paid', + 'unpaid', + 'overdue', + 'pending', + 'invoiced', + 'logged', + 'partial', + 'applied', + 'active', + 'paused', + 'completed', + 'approved', + 'expired', + 'upcoming', + 'converted', + 'uninvoiced', + ]; + /** * Determine if the user is authorized to make this request. * @@ -73,10 +95,18 @@ class StoreSchedulerRequest extends Request if(isset($input['parameters']['status'])) { + $task_statuses = []; + + if($input['parameters']['report_name'] == 'task') { + $task_statuses = array_diff(explode(",", $input['parameters']['status']), $this->client_statuses); + } + $input['parameters']['status'] = collect(explode(",", $input['parameters']['status'])) ->filter(function ($status) { - return in_array($status, ['all','draft','paid','unpaid','overdue']); - })->implode(",") ?? ''; + return in_array($status, $this->client_statuses); + })->merge($task_statuses) + ->implode(",") ?? ''; + } $this->replace($input); diff --git a/app/Models/Gateway.php b/app/Models/Gateway.php index 2ad0664ad4e6..4fc95e00b9a1 100644 --- a/app/Models/Gateway.php +++ b/app/Models/Gateway.php @@ -137,7 +137,7 @@ class Gateway extends StaticModel case 56: return [ GatewayType::CREDIT_CARD => ['refund' => true, 'token_billing' => true, 'webhooks' => ['payment_intent.succeeded', 'payment_intent.payment_failed']], - GatewayType::BANK_TRANSFER => ['refund' => true, 'token_billing' => true, 'webhooks' => ['source.chargeable', 'charge.succeeded', 'customer.source.updated','payment_intent.processing', 'payment_intent.payment_failed']], + GatewayType::BANK_TRANSFER => ['refund' => true, 'token_billing' => true, 'webhooks' => ['source.chargeable', 'charge.succeeded', 'customer.source.updated','payment_intent.processing', 'payment_intent.payment_failed', 'charge.failed']], GatewayType::DIRECT_DEBIT => ['refund' => false, 'token_billing' => false, 'webhooks' => ['payment_intent.processing','payment_intent.succeeded','payment_intent.partially_funded', 'payment_intent.payment_failed']], GatewayType::ALIPAY => ['refund' => false, 'token_billing' => false], GatewayType::APPLE_PAY => ['refund' => false, 'token_billing' => false], diff --git a/app/Models/RecurringInvoice.php b/app/Models/RecurringInvoice.php index 0dd433c6be72..c87375b3dcf6 100644 --- a/app/Models/RecurringInvoice.php +++ b/app/Models/RecurringInvoice.php @@ -359,7 +359,7 @@ class RecurringInvoice extends BaseModel return self::STATUS_COMPLETED; elseif ($new_model && $this->status_id == self::STATUS_ACTIVE && Carbon::parse($this->next_send_date)->isFuture()) return self::STATUS_PENDING; - elseif($this->remaining_cycles != 0) + elseif($this->remaining_cycles != 0 && ($this->status_id == self::STATUS_COMPLETED)) return self::STATUS_ACTIVE; return $this->status_id;