Subversion Repositories Integrator Subversion

Rev

Rev 515 | Rev 517 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.domain.dto;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

import br.com.ec.core.util.DataUtils;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.model.ProdutoLoja;
import br.com.ec.domain.model.tipos.TipoPeriodoConsulta;

public class LogisticaDTO {
       
        private String tipoPeriodoConsulta;
        private String tipoProduto;
        private Long sequencialLojaSaida;
       
        private Date dataInicial;
        private Date dataFinal;
        private List<ProdutoLojaDTO> produtosParaVerificar;
        private List<ProdutoLojaDTO> ProdutosAntesDistribuir;
       
        private List<TransferenciaDTO> transferencias;
       
        private List<LojaDTO> lojasPorMaiorPrioridade;
        private List<LojaDTO> lojasPorMenorPrioridade;
        /*
//      private VigenciaDTO vigenciaDTO;
        private List<ConsolidadoPessoaJuridicaDTO> notasFiscaisPessoaJuridica = new ArrayList<ConsolidadoPessoaJuridicaDTO>();
        private Double valorTotalNotasFiscaisRecebidas = new Double(0.0);
        private Integer notasFiscaisRecebidas = 0;
        private Double valorTotalNotasFiscaisRemessas = new Double(0.0);
        private Integer notasFiscaisRemessas = 0;
        */

       
        public LogisticaDTO() {
                setProdutosParaVerificar(new ArrayList<ProdutoLojaDTO>());
                setProdutosAntesDistribuir(new ArrayList<ProdutoLojaDTO>());
                setTransferencias(new ArrayList<TransferenciaDTO>());
                setTipoPeriodoConsulta(TipoPeriodoConsulta.ULTIMOS_15_DIAS.getValor());
                atualizarPeriodo();
        }
       
        public String getTipoPeriodoConsulta() {
                return tipoPeriodoConsulta;
        }
        public void setTipoPeriodoConsulta(String tipoPeriodoConsulta) {
                this.tipoPeriodoConsulta = tipoPeriodoConsulta;
        }
       
        public String getTipoProduto() {
                return tipoProduto;
        }
        public void setTipoProduto(String tipoProduto) {
                this.tipoProduto = tipoProduto;
        }
       
        public Long getSequencialLojaSaida() {
                return sequencialLojaSaida;
        }
        public void setSequencialLojaSaida(Long sequencialLojaSaida) {
                this.sequencialLojaSaida = sequencialLojaSaida;
        }
       
        public Date getDataInicial() {
                return dataInicial;
        }
        public void setDataInicial(Date dataInicial) {
                this.dataInicial = dataInicial;
        }
       
        public Date getDataFinal() {
                return dataFinal;
        }
        public void setDataFinal(Date dataFinal) {
                this.dataFinal = dataFinal;
        }
       
        public List<ProdutoLojaDTO> getProdutosParaVerificar() {
                return produtosParaVerificar;
        }
        public void setProdutosParaVerificar(List<ProdutoLojaDTO> produtosParaVerificar) {
                this.produtosParaVerificar = produtosParaVerificar;
        }
       
        public List<ProdutoLojaDTO> getProdutosAntesDistribuir() {
                return ProdutosAntesDistribuir;
        }
        public void setProdutosAntesDistribuir(List<ProdutoLojaDTO> produtosAntesDistribuir) {
                ProdutosAntesDistribuir = produtosAntesDistribuir;
        }
       
        public List<TransferenciaDTO> getTransferencias() {
                return transferencias;
        }
        public void setTransferencias(List<TransferenciaDTO> transferencias) {
                this.transferencias = transferencias;
        }
       
        public List<LojaDTO> getLojasPorMaiorPrioridade() {
                return lojasPorMaiorPrioridade;
        }
        public void setLojasPorMaiorPrioridade(List<LojaDTO> lojasPorMaiorPrioridade) {
                this.lojasPorMaiorPrioridade = lojasPorMaiorPrioridade;
        }
       
        public List<LojaDTO> getLojasPorMenorPrioridade() {
                return lojasPorMenorPrioridade;
        }
        public void setLojasPorMenorPrioridade(List<LojaDTO> lojasPorMenorPrioridade) {
                this.lojasPorMenorPrioridade = lojasPorMenorPrioridade;
        }
       
