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/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/migrations/2021_02_23_031025_add_translated_date_column.php b/database/migrations/2021_02_23_031025_add_translated_date_column.php deleted file mode 100644 index 4471aebe66a9..000000000000 --- a/database/migrations/2021_02_23_031025_add_translated_date_column.php +++ /dev/null @@ -1,80 +0,0 @@ -string('translated_format')->default(''); - }); - - - //add multi DB support - - if(DateFormat::count() > 0 ) - { - $date_format = DateFormat::where('format', 'd/M/Y')->first(); - $date_format->update(['translated_format' => '%d/%b/%Y']); - - $date_format = DateFormat::where('format', 'd-M-Y')->first(); - $date_format->update(['translated_format' => '%d-%b-%Y']); - - $date_format = DateFormat::where('format', 'd/F/Y')->first(); - $date_format->update(['translated_format' => '%d/%B/%Y']); - - $date_format = DateFormat::where('format', 'd-F-Y')->first(); - $date_format->update(['translated_format' => '%d-%B-%Y']); - - $date_format = DateFormat::where('format', 'M j, Y')->first(); - $date_format->update(['translated_format' => '%b %d, %Y']); - - $date_format = DateFormat::where('format', 'F j, Y')->first(); - $date_format->update(['translated_format' => '%B %d, %Y']); - - $date_format = DateFormat::where('format', 'D M j, Y')->first(); - $date_format->update(['translated_format' => '%a %b %d, %Y']); - - $date_format = DateFormat::where('format', 'Y-m-d')->first(); - $date_format->update(['translated_format' => '%Y-%m-%d']); - - $date_format = DateFormat::where('format', 'd-m-Y')->first(); - $date_format->update(['translated_format' => '%d-%m-%Y']); - - $date_format = DateFormat::where('format', 'm/d/Y')->first(); - $date_format->update(['translated_format' => '%m/%d/%Y']); - - $date_format = DateFormat::where('format', 'd.m.Y')->first(); - $date_format->update(['translated_format' => '%d.%m.%Y']); - - $date_format = DateFormat::where('format', 'j. m. Y')->first(); - $date_format->update(['translated_format' => '%d. %m. %Y']); - - $date_format = DateFormat::where('format', 'j. F Y')->first(); - $date_format->update(['translated_format' => '%d. %B %Y']); - - $date_format = DateFormat::where('format', 'd/m/Y')->first(); - $date_format->update(['translated_format' => '%d/%m/%Y']); - } - - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - // - } -} diff --git a/database/seeders/DateFormatsSeeder.php b/database/seeders/DateFormatsSeeder.php index caec10994333..775743cd2112 100644 --- a/database/seeders/DateFormatsSeeder.php +++ b/database/seeders/DateFormatsSeeder.php @@ -23,20 +23,20 @@ class DateFormatsSeeder extends Seeder // Date formats $formats = [ - ['id' => 1, 'format' => 'd/M/Y', 'format_moment' => 'DD/MMM/YYYY', 'format_dart' => 'dd/MMM/yyyy', 'translated_format' => '%d/%b/%Y'], - ['id' => 2, 'format' => 'd-M-Y', 'format_moment' => 'DD-MMM-YYYY', 'format_dart' => 'dd-MMM-yyyy', 'translated_format' => '%d-%b-%Y'], - ['id' => 3, 'format' => 'd/F/Y', 'format_moment' => 'DD/MMMM/YYYY', 'format_dart' => 'dd/MMMM/yyyy', 'translated_format' => '%d/%B/%Y'], - ['id' => 4, 'format' => 'd-F-Y', 'format_moment' => 'DD-MMMM-YYYY', 'format_dart' => 'dd-MMMM-yyyy', 'translated_format' => '%d-%B-%Y'], - ['id' => 5, 'format' => 'M j, Y', 'format_moment' => 'MMM D, YYYY', 'format_dart' => 'MMM d, yyyy', 'translated_format' => '%b %d, %Y'], - ['id' => 6, 'format' => 'F j, Y', 'format_moment' => 'MMMM D, YYYY', 'format_dart' => 'MMMM d, yyyy', 'translated_format' => '%B %d, %Y'], - ['id' => 7, 'format' => 'D M j, Y', 'format_moment' => 'ddd MMM Do, YYYY', 'format_dart' => 'EEE MMM d, yyyy', 'translated_format' => '%a %b %d, %Y'], - ['id' => 8, 'format' => 'Y-m-d', 'format_moment' => 'YYYY-MM-DD', 'format_dart' => 'yyyy-MM-dd', 'translated_format' => '%Y-%m-%d'], - ['id' => 9, 'format' => 'd-m-Y', 'format_moment' => 'DD-MM-YYYY', 'format_dart' => 'dd-MM-yyyy', 'translated_format' => '%d-%m-%Y'], - ['id' => 10, 'format' => 'm/d/Y', 'format_moment' => 'MM/DD/YYYY', 'format_dart' => 'MM/dd/yyyy', 'translated_format' => '%m/%d/%Y'], - ['id' => 11, 'format' => 'd.m.Y', 'format_moment' => 'D.MM.YYYY', 'format_dart' => 'dd.MM.yyyy', 'translated_format' => '%d.%m.%Y'], - ['id' => 12, 'format' => 'j. M. Y', 'format_moment' => 'DD. MMM. YYYY', 'format_dart' => 'd. MMM. yyyy', 'translated_format' => '%d. %m. %Y'], - ['id' => 13, 'format' => 'j. F Y', 'format_moment' => 'DD. MMMM YYYY', 'format_dart' => 'd. MMMM yyyy', 'translated_format' => '%d. %B %Y'], - ['id' => 14, 'format' => 'd/m/Y', 'format_moment' => 'DD/MM/YYY', 'format_dart' => 'dd/MM/yyyy', 'translated_format' => '%d/%m/%Y'], + ['id' => 1, 'format' => 'd/M/Y', 'format_moment' => 'DD/MMM/YYYY', 'format_dart' => 'dd/MMM/yyyy'], + ['id' => 2, 'format' => 'd-M-Y', 'format_moment' => 'DD-MMM-YYYY', 'format_dart' => 'dd-MMM-yyyy'], + ['id' => 3, 'format' => 'd/F/Y', 'format_moment' => 'DD/MMMM/YYYY', 'format_dart' => 'dd/MMMM/yyyy'], + ['id' => 4, 'format' => 'd-F-Y', 'format_moment' => 'DD-MMMM-YYYY', 'format_dart' => 'dd-MMMM-yyyy'], + ['id' => 5, 'format' => 'M j, Y', 'format_moment' => 'MMM D, YYYY', 'format_dart' => 'MMM d, yyyy'], + ['id' => 6, 'format' => 'F j, Y', 'format_moment' => 'MMMM D, YYYY', 'format_dart' => 'MMMM d, yyyy'], + ['id' => 7, 'format' => 'D M j, Y', 'format_moment' => 'ddd MMM Do, YYYY', 'format_dart' => 'EEE MMM d, yyyy'], + ['id' => 8, 'format' => 'Y-m-d', 'format_moment' => 'YYYY-MM-DD', 'format_dart' => 'yyyy-MM-dd'], + ['id' => 9, 'format' => 'd-m-Y', 'format_moment' => 'DD-MM-YYYY', 'format_dart' => 'dd-MM-yyyy'], + ['id' => 10, 'format' => 'm/d/Y', 'format_moment' => 'MM/DD/YYYY', 'format_dart' => 'MM/dd/yyyy'], + ['id' => 11, 'format' => 'd.m.Y', 'format_moment' => 'D.MM.YYYY', 'format_dart' => 'dd.MM.yyyy'], + ['id' => 12, 'format' => 'j. M. Y', 'format_moment' => 'DD. MMM. YYYY', 'format_dart' => 'd. MMM. yyyy'], + ['id' => 13, 'format' => 'j. F Y', 'format_moment' => 'DD. MMMM YYYY', 'format_dart' => 'd. MMMM yyyy'], + ['id' => 14, 'format' => 'd/m/Y', 'format_moment' => 'DD/MM/YYY', 'format_dart' => 'dd/MM/yyyy'], ]; foreach ($formats as $format) {