public void clear(final Account account, final OverdueState previousOverdueState, final OverdueState clearState, final InternalCallContext context) throws OverdueException {
log.debug("OverdueStateApplicator:clear : time = " + clock.getUTCNow() + ", previousState = " + previousOverdueState.getName());
storeNewState(account, clearState, context);
clearFutureNotification(account, context);
try {
avoid_extra_credit_by_toggling_AUTO_INVOICE_OFF(account, previousOverdueState, clearState, context);
} catch (OverdueApiException e) {
throw new OverdueException(e);
}
try {
bus.post(createOverdueEvent(account, previousOverdueState.getName(), clearState.getName(), isBlockBillingTransition(previousOverdueState, clearState),
isUnblockBillingTransition(previousOverdueState, clearState), context));
} catch (Exception e) {
log.error("Error posting overdue change event to bus", e);
}
}