Olá pessoal, eu gostaria muito de entender como fazer com que uma flag no banco de dados, ao sofrer uma alteração manual no sistema, ela sofra a mudança claro, mas o status da mudança inicial permaneça no banco de dados.
Por exemplo: Imaginem que o rh da empresa cadastrou o Josá num convênico médico chamado de plano A. Ao fazer isso, na tabela plano_alterado_status uma flag é adicionada como 0. Contudo, aparece uma oportunidade de outro convênio médico B. Daí o José solicita ao rh, que o muda para o outro convênio médico chamado de plano B. Ao mudar o José para o plano B, na tabela plano_alterado_status uma flag é adicionada como 1. Ou seja, houve mudança de flag de 0 para 1. Indicando que houve a migração. Contudo, eu queria saber como fazer com que a flag 0 inicial permaneça como um status inicial inalterável, mas também quero que no banco a nova flag indique que sofreu alteração para flag 1.
Observação: Eu já identifiquei o service que faz isso. Por isso gostaria apenas de entender duas coisas: como você pensaria sobre isso, tipo, voce criaria uma nova tabela no banco? E a segunda vou colocar parte do código de uma service para ver se você pode me ajudar a mudar a validação por favor.
Trecho do código:
public StatusConvenioMud getStatusNovoConvenio(Integer folhaBase, Integer folhaParcelaOrigem, Integer folhaInicialSituacaoMatricula, Integer folhaFinalSituacaoMatricula, TipoGeraDescontoFolha tipoCondicaoMatriculaDestino, Integer folhaCorrenteAtual, StatusParcelaFolha novoStatusIniciadoNaConvenioMigrada, StatusConvenioFolha statusAntesConvenioMigrada) {
StatusConvenioFolha statusConvenioResult = null;
if (nonNull(tipoSituacaoConvenioDestino)) {
log.info("Verificando tipo de situação de convenio para atribuir o status ao convenio que está sendo criada");
statusConvenioResult = verificaSituacaoConvenioMatriculaParaAtualizarParcela(folhaParcelaOrigem, folhaInicialSituacaoMatricula, folhaFinalConvenioMatricula, tipoSituacaoConvenioDestino, novoStatusIniciadoNaConvenioMigrada, statusAntesFolhaMigrada);
}
if (isNull(statusConvenioResult)) {
if (folhaCorrenteAtual.equals(folhaBase) || (folhaCorrenteAtual > folhaBase)) {
log.info("Migrando a partir do mês atual ou retroativo a convenio atual");
if (folhaConvenioOrigem < folhaConvenioAtual) {
if (folhaConvenioOrigem.equals(folhaBase)) {
return novoStatusIniciadoNaConvenioMigrada;
}
return statusAntesConvenioMigrada;
} else {
return novoStatusIniciadoNaConvenioMigrada;
}
} else {
log.info("Migrando convenio futura à folha corrente");
if (folhaConvenioOrigem < folhaBase) {
return statusAntesConvenioMigrada;
} else {
return novoStatusIniciadoNaConvenioMigrada;
}
}
}
return statusConvenioResult;
}