package com.rjconsultores.ventaboletos.entidad;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.Basic;
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.Temporal;
import javax.persistence.TemporalType;


@Entity
@SequenceGenerator(name = "GP_PRICING_SEQ", sequenceName = "GP_PRICING_SEQ", allocationSize = 1)
@Table(name = "GP_PRICING")
public class GP_Pricing implements Serializable, Cloneable {

	private static final long serialVersionUID = 1L;
	public static final Integer ATIVO = 1;
	public static final Integer INATIVO = 2;
	public static final Integer EXCLUIDO = 0;
	@Id
	@Basic(optional = false)
	@GeneratedValue(strategy = GenerationType.AUTO, generator = "GP_PRICING_SEQ")
	@Column(name = "PRICING_ID")
	private Integer pricingId;
	
	@Column(name = "NOMBPRICING")
	private String nombPricing;
	
	@Column(name = "CANTBOLETO")
	private Short cantboleto;
	
	@Column(name = "DESCUENTOPORCENTAJE")
	private BigDecimal descuentoporcentaje;
	
	@Column(name = "DESCUENTOPORCREDONDO")
	private BigDecimal descuentoporcredondo;
	
	@Column(name = "INDTRANSFERIBLE")
	private Boolean indtransferible;
	
	@Column(name = "INDRESERVABLE")
	private Boolean indreservable;
	
	@Column(name = "EXIBEVENDA")
	private Boolean exibeVenda;
	
	@Column(name = "INDCANCELABLE")
	private Boolean indcancelable;
	
	@Column(name = "ACTIVO")
	private Integer activo;
	
	@Column(name = "FECMODIF")
	@Temporal(TemporalType.TIMESTAMP)
	private Date fecmodif;
	
	@Column(name = "USUARIO_ID")
	private Integer usuarioId;
	
	@Column(name = "CANTDIASANTICIPACION")
	private Integer cantdiasanticipacion;
	
	@OneToMany(mappedBy = "pricing", cascade = CascadeType.ALL)
	private List<GP_PricingAsiento> pricingAsientoList;
	
	@OneToMany(mappedBy = "pricing", cascade = CascadeType.ALL)
	private List<GP_PricingMercado> pricingMercadoList;
	
	@OneToMany(mappedBy = "pricing", cascade = CascadeType.ALL)
	private List<GP_PricingMarca> pricingMarcaList;
	
	@JoinColumn(name = "EMPRESA_ID", referencedColumnName = "EMPRESA_ID")
	@ManyToOne	
	private Empresa empresa;
	
	@OneToMany(mappedBy = "pricing", cascade = CascadeType.ALL)
	private List<GP_PricingRuta> pricingRutaList;
	
	@OneToMany(mappedBy = "pricing", cascade = CascadeType.ALL)
	private List<GP_PricingDia> pricingDiaList;
	
	@OneToMany(mappedBy = "pricing", cascade = CascadeType.ALL)
	private List<GP_PricingImporte> pricingImporteList;
	
	@OneToMany(mappedBy = "pricing", cascade = CascadeType.ALL)
	private List<GP_PricingTipoPtoVta> pricingTipoptovtaList;
	
	@OneToMany(mappedBy = "pricing", cascade = CascadeType.ALL)
	private List<GP_PricingCategoria> pricingCategoriaList;
	
	@OneToMany(mappedBy = "pricing", cascade = CascadeType.ALL)
	private List<GP_PricingVigencia> pricingVigenciaList;
	
	@OneToMany(mappedBy = "pricing", cascade = CascadeType.ALL)
	private List<GP_PricingClase> pricingClaseList;
	
	@OneToMany(mappedBy = "pricing", cascade = CascadeType.ALL)
	private List<GP_PricingCorrida> pricingCorridaList;
	
	@OneToMany(mappedBy = "pricing", cascade = CascadeType.ALL)
	private List<GP_PricingPuntoVenta> pricingPuntoventaList;
	
	@OneToMany(mappedBy = "pricing", cascade = CascadeType.ALL)
	private List<GP_PricingTipoServicio> pricingTipoServicioList;
	
