package br.com.ec.domain.dto;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Transient;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.model.Modelo;
import br.com.ec.domain.model.Tributacao;
import br.com.ec.domain.model.tipos.TipoCorProduto;
import br.com.ec.domain.model.tipos.TipoEstiloProduto;
import br.com.ec.domain.model.tipos.TipoProduto;
public class ProdutoDTO
implements Serializable {
private static final long serialVersionUID = 1L
;
private Long sequencial
;
private String codigo
;
private String codigoEAN
;
private String codigoEANTributado
;
private String descricao
;
private String tipo
;
private String estilo
;
private String cor
;
private String genero
;
private String codigoNCM
;
private String codigoEST
;
private ModeloDTO modeloDTO
;
private TributacaoDTO tributacaoDTO
;
private Boolean sujeitoST
;
/*
private String codigoRapido;
private String descricaoEtiqueta;
private String descricaoParaNotaFiscal;
private String genero;
private String observacao;
private Double valorCompra;
private Double valorVarejo;
private Double valorVarejoPromocional;
private Double valorVarejoMaximo;
private Double valorVarejoPopular;
private Double valorAtacado;
private Date dataOnline;
private Date dataOnlineShoplog;
private Date dataOnlineMercadoLivre;
private Boolean indicadorFavorito;
private Boolean indicadorComissionado;
private Boolean indicadorPersonalizavel;
private Boolean indicadorEmissaoNotaFiscal;
// private Modelo modelo;
// private Tributacao tributacao;
private Double valorVarejoSimulacao;
private Double aliquotaIPI;
private Double aliquotaIPINotaFiscal;
private Double aliquotaIcms;
private Double aliquotaIcmsNotaFiscal;
private Double aliquotaIcmsST;
private Double aliquotaFecoep;
private Boolean ativo;
private Set<ProdutoPedidoCompra> pedidosCompra;
private Set<ProdutoLoja> estoques;
private Set<FornecedorProduto> fornecedores;
private Set<ProdutoRelacionado> relacionados;
private Set<ProdutoRelacionado> relacionadosReverse;
private List<TransferenciaProduto> transferenciasAbertas = new ArrayList<TransferenciaProduto>();
private List<PedidoProduto> pedidosPendentes = new ArrayList<PedidoProduto>();
private Boolean indicadorOnline;
private Boolean indicadorOnlineShoplog;
private Boolean indicadorOnlineMercadoLivre;
private Date dataUltimaVenda;*/
public ProdutoDTO
() {}
public static String CONSULTA_DTO_SIMPLES_COM_MODELO =
"e.sequencial, e.codigo, e.codigoEAN, e.descricao, e.tipo, e.estilo, e.cor, e.genero, "
+
" (SELECT mo.descricao FROM Modelo mo WHERE mo.sequencial = e.modelo.sequencial), "
+
" (SELECT m.descricao FROM Marca m WHERE m.sequencial = e.modelo.marca.sequencial)";
public ProdutoDTO
(Long sequencial,
String codigo,
String codigoEAN,
String descricao,
String tipoProduto,
String estiloProduto,
String corProduto,
String generoProduto,
String descricaoModelo,
String descricaoMarca
) {
super();
this.
sequencial = sequencial
;
this.
codigo = codigo
;
this.
codigoEAN = codigoEAN
;
this.
descricao = descricao
;
this.
tipo = tipoProduto
;
this.
estilo= estiloProduto
;
this.
cor = corProduto
;
this.
genero = generoProduto
;
this.
modeloDTO =
new ModeloDTO
(null, descricaoModelo,
new MarcaDTO
(null, descricaoMarca
));
}
public ProdutoDTO
(Long sequencial,
String codigo,
String codigoEAN,
String descricao,
String tipoProduto,
String estiloProduto,
String corProduto
) {
super();
this.
sequencial = sequencial
;
this.
codigo = codigo
;
this.
codigoEAN = codigoEAN
;
this.
descricao = descricao
;
this.
tipo = tipoProduto
;
this.
estilo= estiloProduto
;
this.
cor = corProduto
;
}
public ProdutoDTO
(Long sequencialProduto,
String codigo,
String codigoEAN,
String codigoEANTributado,
String descricao,
String tipoProduto,
String estiloProduto,
String cor
) {
this.
codigo = codigo
;
this.
codigoEAN = codigoEAN
;
this.
codigoEANTributado = codigoEANTributado
;
this.
descricao = descricao
;
this.
tipo = tipoProduto
;
this.
estilo = estiloProduto
;
this.
cor = cor
;
}
public ProdutoDTO
(Long sequencial,
String codigo,
String tipo, ModeloDTO modeloDTO,
String estilo,
String descricao,
String cor,
String codigoEAN
) {
this.
sequencial = sequencial
;
this.
codigo = codigo
;
this.
tipo = tipo
;
this.
modeloDTO = modeloDTO
;
this.
estilo = estilo
;
this.
descricao = descricao
;
this.
cor = cor
;
this.
codigoEAN = codigoEAN
;
}
/*
public static String CONSULTA_DTO_COMPLETA = "e.sequencial, e.notaFiscal.sequencial, e.produto.sequencial, "
+ "e.quantidade";
public ProdutoDTO(Long sequencial, Long sequencialNotaFiscal, Long sequencialProduto, Integer quantidade) {
super();
this.sequencial = sequencial;
this.sequencialNotaFiscal = sequencialNotaFiscal;
this.sequencialProduto = sequencialProduto;
this.quantidade = quantidade;
}
*/
public Long getSequencial
() {
return sequencial
;
}
public void setSequencial
(Long sequencial
) {
this.
sequencial = sequencial
;
}
public String getCodigo
() {
return codigo
;
}
public void setCodigo
(String codigo
) {
this.
codigo = codigo
;
}
public String getCodigoEAN
() {
return codigoEAN
;
}
public void setCodigoEAN
(String codigoEAN
) {
this.
codigoEAN = codigoEAN
;
}
public String getCodigoEANTributado
() {
return codigoEANTributado
;
}
public void setCodigoEANTributado
(String codigoEANTributado
) {
this.
codigoEANTributado = codigoEANTributado
;
}
public String getDescricao
() {
return descricao
;
}
public void setDescricao
(String descricao
) {
this.
descricao = descricao
;
}
public String getTipo
() {
return tipo
;
}
public void setTipo
(String tipo
) {
this.
tipo = tipo
;
}
public String getEstilo
() {
return estilo
;
}
public void setEstilo
(String estilo
) {
this.
estilo = estilo
;
}
public String getDescricaoDoEstilo
() {
return VerificadorUtil.
naoEstaNuloOuVazio(getEstilo
())? TipoEstiloProduto.
parse(getEstilo
()).
getDescricao() :
null;
}
public String getCor
() {
return cor
;
}
public void setCor
(String cor
) {
this.
cor = cor
;
}
public String getDescricaoDaCor
() {
return VerificadorUtil.
naoEstaNuloOuVazio(getCor
())? TipoCorProduto.
parse(getCor
()).
getDescricao() :
null;
}
public String getGenero
() {
return genero
;
}
public void setGenero
(String genero
) {
this.
genero = genero
;
}
public String getCodigoNCM
() {
return codigoNCM
;
}
public void setCodigoNCM
(String codigoNCM
) {
this.
codigoNCM = codigoNCM
;
}
public String getCodigoEST
() {
return codigoEST
;
}
public void setCodigoEST
(String codigoEST
) {
this.
codigoEST = codigoEST
;
}
public ModeloDTO getModeloDTO
() {
return modeloDTO
;
}
public void setModeloDTO
(ModeloDTO modeloDTO
) {
this.
modeloDTO = modeloDTO
;
}
public String getDescricaoDoModelo
() {
return VerificadorUtil.
naoEstaNulo(getModeloDTO
())? getModeloDTO
().
getDescricao() :
"";
}
public MarcaDTO getMarcaDTODoModelo
() {
return VerificadorUtil.
naoEstaNulo(getModeloDTO
())? getModeloDTO
().
getMarcaDTO() :
null;
}
public TributacaoDTO getTributacaoDTO
() {
return tributacaoDTO
;
}
public void setTributacaoDTO
(TributacaoDTO tributacaoDTO
) {
this.
tributacaoDTO = tributacaoDTO
;
}
public String getCodigoNCMDaTributacao
() {
return VerificadorUtil.
naoEstaNulo(getTributacaoDTO
())? getTributacaoDTO
().
getCodigoNCM() :
null;
}
public String getCodigoESTDaTributacao
() {
return VerificadorUtil.
naoEstaNulo(getTributacaoDTO
())? getTributacaoDTO
().
getCodigoEST() :
null;
}
public Boolean getSujeitoST
() {
return sujeitoST
;
}
public void setSujeitoST
(Boolean sujeitoST
) {
this.
sujeitoST = sujeitoST
;
}
/***************************************/
public String getCodigoProdutoPadrao
() {
try {
return VerificadorUtil.
naoEstaNulo(codigo
) ? String.
format("%06d",
new Long(codigo.
trim())) :
"";
} catch (Exception e
) {
return "";
}
}
public static String retornarCodigoProdutoPadrao
(String codigo
) {
try {
return VerificadorUtil.
naoEstaNulo(codigo
) ? String.
format("%06d",
new Long(codigo.
trim())) :
"";
} catch (Exception e
) {
return "";
}
}
public String getDescricaoNotaFiscal
(String observacaoNotaFiscal
) {
StringBuilder descricaoCompleta =
new StringBuilder();
if (this.
getTipo().
equals(TipoProduto.
CAPA.
getValor())) {
descricaoCompleta.
append("CAPA");
}
if (!this.
getTipo().
equals(TipoProduto.
ACESSORIO.
getValor())) {
descricaoCompleta.
append(" ");
descricaoCompleta.
append(this.
getDescricaoDoModelo());
}
if (VerificadorUtil.
naoEstaNuloOuVazio(this.
getEstilo())) {
descricaoCompleta.
append(" ");
descricaoCompleta.
append(this.
getDescricaoDoEstilo());
}
descricaoCompleta.
append(" ");
if (this.
getDescricao().
length() > 50) {
descricaoCompleta.
append(this.
getDescricao().
substring(0,
50));
} else {
descricaoCompleta.
append(this.
getDescricao());
}
if (VerificadorUtil.
naoEstaNuloOuVazio(this.
getCor())) {
descricaoCompleta.
append(" (");
descricaoCompleta.
append(this.
getDescricaoDaCor());
descricaoCompleta.
append(")");
}
if (VerificadorUtil.
naoEstaNuloOuVazio(observacaoNotaFiscal
)) {
descricaoCompleta.
append(" ");
descricaoCompleta.
append(observacaoNotaFiscal
);
}
return descricaoCompleta.
toString().
trim();
}
public String getDescricaoCompleta
() {
StringBuilder descricaoCompleta =
new StringBuilder();
if (VerificadorUtil.
naoEstaNuloOuVazio(getEstilo
())) {
descricaoCompleta.
append(getDescricaoDoEstilo
());
descricaoCompleta.
append(" ");
}
descricaoCompleta.
append(getDescricao
());
if (VerificadorUtil.
naoEstaNuloOuVazio(getCor
())) {
descricaoCompleta.
append(" (");
descricaoCompleta.
append(getDescricaoDaCor
());
descricaoCompleta.
append(")");
}
return descricaoCompleta.
toString();
}
public String getDescricaoComModeloCompletaComCodigo
() {
StringBuilder descricaoCompleta =
new StringBuilder();
descricaoCompleta.
append("[");
descricaoCompleta.
append(getCodigoProdutoPadrao
());
descricaoCompleta.
append("] ");
if (VerificadorUtil.
naoEstaNuloOuVazio(getDescricaoDoModelo
())) {
descricaoCompleta.
append(getDescricaoDoModelo
());
descricaoCompleta.
append(" - ");
}
descricaoCompleta.
append(getDescricaoCompleta
());
return descricaoCompleta.
toString();
}
public String getDescricaoTecnicaDoModeloComParenteses
() {
return VerificadorUtil.
naoEstaNulo(getModeloDTO
())? VerificadorUtil.
naoEstaNulo(getModeloDTO
().
getDescricaoTecnica())? " (" + getModeloDTO
().
getDescricaoTecnica() +
") " :
"" :
"";
}
@Transient
public String getDescricaoDaMarcaDoModelo
() {
return VerificadorUtil.
naoEstaNulo(getMarcaDTODoModelo
())? getMarcaDTODoModelo
().
getDescricao() :
"";
}
}