Коллеги, добрый день!
В академии описано как можно сделать вычисляемые колонки, но было бы супер если бы в данном примере еще было описано как можно изменить состояние (в данном случае оплаты заказа) в зависимости от того оплачена сумма полностью или частично.
Возможно кто-то подскажет как дополнить данный код, чтобы автоматически менять состояние оплаты по заказу в зависимости от того полностью оплачено, частично или не оплачено.
Вот код из академии:
define("OrderPageV2", [], function() {
return {
// Название схемы объекта страницы редактирования.
entitySchemaName: "Order",
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
// Свойство attributes модели представления.
attributes: {
// Название атрибута модели представления.
"UsrBalance": {
// Тип данных колонки модели представления.
dataValueType: Terrasoft.DataValueType.FLOAT,
// Массив конфигурационных объектов, определяющих зависимости колонки [UsrBalance].
dependencies: [
{
// Значение колонки [UsrBalance] зависит от значений колонок [Amount]
// и [PaymentAmount].
columns: ["Amount", "PaymentAmount"],
// Метод-обработчик, который вызывается при изменении значения одной из колонок [Amount]
// и [PaymentAmount].
methodName: "calculateBalance"
}
]
}
},
// Коллекция методов модели представления страницы редактирования.
methods: {
// Переопределение базового метода Terrasoft.BasePageV2.onEntityInitialized, который
// срабатывает после окончания инициализации схемы объекта страницы редактирования.
onEntityInitialized: function() {
// Вызывается родительская реализация метода.
this.callParent(arguments);
// Вызов метода-обработчика, который рассчитывает значение колонки [UsrBalance].
this.calculateBalance();
},
// Метод-обработчик, который рассчитывает значение колонки [UsrBalance].
calculateBalance: function() {
// Проверка, проинициализованы ли в момент открытия страницы редактирования
// колонки [Amount] и [PaymentAmount]. Если нет, то для них устанавливаются нулевые значения.
if (!this.get("Amount")) {
this.set("Amount", 0);
}
if (!this.get("PaymentAmount")) {
this.set("PaymentAmount", 0);
}
// Расчет разницы между значениями в колонках [Amount] и [PaymentAmount].
var result = this.get("Amount") - this.get("PaymentAmount");
// Результат расчета присваивается в качестве значения колонке [UsrBalance].
this.set("UsrBalance", result);
}
},
// Визуальное отображение поля [Остаток для оплаты] на странице редактирования.
diff: /**SCHEMA_DIFF*/[
{
"operation": "insert",
"parentName": "Header",
"propertyName": "items",
"name": "UsrBalance",
"values": {
"bindTo": "UsrBalance",
"layout": {"column": 12, "row": 2, "colSpan": 12}
}
}
]/**SCHEMA_DIFF*/
};
});