Showing posts with label D365 Finance. Show all posts
Showing posts with label D365 Finance. Show all posts

Saturday, April 11, 2020

Message API - Message::AddAction() in D365FO Version 10.0.10 PU34 | New Feature

Introduction: 
From the version 10.0.10 Platform update 34, Microsoft has added a new feature Message::AddAction() which is shown in the message bar. 

Details: 
Message API associated with display or action menu items, which is visualized as a hyperlink/link button. 

It is linked with a single record at a time, called single action. 

In below taken example, we will show sales order is navigated to the form SalesTable from the message bar. 

For testing it, we'll create the runnable class also know as job in AX 2012. 
class CFSMessageAPI
{
    public static void main(Args _args)
    {
        SalesTable            salesTable = SalesTable::find('SH-000121');
        MenuItemMessageAction actionData = new MenuItemMessageAction();

        actionData.MenuItemName(menuItemDisplayStr(SalesTable));
        actionData.TableName(tableStr(SalesTable));
        actionData.RecId(salesTable.RecId);
        str jsonData = FormJsonSerializer::serializeClass(actionData);

        int64 messageId = Message::AddAction(MessageSeverity::Informational, "Sales order details", salesTable.customerName(), MessageActionType::DisplayMenuItem, jsonData);
    }

}
Let's see how it works, 









In my case it's showing Mitchell. Click on the link. 



















After clicking on the action link, it is navigated to the sales order record form as shown in the above link. 

Hurray, How pretty feature is released !!!

Conclusion:
In above example, we have seen how Message API is routed to the record. 

Thanks for reading !!!

Friday, April 10, 2020

Enable/Disable & Visibility an Action pane button on a list page using interaction class in D365

Introduction:
In this blog, we will see how we can enable/disable or change the visibility of the form control in interaction class.

Standard behavior of the form, system does not allow us to write code on form which comes under form template -> List page

It Seems like below attached image (Here we will consider form VendTableListPage. Property of form as shown below)










Each ListPage form consisting with an interaction class as shown in property, Here it is VendTableListInteraction. Each interaction class has one override method which is selectionchanged()

