08.12.2010, 17:12 | #1 |
Участник
|
Разница InventSplitTrans и InventSplitTrans_Remain
Добрый день.
Коллеги, недавно столкнулся с очень интересным поведением аксапты. Ситуация : Есть заказ в закрытом периоде. Расходная складская проводка по заказу закрыта. Необходимо оформить частичный возврат. Если мы оформляем частичный возврат при помощи функции создание кредит-ноты, то все в порядке. Расходная закрытая проводка расщепляется и в неё прописывается лот возврата. (Работает метод InventTrans.insertTransIdReturn() и расщепление происходит вызовом класса InventSplitTrans) Если же пытаемся сделать возврат через немедленное получение, то закрытая проводка не расщепляется - выдает ошибку. (Работает метод inventTrans.updateSplit() и попытка расщепления происходит вызовом класса InventSplitTrans_Remain) В связи с этим вопрос, почему для возврата по немедленному получению используется InventSplitTrans_Remain и когда какой класс лучше использовать ? |
|
|
За это сообщение автора поблагодарили: gl00mie (5). |
08.12.2010, 17:55 | #2 |
северный Будда
|
Возможно, причина в том, что немедленное получение - это скорее функционал исправления ошибок разноски. Т.е. разработчики сочли так - если случайно отгрузили больше, чем надо, то корректировка делается через немедленное получение. Если же клиет выставил, к примеру, рекламацию, то надо создать полноценный документ возврата. И если первый механизм - оперативный, то второй ретроспективный. Соответственно - первый и не должен работать с уже закрытыми периодами, в то время как для второго это нужно иметь обязательно.
Повторюсь, сие есть 100% ИМХО.
__________________
С уважением, Вячеслав |
|
|
За это сообщение автора поблагодарили: Logger (2), Ievgenii (2). |
09.12.2010, 12:31 | #3 |
Участник
|
Понятно.
Как-то это странно. Из того что я знаю - пока не вижу противопоказаний чтобы всегда разрешать расщепление. Собственно потому и тему открыл. |
|
09.12.2010, 16:58 | #4 |
Участник
|
Цитата:
Повторюсь, сие есть 100% ИМХО.
Плюс минус так оно и есть (ибо более точно его создатели тоже ответить не могут, а классы эти уже лет 5-7 не менялись ). Рекомендация – использовать InventSplitTrans_Remain который используться по определению из InventTrans.updateSplit() метода. Этого должно хватать в 80% случаев. В 20% случаев когда необходимо по сплитить финансово закрытые проводки используеться InventSplitTrans класс. Возможно дизайн и названия классов не совсем отвечают тому что они делают (опять таки очень старый код) – постараемся исправить (but no promisses of course )
__________________
Thx, Ievgenii Korovin| Dynamics Ax SCM| Microsoft Corp| http://blogs.msdn.com/DynamicsAxSCM/ |
|
|
За это сообщение автора поблагодарили: Logger (5). |
06.10.2015, 17:34 | #5 |
Участник
|
Цитата:
Сообщение от Ievgenii
Good question!
Плюс минус так оно и есть (ибо более точно его создатели тоже ответить не могут, а классы эти уже лет 5-7 не менялись ). Рекомендация – использовать InventSplitTrans_Remain который используться по определению из InventTrans.updateSplit() метода. Этого должно хватать в 80% случаев. В 20% случаев когда необходимо по сплитить финансово закрытые проводки используеться InventSplitTrans класс. Возможно дизайн и названия классов не совсем отвечают тому что они делают (опять таки очень старый код) – постараемся исправить (but no promisses of course) Есть ощущение что InventSplitTrans_Remain был сделан исключительно для использования при коррекции остатка в наличии. В остальных случаях лучше использовать InventSplitTrans. По идее не должно быть проблем. (Но детально все последствия не проверял) P.S. Интересно что в 2012-й код принципиально не изменился. Все осталось как было + добавилась фича не имеющая отношения к обсуждаемому вопросу. |
|
08.10.2015, 15:32 | #6 |
Участник
|
Если используете вторичную себестоимость, то будьте внимательны в этом функционале (когда делается частичный возврат через кредит-ноту по заказу на продажу из закрытого периода) есть баг расчета себестоимости во вторичной валюте при расщеплении складских проводок, причем он не исправлен даже в ax2012 (InventSplitTrans\setSplitSettledAmount)
X++: if (_transFrom.CostAmountSettledSecCur_RU != 0) { // SN //costValueSecCur_RU = _transFrom.costValue(); costValueSecCur_RU = _transFrom.costValueSecCur_RU(); // SN if (abs(costValueSecCur_RU) < abs(_transFrom.CostAmountSettledSecCur_RU)) { _transTo.CostAmountSettledSecCur_RU -= costValueSecCur_RU - _transFrom.CostAmountSettledSecCur_RU; _transFrom.CostAmountSettledSecCur_RU = costValueSecCur_RU; } } // </GEERU>
__________________
Sergey Nefedov |
|
|
За это сообщение автора поблагодарили: Logger (5), pedrozzz (3). |
Теги |
creditnote, inventsplittrans, inventsplittrans_remain, баг, немедленное получение, расщепление проводок, ax2012 |
|
|