diff --git a/app/DataMapper/CompanySettings.php b/app/DataMapper/CompanySettings.php
index eff17eebade1..befa5cb8331f 100644
--- a/app/DataMapper/CompanySettings.php
+++ b/app/DataMapper/CompanySettings.php
@@ -151,7 +151,6 @@ class CompanySettings extends BaseSettings
public $require_invoice_signature = false;
public $require_quote_signature = false;
-
/* Company Meta data that we can use to build sub companies*/
public $name;
diff --git a/app/Models/Client.php b/app/Models/Client.php
index abb4159e05f5..44732f2fffa5 100644
--- a/app/Models/Client.php
+++ b/app/Models/Client.php
@@ -230,7 +230,7 @@ class Client extends BaseModel
return $this->company->settings->{$setting};
}
-
+
throw new \Exception("Settings corrupted", 1);
diff --git a/app/Models/Presenters/ClientPresenter.php b/app/Models/Presenters/ClientPresenter.php
index f11ebe7ef4cb..7cb4b62bc320 100644
--- a/app/Models/Presenters/ClientPresenter.php
+++ b/app/Models/Presenters/ClientPresenter.php
@@ -11,6 +11,8 @@
namespace App\Models\Presenters;
+use App\Models\Country;
+
/**
* Class ClientPresenter
* @package App\Models\Presenters
@@ -94,4 +96,62 @@ class ClientPresenter extends EntityPresenter
{
return $this->entity->website ?: '';
}
+
+ /**
+ * Calculated company data fields
+ * using settings
+ */
+ public function company_name()
+ {
+
+ $settings = $this->entity->getMergedSettings();
+
+ return $settings->name ?: ctrans('texts.untitled_account');
+ }
+
+ public function company_address()
+ {
+
+ $settings = $this->entity->getMergedSettings();
+
+ $str = '';
+
+ if ($settings->address1) {
+ $str .= e($settings->address1) . '
';
+ }
+ if ($settings->address2) {
+ $str .= e($settings->address2) . '
';
+ }
+ if ($cityState = $this->getCityState()) {
+ $str .= e($cityState) . '
';
+ }
+ if ($country = Country::find($settings->country_id)) {
+ $str .= e($country->name) . '
';
+ }
+
+ return $str;
+
+ }
+
+ public function getCityState()
+ {
+ $settings = $this->entity->getMergedSettings();
+
+ $country = false;
+
+ if($settings->country_id)
+ $country = Country::find($settings->country_id);
+
+ $swap = $country && $country->swap_postal_code;
+
+ $city = e($settings->city ?: '');
+ $state = e($settings->state ?: '');
+ $postalCode = e($settings->postal_code ?: '');
+
+ if ($city || $state || $postalCode) {
+ return $this->cityStateZip($city, $state, $postalCode, $swap);
+ } else {
+ return false;
+ }
+ }
}
diff --git a/app/Models/Presenters/CompanyPresenter.php b/app/Models/Presenters/CompanyPresenter.php
index c4daa75d9462..dc5dcbbfb379 100644
--- a/app/Models/Presenters/CompanyPresenter.php
+++ b/app/Models/Presenters/CompanyPresenter.php
@@ -28,7 +28,7 @@ class CompanyPresenter extends EntityPresenter
public function logo()
{
- return strlen($this->entity->logo > 0) ? $this->entity->logo : 'https://www.invoiceninja.com/wp-content/uploads/2019/01/InvoiceNinja-Logo-Round-300x300.png';
+ return strlen($this->entity->getLogo() > 0) ? $this->entity->getLogo() : 'https://www.invoiceninja.com/wp-content/uploads/2019/01/InvoiceNinja-Logo-Round-300x300.png';
}
public function address()
diff --git a/tests/Feature/ClientPresenterTest.php b/tests/Feature/ClientPresenterTest.php
new file mode 100644
index 000000000000..2e44f2160fee
--- /dev/null
+++ b/tests/Feature/ClientPresenterTest.php
@@ -0,0 +1,53 @@
+makeTestData();
+
+ }
+
+ public function testCompanyName()
+ {
+
+ $settings = $this->client->company->settings;
+
+ $settings->name = 'test';
+ $this->client->company->settings = $settings;
+ $this->client->company->save();
+
+ $this->client->getSetting('name');
+
+ $merged_settings = $this->client->getMergedSettings();
+
+ $name = $this->client->present()->company_name();
+
+ $this->assertEquals('test', $merged_settings->name);
+ $this->assertEquals('test', $name);
+ }
+
+ public function testCompanyAddress()
+ {
+ $this->assertNotNull($this->client->present()->company_address());
+ }
+
+}
\ No newline at end of file