Коллеги, добрый день!
Появилась необходимость изменить поведение готового модального окна SupplyPaymentProductDetailModalBox. Данное окно вызывается из детали SupplyPaymentDetailV2. Окно дает возможность изменения количества продуктов в Инсталлмент плане.
Глобальная задача - если к инсталлмент плану привязан инвойс, то при нажатии на ссылку продуктов данного инсталлмент плана(вызывает открытие модального окна SupplyPaymentProductDetailModalBox) запрещать вносить изменения в продукты.
Думал это реализовать следующим образов: переопределить функцию открытия модального окна с добавлением проверки на наличие инвойса для выбранной записи инсталлмент плана и в зависимости от того, инвойс привязан или нет, открывать либо стандартное модальное окно либо такое же мое с закрытыми на редактирование ячейками. Для этого скопировал весь код стандартного модального окна SupplyPaymentProductDetailModalBox и сделал новый свой модуль с кодом стандартного. Для проверки решил открыть свое окно, поменяв в нем Лейбу. Но получаю ошибки.
![]()
Помогите пожалуйста советом, можно ли так делать или я упустил какой-то момент.
Спасибо!
Нравится
Добрый день, Сергей!
Не совсем понял про "запрещать вносить изменения в продукты", однако, чтобы модальное окно открывалось только если привязан объект счёта, необходимо заместить схему SupplyPaymentDetailV2 следующим образом:
define("SupplyPaymentDetailV2", ["ConfigurationConstants", "OrderConfigurationConstants", "ConfigurationEnums",
"SupplyPaymentGridButtonsUtility", "Order", "SupplyPaymentDetailV2Resources", "InvoiceProduct",
"ProductUtilitiesV2", "ConfigurationGrid", "ConfigurationGridGenerator", "ConfigurationGridUtilities",
"css!SupplyPaymentGridButtonsUtility", "OrderUtilities", "MoneyUtilsMixin"],
function(ConfigurationConstants, OrderConfigurationConstants, enums, GridButtonsUtil, Order, resources,
InvoiceProductSchema, ProductUtilities) {
return {
entitySchemaName: "SupplyPaymentElement",
attributes: {
},
messages: {
},
/**
* ######-#######, ########### ################ ####### #####.
*/
mixins: {
ConfigurationGridUtilites: "Terrasoft.ConfigurationGridUtilities",
OrderUtilities: "Terrasoft.OrderUtilities",
MoneyUtilities: "Terrasoft.MoneyUtilsMixin"
},
methods: {
/**
* @inheritdoc Terrasoft.GridUtilitiesV2#linkClicked
* @overridden
*/
linkClicked: function(recordId, columnName) {
var data = this.getGridData();
var row = data.get(recordId);
var invoice = row.get("Invoice");
var eventResult = false;
try {
this.set("CurrentRowId", recordId);
if (columnName === "Products") {
if (invoice) {
this.openProductsWindow();
}
} else if (columnName === "Invoice") {
this.onInvoiceButtonClick(row);
}
} catch (exception) {
this.log(exception, this.Terrasoft.LogMessageType.ERROR);
}
this.set("IsButtonClicked", true);
return eventResult;
}
},
diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
};
}
);
Дима Вовченко,
Спасибо! Задача в том, чтобы если привязан инвойс, то не давать возможности в модальном окне редактировать колонки все.