	@OneToMany(mappedBy = "pricing", cascade = CascadeType.ALL)
	private List<GP_PricingOcupaAntecipa> pricingOcupaAntecipaList;
	
	@OneToMany(mappedBy = "pricing", cascade = CascadeType.ALL)
	private List<GP_PricingFormapago> pricingFormapagoList;
	
	@Column(name = "INDGENERAFERIADOVIAJE")
	private String indGeneraFeriadoViaje;
	
	@Column(name = "INDGENERAFERIADOVENTA")
	private String indGeneraFeriadoVenta;
	
	@Column(name = "COLOR")
	private String color;
	
	@Column(name = "INDSOBREPOSICAO")
	private Boolean indSobreposicao;
	
	@Column(name = "INDGESTAO")
	private Boolean indGestao;
	
	@Column(name = "INDAGRUPADODIA")
	private Boolean indAgrupadoDia;
	
	@Column(name = "INDAGRUPADOSERVICO")
	private Boolean indAgrupadoServico;
	
	@Column(name = "INDESTADIAMINIMA")
	private Boolean indestadiaminima;
	
	@Column(name = "CANTDIAS_ESTADIAMINIMA")
	private Integer cantdiasEstadiaminima;
	
	@Column(name = "INDLUN_ESTADIAMINIMA")
	private Boolean indLunEstadiaminima;
	
	@Column(name = "INDMAR_ESTADIAMINIMA")
	private Boolean indMarEstadiaminima;
	
	@Column(name = "INDMIE_ESTADIAMINIMA")
	private Boolean indMieEstadiaminima;
	
	@Column(name = "INDJUE_ESTADIAMINIMA")
	private Boolean indJueEstadiaminima;
	
	@Column(name = "INDVIE_ESTADIAMINIMA")
	private Boolean indVieEstadiaminima;
	
	@Column(name = "INDSAB_ESTADIAMINIMA")
	private Boolean indSabEstadiaminima;
	
	@Column(name = "INDDOM_ESTADIAMINIMA")
	private Boolean indDomEstadiaminima;

	public enum GerarFeriado {
		// Declaração dos enum
		GERARSEMPRE("GERAR SEMPRE", "S"),

		GERARQUANDOFERIADO("GERAR SÓ QUANDO FOR FERIADO", "F"),

		GERARQUANDONAOFERIADO("GERAR QUANDO NÃO FOR FERIADO", "N");

		// Definição das constantes
		public final String valor;
		public final String descricao;

		public String valor() {
			return this.valor;
		}

		public String descricao() {
			return this.descricao;
		}

		private GerarFeriado(String descricao, String valor) {
			this.descricao = descricao;
			this.valor = valor;
		}
	}

	public GP_Pricing() {
	}

	public GP_Pricing(Integer pricingId) {
		this.pricingId = pricingId;
	}

	public Integer getPricingId() {
		return pricingId;
	}

	public void setPricingId(Integer pricingId) {
		this.pricingId = pricingId;
	}

	public Short getCantboleto() {
		return cantboleto;
	}

	public Integer getCantdiasanticipacion() {
		return cantdiasanticipacion;
	}

	public void setCantdiasanticipacion(Integer cantdiasanticipacion) {
		this.cantdiasanticipacion = cantdiasanticipacion;
	}

	public void setCantboleto(Short cantboleto) {
		this.cantboleto = cantboleto;
	}

	public BigDecimal getDescuentoporcentaje() {
		return descuentoporcentaje;
	}

	public void setDescuentoporcentaje(BigDecimal descuentoporcentaje) {
		this.descuentoporcentaje = descuentoporcentaje;
	}

	public BigDecimal getDescuentoporcredondo() {
		return descuentoporcredondo;
	}

	public void setDescuentoporcredondo(BigDecimal descuentoporcredondo) {
		this.descuentoporcredondo = descuentoporcredondo;
	}

	public Boolean getIndtransferible() {
		return indtransferible;
	}

	public void setIndtransferible(Boolean indtransferible) {
		this.indtransferible = indtransferible;
	}

	public Boolean getIndreservable() {
		return indreservable;
	}

