Blog Listem

6 Mayıs 2016 Cuma

AXAPTA - Sign fonksiyonu düzgün çalışmıyor

AX 2009 ve 2012'deki sign fonksiyonu düzgün çalışmıyor. Negatif değerler için -1, sıfır için 0 ve pozitif değerler için +1 döndürmesi gerekirken negatif değerler için -1 ve diğer tüm değerler için +1 döndürüyor.

Global'deki Sign:

static real sign(real num)
{
    return num >= 0 ? 1 : -1;
}


Benim yaptığım düzeltme:

static int sign(real num)
{

   if (num < 0)
    return -1;
   else
    return num > 0 ? 1 : 0;
}

5 Mayıs 2016 Perşembe

AXAPTA - Malzeme çekme listesi oluşturmak

Bir forum sayfasından bulduğum çözümü kendim için class haline getirdim:

class KRC_WMSOrder
{
    WMSShipment         wmsShipment;
    SalesTable          salesTable;
    WMSPickingRoute     wmsPickingRoute;
    WMSPickingRouteLink wmsPickingRouteLink;
    salesLine           salesLine;
}


void createOrderLine(Qty _qty = salesLine.RemainSalesPhysical)
{

    InventMovement                  inventMovement;
    WMSOrder                        wmsOrder;
    WMSOrderCreate                  orderCreate;
    WMSOrderTrans                   wmsOrderTrans;
    ;
    inventMovement = InventMovement::construct(salesLine);
    orderCreate = WMSOrderCreate::newMovement(inventMovement,_qty);
    orderCreate.parmMustBeWMSOrderControlled(true);
    orderCreate.parmQty(_qty);
    orderCreate.parmMaxQty(_qty);
    orderCreate.run();
    wmsOrder = orderCreate.parmWMSOrder();
    wmsOrder.updateShipment(wmsShipment,_qty, wmsPickingRoute.PickingRouteID);
}


void createWmsPickingRoute()
{
    ;
    wmsPickingRoute.clear();
    wmsPickingRoute.initTypeOrderPick(wmsShipment, WMSExpeditionStatus::Activated,
        WMSPickRequestTable::construct(salesTable),"", true);
    wmsPickingRoute.ActivationDateTime = DateTimeUtil::utcNow();
    wmsPickingRoute.insert();
}


void createWmsPickingRouteLink()
{
    ;
    wmsPickingRouteLink.clear();
    wmsPickingRouteLink.initFromSalesTable(salesTable);
    wmsPickingRouteLink.initFromWMSPickingRoute(wmsPickingRoute);
    wmsPickingRouteLink.insert();
}


void createWmsShipment()
{
    ;
    wmsShipment.clear();
    wmsShipment.initTypeOrderPick();
    wmsShipment.insert();
}


SalesLine  parmSalesLine(SalesLine _salesLine = salesLine)
{
    ;
    salesLine = _salesLine;
    return salesLine;
}


SalesTable  parmSalesTable(SalesTable _salesTable = salesTable)
{
    ;
    salesTable = _salesTable;
    return salesTable;
}


void reserveItem(Qty _qty = salesLine.RemainSalesPhysical)
{
    InventUpd_Reservation   invUpdReservation;
    ;
    invUpdReservation = InventUpd_Reservation::newInventDim(InventMovement::construct(salesLine,InventMovSubType::None),
        salesLine.inventDim(),_qty,false);
    invUpdReservation.updateNow();
}


Örnek kullanım:

KRC_WMSOrder            kWMS = new krc_wmsorder();
kWMS.createWmsShipment();
;
ttsbegin;
kWMS.parmSalesTable(salesTable);
kWMS.createWmsPickingRoute();
kWMS.createWmsPickingRouteLink();
kWMS.parmSalesLine(salesLine);
kWMS.reserveItem();
kWMS.createOrderLine();

ttscommit;

AXAPTA - Formun args parametresi ile gelen kayda göre otomatik filtre yapmasını engellemek

Bu sorunun cevabını bir forum sayfasından buldum:


KRC_PlanWaves_DS.query().dataSourceNo(1).clearDynalinks();