pessoal,
tenho um bean:
VeiculoFrota.java
...
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="codigo_centro_resultado")
public CentroResultadoCliente getCentroResultadoCliente()
{
return centroResultadoCliente;
}
public void setCentroResultadoCliente(CentroResultadoCliente centroResultadoCliente)
{
this.centroResultadoCliente = centroResultadoCliente;
}
...
uma classe action com o metodo abaixo:
private void alteraLimiteValorReferencia(ActionForm form, HttpServletRequest request, List<VeiculoFrota> veiculosFrota, Cliente cliente) throws BatchUpdateException, BusinessException
{
DynaActionForm dynaForm = (DynaActionForm) form;
List<ControleLiberacaoVeiculo> controlesLiberacaoVeiculo = new ArrayList<ControleLiberacaoVeiculo>();
String tipoLancamento = "";
Double saldoCentro = 0d;
Double saldoCentroAtual = veiculosFrota.get(0).getCentroResultadoCliente().getSaldoDisponivel();
Double limite = 0d;
Double saldo = 0d;
Double novoLimite = 0d;
Double valorEfetivado = 0d;
Long formaAlteracao = (Long)dynaForm.get("formaAlteracao");
Double valorReferencia = (Double)dynaForm.get("valorReferencia");
Long periodoAlteracao = (Long)dynaForm.get("periodoAlteracao");
int conta=0;
for(VeiculoFrota veiculoFrota : veiculosFrota)
{
if(veiculoFrota.getCentroResultadoCliente() != null && veiculoFrota.getCentroResultadoCliente().getSaldoDisponivel() != null)
{
saldoCentro = veiculoFrota.getCentroResultadoCliente().getSaldoDisponivel();
}
if(saldoCentro < 0)
{
throw new BusinessException("O Saldo do centro de resultado " + veiculoFrota.getCentroResultadoCliente().getDescricao() + " não suporta a alteração de limite para os veículos.");
}
saldoCentro += valorEfetivado;
if(periodoAlteracao == 1 || periodoAlteracao == 3)
{
veiculoFrota.getCentroResultadoCliente().setSaldoDisponivel(saldoCentro);
}
}
this.updateLimiteSaldo(request, veiculosFrota, controlesLiberacaoVeiculo);
}
todas as vezes que atualizo o saldo disponivel no ultimo if, essa informacao nao esta sendo atualizada no banco, e assim,
na segunda iteracao do laco ao inves de pegar o valor do saldo disponivel atualizado, ta sempre pegando o valor que ja
estava no banco.
situacao exemplo abaixo em que ha 2 centros de resultado cliente e cada um deles pode conter zero ou mais veiculoFrota.
se eu passar apenas um centro de resultado entao funciona normalmente.
se eu passar mais de um centro de resultado entao o problema aparece, ou seja, o programa, para um dado centro de resultado
pega apenas o saldo do ultimo veiculoFrota do banco, e nao soma os saldos de todos registros do saldo centro como desejado.
Alguem sabe o motivo ?