frappe / erpnext

Free and Open Source Enterprise Resource Planning (ERP)
https://erpnext.com
GNU General Public License v3.0
20.97k stars 7.2k forks source link

[Feature Request] Projects: role-based billing and time sheets #17825

Open barredterra opened 5 years ago

barredterra commented 5 years ago

For a services company working on projects, billing and time sheets is too complicated and error-prone.

I suggest that

We can use the Project User table for the member list, as well as Activity for roles and Activity Cost for rates.

Example

Project User table:

User Name Activity Activity Cost
john@example.org John Project Manager John for Project Manager
jane@example.org Jane Development Jane for Development
fritz@customer.com Fritz Customer n.a.

Jane creates a new time sheet from Project:

Changes

Benefits

Thoughts

Item and Item Price should be used instead of Activity and Activity Cost. This way, time sheets could be mapped to Sales Invoice Items automatically.

Related

2161, #7321, #4850

wojosc commented 5 years ago

Very good Idea. This will save a lot of time and be a plus to usability.

racitup commented 5 years ago

@barredterra I'm not entirely clear if you are suggesting one or more Activity Types/Roles per user? My thought being that you could have a super-user who could do the whole project and assume multiple roles/activity types billed at different rates on the timesheet. The current functionality deals with this quite nicely. Your suggestion seems to restrict you to a single activity entry per timesheet. At the moment the Project User table seems to only be used for project updates which are entirely optional. Your suggestion seems a change to the current use. Having only just looked through the (v11) project functionality it seems pretty comprehensive already, though I agree it could be slightly more user friendly. The changes I would suggest are:

  1. A helper function to copy a task to a new/existing timesheet, using either the task assigned user (?), or if blank the currently logged in user. The Activity Type could (should?) be added to the Task.
  2. The Sales Invoice - Timesheet List could do with more columns (Activity Type, From Time, Task Number) for more detail. If you only want to invoice certain timesheets, there is currently no way to tell which to remove unless you remember the document numbers and amounts.
  3. It seems you can't issue a Sales Invoice without at least one item (mandatory) and the timesheets don't seem to fall through onto the printed version either?. Frankly I think the Project/Task functionality is brilliant with the Kanban, Calendar and Gantt charts! 👍🏻
barredterra commented 5 years ago

Your suggestion seems to restrict you to a single activity entry per timesheet.

We could allow more than one role / rate per user. Then the user would need to specify the current role for every time log.

At the moment the Project User table seems to only be used for project updates which are entirely optional. Your suggestion seems a change to the current use.

Correct. It could still be used for updates, though.

The Sales Invoice - Timesheet List could do with more columns [...] and the timesheets don't seem to fall through onto the printed version.

I agree. I solved this via Customize Form and Print Format.

It seems you can't issue a Sales Invoice without at least one item.

My current workaround is to specify "Consulting and Development" as the Item, my rate as the Item Price and the hours worked as Quantity. Time sheets get printed as a table with Date, Note and Hours on an additional page.

racitup commented 5 years ago

My current workaround is to specify "Consulting and Development" as the Item, my rate as the Item Price and the hours worked as Quantity. Time sheets get printed as a table with Date, Note and Hours on an additional page.

Is that this?

I now realise that the timesheet list on the Sales Invoice is just there for reference and you have to manually add Items and bill them separately. This seems like such a waste of time.

I'd suggest one of 2 changes:

  1. Make Activity Types directly billable on the invoice. It's common to talk of Time & Materials, the Timesheet list could be the Time, Items the Materials. However, not all projects are billed that way, i.e. Fixed Price. Pretty sure fixed price could be dealt with by having non-billable time, but keep all the other timesheet info which would be useful for milestone based projects. I quite like this approach because the Time can have lots more information, like start date, person, notes, task ID which is a lot better for explaining to the customer what the invoice is for;
  2. Rethink the Activity Types/Tasks to use Items instead so that it's not fixed to only billing Hours, but potentially you could bill Days, Weeks, etc at different rates. Then there could be a function like the current "Get items from (Sales Order/Delivery Note/Quotation)" to bring across the timesheets into the Sales Invoice. Personally I think this would need some more fields adding to the Item rows for notes, person, dates, etc. Really it seems more like a completely different DocType though. That is how MS NAV does it, the Item list on an Invoice can be made up of about 5 different things: Notes, Items, Direct General Ledger entries, Resources (Time), Item Charges (like delivery, tariffs).

time log

Which version are you using? I thought those were taken out from what I've read

racitup commented 4 years ago

(V12) I now note you can "Create Sales Invoice" from a Timesheet, which allows you to select the Item to bill and then manually modify as desired (so in theory you could timesheet in hours and bill in days). You can also add multiple timesheets to a single invoice on the invoice itself provided the Project is set the same. Since the Project Manager is the one creating the invoice, they can match the member & select billing rate from the selected item. A timesheet note field would be useful on top of the Activity Type.

You will have more experience using it in anger so am willing to support the need for speed increase, but you should still state what version you are basing this ticket on, because V12 seems quite usable to me.

barredterra commented 4 years ago

Thnaks for your comments, @racitup.

you can "Create Sales Invoice" from a Timesheet

We usually bill multiple Timesheets at once, not just one. So this doesn't help.

You can also add multiple timesheets to a single invoice.

This doesn't update the Sales Invoice Items.

Since the Project Manager is the one creating the invoice, they can match the member & select billing rate

Yes, manually you can achieve almost everything, but it's not comfortable.

My request was originally based on v11 but is still valid for v12.