Публикация

Ошибка детали "Продукты в заказе" - "Сумма оплат не соответствует сумме продуктов"

Вопрос

При нажатии на кнопку "добавить" детали "Продукты в заказе" возникала следующая ошибка.

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

Аналогичная ошибка возникала про попытке добавить "График поставок и оплат" 

Ответ

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

будет выполняться корректно.

 

Нравится

Поделиться

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