Projects:AverageCostRefactor/DevelopmentAndDesignNotes
Introduction
In this document basic notes and requirements are listed to be considered during project design and development.
Notes
- Extensible algorithm definition to manage costing. On first phase standard and average will be available. FIFO, LIFO and Specific Identification will be defined on a later stage.
- Asynchronous cost calculation, new infrastructure similar to accounting engine needed.
- Background process to calculate costs.
- Flag on documents / transaction table to check that cost has been calculated.
- Ability to know the last day costs have been calculated.
- Extensible with templates to implement different costing algorithms.
- Cost calculated based on several dimensions:
- client is mandatory and each product can define another one if needed.
- client, organization, warehouse
- Dimensions to calculate are set on a new generic configuration table. This table can be accessed from product if a specific configuration to it is set.
- New processes shall be java classes using DAL.
- New API to generate the cost entry by each algorithm.
- Define needed parameters.
- New API to get the cost of each transaction.
- Different for each transaction that can consume cost.
- Transaction as a parameter.
- Pending to determine how to source of the price of a receipt/shipment (invoice, order or price list)
- Pending to define how to apply landed cost.
- The order of the transactions is determined by the created property of the M_Transaction table.
- Pending to estimate the effort to include not instanceable attribute sets as a costing dimension.
- FIFO / LIFO algorithms require a new table(s) to store each transaction and its price.
- Each outgoing transaction from a storage bin should be related to an ingoing transaction.
- It could be null if shipment is done before the receipt. Study inconveniences as unknown price of the product.
- This table is populated when the cost is calculated. Each input has a record. Each output has at least one record related to an input.
- Each outgoing transaction from a storage bin should be related to an ingoing transaction.
- Each algorithm should provide a method to return the stock valuation of a warehouse as a datasource. To be filterable by the dimensions.