![]() |
#2 |
Участник
|
ПРОБЛЕМА 2. Неверная себестоимость расходов по побочной продукции.
Эта проблема очень похожа на предыдущую, но причина немного в другом. Рассмотрим на примере. Вся логика выполняется на 0-й итерации. Есть продукция «какао-масло» и побочная «жмых», в расход идет «какао-тертое». На предыдущих шагах закрытия склада были сделаны коррекции «какао-тертого», то есть изменилась себестоимость расхода. Эта коррекция попала в таблицу inventCostListTrans, чтобы система переоценила стоимость связанных выходов «какао-масла» и «какао-тертого». Далее система доходит до расчета «какао-масла», запускает расчет RU5, рассчитывается стоимость выхода основной и побочной продукции. Для побочной продукции локализаторы , в отличие от проблемы №1 сделали правильно – вызвали из своей логики метод updateTransIdReceipt(), который отразил коррекцию на приходе побочной продукции и добавил проводку в mapInventTrans, чтобы «распространить» коррекцию на сопоставленные расходные проводки. Все бы было хорошо, если бы это не было 0-й итерации и самым первым расчетом для «какао-масла». На нулевой итерации в методе InventCostItemDim:: updateItem() запускается сопоставление по модели: X++:
se = setInventDim.getEnumerator();
while (se.moveNext())
{
inventDim = se.current();
this.initMapInventTrans();
this.load(inventDim);
this.updateReceiptAdjustment();
this.updateModel(inventDim);
} РЕШЕНИЕ В методе InventCostItemDim:: updateItem() перед циклом сопоставления нужно вызвать updateReceiptAdjustment(): X++: else { // if this is not a closing, or if this is the first time, then match .. // first match issues and receipts that are marked this.updateSettleRefItem(inventCostList.ItemId); //+ DPL InventClosingFix_OK 12.02.2011 OK //если здесь не вызвать этот метод-не идут дальше коррекции по побочной продукции if (calculationProdWIP_RU) this.updateReceiptAdjustment(); //- DPL InventClosingFix_OK 12.02.2011 OK // then match remaining issues and receipts according to inventory model if (! isServiceItem) { setInventDim = new Set(Types::Record); // find all financial dimension combinations queryRun = inventCostHelp.initQueryRunTrans(this.inventTable(inventCostList.ItemId), this.inventModelGroup(inventCostList.ItemId)); while (queryRun.next()) { inventDim = queryRun.get(tablenum(InventDim)); setInventDim.add(inventDim); } // match issues and receipts per financial dimension combination se = setInventDim.getEnumerator(); while (se.moveNext()) { inventDim = se.current(); this.initMapInventTrans(); this.load(inventDim); this.updateReceiptAdjustment(); this.updateModel(inventDim); } setInventDim = null; } } |
|
Теги |
баг, закрытие склада, ошибка, ошибка при закрытии склада, себестоимость |
|
|