Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- define(
- [
- 'ko',
- 'jquery',
- 'Magento_Ui/js/form/form',
- 'uiRegistry',
- 'Magento_Checkout/js/model/quote',
- 'Magento_Checkout/js/model/resource-url-manager',
- 'mage/storage',
- 'Magento_Checkout/js/action/create-shipping-address',
- 'Magento_Checkout/js/model/error-processor',
- 'Magento_Checkout/js/model/shipping-service',
- 'Magento_Checkout/js/model/cart/totals-processor/default',
- 'Magento_Checkout/js/model/shipping-rate-registry'
- ],
- function (
- ko,
- $,
- Component,
- uiRegistry,
- quote,
- resourceUrlManager,
- storage,
- createShippingAddress,
- errorProcessor,
- shippingService,
- totalsDefaultProvider,
- rateRegistry
- ) {
- 'use strict';
- var ClickAndCollectConfig = window.checkout.clickandcollect;
- return Component.extend({
- defaults: {
- template: 'Convert_ClickAndCollect/cart/click-collect-stores'
- },
- formId: "#selectWarehouseForm",
- parent: {},
- postCode: ko.observable(''),
- wareHouses: ko.observableArray(),
- address: {},
- isWarehouseSelected: ko.observable(""),
- /**
- * @override
- */
- initialize: function () {
- this._super();
- $(document).ready(() => this.ready());
- return this;
- },
- ready: function () {
- this.parent = uiRegistry.get(this.parentName);
- },
- selectWarehouse: function(warehouseId) {
- if ($('#s_method_freeshipping').length) {
- return false;
- }
- if (!this.validateForm(this.formId)) {
- return false;
- }
- if (warehouseId != null) {
- let body = $('body').loader();
- let uri = this.getFormAction();
- let payload = JSON.stringify({
- addressInformation: {
- address: {
- countryId: 'AU',
- postcode: this.postCode(),
- regionId: 0
- },
- shipping_carrier_code: ClickAndCollectConfig.shipping.carrier_code,
- shipping_method_code: warehouseId
- }
- });
- this.address = createShippingAddress(payload);
- shippingService.isLoading(true);
- storage.post(
- uri, payload, true
- ).done(
- (resp) => this.selectWarehouseSuccess(resp, this.getInputValue(warehouseId))
- ).fail(
- (resp) => this.selectWarehouseFail(resp)
- ).always(
- () => this.selectWarehouseAlways()
- );
- }
- return false;
- },
- selectWarehouseSuccess: function(result, checked) {
- if (result) {
- rateRegistry.set(this.address.getCacheKey(), result);
- shippingService.setShippingRates(result);
- quote.setTotals(result);
- }
- this.isWarehouseSelected(checked);
- },
- selectWarehouseFail: function(response) {
- console.error("There was an error saving shipping the method, no address will be used at this time");
- shippingService.setShippingRates([]);
- errorProcessor.process(response);
- },
- selectWarehouseAlways: function() {
- let body = $('body').loader();
- body.loader('hide');
- shippingService.isLoading(false);
- },
- validateForm: function (form) {
- return $(form).validation() && $(form).validation('isValid');
- },
- getInputValue(warehouseId) {
- return ClickAndCollectConfig.shipping.carrier_code + "_" + warehouseId;
- },
- getFormAction() {
- return resourceUrlManager.getUrlForTotalsEstimationForNewAddress(quote);
- },
- });
- }
- );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement