package com.fitbank.hb.persistence.acco;

import java.sql.Timestamp;
import java.io.Serializable;
import java.math.BigDecimal;
import com.fitbank.common.TransportBean;
import java.lang.reflect.Field;
import com.fitbank.common.hb.AbstractExpire;
import java.sql.Date;

/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TCUENTACONTROLCOBROSERVICIO*/
public class Tpaymentservicecontrolaccount extends AbstractExpire  implements Serializable,TransportBean,Cloneable{
/** Nombre de la Tabla TCUENTACONTROLCOBROSERVICIO */
public static final String TABLE_NAME = "TCUENTACONTROLCOBROSERVICIO";
/** HashCode asociado con la Instancia*/
private int hashValue = 0;
/** Version de la Clase*/
private static final long serialVersionUID = 1L;
/**
* Clave primaria de la Entidad Tpaymentservicecontrolaccount
*/
private TpaymentservicecontrolaccountKey pk;
/**
* Manejo de optimistic locking.
*/
private Integer versioncontrol;

/**
* Fecha desde la que esta vigente el registro de control de cobro de mantenimiento del servicio
*/
private Timestamp fdesde;

/**
* Fecha del ultimo cobro del servicio de tarjeta
*/
private Date fultimocobro;

/**
* Fecha del proximo cobro del servicio de tarjeta
*/
private Date fproximocobro;

/**
* Fecha efectiva del cobro del servicio de tarjeta
*/
private Date fefectivacobro;

/**
* Codigo de subsistema de la transaccion asociada para el cobro del servicio
*/
private String csubsistema_cobro;

/**
* Codigo de transaccion asociada para el cobro del servicio
*/
private String ctransaccion_cobro;

/**
* Version de la transaccion asociada para el cobro
*/
private String versiontransaccion_cobro;

/**
* Rubro del componente de la transaccion de cobro
*/
private Integer rubro_cobro;

/**
* Monto acumulado del costo por el servicio
*/
private BigDecimal montooriginal;

/**
* Monto pendiente del costo por el servicio
*/
private BigDecimal montopendiente;

/**
* Monto cobrado en el ultimo cobro efectuado
*/
private BigDecimal montoultimocobro;

/**
* Monto cobrado acumulado hasta el ultimo cobro efectuado
*/
private BigDecimal montocobrado;

/**
* Numero de mensaje de la transaccion aplicada
*/
private String numeromensaje;

/**
* Costo total del servicio
*/
private BigDecimal costototal;

/**
* Costo financiado del servicio
*/
private BigDecimal costofinanciado;

/**
* Costo periodico 
*/
private BigDecimal costoperiodo;

/**
* Numero de periodos en los que se realiza el cobro del costo financiado del servicio
*/
private Integer numeroperiodos;

/**Contructor por defecto*/
public Tpaymentservicecontrolaccount(){}
/**Contructor de Tpaymentservicecontrolaccount
@param pPk Clave Primaria del entity
@param pFdesde Fecha desde la que esta vigente el registro de control de cobro de mantenimiento del servicio
*/
public Tpaymentservicecontrolaccount(TpaymentservicecontrolaccountKey pPk,Timestamp pFdesde){
 pk=pPk;
 fdesde=pFdesde;
}
/**Entrega la Clave primaria de Tpaymentservicecontrolaccount
@return El objeto que referencia a la Clave primaria de Tpaymentservicecontrolaccount
*/
public TpaymentservicecontrolaccountKey getPk(){
  return pk;
}
/**Fija un nuevo valor a la Clave primaria de Tpaymentservicecontrolaccount
@param pPk El objeto que referencia a la nueva Clave primaria de Tpaymentservicecontrolaccount
*/
public void setPk(TpaymentservicecontrolaccountKey pPk){
  pk=pPk;
}
public static final String VERSIONCONTROL="VERSIONCONTROL";
/**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;
}

public static final String FDESDE="FDESDE";
/**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;
}

public static final String FULTIMOCOBRO="FULTIMOCOBRO";
/**Obtiene el valor de fultimocobro
@return valor de fultimocobro*/
public Date getFultimocobro(){
  return fultimocobro;
}
/**Fija el valor de fultimocobro
@param pFultimocobro nuevo Valor de fultimocobro*/
public void setFultimocobro(Date pFultimocobro){
  fultimocobro=pFultimocobro;
}

public static final String FPROXIMOCOBRO="FPROXIMOCOBRO";
/**Obtiene el valor de fproximocobro
@return valor de fproximocobro*/
public Date getFproximocobro(){
  return fproximocobro;
}
/**Fija el valor de fproximocobro
@param pFproximocobro nuevo Valor de fproximocobro*/
public void setFproximocobro(Date pFproximocobro){
  fproximocobro=pFproximocobro;
}

public static final String FEFECTIVACOBRO="FEFECTIVACOBRO";
/**Obtiene el valor de fefectivacobro
@return valor de fefectivacobro*/
public Date getFefectivacobro(){
  return fefectivacobro;
}
/**Fija el valor de fefectivacobro
@param pFefectivacobro nuevo Valor de fefectivacobro*/
public void setFefectivacobro(Date pFefectivacobro){
  fefectivacobro=pFefectivacobro;
}

public static final String CSUBSISTEMA_COBRO="CSUBSISTEMA_COBRO";
/**Obtiene el valor de csubsistema_cobro
@return valor de csubsistema_cobro*/
public String getCsubsistema_cobro(){
  return csubsistema_cobro;
}
/**Fija el valor de csubsistema_cobro
@param pCsubsistema_cobro nuevo Valor de csubsistema_cobro*/
public void setCsubsistema_cobro(String pCsubsistema_cobro){
  csubsistema_cobro=pCsubsistema_cobro;
}

public static final String CTRANSACCION_COBRO="CTRANSACCION_COBRO";
/**Obtiene el valor de ctransaccion_cobro
@return valor de ctransaccion_cobro*/
public String getCtransaccion_cobro(){
  return ctransaccion_cobro;
}
/**Fija el valor de ctransaccion_cobro
@param pCtransaccion_cobro nuevo Valor de ctransaccion_cobro*/
public void setCtransaccion_cobro(String pCtransaccion_cobro){
  ctransaccion_cobro=pCtransaccion_cobro;
}

public static final String VERSIONTRANSACCION_COBRO="VERSIONTRANSACCION_COBRO";
/**Obtiene el valor de versiontransaccion_cobro
@return valor de versiontransaccion_cobro*/
public String getVersiontransaccion_cobro(){
  return versiontransaccion_cobro;
}
/**Fija el valor de versiontransaccion_cobro
@param pVersiontransaccion_cobro nuevo Valor de versiontransaccion_cobro*/
public void setVersiontransaccion_cobro(String pVersiontransaccion_cobro){
  versiontransaccion_cobro=pVersiontransaccion_cobro;
}

public static final String RUBRO_COBRO="RUBRO_COBRO";
/**Obtiene el valor de rubro_cobro
@return valor de rubro_cobro*/
public Integer getRubro_cobro(){
  return rubro_cobro;
}
/**Fija el valor de rubro_cobro
@param pRubro_cobro nuevo Valor de rubro_cobro*/
public void setRubro_cobro(Integer pRubro_cobro){
  rubro_cobro=pRubro_cobro;
}

public static final String MONTOORIGINAL="MONTOORIGINAL";
/**Obtiene el valor de montooriginal
@return valor de montooriginal*/
public BigDecimal getMontooriginal(){
  return montooriginal;
}
/**Fija el valor de montooriginal
@param pMontooriginal nuevo Valor de montooriginal*/
public void setMontooriginal(BigDecimal pMontooriginal){
  montooriginal=pMontooriginal;
}

public static final String MONTOPENDIENTE="MONTOPENDIENTE";
/**Obtiene el valor de montopendiente
@return valor de montopendiente*/
public BigDecimal getMontopendiente(){
  return montopendiente;
}
/**Fija el valor de montopendiente
@param pMontopendiente nuevo Valor de montopendiente*/
public void setMontopendiente(BigDecimal pMontopendiente){
  montopendiente=pMontopendiente;
}

public static final String MONTOULTIMOCOBRO="MONTOULTIMOCOBRO";
/**Obtiene el valor de montoultimocobro
@return valor de montoultimocobro*/
public BigDecimal getMontoultimocobro(){
  return montoultimocobro;
}
/**Fija el valor de montoultimocobro
@param pMontoultimocobro nuevo Valor de montoultimocobro*/
public void setMontoultimocobro(BigDecimal pMontoultimocobro){
  montoultimocobro=pMontoultimocobro;
}

public static final String MONTOCOBRADO="MONTOCOBRADO";
/**Obtiene el valor de montocobrado
@return valor de montocobrado*/
public BigDecimal getMontocobrado(){
  return montocobrado;
}
/**Fija el valor de montocobrado
@param pMontocobrado nuevo Valor de montocobrado*/
public void setMontocobrado(BigDecimal pMontocobrado){
  montocobrado=pMontocobrado;
}

public static final String NUMEROMENSAJE="NUMEROMENSAJE";
/**Obtiene el valor de numeromensaje
@return valor de numeromensaje*/
public String getNumeromensaje(){
  return numeromensaje;
}
/**Fija el valor de numeromensaje
@param pNumeromensaje nuevo Valor de numeromensaje*/
public void setNumeromensaje(String pNumeromensaje){
  numeromensaje=pNumeromensaje;
}

public static final String COSTOTOTAL="COSTOTOTAL";
/**Obtiene el valor de costototal
@return valor de costototal*/
public BigDecimal getCostototal(){
  return costototal;
}
/**Fija el valor de costototal
@param pCostototal nuevo Valor de costototal*/
public void setCostototal(BigDecimal pCostototal){
  costototal=pCostototal;
}

public static final String COSTOFINANCIADO="COSTOFINANCIADO";
/**Obtiene el valor de costofinanciado
@return valor de costofinanciado*/
public BigDecimal getCostofinanciado(){
  return costofinanciado;
}
/**Fija el valor de costofinanciado
@param pCostofinanciado nuevo Valor de costofinanciado*/
public void setCostofinanciado(BigDecimal pCostofinanciado){
  costofinanciado=pCostofinanciado;
}

public static final String COSTOPERIODO="COSTOPERIODO";
/**Obtiene el valor de costoperiodo
@return valor de costoperiodo*/
public BigDecimal getCostoperiodo(){
  return costoperiodo;
}
/**Fija el valor de costoperiodo
@param pCostoperiodo nuevo Valor de costoperiodo*/
public void setCostoperiodo(BigDecimal pCostoperiodo){
  costoperiodo=pCostoperiodo;
}

public static final String NUMEROPERIODOS="NUMEROPERIODOS";
/**Obtiene el valor de numeroperiodos
@return valor de numeroperiodos*/
public Integer getNumeroperiodos(){
  return numeroperiodos;
}
/**Fija el valor de numeroperiodos
@param pNumeroperiodos nuevo Valor de numeroperiodos*/
public void setNumeroperiodos(Integer pNumeroperiodos){
  numeroperiodos=pNumeroperiodos;
}

/**Implementacion de la comparacion de la entidad Tpaymentservicecontrolaccount
@param rhs Elemento de Comparacion
@return el resultado de la comparacion
*/
public boolean equals(Object rhs){
    if (rhs == null){return false;}
    if (! (rhs instanceof Tpaymentservicecontrolaccount)){return false;}
    Tpaymentservicecontrolaccount that = (Tpaymentservicecontrolaccount) 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 Tpaymentservicecontrolaccount
@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 blancoTpaymentservicecontrolaccount
*/
public Object createInstance() throws Exception{
 Tpaymentservicecontrolaccount instance=new Tpaymentservicecontrolaccount();	
 instance.setPk(new TpaymentservicecontrolaccountKey());
 return instance;
}
public Object cloneMe() throws Exception{
  Tpaymentservicecontrolaccount p=(Tpaymentservicecontrolaccount)this.clone();
  p.setPk((TpaymentservicecontrolaccountKey)this.pk.cloneMe());
  return p;
}
public Object getId() {
  return this.pk;
}
}
