Skip to content
Code-Schnipsel Gruppen Projekte

Update 'next-4.x' with latest changes from 'main'

Zusammengeführt QUIQQER Stabilization requested to merge main into next-4.x
4 Dateien
+ 317
194
Änderungen vergleichen
  • Nebeneinander
  • In der Reihe
Dateien
4
@@ -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',
Lade