• Skip to main content
  • Skip to primary sidebar
  • Home
  • About
  • Recommended Readings
    • 2022 Book Reading
    • 2023 Recommended Readings
    • Book Reading 2024
    • Book Reading 2025
    • Book Reading 2026
  • Supply Chain Management Guide
  • PKM
  • Microsoft Excel
  • Microsoft Copilot in Office 365
  • Public Wiki Page

Ali Raza Zaidi

A practitioner’s musings on Dynamics 365 Finance and Operations

alirazazaidi

float value conversion in string SSRS expression and decimal points SSRS dynamics ax 2012 R3.

September 29, 2017 by alirazazaidi

 

 

Today I have to record very small tip. During development of on SSRS report for Dynamics Ax 2012 R3, End user wants a row at the report footer for  analysis. he wants some kind of percentage  calculation with ‘%’.  A For this I have to use CStr ssrs expression function  like

 

Ctr(((sum(DataSet!field.Value) / sum(DataSet!field.Value)))*100)+”%”.

 

Now it is string and shows number of decimal as it result from division. For example  5.4356333. But end user wants formatting like 5.43 .

It is string or text value and SSRS textbox formatting is not apply on it.

 

Following SSRS expression works for me.

 

 

 

Left(CStr(5.4356333),instr(CStr(5.4356333),”.”)+2)

 

 

My Updated expression is something like this

 

Left(CStr(IIF(Parameters!ProductionReportBM2DS_ItemName.Value = “ITEM-00000420”,((sum(Fields!Scrap.Value)/sum(Fields!TotalConsumption.Value))*100),((sum(Fields!CutLength.Value)/sum(Fields!TotalConsumption.Value))*100))),instr(CStr(IIF(Parameters!ProductionReportBM2DS_ItemName.Value = “ITEM-00000420″,((sum(Fields!Scrap.Value)/sum(Fields!TotalConsumption.Value))*100),((sum(Fields!CutLength.Value)/sum(Fields!TotalConsumption.Value))*100))),”.”)+2) +”%”

Workflow Approve Name  in Grid Dynamics Ax 2012 R3

September 28, 2017 by alirazazaidi

Small tip, with reference at the end of post. I got small task, User want Last approval Name in grid at the result.

I wrote following code snippet as method in a required table and bind it to grid field.

 

display Name LastApprovalName()

{

WorkflowTrackingStatusTable workflowTrackingStatus;

WorkflowTrackingTable workflowTrackingTable;

WorkflowTrackingCommentTable workflowTrackingCommentTable;

UserInfo userInfo;

RecId _recId;

Name _name;

_recId=5637145391;

select firstFast RecId, User from workflowTrackingTable

order by RecId desc

join workflowTrackingCommentTable

where workflowTrackingCommentTable.WorkflowTrackingTable == workflowTrackingTable.RecId

join UserInfo

where UserInfo.id == WorkflowTrackingTable.User

exists join workflowTrackingStatus

where workflowTrackingTable.WorkflowTrackingStatusTable == workflowTrackingStatus.RecId

&& workflowTrackingStatus.ContextRecId == this.RecId

&& workflowTrackingStatus.ContextTableId == tableNum(MyTablelRequestTable) //PurchTable

&& workflowTrackingTable.TrackingType == WorkflowTrackingType::Approval;

if (workflowTrackingTable.RecId > 0)

{

_name=userInfo.name;

 

}

else

{

_name='';

}

return _name;

}

 

 

 

Original Code snippet is https://community.dynamics.com/ax/b/amazingax1/archive/2016/04/28/microsoft-dynamics-ax-2012-get-workflow-last-approver-name-and-approved-date

Customer Credit limit in Dynamics 365 for Finance and Operations

September 22, 2017 by alirazazaidi

We can set credit limit for customer. Customer can purchase product or services up to certain limit. Even D365 for finance and operations provide us option to generate error message and stop processing of Sale order or just show error message and let the transaction happened.

 

