Показать сообщение отдельно
Старый 24.11.2008, 15:49   #12  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,971 / 3267 (116) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от DenisS Посмотреть сообщение
2 Logger
По-моему, не совсем так:
В методе updateItemReturnAdjustments класса InventCostItemDim все возвратные проводки по заказам корректируются в соответствии с исходными расходными проводками. То есть не важно, по какой себестоимости провелся возврат при разноске. А дальше возникающие при закрытии коррекции расходной проводки (проводок) протягиваются по графу себестоимости.
Возможно что и так.
Я сейчас точно не помню. Смотрел давно, мог ошибиться.

Чтобы точно быть уверенным нужно проверять на конкретном примере.

А вообще указанный код
X++:
        if (issue.Qty)
        {
            costPrice   = (issue.costAmountPosted + issue.costAmountAdjustment) / issue.Qty;
            adjustment  = Currency::amount(inventTrans.Qty * costPrice - inventTrans.costAmountPosted - inventTrans.costAmountAdjustment);

            if (abs(adjustment) >= inventClosing.minTransferValue && !InventAdj::isOnhandAdjusted(inventTrans.InventTransId, inventTrans.InventTransIdReturn, ''))
                this.updateTransIdReturnReceipt(inventTrans.InventTransId, inventTrans.InventTransIdReturn, costPrice);
        }
в методе
\Classes\InventCostItemDim\updateItemReturnAdjustments

не обязательно приведет к вызову
X++:
this.updateTransIdReturnReceipt(inventTrans.InventTransId, inventTrans.InventTransIdReturn, costPrice);
на каждом шаге цикла.

я смотрел для случая переносов для Ax3 SP5
Была попытка изменить код расчета себестоимости чтобы не было усреднения по партиям. Под это дело был изменен метод updateTransIdReturnReceipt()
Но подстава была в том что если при расчете себестоимости расходная проводка не корректировалась (а такое бывает особенно часто если партионный учет включен) - ну повезло нам что мгновенная себестоимость совпала с той которая нужна, то метод updateTransIdReturnReceipt() - не вызывается. Считается что нефиг зря пересчеты гонять, что при первоначальной разноске все должно было правильно перенестить по связи возвращенных лотов.

Соответсвенно моя модифа втаком случае не отрабатывала.
Возможно что здесь у donMigel похожий случай. (По идее метод одинаково работает что для лотов возврата, что для переносов)

P.S.
При сравнении кода нужно еще учитывать, что с SP3 по SP5 закрытие склада поменялось, так что у вас код может отличаться. Я приводил примеры для SP5