mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-06-04 04:14:37 -04:00
Working on from, replyTo and bcc emails
This commit is contained in:
parent
42c1f8fe5f
commit
7af791a4c4
@ -175,7 +175,7 @@ class CompanySettings extends BaseSettings
|
|||||||
public $email_template_reminder3 = ''; //@implemented
|
public $email_template_reminder3 = ''; //@implemented
|
||||||
public $email_template_reminder_endless = ''; //@implemented
|
public $email_template_reminder_endless = ''; //@implemented
|
||||||
public $email_signature = ''; //@implemented
|
public $email_signature = ''; //@implemented
|
||||||
public $enable_email_markup = true; //@TODO
|
public $enable_email_markup = true; //@TODO -
|
||||||
|
|
||||||
public $email_subject_custom1 = ''; //@TODO
|
public $email_subject_custom1 = ''; //@TODO
|
||||||
public $email_subject_custom2 = ''; //@TODO
|
public $email_subject_custom2 = ''; //@TODO
|
||||||
@ -185,35 +185,35 @@ class CompanySettings extends BaseSettings
|
|||||||
public $email_template_custom2 = ''; //@TODO
|
public $email_template_custom2 = ''; //@TODO
|
||||||
public $email_template_custom3 = ''; //@TODO
|
public $email_template_custom3 = ''; //@TODO
|
||||||
|
|
||||||
public $enable_reminder1 = false; //@partially implmemented
|
public $enable_reminder1 = false; //@implmemented
|
||||||
public $enable_reminder2 = false; //@partially implmemented
|
public $enable_reminder2 = false; //@implmemented
|
||||||
public $enable_reminder3 = false; //@partially implmemented
|
public $enable_reminder3 = false; //@implmemented
|
||||||
public $enable_reminder_endless = false; //@partially implmemented
|
public $enable_reminder_endless = false; //@implmemented
|
||||||
|
|
||||||
public $num_days_reminder1 = 0;//@partially implmemented
|
public $num_days_reminder1 = 0;//@implmemented
|
||||||
public $num_days_reminder2 = 0;//@partially implmemented
|
public $num_days_reminder2 = 0;//@implmemented
|
||||||
public $num_days_reminder3 = 0;//@partially implmemented
|
public $num_days_reminder3 = 0;//@implmemented
|
||||||
|
|
||||||
public $schedule_reminder1 = ''; // (enum: after_invoice_date, before_due_date, after_due_date)
|
public $schedule_reminder1 = ''; // (enum: after_invoice_date, before_due_date, after_due_date) implmemented
|
||||||
public $schedule_reminder2 = ''; // (enum: after_invoice_date, before_due_date, after_due_date)
|
public $schedule_reminder2 = ''; // (enum: after_invoice_date, before_due_date, after_due_date) implmemented
|
||||||
public $schedule_reminder3 = ''; // (enum: after_invoice_date, before_due_date, after_due_date)
|
public $schedule_reminder3 = ''; // (enum: after_invoice_date, before_due_date, after_due_date) implmemented
|
||||||
|
|
||||||
public $reminder_send_time = 32400; //number of seconds from UTC +0 to send reminders
|
public $reminder_send_time = 32400; //number of seconds from UTC +0 to send reminders @TODO
|
||||||
|
|
||||||
public $late_fee_amount1 = 0; //@TODO
|
public $late_fee_amount1 = 0; //@implemented
|
||||||
public $late_fee_amount2 = 0; //@TODO
|
public $late_fee_amount2 = 0; //@implemented
|
||||||
public $late_fee_amount3 = 0; //@TODO
|
public $late_fee_amount3 = 0; //@implemented
|
||||||
|
|
||||||
public $late_fee_percent1 = 0; //@TODO
|
public $late_fee_percent1 = 0; //@implemented
|
||||||
public $late_fee_percent2 = 0; //@TODO
|
public $late_fee_percent2 = 0; //@implemented
|
||||||
public $late_fee_percent3 = 0; //@TODO
|
public $late_fee_percent3 = 0; //@implemented
|
||||||
|
|
||||||
public $endless_reminder_frequency_id = '0'; //@implemented
|
public $endless_reminder_frequency_id = '0'; //@implemented
|
||||||
public $late_fee_endless_amount = 0; //@TODO
|
public $late_fee_endless_amount = 0; //@implemented
|
||||||
public $late_fee_endless_percent = 0; //@TODO
|
public $late_fee_endless_percent = 0; //@implemented
|
||||||
|
|
||||||
public $client_online_payment_notification = true; //@todo implement in notifications
|
public $client_online_payment_notification = true; //@todo implement in notifications check this bool prior to sending payment notification to client
|
||||||
public $client_manual_payment_notification = true; //@todo implement in notifications
|
public $client_manual_payment_notification = true; //@todo implement in notifications check this bool prior to sending manual payment notification to client
|
||||||
|
|
||||||
/* Company Meta data that we can use to build sub companies*/
|
/* Company Meta data that we can use to build sub companies*/
|
||||||
|
|
||||||
@ -232,26 +232,26 @@ class CompanySettings extends BaseSettings
|
|||||||
public $id_number = ''; //@implemented
|
public $id_number = ''; //@implemented
|
||||||
|
|
||||||
public $page_size = 'A4'; //Letter, Legal, Tabloid, Ledger, A0, A1, A2, A3, A4, A5, A6
|
public $page_size = 'A4'; //Letter, Legal, Tabloid, Ledger, A0, A1, A2, A3, A4, A5, A6
|
||||||
public $font_size = 9;
|
public $font_size = 9; //@implemented
|
||||||
public $primary_font = 'Roboto';
|
public $primary_font = 'Roboto';
|
||||||
public $secondary_font = 'Roboto';
|
public $secondary_font = 'Roboto';
|
||||||
public $primary_color = '#4caf50';
|
public $primary_color = '#4caf50';
|
||||||
public $secondary_color = '#2196f3';
|
public $secondary_color = '#2196f3';
|
||||||
|
|
||||||
public $hide_paid_to_date = false; //@TODO where?
|
public $hide_paid_to_date = false; //@TODO where?
|
||||||
public $embed_documents = false; //@TODO
|
public $embed_documents = false; //@TODO where?
|
||||||
public $all_pages_header = false; //@implemented
|
public $all_pages_header = false; //@implemented
|
||||||
public $all_pages_footer = false; //@implemented
|
public $all_pages_footer = false; //@implemented
|
||||||
public $pdf_variables = ''; //@implemented
|
public $pdf_variables = ''; //@implemented
|
||||||
|
|
||||||
public $portal_custom_head = ''; //@TODO
|
public $portal_custom_head = ''; //@TODO @BEN
|
||||||
public $portal_custom_css = ''; //@TODO
|
public $portal_custom_css = ''; //@TODO @BEN
|
||||||
public $portal_custom_footer = ''; //@TODO
|
public $portal_custom_footer = ''; //@TODO @BEN
|
||||||
public $portal_custom_js = ''; //@TODO
|
public $portal_custom_js = ''; //@TODO @BEN
|
||||||
|
|
||||||
public $client_can_register = false; //@implemented
|
public $client_can_register = false; //@implemented
|
||||||
public $client_portal_terms = ''; //@TODO
|
public $client_portal_terms = ''; //@TODO @BEN
|
||||||
public $client_portal_privacy_policy = ''; //@TODO
|
public $client_portal_privacy_policy = ''; //@TODO @BEN
|
||||||
public $client_portal_enable_uploads = false; //@implemented
|
public $client_portal_enable_uploads = false; //@implemented
|
||||||
public $client_portal_allow_under_payment = false; //@implemented
|
public $client_portal_allow_under_payment = false; //@implemented
|
||||||
public $client_portal_under_payment_minimum = 0; //@implemented
|
public $client_portal_under_payment_minimum = 0; //@implemented
|
||||||
@ -511,6 +511,7 @@ class CompanySettings extends BaseSettings
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides class defaults on init.
|
* Provides class defaults on init.
|
||||||
|
*
|
||||||
* @return stdClass
|
* @return stdClass
|
||||||
*/
|
*/
|
||||||
public static function defaults(): stdClass
|
public static function defaults(): stdClass
|
||||||
@ -543,6 +544,7 @@ class CompanySettings extends BaseSettings
|
|||||||
* set new properties to the object prior to being returned.
|
* set new properties to the object prior to being returned.
|
||||||
*
|
*
|
||||||
* @param $settings
|
* @param $settings
|
||||||
|
*
|
||||||
* @return stdClass
|
* @return stdClass
|
||||||
*/
|
*/
|
||||||
public static function setProperties($settings): stdClass
|
public static function setProperties($settings): stdClass
|
||||||
@ -558,7 +560,12 @@ class CompanySettings extends BaseSettings
|
|||||||
return $settings;
|
return $settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function notificationDefaults()
|
/**
|
||||||
|
* Stubs the notification defaults
|
||||||
|
*
|
||||||
|
* @return stdClass
|
||||||
|
*/
|
||||||
|
public static function notificationDefaults() :stdClass
|
||||||
{
|
{
|
||||||
$notification = new stdClass;
|
$notification = new stdClass;
|
||||||
$notification->email = ['all_notifications'];
|
$notification->email = ['all_notifications'];
|
||||||
@ -566,7 +573,12 @@ class CompanySettings extends BaseSettings
|
|||||||
return $notification;
|
return $notification;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function getEntityVariableDefaults()
|
/**
|
||||||
|
* Defines entity variables for PDF generation
|
||||||
|
*
|
||||||
|
* @return stdClass The stdClass of PDF variables
|
||||||
|
*/
|
||||||
|
private static function getEntityVariableDefaults() :stdClass
|
||||||
{
|
{
|
||||||
$variables = [
|
$variables = [
|
||||||
'client_details' => [
|
'client_details' => [
|
||||||
|
@ -1,4 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
/**
|
||||||
|
* Invoice Ninja (https://invoiceninja.com).
|
||||||
|
*
|
||||||
|
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
|
||||||
|
*
|
||||||
|
* @license https://opensource.org/licenses/AAL
|
||||||
|
*/
|
||||||
|
|
||||||
namespace App\Jobs\Payment;
|
namespace App\Jobs\Payment;
|
||||||
|
|
||||||
@ -63,7 +72,7 @@ class EmailPayment extends BaseMailerJob implements ShouldQueue
|
|||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function handle()
|
public function handle()
|
||||||
{
|
{info("inside email payment");
|
||||||
if($this->company->is_disabled)
|
if($this->company->is_disabled)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
@ -76,8 +85,8 @@ class EmailPayment extends BaseMailerJob implements ShouldQueue
|
|||||||
|
|
||||||
$email_builder = (new PaymentEmailEngine($this->payment, $this->contact))->build();
|
$email_builder = (new PaymentEmailEngine($this->payment, $this->contact))->build();
|
||||||
|
|
||||||
Mail::to($this->contact->email, $this->contact->present()->name())
|
$mail = Mail::to($this->contact->email, $this->contact->present()->name());
|
||||||
->send(new TemplateEmail($email_builder, $this->contact->user, $this->contact->client));
|
$mail->send(new TemplateEmail($email_builder, $this->contact->user, $this->contact->client));
|
||||||
|
|
||||||
if (count(Mail::failures()) > 0) {
|
if (count(Mail::failures()) > 0) {
|
||||||
event(new PaymentWasEmailedAndFailed($this->payment, Mail::failures(), Ninja::eventVars()));
|
event(new PaymentWasEmailedAndFailed($this->payment, Mail::failures(), Ninja::eventVars()));
|
||||||
|
@ -57,15 +57,6 @@ class PaymentCreatedActivity implements ShouldQueue
|
|||||||
$fields->company_id = $payment->company_id;
|
$fields->company_id = $payment->company_id;
|
||||||
$fields->activity_type_id = Activity::CREATE_PAYMENT;
|
$fields->activity_type_id = Activity::CREATE_PAYMENT;
|
||||||
|
|
||||||
/*todo tests fail for this for some reason?*/
|
|
||||||
// foreach ($invoices as $invoice) { //todo we may need to add additional logic if in the future we apply payments to other entity Types, not just invoices
|
|
||||||
// $fields->invoice_id = $invoice->id;
|
|
||||||
|
|
||||||
// InvoiceWorkflowSettings::dispatchNow($invoice);
|
|
||||||
|
|
||||||
// $this->activity_repo->save($fields, $invoice, $event->event_vars);
|
|
||||||
// }
|
|
||||||
|
|
||||||
if (count($invoices) == 0) {
|
if (count($invoices) == 0) {
|
||||||
$this->activity_repo->save($fields, $payment, $event->event_vars);
|
$this->activity_repo->save($fields, $payment, $event->event_vars);
|
||||||
}
|
}
|
||||||
|
@ -54,8 +54,15 @@ class TemplateEmail extends Mailable
|
|||||||
|
|
||||||
$company = $this->client->company;
|
$company = $this->client->company;
|
||||||
|
|
||||||
$message = $this->from($this->user->email, $this->user->present()->name())//todo this needs to be fixed to handle the hosted version
|
$this->from($this->user->email, $this->user->present()->name());
|
||||||
->subject($this->build_email->getSubject())
|
|
||||||
|
if(strlen($settings->reply_to_email) > 1)
|
||||||
|
$this->replyTo($settings->reply_to_email, $settings->reply_to_email);
|
||||||
|
|
||||||
|
if(strlen($settings->bcc_email) > 1)
|
||||||
|
$this->bcc($settings->bcc_email, $settings->bcc_email);
|
||||||
|
|
||||||
|
$this->subject($this->build_email->getSubject())
|
||||||
->text('email.template.plain', [
|
->text('email.template.plain', [
|
||||||
'body' => $this->build_email->getBody(),
|
'body' => $this->build_email->getBody(),
|
||||||
'footer' => $this->build_email->getFooter(),
|
'footer' => $this->build_email->getFooter(),
|
||||||
@ -78,10 +85,10 @@ class TemplateEmail extends Mailable
|
|||||||
//conditionally attach files
|
//conditionally attach files
|
||||||
if ($settings->pdf_email_attachment !== false && ! empty($this->build_email->getAttachments())) {
|
if ($settings->pdf_email_attachment !== false && ! empty($this->build_email->getAttachments())) {
|
||||||
foreach ($this->build_email->getAttachments() as $file) {
|
foreach ($this->build_email->getAttachments() as $file) {
|
||||||
$message->attach($file);
|
$this->attach($file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $message;
|
return $this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -75,7 +75,8 @@ class MarkPaid extends AbstractService
|
|||||||
->applyNumber()
|
->applyNumber()
|
||||||
->save();
|
->save();
|
||||||
|
|
||||||
EmailPayment::dispatch($payment, $payment->company, $payment->client->primary_contact()->first());
|
if($this->invoice->client->getSetting('client_manual_payment_notification'))
|
||||||
|
EmailPayment::dispatch($payment, $payment->company, $payment->client->primary_contact()->first());
|
||||||
|
|
||||||
/* Update Invoice balance */
|
/* Update Invoice balance */
|
||||||
event(new PaymentWasCreated($payment, $payment->company, Ninja::eventVars()));
|
event(new PaymentWasCreated($payment, $payment->company, Ninja::eventVars()));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user