Sponsored Development: Libero Costing Engine

From ADempiere
Revision as of 17:22, 8 July 2011 by Vpj-cd (Talk) (Project)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
This Wiki is read-only for reference purposes to avoid broken links.
Logo e-Evolution.png
DesignIcon.jpg Designer: Victor Perez.
Email.jpg Contact Sponsor e-mail: [victor.perez@e-evolution.com].
Develop.png Developer: [Victor Perez].
Sponsor smily.png Sponsor: Sysnova.
Sponsor smily.png Sponsor: e-Evolution,SC, located in Mexico, Equador and Venezuela.

This is to introduce Libero's Costing Engine functionality for integrating into ADempiere ERP Business Suite.


Source code


How to Install?

  • Open Terminal command
  • Change the ADempiere Home directory
  • Copy the liberoCE.jar file to packages directory
    #cp liberoCE.jar $ADEMPIERE_HOME/packages/liberoCE/lib
  • Copy the patchs.jar file to Lib directory
    #cp patches.jar $ADEMPIERE_HOME/lib/customization.jar
  • Run ADempiere setup
  • Login using SuperUser , and execute the System Admin -> General Rules -> Security -> Role Access Update,after you need Login again, now you would see the new option in menu

Sysnova logo.jpg


Development & Consulting

Roadmap Document

Functionality / Feature Status Developer Priority Milestone Release Date Summary
Performance Analysis -> Costing -> Cost Engine
Implement method in parallel Implemented Victor Perez High 354 -- implemented
* Implement cost method by organization Implemented Victor Perez High 354 -- Implemented
* Implement cost layer and history Implemented Victor Perez High 354 -- Implemented
Material Management
Inventory revaluation (all methods) Under development Teo Sarca High 354 2010/05/31 ...
Inventory reports Implemented Victor Perez High 354 -- Implemented
Performance Analysis -> Costing -> Average Costing Method
Implement to Average Cost fix when an user entry the data error Implemented Victor Perez High 354 -- Implemented
Implement the layer to solve the reverse documents Implemented Victor Perez High 354 -- Implemented
Implement the Average cost to Manufacturing functionality Implemented Victor Perez High 354 -- Implemented
Review and fix the current algoritm Implemented Victor Perez High 354 -- Implemented
Performance Analysis -> Costing -> FIFO/LIFO Costing Method
Separate the Policy Material of FIFO/LIFO Cost Implemented Teo Sarca High 354 2010/05/31 ...
Review and fix the current algoritm Under development Teo Sarca High 354 2010/05/31 ...
Performance Analysis -> Costing -> Standard Costing Method
Implement the frozen/unfrozen Cost Under development Victor Perez High 354 2010/05/31 ...



[Develop Vision]

[Document Specification in process ---]

Identify Stakeholders Ok

  • Warehouse Clerk
  • Accountant Cost Clerk
  • Financial Management Clerk
  • Purchase Manager Clerk
  • Implementor Clerk

Gain agreement on the problem to resolve

  • You can not do tracking and monitoring of the costs for any costing method. ie currently you can not generate a valuation of inventories at an effective date. - solved
  • All documents reverted with cost are created with incorrect accounting. - solved.
  • In the average cost, it is not possible to process correction of incorrect entry of quantities or prices. - solved
  • Cannot generate the transaction cost accounting for any revaluation or change cost. - solved.
  • Only is possible to manage a method costing by company or organization. - solved.
  • The FIFO/LIFO costs, currently not working properly.
  • Currently is not possible to have different method cost by organization. - solved
  • Currently is not possible have a good historical cost for all method costs. - solved

Also add some new functionality.

  • Development the functionality that support manufacturing support Average and FIFO/LIFO cost. - solved.
  • Allow that the ADempiere support different costing methods by organization, this way one organization can use Average Cost and the other can use Standard Cost. - solved.
  • New Inventory report valuation. - solved
  • Revaluation Cost. - solved
  • COGS Adjustment. - solved

