Blame |
Last modification |
View Log
| Download
| RSS feed
package br.com.ec.domain.model;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.validation.constraints.NotNull;
import org.hibernate.annotations.ForeignKey;
import br.com.ec.core.generic.identidade.Identidade;
import br.com.ec.core.interfaces.Alterar;
import br.com.ec.core.interfaces.Cadastrar;
import br.com.ec.core.util.DataUtils;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.dto.TransferenciaDTO;
import br.com.ec.domain.dto.TransferenciaProdutoDTO;
import br.com.ec.domain.model.tipos.TipoPosVendaAtivacao;
//@Entity
//@Table(name="sec_posvenda_ativacao", schema="sc_sec")
public class PosVendaAtivacao
implements Serializable, Identidade
{
private static final long serialVersionUID = 1L
;
private Long sequencial
;
private PosVenda posVenda
;
private Date dataAtivacao
;
private Date dataFinalização
;
private String observacoes
;
private TipoPosVendaAtivacao tipoAtivacao
; // 1: AGRADECIMENTO+DICAS DE USO, 2: CHECK-UP DO PRODUTO + NPS (7 DIAS DEPOIS), 3:
// private List<PosVendaAtivacaoDTO> listaAtivacoes;
public PosVendaAtivacao
() {}
public PosVendaAtivacao
(TransferenciaDTO transferenciaDTO
) {
this.
sequencial = transferenciaDTO.
getSequencial();
}
@
Override
@Transient
public Object getId
() {
return this.
getSequencial();
}
@
Override
public void setId
(Object id
) {
this.
sequencial =
(Long) id
;
}
public Long getSequencial
() {
return sequencial
;
}
public void setSequencial
(Long sequencial
) {
this.
sequencial = sequencial
;
}
/*
@Id
@SequenceGenerator(name = "sq_posvendaativ")
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="seq_transferencia", nullable=false)
public Long getSequencial() {
return sequencial;
}
public void setSequencial(Long sequencial) {
this.sequencial = sequencial;
}
@ManyToOne
@ForeignKey(name="fk_transferencia_loja_saida")
@JoinColumn(name = "seq_loja_saida", nullable = false)
@NotNull(message = "Parâmetro obrigatório não preenchido: Loja de saída", groups = {Cadastrar.class, Alterar.class})
public Loja getLojaSaida() {
return lojaSaida;
}
public void setLojaSaida(Loja lojaSaida) {
this.lojaSaida = lojaSaida;
}
@ManyToOne
@ForeignKey(name="fk_transferencia_loja_entrada")
@JoinColumn(name = "seq_loja_entrada", nullable = false)
@NotNull(message = "Parâmetro obrigatório não preenchido: Loja de destino", groups = {Cadastrar.class, Alterar.class})
public Loja getLojaEntrada() {
return lojaEntrada;
}
public void setLojaEntrada(Loja lojaEntrada) {
this.lojaEntrada = lojaEntrada;
}
@NotNull(message = "Parâmetro obrigatório não preenchido: Data da Solicitação", groups = {Cadastrar.class, Alterar.class})
@Column(name="dat_solicitacao")
public Date getDataSolicitacao() {
return dataSolicitacao;
}
public void setDataSolicitacao(Date dataSolicitacao) {
this.dataSolicitacao = dataSolicitacao;
}
@Column(name="ind_conferido")
@NotNull(message = "Parâmetro obrigatório não preenchido: Transferência conferida", groups = {Cadastrar.class, Alterar.class})
public Boolean getConferido() {
return conferido;
}
public void setConferido(Boolean conferido) {
this.conferido = conferido;
}
@Column(name="dat_finalizacao")
public Date getDataFinalizacao() {
return dataFinalizacao;
}
public void setDataFinalizacao(Date dataFinalizacao) {
this.dataFinalizacao = dataFinalizacao;
}
@ManyToOne
@ForeignKey(name="fk_transferencia_notafiscalremessa")
@JoinColumn(name = "seq_nota_fiscal")
public NotaFiscal getNotaFiscalRemessa() {
return notaFiscalRemessa;
}
public void setNotaFiscalRemessa(NotaFiscal notaFiscalRemessa) {
this.notaFiscalRemessa = notaFiscalRemessa;
}
@Column(name="dth_inicio_transporte")
public Date getDataHoraInicioTransporte() {
return dataHoraInicioTransporte;
}
public void setDataHoraInicioTransporte(Date dataHoraInicioTransporte) {
this.dataHoraInicioTransporte = dataHoraInicioTransporte;
}
public String dataHoraInicioTransporteFormatado() {
return DataUtils.converterDataComHorarioParaString(getDataHoraInicioTransporte());
}
@ManyToOne
@ForeignKey(name="fk_transferencia_usuairo_transportador")
@JoinColumn(name = "seq_usuario_transportador", nullable = true)
public Usuario getUsuarioTransportador() {
return usuarioTransportador;
}
public void setUsuarioTransportador(Usuario usuarioTransportador) {
this.usuarioTransportador = usuarioTransportador;
}
@ManyToOne
@ForeignKey(name="fk_transferencia_usuairo_receptor")
@JoinColumn(name = "seq_usuario_receptor", nullable = true)
public Usuario getUsuarioReceptor() {
return usuarioReceptor;
}
public void setUsuarioReceptor(Usuario usuarioReceptor) {
this.usuarioReceptor = usuarioReceptor;
}
@OneToMany(mappedBy="transferencia", cascade=CascadeType.ALL, orphanRemoval=true)
public List<TransferenciaProduto> getListaProdutos() {
return listaProdutos;
}
public void setListaProdutos(List<TransferenciaProduto> listaProdutos) {
this.listaProdutos = listaProdutos;
}
@Transient
public List<TransferenciaProdutoDTO> getProdutosDTO() {
return produtosDTO;
}
public void setProdutosDTO(List<TransferenciaProdutoDTO> produtosDTO) {
this.produtosDTO = produtosDTO;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((sequencial == null) ? 0 : sequencial.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
PosVendaAtivacao other = (PosVendaAtivacao) obj;
if (sequencial == null) {
if (other.sequencial != null)
return false;
} else if (!sequencial.equals(other.sequencial))
return false;
return true;
}
@Transient
public Object getSequencialDaLojaEntrada() {
return VerificadorUtil.naoEstaNulo(getLojaEntrada())? getLojaEntrada().getSequencial() : null;
}
@Transient
public Object getSequencialDaLojaSaida() {
return VerificadorUtil.naoEstaNulo(getLojaSaida())? getLojaSaida().getSequencial() : null;
}
@Transient
public List<TransferenciaProduto> getProdutosOrdenados() {
List<TransferenciaProduto> produtosOrdenados = null;
if (VerificadorUtil.naoEstaNulo(getListaProdutos())) {
produtosOrdenados = new ArrayList<TransferenciaProduto>(getListaProdutos());
Collections.sort(produtosOrdenados, new Comparator<TransferenciaProduto>() {
public int compare(TransferenciaProduto p1, TransferenciaProduto p2) {
return p1.getProduto().getDescricaoDoModelo().compareTo(p2.getProduto().getDescricaoDoModelo());
};
});
}
return produtosOrdenados;
}
public void adicionarProduto(TransferenciaProduto produto) {
if (VerificadorUtil.estaNulo(getListaProdutos())) {
setListaProdutos(new ArrayList<TransferenciaProduto>());
}
getListaProdutos().add(produto);
}
public void removerProduto(TransferenciaProduto transferenciaProduto) {
if (!VerificadorUtil.isListaNulaOuVazia(getListaProdutos())) {
getListaProdutos().remove(transferenciaProduto);
}
}
public void removerProduto(TransferenciaProdutoDTO transferenciaProdutoDTO) {
if (!VerificadorUtil.isListaNulaOuVazia(getProdutosDTO())) {
getProdutosDTO().remove(transferenciaProdutoDTO);
}
}
public boolean verificarSeProdutoJaConstaNaLista(TransferenciaProduto transferenciaProduto) {
if (VerificadorUtil.estaNulo(getListaProdutos())) {
setListaProdutos(new ArrayList<TransferenciaProduto>());
}
for (TransferenciaProduto item : getListaProdutos()) {
if (item.equals(transferenciaProduto)) {
return true;
}
}
return false;
}
*/
}