Solution: 
Here we will override the method of selectionchanged() as below
[ExtensionOf(classStr(VendTableListPageInteraction))]
final class VendTableListPageInteractionCFSJSClass_Extension
public void selectionChanged()
{
    next selectionChanged();

    //for visibility
    this.listPage().actionPaneControlVisible(formControlStr(VendTableListPage, ), false);

    //for enable/disable
    this.listPage().actionPaneControlEnabled(formControlStr(VendTableListPage, true);
}

For all other ListPage, we can go through interaction class. For reference, go through below mentioned classes:

AgreementListPageInteraction
BankDocumentTableListPageInteraction
CatProcureOrderListPageInteraction
CatVendorCatalogListPageInteraction
CustBillOfExchEndorseListPageInteraction
CustomsExportOrderListPageInteraction
CustPDCListPageInteraction
CustPDCSettleListPageInteraction
CzCustAdvanceInvoiceListPageInteraction
CzVendAdvanceInvoiceListPageInteraction
EcoResCategoryHierarchyPageInteraction
EcoResProductListPageInteraction
EmplAdvTableListPageInteraction
EntAssetObjectCalendarListPageInteraction
EntAssetWorkOrderPurchaseListPageInteraction
EntAssetWorkOrderPurchReqListPageInteraction
EntAssetWorkOrderScheduleListPageInteraction
EPRetailPickingListPageInteraction
EPRetailStockCountListPageInteraction
EximAuthorizationListPageInteraction
EximDEPBListPageInteraction
EximEPCGListPageInteraction
GlobalAddBookListPageInteraction
HcmCourseAttendeeListPageInteraction
HcmWorkerAdvHoldTableListPageInteraction
InventBatchJournalListPageInteraction
InventDimListPageInteractionAdapter
JmgProdStatusListPageInteraction
JmgProjStatusListPageInteraction
PCProductModelListPageInteraction
PMFSeqReqRouteChangesListPageInteraction
ProdBOMVendorListPageInteraction
ProdRouteJobListPageInteraction
ProdTableListPageInteraction
ProjForecastListPageInteraction
ProjInvoiceListPageInteraction
ProjInvoiceProposalListPageInteraction
ProjProjectContractsListPageInteraction
ProjProjectsListPageInteraction
projProjectTransListPageInteraction
ProjUnpostedTransListPageInteraction
PurchCORListPageInteraction
PurchCORRejectsListPageInteraction
PurchLineBackOrderListPageInteraction
PurchReqTableListPageInteraction
PurchRFQCaseTableListPageInteraction
PurchRFQReplyTableListPageInteraction
PurchRFQVendorListPageInteraction_PSN
PurchRFQvendTableListPageInteraction
PurchTableVersionListPageInteraction
ReqTransActionListPageInteraction
ReqTransFuturesListPageInteraction
ReqTransListPageInteraction
RetailOnlineChannelListPageInteraction
RetailSPOnlineStoreListPageInteraction
ReturnTableListPageInteraction
SalesAgreementListPageInteraction
SalesQuotationListPageInteraction
SalesTableListPageInteraction
SysListPageInteractionBase
SysUserRequestListPageInteraction
UserRequestExternalListPageInteraction
UserRequestListPageInteraction
VendEditInvoiceHeaderStagingListPageInteraction
VendNotificationListPageInteraction
VendPackingSlipJourListPageInteraction
VendPDCListPageInteraction
VendPDCSettleListPageInteraction
VendProfileContactListPageInteraction
VendPurchOrderJournalListPageInteraction
VendRequestCategoryListPageInteraction
VendRequestListPageInteraction
VendRequestWorkerListPageInteraction
VendTableListPageInteraction
VendUnrealizedRevListPageInteraction

Thanks for reading !!!

Deploy SSRS reports through Windows Powershell in Dynamics 365 Finance and Operations

Introduction:
In this blog, we will see how to deploy SSRS reports in Microsoft Dynamics 365 Finance and Operations  

Solution: 

For on-prem environment, we will open Windows PowerShell in administrator mode and run the below scrip step by step.
cd C:\AOSService\PackagesLocalDirectory\Plugins\AxReportVmRoleStartupTask\

.\DeployAllReportsToSsrs.ps1

For online Cloudhosted/Dev environment, we will run below mentioned script
cd k:\AosService\PackagesLocalDirectory\Plugins\AxReportVmRoleStartupTask\

.\DeployAllReportsToSSRS.ps1 -PackageInstallLocation "k:\AosService\PackagesLocalDirectory"


It appears as





















When deploying reports are completed, It looks like






















Thanks for reading !!!

Thursday, April 9, 2020

Duplicate address record entry through Data entity in Dynamics 365 Finance and Operations

Introduction:
In this blog, we will see how to allow system for accepting duplicate addresses of customer, vendor or any other, through doing bit change in Data Entity 

Solution:
For allowing duplicate entries we will create one field in LogisticsPostalAddress. Here field name is as IsCreateFromEntity. Field-IsCreateFromEntity will be used as flag, type of boolean / NoYesId (EDT).

[ExtensionOf(tableStr(LogisticsPostalAddressBaseEntity))]
final class LogisticsPostalAddressBaseEntityCFSJSTable_Extension
{
    public static LogisticsLocationId resolveRemittanceAddressLocationId(LogisticsPostalAddressBaseEntity _postalAddressEntity, DirPartyNumber _partyNumber)
    {
        LogisticsLocationId locationId, locationIdCreateNew;

        locationId = next resolveRemittanceAddressLocationId(_postalAddressEntity, _partyNumber);

        if(_postalAddressEntity.IsCreateFromEntity)
        {
            locationId = locationIdCreateNew;
        }

        return locationId;
    }
}

Aforementioned code would replace the standard locationId variable with new locationIdCreateNew which will be null always. Once new variable locationIdCreateNew is replaced with standard code,  system will generate the new locationId in the LogisticsLocation(Table) and create the same duplicate address along with state, city, country, zipcode and all other respective fields.

Moreover, we will just need to pass YES value to the newly created field ISCreateFromEntity while creating the new address and run the execution. How easy it is!!!

Thanks for reading !!!

Monday, March 30, 2020

List of security roles for current user | D365FO

Introduction:
In this blog, we will see how we can get list of security roles assigned to a current user  

Solution: 
UserInfo         userInfo;
SecurityRole     securityRole;
SecurityUserRole securityUserRole;

while select securityRole
    exists join securityUserRole
        where securityUserRole.SecurityRole == securityRole.RecId 
    exists join userInfo
        where userInfo.id == securityUserRole.User 
        &&    userInfo.id == curUserId()
{
    info(securityRole.name);
}

Thanks for reading !!!

Sunday, March 29, 2020

List of users for a security role | D365FO

Introduction:
In this blog, we will see how we can get list of users who has assigned a specific security role  

Solution: 
UserInfo         userInfo;
SecurityRole     securityRole;
SecurityUserRole securityUserRole;

while select networkAlias from userInfo
        where userInfo.networkAlias
    exists join securityUserRole
        where securityUserRole.User == userInfo.id
    exists join securityRole
        where securityRole.RecId == securityUserRole.SecurityRole
        &&    securityRole.Name == 'Sales manager(NameOfTheSecurityRole)'
{
    info(userInfo.networkAlias);
}

Thanks for reading !!!


Wednesday, March 25, 2020

Table browser extension for Google Chrome | D365

Now table browser becomes much easier for Microsoft Dynamics 365 Finance and Operations. Here you go with Google Chrome Extension - Table browser caller for D365FO. It's very easy to install and use it. After installing the extension to the browser, it appears on the top bar and looks like



While clicking on the extension, You can find the tab named with config where you need to put the URL of the respective environment and save it.



Once config is setup, you need to go to the main tab that is Table Browser Caller as shown in above figure where you would setup mainly: 
  • Search for table name: name of the table
  • Company Id: name of the legal entity 

After that, you need to find the table in the search box and just press the Enter key.



And you will be redirected to the table in the new tab. 



In addition, Table browser has also few other features like

  • Browse all table lists 
  • Browse all data entities  
1. For getting the list of tables you need to click on Table list:


Result as, 


2. For getting the list of data entities you need to click on Data entities


Result as,