Friday, May 24, 2019

SSRS Report with multi select lookup parameter

  Contract Class with Param Methods :-       

       [
            DataContractAttribute,
            SysOperationContractProcessingAttribute(classStr(CIC_CreditReportUIBuilder)),
            SysOperationGroupAttribute('Date', "@SYS7402", '1',FormArrangeMethod::Vertical)
        ]
       
        public class CIC_CreditReportContract implements SysOperationValidatable, SysOperationInitializable
        {
            TransDate           fromDate;
            TransDate           toDate;
                 
            List                     agentBroker, policy, profitCenter, userId, businessTypeId, requestor;
       
        }

======================================================================

public void initialize()
        {
            this.parmFromDate(systemdateget());
            this.parmToDate(nextyr(systemdateget() - 1));
        }

=======================================================================

       [
            DataMemberAttribute('FromDate'),
            SysOperationLabelAttribute(literalstr("@SYS4083")),
            SysOperationHelpTextAttribute(literalstr("From date")),
            SysOperationGroupMemberAttribute('Date'),
            SysOperationDisplayOrderAttribute('1')
        ]
        public TransDate parmFromDate(TransDate _fromDate = fromDate)
        {
            fromDate = _fromDate;
            return fromDate;
        }

========================================================================
   
       [
            DataMemberAttribute('ToDate'),
            SysOperationLabelAttribute(literalstr("@SYS8828")),
            SysOperationHelpTextAttribute(literalstr("To date")),
            SysOperationGroupMemberAttribute('Date'),
            SysOperationDisplayOrderAttribute('2')
        ]
        public TransDate parmToDate(TransDate _toDate = toDate)
        {
            toDate = _toDate;
            return toDate;
        }

======================================================================

       [
            DataMemberAttribute('Approver'),
            AifCollectionTypeAttribute("Approver", Types::String),
            SysOperationLabelAttribute(literalstr('Approver')),
            SysOperationHelpTextAttribute(literalstr('Workflow Approver')),
            SysOperationGroupMemberAttribute('Date'),
            SysOperationDisplayOrderAttribute('4')
        ]
        public List parmUserId(List _userId = userId)
        {
            userId = _userId;
       
            return userId;
        }

=======================================================================
        [
            DataMemberAttribute('ProfitCenter'),
            AifCollectionTypeAttribute("ProfitCenter", Types::String),
            SysOperationLabelAttribute(literalstr('ProfitCenter')),
            SysOperationHelpTextAttribute(literalstr('ProfitCenter')),
            SysOperationGroupMemberAttribute('Date'),
            SysOperationDisplayOrderAttribute('5')
        ]
        public List parmProfitCenter(List _profitCenter = profitCenter)
        {
            profitCenter = _profitCenter;
       
            return profitCenter;
        }

========================================================================
         public boolean validate()
        {
            boolean ret = true;
            if (!fromDate)
            {
                 fromDate = systemdateget();
            }
       
            if (!toDate)
            {
                toDate = systemdateget();
            }
            if (toDate < fromDate)
            {
                ret = checkFailed("@SYS16982");
            }
            return ret;
        }
=======================================================================

UI Builder Class


public class CIC_CreditReportUIBuilder extends SrsReportDataContractUIBuilder
        {
            CIC_CreditReportContract    creditReportContract;
        }

=======================================================================

public void getFromDialog()
        {
            creditReportContract contract = this.dataContractObject();
            super();
        }

======================================================================

public void initializeFields()
        {
            creditReportContract contract = this.dataContractObject();
        
        }
=======================================================================

private void lookupApprover(FormStringControl _formStringControl)
        {
            SysLookupMultiSelectGrid            msCtrlApprover;
        
            msCtrlApprover = SysLookupMultiSelectGrid::construct(_formStringControl, _formStringControl);
            msCtrlApprover.parmQuery(this.approverQuery());
            msCtrlApprover.run();
        
        }

=======================================================================

private Query approverQuery()
        {
            Query       query;
            query = new query();
        
            query.addDataSource(tableNum(UserInfo));
            query.dataSourceTable(tableNum(UserInfo)).addSelectionField(fieldNum(UserInfo,Id));
            query.dataSourceTable(tableNum(UserInfo)).addSelectionField(fieldNum(UserInfo,Name));
        
            return query;
        }

========================================================================

private void lookupProfitCenter(FormStringControl _formStringControl)
        {
            SysLookupMultiSelectGrid            msCtrlProfitCenter;
        
            msCtrlProfitCenter = SysLookupMultiSelectGrid::construct(_formStringControl, _formStringControl);
            msCtrlProfitCenter.parmQuery(this.profitCenterQuery());
            msCtrlProfitCenter.run();
        
        }

========================================================================

