At last, I found that the issue was the canSubmitToWorkflow method. It was returning true after it had been submitted and thus did not allow the buttons to switch.
final class BankReconciliation_Extension
{
/// <returns>boolean</returns>
public boolean canSubmitToWorkflow()
{
boolean canSubmitWorkflow = next canSubmitToWorkflow();
if (BankAccountTrans.WorkflowState != BankAccountWorkflowState::Approved)
{
canSubmitWorkflow = true;
}
else
{
canSubmitWorkflow = false;
}
}
final class BankReconciliation_Extension
{
/// <returns>boolean</returns>
public boolean canSubmitToWorkflow()
{
boolean canSubmitWorkflow = next canSubmitToWorkflow();
if (BankAccountTrans.WorkflowState != BankAccountWorkflowState::Submitted)
{
canSubmitWorkflow = true;
}
else
{
canSubmitWorkflow = false;
}
}