When an ISSUE, RETURN, or TRANSFER of a Rotating Asset with Children is done in Maximo, the Children are moved as well and an AssetTrans is generated. However, no corresponding MatUseTrans or MatRecTrans is generated and the AssetTrans generated for the Children carries the MatUseTransID or MatRecTransID of the transaction for the ParentAsset. Additionally, the InvBalances.CurBal is not updated for the Items on the Children and, in the case of an ISSUE or RETURN, the WorkOrder.ActMatCost is not updated with the cost of the moved Children.
This results in an out-of-balance condition for the Inventory Control Account in the General Ledger because no transaction is being sent to the GL for the movement of the Children Items.
This also creates an internal out-of-balance condition between the Current Balance for the Storeroom and Bin vs. the number of Assets that show they are at that Storeroom Location and Bin.
Following is one possible solution to address this issue:
1) Add a new attribute (e.g. - AssetSubAssembly) to the InvBalances object to indicate that the quantity shown in the CurBal is installed on another Asset in Inventory.
2) When a child/descendant Asset is being moved into or out of a Storeroom, create a MatUseTrans or MatRecTrans to update the corresponding InvBalances record where the new Attribute is set to 1.
3) Add a ParentTransID attribute to the MatRecTrans and MatUseTrans objects to capture the MatRecTransID or MatUseTransID of the MatRecTrans or MatUseTrans record entered by the user which triggered the movement of the child/descendant Assets.
4) Add a ParentTransID attribute to the AssetTrans object to capture the AssetTransID of the AssetTrans record for the movement of the parent/ancestor Asset. Currently, the AssetTrans for the child/descendant Assets shows the MatRecTransID or MatUseTransID of the MatRecTrans or MatUseTrans for the parent/ancestor but if separate MatRecTrans or MatUseTrans are created for them, then the AssetTrans should reference those IDs. The AssetTrans.ParentTransID should capture the AssetTransID of the AssetTrans for the parent/ancestor to retain the relationship. (Alternatively, it could be used to store the ParentTransID from the related MatRecTrans or MatUseTrans.)
5) One (or more) System Properties should be created to control whether the InvBalances records with the new attribute set to 1 should be displayed in the Inventory application and whether the CurBal on those records should be included in the Current and/or Available Balance for the Storeroom.
The above solution would satisfy the Accuracy Requirement for the Inventory Quantity but it may fail to address a couple of issues.
One of those issues is how to distinguish on the Parent Item how many of the items on-hand include just the Parent Item vs. the Parent Item with its complete Item Assembly Structure.
The other issue has to do with how these items are purchased. If the Parent and Child Items are always purchased individually and then assembled, the above solution should be fine. But if these items are always (or even sometimes) purchased already assembled, then most likely the PO only has a PO Line for the Parent Item and not for the children. If the Item has an IAS, then presumably the child Assets are created at 0 cost which could potentially distort the Average Cost of the child Items unless a different Cost Type is used for the Items.
The Product Management team should discuss this issue with other clients using Maximo as their enterprise Supply Chain Management system before finalizing a solution.