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

feat: article and article list -> new flag, not calculations

The calculation of the article can be deactivated and
the calculation values can be transferred directly.
Is required for the electronic invoice.
Übergeordneter 87e92c91
No related branches found
No related tags found
2 Merge Requests!176Update 'next-4.x' with latest changes from 'main',!175feat: article and article list -> new flag, not calculations
......@@ -43,7 +43,7 @@ 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(
], function (
QUI,
QUIControl,
QUIButton,
......@@ -122,21 +122,30 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
User: false, // special user object (see this.addUser)
deletable: true, // show "delete" button
deletable: true, // show "delete" button
replaceable: true, // show "replace" button
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);
this.$user = {};
this.$calculate = true; // calculation is running or not
this.$calculations = {};
this.$bruttoCalc = {};
if (typeof options !== 'undefined' && typeof options.calculated !== 'undefined') {
this.$calculations = options.calculated;
if (typeof this.$calculations.bruttoCalculated !== 'undefined') {
this.$bruttoCalc = this.$calculations.bruttoCalculated;
}
}
if (typeof options !== 'undefined' && typeof options.calculate !== 'undefined') {
this.$calculate = options.calculate;
}
if (typeof this.$calculations.nettoPriceNotRounded !== 'undefined' && this.$calculations.nettoPriceNotRounded) {
......@@ -178,7 +187,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
*
* @returns {HTMLDivElement}
*/
create: function() {
create: function () {
const self = this;
this.$Elm = this.parent();
......@@ -226,7 +235,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 {
......@@ -275,7 +284,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;
......@@ -286,7 +295,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);
}
......@@ -305,7 +314,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;
......@@ -316,7 +325,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);
}
......@@ -411,7 +420,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
this.setQuantityUnit(this.getAttribute('quantityUnit'));
if (!this.getAttribute('quantityUnit')) {
this.$loadDefaultQuantityUnit().catch(function(err) {
this.$loadDefaultQuantityUnit().catch(function (err) {
console.error(err);
});
}
......@@ -438,7 +447,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);
}
......@@ -454,7 +463,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]);
......@@ -465,7 +474,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
/**
* Trigger the replace event
*/
$onReplaceClick: function() {
$onReplaceClick: function () {
this.fireEvent('replace', [this]);
},
......@@ -474,7 +483,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
*
* @param {Object} user
*/
setUser: function(user) {
setUser: function (user) {
this.$user = user;
},
......@@ -483,7 +492,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
*
* @return {Promise}
*/
calc: function() {
calc: function () {
if (!this.$created) {
return Promise.resolve();
}
......@@ -503,7 +512,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) {
......@@ -553,7 +562,10 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
}
this.hideLoader();
this.fireEvent('calc', [this]);
if (!this.$calculate) {
this.fireEvent('calc', [this]);
}
return product;
});
......@@ -564,11 +576,29 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
*
* @return {Promise}
*/
$calc: function() {
$calc: function () {
if (!this.$calculate) {
return Promise.resolve({
vat: this.getAttribute('vat'),
unitPrice: this.getAttribute('unitPrice'),
id: this.getAttribute('id'),
articleNo: this.getAttribute('articleNo'),
description: this.getAttribute('description'),
discount: this.getAttribute('discount'),
position: this.getAttribute('position'),
price: this.getAttribute('price'),
quantity: this.getAttribute('quantity'),
quantityUnit: this.getAttribute('quantityUnit'),
title: this.getAttribute('title'),
calculated: this.$calculations
});
}
let Calc;
const self = this,
attr = self.getAttributes(),
const attr = this.getAttributes(),
pos = parseInt(attr.position);
let calcByList = false;
......@@ -577,41 +607,47 @@ 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((resolve, reject) => {
QUIAjax.get('package_quiqqer_erp_ajax_products_calc', resolve, {
'package': 'quiqqer/erp',
onError: reject,
articles: JSON.encode({
articles: [attr]
}),
user: JSON.encode(self.$user),
currency: self.getAttribute('currency')
user: JSON.encode(this.$user),
currency: this.getAttribute('currency')
});
});
}
return Calc.then(function(result) {
return Calc.then((result) => {
let articleList;
let brutto;
let articles = result.articles;
let articles = [];
if (!calcByList) {
articleList = articles[0];
brutto = result.brutto.articles[0];
if (!result || typeof result.articles === 'undefined') {
brutto = !this.getAttribute('List').$Switch.getStatus();
} else {
articleList = articles.filter(function(article) {
return parseInt(article.position) === pos;
})[0];
articles = result.articles;
brutto = result.brutto.articles.filter(function(article) {
return parseInt(article.position) === pos;
})[0];
if (!calcByList) {
articleList = articles[0];
brutto = result.brutto.articles[0];
} else {
articleList = 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 = articleList;
self.$bruttoCalc = brutto;
self.fireEvent('calc', [
self,
this.$calculations = articleList;
this.$bruttoCalc = brutto;
this.fireEvent('calc', [
this,
result,
articleList
]);
......@@ -625,7 +661,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
*
* @returns {{}|*}
*/
getCalculations: function() {
getCalculations: function () {
if (!this.$calculations) {
return {};
}
......@@ -633,10 +669,27 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
return this.$calculations.calculated;
},
setCalculations: function (calculations) {
this.$calculations = calculations;
},
disableCalculations: function () {
this.$calculate = false;
this.$calculations.calculate = 0;
},
enableCalculations: function () {
this.$calculate = true;
if (typeof this.$calculations.calculate !== 'undefined') {
delete this.$calculations.calculate;
}
},
/**
* @returns {*}
*/
getBruttoCalc: function() {
getBruttoCalc: function () {
return this.$bruttoCalc;
},
......@@ -645,7 +698,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
*
* @return {Promise|*}
*/
getCurrencyFormatter: function() {
getCurrencyFormatter: function () {
if (this.$Formatter) {
return Promise.resolve(this.$Formatter);
}
......@@ -687,7 +740,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;
}
......@@ -701,7 +754,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);
......@@ -717,7 +770,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);
......@@ -739,7 +792,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);
......@@ -755,7 +808,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) {
......@@ -771,7 +824,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) {
......@@ -788,7 +841,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;
}
......@@ -811,7 +864,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) {
......@@ -829,7 +882,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', '-');
......@@ -862,7 +915,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 = '';
......@@ -887,7 +940,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
}
}
return Prom.then(function(discountResult) {
return Prom.then(function (discountResult) {
if (discountResult && type === '%') {
discountResult = (discountResult).toString().replace(/\%/g, '') + type;
value = discountResult;
......@@ -909,21 +962,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;
}
......@@ -946,7 +999,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
/**
* unselect the article
*/
unselect: function() {
unselect: function () {
if (!this.$Elm) {
return;
}
......@@ -965,7 +1018,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
/**
* @return {boolean}
*/
isSelected: function() {
isSelected: function () {
return this.$isSelected;
},
......@@ -976,7 +1029,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',
......@@ -998,11 +1051,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));
},
......@@ -1010,7 +1063,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
/**
* event : on description edit
*/
$onEditDescription: function() {
$onEditDescription: function () {
if (this.$Editor) {
return;
}
......@@ -1026,7 +1079,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();
......@@ -1050,7 +1103,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
......@@ -1107,7 +1160,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
]
});
self.$Editor.addEvent('onLoaded', function() {
self.$Editor.addEvent('onLoaded', function () {
self.$Editor.switchToWYSIWYG();
self.$Editor.showToolbar();
self.$Editor.setContent(self.getAttribute('description'));
......@@ -1119,14 +1172,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();
......@@ -1145,7 +1198,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
});
},
onClose: function() {
onClose: function () {
self.$Editor.destroy();
self.$Editor = null;
}
......@@ -1156,11 +1209,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));
},
......@@ -1168,12 +1221,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));
},
......@@ -1181,15 +1234,15 @@ 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
......@@ -1209,14 +1262,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);
});
},
......@@ -1224,16 +1277,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);
});
},
......@@ -1241,15 +1294,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(
......@@ -1265,7 +1318,7 @@ 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) {
......@@ -1279,7 +1332,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
this.$createEditField(
this.$Discount,
discount
).then(function(value) {
).then(function (value) {
this.setDiscount(value);
}.bind(this));
},
......@@ -1287,7 +1340,7 @@ 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');
......@@ -1299,7 +1352,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
}
}
this.$createEditField(this.$DiscountBrutto, discount).then(function(value) {
this.$createEditField(this.$DiscountBrutto, discount).then(function (value) {
if (value.match('%')) {
return self.setDiscount(value);
}
......@@ -1308,7 +1361,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
return self.setDiscount(0);
}
return self.getNettoPrice(value).then(function(nettoValue) {
return self.getNettoPrice(value).then(function (nettoValue) {
self.setDiscount(nettoValue);
});
});
......@@ -1317,7 +1370,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/Article', [
/**
* Edit custom fields
*/
$onCustomFieldClick: function() {
$onCustomFieldClick: function () {
this.fireEvent('editCustomFields', [this]);
},
......@@ -1330,12 +1383,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,
......@@ -1371,17 +1424,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
......@@ -1407,7 +1460,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')) {
......@@ -1483,11 +1536,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();
......@@ -1529,10 +1582,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,
......@@ -1549,10 +1602,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,
......@@ -1568,7 +1621,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',
......
......@@ -27,8 +27,8 @@ 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
], function (QUI, QUIControl, QUISwitch, QUILoader, Mustache,
QUIAjax, QUILocale, AddProductWindow, Article, Sortables, template, templateSortablePlaceholder
) {
'use strict';
......@@ -58,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 = [];
......@@ -68,6 +68,8 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
this.$calculationTimer = null;
this.$isIncalculationFrame = false;
this.$calculate = true; // calculation is running or not
this.$calculations = {
currencyData: {},
isEuVat: 0,
......@@ -95,7 +97,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
*
* @returns {HTMLDivElement}
*/
create: function() {
create: function () {
const self = this;
this.$Elm = this.parent();
......@@ -131,7 +133,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();
......@@ -144,7 +146,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();
});
......@@ -156,8 +158,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();
}
......@@ -169,8 +171,8 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
*
* @returns {Object}
*/
serialize: function() {
const articles = this.$getArticles().map(function(ArticleInstance) {
serialize: function () {
const articles = this.$getArticles().map(function (ArticleInstance) {
const attr = ArticleInstance.getAttributes();
attr.control = typeOf(ArticleInstance);
......@@ -183,21 +185,31 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
};
},
getArticles: function () {
return this.$getArticles();
},
/**
* Get internal article list
*
* @return {[]}
*/
$getArticles: function() {
$getArticles: function () {
return this.$articles;
},
clear: function () {
this.$articles = [];
this.$priceFactors = [];
this.$Container.innerHTML = '';
},
/**
* Return the articles count
*
* @returns {number}
*/
count: function() {
count: function () {
return this.$articles.length;
},
......@@ -210,7 +222,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 = {};
......@@ -251,7 +263,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
this.$Container.set('html', '');
}
const controls = data.articles.map(function(ArticleInstance) {
const controls = data.articles.map(function (ArticleInstance) {
if (typeof ArticleInstance.control !== 'undefined' && ArticleInstance.control !== '') {
return ArticleInstance.control;
}
......@@ -259,7 +271,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
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++) {
......@@ -294,10 +306,10 @@ 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(ArticleInstance) {
this.$articles.each(function (ArticleInstance) {
ArticleInstance.setUser(this.$user);
}.bind(this));
},
......@@ -307,7 +319,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
*
* @return {Object|*|{}}
*/
getUser: function() {
getUser: function () {
return this.$user;
},
......@@ -317,7 +329,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
*
* @param {Object} Child
*/
addArticle: function(Child) {
addArticle: function (Child) {
if (typeof Child !== 'object') {
return;
}
......@@ -330,6 +342,13 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
Child.setCurrency(this.getAttribute('currency'));
}
if (!this.$calculate) {
console.log('add -> disableCalculation');
if (typeof Child.disableCalculation === 'function') Child.disableCalculation();
} else {
console.log('add -> enableCalculation');
if (typeof Child.enableCalculation === 'function') Child.enableCalculation();
}
this.$articles.push(Child);
......@@ -359,7 +378,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;
}
......@@ -368,7 +387,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
return;
}
const Wanted = this.$articles.find(function(ArticleInstance) {
const Wanted = this.$articles.find(function (ArticleInstance) {
return ArticleInstance.getAttribute('position') === position;
});
......@@ -389,7 +408,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
/**
* Insert a new empty product
*/
insertNewProduct: function() {
insertNewProduct: function () {
this.addArticle(new Article());
},
......@@ -398,8 +417,8 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
*
* @return {Array}
*/
save: function() {
return this.$articles.map(function(ArticleInstance) {
save: function () {
return this.$articles.map(function (ArticleInstance) {
return Object.merge(ArticleInstance.getAttributes(), {
control: ArticleInstance.getType()
});
......@@ -409,7 +428,11 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
/**
* Calculate the list
*/
$calc: function() {
$calc: function () {
if (!this.$calculate) {
return Promise.resolve();
}
return new Promise((resolve) => {
if (this.$calculationTimer) {
clearTimeout(this.$calculationTimer);
......@@ -418,7 +441,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);
});
......@@ -433,7 +456,11 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
*
* @returns {Promise}
*/
$executeCalculation: function() {
$executeCalculation: function () {
if (!this.$calculate) {
return Promise.resolve();
}
const self = this;
if (this.$isIncalculationFrame) {
......@@ -486,7 +513,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();
}
......@@ -499,27 +526,64 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
*
* @return {Array}
*/
$getArticleDataForCalculation: function() {
return this.$articles.map(function(ArticleInstance) {
$getArticleDataForCalculation: function () {
return this.$articles.map(function (ArticleInstance) {
return ArticleInstance.getAttributes();
});
},
/**
* @deprecated use getCalculations()
*/
getCalculation: function () {
return this.getCalculations();
},
/**
* Return the current calculations
*
* @returns {{currencyData: {}, isEuVat: number, isNetto: boolean, nettoSubSum: number, nettoSum: number, subSum: number, sum: number, vatArray: Array, vatText: Array}|*}
*/
getCalculation: function() {
getCalculations: function () {
return this.$calculations;
},
setCalculations: function (calculations) {
this.$calculations = calculations;
this.fireEvent('calc', [
this,
this.$calculations
]);
},
disableCalculations: function () {
this.$calculate = false;
this.$calculations.calculate = 0;
this.$articles.forEach((Article) => {
Article.disableCalculations();
});
},
enableCalculations: function () {
this.$calculate = true;
if (typeof this.$calculations.calculate !== 'undefined') {
delete this.$calculations.calculate;
}
this.$articles.forEach((Article) => {
Article.disableCalculations();
});
},
/**
* Return the first / main vat of the list
*
* @returns {number}
*/
getVat: function() {
getVat: function () {
const calculations = this.getCalculation();
const articles = calculations.articles;
const calc = calculations.calculations;
......@@ -543,7 +607,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
*
* @return {[]}
*/
getPriceFactors: function() {
getPriceFactors: function () {
return this.$priceFactors;
},
......@@ -552,7 +616,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++) {
......@@ -585,7 +649,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) {
......@@ -619,7 +683,7 @@ 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) {
if (priceFactor.hasOwnProperty(k)) {
this.$priceFactors[index][k] = priceFactor[k];
......@@ -632,7 +696,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
*
* @returns {number}
*/
countPriceFactors: function() {
countPriceFactors: function () {
return this.$priceFactors.length;
},
......@@ -643,7 +707,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
/**
* Toggles the sorting
*/
toggleSorting: function() {
toggleSorting: function () {
if (this.$sorting) {
this.disableSorting();
return;
......@@ -656,13 +720,13 @@ 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) {
elements.each(function (Node) {
const ArticleInstance = QUI.Controls.getById(Node.get('data-quiid'));
const attributes = ArticleInstance.getAttributes();
......@@ -683,7 +747,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')) {
......@@ -705,7 +769,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
});
},
onStart: function(element) {
onStart: function (element) {
element.addClass('quiqqer-erp-sortableClone');
self.$Container.setStyles({
......@@ -715,7 +779,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
});
},
onComplete: function(element) {
onComplete: function (element) {
element.removeClass('quiqqer-erp-sortableClone');
self.$Container.setStyles({
......@@ -735,7 +799,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,
......@@ -744,7 +808,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
Elm.getElements('.quiqqer-erp-sortableClone-placeholder').destroy();
elements.each(function(Node) {
elements.each(function (Node) {
const ArticleInstance = QUI.Controls.getById(Node.get('data-quiid'));
ArticleInstance.removeEvents({
......@@ -755,7 +819,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');
});
},
......@@ -765,7 +829,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
*
* @return {boolean}
*/
isSortingEnabled: function() {
isSortingEnabled: function () {
return this.$sorting;
},
......@@ -774,7 +838,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
*
* @param Article
*/
$onArticleSetPosition: function(ArticleInstance) {
$onArticleSetPosition: function (ArticleInstance) {
ArticleInstance.getElm().getElement('.quiqqer-erp-backend-erpArticlePlaceholder-pos').set(
'html',
ArticleInstance.getAttribute('position')
......@@ -784,7 +848,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
/**
* Recalculate the Position of all Articles
*/
$recalculatePositions: function() {
$recalculatePositions: function () {
let i, len, ArticleInstance;
const Elm = this.getElm(),
......@@ -805,7 +869,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
*
* @param {Object} ArticleInstance
*/
$onArticleDelete: function(ArticleInstance) {
$onArticleDelete: function (ArticleInstance) {
if (this.$selectedArticle) {
this.$selectedArticle.unselect();
}
......@@ -830,7 +894,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();
}
......@@ -842,7 +906,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
*
* @param {Object} Article
*/
$onArticleSelect: function(ArticleInstance) {
$onArticleSelect: function (ArticleInstance) {
if (this.$selectedArticle &&
this.$selectedArticle !== ArticleInstance) {
this.$selectedArticle.unselect();
......@@ -860,7 +924,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
*
* @param Article
*/
$onArticleUnSelect: function(ArticleInstance) {
$onArticleUnSelect: function (ArticleInstance) {
if (this.$selectedArticle === ArticleInstance) {
this.$selectedArticle = null;
this.fireEvent('articleUnSelect', [
......@@ -875,7 +939,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
*
* @param Article
*/
$onArticleReplace: function(ArticleInstance) {
$onArticleReplace: function (ArticleInstance) {
this.fireEvent('articleReplaceClick', [
this,
ArticleInstance
......@@ -887,7 +951,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 = {};
......@@ -934,14 +998,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');
const Container = this.$Elm.getElement('.quiqqer-erp-backend-erpItems-container-switch');
......@@ -982,12 +1046,12 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
require([
URL_OPT_DIR + 'quiqqer/core/bin/QUI/lib/tippy/tippy.min.js',
'css!' + URL_OPT_DIR + 'quiqqer/core/bin/QUI/lib/tippy/tippy.css'
], function(tippy) {
], function (tippy) {
tippy(Warning, {
animateFill: false,
animation: 'shift-away',
allowHTML: true,
content: function() {
content: function () {
return warning.replace(/ +(?= )/g, '').replace('\n', '').trim();
}
});
......
......@@ -25,11 +25,11 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleSummary', [
return new Class({
Extends: QUIControl,
Type : 'package/quiqqer/erp/bin/backend/controls/articles/ArticleSummary',
Type: 'package/quiqqer/erp/bin/backend/controls/articles/ArticleSummary',
options: {
List : null,
styles : false,
List: null,
styles: false,
currency: 'EUR',
showPosSummary: true // show summary for selected article
......@@ -57,7 +57,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleSummary', [
},
/**
* Create the domnode element
* Create the dom-node element
*
* @returns {HTMLDivElement}
*/
......@@ -66,16 +66,16 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleSummary', [
this.$Elm = new Element('div', {
'data-qui': 'package/quiqqer/erp/bin/backend/controls/articles/ArticleSummary',
'class' : 'quiqqer-erp-backend-temporaryErp-summary',
html : Mustache.render(template, {
'class': 'quiqqer-erp-backend-temporaryErp-summary',
html: Mustache.render(template, {
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'),
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'),
}),
events : {
events: {
mouseenter: this.showPriceFactors,
mouseleave: this.hidePriceFactors
}
......@@ -137,8 +137,8 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleSummary', [
Currency.getCurrency(currency).then((currency) => {
this.$Formatter = QUILocale.getNumberFormatter({
style : 'currency',
currency : currency.code,
style: 'currency',
currency: currency.code,
minimumFractionDigits: currency.precision,
maximumFractionDigits: currency.precision
});
......@@ -208,7 +208,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleSummary', [
Content.set('html', Mustache.render(template, {
priceFactors: priceFactors,
vatArray : Object.values(calculations.vatArray)
vatArray: Object.values(calculations.vatArray)
}));
const Total = Content.getElement('.quiqqer-erp-backend-temporaryErp-summaryWin-total');
......@@ -241,7 +241,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleSummary', [
* @param ArticleInstance
*/
$refreshArticleSelect: function (List, ArticleInstance) {
let calculated = List.getCalculation();
let calculated = List.getCalculations();
if (typeof calculated.calculations === 'undefined') {
return;
......@@ -314,7 +314,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleSummary', [
showPriceFactors: function () {
const ArticleList = this.getAttribute('List');
let priceFactors = ArticleList.getPriceFactors();
let calculated = ArticleList.getCalculation();
let calculated = ArticleList.getCalculations();
if (typeof calculated.calculations === 'undefined') {
calculated.calculations = {};
......@@ -326,19 +326,21 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleSummary', [
}
this.getCurrencyFormatter().then(() => {
console.log(calculated.calculations.vatArray);
const vat = Object.entries(calculated.calculations.vatArray).map((val) => {
return {
text: val[1].text,
sum : this.$Formatter.format(val[1].sum)
sum: this.$Formatter.format(val[1].sum)
};
});
this.$PriceFactors.set('html', Mustache.render(templatePriceFactor, {
valueSubSum : calculated.calculations.display_subSum,
valueSum : calculated.calculations.display_sum,
vat : vat,
textSubSum : QUILocale.get(lg, 'article.list.articles.subtotal'),
textSum : QUILocale.get(lg, 'article.list.articles.sumtotal'),
valueSubSum: calculated.calculations.display_subSum,
valueSum: calculated.calculations.display_sum,
vat: vat,
textSubSum: QUILocale.get(lg, 'article.list.articles.subtotal'),
textSum: QUILocale.get(lg, 'article.list.articles.sumtotal'),
priceFactors: priceFactors
}));
......@@ -347,7 +349,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleSummary', [
this.$PriceFactors.setStyle('bottom', 70);
this.$PFFX.animate({
bottom : 80,
bottom: 80,
opacity: 1
}, {
duration: 300
......@@ -357,7 +359,7 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleSummary', [
hidePriceFactors: function () {
this.$PFFX.animate({
bottom : 70,
bottom: 70,
opacity: 0
}, {
duration: 300,
......
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