Odoo has integration between the Sales app and the Project and Timesheet apps. This allows you to create sales orders for services and then invoice the customer.
When the Sales Order is confirmed, a project and/or task can be created automatically. You can then invoice the customer based either on time recorded or milestones.
If the Sales, Project and Timesheet apps are installed the following options should be shown in the Sales tab for Service items:

There are several different options:

Service Invoicing Policy
- Ordered quantities / Prepaid
- An invoice can be created at any time, based on the ordered quantity (If timesheets are in use, the time will be recorded but not use for invoicing).
- Timesheets on tasks
- This is the option to use if you want to invoice the customer based on timesheets.
- Milestones (manually set quantities on order)
- Manually enter the quantity delivered (you can record time if you wish, but this will not be used for invoicing
Service Tracking
- Don’t create task
- Create a task in an existing project
- Project Name must be specified
- Create a task in sales order’s project
- If the sale order has a project this will be used. If not a new project will be created based on the template (see below).
- Create a new project but no task
Create a Project
If you select either of the last two options, a new project may be created. You can therefore select a Project Template to be used:

Re-Invoice Expenses
- No
- At cost
- Sales price
Note
There is a setting in Projects to “Log time on tasks” and this should be enabled if the Timesheets app is installed. If it’s not enabled, then enabling it will install the Timesheet app.
