Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/sale/checkout/controller/dist/ |
Upload File : |
this.BX = this.BX || {}; this.BX.Sale = this.BX.Sale || {}; this.BX.Sale.Checkout = this.BX.Sale.Checkout || {}; (function (exports,main_core,main_core_events,sale_checkout_provider_rest,sale_checkout_const,sale_checkout_lib) { 'use strict'; var Basket = /*#__PURE__*/function () { function Basket() { babelHelpers.classCallCheck(this, Basket); this.pool = this.getPool(); this.timer = this.getTimer(); this.running = 'N'; } /** * @private */ babelHelpers.createClass(Basket, [{ key: "getPool", value: function getPool() { return new sale_checkout_lib.Pool(); } /** * @private */ }, { key: "getTimer", value: function getTimer() { return new sale_checkout_lib.Timer(); } /** * @private */ }, { key: "isRunning", value: function isRunning() { return this.running === 'Y'; } /** * @private */ }, { key: "setRunningY", value: function setRunningY() { this.running = 'Y'; } /** * @private */ }, { key: "setRunningN", value: function setRunningN() { this.running = 'N'; } /** * @private */ }, { key: "setStore", value: function setStore(store) { this.store = store; return this; } /** * @private */ }, { key: "setProvider", value: function setProvider(provider) { this.provider = provider; return this; } /** * @private */ }, { key: "executeRestAnswer", value: function executeRestAnswer(command, result, extra) { return this.provider.execute(command, result, extra); } /** * @private */ }, { key: "getItem", value: function getItem(index) { return this.store.getters['basket/get'](index); } /** * @private */ }, { key: "getBasket", value: function getBasket() { return this.store.getters['basket/getBasket']; } /** * @private */ }, { key: "getBasketCollection", value: function getBasketCollection() { return this.getBasket().filter(function (item) { return item.deleted === 'N'; }); } /** * @private */ }, { key: "changeItem", value: function changeItem(product) { this.store.dispatch('basket/changeItem', { index: product.index, fields: product.fields }); } /** * @private */ }, { key: "setQuantity", value: function setQuantity(index, quantity) { var fields = this.getItem(index); fields.quantity = quantity; fields.baseSum = this.round(fields.basePrice * fields.quantity); fields.sum = this.round(fields.price * fields.quantity); fields.discount.sum = this.round(fields.discount.price * fields.quantity); this.refreshDiscount(); this.refreshTotal(); this.pool.add(sale_checkout_const.Pool.action.quantity, index, { id: fields.id, value: fields.quantity }); this.changeItem({ index: index, fields: fields }); this.shelveCommit(); } }, { key: "refreshDiscount", value: function refreshDiscount() { var basket = this.getBasket(); if (basket.length > 0) { this.store.dispatch('basket/setDiscount', { sum: basket.reduce(function (result, value) { return result + value.discount.sum; }, 0) }); } } }, { key: "refreshTotal", value: function refreshTotal() { var basket = this.getBasketCollection(); if (basket.length > 0) { this.store.dispatch('basket/setTotal', { price: basket.reduce(function (result, value) { return result + value.sum; }, 0), basePrice: basket.reduce(function (result, value) { return result + value.baseSum; }, 0) }); } } /** * @private */ }, { key: "removeItem", value: function removeItem(product) { return this.store.dispatch('basket/removeItem', { index: product.index }); } /** * @private */ }, { key: "round", value: function round(value) { var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10; var factor = Math.pow(10, precision); return Math.round(value * factor) / factor; } }, { key: "emitOnBasketChange", value: function emitOnBasketChange() { BX.onCustomEvent('OnBasketChange'); } /** * @private */ }, { key: "handlerOrderSuccess", value: function handlerOrderSuccess() { this.emitOnBasketChange(); } /** * @private */ }, { key: "handlerRemoveProductSuccess", value: function handlerRemoveProductSuccess() { this.emitOnBasketChange(); } /** * @private */ }, { key: "handlerRestoreProductSuccess", value: function handlerRestoreProductSuccess() { this.emitOnBasketChange(); } /** * @private */ }, { key: "handlerRemove", value: function handlerRemove(event) { var index = event.getData().index; var fields = this.getItem(index); fields.deleted = 'Y'; fields.status = sale_checkout_const.Loader.status.wait; this.pool.add(sale_checkout_const.Pool.action["delete"], index, { id: fields.id, fields: { value: 'Y' } }); this.changeItem({ index: index, fields: fields }); this.shelveCommit(); } /** * @private */ }, { key: "handlerSuccessRemove", value: function handlerSuccessRemove(event) { var _this = this; var index = event.getData().index; this.timer.create(5000, index + '_DELETE', function () { return _this.removeItem({ index: index }).then(function () { if (_this.getBasket().length === 0) { _this.store.dispatch('application/setStage', { stage: sale_checkout_const.Application.stage.empty }); } }); }); } /** * @private */ }, { key: "handlerRestore", value: function handlerRestore(event) { var index = event.getData().index; var fields = this.getItem(index); this.timer.clean({ index: index + '_DELETE' }); fields.deleted = 'N'; fields.status = sale_checkout_const.Loader.status.wait; //todo: send all fields ? this.pool.add(sale_checkout_const.Pool.action.restore, index, { basePrice: fields.basePrice, baseSum: fields.baseSum, currency: fields.currency, discount: fields.discount, id: fields.id, measureText: fields.measureText, module: fields.module, name: fields.name, price: fields.price, product: fields.product, productProviderClass: fields.productProviderClass, props: fields.props, quantity: fields.quantity, sum: fields.sum }); this.changeItem({ index: index, fields: fields }); this.shelveCommit(); } /** * @private */ }, { key: "handlerChangeQuantity", value: function handlerChangeQuantity(event) { // let data = event.getData().data; var index = event.getData().index; var fields = this.getItem(index); var quantity = fields.quantity; var ratio = fields.product.ratio; var available = fields.product.availableQuantity; quantity = sale_checkout_lib.Basket.roundValue(quantity); ratio = sale_checkout_lib.Basket.roundValue(ratio); quantity = isNaN(quantity) ? 0 : quantity; if (ratio > 0 && quantity < ratio) { quantity = ratio; } if (sale_checkout_lib.Product.isService(fields)) ; else { // for products if (sale_checkout_lib.Product.isLimitedQuantity(fields)) { if (available > 0 && quantity > available) { quantity = available; } } } quantity = sale_checkout_lib.Basket.toFixed(quantity, ratio, available); if (fields.quantity !== quantity) { this.setQuantity(index, quantity); } } /** * @private */ }, { key: "handlerQuantityPlus", value: function handlerQuantityPlus(event) { var index = event.getData().index; var fields = this.getItem(index); var quantity = fields.quantity; var ratio = fields.product.ratio; var available = fields.product.availableQuantity; quantity = sale_checkout_lib.Basket.roundValue(quantity); ratio = sale_checkout_lib.Basket.roundValue(ratio); quantity = quantity + ratio; if (sale_checkout_lib.Basket.isValueFloat(quantity)) { quantity = sale_checkout_lib.Basket.roundFloatValue(quantity); } if (sale_checkout_lib.Product.isService(fields)) ; else { // for products if (sale_checkout_lib.Product.isLimitedQuantity(fields)) { if (available > 0 && quantity > available) { quantity = available; } } } quantity = sale_checkout_lib.Basket.toFixed(quantity, ratio, available); if (fields.quantity < quantity) { this.setQuantity(index, quantity); } } /** * @private */ }, { key: "handlerQuantityMinus", value: function handlerQuantityMinus(event) { var index = event.getData().index; var fields = this.getItem(index); var quantity = fields.quantity; var ratio = fields.product.ratio; var available = fields.product.availableQuantity; quantity = sale_checkout_lib.Basket.roundValue(quantity); ratio = sale_checkout_lib.Basket.roundValue(ratio); var delta = quantity = quantity - ratio; if (sale_checkout_lib.Basket.isValueFloat(quantity)) { quantity = sale_checkout_lib.Basket.roundFloatValue(quantity); delta = sale_checkout_lib.Basket.roundFloatValue(delta); } if (ratio > 0 && quantity < ratio) { quantity = ratio; } if (sale_checkout_lib.Product.isService(fields)) ; else { // for products if (sale_checkout_lib.Product.isLimitedQuantity(fields)) { if (available > 0 && quantity > available) { quantity = available; } } } quantity = sale_checkout_lib.Basket.toFixed(quantity, ratio, available); if (delta >= ratio) { this.setQuantity(index, quantity); } } /** * @private */ }, { key: "commit", value: function commit() { var _this2 = this; return new Promise(function (resolve, reject) { var fields = {}; if (_this2.pool.isEmpty() === false) { fields = _this2.pool.get(); _this2.pool.clean(); var component = sale_checkout_const.Component.bitrixSaleOrderCheckout; var cmd = sale_checkout_const.RestMethod.saleEntityRecalculateBasket; main_core.ajax.runComponentAction(component, cmd, { data: { actions: fields }, signedParameters: _this2.store.getters['application/getSignedParameters'] }).then(function (result) { return _this2.executeRestAnswer(cmd, result, _this2.pool).then(function () { return _this2.commit().then(function () { return resolve(); }); }); })["catch"](); } else { resolve(); } }); } /** * @private */ }, { key: "shelveCommit", value: function shelveCommit() { var _this3 = this; var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'BASKET'; if (this.isRunning() === false) { this.timer.create(300, index, function () { _this3.setRunningY(); _this3.commit().then(function () { return _this3.setRunningN(); }); }); } } /** * @private */ }, { key: "getStatus", value: function getStatus() { return this.store.getters['basket/getStatus']; } /** * @private */ }, { key: "setStatusWait", value: function setStatusWait() { var app = { status: sale_checkout_const.Loader.status.wait }; return this.store.dispatch('basket/setStatus', app); } /** * @private */ }, { key: "setStatusNone", value: function setStatusNone() { var app = { status: sale_checkout_const.Loader.status.none }; return this.store.dispatch('basket/setStatus', app); } /** * @private */ }, { key: "handlerNeedRefreshY", value: function handlerNeedRefreshY() { this.setNeedRefreshY(); this.setStatusWait(); } /** * @private */ }, { key: "handlerNeedRefreshN", value: function handlerNeedRefreshN() { this.setNeedRefreshN(); this.setStatusNone(); } /** * @private */ }, { key: "setNeedRefreshY", value: function setNeedRefreshY() { var app = { needRefresh: 'Y' }; return this.store.dispatch('basket/setNeedRefresh', app); } /** * @private */ }, { key: "setNeedRefreshN", value: function setNeedRefreshN() { var app = { needRefresh: 'N' }; return this.store.dispatch('basket/setNeedRefresh', app); } /** * @private */ }, { key: "handlerChangeSku", value: function handlerChangeSku(event) { var offerId = event.getData().data[0].ID; var index = event.getData().index; var fields = this.getItem(index); fields.status = sale_checkout_const.Loader.status.wait; this.pool.add(sale_checkout_const.Pool.action.offer, index, { id: fields.id, fields: { offerId: offerId } }); this.changeItem({ index: index, fields: fields }); this.shelveCommit(); } }]); return Basket; }(); var Application = /*#__PURE__*/function () { function Application(option) { var _this = this; babelHelpers.classCallCheck(this, Application); this.init(option).then(function () { return _this.initProvider(); }).then(function () { return _this.iniController(); }).then(function () { return _this.subscribeToEvents(); }).then(function () { return _this.subscribeToStoreChanges(); }); } /** * @private */ babelHelpers.createClass(Application, [{ key: "init", value: function init(option) { this.store = option.store; return new Promise(function (resolve, reject) { return resolve(); }); } /** * @private */ }, { key: "initProvider", value: function initProvider() { this.provider = sale_checkout_provider_rest.BasketRestHandler.create({ store: this.store }); return new Promise(function (resolve, reject) { return resolve(); }); } /** * @private */ }, { key: "iniController", value: function iniController() { this.basket = new Basket().setStore(this.store).setProvider(this.provider); return new Promise(function (resolve, reject) { return resolve(); }); } /** * @private */ }, { key: "executeRestAnswer", value: function executeRestAnswer(command, result, extra) { return this.provider.execute(command, result, extra); } /** * @private */ }, { key: "subscribeToEvents", value: function subscribeToEvents() { var _this2 = this; main_core_events.EventEmitter.subscribe(sale_checkout_const.EventType.order.success, function (e) { return _this2.basket.handlerOrderSuccess(e); }); main_core_events.EventEmitter.subscribe(sale_checkout_const.EventType.basket.removeProduct, function (e) { return _this2.basket.handlerRemoveProductSuccess(e); }); main_core_events.EventEmitter.subscribe(sale_checkout_const.EventType.basket.restoreProduct, function (e) { return _this2.basket.handlerRestoreProductSuccess(e); }); main_core_events.EventEmitter.subscribe(sale_checkout_const.EventType.basket.buttonRemoveProduct, main_core.Runtime.debounce(function (e) { return _this2.basket.handlerRemove(e); }, 500, this)); main_core_events.EventEmitter.subscribe(sale_checkout_const.EventType.basket.buttonPlusProduct, function (e) { return _this2.basket.handlerQuantityPlus(e); }); main_core_events.EventEmitter.subscribe(sale_checkout_const.EventType.basket.buttonMinusProduct, function (e) { return _this2.basket.handlerQuantityMinus(e); }); main_core_events.EventEmitter.subscribe(sale_checkout_const.EventType.basket.inputChangeQuantityProduct, function (e) { return _this2.basket.handlerChangeQuantity(e); }); main_core_events.EventEmitter.subscribe(sale_checkout_const.EventType.basket.buttonRestoreProduct, main_core.Runtime.debounce(function (e) { return _this2.basket.handlerRestore(e); }, 500, this)); main_core_events.EventEmitter.subscribe(sale_checkout_const.EventType.basket.needRefresh, function (e) { return _this2.basket.handlerNeedRefreshY(e); }); main_core_events.EventEmitter.subscribe(sale_checkout_const.EventType.basket.refreshAfter, function (e) { return _this2.basket.handlerNeedRefreshN(e); }); main_core_events.EventEmitter.subscribe(sale_checkout_const.EventType.basket.changeSku, function (e) { return _this2.basket.handlerChangeSku(e); }); main_core_events.EventEmitter.subscribe(sale_checkout_const.EventType.consent.refused, function () { return _this2.handlerConsentRefused(); }); main_core_events.EventEmitter.subscribe(sale_checkout_const.EventType.consent.accepted, function () { return _this2.handlerConsentAccepted(); }); main_core_events.EventEmitter.subscribe(sale_checkout_const.EventType.property.validate, function (e) { return _this2.handlerValidateProperty(e); }); main_core_events.EventEmitter.subscribe(sale_checkout_const.EventType.element.buttonCheckout, main_core.Runtime.debounce(function () { return _this2.handlerCheckout(); }, 1000, this)); main_core_events.EventEmitter.subscribe(sale_checkout_const.EventType.element.buttonShipping, main_core.Runtime.debounce(function () { return _this2.handlerShipping(); }, 1000, this)); main_core_events.EventEmitter.subscribe(sale_checkout_const.EventType.paysystem.beforeInitList, function () { return _this2.paySystemSetStatusWait(); }); main_core_events.EventEmitter.subscribe(sale_checkout_const.EventType.paysystem.afterInitList, function () { return _this2.paySystemSetStatusNone(); }); } /** * @private */ }, { key: "subscribeToStoreChanges", value: function subscribeToStoreChanges() { // this.store.subscribe((mutation, state) => { // const { payload, type } = mutation; // if (type === 'basket/setNeedRefresh') // { // alert('@@'); // this.getData(); // } // }); return new Promise(function (resolve, reject) { return resolve(); }); } /** * @private */ }, { key: "paySystemSetStatusWait", value: function paySystemSetStatusWait() { var paySystem = { status: sale_checkout_const.Loader.status.wait }; return this.store.dispatch('pay-system/setStatus', paySystem); } /** * @private */ }, { key: "paySystemSetStatusNone", value: function paySystemSetStatusNone() { var paySystem = { status: sale_checkout_const.Loader.status.none }; return this.store.dispatch('pay-system/setStatus', paySystem); } /** * @private */ }, { key: "appSetStatusWait", value: function appSetStatusWait() { var app = { status: sale_checkout_const.Loader.status.wait }; return this.store.dispatch('application/setStatus', app); } /** * @private */ }, { key: "appSetStatusNone", value: function appSetStatusNone() { var app = { status: sale_checkout_const.Loader.status.none }; return this.store.dispatch('application/setStatus', app); } /** * @private */ }, { key: "handlerConsentAccepted", value: function handlerConsentAccepted() { this.store.dispatch('consent/setStatus', sale_checkout_const.Consent.status.accepted); } /** * @private */ }, { key: "handlerConsentRefused", value: function handlerConsentRefused() { this.store.dispatch('consent/setStatus', sale_checkout_const.Consent.status.refused); } /** * @private */ }, { key: "handlerCheckout", value: function handlerCheckout() { var _this3 = this; BX.onCustomEvent(sale_checkout_const.Consent.validate.submit, []); var consent = this.store.getters['consent/get']; var consentStatus = this.store.getters['consent/getStatus']; var allowed = consent.id > 0 ? consentStatus === sale_checkout_const.Consent.status.accepted : true; if (allowed) { // this.propertiesValidate(); // this.propertiesIsValid() ? alert('propsSuccess'):alert('propsError') this.appSetStatusWait(); this.saveOrder().then(function () { _this3.appSetStatusNone().then(function () { var order = _this3.store.getters['order/getOrder']; if (order.id > 0) { var url = sale_checkout_lib.History.pushState(_this3.store.getters['application/getPathLocation'], { accountNumber: order.accountNumber, access: order.hash }); _this3.store.dispatch('application/setPathLocation', url); } }); })["catch"](function () { return _this3.appSetStatusNone(); }); } } /** * @private */ }, { key: "handlerShipping", value: function handlerShipping() { this.store.dispatch('application/setStage', { stage: sale_checkout_const.Application.stage.view }); // todo delete BX.UserConsent; var order = this.store.getters['order/getOrder']; if (order.id > 0) { var component = sale_checkout_const.Component.bitrixSaleOrderCheckout; var cmd = sale_checkout_const.RestMethod.saleEntityPaymentPay; return main_core.ajax.runComponentAction(component, cmd, { data: { fields: { orderId: order.id, accessCode: order.hash } }, signedParameters: this.store.getters['application/getSignedParameters'] }); } } /** * @private */ }, { key: "saveOrder", value: function saveOrder() { var _this4 = this; var component = sale_checkout_const.Component.bitrixSaleOrderCheckout; var cmd = sale_checkout_const.RestMethod.saleEntitySaveOrder; return main_core.ajax.runComponentAction(component, cmd, { data: { fields: { siteId: this.store.getters['application/getSiteId'], personTypeId: this.store.getters['application/getPersonTypeId'], tradingPlatformId: this.store.getters['application/getTradingPlatformId'], properties: this.preparePropertyFields(this.getPropertyList()) } }, signedParameters: this.store.getters['application/getSignedParameters'] }).then(function (result) { return _this4.executeRestAnswer(cmd, result); })["catch"](function (result) { return _this4.executeRestAnswer(cmd, { error: result.errors }); }); } /** * @private */ }, { key: "handlerValidateProperty", value: function handlerValidateProperty(event) { var property = {}; property.index = event.getData().index; property.fields = this.getPropertyItem(property.index); this.changeValidatedProperty(property); } /** * @private */ }, { key: "getPropertyItem", value: function getPropertyItem(index) { return this.store.getters['property/get'](index); } /** * @private */ }, { key: "changeValidatedProperty", value: function changeValidatedProperty(property) { var fields = property.fields; var errors = this.store.getters['property/getErrors']; if (this.propertyDataValidate(fields)) { errors = this.deletePropertyError(fields, errors); } else { errors = this.addPropertyError(fields, errors); } this.provider.setModelPropertyError(errors); } /** * @private */ }, { key: "propertyDataValidate", value: function propertyDataValidate(fields) { return !(fields.required === 'Y' && fields.value === ''); } /** * @private */ }, { key: "deletePropertyError", value: function deletePropertyError(fields, errors) { for (var errorIndex in errors) { if (errors[errorIndex]['propertyId'] === fields.id) { errors.splice(errorIndex, 1); } } return errors; } /** * @private */ }, { key: "addPropertyError", value: function addPropertyError(fields, errors) { var errorIds = errors.map(function (item) { return item.propertyId; }); if (!errorIds.includes(fields.id)) { errors.push({ propertyId: fields.id }); } return errors; } /** * @private */ }, { key: "getPropertyList", value: function getPropertyList() { var result = []; var list = this.store.getters['property/getProperty']; try { for (var key in list) { if (!list.hasOwnProperty(key)) { continue; } result[list[key].id] = list[key]; } } catch (e) {} return result; } /** * @private */ }, { key: "preparePropertyFields", value: function preparePropertyFields(list) { var fields = {}; list.forEach(function (property, inx) { fields[inx] = property.value; }); return fields; } }]); return Application; }(); exports.Basket = Basket; exports.Application = Application; }((this.BX.Sale.Checkout.Controller = this.BX.Sale.Checkout.Controller || {}),BX,BX.Event,BX.Sale.Checkout.Provider,BX.Sale.Checkout.Const,BX.Sale.Checkout.Lib)); //# sourceMappingURL=controller.bundle.js.map