The method on effort is in some way simplified version of the method on progress.
So it should not rely on the state of the work but if the progress is 100%.
Also effort method should use the project.work.invoiced_progress instead of the Many2One invoice_line. This would allow to have a single place to look.
This would allow also to implement https://discuss.tryton.org/t/link-between-sales-and-projects/654/11?u=ced