Subversion Repositories Integrator Subversion

Rev

Rev 574 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.domain.dto;

import java.util.Date;

import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.model.Fornecedor;

public class AnaliseVendaProdutoDTO {
       
        private static final Integer QUANTIDADE_MESES_VENDAS_3 = 3;
       
        private ProdutoDTO produtoDTO;
        private Integer quantidadeEstoque;
        private Integer quantidadeVendas;
        private Integer quantidadeVendasAposCompra;
        private Date dataUltimaCompra;
        private Date dataUltimaVenda;
        private ProdutoPedidoCompraDTO produtoPedidoCompraDTO;
        private FornecedorDTO fornecedorDTO;
       
        private Integer quantidadeDiasParaComprar = 90;
       
//      private RankingModeloDTO rankingModelo;
       
//      private List<RankingComprasTransferenciasEstiloDTO> estilos;
//      private List<RankingComprasTransferenciasAlertaDTO> alertas;
       
        private Integer quantidadeAlertasPossiveis;
       
        public AnaliseVendaProdutoDTO() {
//              setEstilos(new ArrayList<RankingComprasTransferenciasEstiloDTO>());
//              setAlertas(new ArrayList<RankingComprasTransferenciasAlertaDTO>());
                setQuantidadeAlertasPossiveis(0);
        }
       
        public ProdutoDTO getProdutoDTO() {
                return produtoDTO;
        }
        public void setProdutoDTO(ProdutoDTO produtoDTO) {
                this.produtoDTO = produtoDTO;
        }
       
        public Integer getQuantidadeAlertasPossiveis() {
                return quantidadeAlertasPossiveis;
        }
        public void setQuantidadeAlertasPossiveis(Integer quantidadeAlertasPossiveis) {
                this.quantidadeAlertasPossiveis = quantidadeAlertasPossiveis;
        }

        public Integer getQuantidadeEstoque() {
                return quantidadeEstoque;
        }
        public void setQuantidadeEstoque(Integer quantidadeEstoque) {
                this.quantidadeEstoque = quantidadeEstoque;
        }
       
        public Integer getQuantidadeVendas() {
                return quantidadeVendas;
        }
        public void setQuantidadeVendas(Integer quantidadeVendas) {
                this.quantidadeVendas = quantidadeVendas;
        }
       
        public Integer getQuantidadeVendasAposCompra() {
                return quantidadeVendasAposCompra;
        }
        public void setQuantidadeVendasAposCompra(Integer quantidadeVendasAposCompra) {
                this.quantidadeVendasAposCompra = quantidadeVendasAposCompra;
        }
        public Date getDataUltimaCompra() {
                return dataUltimaCompra;
        }
        public void setDataUltimaCompra(Date dataUltimaCompra) {
                this.dataUltimaCompra = dataUltimaCompra;
        }
       
        public Date getDataUltimaVenda() {
                return dataUltimaVenda;
        }
        public void setDataUltimaVenda(Date dataUltimaVenda) {
                this.dataUltimaVenda = dataUltimaVenda;
        }
       
        public ProdutoPedidoCompraDTO getProdutoPedidoCompraDTO() {
                return produtoPedidoCompraDTO;
        }
        public void setProdutoPedidoCompraDTO(ProdutoPedidoCompraDTO produtoPedidoCompraDTO) {
                this.produtoPedidoCompraDTO = produtoPedidoCompraDTO;
        }
       
        public FornecedorDTO getFornecedorDTO() {
                return fornecedorDTO;
        }
        public void setFornecedorDTO(FornecedorDTO fornecedorDTO) {
                this.fornecedorDTO = fornecedorDTO;
        }
       
        public Integer getQuantidadeDiasParaComprar() {
                return quantidadeDiasParaComprar;
        }
        public void setQuantidadeDiasParaComprar(Integer quantidadeDiasParaComprar) {
                this.quantidadeDiasParaComprar = quantidadeDiasParaComprar;
        }
       
        /*********************************************/
       
        public Integer tempoDeEstoque() {
                if (VerificadorUtil.naoEstaNulo(getQuantidadeVendasAposCompra())) {
                        return getQuantidadeVendasAposCompra()/QUANTIDADE_MESES_VENDAS_3;
                }
                return 0;
        }
       
        public Integer quantidadeParaComprar() {
                       
                return 0;
        }
       
