package com.fp.persistence.parmas.soli;

import javax.persistence.Entity;

import java.sql.Timestamp;

import javax.persistence.Id;
import javax.persistence.Column;
import javax.persistence.EntityManager;

import java.io.Serializable;
import java.math.BigDecimal;

import javax.persistence.Table;

import com.fp.dto.hb.HibernateBean;
import com.fp.dto.hb.Log;

import java.lang.reflect.Field;

import javax.persistence.Transient;

import java.sql.Date;

/**
 * Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMSOLICITUD
 */
@Entity(name = "TarmSolicitud")
@Table(name = "TARMSOLICITUD")
public class TarmSolicitud extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Log {

    /**
     * HashCode asociado con la Instancia
     */
    @Transient
    private int hashValue = 0;
    /**
     * Version de la Clase
     */
    private static final long serialVersionUID = 1L;
    /**
     * Clave primaria de la Entidad TarmSolicitud
     */
    @Id
    @Column(name = "CSOLICITUD", nullable = false, updatable = false)
    private String pk;
    @Column(name = "LUGARORIGEN", nullable = true)

    /**
     * null
     */
    private String lugarorigen;

    @Column(name = "ORIGENADQUISICION", nullable = true)

    /**
     * Codigo de catalogo 01 Natural, 02 Juridico
     */
    private String origenadquisicion;

    /**
     * ------------------ CODIGO PARA EL TIPO DE PAGO ---------------------
     */
    /*
    @Column(name = "TIPOPAGO", nullable = true)

    private String tipopago;

    @Column(name = "TIPOPAGOCODIGO", nullable = true)

    private String tipopagocodigo;

    @Column(name = "CTRAMITE", nullable = true)
    */
    /**
     * null
     */
    private Long ctramite;

    @Column(name = "CPROVINCIADESTINO", nullable = true)

    /**
     * null
     */
    private String cprovinciadestino;

    @Column(name = "LUGARDESTINO", nullable = true)

    /**
     * null
     */
    private String lugardestino;

    @Column(name = "FREAL", nullable = true)

    /**
     * null
     */
    private Timestamp freal;

    @Column(name = "MULTA", nullable = true)

    /**
     * null
     */
    private BigDecimal multa;

    @Column(name = "CPAISORIGEN", nullable = true)

    /**
     * null
     */
    private String cpaisorigen;

    @Column(name = "CPROVINCIAORIGEN", nullable = true)

    /**
     * null
     */
    private String cprovinciaorigen;

    @Column(name = "ESTADOCODIGO", nullable = true)

    /**
     * Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona
     */
    private String estadocodigo;

    @Column(name = "OBSERVACION", nullable = true)

    /**
     * null
     */
    private String observacion;

    @Column(name = "CCANTONORIGEN", nullable = true)

    /**
     * null
     */
    private String ccantonorigen;

    @Column(name = "CCANTONDESTINO", nullable = true)
    /**
     * null
     */
    private String ccantondestino;

    @Column(name = "ESTADO", nullable = true)

    /**
     * Codigo de catalogo 01 Natural, 02 Juridico
     */
    private String estado;

    @Column(name = "FREGISTRO", nullable = true)

    /**
     * null
     */
    private Date fregistro;

    @Column(name = "NUMEROSOLICITUD", nullable = false)

    /**
     * null
     */
    private String numerosolicitud;

    @Column(name = "CPAISDESTINO", nullable = true)

    /**
     * null
     */
    private String cpaisdestino;

    @Column(name = "PERSONCODE", nullable = true)

    /**
     * Codigo de persona
     */
    private Integer personcode;

    @Column(name = "CCENTROCONTROL", nullable = true)

    /**
     * Codigo de tipo de tramite
     */
    private String ccentrocontrol;

    @Column(name = "ORIGENADQUISICIONCODIGO", nullable = true)

    /**
     * Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona
     */
    private String origenadquisicioncodigo;

    @Column(name = "FVERIFICAREQUISITOS", nullable = true)

    /**
     * Fecha en la que se verifica los requisitos de la solicitud
     */
    private Date fverificarequisitos;

