Inventory Costing in AX 2009
I wanted to explore some scenarios that illustrate a few important concepts related to inventory costing-- look at differences between physical and financial inventory, and how this affects inventory values. Please reply to the post if you have questions or comments, or if you are interested in additional posts on this topic. This is not intended to be a comprehensive look at AX inventory costing, but just a few concepts that I view as important to understanding the big picture of AX costing logic.
For my test, I created a new item, using a FIFO costing model. The Inventory model group has three settings I want to point out and illustrate:
- Physical negative inventory
- Financial negative inventory
- Include physical value
Note that the test item has physical and financial negative inventory unmarked, and 'include physical value' is marked:
To start, I create a purchase order line for the item and post the packing slip for a quantity of 10 at $1 each. The PO packing slip is considered a 'physical' inventory update. You'll see the inventory transaction and the item's on hand reflect the physical cost amount:
This is an important concept as you'll see the separation of physical and financial inventory throughout AX. Understanding the impact is important when defining your setup and processes. Below is a list of the transactions that result in physical inventory value and those that result in financial inventory value.
Transactions that affect physical value |
Purchase order Packing Slip |
Sales order Packing Slip |
Production order Report as Finished |
Production picking list journal |
Transactions that affect financial value |
Purchase order Invoice |
Sales order Invoice |
Production order End (This will move the RAF and the Picking List transactions into a financial status) |
Inventory Journal (All inventory journals affect financial value only) |
Next, I entered a sales order line for the item, quantity 10, and attempt to post the invoice. Although I have physically received 10 units of this item into stock, my sales invoice posting fails with an error message: "Item consumption for 10.00 cannot be updated because the cost price is known only for 0.00 in stock."
The error is thrown because of the model group setting 'negative financial inventory', which is unmarked for our item, meaning that we don't allow negative Financial inventory. If the sales order was for a quantity of 15, I would receive an error message: "15.00 cannot be picked because only 10.00 is/are available from the inventory"
This error message is driven by the 'Physical negative inventory' checkbox, which does a validation against the current 'total available' on hand inventory for the item. In order to post this invoice, we need to have sufficient financial inventory in stock. To satisfy this requirement, you would have to financially update an outstanding order, or create and post a new order. For our test, I created a separate purchase order for quantity of 10, unit cost $2, and post the Invoice for this purchase order (financially updated). Note that this is a different unit cost, than was used on the previous purchase order($1).
Reviewing the inventory transaction for this new purchase order, you see that a financial cost amount was updated. Additionally, the on-hand for the item now reflects the $10 from the packing slip updated purchase order, as well as the $20 from the invoiced purchase order.
Now that I have sufficient financial inventory, I posted my sales order invoice. There are two important concepts to point out on the sales order inventory transaction after I post the invoice. First, you'll see that the cost of the quantities sold is an average of the two receipts that have been posted: (10@ $1 + 10@ $2) / 20 = $1.50 per unit. Take a look at the previous screenshot and you'll see that in the On Hand form, the 'Cost price' field holds the calculated average cost. Although we defined this item as a FIFO item, the value of the outbound quantities are valued at the current running average for the item. You'll see this approach used for all issue transactions, except for items using a standard cost valuation model.
*Note - Marking may also impact these outcomes.
The second thing is that our model group setting for 'include physical value' has made an impact on the outcome. Since we have it marked for this item, the physically updated purchase order was used in the calculation of the running average. The setting simply tells AX whether or not to use physically updated receipts when calculating the running average for the item. If we had this setting unmarked, only the financially updated receipt would have been used in the calculated value of the issued quantities. We now know that this will have a significant impact on the valuation of outbound quantities at the time of posting.
Since this is a FIFO item, we know that the $15 used to value our sold quantities is incorrect. AX requires that a periodic 'inventory close' be processed in order to align the cost of goods sold with the items' assigned valuation models. After running the close, notice that the sales order transaction now reflects a cost amount $10 with the adjustment of $5. Another thing to point out is that no 'settlement' occurs. Typically, the inventory close process will settle receipts against issues. However, since this sales transaction aligns with a physically updated receipt, no settlement occurs. Once the purchase order is invoiced, the close process will settle the transactions against each other.
Recap:
- AX tracks inventory value in two separate buckets: Physical and Financial
- All issue transactions are valued at the current running average cost price for the item
- You can select whether physically updated receipts are included in the running average calculation
- A periodic inventory close must be run to align the COGS with the item's valuation model
More about the 'include physical value' setting:
This should only be used for certain scenarios. Weighted average models should not use the setting due to the following scenario:
1. Receive 10 @ $100 each (Financial/Invoice posted)
2. Receive 10 @ $200 each (Physical/packing slip post)
3. Issue 15 @ $150 each (Financial/invoice post). $150 each is due to the fact that 'include physical' is marked for the item. Also, this transaction requires that negative financial inventory is allowed for the item.
4. Run inventory close
Results:
10 of the 15 issue quantities are settled against the $100 receipt and the other 5 remain unsettled at the $150 cost price. This leaves us with 5 on hand, valued at $250 each (which is higher than any single receipt cost we have)
Other resources:
https://mbs.microsoft.com/customersource/training/trainingmaterials/student/course50191.htm
http://dynamics.microsoftelearning.com/eLearning/courseDetail.aspx?courseid=94369
http://www.axapta.cn/?/question/32
Inventory Costing in AX 2009的更多相关文章
- How to Debug Enterprise Portal Code in Dynamics AX 2009
转载 To set up debugging for pages1. Log into the server that is running the AOS.2. Open the Microsoft ...
- AX 2009中Set运用
Set运行: 例子: Set m_set = new Set(Types::String); m_set.add("AAA"); m_set.add("BBB" ...
- Microsoft Dynamics AX 2009 White Paper: Close Non-Financial Transfers
http://www.microsoft.com/en-us/download/confirmation.aspx?id=12174
- AX 2009中现有量画面修改
前端时间开发一个东西,需要在现有量画面增加一个字段 但是发现这个display方法写在任何数据源下面都不行,数据取的不对. 因为InventSum这个表只有所有维度都出来时才会有对应关联的invent ...
- Dynamics AX Hostory
现在谈起Dynamics AX,在微软Dynamics系列产品当中,作为最受瞩目和最有前景的Dynamics套装产品线,很多人也许只知道它曾经由于资本市场的上市和并购,前后经历了三个“东家”.对于它长 ...
- [转]Dynamics AX and Generic collections of .Net
转自:http://blogs.msdn.com/b/emeadaxsupport/archive/2009/04/23/dynamics-ax-and-generic-collections-of- ...
- Temporary Tables and the TableType Property [AX 2012]
Temporary Tables and the TableType Property [AX 2012] 1 out of 1 rated this helpful - Rate this topi ...
- Temporary InMemory Tables [AX 2012]
Temporary InMemory Tables [AX 2012] This topic has not yet been rated - Rate this topic Updated: Oct ...
- Table Properties [AX 2012]
Table Properties [AX 2012] 1 out of 2 rated this helpful - Rate this topic Updated: July 20, 2012 Ap ...
随机推荐
- RSA加密(C语言)
/** * \file rsa.h * * \brief The RSA public-key cryptosystem * * Copyright (C) 2006-2010, Brainspark ...
- 算法系列:寻找最大的 K 个数
Copyright © 1900-2016, NORYES, All Rights Reserved. http://www.cnblogs.com/noryes/ 欢迎转载,请保留此版权声明. -- ...
- Android 笔记 day2 拨号器
- 字符串数组初始化0 与memset 0 效率的分析
转自:http://www.xuebuyuan.com/1722207.html 结合http://blog.sina.com.cn/s/blog_59d470310100gov8.html来看. 最 ...
- PPM格式解析
PPM格式其实就是RGB数据加上一个简单的文件头, 文件头部表示了图像的宽度和高度以及最大的RGB值. 文件头+rgb数据: P6\n width height\n 255\n rgbrgb... 其 ...
- cdn
cdn内容分发网络: 1. 内容缓存Web cache技术,反向代理 2. 集群服务与负载均衡技术 LVS(四层) 与 nginx(七层) 3. 全局负载均衡工作原理:基于DNS解析的GSLB实现机制 ...
- git stash和git stash pop
git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug, 先stash, 使返回到自己上一个comm ...
- web Worker使js实现‘多线程’?
大家都知道js是单线程的,在上一段js执行结束之前,后面的js绝对不会执行,那么为什么标题说js实现‘多线程’,虽然说加了引号,可是标题也不能乱写不是,可恶的标题党? 姑且抛开标题不说,先说我们经常会 ...
- grunt 一个目录下所有的js文件压缩 配置收藏
module.exports = function(grunt){ // 项目配置 grunt.initConfig({ pkg: grunt.file.readJSON('package.json' ...
- 浅析mongodb中group分组
这篇文章主要介绍了浅析mongodb中group分组的实现方法及示例,非常的简单实用,有需要的小伙伴可以参考下. group做的聚合有些复杂.先选定分组所依据的键,此后MongoDB就会将集合依据选定 ...