16 Temmuz 2018 Pazartesi

Satış siparişlerinde örnek rapor | Dynamics Ax

Sizden ekrandaki gibi satış siparişiyle, müşteri hesabıyla vs. filtreleme yapabilecekleri bir rapor istenirse şu adımları izleyerek yapabilirsiniz;


Raporda kullacağımız tabloları oluşturacağımız formun datasource'una ekliyoruz.


Sonrasında form oluşturuyoruz, formun classDecleration'una kullanacağımız fieldların tanımlamalarını yapıyoruz, filtrelemeleri de eklediğimiz formun methodsuna aşağıdaki şekilde kodlarımızı ekliyoruz;

public class FormRun extends ObjectRun
{
    SalesId     Salesid;
    ItemId      itemid;
    CustAccount custAccount;
}

satış siparişi için:

edit CustAccount custAccount(boolean set, CustAccount _custAccount = custAccount)
{
    if (set)
    {
        custAccount = _custAccount;
        SalesTable_ds.executeQuery();
    }
    return salesid;
}

müşteri hesabı için:


edit SalesId Salesid(boolean set, SalesId _salesid = salesid)
{
    if (set)
    {
        salesid = _salesid;
        SalesTable_ds.executeQuery();
    }
    return salesid;
}

Filtreleri sıfırlamak için :

void clearRange()
{
    QueryBuildDataSource    qbds;
    ;

    if(SalesCustTxt.text() != '' || SalesIdtxt.text() != '' )
    {
        qbds = SalesLine_ds.query().dataSourceTable(tablenum(SalesLine));
        qbds.clearRanges();

        this.Salesid(true, '');
        this.custAccount(true, '');
        SalesLine_ds.executeQuery();
    }
}

Filtrelerde ilgili işlemleri bu şekilde yapıyoruz. Siparişin toplam miktarı için SalesTable'ın methods'una şu kodu ekliyoruz :

display real TotalSales()//MAA 19.03.2018
{
    return (select sum(SalesQty) from SalesLine where SalesLine.SalesId == this.SalesId).SalesQty;
}

Satış siparişlerinde filtreleme yaparken eklediğimiz field'e bütün siparişler geliyor olacaktır. Bütün siparişlerin raporda gelmesi istenmeyebilir. Örneğin iptal edilenler ya da ihracat siparişlerinin görünmesini engellemek için eklediğimiz fieldlerin lookup'ını eziyoruz.



public void lookup()
{
    Query                   query = new Query();
    QueryBuildDataSource    queryBuildDataSource;
    QueryBuildRange         queryBuildRange;
    SysTableLookup          sysTableLookup;
    ;

    sysTableLookup = SysTableLookup::newParameters(tablenum(SalesTable), this);
    sysTableLookup.addLookupfield(fieldnum(SalesTable, SalesId));
    sysTableLookup.addLookupfield(fieldnum(SalesTable, SalesName));
    sysTableLookup.addLookupfield(fieldnum(SalesTable, CustAccount));

    queryBuildDataSource = query.addDataSource(tablenum(SalesTable));

    if(SalesIdtxt.text())
        queryBuildDataSource.addRange(fieldnum(SalesTable, SalesId)).value(SalesIdtxt.text());

        queryBuildRange = queryBuildDataSource.addRange(fieldnum(SalesTable, SalesPoolId));
        queryBuildRange.value('!IHRACAT');

        queryBuildRange = queryBuildDataSource.addRange(fieldnum(SalesTable, TaxGroup));
        queryBuildRange.value('!YURTDISI');

        queryBuildRange = queryBuildDataSource.addRange(fieldnum(SalesTable, SalesStatus));
        queryBuildRange.value('!İptal edildi');

    sysTableLookup.parmQuery(query);
    sysTableLookup.performFormLookup();
}

Raporumuz bu şekilde tamamlanmış oluyor. Yararlı olması dileğiyle :)

Hiç yorum yok:

Yorum Gönder

Total ciro

static void MAA_SalesTableTotal(Args _args) { SalesTable SalesTable; utcDateTime dateTime; dateTime ...