package br.com.ec.domain.dto;
import java.util.Date;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.model.Loja;
import br.com.ec.domain.model.Produto;
import br.com.ec.domain.model.ProdutoLojaId;
import br.com.ec.domain.model.Usuario;
public class ProdutoLojaDTO
{
private ProdutoDTO produtoDTO
;
private LojaDTO lojaDTO
;
private Integer quantidadeEstoque
;
/*
private ProdutoLojaId produtoLojaId;
private Produto produto;
private Loja loja;
private Integer quantidadeEstoque;
private Integer quantidadeEstoqueContagem;
// private Integer quantidadeEstoqueUltimaContagem;
private Date dataContagem;
private Date dataContagemPreparacao;
private Usuario usuarioUltimaContagem;
private Usuario usuarioUltimaContagemPreparacao;
private String localizacao;
private Boolean indicadorContagemSolicitada = false;
*/
private Integer quantidadeMinimaTransferir
;
private Integer quantidadeVendida
;
private Integer quantidadeParaTransferir
;
private Integer quantidadeEstoqueAnterior
;
private Boolean indicadorSolicitarTransferencia =
false;
private Boolean retirarTransferenciaAutomatica
;
public ProdutoLojaDTO
() {
}
public static String CONSULTA_DTO_COMPLETA_QUANTIDADE_VENDAS =
"e.produto.sequencial, e.produto.codigo, e.produto.descricao, e.produto.subtipoProduto.sequencial, e.produto.subtipoProduto.descricao, "
+
"e.loja.sequencial, e.quantidadeEstoque, e.retirarTransferenciaAutomatica"; // + QUANTIDADE_VENDIDA
public ProdutoLojaDTO
(Long sequencialProduto,
String codigoProduto,
String descricaoProduto,
Long sequencialSubtipoProduto,
String descricaoSubtipoProduto,
Long sequencialLoja,
Integer quantidadeEstoque,
Boolean retirarTransferenciaAutomatica,
Long quantidadeVendida
) {
this.
produtoDTO =
new ProdutoDTO
(sequencialProduto, codigoProduto, descricaoProduto, sequencialSubtipoProduto, descricaoSubtipoProduto
);
this.
lojaDTO =
new LojaDTO
(sequencialLoja
);
this.
quantidadeEstoque = quantidadeEstoque
;
this.
retirarTransferenciaAutomatica = retirarTransferenciaAutomatica
;
if (VerificadorUtil.
naoEstaNulo(quantidadeVendida
)) {
this.
quantidadeVendida = quantidadeVendida.
intValue();
} else {
this.
quantidadeVendida =
0;
}
}
public ProdutoDTO getProdutoDTO
() {
return produtoDTO
;
}
public void setProdutoDTO
(ProdutoDTO produtoDTO
) {
this.
produtoDTO = produtoDTO
;
}
public LojaDTO getLojaDTO
() {
return lojaDTO
;
}
public void setLojaDTO
(LojaDTO lojaDTO
) {
this.
lojaDTO = lojaDTO
;
}
public Integer getQuantidadeEstoque
() {
return quantidadeEstoque
;
}
public void setQuantidadeEstoque
(Integer quantidadeEstoque
) {
this.
quantidadeEstoque = quantidadeEstoque
;
}
public Integer getQuantidadeMinimaTransferir
() {
return quantidadeMinimaTransferir
;
}
public void setQuantidadeMinimaTransferir
(Integer quantidadeMinimaTransferir
) {
this.
quantidadeMinimaTransferir = quantidadeMinimaTransferir
;
}
public Integer getQuantidadeVendida
() {
return quantidadeVendida
;
}
public void setQuantidadeVendida
(Integer quantidadeVendida
) {
this.
quantidadeVendida = quantidadeVendida
;
}
public Integer getQuantidadeParaTransferir
() {
return quantidadeParaTransferir
;
}
public void setQuantidadeParaTransferir
(Integer quantidadeParaTransferir
) {
this.
quantidadeParaTransferir = quantidadeParaTransferir
;
}
public Integer getQuantidadeEstoqueAnterior
() {
return quantidadeEstoqueAnterior
;
}
public void setQuantidadeEstoqueAnterior
(Integer quantidadeEstoqueAnterior
) {
this.
quantidadeEstoqueAnterior = quantidadeEstoqueAnterior
;
}
public Boolean getIndicadorSolicitarTransferencia
() {
return indicadorSolicitarTransferencia
;
}
public void setIndicadorSolicitarTransferencia
(Boolean indicadorSolicitarTransferencia
) {
this.
indicadorSolicitarTransferencia = indicadorSolicitarTransferencia
;
}
public Boolean getRetirarTransferenciaAutomatica
() {
if (VerificadorUtil.
estaNulo(retirarTransferenciaAutomatica
)) {
retirarTransferenciaAutomatica =
false;
}
return retirarTransferenciaAutomatica
;
}
public void setRetirarTransferenciaAutomatica
(Boolean retirarTransferenciaAutomatica
) {
this.
retirarTransferenciaAutomatica = retirarTransferenciaAutomatica
;
}
public Long getSequencialDoProduto
() {
return VerificadorUtil.
naoEstaNulo(getProdutoDTO
())? getProdutoDTO
().
getSequencial() :
null;
}
/*******************************************/
public Integer quantidadeParaComprar
(Integer quantidadeVendas,
Integer quantidadeEstoque
) {
return (getQuantidadeMinimaTransferir
() * quantidadeVendas
) - quantidadeEstoque
;
}
public Integer quantidadeParaTransferir
() {
if (VerificadorUtil.
estaNulo(getQuantidadeVendida
())) {
setQuantidadeVendida
(0);
}
if (VerificadorUtil.
estaNulo(getQuantidadeEstoque
())) {
setQuantidadeEstoque
(0);
}
if (VerificadorUtil.
estaNulo(getQuantidadeMinimaTransferir
())) {
setQuantidadeMinimaTransferir
(1);
}
return (getQuantidadeMinimaTransferir
() * getQuantidadeVendida
()) - getQuantidadeEstoque
();
// return (getQuantidadeEstoque() - getQuantidadeVendida()) * getQuantidadeMinimaTransferir() * -1;
}
}