|
Open ERP Forum |
|
|
Setting Up a Service Company - Projects / Hours / Invoicing
Goto page 1, 2, 3 Next
|
| View previous topic :: View next topic |
| Author |
Message |
David L
Joined: 25 Feb 2009 Posts: 77 Location: London, UK
|
Posted: Fri May 08, 2009 3:58 pm Post subject: Setting Up a Service Company - Projects / Hours / Invoicing |
|
|
Hi everybody, as I have seen quite a few people in this forum attempting like myself to do a basic setup for a service type company (ours is an engineering one) where projects are setup, hours recorded (timesheets) and invoices produced on time in line scenarios, I though it might be usefull pulling all our effort into one discussion thread. I have written a basic setup scenario from scratch and would greatly appreciate comments, help, suggestion, bashing if it is not the right way of doing it, etc....
Ultimately, I would be more than happy to collect all the info and write a "Guide to setup and use OpenERP for an engineering company" if that can be of use.
My first problem is the generation of invoice from the recorded timesheets.
Here is the setup:
1. PLATFORM:
Windows Vista
2. OPENERP VERSION:
v5.0.0
3. OBJECTIVES:
Setup a basic system for an engineering company working on timesheet and invoicing hours of work on projects for different types of engineers.
4. MODULES INSTALLED:
Starting from a minimal installation, the modules added afterwards are:
By the way, it would be extremely usefull to be able in the module management tables to select a number of modules and click on a single button to schedule for installation as opposed to have to go into each individual modules.
account, account_analytic_analysis, account_analytic_default, account_analytic_plans, account_chart, account_invoice_layout, account_payment, account_report, account_tax_include
analytic_journal_billing_rate, analytic_user_function
base, base_contact, base_iban, base_setup, base_vat
board, board_account, board_project
crm, crm_configuration
document, document_ics
hr, hr_attendance, hr_contract, hr_expense, hr_holidays, hr_timesheet, hr_timesheet_invoice, hr_timesheet_sheet
l10n_chart_uk_minimal
process
product
project, project_timesheet
report_account, report_analytic, report_analytic_line, report_analytic_planning, report_crm, report_task, report_timesheet
5. SETUP:
5.1 CONFIGURATION OF COMPANY INFORMATION:
Setup the basic company information including address (done at install time)
Name: My Engineering Company
Address: My Address
5.2 CONFIGURATION OF USERS:
- Creation of users (done at install time):
user1 (Mr Project Manager) and user2 (Mr Senior Engineer)
- Assigning groups to users (done at install time):
user1:
Employee,
Finance / Accountant, Finance / Invoice, Finance / Manager, Finance / Payments,
Human Resources / Attendances User, Human Resources / Contracts, Human Resources / Manager, Human Resources / User,
Project / Financial Manager, Project / Manager, Project / User
user2:
Employee, Human Resources / User, Project / User
- Modifying group by adding acess rights:
Administration > Users > Groups
Edit Human Resources / User and add a new Access Rule in the Access Rights tab:
Object: Analytic lines
Read: Yes
Write: Yes
Create: Yes
Delete: No
Name: account.analytic.line
5.3 CONFIGURATION OF ACCOUNTING:
- Create Chart of Accounts from template (using chart UK minimal):
Financial Management > Configuration > Financial Accounting > Templates > Generate Chart of Accounts from a Chart Template
- Set up Financial year 2009 to start on 01/04/2009 and finish on 31/03/2010 and generate monthly periods:
Financial Management > Configuration > Financial Accounting > Periods > Fiscal Years > New
Fiscal Year: 2009
Code: FY2009
Start Date: 04/01/2009
End Date: 03/31/2009
- Create Monthly periods from within the New Fiscal Year Form
5.4 CONFIGURATION OF PRODUCTS:
- Setup the hour unit of measure:
Products > Configuration > Unit of Measure > Unit of Measure Categories > New
Name: Time
Products > Configuration > Unit of Measure > Unit of Measure > New
Name: HR, UoM Category: Time
- Setup the product categories:
Products > Configuration > Products Categories > New
Name: Labour
- Create products to reflect the type of services offered by the company:
Products > Products > New
Name: Senior Engineer,
Code: SENG
Type: Service
Procure Method: Make to order
Supply Method: Produce
Default UoM: HR
Cost Price: 85
Costing Method: Standard Price
Sale Price: 85
(at the moment I am not looking into the cost and sale issues, thus why cost and sale price are identical here)
Products > Products > New
Name: Project Engineer,
Code: PENG
Type: Service
Procure Method: Make to order
Supply Method: Produce
Default UoM: HR
Cost Price: 65
Costing Method: Standard Price
Sale Price: 65
Products > Products > New
Name: Project Manager,
Code: PMAN
Type: Service
Procure Method: Make to order
Supply Method: Produce
Default UoM: HR
Cost Price: 105
Costing Method: Standard Price
Sale Price: 105
5.5 CONFIGURATION OF EMPLOYEES
- Setup the basic working time categories for a normal 40 hrs week:
Human Resources > Configuration > Working Time Categories > New
Group Name: 40hr Week
Add working time in the form once the parent record is saved:
Name Day of the Week Work From Work to
Mon am Monday 9:00 13:00
Mon pm Monday 13:30 17:30
Tue am Tuesday 9:00 13:00
Tue pm Tuesday 13:30 17:30
Wed am Wednesday 9:00 13:00
Wed pm Wednesday 13:30 17:30
Thu am Thursday 9:00 13:00
Thu pm Thursday 13:30 17:30
Fri am Friday 9:00 13:00
Fri pm Friday 13:30 17:30
- Creation of contracts type:
Human Resources > Configuration > Contracts > Wage Period > New
Period Name: Yearly
Hours in period: 1880
Human Resources > Configuration > Contracts > Contract Wage Type > New
Wage Type Name: Yearly Gross
Wage Period: Yearly
Type: Gross
- Creation of Employees:
Human Resources > Employees > New Employee
Employee: Mr Project Manager
Company: My Engineering Company
Related User: user1
Contracts (after saving parent record):
Contract Name: Project Manager
Function: Project Manager (Created there - Function Name: Project Manager, Code: PMAN)
Wage Type: Yearly Gross
Working Hours per day: 8
Wage: 80,000
Timesheets:
Product: [PMAN] Project Manager
Analytic Journal: Timesheet Journal
Human Resources > Employees > New Employee
Employee: Mr Senior Engineer
Company: My Engineering Company
Related User: user2
Contracts (after saving parent record):
Contract Name: Senior Engineer
Function: Senior Engineer (Created there - Function Name: Senior Engineer, Code: SENG)
Wage Type: Yearly Gross
Working Hours per day: 8
Wage: 60,000
Timesheets:
Product: [SENG] Senior Engineer
Analytic Journal: Timesheet Journal
5.6 SETTING UP OF PROJECT:
- Creation of a client (partner):
Partners > Partners > New Partner
Name: My Client
Address: My Client's address (you must put an address if you want to stand a chance to produce an invoice)
- Creation of a type of invoicing (that's where you setup possible discounts):
Financial Management > Configuration > Analytic Accounting > Analytic Accounts > Types of invoicing > New
Internal Name: Standard
Discount: 0.00%
- Creation of analytic accounts to reflect the various activities (cost centres) in a project:
The project is say a project with two activities (for example: design and fabrication):
We now need to configure the analytic accounts to reflect theses activities so as to control them:
Overall Project Analytic Account:
Financial Management > Configuration > Analytic Accounting > Analytic Accounts > New Analytic Account
Account Name: My Project
Account Code: 1001
Company: My Engineering Company
Associated Partner: My Client
Sale Pricelist: Public Pricelist (GBP)
Reinvoice Cost: Standard
Users / Products Rel. (after saving the parent record):
User: Mr Project Manager
Product: [PMAN] Project Manager
User: Mr Senior Engineer
Product: [SENG] Senior Engineer
Project Activity Accounts:
Financial Management > Configuration > Analytic Accounting > Analytic Accounts > New Analytic Account
Account Name: My Project - Activity A
Account Code: 1001 - A
Parent Analytic Account: My Project
Company: My Engineering Company
Associated Partner: My Client
Sale Pricelist: Public Pricelist (GBP)
Reinvoice Cost: Standard
Users / Products Rel. (after saving the parent record):
User: Mr Project Manager
Product: [PMAN] Project Manager
User: Mr Senior Engineer
Product: [SENG] Senior Engineer
Financial Management > Configuration > Analytic Accounting > Analytic Accounts > New Analytic Account
Account Name: My Project - Activity B
Account Code: 1001 - B
Parent Analytic Account: My Project
Company: My Engineering Company
Associated Partner: My Client
Sale Pricelist: Public Pricelist (GBP)
Reinvoice Cost: Standard
Users / Products Rel. (after saving the parent record):
User: Mr Project Manager
Product: [PMAN] Project Manager
User: Mr Senior Engineer
Product: [SENG] Senior Engineer
- Creation of the Project:
Project Management > Projects > New Project
Name: My Project
Project Manager: Mr Project Manager
Working Time: 40hr Week
Analytic Account: My Project
Partner Info:
Partner: My Client
Project Member (after parent record is saved)
Name: Mr Project Manager
Name: Mr Senior Engineer
- Creation of the Project activities (those are created as Project with the main project as parent project):
Project Management > Projects > New Project
Name: My Project - Activity A
Parent Project: [1001] My Project
Project Manager: Mr Project Manager
Working Time: 40hr Week
Analytic Account: My Project - Activity A
Partner Info:
Partner: My Client
Project Member (after parent record is saved)
Name: Mr Project Manager
Name: Mr Senior Engineer
Create a task after the parent record is saved:
Task Summary First Task
Project: [1001] My Project - Activity A
Assigned to: Mr Senior Engineer
Planned hours: 40
Project Management > Projects > New Project
Name: My Project - Activity B
Parent Project: [1001] My Project
Project Manager: Mr Project Manager
Working Time: 40hr Week
Analytic Account: My Project - Activity B
Partner Info:
Partner: My Client
Project Member (after parent record is saved)
Name: Mr Project Manager
Name: Mr Senior Engineer
Create a task after the parent record is saved:
Task Summary Second Task
Project: [1001] My Project - Activity B
Assigned to: Mr Senior Engineer
Planned hours: 40
6. RECORDING TIME
To record time as one of the employees, lets log on to the system as Mr Senior Engineer.
Project Management > Tasks > My Tasks
Edit the task and add a line of Task Work:
Date: default to today
Work Summary: Did some work
Time spent: 8
Done By: Mr Senior Engineer
Let then create a timesheet just for today:
Human Resources > Timesheets > My Current Timesheet
Description: My First Timesheet
User: Mr Senior Engineer
Date From: set to today
Date to: set to today also
Save the parent record (i.e. the timesheet) and the entry in the task will automatically be added.
Note: if you leave the default general account entry, then the line will not show into the "uninvoiced lines" for the project.
As I am not really clued up totally on accounting, I assumed that this should be changed to Cost of Sales. Any suggestion would be greatly appreciated!
The timesheet is in draft mode and will need to be confirmed and validated.
This is where I hit the first problem.
Mr Project Manager should be able to do these action except that I have not yet found the relevant privileges
(but it is not a big deal for now)
Logging on as Admin for the time being, I can confirm and validate the timesheet:
Human Resources > Timesheets > Timesheets > Timesheets to Confirm
Open the timesheet and click confirm at the bottom of the form
Human Resources > Timesheets > Timesheets > Timesheets to Validate
Open the timesheet and click Accept at the bottom of the form
7. INVOICING
Let's log back on as Mr Project Manager to create the invoice.
Project Management > Financial Project Management > Invoicing > All Uninvoiced Entries
Select the only entry there and click on the Invoice Analytic Line action on the right of the page
Tick all the details boxes (Date, Name of entry, Time spent, Cost) and click on the Create Invoice Button...
badabim badaboom:
| Code: | Traceback (most recent call last):
File "netsvc.pyo", line 231, in dispatch
File "netsvc.pyo", line 74, in __call__
File "service\web_services.pyo", line 552, in execute
File "service\web_services.pyo", line 532, in _execute
File "wizard\__init__.pyo", line 178, in execute
File "wizard\__init__.pyo", line 83, in execute_cr
File "C:\Program Files\OpenERP AllInOne\Server\addons\hr_timesheet_invoice\wizard\hr_timesheet_invoice_create.py", line 138, in _do_create
File "sql_db.pyo", line 76, in wrapper
File "sql_db.pyo", line 118, in execute
ProgrammingError: operator does not exist: integer = integer[]
LINE 1: ...account_analytic_line WHERE account_id=1 AND id IN (ARRAY[...
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. |
I also get a problem when I have several entries that I am trying to invoice together...
Thanks in advance for any contribution |
|
| Back to top |
|
 |
anajuaristi

Joined: 14 Jan 2008 Posts: 498 Location: Gipuzkoa(spain)
|
Posted: Mon May 11, 2009 4:39 am Post subject: |
|
|
Impresive post!!! thank you!!!
I suggest that if there is a bug on a module, you could report it on launchpad. _________________ Manuales, Videotutoriales de OpenERP en http://www.openerpsite.com
http://www.aulaerp.com |
|
| Back to top |
|
 |
David L
Joined: 25 Feb 2009 Posts: 77 Location: London, UK
|
Posted: Mon May 11, 2009 12:45 pm Post subject: |
|
|
| Quote: | Impresive post!!! thank you!!!
I suggest that if there is a bug on a module, you could report it on launchpad. |
Thanks, it is my pleasure.
I intend to add as I go along together with other's contribution. It might prove better in the end to write a document but I don't know if it is possible to attach it to the post. I can't find any "attach" button.
Regarding reporting the bug, I will investigate the matter. Thanks for the suggestion.
Is there anybody out there that has encountered the same problem?
Thanks |
|
| Back to top |
|
 |
David L
Joined: 25 Feb 2009 Posts: 77 Location: London, UK
|
Posted: Mon May 11, 2009 3:25 pm Post subject: |
|
|
by the way, I have now found how to get the Project manager to be able to approve timesheets (it was rather obvious but I guess I hadn't spend the time looking).
Administration > Users > Users
Then edit the user "Mr Project Manager" and in the Role tab:
- add the HR role to enable Mr Project Manager to Confirm the timesheet
- add the Timesheet Validations role to enable Mr Project Manager to Accept the timesheet |
|
| Back to top |
|
 |
David L
Joined: 25 Feb 2009 Posts: 77 Location: London, UK
|
Posted: Tue May 12, 2009 2:28 pm Post subject: Invoicing issue solved |
|
|
Right, thanks to the launchpad team, a solution was found to the problem of the invoicing.
The hr_timesheet_invoice module is bugged in the OpenERP v5 allinone downloadable package and I had to get the latest bzr version.
Now, to all of you out there that are struggling with the bzr / launchpad business (I am one of you), here are a few tips to get the bzr stuff working for you on windoze:
1 - Download Tortoise Bazaar from http://bazaar-vcs.org/Download
2 - (obviously install Tortoise bazaar on your PC)
3 - Create an OpenERP directory somewhere on your hard disk (in My Document might be appropriate). This directory will become the repository of modules that will be "bazaared" from launchpad
4 - In that directory, in your favourite windows file manager, right click on your mouse and select the Bazaar Checkout / Branch... menu
a "Create a new Bazaar Working Tree" window will pop up:
in the Branch source input box:
- to access the modules from version 5.0, type in:
lp:openobject-addons/5.0
- to access the extra-addons modules , type in:
lp:~openerp-commiter/openobject-addons/trunk-extra-addons
etc...
(those are the only two I checked so far)
After you have done that and clicked ok, be patient and wait until it is all downloaded.
5 - To update a module, simply copy the folder from the created repository, paste it into the addons folder of your OpenERP server folder. If the module was already installed previously, just overwrite it.
There you go. Hope that will help someone.
Cheer |
|
| Back to top |
|
 |
David L
Joined: 25 Feb 2009 Posts: 77 Location: London, UK
|
Posted: Tue May 12, 2009 2:57 pm Post subject: Creating the invoice... |
|
|
After the preceding posts, going back to the invoicing step:
7. INVOICING
Let's log back on as Mr Project Manager to create the invoice.
Project Management > Financial Project Management > Invoicing > All Uninvoiced Entries
Select the only entry there and click on the Invoice Analytic Line action on the right of the page
Tick all the details boxes (Date, Name of entry, Time spent, Cost) and click on the Create Invoice Button...
and now, oh joy, it works. We have created our first draft invoice...
In the next step of the invoice workflow, this invoice must be created by somebody with the "invoice" role (remember the HR role business for the validation of the timesheet). Assuming we have set up our Mr Project Manager with the invoice role, we can create the invoice:
Financial Management > Invoices
Select the only entry there and click on the Create button.
badabim badaboom, we get hit by a nice warning window:
| Code: | Warning
You must define an analytic journal of type 'sale' !
|
In our current setup (and because I don't know much about accounting so I must have forgotten a thousand and one thing), this is easily resolved:
Financial Management > Configuration > Analytic Accounting > Analytic Journal Definition
Journal Name: Sales Journal
Journal Type: Sales
Journal Code: SAJ
Let's try again...
Now we get:
| Code: | Warning
You have to define an analytic journal on the 'Sales Journal' journal! |
Easy peasy:
Financial Management > Configuration > Financial Accounting > Financial Journals
Edit Sales Journal and set the Analytic Journal entry to the analytic Sales Journal just created.
Let's try again... and now it works! Yipee...
If Mr Project Manager now goes to his project manager dashboard or his projects, he will see that some hours were used so far and that there are no uninvoiced hours, and also, the date of the last invoice appears...
Next step sometime in the near future.
Cheers |
|
| Back to top |
|
 |
David L
Joined: 25 Feb 2009 Posts: 77 Location: London, UK
|
Posted: Wed May 13, 2009 10:19 am Post subject: |
|
|
Is there anyone out there doing things a bit differently? I would greatly appreciate comments or suggestions...
Cheers
David |
|
| Back to top |
|
 |
plafond444
Joined: 18 Feb 2009 Posts: 4 Location: Canada
|
Posted: Wed May 13, 2009 2:29 pm Post subject: |
|
|
Thanks David, great post. I have already setup OpenERP since my last post (the worst step was to found the "bug" in hr_timesheet_invoice). I use it to invoice my customers for two months now. At this point, I'm not able to customize my invoices but it's not stopping us from using OpenERP.
I'm sure it will be helpful for so many users!  |
|
| Back to top |
|
 |
David L
Joined: 25 Feb 2009 Posts: 77 Location: London, UK
|
Posted: Wed May 13, 2009 2:43 pm Post subject: |
|
|
Hi Pat,
good to see you progressed. I will be looking into the customisation of the template when I have some time. By the looks of it, the only solution for people with little python knowledge like myself is to go for the OpenOffice plugin which is a shared funding addon.
Let me know how you get on.
Cheers
David |
|
| Back to top |
|
 |
gegard
Joined: 21 Apr 2006 Posts: 1295 Location: Cambridge, UK
|
Posted: Wed May 13, 2009 3:21 pm Post subject: Re: Setting Up a Service Company - Projects / Hours / Invoic |
|
|
I have just seen your post, apologies for missing it earlier.
| David L wrote: | ... the modules added afterwards are:
... it would be extremely usefull to be able in the module management tables to select a number of modules and click on a single button to schedule for installation as opposed to have to go into each individual modules. ... |
If you look at Tiny's profile modules you'll see that this is something they do. Not as straightforward as what you suggest, but easy enough and they provide a repeatable installation. _________________ Regards,
Geoff
Seath Solutions Ltd |
|
| Back to top |
|
 |
David L
Joined: 25 Feb 2009 Posts: 77 Location: London, UK
|
|
| Back to top |
|
 |
Aurélien O
Joined: 24 Apr 2009 Posts: 34
|
Posted: Fri May 15, 2009 10:33 am Post subject: |
|
|
Hello David L,
I wanted you thank for your post because thanks to you I manage finally to charge the service via the analytical account.
However I would have a question in you rest(pose) let us imagine that Mr project manager has 2 job (1st job: project manager, 2nd job: project senior manager) These 2 jobs have a cost at the hour different and are considered as 2 different products.
My question is the following one: how to assign Mr project manager to these 2 products?
I ask you to excuse me my English is not very good if you do not understand please let it to me know.
Cordially _________________ Aurélien O |
|
| Back to top |
|
 |
Aurélien O
Joined: 24 Apr 2009 Posts: 34
|
Posted: Fri May 15, 2009 1:47 pm Post subject: |
|
|
I found the answer alone it is with the module analytic_user_function that creates users / products rel. in the analytic. account and we chose user and product. _________________ Aurélien O |
|
| Back to top |
|
 |
David L
Joined: 25 Feb 2009 Posts: 77 Location: London, UK
|
Posted: Fri May 15, 2009 3:07 pm Post subject: |
|
|
Bonjour Aurélien,
Thanks for your post and don't worry about your english! It's better than most english speaking people's french!
I hadn't yet gone into the full details of the scenario you are mentioning but it is quite important to be able to achieve the multiple rate per employe. Most companies out there have employees that will wear a Project Manager's hat one day and a Consultant hat the other day, or a Senior Engineer the third day. Sometimes this can even happen within the same project.
Thanks for your pointer. I will look into it in more details and post back my findings as soon as possible.
Cordialement
David L
PS: Si vous avez le moindre probleme avec la langue anglaise, n'hesitez pas a ecrire en Francais ou meme a m'envoyer un PM. |
|
| Back to top |
|
 |
David L
Joined: 25 Feb 2009 Posts: 77 Location: London, UK
|
Posted: Fri May 15, 2009 3:12 pm Post subject: |
|
|
| Quote: | Note: if you leave the default general account entry, then the line will not show into the "uninvoiced lines" for the project.
As I am not really clued up totally on accounting, I assumed that this should be changed to Cost of Sales. Any suggestion would be greatly appreciated! |
Can anybody knowledgable in accounting (preferably UK side of things - Geoff, I am thinking of you here!) help me understand the relationship between the timesheet entries and the financial accounts?
- In the default settings, when a timesheet line is encoded, it is linked to the Expenses account (Based on the UK minimal chart). This means that the entry does not show up on the uninvoiced lines in the project.
- I can change that, but I would rather have the value set up automatically (I don't want users to be able to change that and I want the entries to go where they should!)
Big help needed here for the accounting ignorant that I am.
Cheers
David L |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|
|
|
|
|
|
|
|