diff --git a/ajax/products/calc.php b/ajax/products/calc.php
index d538686d8207711d25399dddb25b55c170bbb86e..be6627eacc9b97fa33a2d0e96cebc1e6d4ef3e3e 100644
--- a/ajax/products/calc.php
+++ b/ajax/products/calc.php
@@ -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;
diff --git a/bin/backend/controls/articles/Article.js b/bin/backend/controls/articles/Article.js
index 1b1d7b52c19dc131592730bf47c6aa1587e7bf23..8fe18bcbb4cc7bb72e81a520bfe995fdc0d26933 100644
--- a/bin/backend/controls/articles/Article.js
+++ b/bin/backend/controls/articles/Article.js
@@ -1,3 +1,5 @@
+/* jshint proto: true */
+
 /**
  * @module package/quiqqer/erp/bin/backend/controls/articles/Article
  * @author www.pcsg.de (Henning Leutz)
@@ -41,8 +43,22 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
     'text!package/quiqqer/erp/bin/backend/controls/articles/Article.html',
     'css!package/quiqqer/erp/bin/backend/controls/articles/Article.css'
 
-], function (QUI, QUIControl, QUIButton, QUIConfirm, QUIElements, DiscountUtils, MoneyUtils, Currency, Mustache, QUILocale, QUIAjax, Editors, template) {
-    "use strict";
+], function(
+    QUI,
+    QUIControl,
+    QUIButton,
+    QUIConfirm,
+    QUIElements,
+    DiscountUtils,
+    MoneyUtils,
+    Currency,
+    Mustache,
+    QUILocale,
+    QUIAjax,
+    Editors,
+    template
+) {
+    'use strict';
 
     const lg = 'quiqqer/erp';
 
@@ -109,7 +125,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
             calcByList: true     // calculate article prices by the associated ArticleList
         },
 
-        initialize: function (options) {
+        initialize: function(options) {
             this.setAttributes(this.__proto__.options); // set the default values
             this.parent(options);
 
@@ -137,7 +153,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
             this.$created = false;
 
             // discount
-            if (options && "discount" in options) {
+            if (options && 'discount' in options) {
                 this.setAttribute(
                     'discount',
                     DiscountUtils.parseToString(
@@ -152,7 +168,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
          *
          * @returns {HTMLDivElement}
          */
