diff --git a/app/Jobs/Ninja/SendReminders.php b/app/Jobs/Ninja/SendReminders.php index e2d58a1b8659..ea01af1c2071 100644 --- a/app/Jobs/Ninja/SendReminders.php +++ b/app/Jobs/Ninja/SendReminders.php @@ -295,7 +295,7 @@ class SendReminders implements ShouldQueue $invoice_item = new InvoiceItem; $invoice_item->type_id = '5'; $invoice_item->product_key = trans('texts.fee'); - $invoice_item->notes = ctrans('texts.late_fee_added', ['date' => $this->formatDate(now()->startOfDay(), $invoice->client->date_format())]); + $invoice_item->notes = ctrans('texts.late_fee_added', ['date' => $this->translateDate(now()->startOfDay(), $invoice->client->date_format(), $invoice->client->locale())]); $invoice_item->quantity = 1; $invoice_item->cost = $fee; diff --git a/app/Mail/Engine/PaymentEmailEngine.php b/app/Mail/Engine/PaymentEmailEngine.php index 218a92995551..8e12d7280895 100644 --- a/app/Mail/Engine/PaymentEmailEngine.php +++ b/app/Mail/Engine/PaymentEmailEngine.php @@ -87,7 +87,7 @@ class PaymentEmailEngine extends BaseEmailEngine $data['$entity'] = ['value' => '', 'label' => ctrans('texts.payment')]; $data['$payment.amount'] = ['value' => Number::formatMoney($this->payment->amount, $this->client) ?: ' ', 'label' => ctrans('texts.amount')]; $data['$amount'] = &$data['$payment.amount']; - $data['$payment.date'] = ['value' => $this->formatDate($this->payment->date, $this->client->date_format()), 'label' => ctrans('texts.payment_date')]; + $data['$payment.date'] = ['value' => $this->translateDate($this->payment->date, $this->client->date_format(), $this->client->locale()), 'label' => ctrans('texts.payment_date')]; $data['$transaction_reference'] = ['value' => $this->payment->transaction_reference, 'label' => ctrans('texts.transaction_reference')]; $data['$public_notes'] = ['value' => $this->payment->public_notes, 'label' => ctrans('texts.notes')]; diff --git a/app/Models/Client.php b/app/Models/Client.php index ba10ae36b477..7eccca3ef639 100644 --- a/app/Models/Client.php +++ b/app/Models/Client.php @@ -223,6 +223,16 @@ class Client extends BaseModel implements HasLocalePreference })->first()->format; } + public function translated_date_format() + { + $date_formats = Cache::get('date_formats'); + + return $date_formats->filter(function ($item) { + return $item->id == $this->getSetting('date_format_id'); + })->first()->translated_format; + + } + public function currency() { $currencies = Cache::get('currencies'); diff --git a/app/Models/DateFormat.php b/app/Models/DateFormat.php index d32e704a9812..0145ae1cf277 100644 --- a/app/Models/DateFormat.php +++ b/app/Models/DateFormat.php @@ -7,6 +7,9 @@ namespace App\Models; */ class DateFormat extends StaticModel { + + protected $fillable = ['translated_format']; + public static $days_of_the_week = [ 0 => 'sunday', 1 => 'monday', diff --git a/app/Utils/Helpers.php b/app/Utils/Helpers.php index 02cacc8e15fc..d2aebc62d02e 100644 --- a/app/Utils/Helpers.php +++ b/app/Utils/Helpers.php @@ -64,7 +64,7 @@ class Helpers switch ($custom_field) { case 'date': - return is_null($client) ? $value : $this->formatDate($value, $client->date_format()); + return is_null($client) ? $value : $this->translateDate($value, $client->date_format(), $client->locale()); break; case 'switch': diff --git a/app/Utils/HtmlEngine.php b/app/Utils/HtmlEngine.php index 31b1f72de562..f2fb53ce09b4 100644 --- a/app/Utils/HtmlEngine.php +++ b/app/Utils/HtmlEngine.php @@ -105,15 +105,15 @@ class HtmlEngine $data['$total_tax_values'] = ['value' => $this->totalTaxValues(), 'label' => ctrans('texts.taxes')]; $data['$line_tax_labels'] = ['value' => $this->lineTaxLabels(), 'label' => ctrans('texts.taxes')]; $data['$line_tax_values'] = ['value' => $this->lineTaxValues(), 'label' => ctrans('texts.taxes')]; - $data['$date'] = ['value' => $this->formatDate($this->entity->date, $this->entity->client->date_format()) ?: ' ', 'label' => ctrans('texts.date')]; + $data['$date'] = ['value' => $this->translateDate($this->entity->date, $this->entity->client->date_format(), $this->entity->client->locale()) ?: ' ', 'label' => ctrans('texts.date')]; $data['$invoice.date'] = &$data['$date']; - $data['$due_date'] = ['value' => $this->formatDate($this->entity->due_date, $this->entity->client->date_format()) ?: ' ', 'label' => ctrans('texts.'.$this->entity_string.'_due_date')]; - $data['$payment_due'] = ['value' => $this->formatDate($this->entity->due_date, $this->entity->client->date_format()) ?: ' ', 'label' => ctrans('texts.payment_due')]; + $data['$due_date'] = ['value' => $this->translateDate($this->entity->due_date, $this->entity->client->date_format(), $this->entity->client->locale()) ?: ' ', 'label' => ctrans('texts.'.$this->entity_string.'_due_date')]; + $data['$payment_due'] = ['value' => $this->translateDate($this->entity->due_date, $this->entity->client->date_format(), $this->entity->client->locale()) ?: ' ', 'label' => ctrans('texts.payment_due')]; $data['$invoice.due_date'] = &$data['$due_date']; $data['$invoice.number'] = ['value' => $this->entity->number ?: ' ', 'label' => ctrans('texts.invoice_number')]; $data['$invoice.po_number'] = ['value' => $this->entity->po_number ?: ' ', 'label' => ctrans('texts.po_number')]; - $data['$entity.datetime'] = ['value' => $this->formatDatetime($this->entity->created_at, $this->entity->client->date_format()), 'label' => ctrans('texts.date')]; + $data['$entity.datetime'] = ['value' => $this->formatDatetime($this->entity->created_at, $this->entity->client->date_format(), $this->entity->client->locale()), 'label' => ctrans('texts.date')]; $data['$invoice.datetime'] = &$data['$entity.datetime']; $data['$quote.datetime'] = &$data['$entity.datetime']; $data['$credit.datetime'] = &$data['$entity.datetime']; @@ -180,7 +180,7 @@ class HtmlEngine $data['$credit.number'] = ['value' => $this->entity->number ?: ' ', 'label' => ctrans('texts.credit_number')]; $data['$credit.total'] = &$data['$credit.total']; $data['$credit.po_number'] = &$data['$invoice.po_number']; - $data['$credit.date'] = ['value' => $this->formatDate($this->entity->date, $this->entity->client->date_format()), 'label' => ctrans('texts.credit_date')]; + $data['$credit.date'] = ['value' => $this->translateDate($this->entity->date, $this->entity->client->date_format(), $this->entity->client->locale()), 'label' => ctrans('texts.credit_date')]; $data['$balance'] = ['value' => Number::formatMoney($this->entity_calc->getBalance(), $this->client) ?: ' ', 'label' => ctrans('texts.balance')]; $data['$credit.balance'] = &$data['$balance']; @@ -199,13 +199,13 @@ class HtmlEngine $data['$entity_issued_to'] = ['value' => '', 'label' => ctrans("texts.{$this->entity_string}_issued_to")]; $data['$your_entity'] = ['value' => '', 'label' => ctrans("texts.your_{$this->entity_string}")]; - $data['$quote.date'] = ['value' => $this->formatDate($this->entity->date, $this->entity->client->date_format()) ?: ' ', 'label' => ctrans('texts.quote_date')]; + $data['$quote.date'] = ['value' => $this->translateDate($this->entity->date, $this->entity->client->date_format(), $this->entity->client->locale()) ?: ' ', 'label' => ctrans('texts.quote_date')]; $data['$quote.number'] = ['value' => $this->entity->number ?: ' ', 'label' => ctrans('texts.quote_number')]; $data['$quote.po_number'] = &$data['$invoice.po_number']; $data['$quote.quote_number'] = &$data['$quote.number']; $data['$quote_no'] = &$data['$quote.number']; $data['$quote.quote_no'] = &$data['$quote.number']; - $data['$quote.valid_until'] = ['value' => $this->formatDate($this->entity->due_date, $this->client->date_format()), 'label' => ctrans('texts.valid_until')]; + $data['$quote.valid_until'] = ['value' => $this->translateDate($this->entity->due_date, $this->client->date_format(), $this->entity->client->locale()), 'label' => ctrans('texts.valid_until')]; $data['$credit_amount'] = ['value' => Number::formatMoney($this->entity_calc->getTotal(), $this->client) ?: ' ', 'label' => ctrans('texts.credit_amount')]; $data['$credit_balance'] = ['value' => Number::formatMoney($this->entity->balance, $this->client) ?: ' ', 'label' => ctrans('texts.credit_balance')]; @@ -361,8 +361,6 @@ class HtmlEngine $arrKeysLength = array_map('strlen', array_keys($data)); array_multisort($arrKeysLength, SORT_DESC, $data); - //info(print_r($data,1)); - return $data; } diff --git a/app/Utils/Traits/CompanySettingsSaver.php b/app/Utils/Traits/CompanySettingsSaver.php index f94f546b7113..3cc14551303c 100644 --- a/app/Utils/Traits/CompanySettingsSaver.php +++ b/app/Utils/Traits/CompanySettingsSaver.php @@ -220,10 +220,8 @@ trait CompanySettingsSaver switch ($key) { case 'int': case 'integer': - if(is_string($value)) - return false; - - return is_int($value) || ctype_digit(strval(abs($value))); + return ctype_digit(strval(abs($value))); + // return is_int($value) || ctype_digit(strval(abs($value))); case 'real': case 'float': case 'double': diff --git a/app/Utils/Traits/MakesDates.php b/app/Utils/Traits/MakesDates.php index 6a908eb3543c..5e8cc7481475 100644 --- a/app/Utils/Traits/MakesDates.php +++ b/app/Utils/Traits/MakesDates.php @@ -60,9 +60,6 @@ trait MakesDates if (!isset($date)) { return ''; } - // if (!$date || strlen($date) < 1) { - // return ''; - // } if (is_string($date)) { $date = $this->convertToDateObject($date); @@ -99,4 +96,13 @@ trait MakesDates $dt->setTimezone(new DateTimeZone('UTC')); return $dt; } -} + + public function translateDate($date, $format, $locale) + { + + Carbon::setLocale($locale); + return Carbon::parse($date)->translatedFormat($format); + + } + +} \ No newline at end of file diff --git a/database/seeders/DateFormatsSeeder.php b/database/seeders/DateFormatsSeeder.php index 733cdfa90109..775743cd2112 100644 --- a/database/seeders/DateFormatsSeeder.php +++ b/database/seeders/DateFormatsSeeder.php @@ -80,4 +80,4 @@ class DateFormatsSeeder extends Seeder } } } -} +} \ No newline at end of file