diff --git a/app/Http/Requests/Client/StoreClientRequest.php b/app/Http/Requests/Client/StoreClientRequest.php index 3f38584817a2..521839e552aa 100644 --- a/app/Http/Requests/Client/StoreClientRequest.php +++ b/app/Http/Requests/Client/StoreClientRequest.php @@ -73,34 +73,40 @@ class StoreClientRequest extends Request $input = $this->all(); //@todo implement feature permissions for > 100 clients - if (!isset($input['settings'])) { - $input['settings'] = ClientSettings::defaults(); - } + // + $settings = ClientSettings::defaults(); - if (isset($input['group_settings_id'])) { - $input['group_settings_id'] = $this->decodePrimaryKey($input['group_settings_id']); - } - - if(empty($input['settings']) || empty($input['settings']->currency_id)) + if(array_key_exists('settings', $input) && !empty($input['settings'])) { - if(!is_object($input['settings'])) - $input['settings'] = ClientSettings::defaults(); - if(empty($input['group_settings_id'])) + foreach($input['settings'] as $key => $value) { - $input['settings']->currency_id =(string) auth()->user()->company()->settings->currency_id; - } - else - { - $group_settings = GroupSetting::find($input['group_settings_id']); - - if($group_settings && property_exists($group_settings->settings, 'currency_id') && is_int($group_settings->settings->currency_id)) - $input['settings']->currency_id = (string)$group_settings->settings->currency_id; - else - $input['settings']->currency_id = (string)auth()->user()->company()->settings->currency_id; + $settings->{$key} = $value; } + } + //is no settings->currency_id is set then lets dive in and find either a group or company currency all the below may be redundant!! + if(!property_exists('currency_id', $input['settings']) && isset($input['group_settings_id'])) + { + + $input['group_settings_id'] = $this->decodePrimaryKey($input['group_settings_id']); + $group_settings = GroupSetting::find($input['group_settings_id']); + + if($group_settings && property_exists($group_settings->settings, 'currency_id') && isset($group_settings->settings->currency_id)) + $settings->currency_id = (string)$group_settings->settings->currency_id; + else + $settings->currency_id = (string)auth()->user()->company()->settings->currency_id; + + } + elseif(!property_exists('currency_id', $input['settings'])) + { + $settings->currency_id = (string)auth()->user()->company()->settings->currency_id; + } + + + $input['settings'] = $settings; + if(isset($input['contacts'])) { foreach($input['contacts'] as $key => $contact) diff --git a/app/Http/Requests/Company/StoreCompanyRequest.php b/app/Http/Requests/Company/StoreCompanyRequest.php index 23298ef4cd2f..6b1e39bdb4b0 100644 --- a/app/Http/Requests/Company/StoreCompanyRequest.php +++ b/app/Http/Requests/Company/StoreCompanyRequest.php @@ -11,6 +11,7 @@ namespace App\Http\Requests\Company; +use App\DataMapper\CompanySettings; use App\Http\Requests\Request; use App\Http\ValidationRules\ValidSettingsRule; use App\Models\ClientContact; @@ -51,12 +52,28 @@ class StoreCompanyRequest extends Request $input = $this->all(); - if(array_key_exists('settings', $input) && property_exists($input['settings'], 'pdf_variables') && empty((array) $input['settings']->pdf_variables)) + $company_settings = CompanySettings::defaults(); + + if(array_key_exists('settings', $input) && !empty($input['settings'])) { - $input['settings']['pdf_variables'] = CompanySettings::getEntityVariableDefaults(); + + foreach($input['settings'] as $key => $value) + { + $company_settings->{$key} = $value; + } + } + + $input['settings'] = $company_settings; +// \Log::error($input); + +// if(array_key_exists('settings', $input) && property_exists($input['settings'], 'pdf_variables') && empty((array) $input['settings']->pdf_variables)) +// { +// $input['settings']['pdf_variables'] = CompanySettings::getEntityVariableDefaults(); +// } +// \Log::error($input); $this->replace($input); } diff --git a/app/Http/Requests/GroupSetting/StoreGroupSettingRequest.php b/app/Http/Requests/GroupSetting/StoreGroupSettingRequest.php index 4c2f9b9b3c00..f8d2a02f247f 100644 --- a/app/Http/Requests/GroupSetting/StoreGroupSettingRequest.php +++ b/app/Http/Requests/GroupSetting/StoreGroupSettingRequest.php @@ -42,8 +42,21 @@ class StoreGroupSettingRequest extends Request { $input = $this->all(); - $input['settings'] = ClientSettings::defaults(); + $group_settings = ClientSettings::defaults(); + if(array_key_exists('settings', $input) && !empty($input['settings'])) + { + + foreach($input['settings'] as $key => $value) + { + $group_settings->{$key} = $value; + } + + } + + $input['settings'] = $group_settings; + + $this->replace($input); } diff --git a/app/Transformers/InvoiceTransformer.php b/app/Transformers/InvoiceTransformer.php index d97d2af0fb10..2ea4b29d7b46 100644 --- a/app/Transformers/InvoiceTransformer.php +++ b/app/Transformers/InvoiceTransformer.php @@ -127,10 +127,10 @@ class InvoiceTransformer extends EntityTransformer 'custom_surcharge2' => (float)$invoice->custom_surcharge2, 'custom_surcharge3' => (float)$invoice->custom_surcharge3, 'custom_surcharge4' => (float)$invoice->custom_surcharge4, - 'custom_surcharge_tax1' => (float) $invoice->custom_surcharge_tax1, - 'custom_surcharge_tax2' => (float) $invoice->custom_surcharge_tax2, - 'custom_surcharge_tax3' => (float) $invoice->custom_surcharge_tax3, - 'custom_surcharge_tax4' => (float) $invoice->custom_surcharge_tax4, + 'custom_surcharge_tax1' => (bool) $invoice->custom_surcharge_tax1, + 'custom_surcharge_tax2' => (bool) $invoice->custom_surcharge_tax2, + 'custom_surcharge_tax3' => (bool) $invoice->custom_surcharge_tax3, + 'custom_surcharge_tax4' => (bool) $invoice->custom_surcharge_tax4, 'line_items' => $invoice->line_items ?: (array)[], 'backup' => $invoice->backup ?: '', 'entity_type' => 'invoice',