set-coupon-code.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /**
  2. * Copyright © Magento, Inc. All rights reserved.
  3. * See COPYING.txt for license details.
  4. */
  5. /**
  6. * Customer store credit(balance) application
  7. */
  8. define([
  9. 'ko',
  10. 'jquery',
  11. 'Magento_Checkout/js/model/quote',
  12. 'Magento_Checkout/js/model/resource-url-manager',
  13. 'Magento_Checkout/js/model/error-processor',
  14. 'Magento_SalesRule/js/model/payment/discount-messages',
  15. 'mage/storage',
  16. 'mage/translate',
  17. 'Magento_Checkout/js/action/get-payment-information',
  18. 'Magento_Checkout/js/model/totals',
  19. 'Magento_Checkout/js/model/full-screen-loader'
  20. ], function (ko, $, quote, urlManager, errorProcessor, messageContainer, storage, $t, getPaymentInformationAction,
  21. totals, fullScreenLoader
  22. ) {
  23. 'use strict';
  24. return function (couponCode, isApplied) {
  25. var quoteId = quote.getQuoteId(),
  26. url = urlManager.getApplyCouponUrl(couponCode, quoteId),
  27. message = $t('Your coupon was successfully applied.');
  28. fullScreenLoader.startLoader();
  29. return storage.put(
  30. url,
  31. {},
  32. false
  33. ).done(function (response) {
  34. var deferred;
  35. if (response) {
  36. deferred = $.Deferred();
  37. isApplied(true);
  38. totals.isLoading(true);
  39. getPaymentInformationAction(deferred);
  40. $.when(deferred).done(function () {
  41. fullScreenLoader.stopLoader();
  42. totals.isLoading(false);
  43. });
  44. messageContainer.addSuccessMessage({
  45. 'message': message
  46. });
  47. }
  48. }).fail(function (response) {
  49. fullScreenLoader.stopLoader();
  50. totals.isLoading(false);
  51. errorProcessor.process(response, messageContainer);
  52. });
  53. };
  54. });