For this you have to enable customer credit limit option from Account Receivable => step up => Account Receivable parameters.

 

 

 

 

 

In Account receivable parameter form, you  can found Credit limit option in Credit Rating  menu

 

 

If you explore Credit limit type you find following options

 

On selecting None, which is default means, credit limit functionality is disabled. Balance means, credit limit check against

Customer current balance, Next option is balance plus amount generated against packing slip and Product Receipt.

Third option is Balance + all include Packing slip, sale order and transaction activities.

 

 

 

Next option is when message exceeding the limit

 

We find one more option is on this page. This option is either apply credit limit on free text Invoice on .

 

Now we can set credit limit on Customer page, For this open required Customer and form detail page you can update credit limit. You can find Credit limit in Credit and collections fast tab

 

 

For more detail explore following link:

https://docs.microsoft.com/en-us/dynamics365/unified-operations/supply-chain/sales-marketing/credit-limits-customers

Dynamics 365 for Finance and Operations Development Cookbook Review.

September 16, 2017 by alirazazaidi

 

 

Book is excellent. It is handy and cover the almost all technical scenarios with very simple and precise examples. It is scenario based book, Instead a lot of story and unnecessary details, It focus to the point. As compare to previous cook books, which were more abstract, this feel book wrote in mind of fresh graduates or new developers in Dynamics Ax / Dynamics 365 for finance and operations.  After reading book, I feel it is like jigsaw puzzle, you can create a full customization by arrange piece by piece if you have this book. It contains everything which I come across in my 5 years’ experience for Dynamics.

 

Followings are chapters and my review.

 

Processing Data:

 

This chapter covers from creating new model, project in visual studio to complex Sql query execution.  Here you can find, creating a new sequence number, rename primary key, use regular table as temporary table. How to create query object at run time. And how to execute SQL Query directly in X++ code.

My favorite recipe here is ” How to use regular table as temporary table”.

 

Working with Forms

This chapter gives us very basics of Dynamics 365 for finance and operations forms. Very precise examples for day to day  scenarios.  These recipes contains how to make dialog, tips on catching dialog events, building dynamic form, creating a model form, storing the last values in form. Tree view control, Adding a view detail link. Also good detail of Dynamics form Patterns in Dynamics 365 for finance and operations.

 

My favorite recipe here is ” Storing Last values in form “.

 

 

Working with Data in Forms

This chapter covers the recipes for data manipulations in forms.  It covers sequence number handling, creating custom filter controls. Building a selected  or available list. Processing multiple record, Coloring the records, adding images to different record.

My favorite recipe is ” coloring the records “;

 

 

Building Lookups

 

This chapter covers the lookups based on different scenario, I found all are practical example for building Lookups

 

Processing Business Tasks.

This chapter is amazing. Containing everything you need to customize. You will find here, segment entry control, creating and posting general entry posting with X++ code, processing of Project ledger,  creating and posting of ledger voucher, creating Sales order, purchase order and electronic payment format.

 

 

Data Management

This chapter provide recipes of data migration for example,  data entities, data entities with multiple sources, Data packages, import export and trouble shooting.

 

 

Integration with Microsoft Office.

 

This chapter covers the integration with Excel and word using add-in, workbook designer, custom ax lookup in excel. And creating word document with repeated elements.

 

 

Integration with Power BI.

This chapter is also good, recipe for Dynamics 365 for finance and operations starts with Configuring Power BI, consuming data in Excel, Integration with excel, developing interactive Dashboards, embedding Power BI visuals.

 

Integration with services.

 

Couple of years back, I was integration expert, I did a lot of integration. This chapter is favorite for me. I was never be good designer, So services attract me more. Just write, consume, map fields schedule and run. I still do integrations of dynamics with. Even with devices like thumb recognition and attendance machines available locally with HR and Payroll.

 

This chapter contains the recipes

Custom service development, authentication with native client also with Azure. Consuming services in Json and soap. You can also find about Odata services. And also consuming external web services in Dynamics 365 for finance and operations.

 

 

Improving development efficiency and performance.

 

