FS02 Cash Flow
Status: Approved to be integrated in branch 361 by Functional Team
Development Status: Integrated to Branch GlobalQSS 361
SourceForge Forum thread to discuss.
- 1 Cash Flow - Functional Specifications
- 1.1 Overview
- 1.2 Design Considerations
- 1.3 Glossary
- 1.4 Functional Requirements
- 1.4.1 User roles & profiles
- 1.4.2 Business process definition
- 1.4.3 User stories
- 1.4.4 Functional requirements based on business processes
- 1.4.5 User Interface Mockups
- 1.5 Technical Requirements
- 1.6 Non-Functional Requirements
- 1.7 Open Discussion Items
- 1.8 Closed Discussion Items
Cash Flow - Functional Specifications
Author: Carlos Ruiz
The cash flow projection functionality is highly required on an ERP.
Implement a cash flow projection to be exported to a spreadsheet including information from plans (forecast), commitments (orders) and actuals (invoices)
The cash flow projection will be issued starting from the actual date (today), and it will not include the planned records before today. It's user's responsibility to keep up to date the plans to show accurate results.
It's important also to implement a join between the commitments (orders) or actuals (invoices) and the plans in order to allow the user to mark that a specific order or invoice is related to a plan or forecast and allow the report to subtract the amount from the plan.
All components of the development must be translated to spanish.
The development of this requirement depends on Functional Specification for Commitment AR AP
... empty ...
... empty ...
User roles & profiles
Cash Planner: There must be a skilled person to fill the cash plans
Sales Order: People filling sales orders must take into account to relate the corresponding cash plan when necessary
Purchase Order: People filling purchase orders must take into account to relate the corresponding cash plan when necessary
Sales Invoice: People filling sales invoices must take into account to relate the corresponding cash plan when necessary
Purchase Invoice: People filling purchase invoices must take into account to relate the corresponding cash plan when necessary
Cash Flow Manager: This is the person that issue the cash flow projection, export it to excel and play with the numbers.
Business process definition
- How does this fit with a standard cash flow statement and budget?
- Most important is that if a sales/purchase order/invoice has a schedule of payments, accounting just show the balance on the invoice date, meanwhile the cash flow must show all the installments on each corresponding date
- In some way cash plan document is a budget, but is not entered like a GL journal with accounts, instead of, it can be entered using charges and products as usual orders/invoices - or you can use just names if product/charge cannot be used, we also provide a "Generate Periodic" button to create periodic lines, for example for public services invoices, or a planned credit with a bank. And additional to budget, we made also a provision to let the user mark which order/invoice correspond to which line of the plan (to subtract the order/invoice from the planned amount).
Functional requirements based on business processes
- Create a new window (with its corresponding tables) to allow entering cash flow plan documents
- Create a link between sales/purchase orders/invoices with this new plan document
- Create a cash flow report that includes forecasts (plans), commitments (orders) and actuals (invoices)
- Date To: The max date of documents to be shown in the report
- Accounting Schema and Account Element: the account element to calculate the initial balance (first line) of the cash flow report
- Technical Info: there will be a new temporary table called T_CashFlow that will be filled by a process and reported in the usual Adempiere way
- The process to fill the temporary table add records to the T_CashFlow table this way:
- Firstly calculates an "initial balance" record based on the balance of the account (parameter) as of today
- Secondly add "plan" records based on cash flow plan documents (subtracting the planned lines that are already linked to actual orders or invoices)
- Thirdly add "commitment" records based on sales and purchase orders - just the not invoiced part, the dates are calculated according to the order schedule
- Fourthly add "actual debt" records based on sales and purchase invoices - just the unpaid part, the dates are calculated according to the invoice schedule
Example of questions the Cash Flow projections could answer (the report doesn't answer these questions directly but provides the necessary data and a tool for planning):
- Am I going to meet payroll next week? Next month?
- Will I have enough cash to meet my commitments? Can I take on other commitments with payment schedule Y? When?
- Can I accept a contract for products with payment schedule X? Will I be able to afford the necessary parts & supplies?
- How much risk do I have of running out of cash? How much credit should I secure? When will I likely need the money?
- Do I need to factor my AR or sell some other source of value - like inventory? What rate or loss should I accept?
- Can I undertake a capital project with payment terms of wxy?
- What amount of equity investment will I require? What terms can afford to offer?
User Interface Mockups
Sample of the Cash Plan document header
Sample of the Cash Plan document lines
Cash Flow Report Parameters
Cash Flow Report
This is a sample of the generated cash flow in Adempiere.
Cash Flow Report exported to spreadsheet
This is a sample of the report exported to spreadsheet
Open Discussion Items
During the community discussion week there were several comments that are worthy to document here:
- Suggestion to take into account all aspects of working capital changes, capital investment and financing: At this moment the user must maintain the cash plan documents, no provision to manage such aspects. We have thought maybe in future to add a cash plan importer (but is not in current scope)
- Suggestion to answer the question "Where did my cash go?": At this moment the report doesn't show historic data, but a future extension of this concept could.