Кастомизация существующего модального окна

Коллеги, добрый день!

 

Появилась необходимость изменить поведение готового модального окна SupplyPaymentProductDetailModalBox. Данное окно вызывается из детали SupplyPaymentDetailV2. Окно дает возможность изменения количества продуктов в Инсталлмент плане.

 

Глобальная задача - если к инсталлмент плану привязан инвойс, то при нажатии на ссылку продуктов данного инсталлмент плана(вызывает открытие модального окна SupplyPaymentProductDetailModalBox) запрещать вносить изменения в продукты.

 

Думал это реализовать следующим образов: переопределить функцию открытия модального окна с добавлением проверки на наличие инвойса для выбранной записи инсталлмент плана и в зависимости от того, инвойс привязан или нет, открывать либо стандартное модальное окно либо такое же мое с закрытыми на редактирование ячейками. Для этого скопировал весь код стандартного модального окна SupplyPaymentProductDetailModalBox и сделал новый свой модуль с кодом стандартного. Для проверки решил открыть свое окно, поменяв в нем Лейбу. Но получаю ошибки.

Изображение удалено.

Помогите пожалуйста советом, можно ли так делать или я упустил какой-то момент. 

Спасибо!

Нравится

2 комментария

Добрый день, Сергей!

Не совсем понял про "запрещать вносить изменения в продукты", однако, чтобы модальное окно открывалось только если привязан объект счёта, необходимо заместить схему 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*/
			};
		}
);

 

Дима Вовченко,

Спасибо! Задача в том, чтобы если привязан инвойс, то не давать возможности в модальном окне редактировать колонки все.

Показать все комментарии