Коллеги, добрый день!
Появилась необходимость изменить поведение готового модального окна 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*/ }; } );
Дима Вовченко,
Спасибо! Задача в том, чтобы если привязан инвойс, то не давать возможности в модальном окне редактировать колонки все.