-        create: function () {
+        create: function() {
             const self = this;
 
             this.$Elm = this.parent();
@@ -182,7 +198,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
                     showSelectCheckbox: showSelectCheckbox,
                     customFields: Object.values(CustomFieldValues),
                     buttonReplace: QUILocale.get(lg, 'articleList.article.button.replace'),
-                    buttonDelete: QUILocale.get(lg, 'articleList.article.button.delete'),
+                    buttonDelete: QUILocale.get(lg, 'articleList.article.button.delete')
                 }),
                 'tabindex': -1,
                 styles: {
@@ -200,7 +216,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
 
             if (showSelectCheckbox) {
                 this.$SelectCheckbox = this.$Elm.getElement('.quiqqer-erp-backend-erpArticle-selectbox > input');
-                this.$SelectCheckbox.addEvent('change', function (event) {
+                this.$SelectCheckbox.addEvent('change', function(event) {
                     if (event.target.checked) {
                         self.select();
                     } else {
@@ -249,7 +265,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
                 this.$VAT.addEvent('click', this.$onEditVat);
 
                 // Special VAT cell events
-                this.$VAT.addEvent('keydown', function (event) {
+                this.$VAT.addEvent('keydown', function(event) {
                     if (event.key === 'tab') {
                         this.$editNext(event);
                         return;
@@ -260,7 +276,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
                     }
                 }.bind(this));
 
-                this.$VAT.addEvent('blur', function (event) {
+                this.$VAT.addEvent('blur', function(event) {
                     if (event.key === 'tab') {
                         this.$editNext(event);
                     }
@@ -279,7 +295,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
                 this.$QuantityUnit.addEvent('click', this.$onEditQuantityUnit);
 
                 // Special quantity unit cell events
-                this.$QuantityUnit.addEvent('keydown', function (event) {
+                this.$QuantityUnit.addEvent('keydown', function(event) {
                     if (event.key === 'tab') {
                         this.$editNext(event);
                         return;
@@ -290,7 +306,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
                     }
                 }.bind(this));
 
-                this.$QuantityUnit.addEvent('blur', function (event) {
+                this.$QuantityUnit.addEvent('blur', function(event) {
                     if (event.key === 'tab') {
                         this.$editNext(event);
                     }
@@ -301,7 +317,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
 
             // brutto stuff
             this.$UnitPriceBrutto = new Element('div', {
-                'class': 'quiqqer-erp-backend-erpArticle-unitPrice-brutto cell cell-editable',
+                'class': 'quiqqer-erp-backend-erpArticle-unitPrice-brutto cell cell-editable'
             }).inject(this.$UnitPrice, 'after');
 
             this.$PriceBrutto = new Element('div', {
@@ -315,7 +331,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
             }
 
             this.$DiscountBrutto = new Element('div', {
-                'class': 'quiqqer-erp-backend-erpArticle-discount-brutto cell cell-editable',
+                'class': 'quiqqer-erp-backend-erpArticle-discount-brutto cell cell-editable'
             }).inject(this.$Discount, 'after');
 
             if ('discount' in EditFields && EditFields.discount) {
@@ -378,14 +394,14 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
             this.setVat(this.getAttribute('vat'));
             this.setTitle(this.getAttribute('title'));
             this.setDescription(this.getAttribute('description'));
+            this.setUnitPrice(this.getAttribute('unitPrice'));
 
             this.setQuantity(this.getAttribute('quantity'));
-            this.setUnitPrice(this.getAttribute('unitPrice'));
             this.setDiscount(this.getAttribute('discount'));
             this.setQuantityUnit(this.getAttribute('quantityUnit'));
 
             if (!this.getAttribute('quantityUnit')) {
-                this.$loadDefaultQuantityUnit().catch(function (err) {
+                this.$loadDefaultQuantityUnit().catch(function(err) {
                     console.error(err);
                 });
             }
@@ -412,7 +428,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
 
             this.calc();
 
-            this.addEvent('onEditKeyDown', function (me, event) {
+            this.addEvent('onEditKeyDown', function(me, event) {
                 if (event.key === 'tab') {
                     this.$editNext(event);
                 }
@@ -428,7 +444,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
          * @fires onRemove [self]
          * @fires onDrop [self]
          */
-        remove: function () {
+        remove: function() {
             this.fireEvent('delete', [this]);
             this.fireEvent('remove', [this]);
             this.fireEvent('drop', [this]);
@@ -439,7 +455,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
         /**
          * Trigger the replace event
          */
-        $onReplaceClick: function () {
+        $onReplaceClick: function() {
             this.fireEvent('replace', [this]);
         },
 
@@ -448,7 +464,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
          *
          * @param {Object} user
          */
-        setUser: function (user) {
+        setUser: function(user) {
             this.$user = user;
         },
 
@@ -457,7 +473,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
          *
          * @return {Promise}
          */
-        calc: function () {
+        calc: function() {
             if (!this.$created) {
                 return Promise.resolve();
             }
@@ -477,7 +493,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
                 const price = Formatter.format(product.calculated.nettoSubSum);
                 const total = Formatter.format(product.calculated.nettoSum);
 
-                const setElement = function (Node, text) {
+                const setElement = function(Node, text) {
                     const isInEditMode = Node.getElement('input');
 
                     if (isInEditMode) {
@@ -538,7 +554,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
          *
          * @return {Promise}
          */
-        $calc: function () {
+        $calc: function() {
             let Calc;
 
             const self = this,
@@ -551,7 +567,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
                 Calc = this.getAttribute('List').$executeCalculation();
                 calcByList = true;
             } else {
-                Calc = new Promise(function (resolve, reject) {
+                Calc = new Promise(function(resolve, reject) {
                     QUIAjax.get('package_quiqqer_erp_ajax_products_calc', resolve, {
                         'package': 'quiqqer/erp',
                         onError: reject,
@@ -564,33 +580,33 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
                 });
             }
 
-            return Calc.then(function (result) {
-                let article;
+            return Calc.then(function(result) {
+                let articleList;
                 let brutto;
                 let articles = result.articles;
 
                 if (!calcByList) {
-                    article = articles[0];
+                    articleList = articles[0];
                     brutto = result.brutto.articles[0];
                 } else {
-                    article = articles.filter(function (article) {
+                    articleList = articles.filter(function(article) {
                         return parseInt(article.position) === pos;
                     })[0];
 
-                    brutto = result.brutto.articles.filter(function (article) {
+                    brutto = result.brutto.articles.filter(function(article) {
                         return parseInt(article.position) === pos;
                     })[0];
                 }
 
-                self.$calculations = article;
+                self.$calculations = articleList;
                 self.$bruttoCalc = brutto;
                 self.fireEvent('calc', [
                     self,
                     result,
-                    article
+                    articleList
                 ]);
 
-                return article;
+                return articleList;
             });
         },
 
@@ -599,7 +615,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
          *
          * @returns {{}|*}
          */
-        getCalculations: function () {
+        getCalculations: function() {
             if (!this.$calculations) {
                 return {};
             }
@@ -610,7 +626,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
         /**
          * @returns {*}
          */
-        getBruttoCalc: function () {
+        getBruttoCalc: function() {
             return this.$bruttoCalc;
         },
 
@@ -619,7 +635,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
          *
          * @return {Promise|*}
          */
-        getCurrencyFormatter: function () {
+        getCurrencyFormatter: function() {
             if (this.$Formatter) {
                 return Promise.resolve(this.$Formatter);
             }
@@ -632,12 +648,12 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
                     currency = this.getAttribute('currency');
                 }
 
-                Currency.getCurrency(currency).then((currency) => {
+                Currency.getCurrency(currency).then((currencyResult) => {
                     this.$Formatter = QUILocale.getNumberFormatter({
                         style: 'currency',
-                        currency: currency.code,
-                        minimumFractionDigits: currency.precision,
-                        maximumFractionDigits: currency.precision
+                        currency: currencyResult.code,
+                        minimumFractionDigits: currencyResult.precision,
+                        maximumFractionDigits: currencyResult.precision
                     });
 
                     resolve(this.$Formatter);
@@ -661,7 +677,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
          *
          * @param {String} currency
          */
-        setCurrency: function (currency) {
+        setCurrency: function(currency) {
             if (this.getAttribute('currency') === currency) {
                 return;
             }
@@ -675,7 +691,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
          *
          * @param {String} title
          */
-        setTitle: function (title) {
+        setTitle: function(title) {
             this.setAttribute('title', title);
             this.$Title.set('html', title);
 
@@ -691,7 +707,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
          *
          * @param {String} description
          */
-        setDescription: function (description) {
+        setDescription: function(description) {
             this.setAttribute('description', description);
             this.$Description.set('html', description);
 
@@ -713,7 +729,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
          *
          * @param {String} articleNo
          */
-        setArticleNo: function (articleNo) {
+        setArticleNo: function(articleNo) {
             this.setAttribute('articleNo', articleNo);
             this.$ArticleNo.set('html', articleNo);
 
@@ -729,7 +745,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
          *
          * @param {Number} pos
          */
-        setPosition: function (pos) {
+        setPosition: function(pos) {
             this.setAttribute('position', parseInt(pos));
 
             if (this.$Position) {
@@ -745,7 +761,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
          * @param {Number} quantity
          * @return {Promise}
          */
-        setQuantity: function (quantity) {
+        setQuantity: function(quantity) {
             this.setAttribute('quantity', parseFloat(quantity));
 
             if (this.$Quantity) {
@@ -762,7 +778,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
          *
          * @param {Object} quantityUnit - {id:'piece', title:''}
          */
-        setQuantityUnit: function (quantityUnit) {
+        setQuantityUnit: function(quantityUnit) {
             if (typeof quantityUnit.id === 'undefined') {
                 return;
             }
@@ -785,7 +801,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
          * @param {Number} price
          * @return {Promise}
          */
-        setUnitPrice: function (price) {
+        setUnitPrice: function(price) {
             this.setAttribute('unitPrice', parseFloat(price));
 
             if (this.$UnitPrice) {
@@ -803,7 +819,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
          * @param {Number|String} vat
          * @return {Promise}
          */
-        setVat: function (vat) {
+        setVat: function(vat) {
             if (vat === '-' || vat === '') {
                 this.setAttribute('vat', '');
                 this.$VAT.set('html', '-');
@@ -836,7 +852,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
          *
          * @param {String|Number} discount - 100 = 100€, 100€ = 100€ or 10% =  calculation
          */
-        setDiscount: function (discount) {
+        setDiscount: function(discount) {
             const self = this;
             let value = '',
                 type = '';
@@ -853,25 +869,29 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
 
             if (discount && type === '%') {
                 Prom = Promise.resolve(discount);
-            } else if (discount) {
-                Prom = MoneyUtils.validatePrice(discount);
             } else {
-                Prom = Promise.resolve('-');
+                if (discount) {
+                    Prom = MoneyUtils.validatePrice(discount);
+                } else {
+                    Prom = Promise.resolve('-');
+                }
             }
 
-            return Prom.then(function (discount) {
-                if (discount && type === '%') {
-                    discount = (discount).toString().replace(/\%/g, '') + type;
-                    value = discount;
-                } else if (discount) {
-                    value = self.$Formatter.format(discount) + type;
+            return Prom.then(function(discountResult) {
+                if (discountResult && type === '%') {
+                    discountResult = (discountResult).toString().replace(/\%/g, '') + type;
+                    value = discountResult;
                 } else {
-                    value = '-';
+                    if (discountResult) {
+                        value = self.$Formatter.format(discountResult) + type;
+                    } else {
+                        value = '-';
+                    }
                 }
 
                 self.fireEvent('setDiscount', [self]);
 
-                self.setAttribute('discount', discount);
+                self.setAttribute('discount', discountResult);
                 self.$Discount.set('html', value);
             }).then(this.calc.bind(this));
         },
@@ -879,21 +899,21 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
         /**
          * Show the loader
          */
-        showLoader: function () {
+        showLoader: function() {
             this.$Loader.setStyle('display', null);
         },
 
         /**
          * Hide the loader
          */
-        hideLoader: function () {
+        hideLoader: function() {
             this.$Loader.setStyle('display', 'none');
         },
 
         /**
          * select the article
          */
-        select: function () {
+        select: function() {
             if (!this.$Elm) {
                 return;
             }
@@ -916,7 +936,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
         /**
          * unselect the article
          */
-        unselect: function () {
+        unselect: function() {
             if (!this.$Elm) {
                 return;
             }
@@ -935,7 +955,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
         /**
          * @return {boolean}
          */
-        isSelected: function () {
+        isSelected: function() {
             return this.$isSelected;
         },
 
@@ -946,7 +966,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
         /**
          * Opens the delete dialog
          */
-        openDeleteDialog: function () {
+        openDeleteDialog: function() {
             new QUIConfirm({
                 icon: 'fa fa-trash',
                 texticon: 'fa fa-trash',
@@ -968,11 +988,11 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
         /**
          * event : on title edit
          */
-        $onEditTitle: function () {
+        $onEditTitle: function() {
             this.$createEditField(
                 this.$Title,
                 this.getAttribute('title')
-            ).then(function (value) {
+            ).then(function(value) {
                 this.setTitle(value);
             }.bind(this));
         },
@@ -980,7 +1000,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
         /**
          * event : on description edit
          */
-        $onEditDescription: function () {
+        $onEditDescription: function() {
             if (this.$Editor) {
                 return;
             }
@@ -996,7 +1016,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
                 maxHeight: 600,
                 maxWidth: 800,
                 events: {
-                    onOpen: function (Win) {
+                    onOpen: function(Win) {
                         Win.Loader.show();
 
                         const Content = Win.getContent();
@@ -1020,7 +1040,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
                         Title.set('placeholder', QUILocale.get('quiqqer/system', 'title'));
                         Title.focus();
 
-                        Editors.getEditor(null).then(function (Editor) {
+                        Editors.getEditor(null).then(function(Editor) {
                             self.$Editor = Editor;
 
                             // minimal toolbar
@@ -1029,55 +1049,55 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
                                     [
                                         [
                                             {
-                                                type: "button",
-                                                button: "Source"
+                                                type: 'button',
+                                                button: 'Source'
                                             },
                                             {
-                                                type: "separator"
+                                                type: 'separator'
                                             },
                                             {
-                                                type: "button",
-                                                button: "Bold"
+                                                type: 'button',
+                                                button: 'Bold'
                                             },
                                             {
-                                                type: "button",
-                                                button: "Italic"
+                                                type: 'button',
+                                                button: 'Italic'
                                             },
                                             {
-                                                type: "button",
-                                                button: "Underline"
+                                                type: 'button',
+                                                button: 'Underline'
                                             },
                                             {
-                                                type: "separator"
+                                                type: 'separator'
                                             },
                                             {
-                                                type: "button",
-                                                button: "FontSize"
+                                                type: 'button',
+                                                button: 'FontSize'
                                             },
                                             {
-                                                type: "separator"
+                                                type: 'separator'
                                             },
                                             {
-                                                type: "button",
-                                                button: "RemoveFormat"
+                                                type: 'button',
+                                                button: 'RemoveFormat'
                                             },
                                             {
-                                                type: "separator"
+                                                type: 'separator'
                                             },
                                             {
-                                                type: "button",
-                                                button: "NumberedList"
+                                                type: 'button',
+                                                button: 'NumberedList'
                                             },
                                             {
-                                                type: "button",
-                                                button: "BulletedList"
+                                                type: 'button',
+                                                button: 'BulletedList'
                                             }
                                         ]
                                     ]
                                 ]
                             });
 
-                            self.$Editor.addEvent('onLoaded', function () {
+                            self.$Editor.addEvent('onLoaded', function() {
                                 self.$Editor.switchToWYSIWYG();
                                 self.$Editor.showToolbar();
                                 self.$Editor.setContent(self.getAttribute('description'));
@@ -1089,14 +1109,14 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
                             self.$Editor.setHeight(340);
                         });
 
-                        Title.addEvent('keyup', function (event) {
+                        Title.addEvent('keyup', function(event) {
                             if (event.key === 'enter') {
                                 Win.submit();
                             }
                         });
                     },
 
-                    onSubmit: function (Win) {
+                    onSubmit: function(Win) {
                         const description = self.$Editor.getContent();
 
                         Win.Loader.show();
@@ -1115,7 +1135,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
                         });
                     },
 
-                    onClose: function () {
+                    onClose: function() {
                         self.$Editor.destroy();
                         self.$Editor = null;
                     }
@@ -1126,11 +1146,11 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
         /**
          * event: on Article-Number edit
          */
-        $onEditArticleNo: function () {
+        $onEditArticleNo: function() {
             this.$createEditField(
                 this.$ArticleNo,
                 this.getAttribute('articleNo')
-            ).then(function (value) {
+            ).then(function(value) {
                 this.setArticleNo(value);
             }.bind(this));
         },
@@ -1138,12 +1158,12 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
         /**
          * event : on quantity edit
          */
-        $onEditQuantity: function () {
+        $onEditQuantity: function() {
             this.$createEditField(
                 this.$Quantity,
                 this.getAttribute('quantity'),
                 'number'
-            ).then(function (value) {
+            ).then(function(value) {
                 this.setQuantity(value);
             }.bind(this));
         },
@@ -1151,22 +1171,23 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
         /**
          * Edit quantity unit
          */
-        $onEditQuantityUnit: function () {
+        $onEditQuantityUnit: function() {
             const self = this;
 
             require([
                 'package/quiqqer/erp/bin/backend/controls/articles/product/QuantityUnitWindow'
-            ], function (QuantityUnitWindow) {
+            ], function(QuantityUnitWindow) {
                 new QuantityUnitWindow({
                     events: {
-                        onSubmit: function (Win, value, title) {
+                        onSubmit: function(Win, value, title) {
                             self.setQuantityUnit({
                                 id: value,
                                 title: title
                             });
 
                             QUIElements.simulateEvent(
-                                self.$Elm.getElement('.quiqqer-erp-backend-erpArticle-quantityUnit').getNext('.cell-editable'),
+                                self.$Elm.getElement('.quiqqer-erp-backend-erpArticle-quantityUnit').getNext(
+                                    '.cell-editable'),
                                 'click'
                             );
                         }
@@ -1178,14 +1199,14 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
         /**
          * event : on quantity edit
          */
-        $onEditUnitPriceQuantity: function () {
+        $onEditUnitPriceQuantity: function() {
             const self = this;
 
             this.$createEditField(
                 this.$UnitPrice,
                 this.getAttribute('unitPrice'),
                 'number'
-            ).then(function (value) {
+            ).then(function(value) {
                 self.setUnitPrice(value);
             });
         },
@@ -1193,16 +1214,16 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
         /**
          * event : on brutto price edit
          */
-        $onEditBruttoPrice: function () {
+        $onEditBruttoPrice: function() {
             const self = this;
 
             this.$createEditField(
                 this.$UnitPriceBrutto,
                 this.$UnitPriceBrutto.get('data-value'),
                 'number'
-            ).then(function (value) {
+            ).then(function(value) {
                 return self.getNettoPrice(value, false);
-            }).then(function (value) {
+            }).then(function(value) {
                 self.setUnitPrice(value);
             });
         },
@@ -1210,15 +1231,15 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
         /**
          * event: on edit VAT
          */
-        $onEditVat: function () {
+        $onEditVat: function() {
             const self = this;
 
             require([
                 'package/quiqqer/tax/bin/controls/taxList/AvailableTaxListWindow'
-            ], function (AvailableTaxListWindow) {
+            ], function(AvailableTaxListWindow) {
                 new AvailableTaxListWindow({
                     events: {
-                        onSubmit: function (Win, value) {
+                        onSubmit: function(Win, value) {
                             self.setVat(value);
 
                             QUIElements.simulateEvent(
@@ -1234,19 +1255,21 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
         /**
          * event: on edit discount
          */
-        $onEditDiscount: function () {
+        $onEditDiscount: function() {
             let discount = this.getAttribute('discount');
 
             if (discount === '-' || discount === false || !discount) {
                 discount = '';
-            } else if (!discount.toString().match('%')) {
-                discount = parseFloat(discount);
+            } else {
+                if (!discount.toString().match('%')) {
+                    discount = parseFloat(discount);
+                }
             }
 
             this.$createEditField(
                 this.$Discount,
                 discount
-            ).then(function (value) {
+            ).then(function(value) {
                 this.setDiscount(value);
             }.bind(this));
         },
@@ -1254,17 +1277,19 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
         /**
          * event: on brutto edit discount
          */
-        $onEditBruttoDiscount: function () {
+        $onEditBruttoDiscount: function() {
             const self = this;
             let discount = this.$DiscountBrutto.get('data-value');
 
             if (discount === '-' || discount === false || !discount) {
                 discount = '';
-            } else if (!discount.toString().match('%')) {
-                discount = parseFloat(discount);
+            } else {
+                if (!discount.toString().match('%')) {
+                    discount = parseFloat(discount);
+                }
             }
 
-            this.$createEditField(this.$DiscountBrutto, discount).then(function (value) {
+            this.$createEditField(this.$DiscountBrutto, discount).then(function(value) {
                 if (value.match('%')) {
                     return self.setDiscount(value);
                 }
@@ -1273,8 +1298,8 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
                     return self.setDiscount(0);
                 }
 
-                return self.getNettoPrice(value).then(function (value) {
-                    self.setDiscount(value);
+                return self.getNettoPrice(value).then(function(nettoValue) {
+                    self.setDiscount(nettoValue);
                 });
             });
         },
@@ -1282,7 +1307,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
         /**
          * Edit custom fields
          */
-        $onCustomFieldClick: function () {
+        $onCustomFieldClick: function() {
             this.fireEvent('editCustomFields', [this]);
         },
 
@@ -1295,12 +1320,12 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
          * @param {Object} [inputAttributes] - input attributes
          * @returns {Promise}
          */
-        $createEditField: function (Container, value, type, inputAttributes) {
+        $createEditField: function(Container, value, type, inputAttributes) {
             const self = this;
 
             type = type || 'text';
 
-            return new Promise(function (resolve) {
+            return new Promise(function(resolve) {
                 const Edit = new Element('input', {
                     type: type,
                     value: value,
@@ -1332,17 +1357,17 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
                 Edit.focus();
                 Edit.select();
 
-                const onFinish = function () {
+                const onFinish = function() {
                     Edit.destroy();
                     resolve(Edit.value);
                 };
 
                 Edit.addEvents({
-                    click: function (event) {
+                    click: function(event) {
                         event.stop();
                     },
 
-                    keydown: function (event) {
+                    keydown: function(event) {
                         self.fireEvent('editKeyDown', [
                             self,
                             event
@@ -1368,7 +1393,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
          *
          * @param event
          */
-        $editNext: function (event) {
+        $editNext: function(event) {
             let Cell = event.target;
 
             if (!Cell.hasClass('cell')) {
@@ -1396,8 +1421,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
                     PreviousArticle = Article.getPrevious('.article');
 
                     if (!PreviousArticle) {
-                        PreviousArticle = Cell.getParent('.quiqqer-erp-backend-erpItems-items')
-                            .getLast('.article');
+                        PreviousArticle = Cell.getParent('.quiqqer-erp-backend-erpItems-items').getLast('.article');
                     }
 
                     Next = PreviousArticle.getLast('.cell-editable');
@@ -1421,8 +1445,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
                     NextArticle = Article.getNext('.article');
 
                     if (!NextArticle) {
-                        NextArticle = Cell.getParent('.quiqqer-erp-backend-erpItems-items')
-                            .getElement('.article');
+                        NextArticle = Cell.getParent('.quiqqer-erp-backend-erpItems-items').getElement('.article');
                     }
 
                     Next = NextArticle.getElement('.cell-editable');
@@ -1446,11 +1469,11 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
          *
          * @return {Promise}
          */
-        $loadDefaultQuantityUnit: function () {
+        $loadDefaultQuantityUnit: function() {
             const self = this;
 
-            return new Promise(function (resolve) {
-                QUIAjax.get('package_quiqqer_erp_ajax_products_getQuantityUnitList', function (unitList) {
+            return new Promise(function(resolve) {
+                QUIAjax.get('package_quiqqer_erp_ajax_products_getQuantityUnitList', function(unitList) {
                     let i, title, entry;
                     let current = QUILocale.getCurrent();
 
@@ -1492,10 +1515,10 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
          * @param formatted
          * @return {Promise}
          */
-        getNettoPrice: function (value, formatted) {
+        getNettoPrice: function(value, formatted) {
             const self = this;
 
-            return new Promise(function (resolve) {
+            return new Promise(function(resolve) {
                 QUIAjax.get('package_quiqqer_erp_ajax_calcNettoPrice', resolve, {
                     'package': 'quiqqer/erp',
                     price: value,
@@ -1512,10 +1535,10 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
          * @param formatted
          * @return {Promise}
          */
-        getBruttoPrice: function (value, formatted) {
+        getBruttoPrice: function(value, formatted) {
             const self = this;
 
-            return new Promise(function (resolve) {
+            return new Promise(function(resolve) {
                 QUIAjax.get('package_quiqqer_erp_ajax_calcBruttoPrice', resolve, {
                     'package': 'quiqqer/erp',
                     price: value,
@@ -1531,7 +1554,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
          * @param {String} description
          * @return {Promise}
          */
-        $sanitizeArticleDescription: function (description) {
+        $sanitizeArticleDescription: function(description) {
             return new Promise((resolve, reject) => {
                 QUIAjax.get('package_quiqqer_erp_ajax_utils_sanitizeArticleDescription', resolve, {
                     'package': 'quiqqer/erp',
diff --git a/bin/backend/controls/articles/ArticleList.js b/bin/backend/controls/articles/ArticleList.js
index c4f89615bf50dc7dab9536925c7f380627661cd8..6575823da6b7915e09beeffdcd2699f06740f179 100644
--- a/bin/backend/controls/articles/ArticleList.js
+++ b/bin/backend/controls/articles/ArticleList.js
@@ -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
          *
diff --git a/src/QUI/ERP/Accounting/Calc.php b/src/QUI/ERP/Accounting/Calc.php
index 0c92dec8cf39588f09c7369b149dc7df476eb503..67ca56ed35842dbef0f9537f08b85b8873716ca8 100644
--- a/src/QUI/ERP/Accounting/Calc.php
+++ b/src/QUI/ERP/Accounting/Calc.php
@@ -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