ПРОБЛЕМА 3. Все коррекции, сделанные по приходным проводкам с типом «Производство» при помощи коррекции проводок в форме «Закрытие и коррекция» отменяются!
При расширенном расчете себестоимости, который запускается из InventCostItemDim ::calcWIPProdHistoricalCost_RU после расчета стоимости основного выхода, себестоимость этого выхода корректируется в ProdCalculatingWIPEngine_RU ::createProdReceiptAdjust по формуле [коррекция] = [рассчитанная стоимость] – [текущая стоимость]. Таким образом, если вы перед закрытием распределили затраты на приходы из производства, то эти суммы будут успешно отменены и себестоимость выходов будет равна себестоимости расходов по производственному заказу.
РЕШЕНИЕ
На таблице InventTrans создайте метод:
X++:
// DPL InventClosingFix_OK 13.02.2011 OK
//расчет суммы коррекций добавленной распределением затрат
Amount calcManualCorrAmount_OK()
{
InventSettlement invSettlement;
InventClosing inventClosing;
;
select sum(CostAmountAdjustment) from
invSettlement
where invSettlement.Cancelled == NoYes::No
&& invSettlement.TransRecId == this.RecId
exists join
inventClosing
where inventClosing.Voucher == invSettlement.Voucher
&& inventClosing.AdjustmentType == InventAdjustmentType::Transaction;
return invSettlement.CostAmountAdjustment;
}
В методе ProdCalculatingWIPEngine_RU::createProdReceiptAdjust() перед вызовом createProductionRecord вставьте:
X++:
//+ DPL InventClosingFix_OK 13.02.2011 OK
//отнимаем чтобы не отсторнировать распределение затрат
costAmount -= inventTrans.calcManualCorrAmount_OK();
//- DPL InventClosingFix_OK 13.02.2011 OK
ProdWIPHistoricalCostTable_RU::createProductionRecord(prodTable.ProdId,