24 Haziran 2016 Cuma

AXAPTA - Transfer emri bakiye kalan satırları temizlemek

Bir transfer emrinde bir satır tamamen bitirilmemişse ve bu satırda bitirilmeyen kısım bir çıkış emrinden rezerve ise İşlevler->Teslimat bakiyesi->Miktarı iptal et butonu işe yaramaz. Siparişte tipli yeterli satır olmadığını söyler ve hata verip çıkar. Bunun sebebi bu miktarın çıkış emrinden rezerve olmasıdır. Bu satırın rezervasyonu direk kodla kaldırılamaz (yani ben bir yolunu bulamadım) ve menüden kaldırılsa bile bağlantı halen duracağı için hatayı tekrar verir. Çıkış emrinde kalan miktarı sıfırlamanın bir yolunu bulamadım ve aşağıdaki yöntemi denedim, işe yarıyor:


    InventTransferTable header;
    InventTransferLine  line;
    WMSOrderTrans       orderTrans;
    InventTrans         inventTrans;
    ;
    while select header
            where header.TransferId == myTransferId
        join forupdate line
            where line.TransferId == header.TransferId &&
                  (line.QtyRemainReceive > 0 || line.QtyRemainShip>0)
    {
        ttsbegin;
        while select orderTrans
            where orderTrans.inventTransId == line.InventTransId &&
                  orderTrans.expeditionStatus != WMSExpeditionStatus::Complete &&
                  orderTrans.expeditionStatus != WMSExpeditionStatus::Cancelled &&
                  orderTrans.expeditionStatus != WMSExpeditionStatus::CancelledSW
        {
            WmsPickingLineCancel::newWMSPickingLineCancel(orderTrans).run();
        }
        while select forupdate inventTrans
            where (inventTrans.StatusIssue == StatusIssue::ReservPhysical ||
                   (inventTrans.TransChildRefId != "" &&
                    inventTrans.TransChildType == InventTransChildType::WMSOrder) ) &&
                  inventTrans.InventTransId == line.InventTransId
        {
            inventTrans.TransChildRefId = "";
            inventTrans.TransChildType = InventTransChildType::None;
            inventTrans.update();
            InventUpd_Reservation::newInventDim(InventMovement::construct(inventTrans,InventMovSubType::None),
                inventtrans.inventDim(),2,false).updateNow();
        }
        line.QtyRemainReceive = 0;
        line.QtyRemainShip    = 0;
        line.AutoReservation = NoYes::No;
        line.update();
        ttscommit;
    }

8 Haziran 2016 Çarşamba

AXAPTA - Bir malzeme çekme listesi veya satırını iptal

Tüm listenin iptali:
 
WMSPickingRouteCancel::newWMSPickingRoute(wMSPickingRoute).run(); 

Bir satırın iptali:


WMSPickingLineCancel::newWMSPickingLineCancel(wMSOrderTrans).run();