        /*
        public List<RankingComprasTransferenciasAlertaDTO> verificarAlertasLogistica(Double quantidadeMinimaParaTransferirOuComprar) {
                List<RankingComprasTransferenciasAlertaDTO> alertas = new ArrayList<RankingComprasTransferenciasAlertaDTO>();
               
                for (RankingComprasTransferenciasEstiloDTO estilo : getEstilos()) {
                        Integer estoqueTotalMatriz = 0;
                        for (RankingComprasTransferenciasEstiloPorLojaDTO estiloPorLoja : estilo.getRankingsPorLoja()) {
                                if (estiloPorLoja.getLojaDTO().getSequencial().equals(ConstantesSEC.Loja.SEQUENCIAL_MATRIZ_ESTOQUE_9)) {
                                        estoqueTotalMatriz = estiloPorLoja.getQuantidadeEstoqueGeral();
                                        break;
                                }
                        }
                        Integer estoqueMaiorLojaPrioridade = 0;
                        Integer quantidadeAlertasPossiveis = 0;
                        LojaDTO lojaMaiorPrioridade = null;
                        for (RankingComprasTransferenciasEstiloPorLojaDTO estiloPorLoja : estilo.getRankingsPorLoja()) {
                                if (!estiloPorLoja.getLojaDTO().getSequencial().equals(ConstantesSEC.Loja.SEQUENCIAL_MATRIZ_ESTOQUE_9)) {
                                       
                                        estiloPorLoja.setQuantidadeMinimaTransferir(quantidadeMinimaParaTransferirOuComprar);
                                       
                                        // VERIFICAR SE HÁ ESTOQUE NA MATRIZ E NÃO TEM EM ALGUMA LOJA
                                        if (estoqueTotalMatriz > 0) {
                                                if (estiloPorLoja.getQuantidadeEstoqueGeral() <= 0) {
                                                        adicionarAlertaLogistica(alertas, estiloPorLoja.getLojaDTO(), estilo.getEstilo(), TipoAlertaComprasTransferencias.SEM_ESTOQUE);
                                                } else {
                                                        quantidadeAlertasPossiveis++;
                                                }
                                        }
                                       
                                        // VERIFICAR SE TEM PARA TRANSFERIR
                                        if (estiloPorLoja.quantidadeParaTransferirUnissex() > 0 ||
                                                estiloPorLoja.quantidadeParaTransferirMasculino() > 0 ||
                                                estiloPorLoja.quantidadeParaTransferirFeminino() > 0) {
                                                adicionarAlertaLogistica(alertas, estiloPorLoja.getLojaDTO(), estilo.getEstilo(), TipoAlertaComprasTransferencias.TRANSFERIR);
                                        } else {
                                                quantidadeAlertasPossiveis++;
                                        }
                                       
                                        // VERIFICAR SE TEM ALGUMA LOJA DE MAIOR PRIORIDADE COM ESTOQUE MENOR
                                        if (estoqueMaiorLojaPrioridade > 0) {
                                                Integer estoqueTotalLoja = estiloPorLoja.getQuantidadeEstoqueGeral();
                                                if (estoqueMaiorLojaPrioridade < estoqueTotalLoja) {
                                                        adicionarAlertaLogistica(alertas, lojaMaiorPrioridade, estilo.getEstilo(), TipoAlertaComprasTransferencias.ESTOQUE_MENOR_PRIORIDADE);
                                                } else {
                                                        quantidadeAlertasPossiveis++;
                                                }
                                        }
                                        estoqueMaiorLojaPrioridade = estiloPorLoja.getQuantidadeEstoqueGeral();
                                        lojaMaiorPrioridade = estiloPorLoja.getLojaDTO();
                                }
                        }
                        setQuantidadeAlertasPossiveis(quantidadeAlertasPossiveis);
                }
                return alertas;
        }
       
        private void adicionarAlertaLogistica(List<RankingComprasTransferenciasAlertaDTO> alertas, LojaDTO lojaDTO, TipoEstiloProduto estilo, TipoAlertaComprasTransferencias tipoAlerta) {
                Boolean adicionarAlerta = true;
                for (RankingComprasTransferenciasAlertaDTO alerta : alertas) {
                        if (alerta.getLoja().equals(lojaDTO) && alerta.getEstilo().equals(estilo)) {
                                adicionarAlerta = false;
                        }
                }
                if (adicionarAlerta) {
                        RankingComprasTransferenciasAlertaDTO alerta = new RankingComprasTransferenciasAlertaDTO();
                        alerta.setLoja(lojaDTO);
                        alerta.setEstilo(estilo);
                        alerta.setTipoAlertaComprasTransferencias(tipoAlerta);
                        alertas.add(alerta);
                }
        }
       
        public List<RankingComprasTransferenciasAlertaDTO> verificarAlertasCompras(Double quantidadeMinimaParaComprar) {
                List<RankingComprasTransferenciasAlertaDTO> alertas = new ArrayList<RankingComprasTransferenciasAlertaDTO>();
                for (RankingComprasTransferenciasEstiloDTO estilo : getEstilos()) {
                        estilo.setQuantidadeMinimaComprar(quantidadeMinimaParaComprar);
                        if (estilo.quantidadeParaComprarUnissex() > 0) {
                                adicionarAlertaCompras(alertas, estilo.getEstilo(), TipoAlertaComprasTransferencias.COMPRAR, TipoGenero.UNISSEX);
                        } else {
                                quantidadeAlertasPossiveis++;
                        }
                        if (estilo.quantidadeParaComprarMasculino() > 0) {
                                adicionarAlertaCompras(alertas, estilo.getEstilo(), TipoAlertaComprasTransferencias.COMPRAR, TipoGenero.MASCULINO);
                        } else {
                                quantidadeAlertasPossiveis++;
                        }
                        if (estilo.quantidadeParaComprarFeminino() > 0) {
                                adicionarAlertaCompras(alertas, estilo.getEstilo(), TipoAlertaComprasTransferencias.COMPRAR, TipoGenero.FEMININO);
                        } else {
                                quantidadeAlertasPossiveis++;
                        }
                }
                return alertas;
        }

        private void adicionarAlertaCompras(List<RankingComprasTransferenciasAlertaDTO> alertas, TipoEstiloProduto estilo, TipoAlertaComprasTransferencias tipoAlerta, TipoGenero genero) {
                Boolean adicionarAlerta = true;
                for (RankingComprasTransferenciasAlertaDTO alerta : alertas) {
                        if (alerta.getEstilo().equals(estilo)) {
                                adicionarAlerta = false;
                        }
                }
                if (adicionarAlerta) {
                        RankingComprasTransferenciasAlertaDTO alerta = new RankingComprasTransferenciasAlertaDTO();
                        alerta.setEstilo(estilo);
                        alerta.setTipoAlertaComprasTransferencias(tipoAlerta);
                        alerta.setGenero(genero);
                        alertas.add(alerta);
                }
        }
        */

}