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;
}
*/
}