This chapter name seems not right, noting about performance here. It feels what left is placed here, Still recipes are valid and from practical day to day development / customization scenarios. Like extensions, display methods, calculate code execution time, enhance insert, delete and update time. Writing efficient SQL Queries. Event handler and delegate handlers.

 

 

I recommend you to read this book.

D365 For Operation – 15 UI Tips and Tricks – A video from YouTube

September 9, 2017 by alirazazaidi

 

 

I found very interesting video regarding UI tips for Dynamics 365 for finance and operations. Its worth to share so it is here

 

Select on InventSum vs InventOnHand Class Dynamics Ax 2012 R3.

August 22, 2017 by alirazazaidi

Today I face the very strange behavior of X++ code.

We develop customization. We generate transfer and issuance through X++.

Logic was very simple,If stock is available then transfer  / Issuance or Adjustment journal create otherwise generate error message, We took this decision  based of query on Inventsum. It works fine in most of cases but In one case when stock is zero it fails. We create Movement Journal to generate stock in that Item variant.  The select query always return Zero stock in posted quantity. Even I get the recid in debug mode and placed in table explorer, Quantity is available in table explore.

This case occurs when got Zero stock in Inventsum table and we try to increase stock by movement journal, other wise select on InventSum works fine.

 

The query will be very similar

 

Select * from InventSum where Inventsum.ItemId == line.ItemId && inventSum.invetdimId == line.fromInventiDimId;

 

This will not work. Even Db synch, Inc Cil, Cache clear done, even Restart the Test server AOS.

 

I have to switch code from select query to Class InventOnhand. Very similar to following.

 

InventOnHand inventOnhand

InventDim       InventDim;

InventDimParm inventDimParm;

 

 

inventDimParm.initFormInventDim(_Line.FromInventDimId);

inventOnHand = InventOnhand::newParameters(_line.Itemid,_line.FromInventDimId,inventDimParm);

 

If (inventOnHand.availPhysical() > _line.RequestedQty)

{

Info( ” Quantity Avalible “);

}

Else

{

Info (” Not available “);

}

 

Its works perfectly fine. I think  InventonHand class is better the do direct query on Inventsum table.

 

Custom financial Dimension shows in lookup D365 for Finance and operations

August 19, 2017 by alirazazaidi

I one of last post, I added the custom financial dimension in D365 for finance and operations.
You can find this post here
https://www.tech.alirazazaidi.com/custom-financial-dimension-in-dynamics-365-for-finance-and-operations-ax-7/

In next post I load financial dimension in custom lookup.

Custom lookup for Financial Dimension D365 for Finance and Operations (Dynamics Ax 7)

But above link shows only out of the box financial dimensions. But what about custom financial dimension,

I tested the following code snippet works custom dimension. It load custom dimension mentioned in

Custom Financial Dimension in Dynamics 365 for Finance and Operations (AX 7)


[FormControlEventHandler(formControlStr(FrmTestDetail, FormStringControl1), FormControlEventType::Lookup)]
public static void FormStringControl1_OnLookup(FormControl sender, FormControlEventArgs e)
{

SysTableLookup sysTableLookup;
Query query;
QueryBuildDataSource qbdsDimensionFinancialTag;
QueryBuildRange qbrFinancialTagCategory;
String20 LC;
RecId _recid;
DimensionAttribute _attribute;
Name _name=’jaggah_tax’;

;
// super();

//#define.MyCustomFinancialDimension(‘LC’)
// select * from attribute where attribute.Name ==_name;
// recid = attribute.financialTagCategory();

query = new Query();
qbdsDimensionFinancialTag = query.addDataSource(tableNum(DimensionFinancialTag));
qbrFinancialTagCategory = qbdsDimensionFinancialTag.addRange(fieldNum(DimensionFinancialTag, FinancialTagCategory));
qbrFinancialTagCategory.value(strFmt(‘%1’, DimensionAttribute::findByName(_name, false).financialTagCategory()));

sysTableLookup = sysTableLookup::newParameters(tableNum(DimensionFinancialTag), sender,true);
sysTableLookup.addLookupfield(fieldNum(DimensionFinancialTag, Value), true);
sysTableLookup.addLookupfield(fieldNum(DimensionFinancialTag, Description));
sysTableLookup.addSelectionField(fieldNum(DimensionFinancialTag, FinancialTagCategory));
sysTableLookup.parmQuery(query);

sysTableLookup.performFormLookup();

FormControlCancelableSuperEventArgs ce = e as FormControlCancelableSuperEventArgs;
//cancel super() to prevent error.
ce.CancelSuperCall();

}

