Costing Level
Vienna Advantage contains the following Costing Levels and based on Costing level setting, system will calculate the costing:
Org + Batch
When user selects this level on Product Category/Accounting Schema then system create record on "Product Costs" in transaction organization. Also attribute set instance id will set as per the transaction. If record is already present, system will update the same.
Lot/Batch
When there is 'Lot/Batch' costing level attached with Product Category/Accounting Schema and attribute is bind on the product. If transaction is completed with any of the attribute set instance then system creates ''Product Costs'' record in * organization and set attribute set instance id as per transaction. If record is already present, system will update the same.
Client/Tenant
If Product Category/Accounting Schema has costing value 'Tenant/Client' then system creates the "Product Costs" record in transaction tenant with * organization. If record is already present, system will update the same.
Warehouse + Batch
When user selects this level on Product Category/Accounting Schema then system creates "Product Costs" with combination of transaction warehouse and attribute instance of product on the transaction window. System will create Product costs record in Transaction organization. If record is already present, system will update the same.
Organization
When Product Category/Accounting Schema has costing value 'Organization' then system creates the "Product Costs" record in transaction Organization. If record is already present, system will update the same.
Warehouse
If Product Category/Accounting Schema has costing value 'Warehouse' then system creates the "Product Costs" for particular warehouse, in which transaction is completed. System will create Product costs record in Transaction organization. If record is already present, system will update the same.
Costing Elements
In Vienna System there are 9 basic predefined costing elements and 10th costing element can be created by user as per requirement.
Last PO
Average PO
Last Invoice
Average Invoice
LIFO
FIFO
Standard Costing
Weighted Average Invoice
Weighted Average PO
Cost Combination
Setting
If user wants to calculate the costing on document completion. User needs to set “Cost Immediately” and "Cost Mandatory on Completion" Checkbox True on “Tenant” window.
When 'Cost Mandatory on Completion' checkbox is true then system will not complete the transaction until system doesn't calculate the cost.
User can define costing method and costing level either on “Product category” or on “Accounting Schema” Window. System always gives preference to Product Category. If costing method and costing level is not defined on product category then only system will check “Accounting Schema”.
For few products those do not deliver as per the order qty like Petrol, Water etc. We have taken a checkbox on Product window with name “Cost Adjustment of Normal Loss”.
For Example: Product Name Crude Oil - purchase order created for 100LT. However, in transit 2LT got evaporate. In this case Customer only got 98 LT (Material Receipt will be created for 98LT), However he need to pay for 100LT. When above mentioned checkbox is true (We have distribute the cost of 100LT into 98LT).
There is a 'Treat as Discount' checkbox on Document type window, which is only visible when DocBaseType= APC. This checkbox helps the user to consider AP Credit Memo Invoice as discount invoice while calculating product costing. Also the system will not allow to create return to vendor invoice against APC invoice where we mark Treat as Discount as True on selected Document type .
For Example: Product has current cost = 30, Current quantity = 50, Accumulated amount = 1500 & Accumulated quantity = 50
User make AP Credit Memo with quantity = 40 & price = 15 then system will directly subtracts 600 from the accumulated amount and it automatically affects the current cost of the product.
current cost = 18, Current quantity = 50, Accumulated amount = 900 & Accumulated quantity = 50
Logic for costing elements
Accumulated Amount:
The total value which is invested to buy the items up to till date. This amount will not reduce (Only reduce at the time of Material Return or Reverse)
Accumulated Qty:
The total quantity of product which bought till date. This qty will not reduce (Only reduce at the time of Material Return or Reverse)
Current Cost:
Current Cost is calculated for one unit of product as per base UOM defined on the product header. This amount will not reduce (Only reduce when material goes out from the warehouse or reverse transaction.). This cost is used for further calculations.
Current Qty:
Current Quantity is defined as available quantity of product. It cannot be negative.
Last PO
In this case, system will pick up the last unit price of the product which came on the Purchase Order and that automatically becomes the cost of the Product. When Material Receipt created against Purchase order than only last PO will be calculated.
Last Invoice
In this case, system will pick up the last unit price of the product which came on the Invoice (Vendor) and that automatically becomes the cost of the Product. When Invoice (Vendor) created against Material Receipt than only last Invoice will be calculated.
Standard Costing
System only calculates once if any product contains the zero cost than unit price of first Invoice /Physical Inventory/ Independent Material Receipt becomes the cost of Standard Costing and thereafter it will never change.
Average PO
During Completion of Material Receipt which is created with reference of Purchase Order, system needs to calculate the following and same can be seen on “Product Costs” window:
Accumulated Amount
Accumulated Qty
Current Qty
Current Cost Price
Average PO(Current Cost Price) = Accumulated Amount/Accumulated Qty
Average Invoice
During Completion of Invoice (Vendor) which is created with reference of Material Receipt, system needs to calculate the following:
Accumulated Amount
Accumulated Qty
Current Qty
Current Cost Price
LIFO
A product cost is the actual value of any receipt of the item, selected by the LIFO rule.
At the time of valuation, it is always assumed that the sale made out of those stock which purchased last.
FIFO
A product cost is the actual value of any receipt of the item, selected by the FIFO rule.
At the time of valuation, it is always assumed that the sale made out of those stock which purchased first.
Weighted Average Cost (Invoice)
System will calculate WAC for those invoices, which is created with reference to Material Receipt.
Weighted average uses the formula: Total invoice cost of items in inventory available for sale divided by total number of units available for sale.
Formula: [(Current Qty * Current Cost Price) + (MR qty * Inv Price)] / (Current Qty + MR Qty)
Weighted Average PO
System will calculate WAP for those Material Receipts, which is created with reference to Purchase Order.
Weighted average PO uses the same formula as used for WAC.
Cost Combination
It is combination of cost element and Landed Costs i.e. Freight charges, Duty paid on receipts etc. Landed costs that are distributed against the Material Receipts from vendor invoice. Below is explained how to create cost combination.
Create Cost element for Freight
Go to “Cost Element” window.
Add New record, enter the name (Freight) and select “Material” as “Cost
Keep “Costing Method” field blank.
Create Cost element for Cost Combination
Go to “Cost Element” window.
Add New record, enter the name (Average Invoice + Freight) and select “Cost Combination” as “Cost Element Type”
Select “Cost Combination” as “Costing Method”
Go to “Element Line” Tab
Add New record and select “Average Invoice” as “Cost Element”
Again Add New record select “Freight” as “Cost Element”
Note: Element Line tab do not save multiple record of “Material” type Costing Element.
Formula: Current Cost Price = (Current Cost Price of Weighted Average PO) +
((Freight Current Cost from record 2 * Freight Current Qty from record 2) / Current Qty of Weighted Average PO)
Note
If Currency on accounting schema is different than transaction currency. Costing will not calculate if conversion rate not found.
On tenant window if "Cost Immediately" check box is true. System calculate costing for one element that is bind with Product Category/Accounting Schema rest will be calculated once “Costing Calculation Process” run through scheduler.
On tenant window if "Cost Immediately" check box is true/false. User can’t change this checkbox setting. If costing for any transaction is not completed
In case of independent Material Receipt or Physical inventory first time, if it’s first transaction of respective product. System will check the transaction org. and look for a “Purchase Price List” created in same org. If product price found than use this price for costing else, it will check for a “Purchase Price List” at (*) org. if product price found than use this for costing else system will not calculate the product cost.
Product has two “Purchase Price List” in system. Physical inventory done first time. System will pick the price from pricelist that have least ID.
If Product price is not defined, systems don’t calculate costing.
Enhancement 1.1
In this enhancement, Vienna changes the calculation methods for FIFO and LIFO.
Introduces new child tab of Cost Queue tab.
Introduces new field on Cost Queue tab.
Change 1: Added child tab of cost queue tab on product costs window.
Added new tab with name of 'Cost Queue Transaction'.
Below is the screenshot for respective tab:
When inventory comes in the warehouse, quantity will be in positive.
When inventory goes out from the warehouse, quantity will be in negative.
When there is transaction related to sales side, then system will mark IsSoTrx checkbox true and if there is a return transaction then system will make IsReturnTrx checkbox true.
When there is a transaction from Internal Use Inventory then system will mark 'IsInternalUse' checkbox true.
Change 2: Product Costs/ Cost Queue tab
Added 'Actual Quantity' field on Cost Queue tab (Description : Actual Quantity of product in respective Transaction.)
Below are the new calculation for the respective windows:
Post Current Cost Price remains same for every window – it will be picked from Product costs.
Current cost price should be zero for independent invoice.
Existing flow: System calculates and update the current cost of product on product costs by dividing sum of all Cost Queue (LIFO/FIFO) lines with Sum of all quantity of Cost queue lines
Current cost of Product= Sum of Current Cost of all the cost queue lines/Sum of Current Quantity of all the cost queue lines
New Flow: System should set current cost on Product Costs tab as per the costing method FIFO/LIFO, Where Current Quantity is not zero on 'Cost Queue' tab.
As below table shows, three GRNs made and system creates three lines on cost queue tab
Sr. No. | Current Qty | Current Cost | Actual Qty |
1 | 5 | 5.5 | 5 |
2 | 5 | 6 | 5 |
3 | 5 | 7 | 5 |
For Physical Inventory
If user do the Physical Inventory of 60 quantity for the same product. In this case, system updates the quantity as per FIFO/LIFO and creates the child record on cost queue transaction tab.
Case 1: If the quantity of the product reduces then below are the calculations:
For FIFO: When user reduces the quantity of the product and update it with a quantity of 60 then system reduces the 50 quantity from the 2nd line and 10 quantity from the 3rd line.
System creates new child record against line of 90 quantity and line of 80 quantity
In this case, system will update 15 as a current cost on product cost tab
For LIFO: When user reduces the quantity of the product and update it with a quantity of 60 then system reduces the 50 quantity from the 2nd last line and 10 from the 3rd last line.
System creates new child record against line of 90 quantity and line of 100 quantity.
In this case, system will update 10 as a current cost on product cost tab
Cost Queue:
Sr. No. | Product | Cost Element | Current Qty | Current Cost | Actual Qty |
1 | Product A | FIFO | 0 | 0 | 100 |
2 | Product A | FIFO | 0 | 0 | 90 |
3 | Product A | FIFO | 70 | 15 | 80 |
4 | Product A | LIFO | 70 | 10 | 100 |
5 | Product A | LIFO | 0 | 0 | 90 |
6 | Product A | LIFO | 0 | 0 | 80 |
Cost Queue Transaction:
For FIFO: Against 2nd line of 90 quantity
Sr. No. | Phys Inv | Product | Movement Qty |
1 | 9001 | Product A | -50 |
For FIFO: Against 3rd line of 80 quantity
Sr. No. | Phys Inv | Product | Movement Qty |
1 | 9001 | Product A | -10 |
For LIFO: Against 2nd last line of 90 quantity
Sr. No. | Phys Inv | Product | Movement Qty |
1 | 9001 | Product A | -30 |
For LIFO: Against 3rd last line of 100 quantity
Sr. No. | Phys Inv | Product | Movement Qty |
1 | 9001 | Product A | -30 |
Case 2: If the quantity of the product increases then below are the calculations:
For FIFO: When user increases the quantity of the product and update it with a quantity of 100 then system increases the 10 quantity in the 3rd line and 90 quantity in the 2nd line. In this case, system checks the difference between current quantity and actual quantity and update the current quantity accordingly.
In this case, system will update 12 as a current cost on product cost tab
For LIFO: When user increases the quantity of the product and update it with a quantity of 100 then system increases the 30 quantity in third last line and 70 quantity 2nd last line. In this case, system checks the difference between current quantity and actual quantity and update the current quantity accordingly.
In this case, system will update 12 as a current cost on product cost tab
Cost Queue:
Sr. No. | Product | Cost Element | Current Qty | Current Cost | Actual Qty |
1 | Product A | FIFO | 0 | 0 | 100 |
2 | Product A | FIFO | 90 | 12 | 90 |
3 | Product A | FIFO | 80 | 15 | 80 |
4 | Product A | LIFO | 100 | 10 | 100 |
5 | Product A | LIFO | 70 | 12 | 90 |
6 | Product A | LIFO | 0 | 0 | 80 |
Cost Queue Transaction:
For FIFO: Against 3rd line of 80 quantity
Sr. No. | Phys Inv | Product | Movement Qty |
1 | 9002 | Product A | 10 |
For FIFO: Against 2nd line of 90 quantity
Sr. No. | Phys Inv | Product | Movement Qty |
1 | 9002 | Product A | 90 |
For LIFO: Against 3rd last line of 100 quantity
Sr. No. | Phys Inv | Product | Movement Qty |
1 | 9002 | Product A | 30 |
For LIFO: Against 2nd last line of 90 quantity
Sr. No. | Phys Inv | Product | Movement Qty |
1 | 9002 | Product A | 70 |
or Inventory Move
If user move the product of 80 quantity for the same product. In this case system updates the quantity as per FIFO/LIFO and creates the child record on cost queue transaction tab.
Case 1: If the quantity of the product moves out from the warehouse, then below are the calculations:
For FIFO: When user reduces the 80 quantity of the product from the warehouse then system reduces the 80 quantity from the 2nd line
System creates new child record against line of 90 quantity.
In this case, system will update 12 as a current cost on product cost tab
For LIFO: When user reduces the 80 quantity of the product from the warehouse then system reduces the 70 quantity from the second last line and 10 quantity from 3rd last line.
System creates new child record against line of 90 quantity.
In this case, system will update 12 as a current cost on product cost tab
Cost Queue:
Sr. No. | Product | Cost Element | Current Qty | Current Cost | Actual Qty |
1 | Product A | FIFO | 0 | 0 | 100 |
2 | Product A | FIFO | 10 | 12 | 90 |
3 | Product A | FIFO | 80 | 15 | 80 |
4 | Product A | LIFO | 90 | 10 | 100 |
5 | Product A | LIFO | 0 | 12 | 90 |
6 | Product A | LIFO | 0 | 0 | 80 |
Cost Queue Transaction:
For FIFO: Against 2nd line of 90 quantity
Sr. No. | Move Line | Product | Movement Qty |
1 | 5001 | Product A | 80 |
For LIFO: Against 2nd last line of 90 quantity
Sr. No. | Move Line | Product | Movement Qty |
1 | 5001 | Product A | 70 |
For LIFO: Against 3rd last line of 100 quantity
Sr. No. | Move Line | Product | Movement Qty |
1 | 5001 | Product A | 10 |
Case 2: If the quantity of the product moves in the warehouse, then below are the calculations:
For FIFO: When user increases the 130 quantity of the product in the warehouse then system increases the 80 quantity in the 2nd line and 50 quantity in the 1st line. Because system checks the difference between current quantity and actual quantity and update the lines accordingly.
System creates new child record against line of 100 quantity and line of 90 quantity.
In this case, system will update 10 as a current cost on product cost tab
For LIFO: When user increases the 130 quantity of the product in the warehouse then system increases the 10 quantity in 3rd last line, 90 quantity in the 2nd last line and 30 quantity in the last line
System creates new child record against all the lines.
In this case, system will update 15 as a current cost on product cost tab
Cost Queue:
Sr. No. | Product | Cost Element | Current Qty | Current Cost | Actual Qty |
1 | Product A | FIFO | 50 | 10 | 100 |
2 | Product A | FIFO | 90 | 12 | 90 |
3 | Product A | FIFO | 80 | 15 | 80 |
4 | Product A | LIFO | 100 | 10 | 100 |
5 | Product A | LIFO | 90 | 12 | 90 |
6 | Product A | LIFO | 30 | 15 | 80 |
Cost Queue Transaction:
For FIFO: Against 2nd line of 90 quantity
Sr. No. | Move Line | Product | Movement Qty |
1 | 5002 | Product A | 80 |
For FIFO: Against 1st line of 100 quantity
Sr. No. | Move Line | Product | Movement Qty |
1 | 5002 | Product A | 50 |
For LIFO: Against 3rd last line of 100 quantity
Sr. No. | Move Line | Product | Movement Qty |
1 | 5002 | Product A | 10 |
For LIFO: Against 2nd last line of 90 quantity
Sr. No. | Move Line | Product | Movement Qty |
1 | 5002 | Product A | 90 |
For LIFO: Against last line of 80 quantity
Sr. No. | Move Line | Product | Movement Qty |
1 | 5002 | Product A | 30 |
For Internal Use Inventory
If the user use 50 quantity of the same product. In this case system updates the quantity as per FIFO/LIFO and creates the child record on cost queue transaction tab.
While updating the record of internal use inventory on cost queue transaction tab, system should mark Internal Use checkbox true.
For FIFO: When user reduces the 50 quantity of the product from the warehouse then system reduces the 50 quantity from the 1st line.
System creates new child record against line of 100 quantity.
In this case, system will update 10 as a current cost on product cost tab
For LIFO: When user reduces the 50 quantity of the product from the warehouse then system reduces the 30 quantity from the last line and 20 quantity from the second last line.
System creates new child record against line of 80 Quantity and line of 90 quantity.
In this case, system will update 12 as a current cost on product cost tab
Cost Queue:
Sr. No. | Product | Cost Element | Current Qty | Current Cost | Actual Qty |
1 | Product A | FIFO | 0 | 10 | 100 |
2 | Product A | FIFO | 90 | 12 | 90 |
3 | Product A | FIFO | 80 | 15 | 80 |
4 | Product A | LIFO | 100 | 10 | 100 |
5 | Product A | LIFO | 70 | 12 | 90 |
6 | Product A | LIFO | 0 | 15 | 80 |
Cost Queue Transaction:
For FIFO: Against 1st line of 100 quantity
Sr. No. | Phys Inv Line | Internal Use | Product | Movement Qty |
1 | 1901 | True | Product A | 50 |
For LIFO: Against 3rd last line of 80 quantity
Sr. No. | Phys Inv Line | Internal Use | Product | Movement Qty |
1 | 1901 | True | Product A | 30 |
For LIFO: Against 2nd last line of 90 quantity
Sr. No. | Phys Inv Line | Internal Use | Product | Movement Qty |
1 | 1901 | True | Product A | 20 |