mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-10-31 09:27:33 -04:00 
			
		
		
		
	Merge pull request #7440 from turbo124/v5-develop
Fixes for client payment failure emails
This commit is contained in:
		
						commit
						766b10fb85
					
				| @ -46,7 +46,7 @@ TRUSTED_PROXIES= | |||||||
| NINJA_ENVIRONMENT=selfhost | NINJA_ENVIRONMENT=selfhost | ||||||
| 
 | 
 | ||||||
| #options - snappdf / phantom / hosted_ninja | #options - snappdf / phantom / hosted_ninja | ||||||
| PDF_GENERATOR=phantom  | PDF_GENERATOR=hosted_ninja  | ||||||
| 
 | 
 | ||||||
| PHANTOMJS_KEY='a-demo-key-with-low-quota-per-ip-address' | PHANTOMJS_KEY='a-demo-key-with-low-quota-per-ip-address' | ||||||
| PHANTOMJS_SECRET=secret | PHANTOMJS_SECRET=secret | ||||||
|  | |||||||
| @ -29,6 +29,7 @@ class WePayController extends BaseController | |||||||
|      */ |      */ | ||||||
|     public function signup(string $token) |     public function signup(string $token) | ||||||
|     { |     { | ||||||
|  |         return render('gateways.wepay.signup.finished'); | ||||||
| 
 | 
 | ||||||
|         $hash = Cache::get($token); |         $hash = Cache::get($token); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -111,8 +111,9 @@ class PaymentFailedMailer implements ShouldQueue | |||||||
| 
 | 
 | ||||||
|         //add client payment failures here.
 |         //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(); |             $mail_obj = (new ClientPaymentFailureObject($this->client, $this->error, $this->company, $this->payment_hash))->build(); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -245,7 +245,7 @@ class GoCardlessPaymentDriver extends BaseDriver | |||||||
|         sleep(1); |         sleep(1); | ||||||
| 
 | 
 | ||||||
|         foreach ($request->events as $event) { |         foreach ($request->events as $event) { | ||||||
|             if ($event['action'] === 'confirmed') { |             if ($event['action'] === 'confirmed' || $event['action'] === 'paid_out') { | ||||||
| 
 | 
 | ||||||
|                 nlog("Searching for transaction reference"); |                 nlog("Searching for transaction reference"); | ||||||
|                  |                  | ||||||
|  | |||||||
| @ -579,7 +579,7 @@ class StripePaymentDriver extends BaseDriver | |||||||
|                 if(array_key_exists('payment_intent', $transaction)) |                 if(array_key_exists('payment_intent', $transaction)) | ||||||
|                 { |                 { | ||||||
|                     $payment = Payment::query() |                     $payment = Payment::query() | ||||||
|                         ->where('company_id', $request->getCompany()->id) |                         // ->where('company_id', $request->getCompany()->id)
 | ||||||
|                         ->where(function ($query) use ($transaction) { |                         ->where(function ($query) use ($transaction) { | ||||||
|                             $query->where('transaction_reference', $transaction['payment_intent']) |                             $query->where('transaction_reference', $transaction['payment_intent']) | ||||||
|                                   ->orWhere('transaction_reference', $transaction['id']); |                                   ->orWhere('transaction_reference', $transaction['id']); | ||||||
| @ -589,7 +589,7 @@ class StripePaymentDriver extends BaseDriver | |||||||
|                 else |                 else | ||||||
|                 { |                 { | ||||||
|                      $payment = Payment::query() |                      $payment = Payment::query() | ||||||
|                         ->where('company_id', $request->getCompany()->id) |                         // ->where('company_id', $request->getCompany()->id)
 | ||||||
|                         ->where('transaction_reference', $transaction['id']) |                         ->where('transaction_reference', $transaction['id']) | ||||||
|                         ->first(); |                         ->first(); | ||||||
|                 } |                 } | ||||||
|  | |||||||
| @ -51,92 +51,83 @@ class UpdateReminder extends AbstractService | |||||||
| 
 | 
 | ||||||
|         if (is_null($this->invoice->reminder1_sent) && |         if (is_null($this->invoice->reminder1_sent) && | ||||||
|             $this->settings->schedule_reminder1 == 'after_invoice_date' && |             $this->settings->schedule_reminder1 == 'after_invoice_date' && | ||||||
|             $this->settings->enable_reminder1 && |             $this->settings->enable_reminder1) { | ||||||
|             $this->settings->num_days_reminder1 != 0) { |  | ||||||
|             $reminder_date = Carbon::parse($this->invoice->date)->startOfDay()->addDays($this->settings->num_days_reminder1)->addSeconds($offset); |             $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))) |             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) && |         if (is_null($this->invoice->reminder1_sent) && | ||||||
|             $this->settings->schedule_reminder1 == 'before_due_date' && |             $this->settings->schedule_reminder1 == 'before_due_date' && | ||||||
|             $this->settings->enable_reminder1 && |             $this->settings->enable_reminder1) { | ||||||
|             $this->settings->num_days_reminder1 != 0) { |  | ||||||
|             $reminder_date = Carbon::parse($this->invoice->due_date)->startOfDay()->subDays($this->settings->num_days_reminder1)->addSeconds($offset); |             $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))) |             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) && |         if (is_null($this->invoice->reminder1_sent) && | ||||||
|             $this->settings->schedule_reminder1 == 'after_due_date' && |             $this->settings->schedule_reminder1 == 'after_due_date' && | ||||||
|             $this->settings->enable_reminder1 && |             $this->settings->enable_reminder1) { | ||||||
|             $this->settings->num_days_reminder1 != 0) { |  | ||||||
|             $reminder_date = Carbon::parse($this->invoice->due_date)->startOfDay()->addDays($this->settings->num_days_reminder1)->addSeconds($offset); |             $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))) |             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) && |         if (is_null($this->invoice->reminder2_sent) && | ||||||
|             $this->settings->schedule_reminder2 == 'after_invoice_date' && |             $this->settings->schedule_reminder2 == 'after_invoice_date' && | ||||||
|             $this->settings->enable_reminder2 && |             $this->settings->enable_reminder2) { | ||||||
|             $this->settings->num_days_reminder2 != 0) { |  | ||||||
|             $reminder_date = Carbon::parse($this->invoice->date)->startOfDay()->addDays($this->settings->num_days_reminder2)->addSeconds($offset); |             $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))) |             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) && |         if (is_null($this->invoice->reminder2_sent) && | ||||||
|             $this->settings->schedule_reminder2 == 'before_due_date' && |             $this->settings->schedule_reminder2 == 'before_due_date' && | ||||||
|             $this->settings->enable_reminder2 && |             $this->settings->enable_reminder2) { | ||||||
|             $this->settings->num_days_reminder2 != 0) { |  | ||||||
|             $reminder_date = Carbon::parse($this->invoice->due_date)->startOfDay()->subDays($this->settings->num_days_reminder2)->addSeconds($offset); |             $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))) |             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) && |         if (is_null($this->invoice->reminder2_sent) && | ||||||
|             $this->settings->schedule_reminder2 == 'after_due_date' && |             $this->settings->schedule_reminder2 == 'after_due_date' && | ||||||
|             $this->settings->enable_reminder2 && |             $this->settings->enable_reminder2) { | ||||||
|             $this->settings->num_days_reminder2 != 0) { |  | ||||||
|             $reminder_date = Carbon::parse($this->invoice->due_date)->startOfDay()->addDays($this->settings->num_days_reminder2)->addSeconds($offset); |             $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))) |             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) && |         if (is_null($this->invoice->reminder3_sent) && | ||||||
|             $this->settings->schedule_reminder3 == 'after_invoice_date' && |             $this->settings->schedule_reminder3 == 'after_invoice_date' && | ||||||
|             $this->settings->enable_reminder3 && |             $this->settings->enable_reminder3) { | ||||||
|             $this->settings->num_days_reminder3 != 0) { |  | ||||||
|             $reminder_date = Carbon::parse($this->invoice->date)->startOfDay()->addDays($this->settings->num_days_reminder3)->addSeconds($offset); |             $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))) |             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) && |         if (is_null($this->invoice->reminder3_sent) && | ||||||
|             $this->settings->schedule_reminder3 == 'before_due_date' && |             $this->settings->schedule_reminder3 == 'before_due_date' && | ||||||
|             $this->settings->enable_reminder3 && |             $this->settings->enable_reminder3) { | ||||||
|             $this->settings->num_days_reminder3 != 0) { |  | ||||||
|             $reminder_date = Carbon::parse($this->invoice->due_date)->startOfDay()->subDays($this->settings->num_days_reminder3)->addSeconds($offset); |             $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))) |             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) && |         if (is_null($this->invoice->reminder3_sent) && | ||||||
|             $this->settings->schedule_reminder3 == 'after_due_date' && |             $this->settings->schedule_reminder3 == 'after_due_date' && | ||||||
|             $this->settings->enable_reminder3 && |             $this->settings->enable_reminder3) { | ||||||
|             $this->settings->num_days_reminder3 != 0) { |  | ||||||
|             $reminder_date = Carbon::parse($this->invoice->due_date)->startOfDay()->addDays($this->settings->num_days_reminder3)->addSeconds($offset); |             $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))) |             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 && |         if ($this->invoice->last_sent_date && | ||||||
| @ -149,7 +140,7 @@ class UpdateReminder extends AbstractService | |||||||
|                 $reminder_date->addSeconds($offset); |                 $reminder_date->addSeconds($offset); | ||||||
| 
 | 
 | ||||||
|                 if ($reminder_date->gt(Carbon::parse($this->invoice->next_send_date))) |                 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); | ||||||
| 
 | 
 | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -32,7 +32,11 @@ trait UserNotifies | |||||||
|         $notifiable_methods = []; |         $notifiable_methods = []; | ||||||
|         $notifications = $company_user->notifications; |         $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 []; |             return []; | ||||||
|         } |         } | ||||||
|          |          | ||||||
| @ -56,7 +60,11 @@ trait UserNotifies | |||||||
|         $notifiable_methods = []; |         $notifiable_methods = []; | ||||||
|         $notifications = $company_user->notifications; |         $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 []; |             return []; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| @ -125,7 +133,10 @@ trait UserNotifies | |||||||
|     public function findCompanyUserNotificationType($company_user, $required_permissions) :array |     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 []; |             return []; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user