diff --git a/app/Models/Client.php b/app/Models/Client.php index 48ce8d6c8c84..2d6a0d915d4e 100644 --- a/app/Models/Client.php +++ b/app/Models/Client.php @@ -22,6 +22,7 @@ use App\Models\Quote; use App\Models\Task; use App\Services\Client\ClientService; use App\Utils\Traits\AppSetup; +use App\Utils\Traits\ClientGroupSettingsSaver; use App\Utils\Traits\GeneratesCounter; use App\Utils\Traits\MakesDates; use App\Utils\Traits\MakesHash; @@ -40,6 +41,7 @@ class Client extends BaseModel implements HasLocalePreference use Filterable; use GeneratesCounter; use AppSetup; + use ClientGroupSettingsSaver; protected $presenter = ClientPresenter::class; diff --git a/app/Repositories/ClientRepository.php b/app/Repositories/ClientRepository.php index 8aec2c5604bf..a48a8bec49e7 100644 --- a/app/Repositories/ClientRepository.php +++ b/app/Repositories/ClientRepository.php @@ -14,6 +14,7 @@ namespace App\Repositories; use App\Factory\ClientFactory; use App\Models\Client; use App\Models\Company; +use App\Utils\Traits\ClientGroupSettingsSaver; use App\Utils\Traits\GeneratesCounter; use App\Utils\Traits\SavesDocuments; @@ -61,10 +62,14 @@ class ClientRepository extends BaseRepository $client->fill($data); + + if (array_key_exists('settings', $data)) { + $client->saveSettings($data['settings'], $client); + } + if(!$client->country_id){ $company = Company::find($client->company_id); $client->country_id = $company->settings->country_id; - } $client->save(); diff --git a/app/Utils/Traits/ClientGroupSettingsSaver.php b/app/Utils/Traits/ClientGroupSettingsSaver.php index 2172469f19e2..a7dabe4f2076 100644 --- a/app/Utils/Traits/ClientGroupSettingsSaver.php +++ b/app/Utils/Traits/ClientGroupSettingsSaver.php @@ -104,6 +104,11 @@ trait ClientGroupSettingsSaver } foreach ($casts as $key => $value) { + + if($value == 'float' && property_exists($settings, $key)){ + $settings->{$key} = floatval($settings->{$key}); + } + if (in_array($key, CompanySettings::$string_casts)) { $value = 'string'; @@ -160,6 +165,10 @@ trait ClientGroupSettingsSaver foreach ($casts as $key => $value) { + if($value == 'float' && property_exists($settings, $key)){ + $settings->{$key} = floatval($settings->{$key}); + } + /*Separate loop if it is a _id field which is an integer cast as a string*/ if (substr($key, -3) == '_id' || substr($key, -14) == 'number_counter') { $value = 'integer';