	public void setIndreservable(Boolean indreservable) {
		this.indreservable = indreservable;
	}

	public Boolean getIndcancelable() {
		return indcancelable;
	}

	public void setIndcancelable(Boolean indcancelable) {
		this.indcancelable = indcancelable;
	}

	public Integer getActivo() {
		return activo;
	}

	public void setActivo(Integer activo) {
		this.activo = activo;
	}

	public Date getFecmodif() {
		return fecmodif;
	}

	public void setFecmodif(Date fecmodif) {
		this.fecmodif = fecmodif;
	}

	public Integer getUsuarioId() {
		return usuarioId;
	}

	public void setUsuarioId(Integer usuarioId) {
		this.usuarioId = usuarioId;
	}

	public List<GP_PricingOcupaAntecipa> getPricingOcupaAntecipaList() {
		List<GP_PricingOcupaAntecipa> poaList = new ArrayList<GP_PricingOcupaAntecipa>();
		for (GP_PricingOcupaAntecipa poa : this.pricingOcupaAntecipaList) {
			if (poa.getActivo() != EXCLUIDO.intValue()) {
				poaList.add(poa);
			}
		}
		return poaList;
	}

	public void setPricingOcupaAntecipaList(List<GP_PricingOcupaAntecipa> pricingOcupaAntecipaList) {
		this.pricingOcupaAntecipaList = pricingOcupaAntecipaList;
	}

	public List<GP_PricingAsiento> getPricingAsientoList() {
		List<GP_PricingAsiento> paList = new ArrayList<GP_PricingAsiento>();
		for (GP_PricingAsiento pa : this.pricingAsientoList) {
			if (pa.getActivo() != EXCLUIDO.intValue()) {
				paList.add(pa);
			}
		}

		return paList;
	}

	public void setPricingAsientoList(List<GP_PricingAsiento> pricingAsientoList) {
		this.pricingAsientoList = pricingAsientoList;
	}

	public List<GP_PricingMercado> getPricingMercadoList() {
		List<GP_PricingMercado> pmList = new ArrayList<GP_PricingMercado>();
		for (GP_PricingMercado pm : this.pricingMercadoList) {
			if (pm.getActivo() != EXCLUIDO.intValue()) {
				pmList.add(pm);
			}
		}

		return pmList;
	}

	public void setPricingMercadoList(List<GP_PricingMercado> pricingMercadoList) {
		this.pricingMercadoList = pricingMercadoList;
	}

	public List<GP_PricingMarca> getPricingMarcaList() {
		List<GP_PricingMarca> pmList = new ArrayList<GP_PricingMarca>();
		for (GP_PricingMarca pm : this.pricingMarcaList) {
			if (pm.getActivo() != EXCLUIDO.intValue()) {
				pmList.add(pm);
			}
		}

		return pmList;
	}

	public void setPricingMarcaList(List<GP_PricingMarca> pricingMarcaList) {
		this.pricingMarcaList = pricingMarcaList;
	}

