none
Not submitted Timesheets

    Question

  • Hello,

    I wanted to plot no of timesheets submitted vs total no of timesheets for an duration(periods/month/year).

    As Timesheets Dataset will have only timesheet which are created-in progress(users who have created timesheet either by clicking "create in manage timesheet"/"type some hours in timesheet"). To get the submitted timesheets count suggest the best approach.

    Two approaches which i can think as of now.

    Approach 1 : Consider all the resources and remove the resources who have submitted timesheets to get "not submitted" count.

    Cons for this approach: When resource didn't join the org(before resource creation), still it is considered as not submitted because the logic we are checking with total resources.

    Approach 2: Create Timesheet automatically. 

    In this approach, create timesheet for each resource on a scheduled interval to get this information in timesheet dataset.

    Would there be a challenge in performance? Because it would create entries in TimesheetLines, TimesheetLineActualDataset.

    What would be best approach to follow/suggest if any another approach.

    Tuesday, May 21, 2019 10:10 AM

All replies

  • On approach 1: Try this out: https://gallery.technet.microsoft.com/projectserver/Timesheet-Status-Report-37b95da2#content

    That package would use resource availability as a key to determine if a timesheet was owed or not... so put in "earliest" start dates in project online (or custom availability), that's then considered for the purpose of determining if a timesheet is owed or not.

    However, since the time I put that together, we've swapped our source for requiring a timesheet. We didn't want people to have to submit a blank timesheet if we (the system) knew they didn't have any assignments in that period. So now I have a report that (among many other things) checks AssignmentTimephasedDataSet for active tasks where assignment work is greater than 0 AND the actual and planned don't match, filter anything greater than today (so they don't yet owe a timesheet for a week that's not passed), do an anti-merge against approved timesheets (to catch a timesheet where they entered time against one project, but not another or they did submit a blank timesheet and it was on purpose because they did no work even though they had an assignment), and then another anti merge to clear out assignments to generic resources, and then do a join against resource information to get names

    Here's the source I use... 

    OData.Feed("https://YourAddressHere.sharepoint.com/sites/pwa/_api/ProjectData/AssignmentTimephasedDataSet?$select=ProjectName,TimeByDay,ResourceId&$filter=TaskIsActive eq true and AssignmentWork ne 0 and AssignmentWork ne AssignmentActualWork and AssignmentActualWork eq 0 and TimeByDay ge datetime'2017-10-02'",null,[Implementation="2.0"]),


    Ian

    Tuesday, May 21, 2019 5:25 PM
  • your second approach intrigues me... but I've never been able to get impersonation to work. Have you had any luck there?

    Also, I'll mention that we rollup the actual data set to weeks in PWA settings... so that matches with our timesheets that are also setup to be weeks which is why I can join on the date of the timesheet/assignment actuals.


    Ian

    Tuesday, May 21, 2019 5:28 PM