    @Column(name = "NUMEROCUSTODIOS", nullable = true)

    /**
     * Indica el numero de custodios de la solicitud
     */
    private Integer numerocustodios;
    @Column(name = "NUMERODIASCUSTODIOS", nullable = true)

    /**
     * Agregado la cantidad de dias que se utilizaran los custodios
     */
    private Integer numerodiascustodios;

    @Column(name = "INICIOFLUJO", nullable = true)
    /**
     * null
     */
    private String inicioFlujo;

    @Column(name = "AUCP", nullable = true)
    /**
     * Codigo de solicitud AUCP
     */
    private String aucp;

    @Column(name = "XPATHACTA", nullable = true)

    /**
     * null
     */
    private String xpathacta;

    @Column(name = "TIPODOCUMENTOORIGEN", nullable = true)

    /**
     * Codigo de catalogo 01 Cédula, 02 Ruc
     */
    private String tipodocumentoorigen;

    @Column(name = "NUMERODOCUMENTOORIGEN", nullable = true)

    /**
     * Número de documento de la persna o empresa que realiza la compra
     */
    private String numerodocumentoorigen;

    @Column(name = "NOMBRERAZONSOCIALORIGEN", nullable = true)
    /**
     * Nombre de la persona o empresa de la compra
     */
    private String nombrerazonsocialorigen;

    /**
     * Contructor por defecto
     */
    public TarmSolicitud() {
    }

    /**
     * Contructor de TarmSolicitud
     *
     * @param pPk Clave Primaria del entity
     * @param pNumerosolicitud null
     */
    public TarmSolicitud(String pPk, String pNumerosolicitud) {
        this();
        pk = pPk;
        numerosolicitud = pNumerosolicitud;
    }

    /**
     * Metodo que entrega datos de la tabla dada la clave primaria.
     *
     * @param pEntityManager referencia de la session a obtener datos del bean.
     * @param pKey Caleve primaria del bean.
     * @return TarmSolicitud
     */
    public static TarmSolicitud find(EntityManager pEntityManager, Object pKey) throws Exception {
        TarmSolicitud obj = pEntityManager.find(TarmSolicitud.class, pKey);
        return obj;
    }

    /**
     * Entrega la Clave primaria de TarmSolicitud
     *
     * @return El objeto que referencia a la Clave primaria de TarmSolicitud
     */
    public String getPk() {
        return pk;
    }

    /**
     * Fija un nuevo valor a la Clave primaria de TarmSolicitud
     *
     * @param pPk El objeto que referencia a la nueva Clave primaria de
     * TarmSolicitud
     */
    public void setPk(String pPk) {
        pk = pPk;
    }

    /**
     * Obtiene el valor de lugarorigen
     *
     * @return valor de lugarorigen
     */
    public String getLugarorigen() {
        return lugarorigen;
    }

    /**
     * Fija el valor de lugarorigen
     *
     * @param pLugarorigen nuevo Valor de lugarorigen
     */
    public void setLugarorigen(String pLugarorigen) {
        lugarorigen = pLugarorigen;
    }

    /**
     * Obtiene el valor de origenadquisicion
     *
     * @return valor de origenadquisicion
     */
    public String getOrigenadquisicion() {
        return origenadquisicion;
    }

    /**
     * Fija el valor de origenadquisicion
     *
     * @param pOrigenadquisicion nuevo Valor de origenadquisicion
     */
    public void setOrigenadquisicion(String pOrigenadquisicion) {
        origenadquisicion = pOrigenadquisicion;
    }

    /**
     * Obtiene el valor de ctramite
     *
     * @return valor de ctramite
     */
    public Long getCtramite() {
        return ctramite;
    }

    /**
     * Fija el valor de ctramite
     *
     * @param pCtramite nuevo Valor de ctramite
     */
    public void setCtramite(Long pCtramite) {
        ctramite = pCtramite;
    }

    /**
     * Obtiene el valor de cprovinciadestino
     *
     * @return valor de cprovinciadestino
     */
    public String getCprovinciadestino() {
        return cprovinciadestino;
    }

