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)