Показать сообщение отдельно
Старый 15.06.2014, 19:57   #160  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
365 / 542 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
AX 2012 CU7, форма SalesCopying, метод CustInvoiceTrans\upDateRemainderCache, некорректный расчет ранее возвращенного кол-ва для заказов отгруженных через функционал отложенного перехода права собственности, также ошибка есть в случае использования функционала проектов.

X++:
void upDateRemainderCache(CustInvoiceTrans _custInvoiceTrans)
{
    SalesQty qty;
    PdsCWInventQty cwQty;
    SalesLine       localSalesLine;
    // <GEERU>
    GoodsInRouteInventTransIdDelivery_RU inventTransIdDelivery_RU;
    // </GEERU>

    if (!creditNoteReturnRemainder.exists(_custInvoiceTrans.RecId))
    {
        localSalesLine = SalesLine::find(_custInvoiceTrans.InventTransId);
        [qty, cwQty] = SalesLine::pdsRemainReturnLotQtyAllCreditNote(_custInvoiceTrans.InventTransId, localSalesLine.ProjId);
        // <GEERU>
        if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoRU]))
        {
            inventTransIdDelivery_RU = _custInvoiceTrans.custInvoiceTrans_RU().InventTransIdDelivery_RU;
        }
        if (inventTransIdDelivery_RU)
        {
            qty = UnitOfMeasureConverter::convert(-SalesLine::qtyDeliveryToCreditNote_RU(inventTransIdDelivery_RU),
                                                  UnitOfMeasure::unitOfMeasureIdBySymbol(_custInvoiceTrans.inventTable().inventUnitId()),
                                                  UnitOfMeasure::unitOfMeasureIdBySymbol(_custInvoiceTrans.SalesUnit),
                                                  NoYes::Yes,
                                                  InventTable::itemProduct(_custInvoiceTrans.ItemId));

            qty = localSalesLine.type().invoicedInTotal() - qty;
        }
        // </GEERU>
        creditNoteReturnRemainder.insert(_custInvoiceTrans.RecId, qty);
        cwCreditNoteReturnRemainder.insert(_custInvoiceTrans.RecId, cwQty);
    }
}
Вместо строки
X++:
 localSalesLine = SalesLine::find(_custInvoiceTrans.InventTransId);
нужно вставить
X++:
 localSalesLine = SalesLine::findInventTransId(_custInvoiceTrans.InventTransId);
Если провалится в метод SalesLine :: pdsRemainReturnLotQtyAllCreditNote, то там тоже можно увидеть аналогичную ошибку
X++:
public server static container pdsRemainReturnLotQtyAllCreditNote(
    InventTransId   _inventTransId,
    ProjId _projId = SalesLine::find(_inventTransId).ProjId)
__________________
Sergey Nefedov
За это сообщение автора поблагодарили: gl00mie (3), S.Kuskov (1).