Release 2.0.4 (#3883)

* fix column data truncated
* calculate internal rate from user
* show internal rate in timesheet listing
* Fixed: responsivenss and size of report start page icons
* fix: name display in dropdowns (and added tests)
* translate reload button
* fix invoice date might be in the past
* fail safe customer name handling
* translate invoice_date and invoice_date help
* prevent URLs like start=null
* prevent to reload select twice
This commit is contained in:
Kevin Papst
2023-03-02 14:04:06 +01:00
committed by GitHub
parent a8b972f8a5
commit 3f09a2674b
32 changed files with 409 additions and 77 deletions

View File

@@ -46,8 +46,13 @@ final class ActivityHelper
$name = str_replace(self::PATTERN_NAME, $activity->getName(), $name);
$name = str_replace(self::PATTERN_COMMENT, $activity->getComment() ?? '', $name);
$name = ltrim($name, self::SPACER);
$name = rtrim($name, self::SPACER);
while (str_starts_with($name, self::SPACER)) {
$name = substr($name, \strlen(self::SPACER));
}
while (str_ends_with($name, self::SPACER)) {
$name = substr($name, 0, -\strlen(self::SPACER));
}
if ($name === '' || $name === self::SPACER) {
$name = $activity->getName();

View File

@@ -50,8 +50,13 @@ final class CustomerHelper
$name = str_replace(self::PATTERN_NUMBER, $customer->getNumber() ?? '', $name);
$name = str_replace(self::PATTERN_COMPANY, $customer->getCompany() ?? '', $name);
$name = ltrim($name, self::SPACER);
$name = rtrim($name, self::SPACER);
while (str_starts_with($name, self::SPACER)) {
$name = substr($name, \strlen(self::SPACER));
}
while (str_ends_with($name, self::SPACER)) {
$name = substr($name, 0, -\strlen(self::SPACER));
}
if ($name === '' || $name === self::SPACER) {
$name = $customer->getName();

View File

@@ -12,9 +12,10 @@ namespace App\Form\Helper;
use App\Configuration\LocaleService;
use App\Configuration\SystemConfiguration;
use App\Entity\Project;
use Symfony\Contracts\Translation\LocaleAwareInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
final class ProjectHelper
final class ProjectHelper implements LocaleAwareInterface
{
public const PATTERN_NAME = '{name}';
public const PATTERN_COMMENT = '{comment}';
@@ -30,11 +31,22 @@ final class ProjectHelper
private ?string $pattern = null;
private bool $showStart = false;
private bool $showEnd = false;
private ?string $locale = null;
public function __construct(private SystemConfiguration $configuration, private LocaleService $localeService, private TranslatorInterface $translator)
{
}
public function getLocale(): string
{
return $this->locale ?? \Locale::getDefault();
}
public function setLocale(string $locale): void
{
$this->locale = $locale;
}
public function getChoicePattern(): string
{
if ($this->pattern === null) {
@@ -56,26 +68,27 @@ final class ProjectHelper
$name = $this->getChoicePattern();
$name = str_replace(self::PATTERN_NAME, $project->getName(), $name);
$name = str_replace(self::PATTERN_COMMENT, $project->getComment() ?? '', $name);
$name = str_replace(self::PATTERN_CUSTOMER, $project->getCustomer()->getName() ?? '', $name);
$name = str_replace(self::PATTERN_CUSTOMER, $project->getCustomer()?->getName() ?? '', $name);
$name = str_replace(self::PATTERN_ORDERNUMBER, $project->getOrderNumber() ?? '', $name);
if ($this->dateFormatter === null) {
$this->showStart = stripos($name, self::PATTERN_START) !== false;
$this->showEnd = stripos($name, self::PATTERN_END) !== false;
$locale = $this->getLocale();
$this->dateFormatter = new \IntlDateFormatter(
\Locale::getDefault(),
$locale,
\IntlDateFormatter::MEDIUM,
\IntlDateFormatter::MEDIUM,
date_default_timezone_get(),
\IntlDateFormatter::GREGORIAN,
$this->localeService->getDateFormat(\Locale::getDefault())
$this->localeService->getDateFormat($locale)
);
}
if ($this->showStart) {
$start = '';
if ($project->getStart() !== null) {
$start = $this->translator->trans('project_start') . ': ' . $this->dateFormatter->format($project->getStart()) . ' ';
$start = $this->translator->trans('project_start') . ': ' . $this->dateFormatter->format($project->getStart());
}
$name = str_replace(self::PATTERN_START, $start, $name);
}
@@ -83,14 +96,18 @@ final class ProjectHelper
if ($this->showEnd) {
$end = '';
if ($project->getEnd() !== null) {
$end = ' ' . $this->translator->trans('project_end') . ': ' . $this->dateFormatter->format($project->getEnd());
$end = $this->translator->trans('project_end') . ': ' . $this->dateFormatter->format($project->getEnd());
}
$name = str_replace(self::PATTERN_END, $end, $name);
}
$name = ltrim($name, self::SPACER);
$name = rtrim($name, self::SPACER);
$name = str_replace('- ?-?', '', $name);
while (str_starts_with($name, self::SPACER)) {
$name = substr($name, \strlen(self::SPACER));
}
while (str_ends_with($name, self::SPACER)) {
$name = substr($name, 0, -\strlen(self::SPACER));
}
if ($name === '' || $name === self::SPACER) {
$name = $project->getName();