Gather stakeholder requests

  • Optimize the Calculated Cost
  • Optimize the Calculated Sales Price based on % margin
  • Optimize the Right General Ledger record
  • Optimize the Right Record the COGs for Income Statement
  • Optimize the Right inventory valuation with different method cost. solved

Define the scope of the solution

The objectives to reach within the first milestone of the project are:

  • Create New Cost Engine, ready & solved
  • Get the right calculated and register of cost , ready & solved
  • Implement Average Cost (ready & solved) and FIFO/LIFO Cost for Manufacturing Management
  • Get the right Inventory Cost Valuation , ready & solved
  • Get the right General Ledger Cost records, ready & solved
  • Get the right Current Cost for each cost element , ready & solved

Define features of the system

  • Define Multiples Cost Element with different Cost Method, implemented
  • New Inventory Valuation Report , implemented
  • New cost collector cost for cost adjustment and revaluation, implemented
  • New option to generate the posting in batch process , implemented
  • New option to generate the adjustment cost in batch process , implemented
  • New transaction valuation report, implemented

Important questions

When I reviewed the FIFO/LIFO cost found Questions and Cases :

Well is here where I have some doubt about the Business Logic:

We need define the strategy about that How should work the Material Policy and Costing Method, current do not is clear?

I think that the Material Policy and Costing Method should work the way independent so that in general the Material Policy is focus to the logic material issue and the costing method is focus to Cost Account
Victor Perez
  • What is the logic to consumed the FIFO/LIFO Cost Layers , we should sort by?
    • Account Date
    • Movement Date
    • ID ASI
    • Guarantee Date
I think that for FIFO/LIFO Cost Layers should be consumed based in the Account Date , the reason is because exist a lot the business that can entry your material movement in time left. other important reason is because when you revert some document it should reverting using the same date that original document and the same original cost. so this way we can complaint the requirement the Accountant Costs.
Victor Perez
  • What is the Logic to consumed the Material considering the Material Policy?
    • Accounts Date
    • Movement Date
    • ID ASI
    • Guarantee Date
I think that the FIFO/LIFO Material Policy should be consumed based in of the Guarrantee Date and discarding the Layer that do not have complaint with the Min Guarantee Days , next we would use the Movement Date. The reason is because the must important for this business case is that the raw material more old and a good status should be issue first. this way we can complaint the requirement the Production man.
Victor Perez
  • We should mix the Material Policy FIFO/LIFO with Costing Method FIFO/LIFO?
No I think that the Material Policy FIFO/LIFO and Costing Method FIFO/LIFO are different , the first is focus to material and next to Cost. So I think that we need change the current logic where the Material Policy FIFO/LIFO is use to calculate the Cost.
Victor Perez
  • We should adding the costing method to level Product Category the same way that Material Policy?
Yes, is very necessary so that exist business that need have a costing method for specific Product Category. Here I do not sure if with different account cost.
Victor Perez
  • We should create a record into Cost Detail for each Cost Element and Material Transaction?
Yes, I think that it would be very useful to implement the FIFO/LIFO cost in Manufacturing Cost and can use other Cost Element Type as (Labor, Burden , Overhead , Outside Processing, etc),
Victor Perez
  • We should include the Current Cost Price and Current Cost Price LL into Cost Detail?
Yes, I think that it would be very useful to implement report Effective Date Valuation, Calculate Cost Revelation and Reversal Documents
Victor Perez
  • We should include the account date in the logic to Costing Method FIFO/LIFO?
Yes,I think that is very important it date is mandatory to create reversal and correction cost for error in entry quantity.
Victor Perez
  • How should include the landed cost be based on the FIFO/LIFO Costing Method?

Achieve concurrence

Capture a common vocabulary

  • Glossary

Identify and Outline Requirements

Detail Use-Case Scenarios

Detail System-Cost Management


Important Changes

Cost Type Window

  • To set up a Costing Method you need to create a Cost Type. The new Cost Engine now allows to generate the Cost Details for multiple Costing Methods i.e. Costing Methods can be managed in parallel.

