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

feat: frontend basket -> calculations

Übergeordneter 5e7522ee
Keine zugehörigen Branchen gefunden
Keine zugehörigen Tags gefunden
Keine zugehörigen Merge Requests gefunden
......@@ -17,6 +17,8 @@ function ($basketId, $products) {
$Basket = new \QUI\ERP\Order\Basket\Basket($basketId);
$Basket->import(json_decode($products, true));
$Basket->save();
return $Basket->toArray();
},
array('basketId', 'products')
['basketId', 'products']
);
......@@ -30,6 +30,8 @@ define('package/quiqqer/order/bin/frontend/classes/Basket', [
this.$isLoaded = false;
this.$saveDelay = null;
this.$calculations = {};
},
/**
......@@ -153,6 +155,8 @@ define('package/quiqqer/order/bin/frontend/classes/Basket', [
return new Promise(function (resolve, reject) {
self.getBasket().then(function (basket) {
self.$calculations = basket;
return self.$loadData(basket);
}).then(resolve, reject);
});
......@@ -211,6 +215,39 @@ define('package/quiqqer/order/bin/frontend/classes/Basket', [
});
},
/**
* Return the basket calculations (sum, subSum, prices)
*
* @return {
* currencyData: {},
* isEuVat: number,
* isNetto: boolean,
* nettoSubSum: number,
* nettoSum: number,
* subSum: number,
* sum: number,
* vatArray: {},
* vatText: {}
* }
*/
getCalculations: function () {
if ("calculations" in this.$calculations) {
return this.$calculations.calculations;
}
return {
currencyData: {},
isEuVat : 0,
isNetto : 0,
nettoSubSum : 0,
nettoSum : 0,
subSum : 0,
sum : 0,
vatArray : {},
vatText : {}
};
},
/**
* Add a product to the basket
*
......@@ -314,6 +351,8 @@ define('package/quiqqer/order/bin/frontend/classes/Basket', [
* @return {Promise}
*/
save: function (force) {
var self = this;
force = force || false;
return new Promise(function (resolve) {
......@@ -341,9 +380,12 @@ define('package/quiqqer/order/bin/frontend/classes/Basket', [
products.push(this.$products[i].getAttributes());
}
// locale storage
// no locale storage
if (QUIQQER_USER && QUIQQER_USER.id) {
QUIAjax.post('package_quiqqer_order_ajax_frontend_basket_save', resolve, {
QUIAjax.post('package_quiqqer_order_ajax_frontend_basket_save', function (result) {
self.$calculations = result;
resolve(result);
}, {
'package': 'quiqqer/order',
basketId : this.$basketId,
products : JSON.encode(products)
......@@ -352,7 +394,7 @@ define('package/quiqqer/order/bin/frontend/classes/Basket', [
return;
}
// locale storage
var data = QUI.Storage.get('quiqqer-basket-products');
if (!data) {
......@@ -374,8 +416,10 @@ define('package/quiqqer/order/bin/frontend/classes/Basket', [
QUI.Storage.set('quiqqer-basket-products', JSON.encode(data));
resolve();
// @todo guest basket update calculations
// self.$calculations = result;
resolve();
}.bind(this));
},
......
......@@ -5,6 +5,12 @@
* @event onCreate [self]
* @event onShowBasketBegin [self, pos]
* @event onShowBasketEnd [self]
*
* CSS classes which can be used as placeholder
* - .quiqqer-order-basketButton-sum
* - .quiqqer-order-basketButton-subSum
* - .quiqqer-order-basketButton-quantity
* - .quiqqer-order-basketButton-icon
*/
define('package/quiqqer/order/bin/frontend/controls/basket/Button', [
......@@ -132,7 +138,7 @@ define('package/quiqqer/order/bin/frontend/controls/basket/Button', [
Basket.addEvents({
onRefresh: function () {
isLoaded();
self.updateBatch(Basket.getQuantity());
self.updateDisplay(Basket);
},
onRefreshBegin: function () {
......@@ -143,14 +149,14 @@ define('package/quiqqer/order/bin/frontend/controls/basket/Button', [
onClear: function () {
isLoaded();
self.updateBatch(Basket.getQuantity());
self.updateDisplay(Basket);
}
});
if (Basket.isLoaded()) {
isLoaded();
self.updateBatch(Basket.getQuantity());
self.updateDisplay(Basket);
}
});
},
......@@ -209,15 +215,45 @@ define('package/quiqqer/order/bin/frontend/controls/basket/Button', [
/**
* Update the batch
*
* @param {object} Basket
*/
updateBatch: function (count) {
updateDisplay: function (Basket) {
// sum display
var SumElm = this.getElm().getElement(
'.quiqqer-order-basketButton-sum'
);
if (SumElm) {
SumElm.set('text', Basket.getCalculations().display_sum);
}
// subsum display
var SubSumElm = this.getElm().getElement(
'.quiqqer-order-basketButton-subSum'
);
if (SubSumElm) {
SubSumElm.set('text', Basket.getCalculations().display_subSum);
}
// quantity display
var quantity = Basket.getQuantity();
var QuantityElm = this.getElm().getElement(
'.quiqqer-order-basketButton-quantity'
);
if (QuantityElm) {
QuantityElm.set('text', quantity);
}
if (!this.$Batch) {
return Promise.resolve();
}
this.$Batch.set('html', QUILocale.getNumberFormatter().format(count));
this.$Batch.set('text', quantity);
if (count) {
if (quantity) {
return this.showBatch();
}
......
......@@ -263,9 +263,21 @@ public function toArray()
];
}
// calc data
$calculations = [];
try {
$data = $Products->toArray();
$calculations = $data['calculations'];
} catch (QUI\Exception $Exception) {
QUI\System\Log::writeDebugException($Exception);
}
return [
'id' => $this->getId(),
'products' => $result
'id' => $this->getId(),
'products' => $result,
'calculations' => $calculations
];
}
......
0% Lade oder .
You are about to add 0 people to the discussion. Proceed with caution.
Bearbeitung dieser Nachricht zuerst beenden!
Bitte registrieren oder zum Kommentieren