It took me quite some time to come back to this.
Yes @dave you are absolutely right: The join_date
and the leave_date
is what determines whether the membership is active. This is esp. true since whether the membership is active depends on the reporting day as well (see Reporting date - passing date to search in list-view).
Thus the states are workflow-states only. These will allow to hide some fields and add some constraints depending on workflow state.
No I wonder whether it is a good idea to make the date fields read-only depending in state, as this will inhibit correcting erroneous dates.