package com.fp.persistence.pviaticos.solicitud;

import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
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 javax.persistence.Version;
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 VIA_SOLICITUD*/
@Entity(name="ViaSolicitud")
@Table(name="VIA_SOLICITUD")
public class ViaSolicitud extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{
/**
* 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 ViaSolicitud
*/
@EmbeddedId
private ViaSolicitudKey pk;
@Column(name="COD_ESTADO", nullable=true)

/**
* Codigo de estatus de la solicitud de viaticos
*/
private String cod_estado;

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

/**
* Codigo de empleados
*/
private String cod_empleado;

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

/**
* Numero de credencial del empleado en la sbs
*/
private String cod_credencial;

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

/**
* Fecha de creacion de la solicitud se obtiene de la base de datos
*/
private Date fec_creacion;

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

/**
* Numero de dias que el servidor sale de comision
*/
private BigDecimal num_dias;

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

/**
* Corresponde a los dias acumulados de viaticos del ejercicio actual a la fecha de ingreso de la solicitud
*/
private BigDecimal num_dias_acumulados;

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

/**
* 1, Indica que solicituta viaticos
*/
private String sts_viaticos;

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

/**
* 1, Indica que solicituta gastos de movilizacion
*/
private String sts_movilizacion;

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

/**
* 1, Indica que solicituta gastos de subsistencia
*/
private String sts_subsistencia;

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

/**
* 1, Indica que solicituta gastos de alimentacion
*/
private String sts_alimentacion;

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

/**
* Descripcion default del tipo de tabla de pagos
*/
private String cod_destino;

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

/**
* Fecha inicio de la comision
*/
private Date fec_ini_viatico;

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

/**
* Fecha de finalizacion de la comision
*/
private Date fec_fin_viatico;

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

/**
* Hora de inicio de la comision
*/
private String fec_hora_inicio;

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

/**
* Hora de fin de la comision
*/
private String fec_hora_fin;

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

/**
* Detalle de actividades a realizar
*/
private String txt_actividades;

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

/**
* Campo para el codigo de usuario que procesa la solicitud
*/
private String cod_usuario;

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

/**
* Campo para el codigo del jefe
*/
private String cod_jefe;

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

/**
* Campo para el codigo del responsable de la unidad.
*/
private String cod_responsable;

/**Contructor por defecto*/
public ViaSolicitud(){
}
/**Contructor de ViaSolicitud
@param pPk Clave Primaria del entity
*/
public ViaSolicitud(ViaSolicitudKey pPk){
 this();
 pk=pPk;
}
/**
* 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 ViaSolicitud
*/
public static ViaSolicitud find(EntityManager pEntityManager,ViaSolicitudKey pKey) throws Exception{
    ViaSolicitud obj = pEntityManager.find(ViaSolicitud.class,pKey);
    return obj;
}
/**Entrega la Clave primaria de ViaSolicitud
@return El objeto que referencia a la Clave primaria de ViaSolicitud
*/
public ViaSolicitudKey getPk(){
  return pk;
}
/**Fija un nuevo valor a la Clave primaria de ViaSolicitud
@param pPk El objeto que referencia a la nueva Clave primaria de ViaSolicitud
*/
public void setPk(ViaSolicitudKey pPk){
  pk=pPk;
}
/**Obtiene el valor de cod_estado
@return valor de cod_estado*/
public String getCod_estado(){
  return cod_estado;
}
/**Fija el valor de cod_estado
@param pCod_estado nuevo Valor de cod_estado*/
public void setCod_estado(String pCod_estado){
  cod_estado=pCod_estado;
}

/**Obtiene el valor de cod_empleado
@return valor de cod_empleado*/
public String getCod_empleado(){
  return cod_empleado;
}
/**Fija el valor de cod_empleado
@param pCod_empleado nuevo Valor de cod_empleado*/
public void setCod_empleado(String pCod_empleado){
  cod_empleado=pCod_empleado;
}

/**Obtiene el valor de cod_credencial
@return valor de cod_credencial*/
public String getCod_credencial(){
  return cod_credencial;
}
/**Fija el valor de cod_credencial
@param pCod_credencial nuevo Valor de cod_credencial*/
public void setCod_credencial(String pCod_credencial){
  cod_credencial=pCod_credencial;
}

/**Obtiene el valor de fec_creacion
@return valor de fec_creacion*/
public Date getFec_creacion(){
  return fec_creacion;
}
/**Fija el valor de fec_creacion
@param pFec_creacion nuevo Valor de fec_creacion*/
public void setFec_creacion(Date pFec_creacion){
  fec_creacion=pFec_creacion;
}

/**Obtiene el valor de num_dias
@return valor de num_dias*/
public BigDecimal getNum_dias(){
  return num_dias;
}
/**Fija el valor de num_dias
@param pNum_dias nuevo Valor de num_dias*/
public void setNum_dias(BigDecimal pNum_dias){
  num_dias=pNum_dias;
}

/**Obtiene el valor de num_dias_acumulados
@return valor de num_dias_acumulados*/
public BigDecimal getNum_dias_acumulados(){
  return num_dias_acumulados;
}
/**Fija el valor de num_dias_acumulados
@param pNum_dias_acumulados nuevo Valor de num_dias_acumulados*/
public void setNum_dias_acumulados(BigDecimal pNum_dias_acumulados){
  num_dias_acumulados=pNum_dias_acumulados;
}

/**Obtiene el valor de sts_viaticos
@return valor de sts_viaticos*/
public String getSts_viaticos(){
  return sts_viaticos;
}
/**Fija el valor de sts_viaticos
@param pSts_viaticos nuevo Valor de sts_viaticos*/
public void setSts_viaticos(String pSts_viaticos){
  sts_viaticos=pSts_viaticos;
}

/**Obtiene el valor de sts_movilizacion
@return valor de sts_movilizacion*/
public String getSts_movilizacion(){
  return sts_movilizacion;
}
/**Fija el valor de sts_movilizacion
@param pSts_movilizacion nuevo Valor de sts_movilizacion*/
public void setSts_movilizacion(String pSts_movilizacion){
  sts_movilizacion=pSts_movilizacion;
}

/**Obtiene el valor de sts_subsistencia
@return valor de sts_subsistencia*/
public String getSts_subsistencia(){
  return sts_subsistencia;
}
/**Fija el valor de sts_subsistencia
@param pSts_subsistencia nuevo Valor de sts_subsistencia*/
public void setSts_subsistencia(String pSts_subsistencia){
  sts_subsistencia=pSts_subsistencia;
}

/**Obtiene el valor de sts_alimentacion
@return valor de sts_alimentacion*/
public String getSts_alimentacion(){
  return sts_alimentacion;
}
/**Fija el valor de sts_alimentacion
@param pSts_alimentacion nuevo Valor de sts_alimentacion*/
public void setSts_alimentacion(String pSts_alimentacion){
  sts_alimentacion=pSts_alimentacion;
}

/**Obtiene el valor de cod_destino
@return valor de cod_destino*/
public String getCod_destino(){
  return cod_destino;
}
/**Fija el valor de cod_destino
@param pCod_destino nuevo Valor de cod_destino*/
public void setCod_destino(String pCod_destino){
  cod_destino=pCod_destino;
}

/**Obtiene el valor de fec_ini_viatico
@return valor de fec_ini_viatico*/
public Date getFec_ini_viatico(){
  return fec_ini_viatico;
}
/**Fija el valor de fec_ini_viatico
@param pFec_ini_viatico nuevo Valor de fec_ini_viatico*/
public void setFec_ini_viatico(Date pFec_ini_viatico){
  fec_ini_viatico=pFec_ini_viatico;
}

/**Obtiene el valor de fec_fin_viatico
@return valor de fec_fin_viatico*/
public Date getFec_fin_viatico(){
  return fec_fin_viatico;
}
/**Fija el valor de fec_fin_viatico
@param pFec_fin_viatico nuevo Valor de fec_fin_viatico*/
public void setFec_fin_viatico(Date pFec_fin_viatico){
  fec_fin_viatico=pFec_fin_viatico;
}

/**Obtiene el valor de fec_hora_inicio
@return valor de fec_hora_inicio*/
public String getFec_hora_inicio(){
  return fec_hora_inicio;
}
/**Fija el valor de fec_hora_inicio
@param pFec_hora_inicio nuevo Valor de fec_hora_inicio*/
public void setFec_hora_inicio(String pFec_hora_inicio){
  fec_hora_inicio=pFec_hora_inicio;
}

/**Obtiene el valor de fec_hora_fin
@return valor de fec_hora_fin*/
public String getFec_hora_fin(){
  return fec_hora_fin;
}
/**Fija el valor de fec_hora_fin
@param pFec_hora_fin nuevo Valor de fec_hora_fin*/
public void setFec_hora_fin(String pFec_hora_fin){
  fec_hora_fin=pFec_hora_fin;
}

/**Obtiene el valor de txt_actividades
@return valor de txt_actividades*/
public String getTxt_actividades(){
  return txt_actividades;
}
/**Fija el valor de txt_actividades
@param pTxt_actividades nuevo Valor de txt_actividades*/
public void setTxt_actividades(String pTxt_actividades){
  txt_actividades=pTxt_actividades;
}

/**Obtiene el valor de cod_usuario
@return valor de cod_usuario*/
public String getCod_usuario(){
  return cod_usuario;
}
/**Fija el valor de cod_usuario
@param pCod_usuario nuevo Valor de cod_usuario*/
public void setCod_usuario(String pCod_usuario){
  cod_usuario=pCod_usuario;
}

/**Obtiene el valor de cod_jefe
@return valor de cod_jefe*/
public String getCod_jefe(){
  return cod_jefe;
}
/**Fija el valor de cod_jefe
@param pCod_jefe nuevo Valor de cod_jefe*/
public void setCod_jefe(String pCod_jefe){
  cod_jefe=pCod_jefe;
}

/**Obtiene el valor de cod_responsable
@return valor de cod_responsable*/
public String getCod_responsable(){
  return cod_responsable;
}
/**Fija el valor de cod_responsable
@param pCod_responsable nuevo Valor de cod_responsable*/
public void setCod_responsable(String pCod_responsable){
  cod_responsable=pCod_responsable;
}

public boolean equals(Object rhs){
    if (rhs == null)return false;
    if (! (rhs instanceof ViaSolicitud))return false;
    ViaSolicitud that = (ViaSolicitud) rhs;
    if (this.getPk() == null || that.getPk() == null)
        return false;
    return (this.getPk().equals(that.getPk()));
}
/**Implementacion del metodo hashCode de la la entidad ViaSolicitud
@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 ViaSolicitud
*/
public Object createInstance(){
 ViaSolicitud instance=new ViaSolicitud();	
 instance.setPk(new ViaSolicitudKey());
 return instance;
}
/**Clona la entidad ViaSolicitud
@see com.fp.dto.hb.HibernateBean#cloneMe()
*/
public Object cloneMe() throws CloneNotSupportedException{
  ViaSolicitud p=(ViaSolicitud)this.clone();
  p.setPk((ViaSolicitudKey)this.pk.cloneMe());
  return p;
}
}
