26 April 2018

Refresh from data source from class in AX7 / D365


Table tableBuffer;
FormDataSource formDataSource;
tableBuffer = _args.record();
formDataSource = FormDataUtil::getFormDataSource(tableBuffer);
formDataSource.research();

19 April 2018

X++ code to read CSV file in AX7 / D365

AsciiStreamIo file;
Array fileLines;
FileUploadTemporaryStorageResult fileUpload;
fileUpload = File::GetFileFromUser() as FileUploadTemporaryStorageResult;
file = AsciiStreamIo::constructForRead(fileUpload.openResult());
if (file)
{
if (file.status())
{
throw error("@SYS52680");
}
file.inFieldDelimiter(',');
file.inRecordDelimiter('\r\n');
}
container record;
while (!file.status())
{
record = file.read();
if (conLen(record))
{
info(strFmt("%1 - %2",conPeek(record,1),conPeek(record,2)));
}
}

22 March 2018

Update the vendor open trans to mark and update the amount in ax 2012 or AX 7 and D365


VendTransOpen vendTransOpenLoc;
VendTrans vendTransLoc;
SpecTransManager specTransManager;
boolean found;
SpecTrans specTransLoc;
CustVendOpenTransManager managerLoc = CustVendOpenTransManager::construct(ledgerJournalTrans);

select firstonly vendTransLoc
where vendTransLoc.Invoice == ledgerJournalTrans.Invoice
join firstonly vendTransOpenLoc
where vendTransOpenLoc.RefRecId == vendTransLoc.RecId;
specTransManager = SpecTransManager::construct(ledgerJournalTrans);
found = SpecTrans::existByRef(vendTransOpenLoc.DataAreaID,tableNum(VendTransOpen),vendTransOpenLoc.RecId);

if(found == false)
{
managerLoc.updateTransMarked(vendTransOpenLoc,NoYes::Yes);
ttsbegin;
specTransLoc = SpecTrans::findByRef(vendTransOpenLoc.DataAreaID,tableNum(VendTransOpen),vendTransOpenLoc.RecId,true);
specTransLoc.Balance01 = -ledgerJournalTrans.AmountCurDebit;
specTransLoc.update();
ttscommit;
}
else
{
warning(strFmt("%1 Record already marked.",ledgerJournalTrans.Invoice));
}

19 March 2018

How to get the form control access using event handler in D365 or AX7 How to enable or disable the field in the form level in D365 or AX7

How to enable or disable the field in the form level in D365 or AX7

CustTable custTable = sender.cursor(); // args.getThis() as CustTable;
FormDataSource custTable_ds = sender.formRun().dataSource(tablestr(CustTable);
FormRun element = sender.formRun();
FormControl myNewControl = element.design(0).controlName("myControl");
myNewButton.enabled(false);

=====

CustTable custTable = sender.cursor(); // args.getThis() as CustTable;
FormDataSource custTable_ds = sender.formRun().dataSource(tablestr(CustTable);
FormRun element = sender.formRun();
custTable_ds.object(fieldNum(CustTable,CustGroup)).enabled(false);

23 February 2018

21 February 2018

AX7 : D365 : How to merge ledger and financial dimensions using X++ code in AX 7 : D365

In D365 there is a new class for financial dimension merging. Return the default dimension id.

DimensionMerge

PurchLine::mergeDimension
{
return _dimensionMerge.merge(_primaryDefaultDimension, _secondaryDefaultDimension);
}
public DimensionDefault mergeDimension(
DimensionDefault _primaryDefaultDimension,
DimensionDefault _secondaryDefaultDimension = 0,
DimensionMerge _dimensionMerge = DimensionMerge::newFromTable(this,
this.companyInfo().RecId
)
)
{
return _dimensionMerge.merge(_primaryDefaultDimension, _secondaryDefaultDimension);
}


Below is the method where the parameters are passing and return final default dimension Id.

DimensionDefault mergedDimensionDefault;
DimensionCopy dimensionCopy;

// Now merge the dimensions
mergedDimensionDefault = LedgerDimensionDefaultFacade::serviceMergeDefaultDimensions(
_dimensionDefaultMap.DefaultDimension, // Values that are currently on the record
_defaultDimension1, // Input value 1
_defaultDimension2); // Input value 2

Service class to get the selected record and deleted matching records and refresh the form data source in D365 F&O

 [DataContractAttribute] class ABCUserProfilesBulkDeleteContract {         UserId userId;     [DataMemberAttribute('UserId')]     pu...