Cost Element Window

  • A Cost Element can be defined as default. Default Cost Elements will be used to create the Cost Dimension for a new products.
  • A new Cost Element Type ("Landed Cost") was added; this is used to define an element of cost to manage Landed Costs.
  • The field Costing Method was moved to the Cost Type window. In the new Cost Engine a Cost Element is used for all Cost Types defined; that is why now is not necessary create a cost element for each costing method. For example the Cost Element "Material" is used for all Cost Types defined (Standard, Average Invoice).
  • When a new company is created, the system creates automatically a Cost Element named "Material".

Product Cost Window

  • Product Costs
    • The Product Costs tab was renamed in Cost Diemensions
    • The field Accumulated Amt LL was added to manage costs at lower levels
    • The Costing Method is displayed based on the type of cost
  • Cost Detail
    • A new field (Cost Value) was added to keep the cost of the transaction; this new field is used to determine the cost adjustment on a given date.
    • In order to manage cost adjustments the fields Cost Adjustment and Cost Adjustment Date have been added. These new fields allow to record Cost Adjustment on a timeline.
    • In order to keep a precise control of inventory transactions, the generated field M_Transaction_ID was added to the detail of costs.
    • To discern void transactions the new field IsReversal was added. This allows canceled records to be ignored at calculating costs.
    • For the management of manufacturing costs new fields were added (AmtLL, CurrentCostPriceLL, LL Accumulated Amt, Cost Value LL, LL Adjustment Cost, Cost Adjustment). These fields are used to maintain historical values of lower levels costs.
    • The new field Landed Cost Allocation is used to track the source that generated landed cost documents.
    • The new field Account Date is used by the Cost Engine to determine whether a transaction is delayed: this is the case if a transaction is of earlier date and COGS Adjust is enabled. In this case the Cost Engine regenerates the cost layers and restores the accounting fact of all documents generated after the earlier transaction.

Transaction cost and cost detail.

  • The new Cost Engine generates the Costs Details when inventory transaction is completed. A single record is kept for a combination of accounting schema, product, cost type, cost element and transaction.
  • This change is the most important, since in previous releases Costs Details were generated when a document was posted. This approach did not allow to have the cost history until accounting was recorded.
  • With the new Cost Engine, it is now possible to generate Costs Details at any moment. The new Cost Engine allows independence of costs from general accounting, so the Cost Detail can be deleted and regenerated to fix any miscalculated layers in a given period.
  • Note: the generation of Costs Details by the batch process is recommended only for accounting periods that are still open. This avoids affecting the financial statements.

General Ledger costs

  • The cost accounting records are generated based on the costs details.
  • Now an accounting entry is generated for each cost element.
  • The Cost Engine allows setting Costing method to generate the accounting entries as follows:
    • The accounting entries are generated using the cost type and costing method defined in the accounting schema.
    • The accounting entries are generated using the costing method and cost type defined in the product category accounting tab.
    • The accounting entries are generated using the cost type defined for a specific organization, this allows each organization to have different costing method. To enable this feature is necessary to establish the cost level for organization.

Business Test Case

How to Test?

  • Modify the AdempiereLiberoCE/test.properties and setting the variables
  • AdempiereProperties,Email,EmailPassword
  • Apply the migration script(adempiereLiberoCE/extension/costengine/src/main/resources/script) in a new ADempiere Instance
  • Open adempiereLiberoCE/extension/costengine/src/test/java/org/adempiere/AverageInvoiceCostTest.java , Click Right -> Run As -> JUnit Test
  • You should receipt email with the result.

Test Result


Generate Cost Transaction


  • Parameters Generate Cost Transaction

Transaction Value


  • Transaction Value Report Paramaters


  • Transaction Value Report

Valuation Effective date Report


  • Parameters for Valuation Effective date Report


Discussion Chats

Cost Engine Chat Bayu and Victor 23/09/2010

Cost Engine Chat Colin and Victor 24/09/2010

Cost Engine Chat Susanne and Victor 24/09/2010

Cost Engine Chat Luis and Victor 25/09/2010

Cost Engine Chat Fernando and Victor 29/09/2010

following using google wave here