From 80d5dc5ebdcc5f3a92fd9d537385362fc5cfd4dd Mon Sep 17 00:00:00 2001 From: Henning Leutz <leutz@pcsg.de> Date: Mon, 17 Sep 2018 13:31:20 +0200 Subject: [PATCH] refactor: locale update; frontend redeem started to fix --- ajax/frontend/redeem.php | 18 ++++-- bin/frontend/classes/CouponCodes.js | 4 +- bin/frontend/controls/CouponCodeInput.css | 14 +++++ bin/frontend/controls/CouponCodeInput.js | 22 ++++++- locale.xml | 72 +++++++++++++---------- src/QUI/ERP/Coupons/Handler.php | 16 +++-- 6 files changed, 101 insertions(+), 45 deletions(-) diff --git a/ajax/frontend/redeem.php b/ajax/frontend/redeem.php index ca3cd77..34328ec 100644 --- a/ajax/frontend/redeem.php +++ b/ajax/frontend/redeem.php @@ -14,11 +14,15 @@ */ QUI::$Ajax->registerFunction( 'package_quiqqer_coupons_ajax_frontend_redeem', - function ($id) { - $id = (int)$id; - + function ($code, $orderHash) { try { - $CouponCode = Handler::getCouponCode($id); + $CouponCode = Handler::getCouponCodeByCode($code); + } catch (QUI\ERP\Coupons\CouponCodeException $Exception) { + QUI\System\Log::writeDebugException($Exception); + + QUI::getMessagesHandler()->addError($Exception->getMessage()); + + return false; } catch (\Exception $Exception) { QUI\System\Log::writeException($Exception); @@ -32,8 +36,10 @@ function ($id) { return false; } + $Order = QUI\ERP\Order\Handler::getInstance()->getOrderByHash($orderHash); + + return true; }, - ['id'], - 'Permission::checkAdminUser' + ['code', 'orderHash'] ); diff --git a/bin/frontend/classes/CouponCodes.js b/bin/frontend/classes/CouponCodes.js index 643f2e5..c3774c4 100644 --- a/bin/frontend/classes/CouponCodes.js +++ b/bin/frontend/classes/CouponCodes.js @@ -23,13 +23,15 @@ define('package/quiqqer/coupons/bin/frontend/classes/CouponCodes', [ * Adds a coupon to the current session basket * * @param {String} code + * @param {String} orderHash * @return {Promise} */ - addCouponCodeToBasket: function (code) { + addCouponCodeToBasket: function (code, orderHash) { return new Promise(function (resolve, reject) { QUIAjax.post('package_quiqqer_coupons_ajax_frontend_redeem', resolve, { 'package': pkg, code : code, + orderHash: orderHash, onError : reject }); }); diff --git a/bin/frontend/controls/CouponCodeInput.css b/bin/frontend/controls/CouponCodeInput.css index 3978cd8..d3d2a61 100644 --- a/bin/frontend/controls/CouponCodeInput.css +++ b/bin/frontend/controls/CouponCodeInput.css @@ -4,4 +4,18 @@ div + .quiqqer-coupons-field { margin-left: 20px; +} + +.quiqqer-coupons-couponcodeinput { + display: flex; + padding: 5px; +} + +.quiqqer-coupons-couponcodeinput button { + border-radius: 0 3px 3px 0; +} + +.quiqqer-coupons-couponcodeinput input { + border-radius: 3px 0 0 3px; + line-height: 36px; } \ No newline at end of file diff --git a/bin/frontend/controls/CouponCodeInput.js b/bin/frontend/controls/CouponCodeInput.js index b79b4f8..9da8d97 100644 --- a/bin/frontend/controls/CouponCodeInput.js +++ b/bin/frontend/controls/CouponCodeInput.js @@ -88,9 +88,25 @@ define('package/quiqqer/coupons/bin/frontend/controls/CouponCodeInput', [ this.Loader.show(); - CouponCodes.addCouponCodeToBasket(code).then(function () { - // @todo - self.Loader.hide(); + // get order process + var OrderProcessNode = this.getElm().getParent( + '[data-qui="package/quiqqer/order/bin/frontend/controls/OrderProcess"]' + ); + + var OrderProcess = window.QUI.Controls.getById(OrderProcessNode.get('data-quiid')); + + OrderProcess.Loader.show(); + + OrderProcess.getOrder().then(function (orderHash) { + return CouponCodes.addCouponCodeToBasket(code, orderHash); + }).then(function (redeemed) { + if (redeemed === false) { + OrderProcess.Loader.hide(); + self.Loader.hide(); + return; + } + + OrderProcess.refreshCurrentStep(); }); } }); diff --git a/locale.xml b/locale.xml index a26cae0..9adf4db 100644 --- a/locale.xml +++ b/locale.xml @@ -16,7 +16,7 @@ <en><![CDATA[Shop]]></en> </locale> <locale name="menu.erp.couponcodes.title"> - <de><![CDATA[Coupon-Codes]]></de> + <de><![CDATA[Gutschein-Codes]]></de> <en><![CDATA[Coupon codes]]></en> </locale> @@ -26,7 +26,7 @@ <en><![CDATA[General settings]]></en> </locale> <locale name="settings.menu.title"> - <de><![CDATA[Coupon-Codes]]></de> + <de><![CDATA[Gutschein-Codes]]></de> <en><![CDATA[Coupon codes]]></en> </locale> <locale name="settings.category.title"> @@ -34,25 +34,29 @@ <en><![CDATA[Settings]]></en> </locale> <locale name="settings.prefix.title"> - <de><![CDATA[Coupon-Code Präfix]]></de> + <de><![CDATA[Gutschein-Code Präfix]]></de> <en><![CDATA[Coupon code prefix]]></en> </locale> <locale name="settings.prefix.description" html="true"> - <de><![CDATA[Präfix, das generierten Coupon-Codes vorangestellt wird. <b>Betrifft nicht bereits erstellte oder eigenhändig festgelegte Coupon-Codes!</b>]]></de> - <en><![CDATA[Prefix that is prepended to generated Coupon codes. <b>Does not affect already created Coupon codes or codes set by the user!</b>]]></en> + <de> + <![CDATA[Präfix, das generierten Coupon-Codes vorangestellt wird. <b>Betrifft nicht bereits erstellte oder eigenhändig festgelegte Coupon-Codes!</b>]]></de> + <en> + <![CDATA[Prefix that is prepended to generated Coupon codes. <b>Does not affect already created Coupon codes or codes set by the user!</b>]]></en> </locale> <locale name="settings.codeGenerator.title"> - <de><![CDATA[Coupon-Code Generator]]></de> + <de><![CDATA[Gutschein-Code Generator]]></de> <en><![CDATA[Coupon code Generator]]></en> </locale> <locale name="settings.codeGenerator.description"> - <de><![CDATA[Bestimmt die Klasse, die zufällige Coupon-Codes generiert. Hat auch Auswirkungen auf das Format der Coupon-Codes.]]></de> - <en><![CDATA[Determines the class that generates random invitation codes. Also affects the format of Coupon codes.]]></en> + <de> + <![CDATA[Bestimmt die Klasse, die zufällige Coupon-Codes generiert. Hat auch Auswirkungen auf das Format der Coupon-Codes.]]></de> + <en> + <![CDATA[Determines the class that generates random invitation codes. Also affects the format of Coupon codes.]]></en> </locale> <!-- Permissions --> <locale name="permission.quiqqer.invitecode._header"> - <de><![CDATA[Coupon-Codes]]></de> + <de><![CDATA[Gutschein-Codes]]></de> <en><![CDATA[Coupon codes]]></en> </locale> <locale name="permission.quiqqer.invitecode.view"> @@ -72,8 +76,10 @@ <groups name="quiqqer/coupons" datatype="php"> <!-- Ajax --> <locale name="message.ajax.general_error"> - <de><![CDATA[Beim Verarbeiten der Anfrage ist ein unerwarteter Fehler aufgetreten. Bitte prüfen Sie die Fehler-Logs oder kontaktieren Sie einen Administrator.]]></de> - <en><![CDATA[An unexpected error occurred while processing the request. Please check the error logs or contact an administrator.]]></en> + <de> + <![CDATA[Beim Verarbeiten der Anfrage ist ein unerwarteter Fehler aufgetreten. Bitte prüfen Sie die Fehler-Logs oder kontaktieren Sie einen Administrator.]]></de> + <en> + <![CDATA[An unexpected error occurred while processing the request. Please check the error logs or contact an administrator.]]></en> </locale> <locale name="message.ajax.create.error" html="true"> <de><![CDATA[Die Coupon-Codes konnten nicht erstellt werden:<br><br>[error]]]></de> @@ -132,8 +138,10 @@ <!-- Class: Handler --> <locale name="exception.Handler.code_already_exists"> - <de><![CDATA[Der Coupon-Code "[code]" existiert bereits. Bitte verwenden Sie einen anderen Code oder lassen Sie das Code-Feld leer, um einen zufälligen Code zu erzeugen.]]></de> - <en><![CDATA[The Coupon code "[code]" already exists. Please use a differenct code or leave the code field empty to generate a random one.]]></en> + <de> + <![CDATA[Der Coupon-Code "[code]" existiert bereits. Bitte verwenden Sie einen anderen Code oder lassen Sie das Code-Feld leer, um einen zufälligen Code zu erzeugen.]]></de> + <en> + <![CDATA[The Coupon code "[code]" already exists. Please use a differenct code or leave the code field empty to generate a random one.]]></en> </locale> <locale name="exception.Handler.code_not_found"> <de><![CDATA[Der Coupon-Code "[code]" wurde nicht gefunden.]]></de> @@ -144,7 +152,8 @@ <en><![CDATA[The discount #[discountId] cannot be used: [error]]]></en> </locale> <locale name="exception.Handler.no_discounts_linked"> - <de><![CDATA[Bitte geben Sie mindestens einen Rabatt an, der mit dem Coupon-Code verknüpft werden soll.]]></de> + <de> + <![CDATA[Bitte geben Sie mindestens einen Rabatt an, der mit dem Coupon-Code verknüpft werden soll.]]></de> <en><![CDATA[Please provide ad least on discount that shall be linked to the Coupon code.]]></en> </locale> </groups> @@ -152,7 +161,7 @@ <groups name="quiqqer/coupons" datatype="js"> <!-- Control: Manager --> <locale name="controls.manager.title"> - <de><![CDATA[Coupon-Codes]]></de> + <de><![CDATA[Gutschein-Codes]]></de> <en><![CDATA[Coupon codes]]></en> </locale> <locale name="controls.manager.create.template.labelDate"> @@ -176,11 +185,11 @@ <en><![CDATA[Restrict to the following groups (optional)]]></en> </locale> <locale name="controls.manager.create.template.labelCode"> - <de><![CDATA[Coupon-Code (optional - wird automatisch generiert, wenn Feld leergelassen wird)]]></de> + <de><![CDATA[Gutschein-Code (optional - wird automatisch generiert, wenn Feld leergelassen wird)]]></de> <en><![CDATA[Coupon code (optional - is generated automatically if left empty)]]></en> </locale> <locale name="controls.manager.create.template.labelReusable"> - <de><![CDATA[Wiederverwendbar (Coupon-Code kann mehrfach verwendet werden)]]></de> + <de><![CDATA[Wiederverwendbar (Gutschein-Code kann mehrfach verwendet werden)]]></de> <en><![CDATA[Reusable (Coupon code can be used multiple times)]]></en> </locale> <locale name="controls.manager.create.template.labelDiscount"> @@ -188,15 +197,15 @@ <en><![CDATA[Linked discount]]></en> </locale> <locale name="controls.manager.details.popup.title_new"> - <de><![CDATA[Neuen Coupon-Code erstellen]]></de> + <de><![CDATA[Neuen Gutschein-Code erstellen]]></de> <en><![CDATA[Create new Coupon code]]></en> </locale> <locale name="controls.manager.details.popup.title_edit"> - <de><![CDATA[Coupon-Code "[code]" bearbeiten]]></de> + <de><![CDATA[Gutschein-Code "[code]" bearbeiten]]></de> <en><![CDATA[Edit Coupon code "[code]"]]></en> </locale> <locale name="controls.manager.details.popup.btn.confirm_text_new"> - <de><![CDATA[Coupon-Code erstellen]]></de> + <de><![CDATA[Gutschein-Code erstellen]]></de> <en><![CDATA[Create Coupon code]]></en> </locale> <locale name="controls.manager.details.popup.btn.confirm_text_edit"> @@ -204,11 +213,11 @@ <en><![CDATA[Save changes]]></en> </locale> <locale name="controls.manager.details.popup.btn.confirm_new"> - <de><![CDATA[Hier klicken, um neuen Coupon-Code erstellen]]></de> + <de><![CDATA[Hier klicken, um neuen Gutschein-Code erstellen]]></de> <en><![CDATA[Click here to create a new Coupon code]]></en> </locale> <locale name="controls.manager.details.popup.btn.confirm_edit"> - <de><![CDATA[Hier klicken, um die Änderungen am Coupon-Code zu speichern]]></de> + <de><![CDATA[Hier klicken, um die Änderungen am Gutschein-Code zu speichern]]></de> <en><![CDATA[Click here to save the changes made to the Coupon code]]></en> </locale> <locale name="controls.manager.tbl.btn.create"> @@ -284,27 +293,30 @@ <en><![CDATA[User does not exist anymore]]></en> </locale> <locale name="controls.manager.delete.popup.info"> - <de><![CDATA[Sind Sie sicher, dass Sie die folgenden Coupon-Codes unwiderruflich löschen wollen?<br><br>[codes]]]></de> + <de> + <![CDATA[Sind Sie sicher, dass Sie die folgenden Gutschein-Codes unwiderruflich löschen wollen?<br><br>[codes]]]></de> <en><![CDATA[Are you sure you want to irrevocably delete the following Coupon codes?<br><br>[codes]]]></en> </locale> <locale name="controls.manager.delete.popup.title"> - <de><![CDATA[Coupon-Codes löschen]]></de> + <de><![CDATA[Gutschein-Codes löschen]]></de> <en><![CDATA[Delete Coupon codes]]></en> </locale> <locale name="controls.manager.sendmail.popup.info"> - <de><![CDATA[Sind Sie sicher, dass die markierten Coupon-Codes per E-Mail versandt werden sollen? CouponCodes, die keine zugewiesene E-Mail-Adresse haben, werden nicht versandt.]]></de> - <en><![CDATA[Are you sure that the marked Invite codes should be sent by e-mail? Coupon codes that do not have an assigned e-mail address will not be sent.]]></en> + <de> + <![CDATA[Sind Sie sicher, dass die markierten Gutschein-Codes per E-Mail versandt werden sollen? CouponCodes, die keine zugewiesene E-Mail-Adresse haben, werden nicht versandt.]]></de> + <en> + <![CDATA[Are you sure that the marked Invite codes should be sent by e-mail? Coupon codes that do not have an assigned e-mail address will not be sent.]]></en> </locale> <locale name="controls.manager.sendmail.popup.title"> - <de><![CDATA[Coupon-Codes versenden]]></de> + <de><![CDATA[Gutschein-Codes versenden]]></de> <en><![CDATA[Send Coupon codes]]></en> </locale> <locale name="controls.manager.sendmail.popup.label.resend"> - <de><![CDATA[Coupon-Codes, die bereits versendet wurden, nochmals versenden]]></de> + <de><![CDATA[Gutschein-Codes, die bereits versendet wurden, nochmals versenden]]></de> <en><![CDATA[Resend Coupon codes that have already been sent]]></en> </locale> <locale name="controls.Manager.usages.title"> - <de><![CDATA[Verwendungen von Coupon-Code "[code]"]]></de> + <de><![CDATA[Verwendungen von Gutschein-Code "[code]"]]></de> <en><![CDATA[Usages of Coupon code "[code]"]]></en> </locale> <locale name="controls.Manager.usages.template.headerUser"> @@ -330,7 +342,7 @@ <!-- Control: frontend/controls/CouponCodeInput --> <locale name="controls.frontend.CouponCodeInput.template.labelInput"> - <de><![CDATA[Coupon-Code]]></de> + <de><![CDATA[Gutschein-Code]]></de> <en><![CDATA[Coupon code]]></en> </locale> <locale name="controls.frontend.CouponCodeInput.template.submitBtnText"> diff --git a/src/QUI/ERP/Coupons/Handler.php b/src/QUI/ERP/Coupons/Handler.php index b920021..c437abd 100644 --- a/src/QUI/ERP/Coupons/Handler.php +++ b/src/QUI/ERP/Coupons/Handler.php @@ -17,9 +17,9 @@ class Handler /** * Permissions */ - const PERMISSION_VIEW = 'quiqqer.couponcode.view'; + const PERMISSION_VIEW = 'quiqqer.couponcode.view'; const PERMISSION_CREATE = 'quiqqer.couponcode.create'; - const PERMISSION_EDIT = 'quiqqer.couponcode.edit'; + const PERMISSION_EDIT = 'quiqqer.couponcode.edit'; const PERMISSION_DELETE = 'quiqqer.couponcode.delete'; /** @@ -139,7 +139,7 @@ public static function createCouponCode($discountIds, $settings = []) 'title' => empty($settings['title']) ? null : $settings['title'], 'createDate' => $Now->format('Y-m-d H:i:s'), 'code' => $code, - 'isReusable' => !empty($settings['reusable']), + 'isReusable' => empty($settings['reusable']) ? 0 : 1, 'discountIds' => json_encode($discountIds) ]; @@ -403,8 +403,14 @@ public static function existsCode($code) */ public static function getRegistrationSite() { - $Conf = QUI::getPackage('quiqqer/coupons')->getConfig(); - $regSite = $Conf->get('settings', 'registrationSite'); + try { + $Conf = QUI::getPackage('quiqqer/coupons')->getConfig(); + $regSite = $Conf->get('settings', 'registrationSite'); + } catch (QUI\Exception $Exception) { + QUI\System\Log::writeDebugException($Exception); + + return false; + } if (empty($regSite)) { return false; -- GitLab