    /**
     * Fija el valor de cprovinciadestino
     *
     * @param pCprovinciadestino nuevo Valor de cprovinciadestino
     */
    public void setCprovinciadestino(String pCprovinciadestino) {
        cprovinciadestino = pCprovinciadestino;
    }

    /**
     * Obtiene el valor de lugardestino
     *
     * @return valor de lugardestino
     */
    public String getLugardestino() {
        return lugardestino;
    }

    /**
     * Fija el valor de lugardestino
     *
     * @param pLugardestino nuevo Valor de lugardestino
     */
    public void setLugardestino(String pLugardestino) {
        lugardestino = pLugardestino;
    }

    /**
     * Obtiene el valor de freal
     *
     * @return valor de freal
     */
    public Timestamp getFreal() {
        return freal;
    }

    /**
     * Fija el valor de freal
     *
     * @param pFreal nuevo Valor de freal
     */
    public void setFreal(Timestamp pFreal) {
        freal = pFreal;
    }

    /**
     * Obtiene el valor de multa
     *
     * @return valor de multa
     */
    public BigDecimal getMulta() {
        return multa;
    }

    /**
     * Fija el valor de multa
     *
     * @param pMulta nuevo Valor de multa
     */
    public void setMulta(BigDecimal pMulta) {
        multa = pMulta;
    }

    /**
     * Obtiene el valor de cpaisorigen
     *
     * @return valor de cpaisorigen
     */
    public String getCpaisorigen() {
        return cpaisorigen;
    }

    /**
     * Fija el valor de cpaisorigen
     *
     * @param pCpaisorigen nuevo Valor de cpaisorigen
     */
    public void setCpaisorigen(String pCpaisorigen) {
        cpaisorigen = pCpaisorigen;
    }

    /**
     * Obtiene el valor de cprovinciaorigen
     *
     * @return valor de cprovinciaorigen
     */
    public String getCprovinciaorigen() {
        return cprovinciaorigen;
    }

    /**
     * Fija el valor de cprovinciaorigen
     *
     * @param pCprovinciaorigen nuevo Valor de cprovinciaorigen
     */
    public void setCprovinciaorigen(String pCprovinciaorigen) {
        cprovinciaorigen = pCprovinciaorigen;
    }

    /**
     * Obtiene el valor de estadocodigo
     *
     * @return valor de estadocodigo
     */
    public String getEstadocodigo() {
        return estadocodigo;
    }

    /**
     * Fija el valor de estadocodigo
     *
     * @param pEstadocodigo nuevo Valor de estadocodigo
     */
    public void setEstadocodigo(String pEstadocodigo) {
        estadocodigo = pEstadocodigo;
    }

    /**
     * Obtiene el valor de observacion
     *
     * @return valor de observacion
     */
    public String getObservacion() {
        return observacion;
    }

    /**
     * Fija el valor de observacion
     *
     * @param pObservacion nuevo Valor de observacion
     */
    public void setObservacion(String pObservacion) {
        observacion = pObservacion;
    }

    /**
     * Obtiene el valor de ccantonorigen
     *
     * @return valor de ccantonorigen
     */
    public String getCcantonorigen() {
        return ccantonorigen;
    }

    /**
     * Fija el valor de ccantonorigen
     *
     * @param pCcantonorigen nuevo Valor de ccantonorigen
     */
    public void setCcantonorigen(String pCcantonorigen) {
        ccantonorigen = pCcantonorigen;
    }

    /**
     * Obtiene el valor de ccantondestino
     *
     * @return valor de ccantondestino
     */
    public String getCcantondestino() {
        return ccantondestino;
    }

    /**
     * Fija el valor de ccantondestino
     *
     * @param pCcantondestino nuevo Valor de ccantondestino
     */
    public void setCcantondestino(String pCcantondestino) {
        ccantondestino = pCcantondestino;
    }

    /**
     * Obtiene el valor de estado
     *
     * @return valor de estado
     */
    public String getEstado() {
        return estado;
    }

    /**
     * Fija el valor de estado
     *
     * @param pEstado nuevo Valor de estado
     */
    public void setEstado(String pEstado) {
        estado = pEstado;
    }

