some big beautfiul update

This commit is contained in:
2026-03-02 18:05:59 +01:00
parent bf7eaa965f
commit ba986a32fe
121 changed files with 170698 additions and 561 deletions

View File

@@ -124,12 +124,8 @@ class Currency implements FieldConverter
$currencyAttribute = $name . 'Currency';
$defaultCurrency = $this->configDataProvider->getDefaultCurrency();
$baseCurrency = $this->configDataProvider->getBaseCurrency();
$rates = $this->configDataProvider->getCurrencyRates()->toAssoc();
if ($defaultCurrency !== $baseCurrency) {
$rates = $this->exchangeRates($baseCurrency, $defaultCurrency, $rates);
}
$rates = $this->configDataProvider->getCurrencyList();
$expr = Expr::multiply(
Expr::column($name),
@@ -216,28 +212,7 @@ class Currency implements FieldConverter
}
/**
* @param array<string, float> $currencyRates
* @return array<string, float>
*/
private function exchangeRates(string $baseCurrency, string $defaultCurrency, array $currencyRates): array
{
$precision = 5;
$defaultCurrencyRate = round(1 / $currencyRates[$defaultCurrency], $precision);
$exchangedRates = [];
$exchangedRates[$baseCurrency] = $defaultCurrencyRate;
unset($currencyRates[$baseCurrency], $currencyRates[$defaultCurrency]);
foreach ($currencyRates as $currencyName => $rate) {
$exchangedRates[$currencyName] = round($rate * $defaultCurrencyRate, $precision);
}
return $exchangedRates;
}
/**
* @param array<string, float> $rates
* @param string[] $rates
*/
private function buildExpression(string $currencyAttribute, array $rates): Expr|float
{
@@ -245,13 +220,11 @@ class Currency implements FieldConverter
return 0.0;
}
$currency = array_key_first($rates);
$value = $rates[$currency];
unset($rates[$currency]);
$currency = array_shift($rates);
return Expr::if(
Expr::equal(Expr::column($currencyAttribute), $currency),
$value,
Expr::create("CURRENCY_RATE:('$currency')"),
$this->buildExpression($currencyAttribute, $rates)
);
}