diff --git a/bin/backend/controls/articles/Article.html b/bin/backend/controls/articles/Article.html index 3192172e363392f0267dba519b395f487fe21678..5860f12866c59650ad63f4862649c7a08938c947 100644 --- a/bin/backend/controls/articles/Article.html +++ b/bin/backend/controls/articles/Article.html @@ -1,3 +1,8 @@ +{{#showSelectCheckbox}} +<div class="quiqqer-erp-backend-erpArticle-selectbox cell"> + <input type="checkbox"/> +</div> +{{/showSelectCheckbox}} <div class="quiqqer-erp-backend-erpArticle-pos cell"></div> <div class="quiqqer-erp-backend-erpArticle-articleNo cell cell-editable"></div> <div class="quiqqer-erp-backend-erpArticle-text cell"></div> diff --git a/bin/backend/controls/articles/Article.js b/bin/backend/controls/articles/Article.js index f7e11af813fd007617995c61dd7012bc058ed41b..d076abb8de8c9a651b6641ba028e69e6c237a6dd 100644 --- a/bin/backend/controls/articles/Article.js +++ b/bin/backend/controls/articles/Article.js @@ -82,7 +82,26 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [ vat : '', 'class' : 'QUI\\ERP\\Accounting\\Article', params : false, // mixed value for API Articles - currency : false + currency : false, + + showSelectCheckbox: false, // select this article via checkbox instead of click + + // Determine article fields that can be edited + editFields: { + articleNo : true, + titleAndDescription: true, + quantity : true, + quantityUnit : true, + unitPrice : true, + vat : true, + discount : true + }, + + User: false, // special user object (see this.addUser) + + deletable : true, // show "delete" button + replaceable: true, // show "replace" button + calcByList : true // calculate article prices by the associated ArticleList }, initialize: function (options) { @@ -93,12 +112,13 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [ this.$calculations = {}; this.$bruttoCalc = {}; - this.$Position = null; - this.$Quantity = null; - this.$UnitPrice = null; - this.$Price = null; - this.$VAT = null; - this.$Total = null; + this.$SelectCheckbox = null; + this.$Position = null; + this.$Quantity = null; + this.$UnitPrice = null; + this.$Price = null; + this.$VAT = null; + this.$Total = null; this.$Text = null; this.$Title = null; @@ -106,6 +126,8 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [ this.$Editor = null; this.$textIsHtml = false; + this.$isSelected = false; + this.$Loader = null; this.$created = false; @@ -126,20 +148,40 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [ * @returns {HTMLDivElement} */ create: function () { + var self = this; + this.$Elm = this.parent(); this.$Elm.addClass('quiqqer-erp-backend-erpArticle'); + var showSelectCheckbox = this.getAttribute('showSelectCheckbox'); + this.$Elm.set({ - html : Mustache.render(template), + html : Mustache.render(template, { + showSelectCheckbox: showSelectCheckbox + }), 'tabindex': -1, styles : { outline: 'none' - }, - events : { - click: this.select } }); + var EditFields = this.getAttribute('editFields'); + + if (showSelectCheckbox) { + this.$SelectCheckbox = this.$Elm.getElement('.quiqqer-erp-backend-erpArticle-selectbox > input'); + this.$SelectCheckbox.addEvent('change', function (event) { + if (event.target.checked) { + self.select(); + } else { + self.unselect(); + } + }); + } else { + this.$Elm.set('events', { + click: this.select + }); + } + this.$Position = this.$Elm.getElement('.quiqqer-erp-backend-erpArticle-pos'); this.$ArticleNo = this.$Elm.getElement('.quiqqer-erp-backend-erpArticle-articleNo'); this.$Text = this.$Elm.getElement('.quiqqer-erp-backend-erpArticle-text'); @@ -152,37 +194,107 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [ this.$Total = this.$Elm.getElement('.quiqqer-erp-backend-erpArticle-total'); this.$Buttons = this.$Elm.getElement('.quiqqer-erp-backend-erpArticle-buttons'); - this.$ArticleNo.addEvent('click', this.$onEditArticleNo); - this.$Quantity.addEvent('click', this.$onEditQuantity); - this.$UnitPrice.addEvent('click', this.$onEditUnitPriceQuantity); - this.$VAT.addEvent('click', this.$onEditVat); - this.$Discount.addEvent('click', this.$onEditDiscount); - this.$QuantityUnit.addEvent('click', this.$onEditQuantityUnit); + if ('articleNo' in EditFields && EditFields.articleNo) { + this.$ArticleNo.addEvent('click', this.$onEditArticleNo); + } else { + this.$ArticleNo.removeClass('cell-editable'); + } + + if ('quantity' in EditFields && EditFields.quantity) { + this.$Quantity.addEvent('click', this.$onEditQuantity); + } else { + this.$Quantity.removeClass('cell-editable'); + } + + if ('unitPrice' in EditFields && EditFields.unitPrice) { + this.$UnitPrice.addEvent('click', this.$onEditUnitPriceQuantity); + } else { + this.$UnitPrice.removeClass('cell-editable'); + } + + if ('vat' in EditFields && EditFields.vat) { + this.$VAT.addEvent('click', this.$onEditVat); + + // Special VAT cell events + this.$VAT.addEvent('keydown', function (event) { + if (event.key === 'tab') { + this.$editNext(event); + return; + } + + if (event.key === 'enter') { + QUIElements.simulateEvent(event.target, 'click'); + } + }.bind(this)); + + this.$VAT.addEvent('blur', function (event) { + if (event.key === 'tab') { + this.$editNext(event); + } + }.bind(this)); + } else { + this.$VAT.removeClass('cell-editable'); + } + + if ('discount' in EditFields && EditFields.discount) { + this.$Discount.addEvent('click', this.$onEditDiscount); + } else { + this.$Discount.removeClass('cell-editable'); + } + + if ('quantityUnit' in EditFields && EditFields.quantityUnit) { + this.$QuantityUnit.addEvent('click', this.$onEditQuantityUnit); + + // Special quantity unit cell events + this.$QuantityUnit.addEvent('keydown', function (event) { + if (event.key === 'tab') { + this.$editNext(event); + return; + } + + if (event.key === 'enter') { + QUIElements.simulateEvent(event.target, 'click'); + } + }.bind(this)); + + this.$QuantityUnit.addEvent('blur', function (event) { + if (event.key === 'tab') { + this.$editNext(event); + } + }.bind(this)); + } else { + this.$QuantityUnit.removeClass('cell-editable'); + } // brutto stuff this.$UnitPriceBrutto = new Element('div', { 'class': 'quiqqer-erp-backend-erpArticle-unitPrice-brutto cell cell-editable', - events : { - click: this.$onEditBruttoPrice - } }).inject(this.$UnitPrice, 'after'); this.$PriceBrutto = new Element('div', { 'class': 'quiqqer-erp-backend-erpArticle-price-brutto cell' }).inject(this.$Price, 'after'); + if ('unitPrice' in EditFields && EditFields.unitPrice) { + this.$UnitPriceBrutto.addEvent('click', this.$onEditBruttoPrice); + } else { + this.$UnitPriceBrutto.removeClass('cell-editable'); + } + this.$DiscountBrutto = new Element('div', { 'class': 'quiqqer-erp-backend-erpArticle-discount-brutto cell cell-editable', - events : { - click: this.$onEditBruttoDiscount - } }).inject(this.$Discount, 'after'); + if ('discount' in EditFields && EditFields.discount) { + this.$DiscountBrutto.addEvent('click', this.$onEditBruttoDiscount); + } else { + this.$DiscountBrutto.removeClass('cell-editable'); + } + this.$TotalBrutto = new Element('div', { 'class': 'quiqqer-erp-backend-erpArticle-total-brutto cell' }).inject(this.$Total, 'after'); - this.$Loader = new Element('div', { html : '<span class="fa fa-spinner fa-spin"></span>', styles: { @@ -202,65 +314,32 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [ this.setPosition(this.getAttribute('position')); } - this.$Title = new Element('div', { 'class': 'quiqqer-erp-backend-erpArticle-text-title cell-editable' }).inject(this.$Text); - this.$Title.addEvent('click', this.$onEditTitle); - - new QUIButton({ - 'class': 'quiqqer-erp-backend-erpArticle-text-btn-editor', - title : QUILocale.get(lg, 'erp.articleList.article.button.editor'), - icon : 'fa fa-edit', - events : { - onClick: this.$onEditDescription - } - }).inject(this.$Text); - this.$Description = new Element('div', { 'class': 'quiqqer-erp-backend-erpArticle-text-description cell-editable quiqqer-erp-backend-erpArticle__cell_hidden' }).inject(this.$Text); - this.$Description.addEvent('click', this.$onEditDescription); - - this.$Elm.getElements('.cell-editable').set('tabindex', -1); - - // Special VAT cell events - this.$VAT.addEvent('keydown', function (event) { - if (event.key === 'tab') { - this.$editNext(event); - return; - } - - if (event.key === 'enter') { - QUIElements.simulateEvent(event.target, 'click'); - } - }.bind(this)); - - this.$VAT.addEvent('blur', function (event) { - if (event.key === 'tab') { - this.$editNext(event); - } - }.bind(this)); + if ('titleAndDescription' in EditFields && EditFields.titleAndDescription) { + this.$Title.addEvent('click', this.$onEditTitle); + this.$Description.addEvent('click', this.$onEditDescription); - // Special quantity unit cell events - this.$QuantityUnit.addEvent('keydown', function (event) { - if (event.key === 'tab') { - this.$editNext(event); - return; - } - - if (event.key === 'enter') { - QUIElements.simulateEvent(event.target, 'click'); - } - }.bind(this)); + new QUIButton({ + 'class': 'quiqqer-erp-backend-erpArticle-text-btn-editor', + title : QUILocale.get(lg, 'erp.articleList.article.button.editor'), + icon : 'fa fa-edit', + events : { + onClick: this.$onEditDescription + } + }).inject(this.$Text); + } else { + this.$Title.removeClass('cell-editable'); + this.$Description.removeClass('cell-editable'); + } - this.$QuantityUnit.addEvent('blur', function (event) { - if (event.key === 'tab') { - this.$editNext(event); - } - }.bind(this)); + this.$Elm.getElements('.cell-editable').set('tabindex', -1); this.setArticleNo(this.getAttribute('articleNo')); this.setVat(this.getAttribute('vat')); @@ -279,29 +358,39 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [ } // edit buttons - new QUIButton({ - title : QUILocale.get(lg, 'erp.articleList.article.button.replace'), - icon : 'fa fa-retweet', - styles: { - 'float': 'none' - }, - events: { - onClick: this.$onReplaceClick - } - }).inject(this.$Buttons); + if (this.getAttribute('replaceable')) { + new QUIButton({ + title : QUILocale.get(lg, 'erp.articleList.article.button.replace'), + icon : 'fa fa-retweet', + styles: { + 'float': 'none' + }, + events: { + onClick: this.$onReplaceClick + } + }).inject(this.$Buttons); + } - new QUIButton({ - title : QUILocale.get(lg, 'erp.articleList.article.button.delete'), - icon : 'fa fa-trash', - styles: { - 'float': 'none' - }, - events: { - onClick: this.openDeleteDialog - } - }).inject(this.$Buttons); + if (this.getAttribute('deletable')) { + new QUIButton({ + title : QUILocale.get(lg, 'erp.articleList.article.button.delete'), + icon : 'fa fa-trash', + styles: { + 'float': 'none' + }, + events: { + onClick: this.openDeleteDialog + } + }).inject(this.$Buttons); + } this.$created = true; + + // User + if (this.getAttribute('User')) { + this.$user = this.getAttribute('User'); + } + this.calc(); this.addEvent('onEditKeyDown', function (me, event) { @@ -434,18 +523,20 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [ $calc: function () { var Calc; - var self = this, - attr = self.getAttributes(), - pos = parseInt(attr.position); + var self = this, + attr = self.getAttributes(), + pos = parseInt(attr.position), + calcByList = false; - if (this.getAttribute('List')) { - Calc = this.getAttribute('List').$executeCalculation(); + if (this.getAttribute('calcByList') && this.getAttribute('List')) { + Calc = this.getAttribute('List').$executeCalculation(); + calcByList = true; } else { Calc = new Promise(function (resolve, reject) { QUIAjax.get('package_quiqqer_erp_ajax_products_calc', resolve, { 'package': 'quiqqer/erp', onError : reject, - params : JSON.encode({ + articles : JSON.encode({ articles: [attr] }), user : JSON.encode(self.$user) @@ -454,14 +545,22 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [ } return Calc.then(function (result) { + var article; + var brutto; var articles = result.articles; - var article = articles.filter(function (article) { - return parseInt(article.position) === pos; - })[0]; - var brutto = result.brutto.articles.filter(function (article) { - return parseInt(article.position) === pos; - })[0]; + if (!calcByList) { + article = articles[0]; + brutto = result.brutto.articles[0]; + } else { + article = articles.filter(function (article) { + return parseInt(article.position) === pos; + })[0]; + + brutto = result.brutto.articles.filter(function (article) { + return parseInt(article.position) === pos; + })[0]; + } self.$calculations = article; self.$bruttoCalc = brutto; @@ -763,6 +862,13 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [ } this.$Elm.addClass('quiqqer-erp-backend-erpArticle-select'); + + if (this.$SelectCheckbox) { + this.$SelectCheckbox.checked = true; + } + + this.$isSelected = true; + this.fireEvent('select', [this]); }, @@ -775,9 +881,23 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [ } this.$Elm.removeClass('quiqqer-erp-backend-erpArticle-select'); + + if (this.$SelectCheckbox) { + this.$SelectCheckbox.checked = false; + } + + this.$isSelected = false; + this.fireEvent('unSelect', [this]); }, + /** + * @return {boolean} + */ + isSelected: function () { + return this.$isSelected; + }, + /** * Dialogs */ diff --git a/bin/backend/controls/articles/ArticleList.js b/bin/backend/controls/articles/ArticleList.js index 1a3041e029bea453d426b19507d242e5ad84d60e..2d83c975842a752f0c65ffdc9919c8bbde97b708 100644 --- a/bin/backend/controls/articles/ArticleList.js +++ b/bin/backend/controls/articles/ArticleList.js @@ -44,7 +44,8 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ '$calc', '$onInject', '$executeCalculation', - '$refreshNettoBruttoDisplay' + '$refreshNettoBruttoDisplay', + '$getArticleDataForCalculation' ], options: { @@ -157,7 +158,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ * @returns {Object} */ serialize: function () { - var articles = this.$articles.map(function (Article) { + var articles = this.$getArticles().map(function (Article) { var attr = Article.getAttributes(); attr.control = typeOf(Article); @@ -170,6 +171,15 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ }; }, + /** + * Get internal article list + * + * @return {[]} + */ + $getArticles: function () { + return this.$articles; + }, + /** * Unserialize the list * @@ -395,9 +405,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ this.$calculationRunning = true; return new Promise(function (resolve, reject) { - var articles = self.$articles.map(function (Article) { - return Article.getAttributes(); - }); + var articles = self.$getArticleDataForCalculation(); QUIAjax.get('package_quiqqer_erp_ajax_products_calc', function (result) { self.$calculations = result; @@ -423,6 +431,17 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ }); }, + /** + * Get article data used for calculation + * + * @return {Array} + */ + $getArticleDataForCalculation: function () { + return this.$articles.map(function (Article) { + return Article.getAttributes(); + }); + }, + /** * Return the current calculations * @@ -598,8 +617,8 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [ */ $onArticleSetPosition: function (Article) { Article.getElm() - .getElement('.quiqqer-erp-backend-erpArticlePlaceholder-pos') - .set('html', Article.getAttribute('position')); + .getElement('.quiqqer-erp-backend-erpArticlePlaceholder-pos') + .set('html', Article.getAttribute('position')); }, /** diff --git a/bin/backend/controls/articles/ArticleSummary.html b/bin/backend/controls/articles/ArticleSummary.html index aca37eae5f8a06b33e1013a8ab4be1bfc595f842..a9037e63cc00c264ce10c73e2978895af51355b4 100644 --- a/bin/backend/controls/articles/ArticleSummary.html +++ b/bin/backend/controls/articles/ArticleSummary.html @@ -1,3 +1,4 @@ +{{#showPosSummary}} <div class="quiqqer-erp-backend-temporaryErp-summary-pos"> <div class="quiqqer-erp-backend-temporaryErp-summary-pos-title">{{labelPosInfo}}:</div> @@ -10,7 +11,7 @@ <span class="brutto-value"></span> </div> </div> - +{{/showPosSummary}} <div class="quiqqer-erp-backend-temporaryErp-summary-total"> <div class="quiqqer-erp-backend-temporaryErp-summary-total-title">{{labelSums}}:</div> diff --git a/bin/backend/controls/articles/ArticleSummary.js b/bin/backend/controls/articles/ArticleSummary.js index db0f0c8fbc2ea36887c4d64d1f6ad3a99bf9cbd3..9955904bb04c97663815b815a59062ef16e593e2 100644 --- a/bin/backend/controls/articles/ArticleSummary.js +++ b/bin/backend/controls/articles/ArticleSummary.js @@ -28,7 +28,9 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleSummary', [ options: { List : null, styles : false, - currency: 'EUR' + currency: 'EUR', + + showPosSummary: true // show summary for selected article }, Binds: [ @@ -54,14 +56,17 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleSummary', [ * @returns {HTMLDivElement} */ create: function () { + var showPosSummary = this.getAttribute('showPosSummary'); + this.$Elm = new Element('div', { 'class': 'quiqqer-erp-backend-temporaryErp-summary', html : Mustache.render(template, { - labelPosInfo: QUILocale.get(lg, 'article.summary.tpl.labelPosInfo'), - labelNet : QUILocale.get(lg, 'article.summary.tpl.labelNet'), - labelGross : QUILocale.get(lg, 'article.summary.tpl.labelGross'), - labelSums : QUILocale.get(lg, 'article.summary.tpl.labelSums'), - labelVat : QUILocale.get(lg, 'article.summary.tpl.labelVat'), + showPosSummary: showPosSummary, + labelPosInfo : QUILocale.get(lg, 'article.summary.tpl.labelPosInfo'), + labelNet : QUILocale.get(lg, 'article.summary.tpl.labelNet'), + labelGross : QUILocale.get(lg, 'article.summary.tpl.labelGross'), + labelSums : QUILocale.get(lg, 'article.summary.tpl.labelSums'), + labelVat : QUILocale.get(lg, 'article.summary.tpl.labelVat'), }) }); @@ -79,13 +84,15 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleSummary', [ '.quiqqer-erp-backend-temporaryErp-summary-total-vat .vat-value' ); - this.$ArticleNettoSum = this.$Elm.getElement( - '.quiqqer-erp-backend-temporaryErp-summary-pos .netto-value' - ); + if (showPosSummary) { + this.$ArticleNettoSum = this.$Elm.getElement( + '.quiqqer-erp-backend-temporaryErp-summary-pos .netto-value' + ); - this.$ArticleBruttoSum = this.$Elm.getElement( - '.quiqqer-erp-backend-temporaryErp-summary-pos .brutto-value' - ); + this.$ArticleBruttoSum = this.$Elm.getElement( + '.quiqqer-erp-backend-temporaryErp-summary-pos .brutto-value' + ); + } if (this.getAttribute('styles')) { this.setStyles(this.getAttribute('styles')); @@ -205,23 +212,25 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleSummary', [ var calc = calculated.calculations; - if (!(ArticleInstance instanceof Article)) { - ArticleInstance = List.getSelectedArticle(); - } + if (this.getAttribute('showPosSummary')) { + if (!(ArticleInstance instanceof Article)) { + ArticleInstance = List.getSelectedArticle(); + } - if (ArticleInstance instanceof Article) { - var articleCalc = ArticleInstance.getCalculations(); + if (ArticleInstance instanceof Article) { + var articleCalc = ArticleInstance.getCalculations(); - if (articleCalc && typeof articleCalc.nettoSum !== 'undefined') { - this.$ArticleNettoSum.set('html', this.$Formatter.format(articleCalc.nettoSum)); - } else { - this.$ArticleNettoSum.set('html', '---'); - } + if (articleCalc && typeof articleCalc.nettoSum !== 'undefined') { + this.$ArticleNettoSum.set('html', this.$Formatter.format(articleCalc.nettoSum)); + } else { + this.$ArticleNettoSum.set('html', '---'); + } - if (articleCalc && typeof articleCalc.sum !== 'undefined') { - this.$ArticleBruttoSum.set('html', this.$Formatter.format(articleCalc.sum)); - } else { - this.$ArticleBruttoSum.set('html', '---'); + if (articleCalc && typeof articleCalc.sum !== 'undefined') { + this.$ArticleBruttoSum.set('html', this.$Formatter.format(articleCalc.sum)); + } else { + this.$ArticleBruttoSum.set('html', '---'); + } } } diff --git a/bin/backend/controls/articles/SelectArticleList.css b/bin/backend/controls/articles/SelectArticleList.css new file mode 100644 index 0000000000000000000000000000000000000000..f90b5ffd817357ccb096f71e11032287b02b17c8 --- /dev/null +++ b/bin/backend/controls/articles/SelectArticleList.css @@ -0,0 +1,8 @@ +.quiqqer-erp-backend-erpItems-selectlist .quiqqer-erp-backend-erpItems-header { + padding-left: 40px; +} + +/*.quiqqer-erp-backend-erpItems-selectlist .quiqqer-erp-backend-erpItems-header-description,*/ +/*.quiqqer-erp-backend-erpItems-selectlist .quiqqer-erp-backend-erpArticle-text{*/ +/* width: calc(100% - 860px) !important;*/ +/*}*/ \ No newline at end of file diff --git a/bin/backend/controls/articles/SelectArticleList.js b/bin/backend/controls/articles/SelectArticleList.js new file mode 100644 index 0000000000000000000000000000000000000000..97181eb319d093fa9e0b4947b6cb12ceb03e97f7 --- /dev/null +++ b/bin/backend/controls/articles/SelectArticleList.js @@ -0,0 +1,124 @@ +/** + * Lists articles that are selectable via checkbox. Only calculates selected articles. + * + * @module package/quiqqer/erp/bin/backend/controls/articles/SelectArticleList + * @author www.pcsg.de (Patrick Müller) + * + * @event onCalc [self, {Object} calculation] + * @event onArticleSelect [self, {Object} Article] + * @event onArticleUnSelect [self, {Object} Article] + * @event onArticleReplaceClick [self, {Object} Article] + */ +define('package/quiqqer/erp/bin/backend/controls/articles/SelectArticleList', [ + + 'package/quiqqer/erp/bin/backend/controls/articles/ArticleList', + 'css!package/quiqqer/erp/bin/backend/controls/articles/SelectArticleList.css' + +], function (ArticleList) { + "use strict"; + + var lg = 'quiqqer/erp'; + + return new Class({ + + Extends: ArticleList, + Type : 'package/quiqqer/erp/bin/backend/controls/articles/SelectArticleList', + + Binds: [ + '$onArticleSelect', + '$onArticleUnSelect', + '$onInject', + 'getSelectedArticles', + '$addArticle', + '$getArticleDataForCalculation' + ], + + initialize: function (options) { + this.parent(options); + + this.addEvents({ + onInject: this.$onInject + }); + }, + + /** + * Event: onInject + */ + $onInject: function () { + //this.parent(); + this.getElm().addClass('quiqqer-erp-backend-erpItems-selectlist'); + }, + + /** + * Get all selected articles + * + * @return {[]} + */ + getSelectedArticles: function () { + var articles = []; + + this.$articles.forEach(function (Article) { + if (Article.isSelected()) { + articles.push(Article); + } + }); + + return articles; + }, + + /** + * event : on article delete + * + * @param {Object} Article + */ + $onArticleSelect: function (Article) { + this.$selectedArticle = Article; + this.fireEvent('articleSelect', [this, Article]); + this.$calc(); + }, + + /** + * event : on article delete + * + * @param Article + */ + $onArticleUnSelect: function (Article) { + this.$selectedArticle = null; + this.fireEvent('articleUnSelect', [this, Article]); + this.$calc(); + }, + + /** + * Get article data used for calculation + * + * @return {Array} + */ + $getArticleDataForCalculation: function () { + var returnSelectedOnly = true; + + // Only return selected articles if all articles have been calculated once + this.$articles.forEach(function (Article) { + if (!Article.getCalculations()) { + returnSelectedOnly = false; + } + }); + + if (!returnSelectedOnly) { + return this.parent(); + } + + return this.getSelectedArticles().map(function (Article) { + return Article.getAttributes(); + }); + }, + + /** + * Get internal article list + * + * @return {[]} + */ + $getArticles: function () { + return this.getSelectedArticles(); + } + }); +}); diff --git a/locale.xml b/locale.xml index de7e7663a9b2942ab104f55e79595921b6c4a812..3cd5675332b7b308eead4423bca664a8d074e7cd 100644 --- a/locale.xml +++ b/locale.xml @@ -378,9 +378,9 @@ <de><![CDATA[Steuernummer]]></de> <en><![CDATA[Tax number]]></en> </locale> - <locale name="menu.erp.company.hrb"> - <de><![CDATA[HRB]]></de> - <en><![CDATA[HRB number]]></en> + <locale name="menu.erp.company.register"> + <de><![CDATA[Register]]></de> + <en><![CDATA[Register]]></en> </locale> <locale name="menu.erp.company.court"> <de><![CDATA[Amtsgericht]]></de> diff --git a/package.xml b/package.xml index 44ea29e36e4d0cf5f1a5d6809a6388a0a710ee27..8c647872e40cb8aaab633945fe71e2b7fb53d252 100644 --- a/package.xml +++ b/package.xml @@ -11,6 +11,10 @@ <image src="URL_OPT_DIR/quiqqer/erp/bin/images/Logo.png"/> + <erp> + <type>application</type> <!-- application, module, plugin --> + </erp> + <preview> <image src="URL_OPT_DIR/quiqqer/erp/bin/preview-1.png"/> <image src="URL_OPT_DIR/quiqqer/erp/bin/preview-2.png"/> @@ -32,7 +36,7 @@ <provider> <erp src="\QUI\ERP\Provider\Erp"/> <requirements src="\QUI\ERP\Provider\Requirements"/> -<!-- <dashboard src="\QUI\ERP\Dashboard\DashboardProvider"/>--> + <!-- <dashboard src="\QUI\ERP\Dashboard\DashboardProvider"/>--> </provider> </package> </quiqqer> diff --git a/settings.xml b/settings.xml index f7d6bdee548fa0962fe68c4cf7cbb35fa90eada0..cf200baa5934e4e8565f7f2d7cdd3b02bf5be7ae 100644 --- a/settings.xml +++ b/settings.xml @@ -65,7 +65,7 @@ <conf name="taxNumber"> <type>string</type> </conf> - <conf name="hrb"> + <conf name="register"> <type>string</type> </conf> <conf name="court"> @@ -264,9 +264,9 @@ <locale group="quiqqer/erp" var="menu.erp.company.taxNumber"/> </text> </input> - <input type="text" conf="company.hrb"> + <input type="text" conf="company.register"> <text> - <locale group="quiqqer/erp" var="menu.erp.company.hrb"/> + <locale group="quiqqer/erp" var="menu.erp.company.register"/> </text> </input> <input type="text" conf="company.court"> diff --git a/src/QUI/ERP/Accounting/ArticleList.css b/src/QUI/ERP/Accounting/ArticleList.css index 5623a2fc6778370fa6ac4ec077eefaf1734e06c6..f539278682d3c97d0fbf7b0a62861bbb9b06de2a 100644 --- a/src/QUI/ERP/Accounting/ArticleList.css +++ b/src/QUI/ERP/Accounting/ArticleList.css @@ -80,6 +80,7 @@ table.articles-article { clear: both; display: block; font-size: 10px; + white-space: nowrap; } .articles-article-price {