package com.rjconsultores.ventaboletos.vo.busquedapacotes;

import java.math.BigDecimal;
import java.util.List;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;

import com.rjconsultores.ventaboletos.enums.TipoFormapago;
import com.rjconsultores.ventaboletos.vo.caja.PagamentoCartaoVO;

@XmlRootElement(name = "pagamento")
@XmlType(propOrder = { "formapagamento", "moeda", "valor", "notacredito", "ocd", "cartao", "dadosBancarios" })
public class PagamentoVO {

	private String formapagamento;
	private String moeda;
	private BigDecimal valor;
	private PagamentoCartaoVO cartao;
	private Long vendapacoteId;
	private Integer formapagoId;
	private NotaCreditoVendaPacoteVO notacredito;
	private TipoFormapago tipoFormapago;
	private Long cajadiversospagoId;
	private OcdPacoteVO ocd;
	
	private List<DadosBancarioVO> dadosBancarios;
	
	public String getMoeda() {
		return moeda;
	}

	public void setMoeda(String moeda) {
		this.moeda = moeda;
	}

	public String getFormapagamento() {
		return formapagamento;
	}

	public void setFormapagamento(String formapagamento) {
		this.formapagamento = formapagamento;
	}

	public PagamentoCartaoVO getCartao() {
		return cartao;
	}

	public void setCartao(PagamentoCartaoVO cartao) {
		this.cartao = cartao;
	}

	public BigDecimal getValor() {
		return valor;
	}

	public void setValor(BigDecimal valor) {
		this.valor = valor;
	}

	@XmlTransient
	public Long getVendapacoteId() {
		return vendapacoteId;
	}

	public void setVendapacoteId(Long vendapacoteId) {
		this.vendapacoteId = vendapacoteId;
	}

	@XmlTransient
	public Integer getFormapagoId() {
		return formapagoId;
	}

	public void setFormapagoId(Integer formapagoId) {
		this.formapagoId = formapagoId;
	}

	public NotaCreditoVendaPacoteVO getNotacredito() {
		return notacredito;
	}

	public void setNotacredito(NotaCreditoVendaPacoteVO notacredito) {
		this.notacredito = notacredito;
	}

	@XmlTransient
	public TipoFormapago getTipoFormapago() {
		return tipoFormapago;
	}

	public void setTipoFormapago(TipoFormapago tipoFormapago) {
		this.tipoFormapago = tipoFormapago;
	}

	@XmlTransient
	public Long getCajadiversospagoId() {
		return cajadiversospagoId;
	}

	public void setCajadiversospagoId(Long cajadiversospagoId) {
		this.cajadiversospagoId = cajadiversospagoId;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((formapagoId == null) ? 0 : formapagoId.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (!(obj instanceof PagamentoVO))
			return false;
		PagamentoVO other = (PagamentoVO) obj;
		if (formapagoId == null) {
			if (other.formapagoId != null)
				return false;
		} else if (!formapagoId.equals(other.formapagoId))
			return false;
		return true;
	}

	@XmlElementWrapper
	@XmlElement(name = "dadosBancario", type = DadosBancarioVO.class)
	public List<DadosBancarioVO> getDadosBancarios() {
		return dadosBancarios;
	}

	public void setDadosBancarios(List<DadosBancarioVO> dadosBancarios) {
		this.dadosBancarios = dadosBancarios;
	}

	public OcdPacoteVO getOcd() {
		return ocd;
	}

	public void setOcd(OcdPacoteVO ocd) {
		this.ocd = ocd;
	}

}
