14.02.2011, 12:43 | #1 |
Участник
|
Проблемы при закрытии склада DAX2009 SP1 RU5/RU6
Решил поделиться проблемами и решениями, которые возникли при закрытии склада. Большая часть проблем связана с расширенным расчетом производственной себестоимости, который был добавлен RU5.
ПРОБЛЕМА 1: Неверная себестоимость расходов при расширенном расчете себестоимости. Основная логика по закрытию склада находится в классе InventCostItemDim. В методе updateItem вызывается updateLevelAdjustment() в котором коррекции, которые «прилетели» на данную номенклатуру с предыдущих шагов, распределяются на приходные проводки этой номенклатуры. X++: while select sum(Adjustment) from inventCostListTrans index hint ItemIdx group by InventTransId,InventTransIdReturn,VoucherPhysical where inventCostListTrans.Voucher == inventClosing.Voucher && inventCostListTrans.NumOfIteration == inventCostList.NumOfIteration && inventCostListTrans.ItemId == inventCostList.ItemId { // <GEEU> if (calculationProdWIP_RU && inventCostListTrans.InventTransId && this.calcWIPProdHistoricalCost_RU(inventCostListTrans.InventTransId, inventCostListTrans.VoucherPhysical)) { continue; } // </GEEU> this.updateTransIdReceipt(inventCostListTrans.InventTransId, inventCostListTrans.Adjustment, inventCostListTrans.InventTransIdReturn, inventCostListTrans.VoucherPhysical); } Если включен расширенный расчет себестоимости и приходная проводка имеет тип «Производство», то вызывается метод calcWIPProdHistoricalCost (), в нем вызывается написанная в RU5 логика, рассчитывается фактическая себестоимость расходов по производственному заказу, себестоимость выходов (побочной и основной продукции), делается коррекция приходов. Так вот, первая проблема связана с тем, что наши локализаторы забыли для основного выхода сделать вставку в вышеупомянутый mapInventTrans и все коррекции, которые были добавлены к приходам, не распространялись на расходы. РЕШЕНИЕ Нужно в конце метода ProdCalculatingWIPEngine_RU:: createAdjustSettlement() вызвать inventCostItemDim.updateInventTrans(_inventTrans): X++: //+ DPL InventClosingFix_OK 11.02.2011 OK if (inventCostItemDim != null) { inventCostItemDim.updateInventTrans(_inventTrans); } else //- DPL InventClosingFix_OK 11.02.2011 OK _inventTrans.update(); } X++: //+ DPL InventClosingFix_OK 11.02.2011 OK //protected void updateInventTrans(InventTrans _inventTrans) public void updateInventTrans(InventTrans _inventTrans) //- DPL InventClosingFix_OK 11.02.2011 OK ... |
|
|
За это сообщение автора поблагодарили: fed (30), Logger (15), madm (1), zhan (2), imir (1). |
Теги |
баг, закрытие склада, ошибка, ошибка при закрытии склада, себестоимость |
|
|