        /*******************************************/
       
        public void atualizarPeriodo() {
                if (getTipoPeriodoConsulta().equals(TipoPeriodoConsulta.ULTIMOS_7_DIAS.getValor())) {
                        setDataInicial(new DataUtils().getDataComHorarioMinimo(DataUtils.acrescentarDias(DataUtils.getDataAtual(), -7)));
                        setDataFinal(new DataUtils().getDataComHorarioMaximo(DataUtils.getDataAtual()));
                }
                if (getTipoPeriodoConsulta().equals(TipoPeriodoConsulta.ULTIMOS_15_DIAS.getValor())) {
                        setDataInicial(new DataUtils().getDataComHorarioMinimo(DataUtils.acrescentarDias(DataUtils.getDataAtual(), -15)));
                        setDataFinal(new DataUtils().getDataComHorarioMaximo(DataUtils.getDataAtual()));
                }
                if (getTipoPeriodoConsulta().equals(TipoPeriodoConsulta.ULTIMOS_30_DIAS.getValor())) {
                        setDataInicial(new DataUtils().getDataComHorarioMinimo(DataUtils.acrescentarDias(DataUtils.getDataAtual(), -30)));
                        setDataFinal(new DataUtils().getDataComHorarioMaximo(DataUtils.getDataAtual()));
                }
                if (getTipoPeriodoConsulta().equals(TipoPeriodoConsulta.ULTIMOS_60_DIAS.getValor())) {
                        setDataInicial(new DataUtils().getDataComHorarioMinimo(DataUtils.acrescentarDias(DataUtils.getDataAtual(), -60)));
                        setDataFinal(new DataUtils().getDataComHorarioMaximo(DataUtils.getDataAtual()));
                }
                if (getTipoPeriodoConsulta().equals(TipoPeriodoConsulta.ULTIMOS_90_DIAS.getValor())) {
                        setDataInicial(new DataUtils().getDataComHorarioMinimo(DataUtils.acrescentarDias(DataUtils.getDataAtual(), -90)));
                        setDataFinal(new DataUtils().getDataComHorarioMaximo(DataUtils.getDataAtual()));
                }
                if (getTipoPeriodoConsulta().equals(TipoPeriodoConsulta.MES_ATUAL.getValor())) {
                        setDataInicial(new DataUtils().getDataComHorarioMinimo(DataUtils.getPrimeiroDiaDoMesAtual()));
                        setDataFinal(new DataUtils().getDataComHorarioMaximo(DataUtils.getUltimoDiaDoMesAtual()));
                }
        }
       
        public List<ProdutoDTO> produtosEmTransferencia() {
                List<ProdutoDTO> produtosEmTransferencia = new ArrayList<ProdutoDTO>();
                for (TransferenciaDTO transferencia : getTransferencias()) {
                        if (VerificadorUtil.naoEstaNuloOuVazio(transferencia.getProdutosDTO())) {
                                for (TransferenciaProdutoDTO transferenciaProdutoDTO : transferencia.getProdutosDTO()) {
                                        if (!produtosEmTransferencia.contains(transferenciaProdutoDTO.getProdutoDTO())) {
                                                produtosEmTransferencia.add(transferenciaProdutoDTO.getProdutoDTO());
                                        }
                                }
                        }
                }
                return produtosEmTransferencia;
        }
       
        public Integer estoqueProduto(ProdutoDTO produtoDTO, LojaDTO lojaDTO) {
                for (ProdutoLojaDTO produtoLojaDTO : getProdutosAntesDistribuir()) {
                        if (produtoLojaDTO.getSequencialDoProduto().equals(produtoDTO.getSequencial()) &&
                                produtoLojaDTO.getLojaDTO().equals(lojaDTO)) {
                                return produtoLojaDTO.getQuantidadeEstoqueAnterior();
                        }
                }
                return null;
        }
       