    /**
     * Obtiene el valor de fregistro
     *
     * @return valor de fregistro
     */
    public Date getFregistro() {
        return fregistro;
    }

    /**
     * Fija el valor de fregistro
     *
     * @param pFregistro nuevo Valor de fregistro
     */
    public void setFregistro(Date pFregistro) {
        fregistro = pFregistro;
    }

    /**
     * Obtiene el valor de numerosolicitud
     *
     * @return valor de numerosolicitud
     */
    public String getNumerosolicitud() {
        return numerosolicitud;
    }

    /**
     * Fija el valor de numerosolicitud
     *
     * @param pNumerosolicitud nuevo Valor de numerosolicitud
     */
    public void setNumerosolicitud(String pNumerosolicitud) {
        numerosolicitud = pNumerosolicitud;
    }

    /**
     * Obtiene el valor de cpaisdestino
     *
     * @return valor de cpaisdestino
     */
    public String getCpaisdestino() {
        return cpaisdestino;
    }

    /**
     * Fija el valor de cpaisdestino
     *
     * @param pCpaisdestino nuevo Valor de cpaisdestino
     */
    public void setCpaisdestino(String pCpaisdestino) {
        cpaisdestino = pCpaisdestino;
    }

    /**
     * Obtiene el valor de personcode
     *
     * @return valor de personcode
     */
    public Integer getPersoncode() {
        return personcode;
    }

    /**
     * Fija el valor de personcode
     *
     * @param pPersoncode nuevo Valor de personcode
     */
    public void setPersoncode(Integer pPersoncode) {
        personcode = pPersoncode;
    }

    /**
     * Obtiene el valor de ccentrocontrol
     *
     * @return valor de ccentrocontrol
     */
    public String getCcentrocontrol() {
        return ccentrocontrol;
    }

    /**
     * Fija el valor de ccentrocontrol
     *
     * @param pCcentrocontrol nuevo Valor de ccentrocontrol
     */
    public void setCcentrocontrol(String pCcentrocontrol) {
        ccentrocontrol = pCcentrocontrol;
    }

    /**
     * Obtiene el valor de origenadquisicioncodigo
     *
     * @return valor de origenadquisicioncodigo
     */
    public String getOrigenadquisicioncodigo() {
        return origenadquisicioncodigo;
    }

    /**
     * Fija el valor de origenadquisicioncodigo
     *
     * @param pOrigenadquisicioncodigo nuevo Valor de origenadquisicioncodigo
     */
    public void setOrigenadquisicioncodigo(String pOrigenadquisicioncodigo) {
        origenadquisicioncodigo = pOrigenadquisicioncodigo;
    }

    /**
     * Obtiene el valor de fverificarequisitos
     *
     * @return valor de fverificarequisitos
     */
    public Date getFverificarequisitos() {
        return fverificarequisitos;
    }

    /**
     * Fija el valor de fverificarequisitos
     *
     * @param pFverificarequisitos nuevo Valor de fverificarequisitos
     */
    public void setFverificarequisitos(Date pFverificarequisitos) {
        fverificarequisitos = pFverificarequisitos;
    }

    /**
     * Obtiene el valor de numerocustodios
     *
     * @return valor de numerocustodios
     */
    public Integer getNumerocustodios() {
        return numerocustodios;
    }

    /**
     * Fija el valor de numerocustodios
     *
     * @param pNumerocustodios nuevo Valor de numerocustodios
     */
    public void setNumerocustodios(Integer pNumerocustodios) {
        numerocustodios = pNumerocustodios;
    }

    public void setNumerodiascustodios(Integer numerodiascustodios) {
        this.numerodiascustodios = numerodiascustodios;
    }

    public Integer getNumerodiascustodios() {
        return numerodiascustodios;
    }

    public String getInicioFlujo() {
        return inicioFlujo;
    }

    public void setInicioFlujo(String inicioFlujo) {
        this.inicioFlujo = inicioFlujo;
    }

    public String getAucp() {
        return aucp;
    }

    public void setAucp(String aucp) {
        this.aucp = aucp;
    }

