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