Blog Listem

12 Aralık 2018 Çarşamba

AX 2012 - Son maliyet fiyatı

Metodu InventTable veya ItemId alanı olan herhangi bir tabloya koyabilirsiniz:

public CostPrice SNBfindLastPrice(DatePhysical _date = systemDateGet(),InventDim _inventdim = null)
{

    InventTrans           inventTrans;

    InventTransOrigin     origin;
    InventDim             inventdim;
    LineAmount            purchprice;
    RecId                 OK = false;
    InventDimParm         dimParm;
    InventDim             dimJoin;


    dimparm.initFromInventDim(_inventdim);


    select firstOnly CostAmountAdjustment,CostAmountPosted,Qty from inventTrans

                order by inventTrans.DateClosed desc,inventTrans.DateFinancial desc
            where inventTrans.ItemId == this.ItemId &&
                  !inventTrans.ReturnInventTransOrigin &&
                 inventTrans.DateClosed != dateNull() &&
                 inventTrans.DateClosed <= _date
        exists join origin
            where origin.RecId == inventTrans.InventTransOrigin &&
                  origin.ReferenceCategory == InventTransType::SummedUp
        #InventDimExistsJoin(inventTrans.InventDimId,dimJoin,_inventdim,dimParm);
    OK = inventTrans.RecId;

    if (!OK)

    {
        select firstOnly CostAmountAdjustment,CostAmountPosted,Qty from inventTrans
                    order by inventTrans.DateFinancial desc
                where inventTrans.ItemId == this.ItemId &&
                      !inventTrans.ReturnInventTransOrigin &&
                      inventTrans.Qty > 0 &&
                      inventTrans.DateFinancial <= _date
            exists join origin
                where origin.RecId == inventTrans.InventTransOrigin &&
                      origin.ReferenceCategory == InventTransType::Purch
            #InventDimExistsJoin(inventTrans.InventDimId,dimJoin,_inventdim,dimParm);
        OK = inventTrans.RecId;
    }
    if (!OK)
    {
        select firstOnly CostAmountAdjustment,CostAmountPosted,Qty from inventTrans
                    order by inventTrans.DateFinancial desc
                where inventTrans.ItemId == this.ItemId &&
                      inventTrans.Qty > 0 &&
                      inventTrans.DateFinancial <= _date
            exists join origin
                where origin.RecId == inventTrans.InventTransOrigin &&
                      origin.ReferenceCategory == InventTransType::SummedUp
            #InventDimExistsJoin(inventTrans.InventDimId,dimJoin,_inventdim,dimParm);
        OK = inventTrans.RecId;
    }
    if (!OK)
    {
        select firstOnly CostAmountAdjustment,CostAmountPosted,Qty from inventTrans
                    order by inventTrans.DateFinancial desc
                where inventTrans.ItemId == this.ItemId &&
                      inventTrans.Qty > 0 &&
                      inventTrans.DateFinancial <= _date
            exists join origin
                where origin.RecId == inventTrans.InventTransOrigin &&
                      ( origin.ReferenceCategory == InventTransType::InventTransaction ||
                        origin.ReferenceCategory == InventTransType::BOMMain)
            #InventDimExistsJoin(inventTrans.InventDimId,dimJoin,_inventdim,dimParm);
    }
    if (inventTrans.Qty != 0)
        return  abs( (inventTrans.CostAmountAdjustment+inventTrans.CostAmountPosted ) / inventTrans.Qty );
    else
        return 0;
}

11 Ocak 2018 Perşembe

AX 2012 - Uyumsoft E-fatura servisini kullanma

Önce Uyumsoft'un WSDL adresine (https://efatura.uyumsoft.com.tr/Services/Integration?wsdl) daha önce bloğumda bahsettiğim şekilde bağlanan bir servis referansı oluşturun. Servis referansındaki App.Config dosyasına aşağıda kırmızı ile işaretlediğim parametreleri ekleyin. Bunları eklemediğiniz takdirde Uyumsoft varsayılan değer olan 65.536'dan büyük bloklar göndereceği için hata alacaksınız:

 <binding name="BasicHttpBinding_IIntegration"  maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">

class SNBuyum
{
    uyumAX.uyumServis.IntegrationClient wsClient;
    uyumAX.uyumServis.PagedQueryContext pq;
    uyumAX.uyumServis.SystemUsersResponse res;
    uyumAX.uyumServis.PagedResponseOfSystemUser s;
    uyumAX.uyumServis.SystemUser[] u;
    uyumAX.uyumServis.SystemUser u2;

    System.ServiceModel.Description.ClientCredentials clientCredentials;
    System.ServiceModel.Security.UserNamePasswordClientCredential userPass;

    EInvoiceTRParameters                param;
}


void getEinvoiceUserList()
{
    CLRObject                             clientType;
    int i,j,k,l;
    System.Exception ex;


    new InteropPermission(InteropKind::ClrInterop).assert();

    param = EInvoiceTRParameters::find();

    clientType = CLRInterop::getType("uyumAX.uyumServis.IntegrationClient");
    wsClient = AifUtil::createServiceClient(clientType,"https://efatura.uyumsoft.com.tr/services/Integration");

    clientCredentials = wsClient.get_ClientCredentials();

    userPass = clientCredentials.get_UserName();
    userPass.set_UserName(param.UserID);
    userPass.set_Password(param.Password);

    pq = new uyumAX.uyumServis.PagedQueryContext();
    pq.set_PageIndex(0);


    try
    {
        res = wsClient.GetEInvoiceUsers(pq);

        s = Res.get_Value();

         i =   s.get_TotalPages();



        info(strfmt("%1",i));
        for (l=1;l<=i;l++)
        {
            pq.set_PageIndex(l);
            res = wsClient.GetEInvoiceUsers(pq);
            s = Res.get_Value();
            U = s.get_Items();
            k = u.get_Count();
            info(strFmt("%1",k));

            for (j=0;j<k;j++)
            {
                u2 = u.get_Item(j);
                info(u2.get_Title());
            }
            break; //sadece ilk sayfayı al ve çık (örnek dökümü hızlı almak için konuldu.)...
        }
    }
    catch(Exception::CLRError)
    {
        ex = ClrInterop::getLastException();
        if (ex != null)
        {
            ex = ex.get_InnerException();
            if (ex != null)
            {
                error(ex.ToString());
            }
        }

    }
}

Yukarıdaki örnek sisteme kayıtlı efatura kullanıcılarının listesini almak içindi. Diğer fonksiyonları da örnekten yararlanarak yapabilirsiniz.

Not: Sizin kodunuzda uyumAX.uyumServis yerine oluşturduğunuz referansa verdiğiniz isme göre farklı bir adres yazmanız gerekebilir.