Показать сообщение отдельно
Старый 20.01.2010, 12:56   #17  
Starling is offline
Starling
Участник
Дети Юза
 
530 / 76 (4) ++++
Регистрация: 20.10.2005
Адрес: Kiev
Цитата:
Сообщение от Starling Посмотреть сообщение
Одну багу (может конечно фичу) в работе "Анализатор затрат" я уже нашел.
Последовательность действий:
1. Купить 1 шт
2. Продать 1 шт
3. Дооценить закупку через корректировку НР
4. Дооценить закупку через периодич. операции
5. Закрыть склад.
Получаем нормальную картинку в форме "Анализатор затрат"

Меняем последовательность действий:
1. Купить 1 шт
2. Продать 1 шт
3. Закрыть склад
4. Дооценить закупку через корректировку НР
5. Дооценить закупку через периодич. операции
6. Закрыть склад
В форме "Анализатор затрат" корректировки по п.4 и 5. не отображаются.
Исправление от MBS.
Класс метод InventSettlementTreeNodeCalc метод expandInventTransIssue
X++:
protected void expandInventTransIssue()
{
    InventSettlement    inventSettlement;
    InventSettlement    inventSettlementReceipt;
    InventSettlement    inventSettlementReceiptSum;
    InventTrans         inventTransReceipt;

    real                ratioCaller;
    real                ratio;
    InventQty           qtyToExplain;
    ;

    if (inventTransCaller.Qty > 0)
        return ;

    ratioCaller = this.ratio(qtySettled, inventTransCaller.QtySettled);

    while select sum(QtySettled) from inventSettlement
        group by SettleTransId
        where inventSettlement.TransRecId           == inventTransCaller.RecId          &&
              inventSettlement.SettleType           == InventSettleType::Issue          &&
              inventSettlement.InventTransId        == inventTransCaller.InventTransId  &&
              inventSettlement.QtySettled           <  0                                &&
              inventSettlement.Cancelled            == NoYes::No
    {
        qtyToExplain = inventSettlement.QtySettled * ratioCaller;

        select sum(QtySettled) from inventSettlementReceiptSum
            where inventSettlementReceiptSum.SettleTransId  == inventSettlement.SettleTransId   &&
                  inventSettlementReceiptSum.SettleType     == InventSettleType::Receipt        &&
                  inventSettlementReceiptSum.Cancelled      == NoYes::No;

        while select sum(QtySettled),sum(CostAmountSettled) from inventSettlementReceipt
            group by TransRecId
            where inventSettlementReceipt.SettleTransId  == inventSettlement.SettleTransId  &&
                  inventSettlementReceipt.SettleType     == InventSettleType::Receipt       &&
//KB979110 -->
//                  inventSettlementReceipt.QtySettled      > 0                               &&
                  inventSettlementReceipt.QtySettled     >= 0                               &&
//KB979110 <--
                  inventSettlementReceipt.Cancelled      == NoYes::No
        {
            inventTransReceipt = inventSettlementReceipt.inventTrans();

            ratio = this.ratio(qtyToExplain, inventSettlementReceiptSum.QtySettled);
            listInventSettlementTreeNode.addEnd(InventSettlementTreeNode::newInventTrans(inventTransReceipt,inventSettlementReceipt.QtySettled * ratio,inventSettlementReceipt.CostAmountSettled * ratio,UnknownNoYes::Unknown));
        }
    }
}
З.Ы.: Анализатор затрат очень плохо дружит со вторичным складом. MBS ошибку признал, и пообещал исправить в dax60, для 2009 исправлять не хотят...