Skip to content
Code-Schnipsel Gruppen Projekte
Commit 12dd54d7 erstellt von Henning Leutz's avatar Henning Leutz :martial_arts_uniform:
Dateien durchsuchen

Merge branch 'next' into 'master'

fix: precision for netto price and unit price

Closes brassberg/ecoyn/tickets#93

See merge request !28
Übergeordnete 28e7efdf 455082ed
No related branches found
Tags 1.6.7
2 Merge Requests!140Update 'next-4.x' with latest changes from 'main',!28fix: precision for netto price and unit price
Pipeline #4797 bestanden mit Phase
in 33 Sekunden
......@@ -11,14 +11,15 @@
*/
use QUI\ERP\Accounting\ArticleDiscount;
use QUI\ERP\Defaults;
QUI::$Ajax->registerFunction(
'package_quiqqer_erp_ajax_products_calc',
function ($articles, $priceFactors, $user, $currency, $nettoInput) {
$nettoInput = (int)$nettoInput;
$articles = json_decode($articles, true);
$user = json_decode($user, true);
$articles = json_decode($articles, true);
$user = json_decode($user, true);
$priceFactors = json_decode($priceFactors, true);
if (!is_array($articles)) {
......@@ -79,21 +80,23 @@ function ($articles, $priceFactors, $user, $currency, $nettoInput) {
$Currency = $Articles->getCurrency();
foreach ($brutto['articles'] as $k => $article) {
$vat = $article['vat'] / 100 + 1;
$vat = $article['vat'] / 100 + 1;
$bruttoSum = $article['sum'];
$quantity = $article['quantity'];
$quantity = $article['quantity'];
if ($quantity) {
$unitPrice = $bruttoSum / $quantity;
$unitPrice = round($unitPrice, $Currency->getPrecision());
$unitPrice = round($unitPrice, Defaults::getPrecision());
} else {
$unitPrice = $article['unitPrice'] * $vat;
}
$brutto['articles'][$k]['unitPrice'] = $unitPrice;
$brutto['articles'][$k]['display_unitPrice'] = $Currency->format($unitPrice);
$brutto['articles'][$k]['display_quantity_sum'] = $brutto['articles'][$k]['display_sum'];
$brutto['articles'][$k]['quantity_sum'] = $brutto['articles'][$k]['sum'];
$brutto['articles'][$k]['quantity_sum'] = $brutto['articles'][$k]['sum'];
$brutto['articles'][$k]['unitPrice'] = $unitPrice;
$brutto['articles'][$k]['display_unitPrice'] = $Currency->format(
round($unitPrice, $Currency->getPrecision())
);
if (empty($article['discount'])) {
continue;
......@@ -102,30 +105,30 @@ function ($articles, $priceFactors, $user, $currency, $nettoInput) {
$Discount = ArticleDiscount::unserialize($article['discount']);
if ($Discount->getCalculation() !== QUI\ERP\Accounting\Calc::CALCULATION_COMPLEMENT) {
$bruttoUnit = $result['articles'][$k]['unitPrice'] * $vat;
$discount = $bruttoUnit * ($Discount->getValue() / 100);
$bruttoUnit = $result['articles'][$k]['unitPrice'] * $vat;
$discount = $bruttoUnit * ($Discount->getValue() / 100);
$uniqueDiscount = round($discount, $Currency->getPrecision());
$brutto['articles'][$k]['discount'] = $Discount->getValue() . '%';
$brutto['articles'][$k]['discount'] = $Discount->getValue() . '%';
$brutto['articles'][$k]['display_discount'] = $Discount->getValue() . '%';
} else {
$discount = $Discount->getValue() * $vat;
$discount = round($discount, $Currency->getPrecision());
$discount = $Discount->getValue() * $vat;
$discount = round($discount, $Currency->getPrecision());
$uniqueDiscount = $discount / $quantity;
$brutto['articles'][$k]['discount'] = $discount;
$brutto['articles'][$k]['discount'] = $discount;
$brutto['articles'][$k]['display_discount'] = $Currency->format($discount);
}
$unitPrice = $brutto['articles'][$k]['unitPrice'];
$unitPrice = $unitPrice + $uniqueDiscount;
$brutto['articles'][$k]['display_sum'] = $Currency->format($bruttoSum);
$brutto['articles'][$k]['sum'] = round($bruttoSum, $Currency->getPrecision());
$brutto['articles'][$k]['display_unitPrice'] = $Currency->format($unitPrice);
$brutto['articles'][$k]['unitPrice'] = round($unitPrice, $Currency->getPrecision());
$brutto['articles'][$k]['display_sum'] = $Currency->format($bruttoSum);
$brutto['articles'][$k]['sum'] = round($bruttoSum, $Currency->getPrecision());
$brutto['articles'][$k]['display_unitPrice'] = $Currency->format($unitPrice);
$brutto['articles'][$k]['unitPrice'] = round($unitPrice, $Currency->getPrecision());
$brutto['articles'][$k]['display_quantity_sum'] = $Currency->format($unitPrice * $quantity);
$brutto['articles'][$k]['quantity_sum'] = $unitPrice * $quantity;
$brutto['articles'][$k]['quantity_sum'] = $unitPrice * $quantity;
}
$result['brutto'] = $brutto;
......
Dieser Diff ist reduziert.
......@@ -241,6 +241,15 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
}
this.$articles = [];
let selectedPosition = null;
if (this.$Container) {
if (this.$selectedArticle) {
selectedPosition = this.$selectedArticle.getAttribute('position');
}
this.$Container.set('html', '');
}
const controls = data.articles.map(function(ArticleInstance) {
if (typeof ArticleInstance.control !== 'undefined' && ArticleInstance.control !== '') {
......@@ -269,6 +278,10 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
}
}
if (selectedPosition && typeof self.$articles[selectedPosition - 1] !== 'undefined') {
self.$articles[selectedPosition - 1].select();
}
self.fireEvent('calc', [
self,
self.$calculations
......@@ -583,7 +596,6 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
this.$priceFactors.splice(prio, 0, priceFactor);
},
/**
* edit a price factor
*
......
......@@ -533,7 +533,7 @@ public function calcArticlePrice(Article $Article, $callback = false)
$Currency = $this->getCurrency();
}
$nettoPrice = $Article->getUnitPrice()->value();
$nettoPrice = $Article->getUnitPriceUnRounded()->value();
$vat = $Article->getVat();
$basisNettoPrice = $nettoPrice;
$nettoSubSum = $this->round($nettoPrice * $Article->getQuantity());
......@@ -564,7 +564,9 @@ public function calcArticlePrice(Article $Article, $callback = false)
}
$vatSum = $nettoPrice * ($vat / 100);
$bruttoPrice = round($nettoPrice + $vatSum, $Currency->getPrecision());
$precision = $Currency->getPrecision();
$priceSum = $nettoPrice + $vatSum;
$bruttoPrice = round($priceSum, $precision);
if (!$isNetto) {
// korrektur rechnung / 1 cent problem
......
0% oder .
You are about to add 0 people to the discussion. Proceed with caution.
Bearbeitung dieser Nachricht zuerst beenden!
Bitte registrieren oder zum Kommentieren