This page will explain how to use TaskFalcon
to track the financial aspects of a project and how to use TaskFalcon
for billing clients.
This top-level section creates a new account in your TaskFalcon
file.
Accounts are required for tracking payments and booked efforts.
You can have multiple accounts and each account can have multiple sub-accounts. The options for a sub-account and those for a top-level account are the same.
While you can use as many accounts and sub accounts as you like, each booking or payment needs to be assigned to exactly one account.
project:
name: Account Test
start: 2020-06-01
accounts:
- account: acc-1 # Unique identifier
name: My first account # Account name
sub-accounts:
- account: sub-1 # Similar to tasks, the fully qualified name
name: My first sub account # for this sub-account would be "acc-1.sub-1"
Each task that is supposed to contribute to an account needs to declare the account to be used.
tasks:
- task: T1
account: acc-1
chargeonstart: 1000.00 # Charges $1000.00 to the account “acc-1” when the task starts
When charging resources on an account, each resource needs to declare a role, which is used for billing. The role contains the hourly rate which is used to charge the account. A resource may work in different roles depending on the task.
Roles have to be defined as part of the account configuration.
accounts:
- account: acc-1
roles:
- role: senior # Unique identifier of the role within the account
name: Senior Engineer # Name of the role
rate: 120.00 # Rate per hour. This example charges a resource with $120 per hour
- role: consultant
name: Consultant
rate: 150.00
Currently, TaskFalcon
only supports billing with an exact accuracy down to each minute a resource has worked on a task. Options like charging money for each started period of time (e.g. charging $20 for each started 15 minutes of work) may be supported in the future.
accounts:
- account: acc-1
roles:
- role: role-1
rate: 120.00 # Charges a resource with $120 per hour
tasks:
- task: T1
account: acc-1
assign: R1
role: role-1 # You can assign a role to a task. This means that each resource working on
# this task will be billed with this role
- task: T2
account: acc-1
assign: R1:role-1 # You can assign roles for each individual ressources when using
# the format <Resource>:<Role> in an assignment
Hint: If you have groups of tasks, you can set an account/role for the group, which will be used for all sub-tasks unless a sub-task explicitly uses different values.
Payments add manual charges to an account. They are part of the account configuration or an update.
The format of a payment is:
<date: YYYY-MM-DD> <amount> <comment>
accounts:
- account: acc-1
name: Test account
payments:
- 2020-07-01 1000.00 Initial payment
- 2020-07-03 50.00 Some fees
As usual, all the settings you can make on the top level accounts and/or roles, you can also make in updates.
Especially if you want to change the billing rates during a project, you should consider using updates. If you just change the rate you’ve defined as part of your account definition, this rate will be applied to all tasks and resources in the past too, which might affect your overall project balance.
accounts:
- account: acc-1
roles:
- role: role-1
rate: 120.00
tasks:
...
updates:
- update: 2022-01-01
account: acc-1
roles:
- role: role-1
rate: 120.00
Similar to nested tasks in updates, for accounts you also need to use fully qualified account names:
accounts:
- account: Top-Account-1 # fully qualified name is "Top-Account-1"
subaccounts:
- account: Sub-Account-1 # fully qualified name is "Top-Account-1.Sub-Account-1"
...
subaccounts:
- account: Sub-Account-2 # fully qualified name is "Top-Account-1.Sub-Account-2"
...
- account: Top-Account-2 # fully qualified name is "Top-Account-2"
subaccounts:
- account: Sub-Account-1 # fully qualified name is "Top-Account-2.Sub-Account-1"
...
subaccounts:
- account: Sub-Account-2 # fully qualified name is "Top-Account-2.Sub-Account-2"
...
updates:
- update: 2022-01-01
account: Top-Account-2.Sub-Account-1 # Using the fully qualified account name for this update
...
# File: accounts.yaml
project:
start: 2020-06-01
resources:
- resource: bs
name: Bart Simpson
- resource: ls
name: Lisa Simpson
accounts:
- account: prj
name: Customer Project
roles:
- role: dev
name: Developer
rate: 100
- role: con
name: Consultant
rate: 150
- role: sup
name: Supporter
rate: 75
subaccounts:
- account: con
name: Consulting
payments:
- 2020-06-08 -6000.00 Customer paid first rate
- account: dev
name: Development
payments:
- 2020-06-08 -6000.00 Customer paid first rate
tasks:
- task: Project Consulting
efforts: 5d
assign: ls:con
account: prj.con
- task: Project Development
efforts: 10d
assign: bs:dev
depends: Project Consulting
account: prj.dev
chargeonstart: 2000.00 # Cost for hardware
- task: Project Documentation
efforts: 5d
assign: ls:sup
depends: Project Development
account: prj.dev
updates:
- update: 2020-06-15 # Halfway through the development, the rate per hour was increased
accounts:
- account: prj
roles:
- role: dev
rate: 125
To export the account balance to an Microsoft Excel sheet, you need to add the command line parameter -export-accounts-xlsx
:
falcon -export-accounts-xlsx my-project-file.yaml
The following results were created using this command:
falcon -show-efforts -show-effortsleft -show-done -show-closed-tasks -today 2020-06-24 -export-charts gantt-with-resources -export-accounts-xlsx accounts.yaml
Result:
Spreadsheet: