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

Merge branch 'dev'

Übergeordnete 33769bb2 1543c79d
No related branches found
No related tags found
Keine zugehörigen Merge Requests gefunden
......@@ -11,11 +11,16 @@ div + .quiqqer-coupons-field {
padding: 5px;
}
.quiqqer-coupons-couponcodeinput button {
border-radius: 0 3px 3px 0;
.quiqqer-coupons-couponcodeinput-input {
min-width: 220px;
}
.quiqqer-coupons-couponcodeinput-title,
.quiqqer-coupons-couponcodeinput-input {
margin-right: 1rem;
}
.quiqqer-coupons-couponcodeinput input {
border-radius: 3px 0 0 3px;
line-height: 36px;
margin-right: 1rem;
}
\ No newline at end of file
<div class="quiqqer-coupons-couponcodeinput">
<label>
<span>{{labelInput}}</span>
<input type="text" name="code"/>
<span class="quiqqer-coupons-couponcodeinput-title">{{labelInput}}</span>
<input class="quiqqer-coupons-couponcodeinput-input" type="text" name="code"
placeholder="{{labelInputPlaceholder}}"/>
</label>
<button class="quiqqer-coupons-couponcodeinput-btn">
<button class="quiqqer-coupons-couponcodeinput-btn btn btn-success">
<span>{{submitBtnText}}</span>
</button>
</div>
\ No newline at end of file
......@@ -11,13 +11,14 @@ define('package/quiqqer/coupons/bin/frontend/controls/CouponCodeInput', [
'package/quiqqer/coupons/bin/frontend/CouponCodes',
'Ajax',
'Locale',
'Mustache',
'text!package/quiqqer/coupons/bin/frontend/controls/CouponCodeInput.html',
'css!package/quiqqer/coupons/bin/frontend/controls/CouponCodeInput.css'
], function (QUIControl, QUILoader, CouponCodes, QUILocale, Mustache, template) {
], function (QUIControl, QUILoader, CouponCodes, QUIAjax, QUILocale, Mustache, template) {
"use strict";
var lg = 'quiqqer/coupons';
......@@ -53,8 +54,9 @@ define('package/quiqqer/coupons/bin/frontend/controls/CouponCodeInput', [
this.$Elm.addClass('quiqqer-coupons-field');
this.$Elm.set('html', Mustache.render(template, {
labelInput : QUILocale.get(lg, lgPrefix + 'labelInput'),
submitBtnText: QUILocale.get(lg, lgPrefix + 'submitBtnText')
labelInput : QUILocale.get(lg, lgPrefix + 'labelInput'),
labelInputPlaceholder: QUILocale.get(lg, lgPrefix + 'labelInputPlaceholder'),
submitBtnText : QUILocale.get(lg, lgPrefix + 'submitBtnText')
}));
this.Loader.inject(this.$Elm);
......@@ -99,6 +101,28 @@ define('package/quiqqer/coupons/bin/frontend/controls/CouponCodeInput', [
'[data-qui="package/quiqqer/order/bin/frontend/controls/OrderProcess"]'
);
if (!this.isInOrder()) {
QUIAjax.get('package_quiqqer_order_ajax_frontend_basket_getLastOrder', function (order) {
CouponCodes.addCouponCodeToBasket(code, order.hash).then(function (redeemed) {
if (!redeemed) {
self.$running = false;
self.Loader.hide();
return;
}
QUIAjax.get('package_quiqqer_order_ajax_frontend_basket_getOrderProcessUrl', function (url) {
window.location = url + '?coupon=' + code;
}, {
'package': 'quiqqer/order'
});
});
}, {
'package': 'quiqqer/order'
});
return;
}
var OrderProcess = window.QUI.Controls.getById(OrderProcessNode.get('data-quiid'));
OrderProcess.Loader.show();
......@@ -116,6 +140,18 @@ define('package/quiqqer/coupons/bin/frontend/controls/CouponCodeInput', [
OrderProcess.reload();
});
},
/**
* Is the coupon in the order process?
* @return {boolean}
*/
isInOrder: function () {
var OrderProcessNode = this.getElm().getParent(
'[data-qui="package/quiqqer/order/bin/frontend/controls/OrderProcess"]'
);
return !!OrderProcessNode;
}
});
});
<?xml version="1.0" encoding="UTF-8"?>
<events>
<event on="onQuiqqer::order::orderProcessBasketEnd" fire="\QUI\ERP\Coupons\Events::templateOrderProcessBasketEnd"/>
<!--<event on="onQuiqqer::order::basketSmall::end" fire="\QUI\ERP\Payments\PayPal\Events::templateOrderBasketSmallEnd"/>-->
<event on="onQuiqqer::order::orderProcessBasketEnd"
fire="\QUI\ERP\Coupons\Events::templateOrderProcessBasketEnd"
/>
<event on="onQuiqqer::order::orderShoppingCardBasketEnd"
fire="\QUI\ERP\Coupons\Events::templateOrderProcessBasketEnd"
/>
<event on="onQuiqqerOrderBasketToOrder"
fire="\QUI\ERP\Coupons\Events::onQuiqqerOrderBasketToOrder"
/>
<event on="onQuiqqerOrderSuccessful"
fire="\QUI\ERP\Coupons\Events::onQuiqqerOrderSuccessful"
/>
<event on="onOrderProcess"
fire="\QUI\ERP\Coupons\Events::onOrderProcess"
/>
</events>
\ No newline at end of file
......@@ -382,6 +382,10 @@
<de><![CDATA[Gutschein-Code]]></de>
<en><![CDATA[Coupon code]]></en>
</locale>
<locale name="controls.frontend.CouponCodeInput.template.labelInputPlaceholder">
<de><![CDATA[Gutschein-Code eintippen]]></de>
<en><![CDATA[Enter coupon code]]></en>
</locale>
<locale name="controls.frontend.CouponCodeInput.template.submitBtnText">
<de><![CDATA[Einlösen]]></de>
<en><![CDATA[Redeem]]></en>
......
......@@ -20,8 +20,9 @@ class Events
*
* @param Collector $Collector
* @param BasketGuest $Basket
* @param $Order
*/
public static function templateOrderProcessBasketEnd(Collector $Collector, $Basket)
public static function templateOrderProcessBasketEnd(Collector $Collector, $Basket, $Order)
{
if (!($Basket instanceof Basket)
&& !($Basket instanceof QUI\ERP\Order\Basket\BasketOrder)
......@@ -29,11 +30,62 @@ public static function templateOrderProcessBasketEnd(Collector $Collector, $Bask
return;
}
if (isset($Order) && isset($_GET['coupon'])) {
try {
$code = Handler::sanitizeCode($_GET['coupon']);
$CouponCode = Handler::getCouponCodeByCode($code);
$CouponCode->checkRedemption(QUI::getUserBySession());
$CouponCode->addToOrder($Order);
} catch (\Exception $Exception) {
}
}
$Collector->append(
'<div data-qui="package/quiqqer/coupons/bin/frontend/controls/CouponCodeInput"></div>'
);
}
/**
* @param QUI\ERP\Order\OrderProcess $OrderProcess
* @throws QUI\ERP\Order\Exception
* @throws QUI\Exception
*/
public static function onOrderProcess(QUI\ERP\Order\OrderProcess $OrderProcess)
{
$CurrentStep = $OrderProcess->getCurrentStep();
$currentStep = $CurrentStep->getType();
if ($currentStep !== QUI\ERP\Order\Controls\OrderProcess\Basket::class) {
return;
}
if (!isset($_GET['coupon'])) {
return;
}
try {
$Order = $OrderProcess->getOrder();
$code = Handler::sanitizeCode($_GET['coupon']);
$CouponCode = Handler::getCouponCodeByCode($code);
$CouponCode->checkRedemption(QUI::getUserBySession());
$coupons = $Order->getDataEntry('quiqqer-coupons');
$coupons[] = $code;
$coupons = \array_unique($coupons);
$Order->setData('quiqqer-coupons', $coupons);
$Order->update();
$CouponCode->addToOrder($Order);
} catch (\Exception $Exception) {
}
}
/**
* event - on price factor init
*
......
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