diff --git a/bin/backend/controls/articles/ArticleList.js b/bin/backend/controls/articles/ArticleList.js index a8487494839c608ae00962e7b73ece78622105fa..c4f89615bf50dc7dab9536925c7f380627661cd8 100644 --- a/bin/backend/controls/articles/ArticleList.js +++ b/bin/backend/controls/articles/ArticleList.js @@ -27,9 +27,10 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ 'text!package/quiqqer/erp/bin/backend/controls/articles/ArticleList.sortablePlaceholder.html', 'css!package/quiqqer/erp/bin/backend/controls/articles/ArticleList.css' -], function (QUI, QUIControl, QUISwitch, QUILoader, Mustache, - QUIAjax, QUILocale, AddProductWindow, Article, Sortables, template, templateSortablePlaceholder) { - "use strict"; +], function(QUI, QUIControl, QUISwitch, QUILoader, Mustache, + QUIAjax, QUILocale, AddProductWindow, Article, Sortables, template, templateSortablePlaceholder +) { + 'use strict'; const lg = 'quiqqer/erp'; @@ -57,7 +58,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ nettoinput: true }, - initialize: function (options) { + initialize: function(options) { this.parent(options); this.$articles = []; @@ -94,7 +95,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * * @returns {HTMLDivElement} */ - create: function () { + create: function() { const self = this; this.$Elm = this.parent(); @@ -130,7 +131,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ switchTextOff: 'brutto', switchTextOffIcon: false, events: { - onChange: function () { + onChange: function() { self.$Loader.show(); self.setAttribute('nettoinput', !!self.$Switch.getStatus()); self.$refreshNettoBruttoDisplay(); @@ -143,7 +144,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ this.$Elm.getElement('.quiqqer-erp-backend-erpItems-container-switch-btn') ); - SwitchDesc.addEvent('click', function () { + SwitchDesc.addEvent('click', function() { self.$Switch.toggle(); }); @@ -155,8 +156,8 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ /** * event: on inject */ - $onInject: function () { - (function () { + $onInject: function() { + (function() { if (this.$articles.length) { this.$articles[0].select(); } @@ -168,10 +169,10 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * * @returns {Object} */ - serialize: function () { - const articles = this.$getArticles().map(function (Article) { - const attr = Article.getAttributes(); - attr.control = typeOf(Article); + serialize: function() { + const articles = this.$getArticles().map(function(ArticleInstance) { + const attr = ArticleInstance.getAttributes(); + attr.control = typeOf(ArticleInstance); return attr; }); @@ -187,7 +188,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * * @return {[]} */ - $getArticles: function () { + $getArticles: function() { return this.$articles; }, @@ -196,7 +197,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * * @returns {number} */ - count: function () { + count: function() { return this.$articles.length; }, @@ -209,7 +210,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * @param {Object|String} list * @return {Promise} */ - unserialize: function (list) { + unserialize: function(list) { const self = this; let data = {}; @@ -222,29 +223,34 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ data = list; } - if ("priceFactors" in data) { + if ('priceFactors' in data) { this.$priceFactors = data.priceFactors; } - if ("calculations" in data) { + if ('calculations' in data) { this.$calculations.calculations = data.calculations; + + if (typeof data.calculations.isNetto !== 'undefined' && data.calculations.isNetto === false) { + this.setAttribute('nettoinput', false); + this.$refreshNettoBruttoDisplay(); + } } - if (!("articles" in data)) { + if (!('articles' in data)) { return Promise.resolve(); } this.$articles = []; - const controls = data.articles.map(function (Article) { - if (typeof Article.control !== 'undefined' && Article.control !== '') { - return Article.control; + const controls = data.articles.map(function(ArticleInstance) { + if (typeof ArticleInstance.control !== 'undefined' && ArticleInstance.control !== '') { + return ArticleInstance.control; } return 'package/quiqqer/erp/bin/backend/controls/articles/Article'; }).unique(); - require(controls, function () { // dont use () => { + require(controls, function() { // dont use () => { let i, len, article, index; for (i = 0, len = data.articles.length; i < len; i++) { @@ -275,11 +281,11 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * * @param {Object} user */ - setUser: function (user) { + setUser: function(user) { this.$user = user; - this.$articles.each(function (Article) { - Article.setUser(this.$user); + this.$articles.each(function(ArticleInstance) { + ArticleInstance.setUser(this.$user); }.bind(this)); }, @@ -288,7 +294,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * * @return {Object|*|{}} */ - getUser: function () { + getUser: function() { return this.$user; }, @@ -298,7 +304,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * * @param {Object} Child */ - addArticle: function (Child) { + addArticle: function(Child) { if (typeof Child !== 'object') { return; } @@ -340,7 +346,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * @param {Object} NewArticle * @param {Number} position */ - replaceArticle: function (NewArticle, position) { + replaceArticle: function(NewArticle, position) { if (typeof NewArticle !== 'object') { return; } @@ -349,8 +355,8 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ return; } - const Wanted = this.$articles.find(function (Article) { - return Article.getAttribute('position') === position; + const Wanted = this.$articles.find(function(ArticleInstance) { + return ArticleInstance.getAttribute('position') === position; }); this.addArticle(NewArticle); @@ -370,7 +376,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ /** * Insert a new empty product */ - insertNewProduct: function () { + insertNewProduct: function() { this.addArticle(new Article()); }, @@ -379,10 +385,10 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * * @return {Array} */ - save: function () { - return this.$articles.map(function (Article) { - return Object.merge(Article.getAttributes(), { - control: Article.getType() + save: function() { + return this.$articles.map(function(ArticleInstance) { + return Object.merge(ArticleInstance.getAttributes(), { + control: ArticleInstance.getType() }); }); }, @@ -390,7 +396,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ /** * Calculate the list */ - $calc: function () { + $calc: function() { return new Promise((resolve) => { if (this.$calculationTimer) { clearTimeout(this.$calculationTimer); @@ -399,7 +405,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ const self = this; - this.$calculationTimer = (function () { + this.$calculationTimer = (function() { self.$executeCalculation().then(resolve); }).delay(500); }); @@ -414,9 +420,9 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * * @returns {Promise} */ - $executeCalculation: function () { + $executeCalculation: function() { const self = this; - + if (this.$isIncalculationFrame) { this.fireEvent('calc', [ this, @@ -467,7 +473,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ user: JSON.encode(this.$user), currency: this.getAttribute('currency'), nettoInput: this.getAttribute('nettoinput') ? 1 : 0, - onError: function (err) { + onError: function(err) { console.error(err); reject(); } @@ -480,9 +486,9 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * * @return {Array} */ - $getArticleDataForCalculation: function () { - return this.$articles.map(function (Article) { - return Article.getAttributes(); + $getArticleDataForCalculation: function() { + return this.$articles.map(function(ArticleInstance) { + return ArticleInstance.getAttributes(); }); }, @@ -491,7 +497,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * * @returns {{currencyData: {}, isEuVat: number, isNetto: boolean, nettoSubSum: number, nettoSum: number, subSum: number, sum: number, vatArray: Array, vatText: Array}|*} */ - getCalculation: function () { + getCalculation: function() { return this.$calculations; }, @@ -500,7 +506,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * * @returns {number} */ - getVat: function () { + getVat: function() { const calculations = this.getCalculation(); const articles = calculations.articles; const calc = calculations.calculations; @@ -524,7 +530,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * * @return {[]} */ - getPriceFactors: function () { + getPriceFactors: function() { return this.$priceFactors; }, @@ -533,7 +539,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * * @param no */ - removePriceFactor: function (no) { + removePriceFactor: function(no) { let newList = []; for (let i = 0, len = this.$priceFactors.length; i < len; i++) { @@ -566,7 +572,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * } * @param priceFactor */ - addPriceFactor: function (priceFactor) { + addPriceFactor: function(priceFactor) { const prio = priceFactor.index; if (prio === this.$priceFactors.length) { @@ -601,9 +607,11 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * @param index * @param priceFactor */ - editPriceFactor: function (index, priceFactor) { + editPriceFactor: function(index, priceFactor) { for (let k in priceFactor) { - this.$priceFactors[index][k] = priceFactor[k]; + if (priceFactor.hasOwnProperty(k)) { + this.$priceFactors[index][k] = priceFactor[k]; + } } }, @@ -612,7 +620,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * * @returns {number} */ - countPriceFactors: function () { + countPriceFactors: function() { return this.$priceFactors.length; }, @@ -623,7 +631,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ /** * Toggles the sorting */ - toggleSorting: function () { + toggleSorting: function() { if (this.$sorting) { this.disableSorting(); return; @@ -636,17 +644,17 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * Enables the sorting * Articles can be sorted by drag and drop */ - enableSorting: function () { + enableSorting: function() { const self = this; const Elm = this.getElm(), elements = Elm.getElements('.article'); - elements.each(function (Node) { - const Article = QUI.Controls.getById(Node.get('data-quiid')); - const attributes = Article.getAttributes(); + elements.each(function(Node) { + const ArticleInstance = QUI.Controls.getById(Node.get('data-quiid')); + const attributes = ArticleInstance.getAttributes(); - Article.addEvents({ + ArticleInstance.addEvents({ onSetPosition: self.$onArticleSetPosition }); @@ -663,7 +671,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ transition: 'elastic:out' }, - clone: function (event) { + clone: function(event) { let Target = event.target; if (!Target.hasClass('article')) { @@ -685,7 +693,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ }); }, - onStart: function (element) { + onStart: function(element) { element.addClass('quiqqer-erp-sortableClone'); self.$Container.setStyles({ @@ -695,7 +703,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ }); }, - onComplete: function (element) { + onComplete: function(element) { element.removeClass('quiqqer-erp-sortableClone'); self.$Container.setStyles({ @@ -715,7 +723,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * Disables the sorting * Articles can not be sorted */ - disableSorting: function () { + disableSorting: function() { this.$sorting = false; const self = this, @@ -724,10 +732,10 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ Elm.getElements('.quiqqer-erp-sortableClone-placeholder').destroy(); - elements.each(function (Node) { - const Article = QUI.Controls.getById(Node.get('data-quiid')); + elements.each(function(Node) { + const ArticleInstance = QUI.Controls.getById(Node.get('data-quiid')); - Article.removeEvents({ + ArticleInstance.removeEvents({ onSetPosition: self.$onArticleSetPosition }); }); @@ -735,7 +743,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ this.$Sortables.detach(); this.$Sortables = null; - this.$articles.sort(function (A, B) { + this.$articles.sort(function(A, B) { return A.getAttribute('position') - B.getAttribute('position'); }); }, @@ -745,7 +753,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * * @return {boolean} */ - isSortingEnabled: function () { + isSortingEnabled: function() { return this.$sorting; }, @@ -754,24 +762,25 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * * @param Article */ - $onArticleSetPosition: function (Article) { - Article.getElm() - .getElement('.quiqqer-erp-backend-erpArticlePlaceholder-pos') - .set('html', Article.getAttribute('position')); + $onArticleSetPosition: function(ArticleInstance) { + ArticleInstance.getElm().getElement('.quiqqer-erp-backend-erpArticlePlaceholder-pos').set( + 'html', + ArticleInstance.getAttribute('position') + ); }, /** * Recalculate the Position of all Articles */ - $recalculatePositions: function () { - let i, len, Article; + $recalculatePositions: function() { + let i, len, ArticleInstance; const Elm = this.getElm(), elements = Elm.getElements('.article'); for (i = 0, len = elements.length; i < len; i++) { - Article = QUI.Controls.getById(elements[i].get('data-quiid')); - Article.setPosition(i + 1); + ArticleInstance = QUI.Controls.getById(elements[i].get('data-quiid')); + ArticleInstance.setPosition(i + 1); } }, @@ -782,9 +791,9 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ /** * event : on article delete * - * @param {Object} Article + * @param {Object} ArticleInstance */ - $onArticleDelete: function (Article) { + $onArticleDelete: function(ArticleInstance) { if (this.$selectedArticle) { this.$selectedArticle.unselect(); } @@ -796,7 +805,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ position = 1; for (i = 0, len = this.$articles.length; i < len; i++) { - if (this.$articles[i].getAttribute('position') === Article.getAttribute('position')) { + if (this.$articles[i].getAttribute('position') === ArticleInstance.getAttribute('position')) { continue; } @@ -809,7 +818,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ this.$articles = articles; - this.$executeCalculation().then(function () { + this.$executeCalculation().then(function() { if (self.$articles.length) { self.$articles[0].select(); } @@ -821,13 +830,13 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * * @param {Object} Article */ - $onArticleSelect: function (Article) { + $onArticleSelect: function(ArticleInstance) { if (this.$selectedArticle && - this.$selectedArticle !== Article) { + this.$selectedArticle !== ArticleInstance) { this.$selectedArticle.unselect(); } - this.$selectedArticle = Article; + this.$selectedArticle = ArticleInstance; this.fireEvent('articleSelect', [ this, this.$selectedArticle @@ -839,8 +848,8 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * * @param Article */ - $onArticleUnSelect: function (Article) { - if (this.$selectedArticle === Article) { + $onArticleUnSelect: function(ArticleInstance) { + if (this.$selectedArticle === ArticleInstance) { this.$selectedArticle = null; this.fireEvent('articleUnSelect', [ this, @@ -854,10 +863,10 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * * @param Article */ - $onArticleReplace: function (Article) { + $onArticleReplace: function(ArticleInstance) { this.fireEvent('articleReplaceClick', [ this, - Article + ArticleInstance ]); }, @@ -866,7 +875,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * * @param {Object} EditArticle - package/quiqqer/erp/bin/backend/controls/articles/Article */ - $onArticleEditCustomFields: function (EditArticle) { + $onArticleEditCustomFields: function(EditArticle) { const ArticleCustomFields = EditArticle.getAttribute('customFields'); const FieldValues = {}; @@ -913,14 +922,14 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * * @returns {null|Object} */ - getSelectedArticle: function () { + getSelectedArticle: function() { return this.$selectedArticle; }, /** * refresh the brutto / netto switch display */ - $refreshNettoBruttoDisplay: function () { + $refreshNettoBruttoDisplay: function() { const SwitchDesc = this.$Elm.getElement('.quiqqer-erp-backend-erpItems-container-switch-desc'); if (this.getAttribute('nettoinput')) {