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

refactor: CRUD shipping rules

Übergeordneter 69ce4285
No related branches found
No related tags found
Keine zugehörigen Merge Requests gefunden
werden angezeigt mit 225 Ergänzungen und 27 Löschungen
......@@ -2,6 +2,8 @@
* @module package/quiqqer/shipping/bin/backend/controls/ShippingEntry.List
* @author www.pcsg.de (Henning Leutz)
*
* Shipping rule list for the shipping entry
*
* @event onLoad [self]
*/
define('package/quiqqer/shipping/bin/backend/controls/ShippingEntry.List', [
......@@ -77,6 +79,41 @@ define('package/quiqqer/shipping/bin/backend/controls/ShippingEntry.List', [
this.$Input.value = value;
},
/**
* refresh the list
*
* @return {Promise}
*/
refresh: function () {
var self = this;
this.fireEvent('refreshBegin', [this]);
return new Promise(function (resolve) {
require([
'package/quiqqer/shipping/bin/backend/Shipping',
'package/quiqqer/shipping/bin/backend/ShippingRules',
'package/quiqqer/shipping/bin/backend/utils/ShippingUtils'
], function (Shipping, ShippingRules, Utils) {
var shippingRules = self.$Grid.getData().map(function (entry) {
return entry.id;
});
ShippingRules.getRules(shippingRules).then(function (rules) {
self.$Grid.setData({
data: Utils.parseRulesDataForGrid(rules)
});
resolve();
self.fireEvent('refreshEnd', [self]);
}).catch(function (e) {
console.log(e);
self.fireEvent('refreshEnd', [self]);
});
});
});
},
/**
* event: on inject
*/
......@@ -139,20 +176,20 @@ define('package/quiqqer/shipping/bin/backend/controls/ShippingEntry.List', [
onDblClick: function () {
require(['package/quiqqer/shipping/bin/backend/controls/shippingRules/RuleWindow'], function (RuleWindow) {
new RuleWindow({
ruleId: self.$Grid.getSelectedData()[0].id
ruleId: self.$Grid.getSelectedData()[0].id,
events: {
onUpdateEnd: function () {
self.refreshInput();
self.refresh();
}
}
}).open();
});
}
});
require([
'package/quiqqer/shipping/bin/backend/Shipping',
'package/quiqqer/shipping/bin/backend/ShippingRules',
'package/quiqqer/shipping/bin/backend/utils/ShippingUtils'
], function (Shipping, ShippingRules, Utils) {
Shipping.getShippingEntry(
self.getAttribute('shippingId')
).then(function (result) {
require(['package/quiqqer/shipping/bin/backend/Shipping'], function (Shipping) {
Shipping.getShippingEntry(self.getAttribute('shippingId')).then(function (result) {
var shippingRules = result.shipping_rules;
try {
......@@ -161,15 +198,19 @@ define('package/quiqqer/shipping/bin/backend/controls/ShippingEntry.List', [
shippingRules = [];
}
return ShippingRules.getRules(shippingRules);
}).then(function (rules) {
var data = shippingRules.map(function (entry) {
return {
id: entry
};
});
self.$Grid.setData({
data: Utils.parseRulesDataForGrid(rules)
data: data
});
return self.refresh();
}).then(function () {
self.fireEvent('load', [self]);
}).catch(function (e) {
console.log(e);
});
});
},
......@@ -183,11 +224,10 @@ define('package/quiqqer/shipping/bin/backend/controls/ShippingEntry.List', [
var self = this;
return new Promise(function (resolve) {
require([
'package/quiqqer/shipping/bin/backend/ShippingRules'
], function (ShippingRules) {
require(['package/quiqqer/shipping/bin/backend/ShippingRules'], function (ShippingRules) {
ShippingRules.getRules(shippingRules).then(function (rules) {
var current = QUILocale.getCurrent();
var current = QUILocale.getCurrent(),
currentData = self.$Grid.getData();
rules.forEach(function (v, k) {
var title = '';
......@@ -199,10 +239,15 @@ define('package/quiqqer/shipping/bin/backend/controls/ShippingEntry.List', [
}
rules[k].title = title;
currentData.push(rules[k]);
});
// filter duplicated
self.$Grid.setData({
data: rules
data: currentData
});
self.refreshInput();
......
......@@ -371,7 +371,16 @@ define('package/quiqqer/shipping/bin/backend/controls/ShippingEntry', [
new ShippingRulesGrid({
shippingId: self.getAttribute('shippingId'),
name : 'shipping_rules'
name : 'shipping_rules',
events : {
onRefreshBegin: function () {
self.Loader.show();
},
onRefreshEnd: function () {
self.Loader.hide();
}
}
}).inject(
Container.getElement('.shipping-rules tbody td')
);
......
......@@ -38,6 +38,32 @@
</label>
</td>
</tr>
<tr>
<td>
<label class="field-container">
<span class="field-container-item" title="{{discountTitle}}">
{{discountTitle}}
</span>
<span class="field-container-field field-container-field-no-padding">
<select name="discount_type" class="field-container-field"
style="width: 30%"
>
<option value="ABS">
{{discountAbsolute}}
</option>
<option value="PERCENTAGE">
{{discountPercentage}}
</option>
</select>
<input type="number"
name="discount"
class="field-container-field"
style="width: 69%"
/>
</span>
</label>
</td>
</tr>
</tbody>
</table>
......
......@@ -53,6 +53,9 @@ define('package/quiqqer/shipping/bin/backend/controls/shippingRules/CreateRule',
title : QUILocale.get(lg, 'shipping.edit.template.title'),
workingTitle : QUILocale.get('quiqqer/system', 'workingtitle'),
calculationPriority: QUILocale.get(lg, 'shipping.edit.template.calculationPriority'),
discountTitle : QUILocale.get(lg, 'shipping.edit.template.discount'),
discountAbsolute : QUILocale.get(lg, 'shipping.edit.template.discount.absolute'),
discountPercentage : QUILocale.get(lg, 'shipping.edit.template.discount.percentage'),
usageHeader : QUILocale.get(lg, 'shipping.edit.template.usage'),
usageFrom : QUILocale.get(lg, 'shipping.edit.template.usage.from'),
......
......@@ -71,6 +71,7 @@ define('package/quiqqer/shipping/bin/backend/controls/shippingRules/CreateRuleWi
this.Loader.hide();
this.$Create.submit().then(function () {
self.Loader.hide();
self.close();
});
}
});
......
......@@ -38,6 +38,32 @@
</label>
</td>
</tr>
<tr>
<td>
<label class="field-container">
<span class="field-container-item" title="{{discountTitle}}">
{{discountTitle}}
</span>
<span class="field-container-field field-container-field-no-padding">
<select name="discount_type" class="field-container-field"
style="width: 30%"
>
<option value="0">
{{discountAbsolute}}
</option>
<option value="1">
{{discountPercentage}}
</option>
</select>
<input type="number"
name="discount"
class="field-container-field"
style="width: 69%"
/>
</span>
</label>
</td>
</tr>
</tbody>
</table>
......
......@@ -61,6 +61,9 @@ define('package/quiqqer/shipping/bin/backend/controls/shippingRules/Rule', [
title : QUILocale.get(lg, 'shipping.edit.template.title'),
workingTitle : QUILocale.get('quiqqer/system', 'workingtitle'),
calculationPriority: QUILocale.get(lg, 'shipping.edit.template.calculationPriority'),
discountTitle : QUILocale.get(lg, 'shipping.edit.template.discount'),
discountAbsolute : QUILocale.get(lg, 'shipping.edit.template.discount.absolute'),
discountPercentage : QUILocale.get(lg, 'shipping.edit.template.discount.percentage'),
usageHeader : QUILocale.get(lg, 'shipping.edit.template.usage'),
usageFrom : QUILocale.get(lg, 'shipping.edit.template.usage.from'),
......
/**
* @module package/quiqqer/shipping/bin/backend/controls/shippingRules/CreateRuleWindow
* @author www.pcsg.de (Henning Leutz
*
* @event updateBegin [self]
* @event updateEnd [self]
*/
define('package/quiqqer/shipping/bin/backend/controls/shippingRules/RuleWindow', [
......@@ -70,9 +73,12 @@ define('package/quiqqer/shipping/bin/backend/controls/shippingRules/RuleWindow',
$onSubmit: function () {
var self = this;
this.Loader.hide();
this.fireEvent('updateBegin', [this]);
this.Loader.show();
this.$Rule.update().then(function () {
self.Loader.hide();
self.fireEvent('updateEnd', [self]);
});
}
});
......
......@@ -61,6 +61,7 @@ define('package/quiqqer/shipping/bin/backend/controls/shippingRules/ShippingRule
onCloseCreateRuleWindow: function () {
self.open();
self.$List.refresh();
}
}
}).inject(this.getContent());
......
......@@ -22,6 +22,8 @@
<table name="shipping_rules">
<field type="INT(11) NOT NULL">id</field>
<field type="INT(1) NOT NULL DEFAULT 0">active</field>
<field type="INT(11) NOT NULL">discount</field>
<field type="INT(1) NOT NULL">discount_type</field>
<field type="text NULL">date_from</field>
<field type="text NULL">date_until</field>
<field type="INT(10) NULL DEFAULT 0">purchase_quantity_from</field>
......
......@@ -202,6 +202,18 @@
<de><![CDATA[Legen Sie ein eigenes Bild für die Versandart fest.]]></de>
<en><![CDATA[Define your own image for the shipping method.]]></en>
</locale>
<locale name="shipping.edit.template.discount">
<de><![CDATA[Abschlag]]></de>
<en><![CDATA[Discount]]></en>
</locale>
<locale name="shipping.edit.template.discount.absolute">
<de><![CDATA[Auf / Abschlag (absolut)]]></de>
<en><![CDATA[Discount (absolute)]]></en>
</locale>
<locale name="shipping.edit.template.discount.percentage">
<de><![CDATA[% (prozentual)]]></de>
<en><![CDATA[% (percentage)]]></en>
</locale>
<locale name="window.delete.title">
<de><![CDATA[Versandart löschen]]></de>
......
......@@ -7,6 +7,7 @@
namespace QUI\ERP\Shipping\Rules;
use QUI;
use QUI\ERP\Shipping\Rules\Factory as RuleFactory;
use QUI\Permissions\Permission;
/**
......@@ -16,6 +17,16 @@
*/
class Factory extends QUI\CRUD\Factory
{
/**
* absolute discount
*/
const DISCOUNT_TYPE_ABS = 0;
/**
* percentage discount
*/
const DISCOUNT_TYPE_PERCENTAGE = 1;
/**
* Handler constructor.
*/
......@@ -54,7 +65,9 @@ public function createChild($data = [])
'purchase_quantity_from',
'purchase_quantity_until',
'purchase_value_from',
'purchase_value_until'
'purchase_value_until',
'discount',
'discount_type'
]);
$data = \array_filter($data, function ($k) use ($allowed) {
......@@ -78,6 +91,33 @@ public function createChild($data = [])
$data['priority'] = 0;
}
// discount
if (\is_numeric($data['discount_type'])) {
$data['discount_type'] = (int)$data['discount_type'];
}
switch ($data['discount_type']) {
case 'ABS':
$data['discount_type'] = RuleFactory::DISCOUNT_TYPE_ABS;
break;
case 'PERCENTAGE':
$data['discount_type'] = RuleFactory::DISCOUNT_TYPE_PERCENTAGE;
break;
case RuleFactory::DISCOUNT_TYPE_ABS:
case RuleFactory::DISCOUNT_TYPE_PERCENTAGE:
break;
default:
$data['discount_type'] = RuleFactory::DISCOUNT_TYPE_ABS;
}
$attributes['discount'] = \floatval($data['discount']);
// start creating
QUI::getEvents()->fireEvent('shippingRuleCreateBegin', [$data]);
/* @var $NewChild ShippingRule */
......@@ -140,7 +180,10 @@ public function getChildAttributes()
'areas',
'articles',
'categories',
'user_groups'
'user_groups',
'discount',
'discount_type'
];
}
......
......@@ -12,6 +12,7 @@
use QUI\ERP\Areas\Utils as AreaUtils;
use QUI\ERP\Shipping\Exceptions\ShippingCanNotBeUsed;
use QUI\ERP\Shipping\Rules\Factory as RuleFactory;
/**
* Class ShippingEntry
......@@ -48,24 +49,44 @@ public function __construct($id, Factory $Factory)
$attributes = $this->getAttributes();
if (\is_array($attributes['title'])) {
QUI\Translator::update(
QUI\Translator::edit(
'quiqqer/shipping',
'shipping.'.$id.'.title',
'shipping.'.$id.'.rule.title',
'quiqqer/shipping',
$attributes['title']
);
};
if (\is_array($attributes['workingTitle'])) {
QUI\Translator::update(
QUI\Translator::edit(
'quiqqer/shipping',
'shipping.'.$id.'.workingTitle',
'shipping.'.$id.'.rule.workingTitle',
'quiqqer/shipping',
$attributes['workingTitle']
);
};
QUI\Translator::publish('quiqqer/shipping');
// discount
$attributes['discount'] = \floatval($attributes['discount']);
if (\is_numeric($attributes['discount_type']) || empty($attributes['discount_type'])) {
$attributes['discount_type'] = (int)$attributes['discount_type'];
}
if ($attributes['discount_type'] === RuleFactory::DISCOUNT_TYPE_PERCENTAGE ||
$attributes['discount_type'] === 'PERCENTAGE'
) {
$attributes['discount_type'] = RuleFactory::DISCOUNT_TYPE_PERCENTAGE;
} else {
$attributes['discount_type'] = RuleFactory::DISCOUNT_TYPE_ABS;
}
// update for saving
$this->setAttributes($attributes);
});
}
......
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