Output is here

Dynamics 365 For Finance And Operations On Perm Demo Video

August 17, 2017 by alirazazaidi

I just completed first video. 9 minute video just explore the navigation of D365 for finance and operations.

Dynamics 365 For Finance And Operations On Perm Demo from alirazazaidi on Vimeo.

Custom lookup for Financial Dimension D365 for Finance and Operations (Dynamics Ax 7)

August 6, 2017 by alirazazaidi

Suppose we have to display all values in “Cost Center” financial dimension in custom lookup. For this post I used unbound field.

So first step is we need we need a text box. So drop a control of type “String” ( “Traditionally it is StringEdit Control”).

Right click on “OnLookup” event and click on “copy event handler method”.

Now add a new class in project, update its same as required. For this post I renamed it as FromControlEventHandler

Between opening closing brackets of class, paste the event code, I copied code in previous step.

[FormControlEventHandler(formControlStr(FrmTestDetail, FormStringControl1), FormControlEventType::Lookup)]
public static void FormStringControl1_OnLookup(FormControl sender, FormControlEventArgs e)
{

}

Later update event method with following code snippet, If you are seasonal Ax consultant or developer you will find this very similar to Ax 2012.

/// [FormControlEventHandler(formControlStr(FrmTestDetail, FormStringControl1), FormControlEventType::Lookup)]
public static void FormStringControl1_OnLookup(FormControl sender, FormControlEventArgs e)
{
Query query = new Query();
QueryBuildDataSource queryBuildDataSource;
QueryBuildRange qbrForAccount;
SysTableLookup sysTableLookup;
// DimType dimType;
DimensionAttribute dimensionAttribute;
// SysTableLookup::newParameters(tableNum(CustTable),sender);
sysTableLookup = SysTableLookup::newParameters(tableNum(OMOperatingUnit),sender,true);
sysTableLookup.parmUseLookupValue(false);
sysTableLookup.addLookupfield(fieldNum(OMOperatingUnit, OMOperatingUnitNumber));
sysTableLookup.addLookupfield(fieldNum(OMOperatingUnit, Name));
queryBuildDataSource = query.addDataSource(tableNum(OMOperatingUnit));
queryBuildDataSource.addSortField(fieldnum(OMOperatingUnit,OMOperatingUnitNumber));
queryBuildDataSource.addRange(fieldNum(OMOperatingUnit, OMOperatingUnitType)).value(int2str(any2int(OMOperatingUnitType::OMCostCenter)));
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();

FormControlCancelableSuperEventArgs ce = e as FormControlCancelableSuperEventArgs;
//cancel super() to prevent error.
ce.CancelSuperCall();

}

There is no need to add different classes for each event. You can copy and write events of different controls in single class.
There is another option on form control event, “Find Event Handler”. On click on it, will leads to event handler reference, I we wrote it. For current post I clicked on “Find Event handler”

results in as

Now let see what will our output. So I pressed Ctrl+F5 to form run without debugging.
Cheers, After pressing Edit Button my unbound custom lookup with Specific financial dimension works fine.

Getting All Active financial dimensions in D365 for Finance and operations (AX 7)

August 6, 2017 by alirazazaidi

Testing the old code in Dynamics 365 for Finance and operations. It works fine. If you try to get all active financial dimension in D365 for Finance and operations following code snippet works perfectly fine.

