SSRS Report Based On FromDate,Todate,CustGroup,SalesID,CustAccount Data Filter :

outpu


1)Create temp Table with Following Fields


2) create Query
   Based on image u shown below(Tables used in this query)

3) Create Data Contract Class
   [
    DataContractAttribute,
    SysOperationContractProcessingAttribute(classStr(DLS1016_SalesInvoiceUIBuilder))

]
 public class DLS1016_SalesInvoicecontractclass
{

    List                 salesId,custAccount,CustGroup;
    TransDate               FromDate,ToDate;
-------------
3-1)parmcustAccountmethod
[
        DataMemberAttribute("Cust Account"),
        AifCollectionTypeAttribute("Cust Account",Types::String),
        SysOperationLabelAttribute("Cust Account"),
        SysOperationDisplayOrderAttribute('5')
]
public List parmcustAccount(List  _custAccount = custAccount)
{
    custAccount =_custAccount;
     return custAccount;
}
}
----------
3-2)parmCustGroup
[
        DataMemberAttribute("Cust Group "),
        AifCollectionTypeAttribute("Cust Group",Types::String),
        SysOperationLabelAttribute("Cust Group"),
        SysOperationDisplayOrderAttribute('3')
]
public List parmCustGroup(List  _CustGroup = CustGroup)
{
    CustGroup = _CustGroup;
     return CustGroup;
}
-----
3-3) parmSalesID
[
        DataMemberAttribute("Sales ID"),
        AifCollectionTypeAttribute("SalesID",Types::String),
        SysOperationLabelAttribute("Sales ID"),
        SysOperationDisplayOrderAttribute('4')
]
public List parmSalesID(List  _salesId = SalesId)
{
    salesId =_salesId;
     return salesId;
}
---
3-4) parmfromDate
[
        DataMemberAttribute,
        SysOperationLabelAttribute(" From Date"),
        SysOperationDisplayOrderAttribute('1')
]
public TransDate parmfromDate(TransDate  _FromDate = FromDate)
{
    FromDate =_FromDate;
     return FromDate;
}
----
3-5)parmToDate
[
        DataMemberAttribute,
        SysOperationLabelAttribute("To Date"),
        SysOperationDisplayOrderAttribute('2')
]
public TransDate parmToDate(TransDate  _ToDate = ToDate)
{
    ToDate =_ToDate;
     return ToDate;
}
-----
3-6) validate()
public boolean validate()
{
    boolean isValid = true;
    if (!this.parmFromDate())
    {
        isValid = checkFailed(strFmt("@SYS31433"));
        isValid = false;
    }
    if (!this.parmToDate())
    {
        isValid = checkFailed(strFmt("@SYS77972"));
        isValid = false;
    }
    if (this.parmToDate() < this.parmFromDate())
    {
        isValid = checkFailed(strFmt("@SYS21592"));
        isValid = false;
    }


    return isValid;
}
------------------
4) UI Builder Classs:
 class DLS1016_SalesInvoiceUIBuilder extends SrsReportDataContractUIBuilder
{
    DLS1016_SalesInvoicecontractclass       contractClass;
    DialogField                             Fromdate,Todate,DialogSalesId,Custaccount,CustGroup;
    //    container                               custGroupContainer,salesIdContainer;
}
4-1) build()
public  void build()
{
    super();
    contractClass = this.dataContractObject() as DLS1016_SalesInvoicecontractclass;
}

