Hello I have form Trial balance this is name LedgerTrialBalanceListPage
I will create custom service and I want calcute balances buton emilator and I will get data in service
I got like this data if I click calculate balances
I want like this but by service api
I was trying when I found sample codes
- Dynamics AX | D365 FO tech post: Calculate ledger balance by dimension set in X++ in AX2012/Dynamics 365 FO
- Blog on Microsoft Dynamics AX/ D365: Opening and closing balance Mainaccount ax 2012
But Not Worked
My codes like that
var response = new TrialResponse();
changecompany(_request.parmDataAreaId())
{
System.Exception exception;
List data = new List(Types::Class);
try
{
List dimensionValuesList;
DimensionSetContract dimensionSet = new DimensionSetContract();
DimensionAttributeValueContract dimensionAttributeValueContract;
DimensionAttributeValueContract dimensionAttributeValueContract2;
DimensionAttributeValueContract dimensionAttributeValueContract3;
RecId ledgerDimensionId;
RecId ledgerId;
DimensionAttributeValueCombination dimAttrValueCombo;
LedgerBalanceDimAttrValueComboAmounts ledgerBalance;
DimensionServiceProvider serviceProvider = new DimensionServiceProvider();
DimensionSetBalanceContract result = new DimensionSetBalanceContract();
DimensionSetCombinationContract dimensionSetCombinationContract;
dimensionValuesList = new List(Types::Class);
dimensionSet.parmAccountingDateFrom(mkDate(01,01,2022));
dimensionSet.parmAccountingDateTo(mkDate(30,12,2022));
dimensionSet.parmCombination(dimensionSetCombinationContract);
DimensionServiceProvider::validateDimensionSet(dimensionSet);
ledgerBalance = LedgerBalanceDimAttrValueComboAmounts::construct();
ledgerBalance.parmAccountingDateRange(dimensionSet.parmAccountingDateFrom(), dimensionSet.parmAccountingDateTo());
ledgerBalance.parmIncludeOpeningPeriod(true);//_dimensionSet.parmIncludeOpeningFiscalPeriod());
ledgerBalance.parmIncludeRegularPeriod(true);///_dimensionSet.parmIncludeOperatingFiscalPeriod());
ledgerBalance.calculateBalance(dimAttrValueCombo);
data.addEnd("zz");
data.addEnd(ledgerBalance.getAccountingCurrencyBalance());
}
catch(Exception::Error)
{
data.addEnd("xx");
exception = ClrInterop::getLastException();
if (exception != null)
{
exception = exception.get_InnerException();
if (exception != null)
{
error(exception.ToString());
}
}
}
catch(Exception::Deadlock)
{
retry;
}
catch (Exception::CLRError)
{
exception = ClrInterop::getLastException();
if (exception != null)
{
exception = exception.get_InnerException();
if (exception != null)
{
error(exception.ToString());
}
}
}
response.parmdata(data);
return response;
}