private Query profitCenterQuery()
        {
            Query                   query;
            QueryBuildDataSource    qbds, qbds1;
            DimensionAttribute      dimAttr;
            define.DimensionName("ProfitCenter")
        
            query = new query();
            dimAttr         = DimensionAttribute::findByName("Profitcenter");
            qbds    =   query.addDataSource(tableNum(DimensionFinancialTag));
            qbds.addSelectionField(fieldNum(DimensionFinancialTag,Value));
            qbds.addSelectionField(fieldNum(DimensionFinancialTag,Description));
            qbds1   =   qbds.addDataSource(tableNum(DimensionAttributeDirCategory));
            qbds1.addLink(fieldNum(DimensionFinancialTag,FinancialTagCategory),fieldnum(DimensionAttributeDirCategory,RecId));
            qbds1.addRange(fieldNum(DimensionAttributeDirCategory, DimensionAttribute)).value(queryvalue(dimAttr.recid));
            qbds1.addSelectionField(fieldNum(DimensionAttributeDirCategory,DimensionAttribute));
        
            return query;
        
        }

=======================================================================

public void build()
        {
            Dialog dialogObject =  this.dialog();
        
            creditReportContract =  this.dataContractObject();
        
            dialogObject.addGroup('Date');
            this.addDialogField(methodstr(CIC_CreditReportContract,parmFromDate),creditReportContract);
            this.addDialogField(methodstr(CIC_CreditReportContract,parmToDate),creditReportContract);
        
            dialogObject.addGroup('Customer');
            this.addDialogField(methodstr(CIC_CreditReportContract,parmUserId),creditReportContract);
            
 this.addDialogField(methodstr(CIC_CreditReportContract,parmProfitCenter),creditReportContract);
        }

=======================================================================

public void postBuild()
        {
            DialogField                 dialogFromDate;
            DialogField                 dialogToDate;
            DialogField                 dialogApprover;
            DialogField                 dialogProfitCenter;
          
        
            super();
        
            dialogApprover          = this.bindInfo().getDialogField(this.dataContractObject(), methodStr(CIC_CreditReportContract,parmUserId));
            dialogProfitCenter      = this.bindInfo().getDialogField(this.dataContractObject(), methodStr(CIC_CreditReportContract,parmProfitCenter));
            
           
        
            dialogApprover.registerOverrideMethod(methodStr(FormStringControl, lookup),
                                                  methodStr(CIC_CreditReportUIBuilder, lookupApprover), this);
            dialogProfitCenter.registerOverrideMethod(methodStr(FormStringControl, lookup),
                                                  methodStr(CIC_CreditReportUIBuilder, lookupProfitCenter), this);
            
        }

=======================================================================

public void postRun()
        {
            creditReportContract contract = this.dataContractObject();
        }

=======================================================================

RDP Class

        [
            SRSReportQueryAttribute(querystr(CICGBCreditReport)),
            SRSReportParameterAttribute(classstr(CIC_CreditReportContract))
        ]
        class CIC_CreditReportDP  extends SRSReportDataProviderBase
        {
            CICGBCreditCommittal            cicGBCreditCommittal;
            CICCreditReportTmp              cicCreditReportTmp;
            DirPerson                                dirPerson;
            CustTrans                               custTrans;
            VendTable                              vendTable;
            FromDate                               fromDate;
            ToDate                                   toDate;
            List                                       intermediary,
                                                         profitCenter,
                                                        userId;
                                            
            ListIterator                           literator;
            define.FromDate('FromDate')
            define.ToDate('ToDate')
        
        }

======================================================================

        [
            SRSReportDataSetAttribute('CICCreditReportTmp')
        ]
        public CICCreditReportTmp getcicCreditReportTmp()
        {
            select cicCreditReportTmp;
            return cicCreditReportTmp;
        }

=======================================================================

private void insertIntoTempTable()
        {
            cicCreditReportTmp.PolicyNumber             = cicGBCreditCommittal.Policy;
            cicCreditReportTmp.Endorsement              = cicGBCreditCommittal.Endorsement;
            cicCreditReportTmp.ClientName               = cicGBCreditCommittal.CustomerName;
            cicCreditReportTmp.CreditAmount             = cicGBCreditCommittal.PremiumAmount;
            cicCreditReportTmp.CreditDays               = cicGBCreditCommittal.CreditDays;
            cicCreditReportTmp.UnderwritersNarration    = cicGBCreditCommittal.OperationRemarks;
            cicCreditReportTmp.FinanceRemarks           = cicGBCreditCommittal.FinanceRemarks;
            cicCreditReportTmp.CreditStatus             = cicGBCreditCommittal.CreditApprovalStatus;
            cicCreditReportTmp.RecNo                    = cicGBCreditCommittal.VoucherNo;
            cicCreditReportTmp.AmountPaid               = cicGBCreditCommittal.VoucherAmount;
            cicCreditReportTmp.Approver                 = cicGBCreditCommittal.Approver;
            cicCreditReportTmp.Requestor                = cicGBCreditCommittal.Requestor;
            cicCreditReportTmp.RequestDate              = cicGBCreditCommittal.RequestDate;
            cicCreditReportTmp.OverDueDays              = date2num(cicGBCreditCommittal.DueDate) - date2num(systemDateGet());
            cicCreditReportTmp.OutsCreditAmount         = custTrans.remainAmountMST();
            cicCreditReportTmp.IntermediaryCode         = custTrans.CICAgentBroker;
            cicCreditReportTmp.Channel                  = custTrans.CICChannelDesc;
            cicCreditReportTmp.RecDate                  = custTrans.TransDate;
            cicCreditReportTmp.IntermediaryName         = vendTable.name();
            cicCreditReportTmp.Profitcenter             = custTrans.CICProfitcenter;
        
        
            if (businessTypeId)
            {
                cicCreditReportTmp.BusinessType    = cicBusinessType.Name;
            }
            else
            {
                select firstOnly Name from cicBusinessType
                    where cicBusinessType.BusinessTypeId == CustTrans.CICBusinessType;
        
                if (cicBusinessType)
                {
                    cicCreditReportTmp.BusinessType = cicBusinessType.Name;
                }
            }
        
            cicCreditReportTmp.insert();
        }