        public Integer quantidadeTransferida(ProdutoDTO produtoDTO, LojaDTO lojaSaidaDTO, LojaDTO lojaEntradaDTO) {
                Integer quantidadeTransferida = 0;
                for (TransferenciaDTO transferenciaDTO : getTransferencias()) {
                        if (VerificadorUtil.naoEstaNuloOuVazio(transferenciaDTO.getProdutosDTO())) {
                                for (TransferenciaProdutoDTO transferenciaProdutoDTO : transferenciaDTO.getProdutosDTO()) {
                                        if (transferenciaProdutoDTO.getProdutoDTO().equals(produtoDTO)) {
                                                if (VerificadorUtil.naoEstaNulo(lojaSaidaDTO)) {
                                                        if (transferenciaDTO.getLojaSaidaDTO().equals(lojaSaidaDTO)) {
                                                                quantidadeTransferida = quantidadeTransferida - transferenciaProdutoDTO.getQuantidadeTransferir();
                                                        }
                                                } else if (VerificadorUtil.naoEstaNulo(lojaEntradaDTO)) {
                                                        if (transferenciaDTO.getLojaEntradaDTO().equals(lojaEntradaDTO)) {
                                                                quantidadeTransferida = quantidadeTransferida + transferenciaProdutoDTO.getQuantidadeTransferir();
                                                        }
                                                }
                                               
                                        }
                                }
                        }
                }
                if (quantidadeTransferida == 0) {return null;}
                return quantidadeTransferida;
        }
       
        /*
        public VigenciaDTO getVigenciaDTO() {
                return vigenciaDTO;
        }
        public void setVigenciaDTO(VigenciaDTO vigenciaDTO) {
                this.vigenciaDTO = vigenciaDTO;
        }
        public List<ConsolidadoPessoaJuridicaDTO> getConsolidadosPessoaJuridica() {
                return consolidadosPessoaJuridica;
        }
        public void setConsolidadosPessoaJuridica(List<ConsolidadoPessoaJuridicaDTO> consolidadosPessoaJuridica) {
                this.consolidadosPessoaJuridica = consolidadosPessoaJuridica;
        }
       
        public Double getValorTotalNotasFiscaisRecebidas() {
                return valorTotalNotasFiscaisRecebidas;
        }
        public void setValorTotalNotasFiscaisRecebidas(Double valorTotalNotasFiscaisRecebidas) {
                this.valorTotalNotasFiscaisRecebidas = valorTotalNotasFiscaisRecebidas;
        }
       
        public Integer getNotasFiscaisRecebidas() {
                return notasFiscaisRecebidas;
        }
        public void setNotasFiscaisRecebidas(Integer notasFiscaisRecebidas) {
                this.notasFiscaisRecebidas = notasFiscaisRecebidas;
        }
       
        public Double getValorTotalNotasFiscaisRemessas() {
                return valorTotalNotasFiscaisRemessas;
        }
        public void setValorTotalNotasFiscaisRemessas(Double valorTotalNotasFiscaisRemessas) {
                this.valorTotalNotasFiscaisRemessas = valorTotalNotasFiscaisRemessas;
        }
       
        public Integer getNotasFiscaisRemessas() {
                return notasFiscaisRemessas;
        }
        public void setNotasFiscaisRemessas(Integer notasFiscaisRemessas) {
                this.notasFiscaisRemessas = notasFiscaisRemessas;
        }
       
        public Double getValorTotalNotasFiscaisGeralEmitidas() {
                Double valorTotal = new Double(0.0);
                for (ConsolidadoPessoaJuridicaDTO consolidadoPessoaJuridica : getConsolidadosPessoaJuridica()) {
                        valorTotal = valorTotal + consolidadoPessoaJuridica.getValorTotalNotasFiscaisEmitidas();
                }
                return valorTotal;
        }
       
        public Integer getNotasFiscaisGeralEmitidas() {
                Integer quantidadeTotal = 0;
                for (ConsolidadoPessoaJuridicaDTO consolidadoPessoaJuridica : getConsolidadosPessoaJuridica()) {
                        quantidadeTotal = quantidadeTotal + consolidadoPessoaJuridica.getNotasFiscaisEmitidas();
                }
                return quantidadeTotal;
        }
        */

}