Ошибка детали "Продукты в заказе" - "Сумма оплат не соответствует сумме продуктов"
Вопрос
При нажатии на кнопку "добавить" детали "Продукты в заказе" возникала следующая ошибка.
![]()
Аналогичная ошибка возникала про попытке добавить "График поставок и оплат"
Ответ
Проблема в следующем: при попытке добавить продукт предварительно выполняется сохранение страницы, однако по неизвестным причинам был изменен базовый спрвочник "OrderStatus". Во время сохранения выполняется проверка на равенство сумм и код страницы OrderPageV2 пакета Passport отрабатывает некорректно:
validateOrderStatus: function(callback, scope) {
var result = {
success: true
};
var status = this.get("Status");
var primaryAmount = this.get("PrimaryAmount");
var OrderStatus = OrderConfigurationConstants.Order.OrderStatus;
if (status && (status.value === OrderStatus.InPlanned || status.value === OrderStatus.Canceled)) {
callback.call(scope || this, result);
return;
}
var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
rootSchemaName: "SupplyPaymentElement"
});
esq.addAggregationSchemaColumn("PrimaryAmountPlan", Terrasoft.AggregationType.SUM,
"PrimaryAmountPlanSum");
var filters = Terrasoft.createFilterGroup();
filters.addItem(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,
"Order", this.get("Id")));
filters.addItem(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,
"Type", OrderConfigurationConstants.SupplyPaymentElement.Type.Payment));
esq.filters = filters;
esq.getEntityCollection(function(response) {
if (response.success) {
var collection = response.collection;
if (collection.getCount() > 0 && primaryAmount !==
collection.getByIndex(0).get("PrimaryAmountPlanSum")) {
result.message = this.get("Resources.Strings.ValidateOrderStatus");
result.success = false;
}
} else {
return;
}
callback.call(this, result);
}, scope);Инструкция
var status = this.get("Status"); - возвращает undefined
collection.getByIndex(0).get("PrimaryAmountPlanSum")) - возвращает 0
Из-за это не проходит проверка и выдается предупреждения для статуса "В планах"
Для решения необходимо заместить модуль OrderConfigurationConstant и указать в нем корректные id, тогда код:
if (status && (status.value === OrderStatus.InPlanned || status.value === OrderStatus.Canceled)) {
callback.call(scope || this, result);
return;
}будет выполняться корректно.