======================================================================

[AifDocumentCreateAttribute, SysEntryPointAttribute(true)]
        public void processReport()
        {
            Query                   query;
            QueryRun                qr;
            QueryBuildRange         qbdRange, custTransQbr,businessTypeQbr,userInfoQbr,cicGBCreditCommittalQbr,profitCenterQbr;
            QueryBuildDataSource    custTransQbds, businessTypeQbds,userInfoQbds,cicGBCreditCommittalQbds, profitCenterQbds;
        
        
            CIC_CreditReportContract contract = this.parmDataContract() as CIC_CreditReportContract;
        
            fromDate            = contract.parmFromDate();
            toDate              = contract.parmToDate();
            userId              = contract.parmUserId();
            profitCenter        = contract.parmProfitCenter();
        
            //Checking for null date
            if (!fromDate)
            {
                fromDate = systemdateget();
            }
             //Checking for null date
            if (!toDate)
            {
                toDate = systemdateget();
            }
        
            query = this.parmQuery();
        
            if(fromDate && toDate)
            {
                query.dataSourceTable(tableNum(CustTrans)).addRange(fieldNum(CustTrans,TransDate)).value(SysQuery::range(fromDate, todate));
        
            }
        
                   
            if(!userId.empty())
            {
                literator = new ListIterator(userId);
                cicGBCreditCommittalQbds = query.dataSourceTable(tableNum(CICGBCreditCommittal));
                userInfoQbds             = cicGBCreditCommittalQbds.addDataSource(tableNum(UserInfo));
                userInfoQbds.addLink(fieldNum(CICGBCreditCommittal,Approver),fieldNum(UserInfo,name));
        
                while (literator.more())
                {
                    userInfoQbr              =  userInfoQbds.addRange(fieldNum(UserInfo,name));
                    userInfoQbr.value(literator.value());
                    literator.next();
                }
            }
        
                   
            if(!profitCenter.empty())
            {
                literator = new ListIterator(profitCenter);
                custTransQbds = query.dataSourceTable(tableNum(custTrans));
                profitCenterQbds =  custTransQbds.addDataSource(tableNum(DefaultDimensionView));
                profitCenterQbds.addLink(fieldNum(custTrans,DefaultDimension),fieldNum(DefaultDimensionView,DefaultDimension));
                while (literator.more())
                {
                    profitCenterQbr =  profitCenterQbds.addRange(fieldNum(DefaultDimensionView, DisplayValue));
                    profitCenterQbr.value(literator.value());
                    literator.next();
                }
            }
        
                    
            qr = new QueryRun(query);
        
            while (qr.next())
            {
                custTrans            = qr.get(tableNum(custTrans));
                cicGBCreditCommittal = qr.get(tableNum(cicGBCreditCommittal));
        
               if(custTrans.Voucher)
               {
                    select firstOnly AccountNum from vendTable
                        where VendTable.AccountNum == custTrans.CICAgentBroker;
                  //vendTable = vendTable::find(custTrans.CICAgentBroker);
                  this.insertIntoTempTable();
               }
             }
        
        }

2 comments:

  1. Thanks for sharing this informative content , Great work
    Leanpitch provides online training and certification in Scrum master during this lockdown period everyone can use it wisely.
    Scrum master certification

    ReplyDelete
  2. Thanks for sharing this.,
    Leanpitch provides online training in Scrum Master during this lockdown period everyone can use it wisely.
    Join Leanpitch 2 Days CSM Certification Workshop in different cities.

    Scrum master certification online

    ReplyDelete

How to enable the dimension fields based on the Item selected on the form.

[Form] public class KMTShipFromWarehouses extends FormRun {     InventDimCtrl_Frm_EditDimensions        inventDimFormSetup;     /// &l...