Projects:Cost Adjustments/FunctionalSpecs
Contents |
Cost Adjustments - Functional Specifications
Overview
This project implements the ability to modify calculated costs. These modifications can be needed by different causes. Backdated transactions or landed cost are the most common.
Purpose
Current Cost Engine is based on Perpetual Costing. This means that any calculated cost shouldn't be modified. Because of this restriction there are some cases that currently cannot be resolved. To solve this Cost Adjustments are needed. With this project it would be able to fix unexpected cost results when transactions are not registered in the system in the same order that happened or to implement landed costs.
Scope
The scope of this project is to create a new functionality to manage cost adjustments. This project also enables the possibility to create modules with processes to adjust costs.
References
This project is an extension of the Costing Engine, deep knowledge of this functionality is required.
Design Considerations
Assumptions
- The Cost Adjustment process should be possible to be extended by modules.
Dependencies
- Existing core processes retrieving transaction costs should be reviewed to ensure that adjustments are included when needed.
- Existing core algorithms (average and standard) should be updated to implement cost adjustments.
Constraints
- Costing Algorithms need implement new methods for cost adjustments. Algorithms not upgraded should not break the application.
Glossary
Functional Requirements
Business process definition
- New document Cost Adjustment
- Header with the adjustment definition, includes cause, type,...
- Lines with all the transactions affected by the adjustment.
- The process that searches the transactions involved and calculates the adjustment amounts:
- Algorithms are in charge of defining this process
- Needs to take into account the possibility of a Costing Rule change.
- Changes in amount of outgoing transactions is the only case where no other related transactions are affected. There is an exception on closing inventories of Costing Rule initializations.
- The cost adjustments are generated by different processes:
- Backdated transactions:
- Backdated transactions are adjusted when their cost is calculated.
- The cost is calculated and then an adjustment is created to recalculate it on the movement date.
- Price Difference Corrections:
- This process is executed as:
- part of the closing period process.
- periodically as a background process.
- Fixes transaction costs known to be not accurate.
- The process is done for a reference date.
- The process searches transactions that require adjustments up to the reference date.
- Involved transactions can be on a later date.
- The process ensures a synchrony between ledger balance and inventory balance only on the reference date.
- Transactions that require adjustments:
- Differences in order/invoice prices.
- Order price modification with receipt cost calculated. Under discussion if this scenario is possible.
- Products without stock but with a balance in the ledger or inventory different to zero.
- This process is executed as:
- Negative stock corrections, for average costing:
- When negative stock is allowed the transactions that leave negative stock are calculated with the current average cost.
- The next incoming transaction recalculates the average, but also should adjust the previous transactions that left the stock below zero.
- With this adjustment the average after the receipt is the price of the receipt and is not affected by the previous negative stock transactions.
- Landed Cost:
- Ability to assign additional costs to single transactions. Usually freight costs or custom taxes to receipts.
- Ability to update the balance of a product on a date to an specific amount.
- The process generates closing/starting inventories whose calculated cost is the old balance (closing inventory) and the new balance (starting)
- If this process is done for a date in the past a cost adjustment will be needed. This adjustment should be done as a regular backdated transaction.
- Backdated transactions:
- Cost adjustments are cumulative. A single transaction can have several adjustments.
- The process to search for involved transactions needs to take into account consumed goods transactions of manufacturing. Both BOM and Work Efforts.
- In this case the related produced goods costs needs to be adjusted as well.
- The accounting of the adjustments is not driven by the Cost Adjustment document.
- New document/process to post adjustments to the ledger.
- A accounting date is set as reference.
- All adjustments pending to be posted prior to the reference date are posted on a single journal entry on the given accounting date.
- It is not possible to close an accounting period with adjustments pending to be posted.
- Algorithms can add their own adjustments
- When allowing negative stock and using average algorithm. The cost of a transaction that has produced negative stock needs to be adjusted when the next incoming transaction is adjusted.
User stories
Case 1
Closing a period with backdated transactions.
- Ann want to close an accounting period.
- She knows that in that period there were some shipments that were not entered in the same date.
- She creates a new Cost Adjustment to check for backdated transactions up to the last date of the period she's closing.
- She process the cost adjustment.
- On the lines she can review all the transactions that have been updated.
Case 2
A shipment is entered on a later date
- John has registered a mislaid receipt.
- He wants its cost to be calculated using the original date.
- He creates a new Cost Adjustment for the receipt setting the correct date.
- He processes the cost adjustment.
- On the lines he can review all the transactions that have been updated.
Case 3
Negative stock corrections when shipment is processed before the receipt.
- Current avg is 20EUR/unit and stock is 5 units (100EUR balance)
- Michelle creates a shipment of 15 units. The cost amount is 300EUR leaving a negative stock of -10.
- Michael later on that day registers the receipt of 20 units of 25EUR/unit.
- The stock is +10
- The new average is 30EUR/unit. Current cost balance divided by current stock. (100 -300 + 500)/10.
- A cost adjustment is generated to adjust the cost of the shipment.
- The cost of the shipment is adjusted. The existing 5 units are valued at 20EUR/units, but the remaining 10 units are valued at the receipt's cost 25EUR/unit.
- The cost of the shipment is increased by 50EUR. From 300EUR to 350EUR.
- The new average is 25EUR/units. (100 - 300 - 50 + 500)/10
Functional requirements based on business processes
Id | Requirement | Importance | Status |
1.1 | Window Cost Adjustment.
Header:
Lines:
| Must have | Started |
1.2 | Cost Adjustment process. The process:
| Must have | Started |
1.3 | Process Checks:
| Must have | Not Started |
1.4 | Ability to cancel cost adjustments:
| Should have | Not Started |
1.5 | Yes/No Flag for transactions permanently adjusted. | Must have | Not Started |
Id | Requirement | Importance | Status |
2.1 | Process Price Difference Corrections.
Parameters:
| Must have | Not Started |
2.2 | The process:
| Must have | Not Started |
2.3 | The process is run as part of the Closing Period process. | Must have | Not Started |
2.4 | Ability to run the process periodically in background mode. | Nice to have | Not Started |
Id | Requirement | Importance | Status |
3.1 | Window Landed Cost:
| Must have | Not Started |
3.2 | Process Landed Cost.
| Must have | Not Started |
3.3 | Ability to define landed costs on Goods Receipt windows.
| Must Have | Not Started |
3.4 | Process to adjust differences on basic landed cost with received invoices. | Nice to Have | Not Started |
3.5 | Ability to assign to the receipt the invoices that originates the Landed Cost. | Nice to Have | Not Started |
3.6 | Ability to relate receipts to the invoices or documents that originates the landed cost. | Nice to Have | Not Started |
Id | Requirement | Importance | Status |
4.1 | Process Inventory amount update.
Parameters:
| Must have | Not Started |
4.2 | The process:
| Must have | Not Started |
Id | Requirement | Importance | Status |
5.1 | Checked and adjusted by the Costing Server class. | Must have | Not Started |
5.2 | The process:
| Must have | Not Started |
Id | Requirement | Importance | Status |
6.1 | Checked and adjusted by the Average Algorithm. | Nice to have | Not Started |
6.2 | The process:
| Nice to have | Not Started |
Id | Requirement | Importance | Status |
7.1 | Button Manual Cost Corrections in Transaction tab of Product window.
Parameters:
| Must have | Done |
7.2 | The process:
| Must have | Started |
7.3 | Process Manual Cost Corrections.
Parameters:
| Nice to have | Not Started |
Id | Requirement | Importance | Status |
8.1 | Process to generate the journal entry of the adjustments.
Parameters:
| Must have | Not Started |
8.2 | The Process:
| Must have | Not Started |
8.3 | Check on closing period. It should not be possible to close a period with adjustments pending to be posted. | Should have | Not Started |
Id | Requirement | Importance | Status |
9.1 | Average Algorithm | Must have | Not Started |
9.2 | Standard Algorithm
| Must have | Not Started |
9.3 | FIFO Algorithm | Must have | Not Started |
User Interface Mockups
Technical Requirements
Non-Functional Requirements
Open Discussion Items
- What happens is a backdated transaction is registered in the system after a balance update is done?
- Balance for 31st of January is set to be 1000EUR.
- Later a receipt of 25th of January is registered on 10th of February.
- The receipt cost is calculated generating a new average cost as of 10th February.
- The receipt cannot be adjusted to 25th of January as it would change the balance of 1000EUR.
- Shall the cost and the average be calculated at all?
- Shall the cost be adjusted from the 1st of February?
- Should we allow a easy process where all adjustments are posted on the same date than the original transaction?
- Reopening and modification of a purchase order whose receipt is processed and cost calculated.
- Is it possible?
- Should we create an adjustment?
- It has to considered the possibility of reactivating of a invoice and changing the price.
- A invoice is processed with a wrong price.
- The cost adjustment is done with the wrong price.
- The invoice is reactivated and the price changed to the correct one, which is the order price.
- There are 2 possibilities:
- A new cost adjustment is done so the sum of both adjustments is zero.
- The original adjustment is deleted. We would require to unpost it in case it is already posted.
- The original adjustment needs to be reactivated or canceled when the invoice is reactivated. New process to consider (reactivating/canceling of existing adjustments).