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