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