Показать сообщение отдельно
Старый 21.07.2010, 15:00   #9  
rDenis2 is offline
rDenis2
Участник
 
62 / 36 (2) +++
Регистрация: 13.05.2010
Так и делаю, только если делаешь 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();
    }
}