Monday, November 17, 2025

Customer balance list report of UIBuilder class

 public class  CustProvisionalBalanceUIBuilder extends SrsReportDataContractUIBuilder 

    DialogField dialogField_GroupBy,Locationfield; 

    DialogField dialogField_IncludeDetails; 

     CustProvisionalBalanceContract rdpContract; 

  

    DialogField billingClassificationField; 

    /// <summary> 

    /// Creates a multi-select Billing Classification lookup. 

    /// </summary> 

    public void billingClassificationLookup() 

    { 

        Query query = new Query(queryStr(CustBillingClassificationLookup)); 

        TableId multiSelectTableNum = tableNum(CustBillingClassification); 

        container selectedFields = [multiSelectTableNum, fieldName2id(multiSelectTableNum, fieldStr(CustBillingClassification, BillingClassification))]; 

  

        SysLookupMultiSelectCtrl::constructWithQuery(this.dialog().dialogForm().formRun(), billingClassificationField.control(), query, false, selectedFields); 

    } 

  

    /// <summary> 

    /// Builds the <c>CustProvisionalBalance</c> report parameter form that is based on billing 

    /// classification. 

    /// </summary> 

    public void build() 

    { 

        boolean isBillingClassEnabled; 

        DialogField inclTransWithNoBillingClassField; 

  

        super(); 

  

        rdpContract = this.dataContractObject() as  CustProvisionalBalanceContract; 

  

        billingClassificationField = this.bindInfo().getDialogField(rdpContract, methodStr( CustProvisionalBalanceContract, parmBillingClassification)); 

  

        inclTransWithNoBillingClassField = this.bindInfo().getDialogField(rdpContract, methodStr( CustProvisionalBalanceContract, parmInclTransWithNoBillingClass)); 

        Locationfield      = this.adddialogfield(methodstr( CustProvisionalBalanceContract,parmLocation), rdpContract); 

  

        // controlling visibility 

        if (billingClassificationField && inclTransWithNoBillingClassField) 

        { 

            isBillingClassEnabled = CustParameters::isBillingClassificationEnabled(); 

            billingClassificationField.visible(isBillingClassEnabled); 

            inclTransWithNoBillingClassField.visible(isBillingClassEnabled); 

            billingClassificationField.lookupButton(FormLookupButton::Always); 

        } 

    } 

  

    /// <summary> 

    /// Handles the modified event of the budget cycle time span control. 

    /// </summary> 

    /// <param name="_groupByControl"> 

    /// The budget cycle time span control for which the modified event must be handled. 

    /// </param> 

    /// <returns> 

    /// true if the time span is modified; otherwise, false. 

    /// </returns> 

    public boolean groupByModified(FormComboBoxControl _groupByControl) 

    { 

        CustMainAccount custMainAccount; 

  

        var includeDetailsControl = dialogField_IncludeDetails.control(); 

        custMainAccount = str2enum(custMainAccount, _groupByControl.valueStr()); 

  

        if (custMainAccount == CustMainAccount::MainAccount) 

        { 

            includeDetailsControl.checked(true); 

            includeDetailsControl.enabled(false); 

        } 

        else 

        { 

            includeDetailsControl.enabled(true); 

        } 

  

        return true; 

    } 

  

    public void initializeFields() 

    { 

        rdpContract = this.dataContractObject(); 

  

        dialogField_GroupBy = this.bindInfo().getDialogField(rdpContract, methodStr( CustProvisionalBalanceContract, parmGroupBy)); 

        dialogField_IncludeDetails = this.bindInfo().getDialogField(rdpContract, methodStr( CustProvisionalBalanceContract, parmIncludeDetails)); 

  

        var includeDetailsControl = dialogField_IncludeDetails.control(); 

  

        if (rdpContract.parmGroupBy() == CustMainAccount::MainAccount) 

        { 

            includeDetailsControl.value(1); 

            includeDetailsControl.enabled(false); 

        } 

    } 

  

    /// <summary> 

    /// Changes the dialog field for a collection to use the multi-select control. 

    /// </summary> 

    /// <remarks> 

    /// Called during post run to change the dialog field for collection type to use multi-select control. 

    /// </remarks> 

    protected void modifyCollectionDialogField() 

    { 

        SysLookupMultiSelectCtrl multiSelectControl; 

  

        MapEnumerator mapEnum; 

        DialogField dialogField; 

        FormStringControl strControl; 

        QueryRun multiSelectQueryRun; 

        int multiSelectTableNum = tableNum(SysOperationMultiSelectTmp); 

  

        container selectedFields = [multiSelectTableNum, fieldName2id(multiSelectTableNum, fieldStr(SysOperationMultiSelectTmp, Values))]; 

  

        // if there are any collection types, then we should show the multi-value control if possible. 

        if (multiSelectQueryMap) 

        { 

            if (!multiSelectControlMap) 

            { 

                // The multi-select controls are created only once. Valid values are updated via QueryRun updates 

                multiSelectControlMap = new Map(Types::Class, Types::Class); 

            } 

  

            mapEnum = multiSelectQueryMap.getEnumerator(); 

            while (mapEnum.moveNext()) 

            { 

                dialogField = mapEnum.currentKey(); 

                multiSelectQueryRun = mapEnum.currentValue(); 

  

                if (dialogField.name() == billingClassificationField.name()) 

                { 

                    continue; 

                } 

  

                // get the underlying control from formRun. 

                if (multiSelectQueryRun) 

                { 

                    strControl = dialogField.control(); 

  

                    if (!multiSelectControlMap.exists(dialogField)) 

                    { 

                        // initialization: create the controls 

                        multiSelectControl = SysLookupMultiSelectCtrl::constructWithQueryRun(this.dialog().dialogForm().formRun(), strControl, multiSelectQueryRun, false, selectedFields); 

                        multiSelectControlMap.insert(dialogField, multiSelectControl); 

                    } 

                    else 

                    { 

                        // parameter refresh: update the QueryRun 

                        multiSelectControl = multiSelectControlMap.lookup(dialogField); 

                        multiSelectControl.refreshQueryRun(multiSelectQueryRun); 

                    } 

                } 

            } 

        } 

    } 

  

    public void postBuild() 

    { 

        super(); 

  

        this.initializeFields(); 

    } 

  

    /// <summary> 

    /// Performs the post run actions. 

    /// </summary> 

    public void postRun() 

    { 

        Dialog dialogLocal = this.dialog(); 

  

        if (CustParameters::isBillingClassificationEnabled()) 

        { 

            this.billingClassificationLookup(); 

        } 

  

        super(); 

  

        // This method should be called in order to handle events on dialogs. 

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

        Locationfield  = this.bindinfo().getdialogfield(rdpContract,methodStr( CustProvisionalBalanceContract,parmLocation)); 

        Locationfield.registeroverridemethod(methodstr(formstringcontrol, lookup),methodstr( CustProvisionalBalanceUIBuilder,lookupLocation),this); 

        dialogField_GroupBy.registerOverrideMethod(methodstr(FormComboBoxControl, modified), methodstr( CustProvisionalBalanceUIBuilder, groupByModified), this); 

    } 

  

    public void lookupLocation(FormStringControl _formControl) 

    { 

  

       /* QueryBuildDataSource  queryBuildDataSource; 

        QueryBuildRange     queryBuildRange; 

        DimensionAttribute   dimAttr; 

  

        dimAttr = DimensionAttribute::findByName("Location"); 

  

        Query query = new Query(); 

        SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(DimensionAttributeValue), _formControl); 

        query.addDataSource(tablenum(DimensionAttributeValue)).addRange(fieldNum(DimensionAttributeValue,DimensionAttribute)).value(queryValue(dimAttr.RecId)); 

        //query.addDataSource(tablenum(DimensionAttributeValue)).addRange(fieldNum(DimensionAttributeValue,IsDeleted)).value(sysquery::value(NoYes::No)); 

         

        sysTableLookup.addLookupfield(fieldNum(DimensionAttributeValue, DisplayValue), true); 

        //this code is to add the ranges for filtering 

        sysTableLookup.parmQuery(query); 

        sysTableLookup.performFormLookup();*/ 

  

        QueryBuildDataSource  queryBuildDataSource; 

  

        QueryBuildRange     queryBuildRange; 

  

        DimensionAttribute   dimAttr; 

  

        container  conUsers; 

  

        int userCount = 1; 

  

        dimAttr = DimensionAttribute::findByName("Location"); 

  

        str locations; 

  

        Query query = new Query(); 

  

        SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(DimensionAttributeValue), _formControl); 

  

        SecurityRole        role; 

  

        SecurityUserRole    userRole; 

  

         RoleLocation  roleLocation; 

  

        while select roleLocation 

  

                where roleLocation.UserId == curUserId() 

  

        { 

  

            conUsers = conIns(conUsers,userCount,roleLocation.LocationId); 

  

            userCount++; 

  

        } 

  

        locations = con2Str(conUsers,","); 

  

        query.addDataSource(tablenum(DimensionAttributeValue)).addRange(fieldNum(DimensionAttributeValue,DimensionAttribute)).value(queryValue(dimAttr.RecId)); 

  

   

  

        sysTableLookup.addLookupfield(fieldNum(DimensionAttributeValue, DisplayValue), true); 

  

        query.dataSourceTable(tableNum(DimensionAttributeValue)).addRange(fieldnum(DimensionAttributeValue, DisplayValue)).value(locations); 

  

   

  

        //this code is to add the ranges for filtering 

  

        sysTableLookup.parmQuery(query); 

  

        sysTableLookup.performFormLookup(); 

  

  

  

    } 

  

 


No comments:

Post a Comment