There is an issue with the two setter 'set_timesheet_available' and 'set_timesheet_date'. When both fields are set in the same create/write call, the 'set_timesheet_date' may be ignored because the 'set_timesheet_available' was not yet called to create the timesheet work.
I do not think the problem is in project module but more a missing feature of the ModelSQL which should have a way to order the calls to set method. I think the Field.set method should be called using the order of the "depends tree". I think that each similar case where setter order is important, the fields depend on each other because mainly the later will have a states depending on the first.
Now, I think the depends order should be solved once in the Model.__post_setup__ to not kill the performance.