Так и делаю, только если делаешь InventMovement, на основе Inventtrans, он в конце концов всё равно делается на основе salesLine, в InventMovemnet:construct(). InventMov_Sales. На данный момент суммарная InventPickigListJournalLine делается на основе первой, тоесть все остальные прибавяются к ней. Соответсвенна она не удаляется, и InventTrans идет с типом TransChildType Picking list.Тоесть при
X++:
reservation = InventUpd_Reservation::newMovement(inventMovement,
_qty ,
_mayBeReduced,
_forceNotReserveOrdered,
_showInfo);
reservation.updateNow();
в updateReserveMore()
ищутся InventTrans с
X++:
inventTrans.TransChildType == None
inventTrans.TransChildRefId == ''
соответсвенно резервируются не все. Думаю поменять принцип суммирование линии, тоесть удалять все, через delete(), TransChildType становится None. И создавать новую суммарную линию через doInsert(), InventTrans не должен меняться в етом случае.
Ну и дальше что то типа такого
X++:
server static void makeReservation(Common _buffer,
InventQty _qty,
InventDim _inventDim,
inventMovement _inventMovement = null,
boolean _mayBeReduced =true,
boolean _forceNotReserveOrdered = false,
boolean _showInfo = true
)
{
InventMovement inventMovement = _inventMovement;
InventUpd_Reservation reservation;
InventDim inventDim;
InventTrans inventTransLocal;
Common _newBuffer;
;
if(!inventMovement)
{
switch (_buffer.TableId)
{
case tablenum(InventTrans) :
inventTransLocal = _buffer;
switch (inventTransLocal.TransType)
{
case InventTransType::Sales :
_newBuffer = inventTransLocal.salesLine();
inventMovement = Inventmovement::construct(_newBuffer);
break;
}
break;
default:
inventMovement = InventMovement::construct(_buffer);
break;
}
}
if(_inventDim && inventMovement)
{
inventDim.data(_inventDim);
inventMovement.inventdim(inventDim);
}
if(inventMovement)
{
reservation = InventUpd_Reservation::newMovement(inventMovement,
_qty ,
_mayBeReduced,
_forceNotReserveOrdered,
_showInfo);
reservation.updateNow();
}
}