26 Ağustos 2019 Pazartesi

Örnek rapor | Dynamics Ax

Tarih itibariyle çek durum sorgusu

Örneğin sizden çeklerin durumunu tarih filtreli şekilde hesaplayıp raporlanmasını istenildiğinde.
Bir tablo oluşturup girilen tarihe göre hesaplama yaptırabilirsiniz.


DRT_ETGChequeHistoryByDates adında bir tablo oluşturuyoruz ve istenilen alanları ekliyoruz.
Sonrasında bunu oluşturduğumuz formun datasource'una ekliyoruz. Resimde olduğu gibi tarihi filtreleyebileceğimiz tarih alanı ve hesaplama yapabileceğimiz butonu ekliyoruz.


Formun methods'una hesaplama yaptıracağımız kodu yazıyoruz.




void calculate()
{
    LedgerJournalTrans      LTrans,LTrans2;
    LedgerJournalTable      LTable;
    DRT_ETGChequeHistoryByDates ETGchequeHistoryByDate;
    BankChequeTable         BankChequeTable;
    int                     chequeNum = 0;
    ETGBankChequeHistory    ChequeHistory;
    ;
    ttsbegin;
    delete_from ETGchequeHistoryByDate;

    while select BankChequeTable
        where BankChequeTable.AmountMST != 0
    {
        select maxof(ChequeTransNum) from LTrans
            where LTrans.BankChequeNum      == BankChequeTable.ChequeNum
                   && LTrans.TransDate          <= fromDate.dateValue()
                exists join LTable
                    where LTable.JournalNum == LTrans.JournalNum
                    &&    LTable.Posted;



        if (Ltrans && Ltrans.ChequeTransNum >= 0)
        {
            select firstonly LTrans2
                where LTrans2.BankChequeNum      == BankChequeTable.ChequeNum
                &&    LTrans2.ChequeTransNum     == LTrans.ChequeTransNum
                &&    LTrans2.TransDate          <=  fromDate.dateValue();

            ETGchequeHistoryByDate.clear();
            ETGchequeHistoryByDate.ChequeNum               = BankChequeTable.ChequeNum;
            ETGchequeHistoryByDate.CiroPayment             = BankChequeTable.ETGCiroPayment;
            ETGchequeHistoryByDate.LastTransACTypeOffset   = LTrans2.OffsetAccountType;
            ETGchequeHistoryByDate.LastTransAccountOffset  = LTrans2.OffsetAccount;


            select firstonly ChequeHistory
                where ChequeHistory.ChequeNum           == BankChequeTable.ChequeNum
                &&    ChequeHistory.RefJournalVoucher   == LTrans2.Voucher
                &&    ChequeHistory.TransDate           <=  fromDate.dateValue() ;



           if (ChequeHistory)
                {
                    ETGchequeHistoryByDate.LastTransACType       = LTrans2.AccountType;
                    ETGchequeHistoryByDate.LastTransAccount      = ChequeHistory.LastTransAccountNum ;//LTrans2.AccountNum;
                }

            else
                {
                     if(CompanyInfo::Find().DataAreaId == "TRS")
                     {
                      ETGchequeHistoryByDate.LastTransAccount    = LTrans2.OffsetAccount;//BankChequeTable.LastTransAccount; //Çek Tablosundan almak için
                      ETGchequeHistoryByDate.LastTransACType     = LTrans2.OffsetAccountType;//BankChequeTable.LastTransACType; //Çek Tablosundan almak için
                    }

                    else
                    {
                      ETGchequeHistoryByDate.LastTransAccount    = BankChequeTable.LastTransAccount; //Çek Tablosundan almak için
                      ETGchequeHistoryByDate.LastTransACType     = BankChequeTable.LastTransACType;//BankChequeTable.LastTransACType; //Çek Tablosundan almak için
                    }
               }

                    ETGchequeHistoryByDate.DocumentStatus      = LTrans2.TransactionTxtType;
                    ETGchequeHistoryByDate.ChequePrintedNum    = BankChequeTable.ChequePrintedNum;
                    ETGchequeHistoryByDate.DueDate             = BankChequeTable.DueDate;
                    ETGchequeHistoryByDate.FromDate            = fromdate.dateValue();
                    ETGchequeHistoryByDate.AmountMST           = BankChequeTable.AmountMST;
                    ETGchequeHistoryByDate.AccountID           = BankChequeTable.AccountID;
                    ETGchequeHistoryByDate.CurrencyCode        = BankChequeTable.CurrencyCode;
                    ETGchequeHistoryByDate.AmountCur           = BankChequeTable.AmountCur;
                    ETGchequeHistoryByDate.ETGChequeType       = BankChequeTable.ETGChequeType;
                    ETGchequeHistoryByDate.Customer            = BankChequeTable.Customer;

                    ETGchequeHistoryByDate.Drawer                   = BankChequeTable.Drawer; //MAA
                    ETGchequeHistoryByDate.ETGCentralBankBranchCode = BankChequeTable.ETGCentralBankBranchCode;
                    ETGchequeHistoryByDate.ETGCentralBankCode       = BankChequeTable.ETGCentralBankCode;


                     ETGchequeHistoryByDate.insert();

                     if (     BankChequeTable.ChequeNum == "CEK_030248" // Gelmesini istemediniz çek varsa bu şekilde belirtebilirsiniz.
                           || BankChequeTable.ChequeNum == "CEK_028932"
                           || BankChequeTable.ChequeNum == "CEK_029017"
                           || BankChequeTable.ChequeNum == "CEK_029088"
                           || BankChequeTable.ChequeNum == "CEK_029064"
                           || BankChequeTable.ChequeNum == "CEK_028922"
                           || BankChequeTable.ChequeNum == "CEK_029059"
                           || BankChequeTable.ChequeNum == "CEK_029151"
                           || BankChequeTable.ChequeNum == "CEK_029162")
                  {
                     ETGchequeHistoryByDate.delete();
                  }

       }
       else
       continue;

    }


    ttscommit;

    DRT_ETGChequeHistoryByDates_ds.executeQuery();
    info("Hesaplama Tamamlandı");

}

Sonrasında bu hesaplamayı buton ile çağırmak için, eklediğimiz butonun click'ine aşağıdaki kodu yazıyoruz.
Rapor bu şekilde ilgili tablolardan kayıtları alıyor ve raporu oluşturuyor.

void clicked()
{
    element.calculate();
}

Hiç yorum yok:

Yorum Gönder

Total ciro

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