%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/js/sale/admin/ |
Current File : /home/bitrix/www/bitrix/js/sale/admin/order_shipment.js |
BX.namespace("BX.Sale.Admin.OrderShipment"); BX.Sale.Admin.OrderShipment = function(params) { this.index = params.index; this.id = params.id; this.shipment_statuses = params.shipment_statuses; this.isAjax = !!params.isAjax; this.srcList = params.src_list; this.allowAvailable = !!params.canAllow; this.deductAvailable = !!params.canDeduct; this.changeStatusAvailable = !!params.canChangeStatus; this.discounts = params.discounts || {}; this.discountsMode = params.discountsMode || "edit"; if (this.allowAvailable) this.initFieldChangeAllowDelivery(); if (this.deductAvailable) this.initFieldChangeDeducted(); if (this.changeStatusAvailable) this.initFieldChangeStatus(); if (!!params.active && params.templateType == 'view') this.initUpdateTrackingNumber(); this.initFieldUpdateSum(); this.initChangeProfile(); this.initCustomEvent(); this.initToggle(); this.initDeleteShipment(); if (this.discounts) this.setDiscountsList(this.discounts); var updater = []; if (BX.Sale.Admin.OrderEditPage.formId != 'order_shipment_edit_info_form') { updater["DELIVERY_PRICE_DISCOUNT"] = { callback: this.setDeliveryPrice, context: this }; } if (!!params.calculated_price) this.setCalculatedPriceDelivery(params.calculated_price); updater["DEDUCTED_"+this.id] = { callback: this.updateDeductedStatus, context: this }; updater["ALLOW_DELIVERY_"+this.id] = { callback: this.updateAllowDeliveryStatus, context: this }; updater["SHIPMENT_STATUS_LIST_"+this.id] = { callback: this.setShipmentStatusList, context: this }; updater["SHIPMENT_STATUS_"+this.id] = { callback: this.setDeliveryStatus, context: this }; if (params.templateType == 'edit') { updater["BASE_PRICE_DELIVERY"] = { callback: this.setDeliveryBasePrice, context: this }; updater["CALCULATED_PRICE"] = { callback: this.setCalculatedPriceDelivery, context: this }; updater["DELIVERY_ERROR"] = { callback: BX.Sale.Admin.OrderEditPage.showDialog, context: this }; updater["MAP"] = { callback: this.updateMap, context: this }; updater["PROFILES"] = { callback: this.updateProfiles, context: this }; updater["EXTRA_SERVICES"] = { callback: this.updateExtraService, context: this }; updater["DELIVERY_SERVICE_LIST"] = { callback: this.updateDeliveryList, context: this }; updater["SHIPMENT_COMPANY_ID"] = { callback: this.updateCompany, context: this }; if (!!BX.Sale.Admin.OrderBuyer && !!BX.Sale.Admin.OrderBuyer.propertyCollection) { var propLocation = BX.Sale.Admin.OrderBuyer.propertyCollection.getDeliveryLocation(); if (propLocation) { propLocation.addEvent("change", function () { BX.Sale.Admin.OrderAjaxer.sendRequest( BX.Sale.Admin.OrderEditPage.ajaxRequests.refreshOrderData(), true ); }); } } } updater["DISCOUNTS_LIST"] = { callback: this.setDiscountsList, context: this }; BX.Sale.Admin.OrderEditPage.registerFieldsUpdaters(updater); }; BX.Sale.Admin.OrderShipment.prototype.updateCompany = function(companyList) { var company = BX('SHIPMENT_COMPANY_ID_'+this.index); if (company) company.innerHTML = companyList; }; BX.Sale.Admin.OrderShipment.prototype.updateDeductedStatus = function (flag) { this.setDeducted({status : flag}); }; BX.Sale.Admin.OrderShipment.prototype.updateAllowDeliveryStatus = function (flag) { this.setAllowDelivery({status : flag}); }; BX.Sale.Admin.OrderShipment.prototype.initUpdateTrackingNumber = function () { var oldValue = ''; var trackingNumberEdit = BX('TRACKING_NUMBER_'+this.index+'_EDIT'); var trackingNumberView = BX('TRACKING_NUMBER_'+this.index+'_VIEW'); var pencilEdit = BX('TRACKING_NUMBER_PENCIL_'+this.index); if (pencilEdit) { BX.bind(pencilEdit, 'click', function () { BX.toggle(this); if (trackingNumberEdit) { BX.toggle(trackingNumberEdit); BX.toggle(trackingNumberView); trackingNumberEdit.focus(); } }); BX.bind(trackingNumberEdit, 'blur', BX.proxy(function() { BX.toggle(pencilEdit); BX.toggle(trackingNumberEdit); trackingNumberView.innerHTML = trackingNumberEdit.value; BX.toggle(trackingNumberView); if (trackingNumberEdit.value != oldValue) { var request = { 'action': 'saveTrackingNumber', 'orderId': BX('ID').value, 'shipmentId': BX('SHIPMENT_ID_' + this.index).value, 'trackingNumber': trackingNumberEdit.value }; BX.Sale.Admin.OrderAjaxer.sendRequest(request); } }, this)); BX.bind(trackingNumberEdit, 'focus', function() { oldValue = trackingNumberEdit.value; }); } }; BX.Sale.Admin.OrderShipment.prototype.updateDeliveryList = function(services) { var serviceControl = BX('DELIVERY_'+this.index); if (!serviceControl) return; var selectedItem = serviceControl.options[serviceControl.selectedIndex].value; serviceControl.innerHTML = services; for (var i in serviceControl.options) { if (serviceControl.options[i].value == selectedItem) { serviceControl.options[i].selected = true; break; } } }; BX.Sale.Admin.OrderShipment.prototype.setDiscountsList = function(discounts) { this.discounts = discounts; var container = BX("sale-order-shipment-discounts-container-"+this.index), row = BX("sale-order-shipment-discounts-row-"+this.index), display = "none"; if(container) { container = BX.cleanNode(container, false); if(discounts && discounts.RESULT && discounts.RESULT.DELIVERY && discounts.RESULT.DELIVERY.length > 0) { container.appendChild( this.createDiscountsNode(discounts.RESULT.DELIVERY) ); display = ""; } } if(row && row.previousElementSibling) { row.style.display = display; row.previousElementSibling.style.display = display; } }; BX.Sale.Admin.OrderShipment.prototype.createDiscountsNode = function(discounts) { return BX.Sale.Admin.OrderEditPage.createDiscountsNode( "", "DELIVERY", discounts, this.discounts, this.discountsMode == "edit" ? "EDIT" : "VIEW" ); }; BX.Sale.Admin.OrderShipment.prototype.updateProfiles = function(profiles) { var selectedItem = null; var blockDeliveryService = BX('BLOCK_DELIVERY_SERVICE_' + this.index); var blockProfiles = BX('BLOCK_PROFILES_' + this.index); var select = BX('PROFILE_' + this.index); if (select) selectedItem = select.options[select.selectedIndex].value; if (blockProfiles) BX.remove(blockProfiles); var tr = BX.create('tr', { props: { id: 'BLOCK_PROFILES_' + this.index }, children: [ BX.create('td', { text: BX.message('SALE_ORDER_SHIPMENT_PROFILE')+':', style: { 'width': '40%' }, props: { className: 'adm-detail-content-cell-l' } }), BX.create('td', { html: profiles, props: { id: ' PROFILE_SELECT_' + this.index, className: 'adm-detail-content-cell-r' } }) ] }); blockDeliveryService.parentNode.appendChild(tr); select = tr.lastChild.firstChild; if (selectedItem) { for (var i in select.options) { if (select.options[i].value == selectedItem) { select.options[i].selected = true; break; } } } BX.bind(select, 'change', BX.proxy(function() { if (BX.Sale.Admin.OrderEditPage.formId != 'order_shipment_edit_info_form') { BX.Sale.Admin.OrderAjaxer.sendRequest( BX.Sale.Admin.OrderEditPage.ajaxRequests.refreshOrderData() ); this.updateDeliveryLogotip(); } else { this.updateDeliveryInfo(); } }, this)); }; BX.Sale.Admin.OrderShipment.prototype.updateExtraService = function(extraService) { var blockExtraService = BX('DELIVERY_INFO_'+this.index); blockExtraService.innerHTML = extraService; }; BX.Sale.Admin.OrderShipment.prototype.updateShipmentStatus = function(field, status, params) { var request = { 'action' : 'updateShipmentStatus', 'orderId' : BX('ID').value, 'shipmentId' : BX('SHIPMENT_ID_'+this.index).value, 'field' : field, 'status' : status, 'callback' : BX.proxy(function(result){ this.callbackUpdateShipmentStatus(result, field, status, params) }, this) }; BX.Sale.Admin.OrderAjaxer.sendRequest(request); }; BX.Sale.Admin.OrderShipment.prototype.callbackUpdateShipmentStatus = function(result, field, status, params) { if (result.ERROR && result.ERROR.length > 0) { BX.Sale.Admin.OrderEditPage.showDialog(result.ERROR); } else if (result.NEED_CONFIRM && result.NEED_CONFIRM === true) { var confirmTitle = false; var confirmMessage = false; if (result.WARNING && result.WARNING.length > 0) { confirmMessage = result.WARNING; } if (result.CONFIRM_TITLE && result.CONFIRM_TITLE.length > 0) { confirmTitle = result.CONFIRM_TITLE ; } if (result.CONFIRM_MESSAGE && result.CONFIRM_MESSAGE.length > 0) { confirmMessage = confirmMessage + "<br/>" + result.CONFIRM_MESSAGE; } BX.Sale.Admin.OrderEditPage.showConfirmDialog( confirmMessage, confirmTitle, BX.proxy(function(){ this.sendStrictUpdateShipmentStatus(field, status, params) }, this), function () { return; } ); } else { this[params.callback](params.args); if(result.RESULT) BX.Sale.Admin.OrderEditPage.callFieldsUpdaters(result.RESULT); if (result.WARNING && result.WARNING.length > 0) { BX.Sale.Admin.OrderEditPage.showDialog(result.WARNING); } if(typeof result.MARKERS != 'undefined') { var node = BX('sale-adm-order-problem-block'); if(node) node.innerHTML = result.MARKERS; } } }; BX.Sale.Admin.OrderShipment.prototype.sendStrictUpdateShipmentStatus = function(field, status, params) { var request = { 'action' : 'updateShipmentStatus', 'orderId' : BX('ID').value, 'shipmentId' : BX('SHIPMENT_ID_'+this.index).value, 'field' : field, 'status' : status, 'strict': true, 'callback' : BX.proxy(function(result){ this.callbackUpdateShipmentStatus(result, field, status, params) }, this) }; BX.Sale.Admin.OrderAjaxer.sendRequest(request); }; BX.Sale.Admin.OrderShipment.prototype.updateMap = function(map) { var data = BX.processHTML(map); var div = BX('section_map_'+this.index); div.innerHTML = data['HTML']; for (var i in data['SCRIPT']) BX.evalGlobal(data['SCRIPT'][i]['JS']); BX.loadCSS(data['STYLE']); }; BX.Sale.Admin.OrderShipment.prototype.updateDeliveryLogotip = function() { var obj = BX('DELIVERY_'+this.index); var tbody = BX.findParent(obj, {tag : 'tbody'}, true); if (tbody.children.length > 1) obj = BX('PROFILE_'+this.index); var mainLogo = ''; var shortLogo = ''; var i = 0; if (this.srcList[BX(obj).value]) i = BX(obj).value; mainLogo = this.srcList[i]['MAIN']; shortLogo = this.srcList[i]['SHORT']; var obMainLogo = BX('delivery_service_logo_' + this.index); if (!!obMainLogo) obMainLogo.style.background = 'url(' + mainLogo + ')'; var obShortImg = BX('delivery_service_short_logo_' + this.index); if (!!obShortImg) obShortImg.style.background = 'url(' + shortLogo + ')'; }; BX.Sale.Admin.OrderShipment.prototype.initChangeProfile = function() { var ob = BX('DELIVERY_'+this.index); BX.bind(ob, 'change', BX.proxy(function() { var blockExtraService = BX('DELIVERY_INFO_'+this.index); blockExtraService.innerHTML = ''; var div = BX('section_map_'+this.index); div.innerHTML = ''; var blockProfiles = BX('BLOCK_PROFILES_'+this.index); if (blockProfiles) BX.remove(blockProfiles); var discounts = BX('sale-order-shipment-discounts-row-' + this.index); if (discounts) { BX.hide(discounts.previousElementSibling); BX.hide(discounts); } var deliveryId = BX(ob).value; if (deliveryId > 0) this.updateDeliveryInfo(); else this.setDeliveryPrice(0); }, this)); var profile = BX('PROFILE_'+this.index); if (profile) { BX.bind(profile, 'change', BX.proxy(function () { var blockExtraService = BX('DELIVERY_INFO_' + this.index); blockExtraService.innerHTML = ''; var div = BX('section_map_' + this.index); div.innerHTML = ''; var discounts = BX('sale-order-shipment-discounts-row-' + this.index); if (discounts) { BX.hide(discounts.previousElementSibling); BX.hide(discounts); } var deliveryId = BX(profile).value; if (deliveryId > 0) this.updateDeliveryInfo(); else this.setDeliveryPrice(0); }, this)); } }; BX.Sale.Admin.OrderShipment.prototype.initFieldChangeDeducted = function() { var obStatusDeducted = BX('STATUS_DEDUCTED_'+this.index); var postfix = ['SHORT_'+this.index, this.index]; for (var i in postfix) { var btnDeducted = BX('BUTTON_DEDUCTED_' + postfix[i]); if (!btnDeducted) continue; var menu = []; if (obStatusDeducted.value == 'N') { menu.push( { 'TEXT': BX.message('SALE_ORDER_SHIPMENT_DEDUCTED_YES'), 'ONCLICK': BX.proxy(function () { var data = {status : 'Y'}; if (this.isAjax) this.updateShipmentStatus('DEDUCTED', 'Y', {callback: 'setDeducted', args: data}); else this.setDeducted(data); }, this) } ); } else { menu.push( { 'TEXT': BX.message('SALE_ORDER_SHIPMENT_DEDUCTED_NO'), 'ONCLICK': BX.proxy(function () { var data = {status : 'N'}; if (this.isAjax) this.updateShipmentStatus('DEDUCTED', 'N', {callback : 'setDeducted', args : data}); else this.setDeducted(data); }, this) } ); } var deducted = new BX.COpener( { 'DIV': btnDeducted.parentNode, 'MENU': menu } ); } }; BX.Sale.Admin.OrderShipment.prototype.setDeducted = function(data) { var fullStatus = (data.status == 'Y') ? 'YES' : 'NO'; var obStatusDeducted = BX('STATUS_DEDUCTED_'+this.index); var postfix = ['SHORT_'+this.index, this.index]; obStatusDeducted.value = data.status; for (var i in postfix) { var btnDeducted = BX('BUTTON_DEDUCTED_' + postfix[i]); if (!btnDeducted) continue; BX.html(btnDeducted, BX.message('SALE_ORDER_SHIPMENT_DEDUCTED_'+fullStatus)); if (data.status == 'Y') BX.removeClass(btnDeducted, 'notdeducted'); else BX.addClass(btnDeducted, 'notdeducted'); } this.initFieldChangeDeducted(); }; BX.Sale.Admin.OrderShipment.prototype.initFieldChangeStatus = function() { var postfix = ['SHORT_'+this.index, this.index]; var obStatusShipment = BX('STATUS_SHIPMENT_' + this.index); for (var i in postfix) { var btnShipment = BX('BUTTON_SHIPMENT_' + postfix[i]); var menu = []; for (var j in this.shipment_statuses) { if (this.shipment_statuses[j].ID == obStatusShipment.value) continue; function addMenuStatus(status, event) { var data = {name : status.NAME, id: status.ID}; var obj = { 'TEXT': status.NAME, 'ONCLICK': function () { event.updateShipmentStatus('STATUS_ID', status.ID, {callback : 'setDeliveryStatus', args : data}); } }; menu.push(obj); } addMenuStatus(this.shipment_statuses[j], this); } if(btnShipment) { if (menu.length > 0) { var shipment = new BX.COpener( { 'DIV': btnShipment.parentNode, 'MENU': menu } ); } else { var span = BX.create('span', { children : [ BX.create('span', { attrs : { id : btnShipment.getAttribute('id'), className : 'not_active' }, text : btnShipment.textContent }) ] } ); btnShipment.parentNode.parentNode.appendChild(span); BX.remove(btnShipment.parentNode); } } } }; BX.Sale.Admin.OrderShipment.prototype.setDeliveryStatus = function (data) { var obStatusShipment = BX('STATUS_SHIPMENT_' + this.index); obStatusShipment.value = data.id; var postfix = ['SHORT_'+this.index, this.index]; for (var k in postfix) { var btnShipment = BX('BUTTON_SHIPMENT_' + postfix[k]); BX.html(btnShipment, data.name); } this.initFieldChangeStatus(); }; BX.Sale.Admin.OrderShipment.prototype.setDeliveryBasePrice = function(basePrice) { if (BX('BASE_PRICE_DELIVERY_'+this.index)) BX('BASE_PRICE_DELIVERY_'+this.index).value = basePrice; if (BX('BASE_PRICE_DELIVERY_T_'+this.index)) BX('BASE_PRICE_DELIVERY_T_'+this.index).innerHTML = basePrice; }; BX.Sale.Admin.OrderShipment.prototype.setDeliveryPrice = function(price) { var priceCell = BX('PRICE_DELIVERY_'+this.index); if(!priceCell) { return; } if(priceCell.tagName === 'INPUT') { priceCell.value = price; } else if(priceCell.tagName === 'TD') { priceCell.innerHTML = BX.Sale.Admin.OrderEditPage.currencyFormat(price); } }; BX.Sale.Admin.OrderShipment.prototype.setCalculatedPriceDelivery = function(deliveryPrice) { var customPrice = BX('CUSTOM_PRICE_DELIVERY_'+this.index); if (customPrice.value != 'Y' && BX.Sale.Admin.OrderEditPage.formId != 'order_shipment_edit_info_form') return; var obDiscountSum = BX('PRICE_DELIVERY_'+this.index); if (obDiscountSum) { var parent = BX.findParent(obDiscountSum, {tag: 'tbody'}, true); var child = BX.findChildByClassName(parent, 'row_set_new_delivery_price'); if (child) BX.remove(child); } BX('CALCULATED_PRICE_'+this.index).value = deliveryPrice; var tr = BX.create('tr', { children : [ BX.create('td', { html : BX.message('SALE_ORDER_SHIPMENT_NEW_PRICE_DELIVERY')+': ', props : { className: 'adm-detail-content-cell-l' } }), BX.create('td', { children : [ BX.create('span', { text : BX.Sale.Admin.OrderEditPage.currencyFormat(deliveryPrice) }), BX.create('span', { text : BX.message('SALE_ORDER_SHIPMENT_APPLY'), props : { onclick: BX.proxy(function () { if (confirm(BX.message('SALE_ORDER_SHIPMENT_CONFIRM_SET_NEW_PRICE'))) { BX('PRICE_DELIVERY_'+this.index).value = deliveryPrice; BX('BASE_PRICE_DELIVERY_'+this.index).value = deliveryPrice; var child = BX.findChildByClassName(parent, 'row_set_new_delivery_price'); BX.remove(child); customPrice.value = 'N'; if (BX.Sale.Admin.OrderEditPage.formId != 'order_shipment_edit_info_form') BX.Sale.Admin.OrderAjaxer.sendRequest(BX.Sale.Admin.OrderEditPage.ajaxRequests.refreshOrderData()); } }, this), className : 'new_delivery_price_button' } }) ], props : { className: 'adm-detail-content-cell-r' } }) ], props : { className : 'row_set_new_delivery_price' } }); parent.appendChild(tr); }; BX.Sale.Admin.OrderShipment.prototype.updateDeliveryInfo = function() { var formData = BX.Sale.Admin.OrderEditPage.getAllFormData(); var request = { 'action': 'changeDeliveryService', 'formData': formData, 'index' : this.index, 'callback' : BX.proxy(function (result) { if (result.ERROR && result.ERROR.length > 0) { BX.Sale.Admin.OrderEditPage.showDialog(result.ERROR); } else { BX.Sale.Admin.OrderEditPage.callFieldsUpdaters(result.SHIPMENT_DATA); this.updateDeliveryLogotip(); if (result.WARNING && result.WARNING.length > 0) { BX.Sale.Admin.OrderEditPage.showDialog(result.WARNING); } } }, this) }; if (BX.Sale.Admin.OrderEditPage.formId != 'order_shipment_edit_info_form') BX.Sale.Admin.OrderAjaxer.sendRequest(request, false, true); else BX.Sale.Admin.OrderAjaxer.sendRequest(request, false, false); }; BX.Sale.Admin.OrderShipment.prototype.getDeliveryPrice = function() { var formData = BX.Sale.Admin.OrderEditPage.getAllFormData(); var request = { 'action': 'getDefaultDeliveryPrice', 'formData': formData, 'callback' : BX.proxy(function (result) { if (result.ERROR && result.ERROR.length > 0) { BX.Sale.Admin.OrderEditPage.showDialog(result.ERROR); } else { BX.Sale.Admin.OrderEditPage.callFieldsUpdaters(result.RESULT); if (result.WARNING && result.WARNING.length > 0) { BX.Sale.Admin.OrderEditPage.showDialog(result.WARNING); } } }, this) }; var refreshForm = (BX.Sale.Admin.OrderEditPage.formId != 'order_shipment_edit_info_form'); BX.Sale.Admin.OrderAjaxer.sendRequest(request, false, refreshForm); }; BX.Sale.Admin.OrderShipment.prototype.initCustomEvent = function() { BX.addCustomEvent('onDeliveryExtraServiceValueChange', BX.proxy(function (params) { if (BX.Sale.Admin.OrderEditPage.formId != 'order_shipment_edit_info_form') { BX.Sale.Admin.OrderAjaxer.sendRequest( BX.Sale.Admin.OrderEditPage.ajaxRequests.refreshOrderData() ); } else { this.getDeliveryPrice(); } }, this)); }; BX.Sale.Admin.OrderShipment.prototype.initFieldChangeAllowDelivery = function() { var obStatusAllowDelivery = BX('STATUS_ALLOW_DELIVERY_'+this.index); var postfix = ['SHORT_'+this.index, this.index]; for (var i in postfix) { var btnAllowDelivery = BX('BUTTON_ALLOW_DELIVERY_' + postfix[i]); if (!btnAllowDelivery) continue; var menu = []; if (obStatusAllowDelivery.value == 'Y') { menu.push( { 'TEXT': BX.message('SALE_ORDER_SHIPMENT_ALLOW_DELIVERY_NO'), 'ONCLICK': BX.proxy(function () { var data = {status : 'N'}; if (this.isAjax) this.updateShipmentStatus('ALLOW_DELIVERY', 'N', {callback : 'setAllowDelivery', args : data}); else this.setAllowDelivery(data); }, this) } ); } else { menu.push( { 'TEXT': BX.message('SALE_ORDER_SHIPMENT_ALLOW_DELIVERY_YES'), 'ONCLICK': BX.proxy(function () { var data = {status : 'Y'}; if (this.isAjax) this.updateShipmentStatus('ALLOW_DELIVERY', 'Y', {callback : 'setAllowDelivery', args : data}); else this.setAllowDelivery(data); this.initFieldChangeAllowDelivery(); }, this) } ); } var allowDelivery = new BX.COpener( { 'DIV' : btnAllowDelivery.parentNode, 'MENU': menu } ); } }; BX.Sale.Admin.OrderShipment.prototype.setAllowDelivery = function(data) { var fullStatus = (data.status == 'Y') ? 'YES' : 'NO'; var postfix = ['SHORT_'+this.index, this.index]; var obStatusAllowDelivery = BX('STATUS_ALLOW_DELIVERY_'+this.index); obStatusAllowDelivery.value = data.status; for (var i in postfix) { var btnDelivery = BX('BUTTON_ALLOW_DELIVERY_' + postfix[i]); if (!btnDelivery) continue; BX.html(btnDelivery, BX.message('SALE_ORDER_SHIPMENT_ALLOW_DELIVERY_'+fullStatus)); if (data.status == 'Y') BX.removeClass(btnDelivery, 'notdelivery'); else BX.addClass(btnDelivery, 'notdelivery'); } this.initFieldChangeAllowDelivery(); }; BX.Sale.Admin.OrderShipment.prototype.setShipmentStatusList = function(data) { this.shipment_statuses = data; this.initFieldChangeStatus(); }; BX.Sale.Admin.OrderShipment.prototype.initFieldUpdateSum = function() { var obSum = BX('PRICE_DELIVERY_'+this.index); var customPrice = BX('CUSTOM_PRICE_DELIVERY_'+this.index); BX.bind(obSum, 'change', BX.proxy(function() { customPrice.value = 'Y'; if (BX.Sale.Admin.OrderEditPage.formId != 'order_shipment_edit_info_form') { BX.Sale.Admin.OrderAjaxer.sendRequest( BX.Sale.Admin.OrderEditPage.ajaxRequests.refreshOrderData() ); } else { var discounts = BX('sale-order-shipment-discounts-row-' + this.index); if (discounts) { BX.hide(discounts.previousElementSibling); BX.hide(discounts); } BX('CUSTOM_PRICE_DELIVERY_' + this.index).value = 'Y'; BX('BASE_PRICE_DELIVERY_' + this.index).value = obSum.value; } }, this)); }; BX.Sale.Admin.OrderShipment.prototype.initToggle = function() { var fullView = BX('SHIPMENT_SECTION_'+this.index); var shortView = BX('SHIPMENT_SECTION_SHORT_'+this.index); var btnToggleView = BX('SHIPMENT_SECTION_'+this.index+'_TOGGLE'); BX.bind(btnToggleView, 'click', BX.proxy(function() { btnToggleView.innerHTML = (shortView.style.display != 'none') ? BX.message('SALE_ORDER_SHIPMENT_BLOCK_SHIPMENT_TOGGLE') : BX.message('SALE_ORDER_SHIPMENT_BLOCK_SHIPMENT_TOGGLE_UP'); BX.toggle(fullView); BX.toggle(shortView); }, this)); }; BX.Sale.Admin.OrderShipment.prototype.initDeleteShipment = function() { var btnShipmentSectionDelete = BX('SHIPMENT_SECTION_'+this.index+'_DELETE'); BX.bind(btnShipmentSectionDelete, 'click', BX.proxy(function() { if (confirm(BX.message('SALE_ORDER_SHIPMENT_CONFIRM_DELETE_SHIPMENT'))) { var orderId = (BX('ID')) ? BX('ID').value : 0; var shipmentId = (BX('SHIPMENT_ID_'+this.index)) ? BX('SHIPMENT_ID_'+this.index).value : 0; if ((orderId > 0) && (shipmentId > 0)) { var request = { 'action': 'deleteShipment', 'order_id': orderId, 'shipment_id': shipmentId, 'callback' : BX.proxy(function (result) { if (result.ERROR && result.ERROR.length > 0) { BX.Sale.Admin.OrderEditPage.showDialog(result.ERROR); } else { BX.Sale.Admin.OrderEditPage.callFieldsUpdaters(result.RESULT); BX.cleanNode(BX('shipment_container_' + this.index)); if (result.WARNING && result.WARNING.length > 0) { BX.Sale.Admin.OrderEditPage.showDialog(result.WARNING); } } }, this) }; BX.Sale.Admin.OrderAjaxer.sendRequest(request); } } }, this)); }; BX.Sale.Admin.OrderShipment.prototype.showCreateCheckWindow = function(shipmentId) { ShowWaitWindow(); var request = { 'action': 'addCheckShipment', 'shipmentId': shipmentId, 'callback' : BX.proxy(function(result) { CloseWaitWindow(); if (result.ERROR && result.ERROR.length > 0) { BX.Sale.Admin.OrderEditPage.showDialog(result.ERROR); } else { var text = result.HTML; var dlg = new BX.CAdminDialog({ 'content': text, 'title': BX.message('SALE_ORDER_SHIPMENT_CASHBOX_CHECK_ADD_WINDOW_TITLE'), 'resizable': false, 'draggable': false, 'height': '100', 'width': '516', 'buttons': [ { title: top.BX.message('JS_CORE_WINDOW_SAVE'), id: 'saveCheckBtn', name: 'savebtn', className: top.BX.browser.IsIE() && top.BX.browser.IsDoctype() && !top.BX.browser.IsIE10() ? '' : 'adm-btn-save' }, { title: top.BX.message('JS_CORE_WINDOW_CANCEL'), id: 'cancelCheckBtn', name: 'cancel' } ] }); dlg.Show(); BX.bind(BX('checkTypeSelect'), 'change', function () { var option = this.value; var disabled = option.indexOf('credit') !== -1; var parent = BX.findParent(this, {tag : 'tr'}); var tr = parent.nextElementSibling; var checkboxList = BX.findChildren(tr, {tag : 'input'}, true); for (var i in checkboxList) { if (checkboxList.hasOwnProperty(i)) { var sibling = checkboxList[i].nextElementSibling; if (disabled) { BX.addClass(sibling, "bx-admin-service-restricted"); } else { BX.removeClass(sibling, "bx-admin-service-restricted"); } if (checkboxList[i].checked) checkboxList[i].click(); checkboxList[i].disabled = disabled; } } }); BX.bind(BX("cancelCheckBtn"), 'click', BX.delegate( function() { dlg.Close(); dlg.DIV.parentNode.removeChild(dlg.DIV); } ),this ); BX.bind(BX("saveCheckBtn"), 'click', BX.delegate( function() { ShowWaitWindow(); var form = BX('check_shipment'); var subRequest = { formData : BX.ajax.prepareForm(form), action: 'saveCheck', sessid: BX.bitrix_sessid() }; BX.ajax( { method: 'post', dataType: 'json', url: '/bitrix/admin/sale_order_ajax.php', data: subRequest, onsuccess: function(saveResult) { CloseWaitWindow(); if (saveResult.ERROR && saveResult.ERROR.length > 0) { BX.Sale.Admin.OrderEditPage.showDialog(saveResult.ERROR); } else { BX('SHIPMENT_CHECK_LIST_ID_' + shipmentId).innerHTML = saveResult.CHECK_LIST_HTML; if (BX('SHIPMENT_CHECK_LIST_ID_SHORT_VIEW' + shipmentId) !== undefined && BX('SHIPMENT_CHECK_LIST_ID_SHORT_VIEW' + shipmentId) !== null) { BX('SHIPMENT_CHECK_LIST_ID_SHORT_VIEW' + shipmentId).innerHTML = saveResult.CHECK_LIST_HTML; } dlg.Close(); dlg.DIV.parentNode.removeChild(dlg.DIV); } }, onfailure: function(data) { CloseWaitWindow(); } }); } ),this); } }, this) }; BX.Sale.Admin.OrderAjaxer.sendRequest(request, true); }; BX.Sale.Admin.OrderShipment.prototype.onCheckEntityChoose = function (currentElement) { var checked = currentElement.checked; var paymentType = BX(currentElement.id+"_type"); if (paymentType) paymentType.disabled = !checked; }; BX.Sale.Admin.OrderShipment.prototype.sendQueryCheckStatus = function(checkId) { ShowWaitWindow(); var request = { 'action': 'sendQueryCheckStatus', 'checkId': checkId, 'callback' : BX.proxy(function(result) { if (result.ERROR && result.ERROR.length > 0) { BX.Sale.Admin.OrderEditPage.showDialog(result.ERROR); } else { CloseWaitWindow(); var shipmentId = result.SHIPMENT_ID; BX('SHIPMENT_CHECK_LIST_ID_' + shipmentId).innerHTML = result.CHECK_LIST_HTML; if (BX('SHIPMENT_CHECK_LIST_ID_SHORT_VIEW' + shipmentId) !== undefined && BX('SHIPMENT_CHECK_LIST_ID_SHORT_VIEW' + shipmentId) !== null) { BX('SHIPMENT_CHECK_LIST_ID_SHORT_VIEW' + shipmentId).innerHTML = result.CHECK_LIST_HTML; } } }, this) }; BX.Sale.Admin.OrderAjaxer.sendRequest(request, true); }; BX.namespace("BX.Sale.Admin.GeneralShipment"); BX.Sale.Admin.GeneralShipment = { getIds : function() { BX.Sale.Admin.OrderAjaxer.sendRequest( BX.Sale.Admin.OrderEditPage.ajaxRequests.refreshOrderData() ); }, createNewShipment : function() { var orderId = BX('ID').value; window.location = '/bitrix/admin/sale_order_shipment_edit.php?lang='+BX.Sale.Admin.OrderEditPage.languageId+'&order_id='+orderId+'&backurl='+encodeURIComponent(window.location.pathname+window.location.search); }, findProductByBarcode : function(_this) { BX.hide(_this.parentNode); BX.show(_this.parentNode.nextElementSibling); }, refreshTrackingStatus : function(shipmentIndex, shipmentId, refreshTrackNumber) { var trackingNumber = ''; if(refreshTrackNumber) { var form = BX('order_shipment_edit_info_form'); if(form) { var tnInput = form.elements['SHIPMENT['+shipmentIndex+'][TRACKING_NUMBER]']; if(tnInput && tnInput.value) trackingNumber = tnInput.value; } } else { var tnSpan = BX('TRACKING_NUMBER_'+shipmentIndex+'_VIEW'); if(tnSpan) trackingNumber = tnSpan.innerHTML; } if(!trackingNumber) { alert(BX.message('SALE_ORDER_SHIPMENT_TRACKING_S_EMPTY')); return; } var params = { action: "refreshTrackingStatus", shipmentId: shipmentId, trackingNumber: trackingNumber, callback: function(result) { if(result && !result.ERROR) { if(result.TRACKING_STATUS) { var status = BX("sale-order-shipment-tracking-status-"+shipmentIndex); if(status) status.innerHTML = result.TRACKING_STATUS; } if(result.TRACKING_DESCRIPTION) { var description = BX("sale-order-shipment-tracking-description-"+shipmentIndex); if(description) description.innerHTML = result.TRACKING_DESCRIPTION; } if(result.TRACKING_LAST_CHANGE) { var lastUpdate = BX("sale-order-shipment-tracking-last-change-"+shipmentIndex); if(lastUpdate) lastUpdate.innerHTML = result.TRACKING_LAST_CHANGE; } if (result.WARNING && result.WARNING.length > 0) { BX.Sale.Admin.OrderEditPage.showDialog(result.WARNING); } } else if(result && result.ERROR) { BX.Sale.Admin.OrderEditPage.showDialog(result.ERROR); } else { BX.debug("Error refreshing tracking status!"); } } }; BX.Sale.Admin.OrderAjaxer.sendRequest(params); } } ;