4-2)  CustAccountLookUp
public void CustAccountLookUp(FormStringControl     _control)
{
     Query query = new Query();
    container       con;
    QueryBuildRange qbr;
    List            CustAcc;
    ListEnumerator  CustAccEnumerator;
    QueryBuildDataSource    qbds;
    this.getFromDialog();
    CustAcc = contractclass.parmSalesID();
    CustAccEnumerator = CustAcc.getEnumerator();

    qbds = query.addDataSource(tableNum(CustInvoiceJour));
    qbr = qbds.addRange(fieldNum(CustInvoiceJour,SalesId));

    while(CustAccEnumerator.moveNext())
    {
         qbr.value(queryRangeConcat(qbr.value(),CustAccEnumerator.current()));

    }


     qbds.addSelectionField(fieldNum(SalesTable,CustAccount));
    //queryBuildDataSource.addSelectionField(fieldNum(LogisticsAddressState, CountryRegionId));
    SysLookupMultiSelectGrid::lookup(query, _control, _control, con);


}
4-3) CustGroupLookUp
public  void CustGroupLookUp(FormStringControl     _control)
{


    Query                   query = new Query();
    container               con;

    QueryBuildDataSource    queryBuildDataSource;
    queryBuildDataSource = query.addDataSource(tableNum(CustInvoiceJour));
    queryBuildDataSource.addSelectionField(fieldNum(CustInvoiceJour,CustGroup));
    queryBuildDataSource.addGroupByField(fieldNum(CustInvoiceJour,CustGroup));
    SysLookupMultiSelectGrid::lookup(query,_control,_control,con);



}
4-4) SalesIdLookUp
public  void SalesIdLookUp(FormStringControl     _control)
{

    Query query = new Query();
    container           con;
    QueryBuildRange     qbr;
    List                salesId;
    ListEnumerator      salesIdEnumerator;
    QueryBuildDataSource    qbds;
    this.getFromDialog();
    salesId = contractclass.parmCustGroup();
    salesIdEnumerator = salesId.getEnumerator();

    qbds = query.addDataSource(tableNum(CustInvoiceJour));
    qbr = qbds.addRange(fieldNum(CustInvoiceJour,CustGroup));

    while(salesIdEnumerator.moveNext())
    {
         qbr.value(queryRangeConcat(qbr.value(),salesIdEnumerator.current()));

    }


     qbds.addSelectionField(fieldNum(CustInvoiceJour,SalesId));
    //queryBuildDataSource.addSelectionField(fieldNum(LogisticsAddressState, CountryRegionId));
    SysLookupMultiSelectGrid::lookup(query, _control, _control, con);


}
4-5)postBuild
public void postBuild()
{
}
4-6) postRun
public void postRun()
{
     Dialog dlg = this.dialog();

    dlg.dialogForm().formRun().controlMethodOverload(false);

    Fromdate = this.bindInfo().getDialogField(this.dataContractObject(), methodStr(DLS1016_SalesInvoicecontractclass, parmfromdate));
    Todate = this.bindInfo().getDialogField(this.dataContractObject(), methodStr(DLS1016_SalesInvoicecontractclass, parmToDate));

    CustGroup = this.bindInfo().getDialogField(this.dataContractObject(),methodStr(DLS1016_SalesInvoicecontractclass, parmCustGroup));
    CustGroup.registerOverrideMethod(
        methodStr(FormStringControl, lookup),
        methodStr(DLS1016_SalesInvoiceUIBuilder,CustGroupLookUp),
        this);


    DialogSalesId = this.bindInfo().getDialogField(this.dataContractObject(),methodStr(DLS1016_SalesInvoicecontractclass, parmSalesID));
    DialogSalesId.registerOverrideMethod(
        methodStr(FormStringControl, lookup),
        methodStr(DLS1016_SalesInvoiceUIBuilder,SalesIdLookUp),
        this);

     Custaccount = this.bindInfo().getDialogField(this.dataContractObject(),methodStr(DLS1016_SalesInvoicecontractclass, parmcustAccount));

    Custaccount.registerOverrideMethod(
        methodStr(FormStringControl, lookup),
        methodStr(DLS1016_SalesInvoiceUIBuilder,CustAccountLookUp),
        this);

}
-------
DP Class
5-1)

[
    SRSReportQueryAttribute(queryStr(DLS1016_SalesInvoice)),
    SRSReportParameterAttribute(classStr(DLS1016_SalesInvoicecontractclass))

]
//public class DLS1016_SalesInvoiceDP extends SrsReportDataProviderPreProcessTempDB
public class DLS1016_SalesInvoiceDP extends SrsReportDataProviderPreProcess
{
    DLS1016_SalesInvoice                         salesInvoicetempDB;
     TransDate                                  fromDate;
    TransDate                                   toDate;
    DLS1016_SalesInvoicecontractclass           contractclass;

}
5-2)
[
    SRSReportDataSetAttribute("DLS1016_SalesInvoice")
]
public DLS1016_SalesInvoice getDLS1016_SalesInvoicetmptable()
{
    select *from salesInvoicetempDB;

    return salesInvoicetempDB;
}
5-3)processReport