    /**
     * Geters y setters Tipo pago
     */
    /**
    public void setTipopago(String tipopago) {
        this.tipopago = tipopago;
    }

    public String getTipopago() {
        return tipopago;
    }
    public String getTipopagocodigo() {
        return tipopagocodigo;
    }

    public void setTipopagocodigo(String tipopagocodigo) {
        this.tipopagocodigo = tipopagocodigo;
    }
    * */
    

    /**
     * Obtiene el valor de xpathacta
     *
     * @return valor de xpathacta
     */
    public String getXpathacta() {
        return xpathacta;
    }

    /**
     * Fija el valor de xpathacta
     *
     * @param xpathacta nuevo Valor de xpathacta
     */
    public void setXpathacta(String xpathacta) {
        this.xpathacta = xpathacta;
    }

    /**
     * Obtiene el valor de tipodocumento origen
     *
     * @return valor de tipodocumento
     */
    public String getTipodocumentoorigen() {
        return tipodocumentoorigen;
    }

    /**
     * Fija el valor de tipodocumento origen
     *
     * @param pTipodocumento nuevo Valor de tipodocumento
     */
    public void setTipodocumentoorigen(String pTipodocumentoorigen) {
        this.tipodocumentoorigen = pTipodocumentoorigen;
    }

    /**
     * Obtiene el valor de numerodocumento origen
     *
     * @return valor de numerodocumento
     */
    public String getNumerodocumentoorigen() {
        return numerodocumentoorigen;
    }

    /**
     * Fija el valor de numerodocumento origen
     *
     * @param pNumerodocumento nuevo Valor de numerodocumento
     */
    public void setNumerodocumentoorigen(String pNumerodocumentoorigen) {
        this.numerodocumentoorigen = pNumerodocumentoorigen;
    }

    /**
     * Obtiene el valor de nombrerazonsocial origen
     *
     * @return valor de nombrerazonsocial
     */
    public String getNombrerazonsocialorigen() {
        return nombrerazonsocialorigen;
    }

    /**
     * Fija el valor de nombrerazonsocial origen
     *
     * @param pNombrerazonsocial nuevo Valor de nombrerazonsocial
     */
    public void setNombrerazonsocialorigen(String pNombrerazonsocialorigen) {
        this.nombrerazonsocialorigen = pNombrerazonsocialorigen;
    }

    public boolean equals(Object rhs) {
        if (rhs == null) {
            return false;
        }
        if (!(rhs instanceof TarmSolicitud)) {
            return false;
        }
        TarmSolicitud that = (TarmSolicitud) rhs;
        if (this.getPk() == null || that.getPk() == null) {
            return false;
        }
        return (this.getPk().equals(that.getPk()));
    }

    /**
     * Implementacion del metodo hashCode de la la entidad TarmSolicitud
     *
     * @return el hashCode la instancia
     */
    public int hashCode() {
        if (this.hashValue == 0) {
            int result = 17;
            if (this.getPk() == null) {
                result = super.hashCode();
            } else {
                result = this.getPk().hashCode();
            }
            this.hashValue = result;
        }
        return this.hashValue;
    }

    /**
     * Implementacion toString
     */
    public String toString() {
        Field[] fs = this.getClass().getDeclaredFields();
        String data = "";
        for (Field f : fs) {
            try {
                String name = f.getName();
                if (f.getType().getName().compareTo("java.util.Set") == 0) {
                    continue;
                }
                if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) {
                    continue;
                }
                data += name + "=" + f.get(this) + ";";
            } catch (Exception e) {
                continue;
            }
        }
        if (data.compareTo("") == 0) {
            data = super.toString();
        }
        return data;
    }

    /**
     * Implementacion de la creacion de un bean en blanco TarmSolicitud
     */
    public Object createInstance() {
        TarmSolicitud instance = new TarmSolicitud();
        return instance;
    }

    /**
     * Clona la entidad TarmSolicitud
     *
     * @see com.fp.dto.hb.HibernateBean#cloneMe()
     */
    public Object cloneMe() throws CloneNotSupportedException {
        TarmSolicitud p = (TarmSolicitud) this.clone();
        return p;
    }

}
