Sunday, April 1, 2018

We return to our discussion of Microsoft Dynamics AX for finance and operations.
AX has a notion of Product Configurator which centralizes the creation of products and determines how the product variants are used.
Allows creation of various category hierarchies like procurement, sales and retail. It allows us to specify vendor evaluation criteria based on procurement categories and to specify approved and preferred vendors for procurement categories.
Purchase and sale agreements can be authored. Microsoft Dynamics AX supports both value-based and quantity-based sales agreements.
The terms and conditions of a sales agreement such as the prices and discounts can be applied when creating an order using the order details forms.
Sales agreements can have a validity period defined and can be put on hold. They are also searchable.
Categories and agreements are browsable. We can control the navigation pane by hiding and re-organizing a module list  and adding a query to a favorite. We can also document our processes if we would like to record tasks.
Sales and purchase orders can have packing slip corrections made.
Intercompany orders, relations and policies are set up in a form that can be specified once and shared.
The Microsoft Dynamics AX supports standard workflows available out of box for users to setup. Workflows are processes that meet business requirements. The AX workflows can be specified using controls like conditional decisions, manual and parallel activities and even sub-workflows. There is ability to escalate workflows.
Purchase requisitions can be entered with approved vendors. There is history of purchase requisitions approvals and it can be viewed. Permissions can be specified to enable a requester to request on behalf of somebody else.
Purchasing policy groups gives us the ability to create multiple purchasing policies.

#codingexercise
Given a triangular structure of members, find the minimum sum path from top to bottom:
int GetMinSum(List<List<int>> A)
{
int n = A.Count();
var sums = new int[A[n].Count()];
for (int i = 0; i < sums.Count; i++)
   sums[i] = A[n][i];
int level = n-1;
GetMinSumRecursive(A, level, ref sums);
return sums[0];
}

void GetMinSumRecursive(List<List<int>> A, int level, ref int[] sums)
{
if (level < 1) {return;}
for (int j = 0; j < A[level-1].Count(); j++)
{
    sums[j] = A[level-1,j] + sums.toList().GetRange(A[level].Count()).min();
    //  + min(sums[j], sums[j+1]);  instead of the min above
   // if the path has to be left or right only
}
GetMinSumRecursive(A, level-1, ref sums);
}

No comments:

Post a Comment