Показать сообщение отдельно
Старый 14.02.2011, 12:49   #3  
Bega is offline
Bega
Участник
Аватар для Bega
 
382 / 444 (15) +++++++
Регистрация: 18.08.2005
Адрес: Москва
ПРОБЛЕМА 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,