	public Empresa getEmpresa() {
		return empresa;
	}

	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}

	public List<GP_PricingRuta> getPricingRutaList() {
		List<GP_PricingRuta> prList = new ArrayList<GP_PricingRuta>();
		for (GP_PricingRuta pr : this.pricingRutaList) {
			if (pr.getActivo() != EXCLUIDO.intValue()) {
				prList.add(pr);
			}
		}

		return prList;
	}

	public void setPricingRutaList(List<GP_PricingRuta> pricingRutaList) {
		this.pricingRutaList = pricingRutaList;
	}

	public List<GP_PricingDia> getPricingDiaList() {
		List<GP_PricingDia> pdList = new ArrayList<GP_PricingDia>();
		for (GP_PricingDia pd : this.pricingDiaList) {
			if (pd.getActivo() != EXCLUIDO.intValue()) {
				pdList.add(pd);
			}
		}

		return pdList;
	}

	public void setPricingDiaList(List<GP_PricingDia> pricingDiaList) {
		this.pricingDiaList = pricingDiaList;
	}

	public List<GP_PricingImporte> getPricingImporteList() {
		List<GP_PricingImporte> piList = new ArrayList<GP_PricingImporte>();
		for (GP_PricingImporte pi : this.pricingImporteList) {
			if (pi.getActivo() != EXCLUIDO.intValue()) {
				piList.add(pi);
			}
		}

		return piList;
	}

	public void setPricingImporteList(List<GP_PricingImporte> pricingImporteList) {
		this.pricingImporteList = pricingImporteList;
	}

	public List<GP_PricingTipoPtoVta> getPricingTipoptovtaList() {
		List<GP_PricingTipoPtoVta> ptList = new ArrayList<GP_PricingTipoPtoVta>();
		for (GP_PricingTipoPtoVta pt : this.pricingTipoptovtaList) {
			if (pt.getActivo() != EXCLUIDO.intValue()) {
				ptList.add(pt);
			}
		}

		return ptList;
	}

	public void setPricingTipoptovtaList(List<GP_PricingTipoPtoVta> pricingTipoptovtaList) {
		this.pricingTipoptovtaList = pricingTipoptovtaList;
	}

	public List<GP_PricingCategoria> getPricingCategoriaList() {
		List<GP_PricingCategoria> pcList = new ArrayList<GP_PricingCategoria>();
		for (GP_PricingCategoria pc : this.pricingCategoriaList) {
			if (pc.getActivo() != EXCLUIDO.intValue()) {
				pcList.add(pc);
			}
		}

		return pcList;
	}

	public void setPricingCategoriaList(List<GP_PricingCategoria> pricingCategoriaList) {
		this.pricingCategoriaList = pricingCategoriaList;
	}

	public List<GP_PricingVigencia> getPricingVigenciaList() {
		List<GP_PricingVigencia> pvList = new ArrayList<GP_PricingVigencia>();
		if (this.pricingVigenciaList != null) {
			for (GP_PricingVigencia pv : this.pricingVigenciaList) {
				if (pv.getActivo() != EXCLUIDO.intValue()) {
					pvList.add(pv);
				}
			}
		}

		return pvList;
	}

	public void setPricingVigenciaList(List<GP_PricingVigencia> pricingVigenciaList) {
		this.pricingVigenciaList = pricingVigenciaList;
	}

	public List<GP_PricingClase> getPricingClaseList() {
		List<GP_PricingClase> pcList = new ArrayList<GP_PricingClase>();
		for (GP_PricingClase pc : this.pricingClaseList) {
			if (pc.getActivo() != EXCLUIDO.intValue()) {
				pcList.add(pc);
			}
		}

		return pcList;
	}

	public void setPricingClaseList(List<GP_PricingClase> pricingClaseList) {
		this.pricingClaseList = pricingClaseList;
	}

	public List<GP_PricingCorrida> getPricingCorridaList() {
		List<GP_PricingCorrida> pcList = new ArrayList<GP_PricingCorrida>();
		if (pricingCorridaList == null) {
			return null;
		}

		for (GP_PricingCorrida pc : this.pricingCorridaList) {
			if (pc.getActivo() != EXCLUIDO.intValue()) {
				pcList.add(pc);
			}
		}

		return pcList;
	}

	public void setPricingCorridaList(List<GP_PricingCorrida> pricingCorridaList) {
		this.pricingCorridaList = pricingCorridaList;
	}

	public List<GP_PricingPuntoVenta> getPricingPuntoventaList() {
		List<GP_PricingPuntoVenta> ppList = new ArrayList<GP_PricingPuntoVenta>();
		for (GP_PricingPuntoVenta pp : this.pricingPuntoventaList) {
			if (pp.getActivo() != EXCLUIDO.intValue()) {
				ppList.add(pp);
			}
		}

		return ppList;
	}

	public void setPricingPuntoventaList(List<GP_PricingPuntoVenta> pricingPuntoventaList) {
		this.pricingPuntoventaList = pricingPuntoventaList;
	}

	public List<GP_PricingTipoServicio> getPricingTipoServicioList() {
		List<GP_PricingTipoServicio> ppList = new ArrayList<GP_PricingTipoServicio>();
		for (GP_PricingTipoServicio pp : this.pricingTipoServicioList) {
			if (pp.getActivo() != EXCLUIDO.intValue()) {
				ppList.add(pp);
			}
		}

		return ppList;
	}

	public void setPricingTipoServicioList(List<GP_PricingTipoServicio> pricingTipoServicioList) {
		this.pricingTipoServicioList = pricingTipoServicioList;
	}

	public List<GP_PricingFormapago> getPricingFormapagoList() {
		List<GP_PricingFormapago> pfpList = new ArrayList<GP_PricingFormapago>();
		for (GP_PricingFormapago pfp : this.pricingFormapagoList) {
			if (pfp.getActivo() != EXCLUIDO.intValue()) {
				pfpList.add(pfp);
			}
		}

		return pfpList;
	}

	public void setPricingFormapagoList(List<GP_PricingFormapago> pricingFormapagoList) {
		this.pricingFormapagoList = pricingFormapagoList;
	}

	public String getIndGeneraFeriadoViaje() {
		return indGeneraFeriadoViaje;
	}

	public void setIndGeneraFeriadoViaje(String indGeneraFeriadoViaje) {
		this.indGeneraFeriadoViaje = indGeneraFeriadoViaje;
	}

	public String getIndGeneraFeriadoVenta() {
		return indGeneraFeriadoVenta;
	}

	public void setIndGeneraFeriadoVenta(String indGeneraFeriadoVenta) {
		this.indGeneraFeriadoVenta = indGeneraFeriadoVenta;
	}

	public String getNombPricing() {
		return nombPricing;
	}

	public void setNombPricing(String nombPricing) {
		this.nombPricing = nombPricing;
	}
	
	public Boolean getExibeVenda() {
		return exibeVenda;
	}

	public void setExibeVenda(Boolean exibeVenda) {
		this.exibeVenda = exibeVenda;
	}

	public String getColor() {
		return color;
	}

	public void setColor(String color) {
		this.color = color;
	}

	public Boolean getIndSobreposicao() {
		return indSobreposicao;
	}

	public void setIndSobreposicao(Boolean indSobreposicao) {
		this.indSobreposicao = indSobreposicao;
	}

	public Boolean getIndGestao() {
		return indGestao;
	}

	public void setIndGestao(Boolean indGestao) {
		this.indGestao = indGestao;
	}
	
	public Boolean getIndAgrupadoDia() {
		return indAgrupadoDia;
	}

	public void setIndAgrupadoDia(Boolean indAgrupadoDia) {
		this.indAgrupadoDia = indAgrupadoDia;
	}

	public Boolean getIndAgrupadoServico() {
		return indAgrupadoServico;
	}

	public void setIndAgrupadoServico(Boolean indAgrupadoServico) {
		this.indAgrupadoServico = indAgrupadoServico;
	}

	@Override
	public int hashCode() {
		int hash = 0;
		hash += (pricingId != null ? pricingId.hashCode() : 0);
		return hash;
	}

	@Override
	public boolean equals(Object object) {
		if (!(object instanceof GP_Pricing)) {
			return false;
		}
		GP_Pricing other = (GP_Pricing) object;
		if ((this.pricingId == null && other.pricingId != null) || (this.pricingId != null && !this.pricingId.equals(other.pricingId))) {
			return false;
		}
		return true;
	}

	@Override
	public String toString() {
		return "[ Id=" + pricingId + ", nome=" + nombPricing + "]";
	}

	public Boolean getIndestadiaminima() {
		return indestadiaminima;
	}

	public void setIndestadiaminima(Boolean indestadiaminima) {
		this.indestadiaminima = indestadiaminima;
	}

	public Integer getCantdiasEstadiaminima() {
		return cantdiasEstadiaminima;
	}

	public void setCantdiasEstadiaminima(Integer cantdiasEstadiaminima) {
		this.cantdiasEstadiaminima = cantdiasEstadiaminima;
	}

	public Boolean getIndLunEstadiaminima() {
		return indLunEstadiaminima;
	}

	public void setIndLunEstadiaminima(Boolean indLunEstadiaminima) {
		this.indLunEstadiaminima = indLunEstadiaminima;
	}

	public Boolean getIndMarEstadiaminima() {
		return indMarEstadiaminima;
	}

	public void setIndMarEstadiaminima(Boolean indMarEstadiaminima) {
		this.indMarEstadiaminima = indMarEstadiaminima;
	}

	public Boolean getIndMieEstadiaminima() {
		return indMieEstadiaminima;
	}

	public void setIndMieEstadiaminima(Boolean indMieEstadiaminima) {
		this.indMieEstadiaminima = indMieEstadiaminima;
	}

	public Boolean getIndJueEstadiaminima() {
		return indJueEstadiaminima;
	}

	public void setIndJueEstadiaminima(Boolean indJueEstadiaminima) {
		this.indJueEstadiaminima = indJueEstadiaminima;
	}

	public Boolean getIndVieEstadiaminima() {
		return indVieEstadiaminima;
	}

	public void setIndVieEstadiaminima(Boolean indVieEstadiaminima) {
		this.indVieEstadiaminima = indVieEstadiaminima;
	}

	public Boolean getIndSabEstadiaminima() {
		return indSabEstadiaminima;
	}

	public void setIndSabEstadiaminima(Boolean indSabEstadiaminima) {
		this.indSabEstadiaminima = indSabEstadiaminima;
	}

	public Boolean getIndDomEstadiaminima() {
		return indDomEstadiaminima;
	}

	public void setIndDomEstadiaminima(Boolean indDomEstadiaminima) {
		this.indDomEstadiaminima = indDomEstadiaminima;
	}
	
	public GP_Pricing clonar() throws CloneNotSupportedException {
		GP_Pricing novo = new GP_Pricing();

		novo = (GP_Pricing) super.clone();

		novo.setEmpresa((Empresa) empresa.getCloneObject());

		List<GP_PricingAsiento> auxGP_PricingAsientoList = new ArrayList<GP_PricingAsiento>();
		for (GP_PricingAsiento aux : pricingAsientoList) {

			GP_PricingAsiento obj = (GP_PricingAsiento) aux.clone();

			auxGP_PricingAsientoList.add(obj);
		}
		novo.setPricingAsientoList(auxGP_PricingAsientoList);
		
		List<GP_PricingCategoria> auxGP_PricingCategoriaList = new ArrayList<GP_PricingCategoria>();
		for (GP_PricingCategoria aux : pricingCategoriaList) {

			GP_PricingCategoria obj = (GP_PricingCategoria) aux.clone();

			auxGP_PricingCategoriaList.add(obj);
		}
		novo.setPricingCategoriaList(auxGP_PricingCategoriaList);

		List<GP_PricingClase> auxGP_PricingClaseList = new ArrayList<GP_PricingClase>();
		for (GP_PricingClase aux : pricingClaseList) {

			GP_PricingClase obj = (GP_PricingClase) aux.clone();

			auxGP_PricingClaseList.add(obj);
		}
		novo.setPricingClaseList(auxGP_PricingClaseList);

		List<GP_PricingCorrida> auxGP_PricingCorridaList = new ArrayList<GP_PricingCorrida>();
		for (GP_PricingCorrida aux : pricingCorridaList) {

			GP_PricingCorrida obj = (GP_PricingCorrida) aux.clone();

			auxGP_PricingCorridaList.add(obj);
		}
		novo.setPricingCorridaList(auxGP_PricingCorridaList);

		List<GP_PricingDia> auxGP_PricingDiaList = new ArrayList<GP_PricingDia>();
		for (GP_PricingDia aux : pricingDiaList) {

			GP_PricingDia obj = (GP_PricingDia) aux.clone();

			auxGP_PricingDiaList.add(obj);
		}
		novo.setPricingDiaList(auxGP_PricingDiaList);

		List<GP_PricingFormapago> auxGP_PricingFormapagoList = new ArrayList<GP_PricingFormapago>();
		for (GP_PricingFormapago aux : pricingFormapagoList) {

			GP_PricingFormapago obj = (GP_PricingFormapago) aux.clone();

			auxGP_PricingFormapagoList.add(obj);
		}
		novo.setPricingFormapagoList(auxGP_PricingFormapagoList);

		List<GP_PricingImporte> auxGP_PricingImporteList = new ArrayList<GP_PricingImporte>();
		for (GP_PricingImporte aux : pricingImporteList) {

			GP_PricingImporte obj = (GP_PricingImporte) aux.clone();

			auxGP_PricingImporteList.add(obj);
		}
		novo.setPricingImporteList(auxGP_PricingImporteList);

		List<GP_PricingMarca> auxGP_PricingMarcaList = new ArrayList<GP_PricingMarca>();
		for (GP_PricingMarca aux : pricingMarcaList) {

			GP_PricingMarca obj = (GP_PricingMarca) aux.clone();

			auxGP_PricingMarcaList.add(obj);
		}
		novo.setPricingMarcaList(auxGP_PricingMarcaList);

		List<GP_PricingMercado> auxGP_PricingMercadoList = new ArrayList<GP_PricingMercado>();
		for (GP_PricingMercado aux : pricingMercadoList) {

			GP_PricingMercado obj = (GP_PricingMercado) aux.clone();

			auxGP_PricingMercadoList.add(obj);
		}
		novo.setPricingMercadoList(auxGP_PricingMercadoList);

		List<GP_PricingOcupaAntecipa> auxGP_PricingOcupaAntecipaList = new ArrayList<GP_PricingOcupaAntecipa>();
		for (GP_PricingOcupaAntecipa aux : pricingOcupaAntecipaList) {

			GP_PricingOcupaAntecipa obj = (GP_PricingOcupaAntecipa) aux.clone();

			auxGP_PricingOcupaAntecipaList.add(obj);
		}
		novo.setPricingOcupaAntecipaList(auxGP_PricingOcupaAntecipaList);

		List<GP_PricingVigencia> auxGP_PricingVigenciaList = new ArrayList<GP_PricingVigencia>();
		for (GP_PricingVigencia aux : pricingVigenciaList) {

			GP_PricingVigencia obj = (GP_PricingVigencia) aux.clone();

			auxGP_PricingVigenciaList.add(obj);
		}
		novo.setPricingVigenciaList(auxGP_PricingVigenciaList);

		List<GP_PricingPuntoVenta> auxGP_PricingPuntoVentaList = new ArrayList<GP_PricingPuntoVenta>();
		for (GP_PricingPuntoVenta aux : pricingPuntoventaList) {

			GP_PricingPuntoVenta obj = (GP_PricingPuntoVenta) aux.clone();

			auxGP_PricingPuntoVentaList.add(obj);
		}
		novo.setPricingPuntoventaList(auxGP_PricingPuntoVentaList);

		List<GP_PricingRuta> auxGP_PricingRutaList = new ArrayList<GP_PricingRuta>();
		for (GP_PricingRuta aux : pricingRutaList) {

			GP_PricingRuta obj = (GP_PricingRuta) aux.clone();

			auxGP_PricingRutaList.add(obj);
		}
		novo.setPricingRutaList(auxGP_PricingRutaList);

		List<GP_PricingTipoPtoVta> auxGP_PricingTipoPtoVtaList = new ArrayList<GP_PricingTipoPtoVta>();
		for (GP_PricingTipoPtoVta aux : pricingTipoptovtaList) {

			GP_PricingTipoPtoVta obj = (GP_PricingTipoPtoVta) aux.clone();

			auxGP_PricingTipoPtoVtaList.add(obj);
		}
		novo.setPricingTipoptovtaList(auxGP_PricingTipoPtoVtaList);

		List<GP_PricingTipoServicio> auxGP_PricingTipoServicioList = new ArrayList<GP_PricingTipoServicio>();
		for (GP_PricingTipoServicio aux : pricingTipoServicioList) {

			GP_PricingTipoServicio obj = (GP_PricingTipoServicio) aux.clone();

			auxGP_PricingTipoServicioList.add(obj);
		}
		novo.setPricingTipoServicioList(auxGP_PricingTipoServicioList);

		return novo;
	}
}
