## Projects and time tracking: clients, projects, tasks and timesheets To do Doing Done Client @Clients order="name" name d r contactName email Project @Projects order="name" name d r client Client ds r hourlyRate double r budgetHours integer active boolean default="true" hoursLogged double ds formula="(SELECT COALESCE(SUM(t.hours), 0) FROM time_entry t WHERE t.project = id)" Task @Projects order="dueDate" title d r project Project ds r assignee User ds dueDate date ds status enum enumset="TaskStatus" ds default="todo" Timesheet @Time order="weekStart desc" person User d fixed default="User:find(userId)" weekStart date d r entries TimeEntry set ei x childproperty="timesheet" totalHours double ds calculated="sum(entries[*].hours)" totalAmount double calculated="sum(entries[*].amount)" TimeEntry @ timesheet Timesheet date r project Project r subset="active" task Task subset="forProjectOpen" subsetparams="project" hours double r rate double disabled \ amount double calculated="hours * rate" notes User @Administration order="username" username d r fullName ds r email r active boolean default="true"