Ошибка детали "Продукты в заказе" - "Сумма оплат не соответствует сумме продуктов"
Вопрос
При нажатии на кнопку "добавить" детали "Продукты в заказе" возникала следующая ошибка.
Аналогичная ошибка возникала про попытке добавить "График поставок и оплат"
Ответ
Проблема в следующем: при попытке добавить продукт предварительно выполняется сохранение страницы, однако по неизвестным причинам был изменен базовый спрвочник "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; }
будет выполняться корректно.