bakiye etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
bakiye etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

9 Ağustos 2016 Salı

AXAPTA - Eldeki miktar (invent on hand)

//source: http://microsoft-dynamics-ax-erp.blogspot.com.tr/2012/07/find-inventonhand-in-axapta-x.html
static InventOnHand findOnHandByLocationId(ItemId _itemId, InventLocationId _inventLocationId = "")
{
    InventDim           inventDim;
    InventDimParm       inventDimParm;
    InventOnHand        inventOnHand = new InventOnHand();
    ;

    if (_inventLocationId == "")

         return InventOnhand::newItemId(_itemId);
    //Take a combination of dimension , against which you want to find the stock
    inventDim.InventLocationId  = _inventLocationId;

    //Set the flag for the selected dimensions as active
    inventDimParm.initFromInventDim(inventDim);

    //Initialize the inventSumDateDim with Date,item,dimension and dim parameter
    inventOnHand = InventOnHand::newParameters(_itemid,
                                               inventDim,
                                               inventDimParm);

    return inventOnHand;
}



veya:

//http://daxtechies.blogspot.com/2013/03/to-find-stock-on-hand-in-ax-through-x.html
InventSum           inventsum;
    Qty                 availableQty = 0;
    ;

    select sum(PostedQty),
        sum(Received),
        sum(Deducted),
        sum(Registered),
        sum(Picked),
        sum(ReservPhysical),
        sum(Ordered),
        sum(Arrived),
        sum(ReservOrdered),
        sum(OnOrder) from inventsum
        where inventsum.ItemId      == "KCYIWU001";
    if (inventsum)
    {
        availableQty = inventsum.PostedQty
            + inventsum.Received
            - inventsum.Deducted
            + inventsum.Registered
            - inventSum.Picked
            - inventSum.ReservPhysical
            + inventsum.Ordered
            + inventsum.Arrived
            - inventsum.ReservOrdered
            - inventsum.OnOrder;

    }

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;
    }

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;
    }