'bool', 'reminder_send_time' => 'int', 'email_sending_method' => 'string', 'gmail_sending_user_id' => 'string', 'currency_id' => 'string', 'counter_number_applied' => 'string', 'quote_number_applied' => 'string', 'email_subject_custom1' => 'string', 'email_subject_custom2' => 'string', 'email_subject_custom3' => 'string', 'email_template_custom1' => 'string', 'email_template_custom2' => 'string', 'email_template_custom3' => 'string', 'enable_reminder1' => 'bool', 'enable_reminder2' => 'bool', 'enable_reminder3' => 'bool', 'num_days_reminder1' => 'int', 'num_days_reminder2' => 'int', 'num_days_reminder3' => 'int', 'schedule_reminder1' => 'string', // (enum: after_invoice_date, before_due_date, after_due_date) 'schedule_reminder2' => 'string', // (enum: after_invoice_date, before_due_date, after_due_date) 'schedule_reminder3' => 'string', // (enum: after_invoice_date, before_due_date, after_due_date) 'late_fee_amount1' => 'float', 'late_fee_amount2' => 'float', 'late_fee_amount3' => 'float', 'endless_reminder_frequency_id' => 'integer', 'client_online_payment_notification' => 'bool', 'client_manual_payment_notification' => 'bool', 'document_email_attachment' => 'bool', 'enable_client_portal_password' => 'bool', 'enable_email_markup' => 'bool', 'enable_client_portal_dashboard' => 'bool', 'enable_client_portal' => 'bool', 'email_template_statement' => 'string', 'email_subject_statement' => 'string', 'signature_on_pdf' => 'bool', 'send_portal_password' => 'bool', 'quote_footer' => 'string', 'page_size' => 'string', 'font_size' => 'int', 'primary_font' => 'string', 'secondary_font' => 'string', 'hide_paid_to_date' => 'bool', 'embed_documents' => 'bool', 'all_pages_header' => 'bool', 'all_pages_footer' => 'bool', 'task_number_pattern' => 'string', 'task_number_counter' => 'int', 'expense_number_pattern' => 'string', 'expense_number_counter' => 'int', 'vendor_number_pattern' => 'string', 'vendor_number_counter' => 'int', 'ticket_number_pattern' => 'string', 'ticket_number_counter' => 'int', 'payment_number_pattern' => 'string', 'payment_number_counter' => 'int', 'reply_to_email' => 'string', 'bcc_email' => 'string', 'pdf_email_attachment' => 'bool', 'ubl_email_attachment' => 'bool', 'email_style' => 'string', 'email_style_custom' => 'string', 'company_gateway_ids' => 'string', 'address1' => 'string', 'address2' => 'string', 'city' => 'string', 'company_logo' => 'string', 'country_id' => 'string', 'client_number_pattern' => 'string', 'client_number_counter' => 'integer', 'credit_number_pattern' => 'string', 'credit_number_counter' => 'integer', 'currency_id' => 'string', 'custom_value1' => 'string', 'custom_value2' => 'string', 'custom_value3' => 'string', 'custom_value4' => 'string', 'custom_message_dashboard' => 'string', 'custom_message_unpaid_invoice' => 'string', 'custom_message_paid_invoice' => 'string', 'custom_message_unapproved_quote' => 'string', 'default_task_rate' => 'float', 'email_signature' => 'string', 'email_subject_invoice' => 'string', 'email_subject_quote' => 'string', 'email_subject_payment' => 'string', 'email_template_invoice' => 'string', 'email_template_quote' => 'string', 'email_template_payment' => 'string', 'email_subject_reminder1' => 'string', 'email_subject_reminder2' => 'string', 'email_subject_reminder3' => 'string', 'email_subject_reminder_endless' => 'string', 'email_template_reminder1' => 'string', 'email_template_reminder2' => 'string', 'email_template_reminder3' => 'string', 'email_template_reminder_endless' => 'string', 'enable_client_portal_password' => 'bool', 'inclusive_taxes' => 'bool', 'invoice_number_pattern' => 'string', 'invoice_number_counter' => 'integer', 'invoice_design_id' => 'string', 'invoice_fields' => 'string', 'invoice_taxes' => 'int', 'enabled_item_tax_rates' => 'int', 'invoice_footer' => 'string', 'invoice_labels' => 'string', 'invoice_terms' => 'string', 'name' => 'string', 'payment_terms' => 'integer', 'payment_type_id' => 'string', 'phone' => 'string', 'postal_code' => 'string', 'quote_design_id' => 'string', 'quote_number_pattern' => 'string', 'quote_number_counter' => 'integer', 'quote_terms' => 'string', 'recurring_number_prefix' => 'string', 'reset_counter_frequency_id' => 'integer', 'reset_counter_date' => 'string', 'require_invoice_signature' => 'bool', 'require_quote_signature' => 'bool', 'state' => 'string', 'email' => 'string', 'vat_number' => 'string', 'id_number' => 'string', 'tax_name1' => 'string', 'tax_name2' => 'string', 'tax_name3' => 'string', 'tax_rate1' => 'float', 'tax_rate2' => 'float', 'tax_rate3' => 'float', 'show_accept_quote_terms' => 'bool', 'show_accept_invoice_terms' => 'bool', 'timezone_id' => 'string', 'date_format_id' => 'string', 'military_time' => 'bool', 'language_id' => 'string', 'show_currency_code' => 'bool', 'send_reminders' => 'bool', 'enable_client_portal_tasks' => 'bool', 'lock_sent_invoices' => 'bool', 'auto_archive_invoice' => 'bool', 'auto_archive_quote' => 'bool', 'auto_convert_quote' => 'bool', 'shared_invoice_quote_counter' => 'bool', 'counter_padding' => 'integer', 'design' => 'string', 'website' => 'string', ]; /** * Array of variables which * cannot be modified client side */ public static $protected_fields = [ // 'credit_number_counter', // 'invoice_number_counter', // 'quote_number_counter', ]; /** * Cast object values and return entire class * prevents missing properties from not being returned * and always ensure an up to date class is returned * * @return \stdClass */ public function __construct($obj) { // parent::__construct($obj); } /** * Provides class defaults on init * @return object */ public static function defaults() : \stdClass { $config = json_decode(config('ninja.settings')); $data = (object)get_class_vars(CompanySettings::class); unset($data->casts); unset($data->protected_fields); $data->timezone_id = (string)config('ninja.i18n.timezone_id'); $data->currency_id = (string)config('ninja.i18n.currency_id'); $data->language_id = (string)config('ninja.i18n.language_id'); $data->payment_terms = (int)config('ninja.i18n.payment_terms'); $data->military_time = (bool)config('ninja.i18n.military_time'); $data->date_format_id = (string)config('ninja.i18n.date_format_id'); $data->country_id = (string)config('ninja.i18n.country_id'); $data->translations = (object) []; // $data->email_subject_invoice = EmailTemplateDefaults::emailInvoiceSubject(); // $data->email_template_invoice = EmailTemplateDefaults:: emailInvoiceTemplate(); // $data->email_subject_quote = EmailTemplateDefaults::emailQuoteSubject(); // $data->email_subject_payment = EmailTemplateDefaults::emailPaymentSubject(); // $data->email_subject_statement = EmailTemplateDefaults::emailStatementSubject(); // $data->email_template_quote = EmailTemplateDefaults::emailQuoteTemplate(); // $data->email_template_payment = EmailTemplateDefaults::emailPaymentTemplate(); // $data->email_template_statement = EmailTemplateDefaults::emailStatementTemplate(); // $data->email_subject_reminder1 = EmailTemplateDefaults::emailReminder1Subject(); // $data->email_subject_reminder2 = EmailTemplateDefaults::emailReminder2Subject(); // $data->email_subject_reminder3 = EmailTemplateDefaults::emailReminder3Subject(); // $data->email_subject_reminder_endless = EmailTemplateDefaults::emailReminderEndlessSubject(); // $data->email_template_reminder1 = EmailTemplateDefaults::emailReminder1Template(); // $data->email_template_reminder2 = EmailTemplateDefaults::emailReminder2Template(); // $data->email_template_reminder3 = EmailTemplateDefaults::emailReminder3Template(); // $data->email_template_reminder_endless = EmailTemplateDefaults::emailReminderEndlessTemplate(); return self::setCasts($data, self::$casts); } /** * In case we update the settings object in the future we * need to provide a fallback catch on old settings objects which will * set new properties to the object prior to being returned. * * @param object $data The settings object to be checked */ public static function setProperties($settings) :\stdClass { $company_settings = (object)get_class_vars(CompanySettings::class); foreach ($company_settings as $key => $value) { if (!property_exists($settings, $key)) { $settings->{$key} = self::castAttribute($key, $company_settings->{$key}); } } return $settings; } }