package com.fitbank.hb.persistence.card;

import com.fitbank.common.hb.AbstractExpire;
import java.io.Serializable;
import java.sql.Date;
import java.lang.reflect.Field;
import java.sql.Timestamp;
import com.fitbank.common.TransportBean;

/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TTARJETAPLASTICOS*/
public class Tplasticcard extends AbstractExpire  implements Serializable,TransportBean,Cloneable{
/**
* HashCode asociado con la Instancia
*/
private volatile int hashValue = 0;
/**
* Version de la Clase
*/
private static final long serialVersionUID = 1L;
/**
* Clave primaria de la Entidad Tplasticcard
*/
private TplasticcardKey pk;
/**
* Manejo de optimistic loking
*/
private Integer versioncontrol;

/**
* Fecha desde la que estan vigentes los datos del plastico de una tarjeta de debito,credito,identificacion,parqueadero,etc.
*/
private Timestamp fdesde;

/**
* Numero asignado fisicamente al plastico de una tarjeta de debito,credito,identificacion,parqueadero,etc.
*/
private String numeroenbanda;

/**
* Nombre que se colocara en el plastico de una tarjeta de debito,credito,identificacion,parqueadero,etc.
*/
private String nombreenplastico;

/**
* Texto para saludo en los cajeros automaticos
*/
private String textosaludo;

/**
* Numero del algoritmo que se utilizara para validacion del PIN
*/
private Integer numeroalgoritmo;

/**
* Numero para comprobacion del PIN del cliente, depende de la politica de autenticacion de clave de la institucion
*/
private Integer pinoffset;

/**
* Codigo de seguridad de un plastico de tarjeta de debito,credito,identificacion,parqueadero,etc., generado a traves de un algoritmo especial. Este dato se graba en el track 2 y 3 de la banda magnetica
*/
private String codigoseguridad;

/**
* Fecha de expiracion del plastico de una tarjeta de debito,credito,identificacion,parqueadero,etc.
*/
private Date fexpiracion;

/**
* Numero del lote de fabricacion de la tarjeta de debito,credito,identificacion,parqueadero,etc.
*/
private Integer numerolote;

/**
* Codigo de la sucursal de registro del ingreso de la solicitud del plastico o la entrega de una tarjeta de debito,credito,identificacion,parqueadero,etc.
*/
private Integer csucursal;

/**
* Codigo de la oficina donde se registra el ingreso de la solicitud del plastico o la entrega de una tarjeta de debito,credito,identificacion,parqueadero,etc.
*/
private Integer coficina;

/**
* Fecha de entrega del plastico de una tarjeta de debito,credito,identificacion,parqueadero,etc.
*/
private Date ftransaccion;

/**
* Codigo de modelo del plastico de una tarjeta de debito,credito,identificacion,parqueadero,etc.
*/
private String cmodeloplastico;

/**
* Codigo del estatus del plastico de una tarjeta de debito,credito,identificacion,parqueadero,etc.
*/
private String cestatusplastico;

/**
* Codigo de usuario
*/
private String cusuario;

/**
* Indica si la tarjeta ha sido o no retenida en algun cajero automatico
*/
private String tarjetaretenida;

/**
* Fecha de retencion del plastico de una tarjeta de debito,credito,identificacion,parqueadero,etc.
*/
private Date fretencion;

/**
* Identificador del cajero en el que fue retenido el plastico de una tarjeta de debito,credito,identificacion,parqueadero,etc.
*/
private String idcajeroretencion;

/**
* Identificador de la red de cajeros en el que fue retenido el plastico de una tarjeta de debito,credito,identificacion,parqueadero,etc.
*/
private String idcanalretencion;

/**
* Numero de veces que ha fallado el ingreso del PIN en el cajero automatico
*/
private Integer contadorerrorpin;

/**
* Fecha del registro de error en el ingreso del PIN en un cajero automatico
*/
private Date ferrorpin;

/**
* Identificador del cajero en el que se presento el error en el ingreso del PIN de una tarjeta de debito,credito,identificacion,parqueadero,etc.
*/
private String idcajeropin;

/**
* Identificador de la red de cajeros en el que se presento el error en el ingreso del PIN de una tarjeta de debito,credito,identificacion,parqueadero,etc.
*/
private String idcanalpin;

/**
* Indicador para forzar o no el cambio del pin de la tarjeta en el ATM
*/
private String forzarcambiopin;

/**
* Fecha del ultimo cambio del pin
*/
private Date fcambiopin;

/**
* Identificacion del cajero en donde se cambio el PIN de la tarjeta
*/
private String idcajerocambiopin;

/**
* Indica si el plastico puede ser usado en paises de riesgo o no
*/
private String usopaisriesgo;

/**
* Observaciones al plastico de una tarjeta de debito,credito,identificacion,parqueadero,etc.
*/
private String observaciones;

/**
* Identificador del cajero en el que se utilizo la tarjeta
*/
private String idcajeroultimouso;

/**
* Fecha en la que se utilizo la tarjeta en el ATM
*/
private Date fultimousoatm;

/**
* Codigo de sucursal de apertura de la tarjeta
*/
private Integer csucursal_apertura;

/**
* Codigo de oficina de apertura de la tarjeta
*/
private Integer coficina_apertura;

/**
* Codigo de sucursal de retiro de la tarjeta
*/
private Integer csucursal_retiro;

/**
* Codigo de oficina de retiro de la tarjeta
*/
private Integer coficina_retiro;

/**
* Fecha de emision de la tarjeta
*/
private Date femision;

/**Contructor por defecto*/
public Tplasticcard(){}
/**Contructor de Tplasticcard
@param pPk Clave Primaria del entity
@param pFdesde Fecha desde la que estan vigentes los datos del plastico de una tarjeta de debito,credito,identificacion,parqueadero,etc.
@param pNumeroenbanda Numero asignado fisicamente al plastico de una tarjeta de debito,credito,identificacion,parqueadero,etc.
@param pNombreenplastico Nombre que se colocara en el plastico de una tarjeta de debito,credito,identificacion,parqueadero,etc.
@param pTextosaludo Texto para saludo en los cajeros automaticos
@param pNumeroalgoritmo Numero del algoritmo que se utilizara para validacion del PIN
@param pPinoffset Numero para comprobacion del PIN del cliente, depende de la politica de autenticacion de clave de la institucion
@param pCodigoseguridad Codigo de seguridad de un plastico de tarjeta de debito,credito,identificacion,parqueadero,etc., generado a traves de un algoritmo especial. Este dato se graba en el track 2 y 3 de la banda magnetica
@param pFexpiracion Fecha de expiracion del plastico de una tarjeta de debito,credito,identificacion,parqueadero,etc.
@param pCmodeloplastico Codigo de modelo del plastico de una tarjeta de debito,credito,identificacion,parqueadero,etc.
@param pCestatusplastico Codigo del estatus del plastico de una tarjeta de debito,credito,identificacion,parqueadero,etc.
*/
public Tplasticcard(TplasticcardKey pPk,Timestamp pFdesde,String pNumeroenbanda,String pNombreenplastico,String pTextosaludo,Integer pNumeroalgoritmo,Integer pPinoffset,String pCodigoseguridad,Date pFexpiracion,String pCmodeloplastico,String pCestatusplastico){
 pk=pPk;
 fdesde=pFdesde;
 numeroenbanda=pNumeroenbanda;
 nombreenplastico=pNombreenplastico;
 textosaludo=pTextosaludo;
 numeroalgoritmo=pNumeroalgoritmo;
 pinoffset=pPinoffset;
 codigoseguridad=pCodigoseguridad;
 fexpiracion=pFexpiracion;
 cmodeloplastico=pCmodeloplastico;
 cestatusplastico=pCestatusplastico;
}
/**Entrega la Clave primaria de Tplasticcard
@return El objeto que referencia a la Clave primaria de Tplasticcard
*/
public TplasticcardKey getPk(){
  return pk;
}
/**Fija un nuevo valor a la Clave primaria de Tplasticcard
@param pPk El objeto que referencia a la nueva Clave primaria de Tplasticcard
*/
public void setPk(TplasticcardKey pPk){
  pk=pPk;
}
/**Obtiene el valor de versioncontrol
@return valor de versioncontrol*/
public Integer getVersioncontrol(){
  return versioncontrol;
}
/**Fija el valor de versioncontrol
@param pVersioncontrol nuevo Valor de versioncontrol*/
public void setVersioncontrol(Integer pVersioncontrol){
  versioncontrol=pVersioncontrol;
}

/**Obtiene el valor de fdesde
@return valor de fdesde*/
public Timestamp getFdesde(){
  return fdesde;
}
/**Fija el valor de fdesde
@param pFdesde nuevo Valor de fdesde*/
public void setFdesde(Timestamp pFdesde){
  fdesde=pFdesde;
}

/**Obtiene el valor de numeroenbanda
@return valor de numeroenbanda*/
public String getNumeroenbanda(){
  return numeroenbanda;
}
/**Fija el valor de numeroenbanda
@param pNumeroenbanda nuevo Valor de numeroenbanda*/
public void setNumeroenbanda(String pNumeroenbanda){
  numeroenbanda=pNumeroenbanda;
}

/**Obtiene el valor de nombreenplastico
@return valor de nombreenplastico*/
public String getNombreenplastico(){
  return nombreenplastico;
}
/**Fija el valor de nombreenplastico
@param pNombreenplastico nuevo Valor de nombreenplastico*/
public void setNombreenplastico(String pNombreenplastico){
  nombreenplastico=pNombreenplastico;
}

/**Obtiene el valor de textosaludo
@return valor de textosaludo*/
public String getTextosaludo(){
  return textosaludo;
}
/**Fija el valor de textosaludo
@param pTextosaludo nuevo Valor de textosaludo*/
public void setTextosaludo(String pTextosaludo){
  textosaludo=pTextosaludo;
}

/**Obtiene el valor de numeroalgoritmo
@return valor de numeroalgoritmo*/
public Integer getNumeroalgoritmo(){
  return numeroalgoritmo;
}
/**Fija el valor de numeroalgoritmo
@param pNumeroalgoritmo nuevo Valor de numeroalgoritmo*/
public void setNumeroalgoritmo(Integer pNumeroalgoritmo){
  numeroalgoritmo=pNumeroalgoritmo;
}

/**Obtiene el valor de pinoffset
@return valor de pinoffset*/
public Integer getPinoffset(){
  return pinoffset;
}
/**Fija el valor de pinoffset
@param pPinoffset nuevo Valor de pinoffset*/
public void setPinoffset(Integer pPinoffset){
  pinoffset=pPinoffset;
}

/**Obtiene el valor de codigoseguridad
@return valor de codigoseguridad*/
public String getCodigoseguridad(){
  return codigoseguridad;
}
/**Fija el valor de codigoseguridad
@param pCodigoseguridad nuevo Valor de codigoseguridad*/
public void setCodigoseguridad(String pCodigoseguridad){
  codigoseguridad=pCodigoseguridad;
}

/**Obtiene el valor de fexpiracion
@return valor de fexpiracion*/
public Date getFexpiracion(){
  return fexpiracion;
}
/**Fija el valor de fexpiracion
@param pFexpiracion nuevo Valor de fexpiracion*/
public void setFexpiracion(Date pFexpiracion){
  fexpiracion=pFexpiracion;
}

/**Obtiene el valor de numerolote
@return valor de numerolote*/
public Integer getNumerolote(){
  return numerolote;
}
/**Fija el valor de numerolote
@param pNumerolote nuevo Valor de numerolote*/
public void setNumerolote(Integer pNumerolote){
  numerolote=pNumerolote;
}

/**Obtiene el valor de csucursal
@return valor de csucursal*/
public Integer getCsucursal(){
  return csucursal;
}
/**Fija el valor de csucursal
@param pCsucursal nuevo Valor de csucursal*/
public void setCsucursal(Integer pCsucursal){
  csucursal=pCsucursal;
}

/**Obtiene el valor de coficina
@return valor de coficina*/
public Integer getCoficina(){
  return coficina;
}
/**Fija el valor de coficina
@param pCoficina nuevo Valor de coficina*/
public void setCoficina(Integer pCoficina){
  coficina=pCoficina;
}

/**Obtiene el valor de ftransaccion
@return valor de ftransaccion*/
public Date getFtransaccion(){
  return ftransaccion;
}
/**Fija el valor de ftransaccion
@param pFtransaccion nuevo Valor de ftransaccion*/
public void setFtransaccion(Date pFtransaccion){
  ftransaccion=pFtransaccion;
}

/**Obtiene el valor de cmodeloplastico
@return valor de cmodeloplastico*/
public String getCmodeloplastico(){
  return cmodeloplastico;
}
/**Fija el valor de cmodeloplastico
@param pCmodeloplastico nuevo Valor de cmodeloplastico*/
public void setCmodeloplastico(String pCmodeloplastico){
  cmodeloplastico=pCmodeloplastico;
}

/**Obtiene el valor de cestatusplastico
@return valor de cestatusplastico*/
public String getCestatusplastico(){
  return cestatusplastico;
}
/**Fija el valor de cestatusplastico
@param pCestatusplastico nuevo Valor de cestatusplastico*/
public void setCestatusplastico(String pCestatusplastico){
  cestatusplastico=pCestatusplastico;
}

/**Obtiene el valor de cusuario
@return valor de cusuario*/
public String getCusuario(){
  return cusuario;
}
/**Fija el valor de cusuario
@param pCusuario nuevo Valor de cusuario*/
public void setCusuario(String pCusuario){
  cusuario=pCusuario;
}

/**Obtiene el valor de tarjetaretenida
@return valor de tarjetaretenida*/
public String getTarjetaretenida(){
  return tarjetaretenida;
}
/**Fija el valor de tarjetaretenida
@param pTarjetaretenida nuevo Valor de tarjetaretenida*/
public void setTarjetaretenida(String pTarjetaretenida){
  tarjetaretenida=pTarjetaretenida;
}

/**Obtiene el valor de fretencion
@return valor de fretencion*/
public Date getFretencion(){
  return fretencion;
}
/**Fija el valor de fretencion
@param pFretencion nuevo Valor de fretencion*/
public void setFretencion(Date pFretencion){
  fretencion=pFretencion;
}

/**Obtiene el valor de idcajeroretencion
@return valor de idcajeroretencion*/
public String getIdcajeroretencion(){
  return idcajeroretencion;
}
/**Fija el valor de idcajeroretencion
@param pIdcajeroretencion nuevo Valor de idcajeroretencion*/
public void setIdcajeroretencion(String pIdcajeroretencion){
  idcajeroretencion=pIdcajeroretencion;
}

/**Obtiene el valor de idcanalretencion
@return valor de idcanalretencion*/
public String getIdcanalretencion(){
  return idcanalretencion;
}
/**Fija el valor de idcanalretencion
@param pIdcanalretencion nuevo Valor de idcanalretencion*/
public void setIdcanalretencion(String pIdcanalretencion){
  idcanalretencion=pIdcanalretencion;
}

/**Obtiene el valor de contadorerrorpin
@return valor de contadorerrorpin*/
public Integer getContadorerrorpin(){
  return contadorerrorpin;
}
/**Fija el valor de contadorerrorpin
@param pContadorerrorpin nuevo Valor de contadorerrorpin*/
public void setContadorerrorpin(Integer pContadorerrorpin){
  contadorerrorpin=pContadorerrorpin;
}

/**Obtiene el valor de ferrorpin
@return valor de ferrorpin*/
public Date getFerrorpin(){
  return ferrorpin;
}
/**Fija el valor de ferrorpin
@param pFerrorpin nuevo Valor de ferrorpin*/
public void setFerrorpin(Date pFerrorpin){
  ferrorpin=pFerrorpin;
}

/**Obtiene el valor de idcajeropin
@return valor de idcajeropin*/
public String getIdcajeropin(){
  return idcajeropin;
}
/**Fija el valor de idcajeropin
@param pIdcajeropin nuevo Valor de idcajeropin*/
public void setIdcajeropin(String pIdcajeropin){
  idcajeropin=pIdcajeropin;
}

/**Obtiene el valor de idcanalpin
@return valor de idcanalpin*/
public String getIdcanalpin(){
  return idcanalpin;
}
/**Fija el valor de idcanalpin
@param pIdcanalpin nuevo Valor de idcanalpin*/
public void setIdcanalpin(String pIdcanalpin){
  idcanalpin=pIdcanalpin;
}

/**Obtiene el valor de forzarcambiopin
@return valor de forzarcambiopin*/
public String getForzarcambiopin(){
  return forzarcambiopin;
}
/**Fija el valor de forzarcambiopin
@param pForzarcambiopin nuevo Valor de forzarcambiopin*/
public void setForzarcambiopin(String pForzarcambiopin){
  forzarcambiopin=pForzarcambiopin;
}

/**Obtiene el valor de fcambiopin
@return valor de fcambiopin*/
public Date getFcambiopin(){
  return fcambiopin;
}
/**Fija el valor de fcambiopin
@param pFcambiopin nuevo Valor de fcambiopin*/
public void setFcambiopin(Date pFcambiopin){
  fcambiopin=pFcambiopin;
}

/**Obtiene el valor de idcajerocambiopin
@return valor de idcajerocambiopin*/
public String getIdcajerocambiopin(){
  return idcajerocambiopin;
}
/**Fija el valor de idcajerocambiopin
@param pIdcajerocambiopin nuevo Valor de idcajerocambiopin*/
public void setIdcajerocambiopin(String pIdcajerocambiopin){
  idcajerocambiopin=pIdcajerocambiopin;
}

/**Obtiene el valor de usopaisriesgo
@return valor de usopaisriesgo*/
public String getUsopaisriesgo(){
  return usopaisriesgo;
}
/**Fija el valor de usopaisriesgo
@param pUsopaisriesgo nuevo Valor de usopaisriesgo*/
public void setUsopaisriesgo(String pUsopaisriesgo){
  usopaisriesgo=pUsopaisriesgo;
}

/**Obtiene el valor de observaciones
@return valor de observaciones*/
public String getObservaciones(){
  return observaciones;
}
/**Fija el valor de observaciones
@param pObservaciones nuevo Valor de observaciones*/
public void setObservaciones(String pObservaciones){
  observaciones=pObservaciones;
}

/**Obtiene el valor de idcajeroultimouso
@return valor de idcajeroultimouso*/
public String getIdcajeroultimouso(){
  return idcajeroultimouso;
}
/**Fija el valor de idcajeroultimouso
@param pIdcajeroultimouso nuevo Valor de idcajeroultimouso*/
public void setIdcajeroultimouso(String pIdcajeroultimouso){
  idcajeroultimouso=pIdcajeroultimouso;
}

/**Obtiene el valor de fultimousoatm
@return valor de fultimousoatm*/
public Date getFultimousoatm(){
  return fultimousoatm;
}
/**Fija el valor de fultimousoatm
@param pFultimousoatm nuevo Valor de fultimousoatm*/
public void setFultimousoatm(Date pFultimousoatm){
  fultimousoatm=pFultimousoatm;
}

/**Obtiene el valor de csucursal_apertura
@return valor de csucursal_apertura*/
public Integer getCsucursal_apertura(){
  return csucursal_apertura;
}
/**Fija el valor de csucursal_apertura
@param pCsucursal_apertura nuevo Valor de csucursal_apertura*/
public void setCsucursal_apertura(Integer pCsucursal_apertura){
  csucursal_apertura=pCsucursal_apertura;
}

/**Obtiene el valor de coficina_apertura
@return valor de coficina_apertura*/
public Integer getCoficina_apertura(){
  return coficina_apertura;
}
/**Fija el valor de coficina_apertura
@param pCoficina_apertura nuevo Valor de coficina_apertura*/
public void setCoficina_apertura(Integer pCoficina_apertura){
  coficina_apertura=pCoficina_apertura;
}

/**Obtiene el valor de csucursal_retiro
@return valor de csucursal_retiro*/
public Integer getCsucursal_retiro(){
  return csucursal_retiro;
}
/**Fija el valor de csucursal_retiro
@param pCsucursal_retiro nuevo Valor de csucursal_retiro*/
public void setCsucursal_retiro(Integer pCsucursal_retiro){
  csucursal_retiro=pCsucursal_retiro;
}

/**Obtiene el valor de coficina_retiro
@return valor de coficina_retiro*/
public Integer getCoficina_retiro(){
  return coficina_retiro;
}
/**Fija el valor de coficina_retiro
@param pCoficina_retiro nuevo Valor de coficina_retiro*/
public void setCoficina_retiro(Integer pCoficina_retiro){
  coficina_retiro=pCoficina_retiro;
}

/**Obtiene el valor de femision
@return valor de femision*/
public Date getFemision(){
  return femision;
}
/**Fija el valor de femision
@param pFemision nuevo Valor de femision*/
public void setFemision(Date pFemision){
  femision=pFemision;
}

/**Implementación de la comparación de la entidad Tplasticcard
@param rhs Elemento de Comparación
@return el resultado de la comparación
*/
public boolean equals(Object rhs){
    if (rhs == null)return false;
    if (! (rhs instanceof Tplasticcard))return false;
    Tplasticcard that = (Tplasticcard) rhs;
    if (this.getPk() == null || that.getPk() == null)
        return false;
    return (this.getPk().equals(that.getPk()));
}
/**Implementación del metodo hashCode de la la entidad Tplasticcard
@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;
}
/**Implementación toString
*/
public String toString() {
	Field[]fs=this.getClass().getDeclaredFields();
	String data="";
	for(Field f:fs){
	 try{	
	 String name=f.getName();
	 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;
	}
/**Implementación de la creación de un bean en blancoTplasticcard
*/
public Object createInstance() throws Exception{
 Tplasticcard instance=new Tplasticcard();	
 instance.setPk(new TplasticcardKey());
 return instance;
}
public Object cloneMe() throws Exception{
  Tplasticcard p=(Tplasticcard)this.clone();
  p.setPk((TplasticcardKey)this.pk.cloneMe());
  return p;
}
public Object getId() {
  return this.pk;
}
}
