diff --git a/.env.example b/.env.example index 95ce31237f59..de742ede3b66 100644 --- a/.env.example +++ b/.env.example @@ -46,7 +46,7 @@ TRUSTED_PROXIES= NINJA_ENVIRONMENT=selfhost #options - snappdf / phantom / hosted_ninja -PDF_GENERATOR=phantom +PDF_GENERATOR=hosted_ninja PHANTOMJS_KEY='a-demo-key-with-low-quota-per-ip-address' PHANTOMJS_SECRET=secret diff --git a/app/Http/Controllers/WePayController.php b/app/Http/Controllers/WePayController.php index e134446fa9c4..feed2504488b 100644 --- a/app/Http/Controllers/WePayController.php +++ b/app/Http/Controllers/WePayController.php @@ -29,6 +29,7 @@ class WePayController extends BaseController */ public function signup(string $token) { + return render('gateways.wepay.signup.finished'); $hash = Cache::get($token); diff --git a/app/Jobs/Mail/PaymentFailedMailer.php b/app/Jobs/Mail/PaymentFailedMailer.php index 3580e38bbff8..77f7585bdac1 100644 --- a/app/Jobs/Mail/PaymentFailedMailer.php +++ b/app/Jobs/Mail/PaymentFailedMailer.php @@ -111,9 +111,10 @@ class PaymentFailedMailer implements ShouldQueue //add client payment failures here. // - if($contact = $this->client->contacts()->first() && $this->payment_hash) + if($this->client->contacts()->whereNotNull('email')->exists() && $this->payment_hash) { - + $contact = $this->client->contacts()->whereNotNull('email')->first(); + $mail_obj = (new ClientPaymentFailureObject($this->client, $this->error, $this->company, $this->payment_hash))->build(); $nmo = new NinjaMailerObject; diff --git a/app/PaymentDrivers/GoCardlessPaymentDriver.php b/app/PaymentDrivers/GoCardlessPaymentDriver.php index 6a774fe1999d..e46d419c9fca 100644 --- a/app/PaymentDrivers/GoCardlessPaymentDriver.php +++ b/app/PaymentDrivers/GoCardlessPaymentDriver.php @@ -245,7 +245,7 @@ class GoCardlessPaymentDriver extends BaseDriver sleep(1); foreach ($request->events as $event) { - if ($event['action'] === 'confirmed') { + if ($event['action'] === 'confirmed' || $event['action'] === 'paid_out') { nlog("Searching for transaction reference"); diff --git a/app/PaymentDrivers/StripePaymentDriver.php b/app/PaymentDrivers/StripePaymentDriver.php index c71f81655bc7..cf47f1bd8e0b 100644 --- a/app/PaymentDrivers/StripePaymentDriver.php +++ b/app/PaymentDrivers/StripePaymentDriver.php @@ -579,7 +579,7 @@ class StripePaymentDriver extends BaseDriver if(array_key_exists('payment_intent', $transaction)) { $payment = Payment::query() - ->where('company_id', $request->getCompany()->id) + // ->where('company_id', $request->getCompany()->id) ->where(function ($query) use ($transaction) { $query->where('transaction_reference', $transaction['payment_intent']) ->orWhere('transaction_reference', $transaction['id']); @@ -589,7 +589,7 @@ class StripePaymentDriver extends BaseDriver else { $payment = Payment::query() - ->where('company_id', $request->getCompany()->id) + // ->where('company_id', $request->getCompany()->id) ->where('transaction_reference', $transaction['id']) ->first(); } diff --git a/app/Services/Invoice/UpdateReminder.php b/app/Services/Invoice/UpdateReminder.php index 0b3aefea7cf7..f27e7abe512d 100644 --- a/app/Services/Invoice/UpdateReminder.php +++ b/app/Services/Invoice/UpdateReminder.php @@ -51,92 +51,83 @@ class UpdateReminder extends AbstractService if (is_null($this->invoice->reminder1_sent) && $this->settings->schedule_reminder1 == 'after_invoice_date' && - $this->settings->enable_reminder1 && - $this->settings->num_days_reminder1 != 0) { + $this->settings->enable_reminder1) { $reminder_date = Carbon::parse($this->invoice->date)->startOfDay()->addDays($this->settings->num_days_reminder1)->addSeconds($offset); if ($reminder_date->gt(Carbon::parse($this->invoice->next_send_date))) - $date_collection->push($reminder_date); nlog("settings reminder 1 after due date"); + $date_collection->push($reminder_date); } if (is_null($this->invoice->reminder1_sent) && $this->settings->schedule_reminder1 == 'before_due_date' && - $this->settings->enable_reminder1 && - $this->settings->num_days_reminder1 != 0) { + $this->settings->enable_reminder1) { $reminder_date = Carbon::parse($this->invoice->due_date)->startOfDay()->subDays($this->settings->num_days_reminder1)->addSeconds($offset); if ($reminder_date->gt(Carbon::parse($this->invoice->next_send_date))) - $date_collection->push($reminder_date); nlog("settings reminder 1 before_due_date"); + $date_collection->push($reminder_date); } if (is_null($this->invoice->reminder1_sent) && $this->settings->schedule_reminder1 == 'after_due_date' && - $this->settings->enable_reminder1 && - $this->settings->num_days_reminder1 != 0) { + $this->settings->enable_reminder1) { $reminder_date = Carbon::parse($this->invoice->due_date)->startOfDay()->addDays($this->settings->num_days_reminder1)->addSeconds($offset); if ($reminder_date->gt(Carbon::parse($this->invoice->next_send_date))) - $date_collection->push($reminder_date); nlog("settings reminder 1 after_due_date"); + $date_collection->push($reminder_date); } if (is_null($this->invoice->reminder2_sent) && $this->settings->schedule_reminder2 == 'after_invoice_date' && - $this->settings->enable_reminder2 && - $this->settings->num_days_reminder2 != 0) { + $this->settings->enable_reminder2) { $reminder_date = Carbon::parse($this->invoice->date)->startOfDay()->addDays($this->settings->num_days_reminder2)->addSeconds($offset); if ($reminder_date->gt(Carbon::parse($this->invoice->next_send_date))) - $date_collection->push($reminder_date); nlog("settings reminder 2 after_invoice_date = ".$reminder_date->format('Y-m-d')); + $date_collection->push($reminder_date); } if (is_null($this->invoice->reminder2_sent) && $this->settings->schedule_reminder2 == 'before_due_date' && - $this->settings->enable_reminder2 && - $this->settings->num_days_reminder2 != 0) { + $this->settings->enable_reminder2) { $reminder_date = Carbon::parse($this->invoice->due_date)->startOfDay()->subDays($this->settings->num_days_reminder2)->addSeconds($offset); if ($reminder_date->gt(Carbon::parse($this->invoice->next_send_date))) - $date_collection->push($reminder_date); nlog("settings reminder 2 before_due_date"); + $date_collection->push($reminder_date); } if (is_null($this->invoice->reminder2_sent) && $this->settings->schedule_reminder2 == 'after_due_date' && - $this->settings->enable_reminder2 && - $this->settings->num_days_reminder2 != 0) { + $this->settings->enable_reminder2) { $reminder_date = Carbon::parse($this->invoice->due_date)->startOfDay()->addDays($this->settings->num_days_reminder2)->addSeconds($offset); if ($reminder_date->gt(Carbon::parse($this->invoice->next_send_date))) - $date_collection->push($reminder_date); nlog("settings reminder 2 after_due_date"); + $date_collection->push($reminder_date); } if (is_null($this->invoice->reminder3_sent) && $this->settings->schedule_reminder3 == 'after_invoice_date' && - $this->settings->enable_reminder3 && - $this->settings->num_days_reminder3 != 0) { + $this->settings->enable_reminder3) { $reminder_date = Carbon::parse($this->invoice->date)->startOfDay()->addDays($this->settings->num_days_reminder3)->addSeconds($offset); if ($reminder_date->gt(Carbon::parse($this->invoice->next_send_date))) - $date_collection->push($reminder_date); nlog("settings reminder 3 after_invoice_date"); + $date_collection->push($reminder_date); } if (is_null($this->invoice->reminder3_sent) && $this->settings->schedule_reminder3 == 'before_due_date' && - $this->settings->enable_reminder3 && - $this->settings->num_days_reminder3 != 0) { + $this->settings->enable_reminder3) { $reminder_date = Carbon::parse($this->invoice->due_date)->startOfDay()->subDays($this->settings->num_days_reminder3)->addSeconds($offset); if ($reminder_date->gt(Carbon::parse($this->invoice->next_send_date))) - $date_collection->push($reminder_date); nlog("settings reminder 3 before_due_date"); + $date_collection->push($reminder_date); } if (is_null($this->invoice->reminder3_sent) && $this->settings->schedule_reminder3 == 'after_due_date' && - $this->settings->enable_reminder3 && - $this->settings->num_days_reminder3 != 0) { + $this->settings->enable_reminder3) { $reminder_date = Carbon::parse($this->invoice->due_date)->startOfDay()->addDays($this->settings->num_days_reminder3)->addSeconds($offset); if ($reminder_date->gt(Carbon::parse($this->invoice->next_send_date))) - $date_collection->push($reminder_date); nlog("settings reminder 3 after_due_date"); + $date_collection->push($reminder_date); } if ($this->invoice->last_sent_date && @@ -149,7 +140,7 @@ class UpdateReminder extends AbstractService $reminder_date->addSeconds($offset); if ($reminder_date->gt(Carbon::parse($this->invoice->next_send_date))) - $date_collection->push($reminder_date); nlog("settings endless reminder"); + $date_collection->push($reminder_date); } diff --git a/app/Utils/Traits/Notifications/UserNotifies.php b/app/Utils/Traits/Notifications/UserNotifies.php index b6139708d200..3356a1b9f0f5 100644 --- a/app/Utils/Traits/Notifications/UserNotifies.php +++ b/app/Utils/Traits/Notifications/UserNotifies.php @@ -32,7 +32,11 @@ trait UserNotifies $notifiable_methods = []; $notifications = $company_user->notifications; - if ($invitation->company->is_disabled && is_array($notifications->email) || $company_user->trashed() || $company_user->user->trashed()) { + if ($invitation->company->is_disabled && + is_array($notifications->email) || + $company_user->trashed() || + !$company_user->user || + $company_user->user->trashed()) { return []; } @@ -56,7 +60,11 @@ trait UserNotifies $notifiable_methods = []; $notifications = $company_user->notifications; - if ($entity->company->is_disabled || ! $notifications || $company_user->trashed() || $company_user->user->trashed()) { + if ($entity->company->is_disabled || + ! $notifications || + $company_user->trashed() || + ! $company_user->user || + $company_user->user->trashed()) { return []; } @@ -125,7 +133,10 @@ trait UserNotifies public function findCompanyUserNotificationType($company_user, $required_permissions) :array { - if ($company_user->company->is_disabled || $company_user->trashed() || $company_user->user->trashed()) { + if ($company_user->company->is_disabled || + $company_user->trashed() || + !$company_user->user || + $company_user->user->trashed()) { return []; }