%PDF- %PDF-
| Direktori : /proc/self/root/home/bitrix/www/bitrix/js/sale/admin/ |
| Current File : //proc/self/root/home/bitrix/www/bitrix/js/sale/admin/order_edit.js |
BX.namespace("BX.Sale.Admin.OrderEditPage");
BX.Sale.Admin.OrderEditPage =
{
formId: "",
fieldsUpdaters: {},
fieldsUpdatersContexts: {},
statusesNames: {},
orderId: 0,
languageId: "",
siteId: "",
currency: "",
currencyLang: "",
form: null,
adminTabControlId: "",
discountRefreshTimeoutId: 0,
autoPriceChange: true,
runningCheckTimeout: {},
tailsLoaded: false,
rollbackMethods: [],
getForm: function()
{
if(!BX.Sale.Admin.OrderEditPage.form)
BX.Sale.Admin.OrderEditPage.form = BX(BX.Sale.Admin.OrderEditPage.formId);
return BX.Sale.Admin.OrderEditPage.form;
},
toggleFix: function(pinObjId, blockObjId)
{
var block = BX(blockObjId),
pinObj = BX(pinObjId);
if(!block || !pinObj)
return;
var isFixed = !BX.hasClass(block, 'adm-detail-tabs-block-pin');
if(isFixed)
{
BX.addClass(block, 'adm-detail-tabs-block-pin');
pinObj.title = BX.message("SALE_ORDEREDIT_FIX");
BX.UnFix(block);
}
else
{
BX.removeClass(block, 'adm-detail-tabs-block-pin');
pinObj.title = BX.message("SALE_ORDEREDIT_UNFIX");
BX.Fix(block, {type: 'top'});
}
isFixed = !isFixed;
BX.userOptions.save('sale_admin', 'sale_order_edit', 'fix_'+blockObjId, (isFixed ? 'Y': 'N'));
},
setFixHashCorrection: function()
{
BX.bind(window, 'hashchange',function ()
{
var scroll = 0;
if(BX.adminPanel && BX.adminPanel.isFixed())
{
var pos = BX.pos(BX.adminPanel.panel.parentElement);
scroll += pos.height;
}
if(BX.FixOffsets && BX.FixOffsets.top)
scroll += BX.FixOffsets.top;
if(scroll > 0)
window.scrollBy(0, -scroll);
});
},
disableSavingButtons: function(disable)
{
var i, btn, elements = ['apply', 'save'];
for(i in elements)
{
if(!elements.hasOwnProperty(i))
continue;
btn = BX.findChild(document, {attr : {'name': elements[i]}}, true);
if (btn)
btn.disabled = disable;
}
},
showDialog: function(text, title)
{
var dialog = new BX.PopupWindow(
'adm-sale-order-alert-dialog',
null,
{
autoHide: false,
draggable: true,
offsetLeft: 0,
offsetTop: 0,
bindOptions: { forceBindPosition: false },
closeByEsc: true,
closeIcon: true,
titleBar: title || BX.message('SALE_ORDEREDIT_MESSAGE'),
contentColor: 'white',
content: BX.create(
'span',
{
html: BX.util.htmlspecialchars(text),
style: {backgroundColor: "white"}
}
)
}
);
dialog.setButtons([
new BX.PopupWindowButton(
{
text: BX.message('SALE_ORDEREDIT_CLOSE'),
className: "popup-window-button-link-cancel",
events:
{
click : BX.delegate(function(){dialog.close(); dialog.destroy()}, dialog)
}
}
)]);
dialog.show();
},
showConfirmDialog: function(text, title, onAcceptCallback, onRejectCallback)
{
var dialog = new BX.PopupWindow(
'adm-sale-order-alert-dialog',
null,
{
autoHide: false,
draggable: true,
offsetLeft: 0,
offsetTop: 0,
bindOptions: { forceBindPosition: false },
closeByEsc: true,
closeIcon: true,
titleBar: title || BX.message('SALE_ORDEREDIT_CONFIRM'),
contentColor: 'white',
content: BX.create(
'span',
{
html: text,
style: {backgroundColor: "white"}
}
)});
dialog.setButtons([
new BX.PopupWindowButton({
text: BX.message('SALE_ORDEREDIT_CONFIRM_CONTINUE'),
className: "popup-window-button-accept",
events: {click : function(){
if(onAcceptCallback && typeof onAcceptCallback == "function")
onAcceptCallback.call(null);
dialog.close();
dialog.destroy()
}}
}),
new BX.PopupWindowButton({
text: BX.message('SALE_ORDEREDIT_CONFIRM_ABORT'),
className: "popup-window-button-decline",
events: {click : function() {
if(onRejectCallback && typeof onRejectCallback == "function")
onRejectCallback.call(null);
dialog.close();
dialog.destroy()
}}
})
]);
dialog.show();
},
/* Fields events handlers */
onSaveStatusButton: function(orderId, selectId)
{
BX.Sale.Admin.OrderAjaxer.sendRequest(
this.ajaxRequests.saveStatus(orderId, selectId)
);
},
onCancelStatusButton: function(orderId, canceled)
{
this.toggleCancelDialog();
BX.Sale.Admin.OrderAjaxer.sendRequest(
this.ajaxRequests.cancelOrder(orderId, canceled, BX("FORM_REASON_CANCELED").value)
);
},
getElementValue: function(elementId)
{
var element = BX(elementId);
if(element && typeof element.value != 'undefined')
return element.value;
return "";
},
getAllFormData: function()
{
var form = this.getForm();
if(!form)
return {};
var prepared = BX.ajax.prepareForm(form);
return !!prepared && prepared.data ? prepared.data : {};
},
unRegisterFieldUpdater: function(fieldName, fieldUpdater)
{
if(!this.fieldsUpdaters[fieldName])
return;
for(var i = this.fieldsUpdaters[fieldName].length-1; i >= 0; i--)
if(this.fieldsUpdaters[fieldName][i] == fieldUpdater)
delete(this.fieldsUpdaters[fieldName][i]);
},
unRegisterProductFieldsUpdaters: function(basketCode)
{
for(var i in this.fieldsUpdaters)
if(this.fieldsUpdaters.hasOwnProperty(i))
if(i.indexOf("PRODUCT["+basketCode+"]") != -1)
delete(this.fieldsUpdaters[i]);
},
unRegisterFieldsUpdaters: function(fieldNames)
{
for(var i in fieldNames)
if(fieldNames.hasOwnProperty(i))
if(this.fieldsUpdaters[fieldNames[i]])
delete(this.fieldsUpdaters[fieldNames[i]]);
},
registerFieldsUpdaters: function(updaters)
{
for(var i in updaters)
{
if(!updaters.hasOwnProperty(i))
continue;
if(typeof this.fieldsUpdaters[i] == 'undefined')
this.fieldsUpdaters[i] = [];
this.fieldsUpdaters[i].push(updaters[i]);
}
},
callFieldsUpdaters: function(orderData)
{
var ordered = ["DISCOUNTS_LIST", "DELIVERY_PRICE", "PROPERTIES_ARRAY", "BUYER_PROFILES_LIST","BUYER_PROFILES_DATA"],
orderedDone = {};
for(var i = 0, l = ordered.length-1; i<=l; i++)
{
var fieldName = ordered[i];
if(typeof orderData[fieldName] !== "undefined")
this.callConcreteFieldUpdater(fieldName, orderData[fieldName]);
orderedDone[fieldName] = true;
}
for(i in orderData)
{
if(!orderData.hasOwnProperty(i))
continue;
if(orderedDone[i])
continue;
this.callConcreteFieldUpdater(i, orderData[i]);
}
},
callConcreteFieldUpdater: function(fieldId, fieldData)
{
var context = null,
callback = null;
for(var j in this.fieldsUpdaters[fieldId])
{
if(!this.fieldsUpdaters[fieldId].hasOwnProperty(j))
continue;
var data = this.fieldsUpdaters[fieldId][j];
if(data.context && data.callback)
{
context = data.context;
callback = data.callback;
}
else
{
context = null;
callback = this.fieldsUpdaters[fieldId][j];
}
if(callback && typeof callback == "function")
callback.call(context, fieldData);
}
},
currencyFormat: function(summ, hideCurrency)
{
if(BX.Currency && BX.Currency.currencyFormat)
{
summ = BX.Currency.currencyFormat(
summ,
this.currency,
hideCurrency ? false : true
);
}
return summ;
},
restoreFormData: function(data)
{
var form = this.getForm();
if(!form)
{
BX.debug("BX.Sale.Admin.OrderEditPage:restoreFormData() can't find form");
return false;
}
for(var fieldName in data)
if(data.hasOwnProperty(fieldName))
if(typeof(form.elements[fieldName]) != "undefined")
form.elements[fieldName].value = data[fieldName];
return true;
},
createFormBlocker: function()
{
var scrollHeight = document.documentElement.scrollHeight,
clientHeight = document.documentElement.clientHeight,
height = Math.max(scrollHeight, clientHeight);
return BX.create('div',{
props: {
className: "bx-core-dialog-overlay",
id: "sale-adm-order-form-blocker"
},
style: {
zIndex: "10001",
width: "100%",
height: height+"px",
backgroundColor: "rgba(57,60,67,0.1)"
},
children: [
BX.create('span',{
style: {
zIndex: "10002",
top: "5%",
left:"85%",
position: "fixed",
background: 'url("/bitrix/panel/main/images/submenu-bg.png") repeat 0 0',
padding: "15px",
borderRadius: "5px",
fontSize: "14px",
border: "4px solid rgb(230, 230, 230)"
},
html: BX.message("SALE_ORDEREDIT_REFRESHING_DATA")
})
]
});
},
blockForm: function()
{
if(BX("sale-adm-order-form-blocker"))
return;
document.body.appendChild(this.createFormBlocker());
},
unBlockForm: function()
{
var blocker = BX("sale-adm-order-form-blocker");
if(blocker)
blocker.parentNode.removeChild(blocker);
},
toggleCancelDialog: function()
{
var dialog = BX("sale-adm-status-cancel-dialog");
if(dialog)
BX.toggleClass(dialog, "active");
},
setStatus: function(statusId)
{
var statusNode = BX("STATUS_ID");
if(statusNode)
statusNode.value = statusId;
},
desktopMakeCall: function(phone)
{
var isMobile = BX.browser.IsMobile();
BX.Sale.Admin.OrderEditPage.desktopRunningCheck(
function(){ location.href = 'bx://v2/' + location.hostname + '/callto/phone/' + encodeURIComponent(phone); },
function(){ location.href = (isMobile ? 'tel:' : 'callto:') + encodeURIComponent(phone); }
);
},
desktopRunningCheck: function(successCallback, failureCallback)
{
if(typeof(successCallback) == 'undefined')
{
return false;
}
if(typeof(failureCallback) == 'undefined')
{
failureCallback = function(){};
}
var dateCheck = (+new Date());
//Don't work for linux
var checkUrl = "http://127.0.0.1:20141/";
var checkElement = BX.create("img", {
attrs : {
"src" : checkUrl+"icon.png?"+dateCheck,
"data-id": dateCheck,
"style": "position:absolute; left: -100px; opacity: 0; width: 1px; height: 1px"
},
props : {className : "bx-messenger-out-of-view"},
events : {
"error" : function () {
var checkId = this.getAttribute('data-id');
failureCallback(false, checkId);
clearTimeout(BX.Sale.Admin.OrderEditPage.runningCheckTimeout[checkId]);
BX.remove(this);
},
"load" : function () {
var checkId = this.getAttribute('data-id');
successCallback(true, checkId);
clearTimeout(BX.Sale.Admin.OrderEditPage.runningCheckTimeout[checkId]);
BX.remove(this);
}
}
});
document.body.appendChild(checkElement);
BX.Sale.Admin.OrderEditPage.runningCheckTimeout[dateCheck] = setTimeout(function(){
failureCallback(false, dateCheck);
clearTimeout(BX.Sale.Admin.OrderEditPage.runningCheckTimeout[dateCheck]);
BX.remove(this);
}, 500);
return true;
},
changeCancelBlock: function(orderId, params)
{
var block = BX("sale-adm-status-cancel-blocktext"),
cancelReasonNode = BX("FORM_REASON_CANCELED"),
buttonNode = BX("sale-adm-status-cancel-dialog-btn"),
newBlockContent = "";
if(params.CANCELED == "Y")
{
newBlockContent = '<div class="adm-s-select-popup-element-selected-bad">' +
'<span>'+BX.message("SALE_ORDER_STATUS_CANCELED")+'</span>' +
params.DATE_CANCELED +
'<a href="/bitrix/admin/user_edit.php?lang='+BX.Sale.Admin.OrderEditPage.languageId+'&ID='+params.EMP_CANCELED_ID+'">'+
BX.util.htmlspecialchars(params.EMP_CANCELED_NAME) +
'</a>' +
'</div>';
block.style.textAlign = "start";
cancelReasonNode.disabled = true;
buttonNode.innerHTML = BX.message("SALE_ORDER_STATUS_CANCEL_CANCEL");
buttonNode.onclick = function(){ BX.Sale.Admin.OrderEditPage.onCancelStatusButton(orderId,"Y"); };
}
else
{
newBlockContent = '<a href="javascript:void(0);" onclick="BX.Sale.Admin.OrderEditPage.toggleCancelDialog();">'+BX.message("SALE_ORDER_STATUS_CANCELING")+'</a>';
block.style.textAlign = "center";
cancelReasonNode.disabled = false;
buttonNode.innerHTML = BX.message("SALE_ORDER_STATUS_CANCEL");
buttonNode.onclick = function(){ BX.Sale.Admin.OrderEditPage.onCancelStatusButton(orderId,"N"); };
}
block.innerHTML = newBlockContent;
},
onRefreshOrderDataAndSave: function()
{
BX.Sale.Admin.OrderEditPage.blockForm();
var form = this.getForm();
form.appendChild(
BX.create('input',{
props: {
name: 'refresh_data_and_save',
type: 'hidden',
value: 'Y'
}
})
);
if(BX.Sale.Admin.OrderEditPage.tailsLoaded)
{
form.submit();
}
else
{
BX.addCustomEvent('onAfterSaleOrderTailsLoaded', function(){ form.submit(); });
}
},
onOrderCopy: function(params)
{
BX.Sale.Admin.OrderEditPage.blockForm();
var form = this.getForm();
form.action = params;
form.submit();
},
/**
* @param {string} itemCode
* @param {string} itemType
* @param {array} itemDiscounts
* @param {array} discountsList
* @param {string} mode
* @returns {div}
*/
createDiscountsNode: function(itemCode, itemType, itemDiscounts, discountsList, mode)
{
var discountsNode = null, i, l, discountId;
if(itemDiscounts && discountsList && discountsList.DISCOUNT_LIST)
{
l = itemDiscounts.length;
if(l > 0)
{
discountsNode = BX.create('table');
for(i = 0, l; i<l; i++)
{
if(!itemDiscounts[i])
continue;
discountId = itemDiscounts[i].DISCOUNT_ID;
if(discountsList.DISCOUNT_LIST[discountId])
{
this.addDiscountItemRow(
itemCode,
itemType,
itemDiscounts[i],
discountsList.DISCOUNT_LIST[discountId],
discountsNode,
mode
);
}
}
}
}
else
{
discountsNode = BX.create('span',{
html: " "
});
}
return BX.create('div',{ children: [discountsNode] });
},
/**
*
* @param {string} itemCode
* @param {string} itemType
* @param {{
* COUPON_ID: string,
* APPLY: string,
* DESCR: {}|string,
* TYPE: string
* }} itemDiscount
* @param {{
* DISCOUNT_ID: string,
* USE_COUPONS: string,
* EDIT_PAGE_URL: string,
* NAME: string
* }} discountParams
* @param {HTMLTableElement} table
* @param {string} mode
* @returns {HTMLElement}
*/
addDiscountItemRow: function(itemCode, itemType, itemDiscount, discountParams, table, mode)
{
var row = table.insertRow(-1),
itemAttrs = {'data-discount-id': discountParams.DISCOUNT_ID},
name,
checkbox;
if (itemType === 'DISCOUNT_LIST')
{
itemAttrs['data-discount'] = 'Y';
itemAttrs['data-use-coupons'] = (discountParams.USE_COUPONS);
}
if (itemType === 'BASKET' || itemType === 'DELIVERY')
{
itemAttrs['data-coupon-id'] = (itemDiscount.COUPON_ID ? itemDiscount.COUPON_ID : '-');
itemAttrs['data-discount-target'] = 'Y';
}
name = "DISCOUNTS["+itemType+"]"+(itemCode != "" ? "["+itemCode+"]" : "")+"["+discountParams.DISCOUNT_ID+"]";
checkbox = BX.create('input',{
props: {
type: "checkbox",
name: name,
checked: itemDiscount.APPLY === "Y",
value: "Y",
disabled: (mode === "VIEW")
},
attrs: itemAttrs
});
row.appendChild(
BX.create('td',{
children: [
BX.create('input',{
props: {
type: "hidden",
name: name,
value: "N"
}
}),
checkbox
]
})
);
if(mode === "EDIT")
{
BX.bind(checkbox, "click", function(e){
BX.Sale.Admin.OrderEditPage.setDiscountCheckbox(e);
BX.Sale.Admin.OrderEditPage.refreshDiscounts();
});
}
var value = "";
if(typeof itemDiscount.DESCR === "object")
{
if(itemDiscount.DESCR)
{
for(var i in itemDiscount.DESCR)
if(itemDiscount.DESCR.hasOwnProperty(i))
value += itemDiscount.DESCR[i];
}
else
{
value = BX.message("SALE_ORDEREDIT_DISCOUNT_UNKNOWN")+" %";
}
}
else
{
value = itemDiscount.DESCR;
}
row.appendChild(
BX.create('td',{
html: "<strong>"+value+"</strong>"
})
);
if(discountParams.EDIT_PAGE_URL)
{
row.appendChild(
BX.create('td',{
children: [
BX.create('a',{
props: {
href: discountParams.EDIT_PAGE_URL,
className: "adm-s-detail-content-sale-link"
},
html: BX.util.htmlspecialchars(discountParams.NAME)
})
]
})
);
}
else
{
row.appendChild(
BX.create('td',{
children: [
BX.create('span',{
html: BX.util.htmlspecialchars(discountParams.NAME)
})
]
})
);
}
return row;
},
setDiscountCheckbox: function(e)
{
var target = e.target,
coll,
i,
summaryChecked,
itemCoupon;
if (!!target && target.hasAttribute('data-discount-id'))
{
if (target.hasAttribute('data-coupon'))
{
coll = BX.findChild(
BX.Sale.Admin.OrderEditPage.getForm(),
{ attribute: {
'data-discount-id': target.getAttribute('data-discount-id'),
'data-coupon-id': target.getAttribute('data-discount-coupon')
}},
true,
true
);
if (coll.length > 0)
{
for (i = 0; i < coll.length; i++)
coll[i].checked = target.checked;
}
summaryChecked = false;
coll = BX.findChild(
BX.Sale.Admin.OrderEditPage.getForm(),
{ attribute: {
'data-discount-id': target.getAttribute('data-discount-id'),
'data-coupon': 'Y'
}},
true,
true
);
if (coll.length > 0)
{
for (i = 0; i < coll.length; i++)
{
if (coll[i].checked)
summaryChecked = true;
}
}
coll = BX.findChild(
BX.Sale.Admin.OrderEditPage.getForm(),
{ attribute: {
'data-discount-id': target.getAttribute('data-discount-id'),
'data-discount': 'Y',
'data-use-coupons': 'Y'
}},
true,
false
);
if (coll)
coll.checked = summaryChecked;
coll = null;
}
else if (target.hasAttribute('data-discount'))
{
coll = BX.findChild(
BX.Sale.Admin.OrderEditPage.getForm(),
{ attribute: {
'data-discount-id': target.getAttribute('data-discount-id')
}},
true,
true
);
if (coll.length > 0)
{
for (i = 0; i < coll.length; i++)
coll[i].checked = target.checked;
}
coll = null;
}
else if (target.hasAttribute('data-discount-target'))
{
if (target.checked)
{
coll = BX.findChild(
BX.Sale.Admin.OrderEditPage.getForm(),
{ attribute: {
'data-discount-id': target.getAttribute('data-discount-id'),
'data-discount': 'Y'
}},
true,
false
);
if (coll)
coll.checked = true;
if (target.hasAttribute('data-coupon-id'))
{
itemCoupon = target.getAttribute('data-coupon-id');
if (itemCoupon != '' && itemCoupon != '-')
{
coll = BX.findChild(
BX.Sale.Admin.OrderEditPage.getForm(),
{ attribute: {
'data-discount-id': target.getAttribute('data-discount-id'),
'data-discount-coupon': itemCoupon
}},
true,
false
);
if (coll)
coll.checked = true;
}
}
coll = null;
}
}
}
},
onProblemCloseClick: function(orderId, blockId)
{
BX.Sale.Admin.OrderAjaxer.sendRequest(
this.ajaxRequests.unmarkOrder(orderId, blockId)
);
},
onMarkerCloseClick: function(markerId, orderId, blockId, entityId, forEntity)
{
BX.Sale.Admin.OrderAjaxer.sendRequest(
this.ajaxRequests.deleteMarker(markerId, orderId, blockId, entityId, forEntity)
);
},
onMarkerFixErrorClick: function(markerId, orderId, blockId, entityId, forEntity)
{
BX.Sale.Admin.OrderAjaxer.sendRequest(
this.ajaxRequests.fixMarker(markerId, orderId, blockId, entityId, forEntity)
);
},
refreshDiscounts: function()
{
if(this.discountRefreshTimeoutId > 0)
return;
this.discountRefreshTimeoutId = setInterval(function(){
BX.Sale.Admin.OrderAjaxer.sendRequest(
BX.Sale.Admin.OrderEditPage.ajaxRequests.refreshOrderData({
operation: "DISCOUNTS_REFRESH"
}
)
);
clearInterval(BX.Sale.Admin.OrderEditPage.discountRefreshTimeoutId);
BX.Sale.Admin.OrderEditPage.discountRefreshTimeoutId = 0;
},
500
);
},
rollBack: function()
{
for(var i in BX.Sale.Admin.OrderEditPage.rollbackMethods)
{
if(!BX.Sale.Admin.OrderEditPage.rollbackMethods.hasOwnProperty(i))
continue;
var method = BX.Sale.Admin.OrderEditPage.rollbackMethods[i];
if(typeof method !== "function")
continue;
method.call(method);
delete BX.Sale.Admin.OrderEditPage.rollbackMethods[i];
}
},
addRollbackMethod: function(method)
{
BX.Sale.Admin.OrderEditPage.rollbackMethods.push(method);
},
resetRollbackMethods: function()
{
BX.Sale.Admin.OrderEditPage.rollbackMethods = [];
},
enableFormButtons: function (formId)
{
var applyButt = BX.findChild(BX(formId), {tag: 'input', attribute: {name: 'apply', type: 'submit'}}, true),
saveButt = BX.findChild(BX(formId), {tag: 'input', attribute: {name: 'save', type: 'submit'}}, true);
if(applyButt)
applyButt.disabled = false;
if(saveButt)
saveButt.disabled = false;
},
/* Ajax request templates */
ajaxRequests: {
addProductToBasket: function(productId, quantity, replaceBasketCode, columns, customPrice)
{
var postData = {
action: "addProductToBasket",
productId: productId,
quantity: quantity,
replaceBasketCode: replaceBasketCode ? replaceBasketCode : "",
columns: columns,
callback: BX.Sale.Admin.OrderAjaxer.refreshOrderData.callback
};
if(customPrice !== false)
postData.customPrice = customPrice;
return BX.Sale.Admin.OrderAjaxer.refreshOrderData.modifyParams(postData);
},
getProductIdBySkuProps: function(params)
{
return {
action: "getProductIdBySkuProps",
productId: params.productId,
iBlockId: params.iBlockId,
skuProps: params.skuProps,
skuOrder: params.skuOrder,
changedSkuId: params.changedSkuId,
callback: params.callback
};
},
cancelOrder: function(orderId, canceled, comment)
{
return {
action: "cancelOrder",
orderId: orderId,
canceled: canceled,
comment: comment,
callback: function(result)
{
BX.Sale.Admin.OrderEditPage.unBlockForm();
if(result && !result.ERROR)
BX.Sale.Admin.OrderEditPage.changeCancelBlock(orderId, result);
else if(result && result.ERROR)
BX.Sale.Admin.OrderEditPage.showDialog(BX.message("SALE_ORDER_STATUS_CANCEL_ERROR") + ": "+result.ERROR);
else
BX.debug(BX.message("SALE_ORDER_STATUS_CANCEL_ERROR"));
}
};
},
saveStatus: function(orderId, selectId)
{
var select = BX(selectId);
if(!select)
BX.debug("Error getting select object with id: "+selectId);
if(typeof select.value == 'undefined')
BX.debug("Error getting select value id: "+selectId);
BX('save_status_result_ok').style.display = 'none';
return {
action: "saveStatus",
orderId: orderId,
statusId: select.value,
callback: function(result)
{
var message;
result.CAN_USER_EDIT = "Y";
if(result && result.CAN_USER_EDIT && !result.ERROR)
{
BX.Sale.Admin.OrderEditPage.callFieldsUpdaters({STATUS_ID: select.value});
BX.Sale.Admin.OrderEditPage.disableSavingButtons(result.CAN_USER_EDIT != "Y");
BX('save_status_result_ok').style.display = '';
}
else if(result && result.ERROR)
{
message = BX.message("SALE_ORDER_STATUS_CHANGE_ERROR")+": " + result.ERROR;
}
else
{
message = BX.message("SALE_ORDER_STATUS_CHANGE_ERROR");
}
if(message)
BX.Sale.Admin.OrderEditPage.showDialog(message);
}
};
},
getOrderFields: function(params, refreshFormDataAfter)
{
return {
action: "getOrderFields",
givenFields: params.givenFields,
demandFields: params.demandFields,
callback: function(result)
{
if(result && result.RESULT_FIELDS && !result.ERROR)
{
BX.Sale.Admin.OrderEditPage.callFieldsUpdaters(result.RESULT_FIELDS);
if(refreshFormDataAfter)
{
BX.Sale.Admin.OrderAjaxer.sendRequest(
BX.Sale.Admin.OrderEditPage.ajaxRequests.refreshOrderData()
);
}
}
else if(result && result.ERROR)
{
BX.debug("Error receiving fields: " + result.ERROR);
}
else
{
BX.debug("Error receiving fields!");
}
}
};
},
refreshOrderData: function(additional)
{
if(!BX.Sale.Admin.OrderAjaxer.refreshOrderData.getFlag())
{
return BX.Sale.Admin.OrderAjaxer.refreshOrderData.modifyParams({
action: "refreshOrderData",
additional: additional,
callback: BX.Sale.Admin.OrderAjaxer.refreshOrderData.callback
});
}
},
unmarkOrder: function(orderId, blockId)
{
return {
action: "unmarkOrder",
orderId: orderId,
callback: function(result)
{
BX.Sale.Admin.OrderEditPage.unBlockForm();
if(result && !result.ERROR)
BX(blockId).style.display = 'none';
else if(result && result.ERROR)
BX.Sale.Admin.OrderEditPage.showDialog(BX.message("SALE_ORDEREDIT_UNMARK_ERROR") + ": "+result.ERROR);
else
BX.debug(BX.message("SALE_ORDEREDIT_UNMARK_ERROR"));
}
};
},
getOrderTails: function(orderId, formType, idPrefix)
{
return {
action: "getOrderTails",
orderId: orderId,
formType: formType,
idPrefix: idPrefix,
callback: function(result)
{
if(result && !result.ERROR)
{
BX.Sale.Admin.OrderEditPage.callFieldsUpdaters(result);
var node;
if(typeof result.ANALYSIS != 'undefined')
{
node = BX('sale-adm-order-analysis-content');
if(node)
node.innerHTML = result.ANALYSIS;
}
if(typeof result.SHIPMENTS != 'undefined')
{
node = BX('sale-adm-order-shipments-content');
if(node)
{
var data = BX.processHTML(result.SHIPMENTS);
BX.loadCSS(data['STYLE']);
node.innerHTML = data['HTML'];
for (var i in data['SCRIPT'])
BX.evalGlobal(data['SCRIPT'][i]['JS']);
}
}
}
else if(result && result.ERROR)
{
BX.Sale.Admin.OrderEditPage.showDialog(result.ERROR);
}
else
{
BX.debug("Can't order view tails");
}
BX.Sale.Admin.OrderEditPage.tailsLoaded = true;
BX.onCustomEvent("onAfterSaleOrderTailsLoaded", [result]);
}
};
},
deleteMarker: function(markerId, orderId, blockId, entityId, forEntity)
{
return {
action: "deleteMarker",
markerId: markerId,
orderId: orderId,
entityId: entityId,
forEntity: forEntity ? 'Y': 'N',
callback: function(result)
{
BX.Sale.Admin.OrderEditPage.unBlockForm();
if(result && !result.ERROR)
{
if (result.WARNING && result.WARNING.length > 0)
{
BX.Sale.Admin.OrderEditPage.showDialog(result.WARNING);
}
else
{
BX(blockId).style.display = 'none';
}
if(typeof result.MARKERS != 'undefined')
{
var node = BX('sale-adm-order-problem-block');
if(node)
node.innerHTML = result.MARKERS;
}
}
else if(result && result.ERROR)
{
BX.Sale.Admin.OrderEditPage.showDialog(BX.message("SALE_ORDEREDIT_UNMARK_ERROR") + ": "+result.ERROR);
}
else
{
BX.debug(BX.message("SALE_ORDEREDIT_UNMARK_ERROR"));
}
}
};
},
fixMarker: function(markerId, orderId, blockId, entityId, forEntity)
{
return {
action: "fixMarker",
markerId: markerId,
orderId: orderId,
entityId: entityId,
forEntity: forEntity ? 'Y': 'N',
callback: function(result)
{
BX.Sale.Admin.OrderEditPage.unBlockForm();
if(result && !result.ERROR)
{
if (result.WARNING && result.WARNING.length > 0)
{
BX.Sale.Admin.OrderEditPage.showDialog(result.WARNING);
}
else
{
BX(blockId).style.display = 'none';
}
if(typeof result.MARKERS != 'undefined')
{
var node = BX('sale-adm-order-problem-block');
if(node)
node.innerHTML = result.MARKERS;
}
}
else if(result && result.ERROR)
{
BX.Sale.Admin.OrderEditPage.showDialog(BX.message("SALE_ORDEREDIT_UNMARK_ERROR") + ": "+result.ERROR);
}
else
{
BX.debug(BX.message("SALE_ORDEREDIT_UNMARK_ERROR"));
}
}
};
}
},
fastNavigation: {
lastMarkedItemId: null,
onClickItem: function(formId, tabId, locationHash)
{
eval(formId+'.SelectTab(\''+tabId+'\')');
setTimeout(function(){ window.location.hash = locationHash; }, 600);
},
markItem: function()
{
if(!BX.Sale.Admin.OrderEditPage.fastNavigation.isFixed())
return;
var magicOffset = 100;
var scrollTop = BX.GetWindowScrollPos().scrollTop + BX.FixOffsets.top + magicOffset,
anchors = BX.findChildren(BX('adm-workarea'), { className: "adm-sale-fastnav-anchor"}, true),
lastMarkedItemIdChanged = false;
for(var i in anchors)
{
if(!anchors.hasOwnProperty(i))
continue;
var pos = BX.pos(anchors[i].nextElementSibling);
if(pos.top <= scrollTop && pos.bottom >= scrollTop)
{
if(this.lastMarkedItemId != anchors[i].id)
{
BX.addClass(BX('nav_'+anchors[i].id), 'selected');
this.lastMarkedItemId = anchors[i].id;
lastMarkedItemIdChanged = true;
}
}
else
{
if(lastMarkedItemIdChanged || this.lastMarkedItemId == anchors[i].id)
{
BX.removeClass(BX('nav_'+anchors[i].id), 'selected');
if(this.lastMarkedItemId == anchors[i].id)
this.lastMarkedItemId = null;
}
}
}
},
isFixed: function()
{
return !BX.hasClass('sale-order-edit-block-fast-nav', 'adm-detail-tabs-block-pin');
}
}
};