Common Data Service (CDS)
Explore Dynamics World With Aslam
Monday, 20 January 2025
Wednesday, 15 January 2025
Financial dimension Lookup filter in D365 FO X++
/// <summary>
/// This class is an extension of DimensionLookup
/// </summary>
[ExtensionOf(formDataSourceStr(DimensionLookup, ds))]
final class BTC_DimensionLookup_DS_Extension
{
/// <summary>
/// This method is used to initilise the value
/// </summary>
public void init()
{
DimensionAttributeViewContract dimAttrViewContract;
QueryBuildDataSource qBDSDimAttrCoBTCentre;
QueryBuildDataSource qBDSBTCUserCoBTCentreMaintain;
DimensionAttribute dimAttr;
next init();
FormRun formRun = element.args().caller();
if (formRun.name() == formStr(PurchTable))
{
dimAttr = element.args().record();
dimAttrViewContract = DimensionAttribute::getViewContract(dimAttr.RecId);
if (dimAttrViewContract.parmViewId() == tableNum(DimAttributeOMCoBTCenter))
{
if (BTC_UserCoBTCentreMaintain::checkUserExists(curUserId(), curExt()))
{
qBDSDimAttrCoBTCentre= this.query().dataSourceNo(1);
qBDSBTCUserCoBTCentreMaintain = qBDSDimAttrCoBTCentre.addDataSource(tableNum(BTC_UserCoBTCentreMaintain));
qBDSBTCUserCoBTCentreMaintain.joinMode(JoinMode::InnerJoin);
qBDSBTCUserCoBTCentreMaintain.relations(false);
qBDSBTCUserCoBTCentreMaintain.addLink(fieldNum(DimAttributeOMCoBTCenter, value), fieldNum(BTC_UserCoBTCentreMaintain, coBTCentre));
qBDSBTCUserCoBTCentreMaintain.addRange(fieldNum(BTC_UserCoBTCentreMaintain, UserId)).value(queryValue(curUserId()));
qBDSBTCUserCoBTCentreMaintain.addRange(fieldNum(BTC_UserCoBTCentreMaintain, LegalEntity)).value(curExt());
}
}
}
}
}
-----------------------------------------
/// <summary>
/// Extension class for DimensionEntryControl class
/// </summary>
[ExtensionOf(classStr(DimensionEntryControl))]
final class BTC_DimensionEntryControl_C_Extension
{
/// <summary>
/// This method is used to modify dimension values
/// </summary>
/// <param name = "_dimensionAttribute">DimensionAttribute</param>
/// <param name = "_origValue">DimensionValue</param>
/// <param name = "_newValue">DimensionValue</param>
/// <returns>boolean</returns>
protected boolean modifyingDimensionValue(
DimensionAttribute _dimensionAttribute,
DimensionValue _origValue,
DimensionValue _newValue)
{
boolean ret;
ret = next modifyingDimensionValue(_dimensionAttribute, _origValue, _newValue);
if (this.formRun().name() == formStr(PurchTable))
{
if (_newValue)
{
if (BTC_UserCoBTCentreMaintain::checkUserExists(curUserId(), curExt()))
{
if (_dimensionAttribute.Name == BTC_DefaultPurchaseOrderValues::A4CoBTCentreName)
{
BTC_UserCoBTCentreMaintain userCoBTCentreMaintain;
select firstonly RecId from userCoBTCentreMaintain
where userCoBTCentreMaintain.UserId == curUserId()
&& userCoBTCentreMaintain.LegalEntity == curExt()
&& userCoBTCentreMaintain.CoBTCentre == _newValue;
if (!userCoBTCentreMaintain.RecId)
{
throw warning(strFmt("@SYS135696", _newValue));
}
}
}
}
else
{
throw warning('Field Cost centre must be filled in.');
}
}
return ret;
}
}
Thursday, 9 January 2025
DefaultDimension in d365 FO X++
Navigate to PurchTable methods you can find with DefaultDimension
this.DefaultDimension = this.mergeDimension(this.getDefaultDimension(),this.DefaultDimension);
this.DefaultDimension = this.mergeDimension(_purchAgreementHeader.DefaultDimension, this.DefaultDimension);
!DimensionDefaultFacade::areEqual(this.DefaultDimension, _purchTableOrig.DefaultDimension))
this.DefaultDimension = this.copyDimension(_purchTableHistory.DefaultDimension);
Default dimension in d365 FO
public RefRecId getDefaultDimension()
{
container contDimSTructure = [DefaultPurchaseOrderValues::CoentreName];
container attributeValue = [this.Coentre];
RefRecId defaultDimension = PurchOrderCreateUpdateAPI::createDefaultDimension(contDimSTructure,attributeValue);
return defaultDimension;
}
--------------------------------------------------------------------------
public static DimensionDefault createDefaultDimension(container conAttribute,container attributeValue)
{
DimensionAttributeValueSetStorage valueSetStorage = new DimensionAttributeValueSetStorage();
DimensionDefault result;
DimensionAttribute dimensionAttribute;
DimensionAttributeValue dimensionAttributeValue;
int i;
container conAttr = conAttribute;
container conValue = attributeValue;
str dimValue;
for (i = 1; i <= conLen(conAttr); i++)
{
dimensionAttribute = dimensionAttribute::findByName(conPeek(conAttr,i));
if (dimensionAttribute.RecId == 0)
{
continue;
}
dimValue = conPeek(conValue,i);
if (dimValue != "")
{
dimensionAttributeValue = dimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute,dimValue,false,true);
valueSetStorage.addItem(dimensionAttributeValue);
}
}
result = valueSetStorage.save();
return result;
}
Lookup method in d365 FO
[ExtensionOf(formStr(PurchCreateOrder))]
final class _PurchCreateOrder_F_Extension
{
void init()
{
next init();
PurchTable_Coentre.registerOverrideMethod(methodStr(FormDataObject, lookup), formMethodStr(PurchCreateOrder, overrideCoentreLookup));
}
public void overrideCoentreLookup(FormStringControl _formControl)
{
Query query = new Query();
QueryBuildDataSource qBDSInventCoentre;
QueryBuildDataSource qBDSUserCoentreMaintain;
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(DimAttributeOMCoenter), _formControl);
sysTableLookup.addLookupfield(fieldNum(DimAttributeOMCoenter, value));
sysTableLookup.addLookupfield(fieldNum(DimAttributeOMCoenter, Name));
qBDSInventCoentre = query.addDataSource(tableNum(DimAttributeOMCoenter));
if (_UserCoentreMaintain::checkUserExists(curUserId(), curExt()))
{
qBDSUserCoentreMaintain = qBDSInventCoentre.addDataSource(tableNum(UserCoentreMaintain));
qBDSUserCoentreMaintain.joinMode(JoinMode::InnerJoin);
qBDSUserCoentreMaintain.relations(false);
qBDSUserCoentreMaintain.addLink(fieldNum(DimAttributeOMCoenter, value), fieldNum(UserCoentreMaintain, coentre));
qBDSUserCoentreMaintain.addRange(fieldNum(_UserCoentreMaintain, UserId)).value(queryValue(curUserId()));
qBDSUserCoentreMaintain.addRange(fieldNum(_UserCoentreMaintain, LegalEntity)).value(curExt());
}
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}
}
Common Data Service (CDS)
Common Data Service (CDS)
-
The general journal can be created using X++ code. This code which I am sharing in this article helps you to create general journal ...
-
Added new fields to CustAgingReportTmp public class DDDCustAgingReportController extends SrsReportRunController implements BatchRetryable ...
-
[ExtensionOf(classstr(CustAccountStatementExtContract))] final class DDDCustAccountStatementExtContract_Extension { public boolean check...