[
    SysEntryPointAttribute(false)
]
public  void processReport()
{
    Query                               query;
    QueryRun                            queryRun;
    QueryBuildDataSource                qbds,qbds1,qbds2,qbds3,qbds4;
    QueryBuildRange                     qbr,qbr1,qbr2,qbr3;
    List                                salesId,custAccount;
    ListEnumerator                      salesIDEnumerator,custAccountEnumerator;
    CustInvoiceJour             custInvoiceJour;
    CustInvoiceTrans            custinvoicetrans;
    SalesTable                  salesTable;
    TaxTrans                    taxtrans;
    InventDim                   inventDim;

    query = this.parmQuery();
    contractclass  = new DLS1016_SalesInvoicecontractclass();
    contractclass  = this.parmDataContract() as DLS1016_SalesInvoicecontractclass;
    qbds            = query.dataSourceTable(tableNum(SalesTable));
    qbds1           = query.dataSourceTable(tableNum(CustInvoiceJour));
    qbds2           = query.dataSourceTable(tableNum(CustInvoiceTrans));
    qbds3           =query.dataSourceTable(tableNum(TaxTrans));
    qbds4           = query.dataSourceTable(tableNum(InventDim));
    fromDate        = contractclass.parmfromDate();
    toDate          = contractclass.parmToDate();
    salesId         = contractclass.parmSalesID();
    custAccount     = contractclass.parmcustAccount();
    qbr             = qbds1.addRange(fieldNum(CustInvoiceJour,SalesId));
    qbr1            =qbds4.addRange(fieldNum(InventDim,InventLocationId));
    qbr2            = qbds3.addRange(fieldNum(TaxTrans,TaxCode));
    qbr3            = qbds.addRange(fieldNum(SalesTable,CustAccount));
    SysQuery::findOrCreateRange(qbds2,fieldNum(CustInvoiceTrans,InvoiceDate)).value(queryRange(fromDate,toDate));
    if(SalesId)
    {
        salesIDEnumerator        = SalesId.getEnumerator();
        while(salesIDEnumerator.moveNext())
        {
            qbr.value(queryRangeConcat(qbr.value(),salesIDEnumerator.current()));
        }
    //else (salesId)
        //{
            //salesid2     = salesId.getEnumerator();
            //while(salesid2.moveNext())
            //{
                //
            //}
        }
    queryRun = new QueryRun(query);
        while(queryRun.next())
        {
            salesTable              = queryRun.get(tableNum(SalesTable));
            custInvoiceJour         =queryRun.get(tableNum(CustInvoiceJour));
            custinvoicetrans        =queryRun.get(tableNum(CustInvoiceTrans));
            inventDim               =queryRun.get(tableNum(InventDim));
            taxtrans                = queryRun.get(tableNum(TaxTrans));
            salesInvoicetempDB.SalesId               = custInvoiceJour.SalesId;
            salesInvoicetempDB.CustAccount           = salesTable.CustAccount;
            salesInvoicetempDB.InvoiceDate           = custInvoiceJour.InvoiceDate;
            salesInvoicetempDB.InvoiceId             = custInvoiceJour.InvoiceId;
            salesInvoicetempDB.LedgerVoucher         = custInvoiceJour.LedgerVoucher;
            salesInvoicetempDB.CurrencyCode          = custInvoiceJour.CurrencyCode;
            salesInvoicetempDB.InvoiceAmount         = custInvoiceJour.InvoiceAmount;
            salesInvoicetempDB.OrigSalesId           = custinvoicetrans.OrigSalesId;
            salesInvoicetempDB.ItemId                =custinvoicetrans.ItemId;
            salesInvoicetempDB.Site                  = inventDim.InventSiteId;
            salesInvoicetempDB.WareHouse             = inventDim.InventLocationId;
            salesInvoicetempDB.Location              =inventDim.wMSLocationId;
            salesInvoicetempDB.Qty                   = custinvoicetrans.Qty;
            salesInvoicetempDB.SalesPrice            = custinvoicetrans.SalesPrice;
            salesInvoicetempDB.Amount                = custinvoicetrans.lineAmountInclTax();
            salesInvoicetempDB.TransDate             =taxtrans.TransDate;
           // salesInvoicetempDB.TaxDirection            =taxtrans.TaxDirection;
            salesInvoicetempDB.TaxCode               = taxtrans.TaxCode;
            salesInvoicetempDB.SourceCurrencyCode    = taxtrans.SourceCurrencyCode;
           // salesInvoicetempDB.ActualsalesTaxAmount = (taxtrans.SourceRegulateAmountCur*taxtrans.taxchangeDisplaySign(taxtrans.taxdirection));
            salesInvoicetempDB.insert();

        }

}

-----
Controller Class
6-1)

class DLS1016_SalesInvoiceCotroller extends SrsReportRunController
{
    DLS1016_SalesInvoicecontractclass  datacontract;

}

6-2) PreRunModifyContract
protected void PreRunModifyContract()
{
    datacontract =this.parmReportContract().parmRdpContract() as DLS1016_SalesInvoicecontractclass;
    datacontract.parmcustAccount();
    datacontract.parmSalesID();
    datacontract.parmfromDate();
    datacontract.parmToDate();
}
6-3) main

public static  void main(Args args)

{
    DLS1016_SalesInvoiceCotroller dLSControllerclass;

    dLSControllerclass = new DLS1016_SalesInvoiceCotroller();



   dLSControllerclass.parmReportName(ssrsReportStr(DLSSalesInvoice2,Report));
    dLSControllerclass.parmDialogCaption('Sales Invoice Report with tax codes');
    dLSControllerclass.parmArgs(args);

    dLSControllerclass.startoperation();
}

Now Create Menu Item 
 attach Contoller class and Report 



Comments

Popular posts from this blog