|
|
|
|
#1 |
|
Участник
|
Цитата:
Есть такая проблема. Есть приложение сильное изменённое. В нём хватает чужого кода в классах закрытия, пересчёта и корректирки. По одной номенклатуре (возможно их больше) не получается скорректировать себестоимость через корректировку наличия. Выкидывает сообщение Отрицательная себестоимость не возможна. (S) \Classes\InventTransAdjust\updateNow - line 72 Не могу понять в чём дело. Считается вроде всё правильно и интуиция подсказывает возможно входные данные не правильны. А именно поле корректировки. Предположил что это поле на InventTrans проверяется таким образом. Для ValueOpen = да X++: display Amount MRD_calcCostAmountAdjustment() { Amount costAmountAdjustment; ; if(this.QtySettled) costAmountAdjustment = this.Qty * this.CostAmountSettled / this.QtySettled - this.CostAmountPosted; else costAmountAdjustment = this.CostAmountSettled; return costAmountAdjustment; } 1) Цифры в основном различаются на втором знаке после запятой. На той проводке которая меня интересует на первой после запятой. Как раз мне мальца и нехватает чтоб ошибку убрать. 2) Что меня ещё смущает? Что есть прводки без сопоставления, но с корректировкой. Не понятно тогда откуда эти суммы беруться, если нет сопоставления. Визуально вижу что эти цифры иногда совпадают с проводками по той же номенклатуре но по которой были сопоставления. Связано это или нет не знаю точно. Первый вопрос более интересен. Но если кто сможет объяснить второй (Почему так) тоже будет хорошо.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. Последний раз редактировалось miklenew; 11.11.2008 в 10:47. Причина: описался место номенклатуры написал накладной |
|
|
|
|
#2 |
|
Moderator
|
Цитата:
Сообщение от miklenew
Выкидывает сообщение
Отрицательная себестоимость не возможна. (S) \Classes\InventTransAdjust\updateNow - line 72 Не могу понять в чём дело. Считается вроде всё правильно и интуиция подсказывает возможно входные данные не правильны. А именно поле корректировки. Предположил что это поле на InventTrans проверяется таким образом. Для ValueOpen = да Возможно, я не прав и топикстартер уже разобрался в том что происходит в этих классах. В таком случае, просьба написать почему возникло подозрение что неверно значение именно в inventTrans.costAmountAdjustment. |
|
|
|
|
#3 |
|
Участник
|
К чему в результате дошёл
1) \Classes\InventSumOpenTransact\add Закидываем в буфер costAmountPosted 2) (S) \Classes\InventSumOpenTransact\setTransAdjustNow - line 4 Инициализируем суммы корректировки нулями 3)(S) \Classes\InventSumOpenTransact\setAdjustment - line 49 Может получиться что расчитанная сумма корректировки нам не подходит, тогда корректировка = this.transValue(x)+this.transAdjustNow(x) Фактически это this.transValue(x) т.к. transAdjustNow(x) = 0 4) (S) \Classes\InventTransAdjust\updateNow - line 35 inventTrans.updateSplit(inventTrans.financialOpenQty()); Делим на две проводки (старая+новая) И все суммы и количества пропорционально распределяем, кроме суммы по корректировке. Корректировку оставляем на изначальной проводке. Т.к. в InventSettlement связь не только по лоту но и по recId. После этой процедуры место старого inventTrans в памяти уже другой. Вот это я исправил, так как это не правильно. Поставил в верху метода X++: RefRecId origRecId; X++: if (inventTrans.financialOpenQty() != inventTrans.qty)
inventTrans.updateSplit(inventTrans.financialOpenQty());X++: if (inventTrans.financialOpenQty() != inventTrans.qty) { origRecId = inventTrans.RecId; inventTrans.updateSplit(inventTrans.financialOpenQty()); if(inventTrans.RecId != origRecId) inventTrans = InventTrans::findRecId(origRecId, true); }
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
|
|
|
#4 |
|
Участник
|
Есть подозрения, что сделал не правильно.
Завтра ещё буду юзать. Но неужели не у кого нет мыслей зачем там updatesplit(). Буду благодарен за любые догадки, даже неправильные.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
|
|
|
#5 |
|
Участник
|
Цитата:
Расщепление InventSplitTrans_Remain и коррекция в наличии |
|
|
| Теги |
| логистика, переоценка |
|
|
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|