How to make Financial Dimensions Mandatory through X++ code
Create a new class and create the methods -> Pre- or post evnet handler method and write the following code.After this go to the table -> methods-> validatewrite -> New event handler subscription
In my scenario, custinvoiceline is the table
public static void FreeTxtValidateWrite(XppPrePostArgs _args)
{
DimensionAttribute dimAttrDept,dimAttrClient,dimAttrDivision,dimAttrEmp,dimAttrIssue,dimAttrMaster,dimAttrMedia,dimAttrProduct,dimAttrProject;
DimensionAttributeValue dimAttrValueDept,dimAttrValueClient,dimAttrValueDivision,dimAttrValueEmp,dimAttrValueIssue,dimAttrValueMaster,dimAttrValueMedia,
dimAttrValueProduct,dimAttrValueProject;
DimensionAttributeValueSetItem dimAttrValueSetItemDept,dimAttrValueSetItemClient,dimAttrValueSetItemDivision,dimAttrValueSetItemEmp,dimAttrValueSetItemIssue,
dimAttrValueSetItemMaster,dimAttrValueSetItemMedia,dimAttrValueSetItemProduct,dimAttrValueSetItemProject;
CustInvoiceLine custInvoiceLine;
RefRecId defaultDimension;
SalesParameters salesParameters;
int i = 0;
boolean ret;
;
select firstOnly EU001Client,EU001Department,EU001Division,EU001Employee,EU001Issue,EU001MasterClient,EU001Media,EU001Product,EU001Project from salesParameters;
custInvoiceLine = _args.getThis();
//ret = _args.getReturnValue();
defaultDimension = custInvoiceLine.DefaultDimension;
if (salesParameters.EU001Client == NoYes::Yes)
{
dimAttrClient = DimensionAttribute::findByName('Client');
select firstonly RecId, DisplayValue from dimAttrValueSetItemClient
where dimAttrValueSetItemClient.DimensionAttributeValueSet == defaultDimension
join dimAttrValueClient
where dimAttrValueClient.RecId == dimAttrValueSetItemClient.DimensionAttributeValue
&& dimAttrValueClient.DimensionAttribute == dimAttrClient.RecId
&& dimAttrValueClient.IsDeleted == false;
if (!dimAttrValueSetItemClient.DisplayValue)
{
i++;
ret = checkFailed("Dimension Client is required for this line.");
}
}
if (salesParameters.EU001Department == NoYes::Yes)
{
dimAttrDept = DimensionAttribute::findByName('Department');
select firstonly RecId, DisplayValue from dimAttrValueSetItemDept
where dimAttrValueSetItemDept.DimensionAttributeValueSet == defaultDimension
join dimAttrValueDept
where dimAttrValueDept.RecId == dimAttrValueSetItemDept.DimensionAttributeValue
&& dimAttrValueDept.DimensionAttribute == dimAttrDept.RecId
&& dimAttrValueDept.IsDeleted == false;
if (!dimAttrValueSetItemDept.DisplayValue)
{
i++;
ret = checkFailed("Dimension Department is required for this line.");
}
}
if (salesParameters.EU001Division == NoYes::Yes)
{
dimAttrDivision = DimensionAttribute::findByName('Division');
select firstonly RecId, DisplayValue from dimAttrValueSetItemDivision
where dimAttrValueSetItemDivision.DimensionAttributeValueSet == defaultDimension
join dimAttrValueDivision
where dimAttrValueDivision.RecId == dimAttrValueSetItemDivision.DimensionAttributeValue
&& dimAttrValueDivision.DimensionAttribute == dimAttrDivision.RecId
&& dimAttrValueDivision.IsDeleted == false;
if (!dimAttrValueSetItemDivision.DisplayValue)
{
i++;
ret = checkFailed("Dimension Division is required for this line.");
}
}
if (salesParameters.EU001Employee == NoYes::Yes)
{
dimAttrEmp = DimensionAttribute::findByName('Employee');
select firstonly RecId, DisplayValue from dimAttrValueSetItemEmp
where dimAttrValueSetItemEmp.DimensionAttributeValueSet == defaultDimension
join dimAttrValueEmp
where dimAttrValueEmp.RecId == dimAttrValueSetItemEmp.DimensionAttributeValue
&& dimAttrValueEmp.DimensionAttribute == dimAttrEmp.RecId
&& dimAttrValueEmp.IsDeleted == false;
if (!dimAttrValueSetItemEmp.DisplayValue)
{
i++;
ret = checkFailed("Dimension Employee is required for this line.");
}
}
if (salesParameters.EU001Issue == NoYes::Yes)
{
dimAttrIssue = DimensionAttribute::findByName('Issue');
select firstonly RecId, DisplayValue from dimAttrValueSetItemIssue
where dimAttrValueSetItemIssue.DimensionAttributeValueSet == defaultDimension
join dimAttrValueIssue
where dimAttrValueIssue.RecId == dimAttrValueSetItemIssue.DimensionAttributeValue
&& dimAttrValueIssue.DimensionAttribute == dimAttrIssue.RecId
&& dimAttrValueIssue.IsDeleted == false;
if (!dimAttrValueSetItemIssue.DisplayValue)
{
i++;
ret = checkFailed("Dimension Issue is required for this line.");
}
}
if (salesParameters.EU001MasterClient == NoYes::Yes)
{
dimAttrMaster = DimensionAttribute::findByName('MasterClient');
select firstonly RecId, DisplayValue from dimAttrValueSetItemMaster
where dimAttrValueSetItemMaster.DimensionAttributeValueSet == defaultDimension
join dimAttrValueMaster
where dimAttrValueMaster.RecId == dimAttrValueSetItemMaster.DimensionAttributeValue
&& dimAttrValueMaster.DimensionAttribute == dimAttrMaster.RecId
&& dimAttrValueMaster.IsDeleted == false;
if (!dimAttrValueSetItemMaster.DisplayValue)
{
//ret = checkFailed("MasterClient must be specified.");
i++;
ret = checkFailed("Dimension MasterClient is required for this line.");
}
}
if (salesParameters.EU001Media == NoYes::Yes)
{
dimAttrMedia = DimensionAttribute::findByName('Media');
select firstonly RecId, DisplayValue from dimAttrValueSetItemMedia
where dimAttrValueSetItemMedia.DimensionAttributeValueSet == defaultDimension
join dimAttrValueMedia
where dimAttrValueMedia.RecId == dimAttrValueSetItemMedia.DimensionAttributeValue
&& dimAttrValueMedia.DimensionAttribute == dimAttrMedia.RecId
&& dimAttrValueMedia.IsDeleted == false;
if (!dimAttrValueSetItemMedia.DisplayValue)
{
i++;
ret = checkFailed("Dimension Media is required for this line.");
}
}
if (salesParameters.EU001Product == NoYes::Yes)
{
dimAttrProduct = DimensionAttribute::findByName('Product');
select firstonly RecId, DisplayValue from dimAttrValueSetItemProduct
where dimAttrValueSetItemProduct.DimensionAttributeValueSet == defaultDimension
join dimAttrValueProduct
where dimAttrValueProduct.RecId == dimAttrValueSetItemProduct.DimensionAttributeValue
&& dimAttrValueProduct.DimensionAttribute == dimAttrProduct.RecId
&& dimAttrValueProduct.IsDeleted == false;
if (!dimAttrValueSetItemProduct.DisplayValue)
{
i++;
ret = checkFailed("Dimension Product is required for this line.");
}
}
if (salesParameters.EU001Project == NoYes::Yes)
{
dimAttrProject = DimensionAttribute::findByName('Project');
select firstonly RecId, DisplayValue from dimAttrValueSetItemProject
where dimAttrValueSetItemProject.DimensionAttributeValueSet == defaultDimension
join dimAttrValueProject
where dimAttrValueProject.RecId == dimAttrValueSetItemProject.DimensionAttributeValue
&& dimAttrValueProject.DimensionAttribute == dimAttrProject.RecId
&& dimAttrValueProject.IsDeleted == false;
if (!dimAttrValueSetItemProject.DisplayValue)
{
i++;
ret = checkFailed("Dimension Project is required for this line.");
}
}
if (i > 0)
{
throw error(strFmt("Pelase fill the required dimensions"));
}
else
{
_args.setReturnValue(ret);
}
}
Comments
Post a Comment