Release 2.0.15 (#3970)

This commit is contained in:
Kevin Papst
2023-04-16 00:44:00 +02:00
committed by GitHub
parent ecd8ee85f3
commit 046ed313c9
42 changed files with 796 additions and 935 deletions

View File

@@ -77,4 +77,9 @@ final class DefaultInvoiceFormatter implements InvoiceFormatter
$this->locale = $locale;
$this->formatter = null;
}
public function getFormattedAmount(float $amount): string
{
return $this->getFormatter()->amount($amount);
}
}

View File

@@ -34,7 +34,7 @@ final class InvoiceItemDefaultHydrator implements InvoiceItemHydrator
if ($item->isFixedRate()) {
$appliedRate = $item->getFixedRate();
$amount = $item->getAmount();
$amount = $formatter->getFormattedAmount($item->getAmount());
}
$activity = $item->getActivity();
@@ -83,12 +83,18 @@ final class InvoiceItemDefaultHydrator implements InvoiceItemHydrator
'entry.date' => $formatter->getFormattedDateTime($begin),
'entry.week' => \intval($begin->format('W')),
'entry.weekyear' => $begin->format('o'),
'entry.user_id' => $user->getId(),
'entry.user_name' => $user->getUserIdentifier(),
'entry.user_title' => $user->getTitle() ?? '',
'entry.user_alias' => $user->getAlias() ?? '',
];
if (null !== $user) {
$values = array_merge($values, [
'entry.user_id' => $user->getId(),
'entry.user_name' => $user->getUserIdentifier(),
'entry.user_title' => $user->getTitle() ?? '',
'entry.user_alias' => $user->getAlias() ?? '',
'entry.user_display' => $user->getDisplayName() ?? '',
]);
}
if (null !== $activity) {
$values = array_merge($values, [
'entry.activity' => $activity->getName(),

View File

@@ -35,7 +35,8 @@ final class InvoiceModelCustomerHydrator implements InvoiceModelHydrator
'customer.name' => $customer->getName() ?? '',
'customer.contact' => $customer->getContact() ?? '',
'customer.company' => $customer->getCompany() ?? '',
'customer.vat' => $customer->getVatId() ?? '',
'customer.vat' => $customer->getVatId() ?? '', // deprecated since 2.0.15
'customer.vat_id' => $customer->getVatId() ?? '',
'customer.number' => $customer->getNumber() ?? '',
'customer.country' => $customer->getCountry(),
'customer.homepage' => $customer->getHomepage() ?? '',

View File

@@ -22,9 +22,6 @@ final class InvoiceModelDefaultHydrator implements InvoiceModelHydrator
$subtotal = $model->getCalculator()->getSubtotal();
$formatter = $model->getFormatter();
$begin = $model->getQuery()->getBegin();
$end = $model->getQuery()->getEnd();
$values = [
'invoice.due_date' => $formatter->getFormattedDateTime($model->getDueDate()),
'invoice.date' => $formatter->getFormattedDateTime($model->getInvoiceDate()),
@@ -33,6 +30,7 @@ final class InvoiceModelDefaultHydrator implements InvoiceModelHydrator
'invoice.language' => $model->getTemplate()->getLanguage(), // since 1.9
'invoice.currency_symbol' => $formatter->getCurrencySymbol($currency),
'invoice.vat' => $model->getCalculator()->getVat(),
'invoice.tax_hide' => $model->isHideZeroTax() && $tax === 0.00,
'invoice.tax' => $formatter->getFormattedMoney($tax, $currency),
'invoice.tax_nc' => $formatter->getFormattedMoney($tax, $currency, false),
'invoice.tax_plain' => $tax,
@@ -65,25 +63,66 @@ final class InvoiceModelDefaultHydrator implements InvoiceModelHydrator
'query.end_month' => '', // since 1.9
'query.end_month_number' => '', // since 1.9
'query.end_year' => '', // since 1.9
// since 2.0.15
'user.see_others' => ($model->getQuery()?->getUser() === null),
];
if ($begin !== null) {
$values = array_merge($values, [
'query.day' => $begin->format('d'), // @deprecated - but impossible to delete
'query.month' => $formatter->getFormattedMonthName($begin), // @deprecated - but impossible to delete
'query.month_number' => $begin->format('m'), // @deprecated - but impossible to delete
'query.year' => $begin->format('Y'), // @deprecated - but impossible to delete
'query.begin' => $formatter->getFormattedDateTime($begin),
'query.begin_day' => $begin->format('d'),
'query.begin_month' => $formatter->getFormattedMonthName($begin),
'query.begin_month_number' => $begin->format('m'),
'query.begin_year' => $begin->format('Y'),
'query.end' => $formatter->getFormattedDateTime($end), // since 1.9
'query.end_day' => $end->format('d'), // since 1.9
'query.end_month' => $formatter->getFormattedMonthName($end), // since 1.9
'query.end_month_number' => $end->format('m'), // since 1.9
'query.end_year' => $end->format('Y'), // since 1.9
]);
$query = $model->getQuery();
if ($query !== null) {
$begin = $query->getBegin();
$end = $query->getEnd();
if ($begin !== null) {
$values = array_merge($values, [
'query.day' => $begin->format('d'),
// @deprecated - but impossible to delete
'query.month' => $formatter->getFormattedMonthName($begin),
// @deprecated - but impossible to delete
'query.month_number' => $begin->format('m'),
// @deprecated - but impossible to delete
'query.year' => $begin->format('Y'),
// @deprecated - but impossible to delete
'query.begin' => $formatter->getFormattedDateTime($begin),
'query.begin_day' => $begin->format('d'),
'query.begin_month' => $formatter->getFormattedMonthName($begin),
'query.begin_month_number' => $begin->format('m'),
'query.begin_year' => $begin->format('Y'),
'query.end' => $formatter->getFormattedDateTime($end),
// since 1.9
'query.end_day' => $end->format('d'),
// since 1.9
'query.end_month' => $formatter->getFormattedMonthName($end),
// since 1.9
'query.end_month_number' => $end->format('m'),
// since 1.9
'query.end_year' => $end->format('Y'),
// since 1.9
]);
}
// since 2.0.15
$activity = $query->getActivity();
if ($activity !== null) {
$prefix = 'query.activity.';
$values = array_merge($values, [
$prefix . 'name' => $activity->getName() ?? '',
$prefix . 'comment' => $activity->getComment() ?? '',
]);
}
// since 2.0.15
$project = $query->getProject();
if ($project !== null) {
$prefix = 'query.project.';
$values = array_merge($values, [
$prefix . 'name' => $project->getName() ?? '',
$prefix . 'comment' => $project->getComment() ?? '',
$prefix . 'order_number' => $project->getOrderNumber(),
]);
}
}
$entries = $model->getEntries();

View File

@@ -9,7 +9,6 @@
namespace App\Invoice\Hydrator;
use App\Entity\UserPreference;
use App\Invoice\InvoiceModel;
use App\Invoice\InvoiceModelHydrator;
@@ -28,9 +27,9 @@ final class InvoiceModelUserHydrator implements InvoiceModelHydrator
'user.email' => $user->getEmail(),
'user.title' => $user->getTitle() ?? '',
'user.alias' => $user->getAlias() ?? '',
'user.display' => $user->getDisplayName() ?? '',
];
/** @var UserPreference $metaField */
foreach ($user->getPreferences() as $metaField) {
$values = array_merge($values, [
'user.meta.' . $metaField->getName() => $metaField->getValue(),

View File

@@ -24,6 +24,8 @@ interface InvoiceFormatter
public function getFormattedTime(DateTime $date): string;
public function getFormattedAmount(float $amount): string;
public function getFormattedMoney(float $amount, ?string $currency, bool $withCurrency = true): string;
public function getFormattedMonthName(DateTime $date): string;

View File

@@ -278,7 +278,7 @@ final class ServiceInvoice
{
$document = $this->getDocumentByName($model->getTemplate()->getRenderer());
if (null === $document) {
throw new \Exception('Unknown invoice document: ' . $model->getTemplate()->getRenderer());
throw new \Exception('Please adjust your invoice template, the renderer is invalid: ' . $model->getTemplate()->getRenderer());
}
foreach ($this->getRenderer() as $renderer) {
@@ -426,7 +426,7 @@ final class ServiceInvoice
$calculator = $this->getCalculatorByName($template->getCalculator());
if (null === $calculator) {
throw new \Exception('Please adjust your invoice template, the invoice calculator is invalid: ' . $template->getCalculator());
throw new \Exception('Please adjust your invoice template, the sum calculator is invalid: ' . $template->getCalculator());
}
$model->setCalculator($calculator);