Preciso de uma ajuda com lógica (muito mesmo)

2 respostas
javer

Seguinte, tenho ma lista com Produtos, esse produtos tem alguns repetidos, quando for repetido preciso acumular alguns valores (quantidade, valor unitário, valor total, etc), e no próximo se for diferente preciso colocar todos esses valores acumulados no anterior e guardar esse anterior em uma outra lista.

Fiz esse código mas não está dando certo.
Produto itemAntes = null;//listaProdutos.get(0);
int quantosTem = listaProdutos.size();
int counter = 0;
double quantidadeComercial2 = 0.0;
double quantidadeTributada2 = 0.0;
double valorTotal2 = 0.0;
double valorUnitario2 = 0.0;
double valorUnitarioTributato2 = 0.0;
double valorDesconto2 = 0.0;
double valorFrete2 = 0.0;

while (it1.hasNext()) {
    Produto item = it1.next();
    counter++;
    quantidadeComercial2 = quantidadeComercial2 + item.getQuantidadeComercial();
    quantidadeTributada2 = quantidadeTributada2 + item.getQuantidadeTributavel();
    valorTotal2 = valorTotal2 + item.getValorTotal();
    valorUnitario2 = valorUnitario2 + item.getValorUnitario();
    valorUnitarioTributato2 = valorUnitarioTributato2 + item.getValorUnitarioTributavel();
    valorDesconto2 = valorDesconto2 + item.getValorDesconto();
    valorFrete2 = valorFrete2 + item.getValorFrete();

    if (item.equals(itemAntes) && counter > 1) {
        System.out.println("Anterior: " + itemAntes.getCodigoProdutoServico());
        System.out.println("Atual: " + item.getCodigoProdutoServico());
        System.out.println("Produto: " + item.getCodigoProdutoServico() + ") " + item.getDescricao());
        quantidadeComercial2 = quantidadeComercial2 + item.getQuantidadeComercial();
        quantidadeTributada2 = quantidadeTributada2 + item.getQuantidadeTributavel();
        valorTotal2 = valorTotal2 + item.getValorTotal();
        valorUnitario2 = valorUnitario2 + item.getValorUnitario();
        valorUnitarioTributato2 = valorUnitarioTributato2 + item.getValorUnitarioTributavel();
        valorDesconto2 = valorDesconto2 + item.getValorDesconto();
        valorFrete2 = valorFrete2 + item.getValorFrete();
    } else {
        // Quando chegar em um DIFERENTE do anterior QUERO adicionar a uma lista o anterior com os valores acumulados
        System.out.println("== AGORA TEM QUE ADICIONAR ===");
        System.out.println("Produto: " + item.getDescricao());
        System.out.println("Quantidade: " + quantidadeComercial2);
    }
    itemAntes = item;

}
Alguém me ajuda?

2 Respostas

Anime

javer:
Seguinte, tenho ma lista com Produtos, esse produtos tem alguns repetidos, quando for repetido preciso acumular alguns valores (quantidade, valor unitário, valor total, etc), e no próximo se for diferente preciso colocar todos esses valores acumulados no anterior e guardar esse anterior em uma outra lista.

Oi javer,vc esta fazendo um controle de vendas,é isso…não entendi quando vc fala que os produtos são repetidos,acho que seria os iténs de venda,eles sim poderiam se repetir…ou estou errada…

desculpe :oops:

javer

Na verdade são Ordens de Serviço, em cada Ordem de Serviço pode ter vários Serviços, só que cada uma delas tem que ser considerada como apenas um Produto na nota fiscal, por esse motivo tenho que fazer as acumulações de todos os Serviços.

O importante é que não estou conseguindo fazer ele acumular os valores e quando for CÓDIGO diferente eu salvar (adicionar em outra lista) e continuar.

Criado 28 de outubro de 2010
Ultima resposta 28 de out. de 2010
Respostas 2
Participantes 2