class TestReadFinanicalDimension
{
///

/// Runs the class with the specified arguments.
///

/// The specified arguments. public static void main(Args _args)
{
DimensionAttributeSetItem dimAttrItemSet;
DimensionAttribute dimAttrList;
DimensionEnumeration dimensionSetId;

int dimAttrCount;

dimensionSetId = DimensionCache::getDimensionAttributeSetForLedger();

select count(RecId) from dimAttr
where dimAttr.Type != DimensionAttributeType::MainAccount
join RecId from dimAttrSetItem
where dimAttrSetItem.DimensionAttribute == dimAttr.RecId &&
dimAttrSetItem.DimensionAttributeSet == dimensionSetId;

info(strFmt(“Total active financial dimensions for current legal entity: %1”, dimAttr.RecId));

while select * from dimAttr
order by Name
where dimAttr.Type != DimensionAttributeType::MainAccount
join RecId from dimAttrSetItem
where dimAttrSetItem.DimensionAttribute == dimAttr.RecId &&
dimAttrSetItem.DimensionAttributeSet == dimensionSetId
{
info(dimAttr.Name);
}

}

}

Output is


Reference: https://sumitsaxfactor.wordpress.com/2011/12/14/find-active-dimensions-for-a-legal-entity-ax2012/

« Previous Page
Next Page »

Primary Sidebar

About

I am Dynamics AX/365 Finance and Operations consultant with years of implementation experience. I has helped several businesses implement and succeed with Dynamics AX/365 Finance and Operations. The goal of this website is to share insights, tips, and tricks to help end users and IT professionals.

Legal

Content published on this website are opinions, insights, tips, and tricks we have gained from years of Dynamics consulting and may not represent the opinions or views of any current or past employer. Any changes to an ERP system should be thoroughly tested before implementation.

Categories

  • Accounts Payable (2)
  • Advance Warehouse (2)
  • AI (3)
  • Asset Management (3)
  • Azure Functions (1)
  • Books (6)
  • Certification Guide (3)
  • ChatGPT (3)
  • Claude (1)
  • Customization Tips for D365 for Finance and Operations (64)
  • D365OF (60)
  • Data Management (1)
  • database restore (1)
  • Dynamics 365 (59)
  • Dynamics 365 for finance and operations (139)
  • Dynamics 365 for Operations (175)
  • Dynamics AX (AX 7) (134)
  • Dynamics AX 2012 (274)
  • Dynamics Ax 2012 Forms (13)
  • Dynamics Ax 2012 functional side (16)
  • Dynamics Ax 2012 Reporting SSRS Reports. (31)
  • Dynamics Ax 2012 Technical Side (52)
  • Dynamics Ax 7 (65)
  • Exam MB-330: Microsoft Dynamics 365 Supply Chain Management (7)
  • Excel Addin (1)
  • Favorites (12)
  • Financial Modules (6)
  • Functional (8)
  • General Journal (1)
  • Implementations (1)
  • Ledger (1)
  • Lifecycle Services (1)
  • Logseq (4)
  • Management Reporter (1)
  • Microsoft Excel (4)
  • MS Dynamics Ax 7 (64)
  • MVP summit (1)
  • MVP summit 2016 (1)
  • New Dynamics Ax (19)
  • Non Defined (9)
  • Note taking Apps (2)
  • Obsidian (4)
  • Personal Knowledge Management (3)
  • PKM (16)
  • Power Platform (6)
  • Procurement (5)
  • procurement and sourcing (6)
  • Product Information Management (4)
  • Product Management (6)
  • Production Control D365 for Finance and Operations (10)
  • Sale Order Process (10)
  • Sale Order Processing (10)
  • Sales and Distribution (5)
  • Soft Skill (1)
  • Supply Chain Management D365 F&O (5)
  • Tips and tricks (278)
  • Uncategorized (165)
  • Upgrade (1)
  • Web Cast (7)
  • White papers (4)
  • X++ (10)

Wiki

  • SCM

Copyright © 2026 · Magazine Pro On Genesis Framework · WordPress · Log in