package com.fp.persistence.pgeneral.score;

import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import java.sql.Timestamp;
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 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 TGENEACCOUNTSCOREJOURNAL*/
@Entity(name="TgeneAccountScoreJournal")
@Table(name="TGENEACCOUNTSCOREJOURNAL")
public class TgeneAccountScoreJournal 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 TgeneAccountScoreJournal
*/
@EmbeddedId
private TgeneAccountScoreJournalKey pk;
@Column(name="PROCESSDESCRIPTION", nullable=true)

/**
* null
*/
private String processdescription;

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

/**
* Numero de cuenta
*/
private String account;

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

/**
* Codigo de compania a la que pertence la cuenta
*/
private Integer company;

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

/**
* Fecha de calificacion de la cuenta
*/
private Date scoredate;

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

/**
* Codigo de estatus de la operacion con el que se realiza la calificacion, ORI (Original), REF (refinanciada), RES (restructurada)
*/
private String operationstatus;

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

/**
* Codigo de modulo
*/
private String modulecode;

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

/**
* Codigo de producto
*/
private String productcode;

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

/**
* Codigo de subproducto
*/
private String subproductcode;

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

/**
* Codigo de moneda
*/
private String currencycode;

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

/**
* Codigo de tipo de credito
*/
private String credittypecode;

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

/**
* Estatus de cuenta
*/
private String statuscode;

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

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

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

/**
* null
*/
private BigDecimal amount;

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

/**
* Codigo de calificacion actual del prestamo
*/
private String score;

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

/**
* Porcentaje de provision constituido.
*/
private BigDecimal provisionpercent;

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

/**
* Saldo de provision de la cuenta
*/
private BigDecimal provisionvalue;

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

/**
* Codigo de calificacion actual del prestamo
*/
private String manualscore;

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

/**
* Porcentaje de provision constituido.
*/
private BigDecimal manualprovisionpercent;

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

/**
* Saldo de provision de la cuenta
*/
private BigDecimal manualprovisionvalue;

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

/**
* Codigo de calificacion actual del prestamo
*/
private String finalscore;

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

/**
* Porcentaje de provision constituido.
*/
private BigDecimal finalprovisionpercent;

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

/**
* Saldo de provision de la cuenta
*/
private BigDecimal finalprovisionvalue;

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

/**
* Codigo de calificacion actual del prestamo
*/
private String previousscore;

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

/**
* Porcentaje de provision constituido.
*/
private BigDecimal previousprovisionpercent;

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

/**
* Saldo de provision de la cuenta
*/
private BigDecimal previousprovisionvalue;

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

/**
* Fecha de vencimiento de la menor cuota no pagada
*/
private Date expirationdate;

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

/**
* N Indica que la calificacion se creo al crear la cuenta, Y Indica que es una calificacion a reportar a un organismo de control
*/
private String iscomputedscore;

/**Contructor por defecto*/
public TgeneAccountScoreJournal(){
}
/**Contructor de TgeneAccountScoreJournal
@param pPk Clave Primaria del entity
@param pAccount Numero de cuenta
@param pCompany Codigo de compania a la que pertence la cuenta
@param pScoredate Fecha de calificacion de la cuenta
*/
public TgeneAccountScoreJournal(TgeneAccountScoreJournalKey pPk,String pAccount,Integer pCompany,Date pScoredate){
 this();
 pk=pPk;
 account=pAccount;
 company=pCompany;
 scoredate=pScoredate;
}
/**
* 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 TgeneAccountScoreJournal
*/
public static TgeneAccountScoreJournal find(EntityManager pEntityManager,TgeneAccountScoreJournalKey pKey) throws Exception{
    TgeneAccountScoreJournal obj = pEntityManager.find(TgeneAccountScoreJournal.class,pKey);
    return obj;
}
/**Entrega la Clave primaria de TgeneAccountScoreJournal
@return El objeto que referencia a la Clave primaria de TgeneAccountScoreJournal
*/
public TgeneAccountScoreJournalKey getPk(){
  return pk;
}
/**Fija un nuevo valor a la Clave primaria de TgeneAccountScoreJournal
@param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccountScoreJournal
*/
public void setPk(TgeneAccountScoreJournalKey pPk){
  pk=pPk;
}
/**Obtiene el valor de processdescription
@return valor de processdescription*/
public String getProcessdescription(){
  return processdescription;
}
/**Fija el valor de processdescription
@param pProcessdescription nuevo Valor de processdescription*/
public void setProcessdescription(String pProcessdescription){
  processdescription=pProcessdescription;
}

/**Obtiene el valor de account
@return valor de account*/
public String getAccount(){
  return account;
}
/**Fija el valor de account
@param pAccount nuevo Valor de account*/
public void setAccount(String pAccount){
  account=pAccount;
}

/**Obtiene el valor de company
@return valor de company*/
public Integer getCompany(){
  return company;
}
/**Fija el valor de company
@param pCompany nuevo Valor de company*/
public void setCompany(Integer pCompany){
  company=pCompany;
}

/**Obtiene el valor de scoredate
@return valor de scoredate*/
public Date getScoredate(){
  return scoredate;
}
/**Fija el valor de scoredate
@param pScoredate nuevo Valor de scoredate*/
public void setScoredate(Date pScoredate){
  scoredate=pScoredate;
}

/**Obtiene el valor de operationstatus
@return valor de operationstatus*/
public String getOperationstatus(){
  return operationstatus;
}
/**Fija el valor de operationstatus
@param pOperationstatus nuevo Valor de operationstatus*/
public void setOperationstatus(String pOperationstatus){
  operationstatus=pOperationstatus;
}

/**Obtiene el valor de modulecode
@return valor de modulecode*/
public String getModulecode(){
  return modulecode;
}
/**Fija el valor de modulecode
@param pModulecode nuevo Valor de modulecode*/
public void setModulecode(String pModulecode){
  modulecode=pModulecode;
}

/**Obtiene el valor de productcode
@return valor de productcode*/
public String getProductcode(){
  return productcode;
}
/**Fija el valor de productcode
@param pProductcode nuevo Valor de productcode*/
public void setProductcode(String pProductcode){
  productcode=pProductcode;
}

/**Obtiene el valor de subproductcode
@return valor de subproductcode*/
public String getSubproductcode(){
  return subproductcode;
}
/**Fija el valor de subproductcode
@param pSubproductcode nuevo Valor de subproductcode*/
public void setSubproductcode(String pSubproductcode){
  subproductcode=pSubproductcode;
}

/**Obtiene el valor de currencycode
@return valor de currencycode*/
public String getCurrencycode(){
  return currencycode;
}
/**Fija el valor de currencycode
@param pCurrencycode nuevo Valor de currencycode*/
public void setCurrencycode(String pCurrencycode){
  currencycode=pCurrencycode;
}

/**Obtiene el valor de credittypecode
@return valor de credittypecode*/
public String getCredittypecode(){
  return credittypecode;
}
/**Fija el valor de credittypecode
@param pCredittypecode nuevo Valor de credittypecode*/
public void setCredittypecode(String pCredittypecode){
  credittypecode=pCredittypecode;
}

/**Obtiene el valor de statuscode
@return valor de statuscode*/
public String getStatuscode(){
  return statuscode;
}
/**Fija el valor de statuscode
@param pStatuscode nuevo Valor de statuscode*/
public void setStatuscode(String pStatuscode){
  statuscode=pStatuscode;
}

/**Obtiene el valor de usercode
@return valor de usercode*/
public String getUsercode(){
  return usercode;
}
/**Fija el valor de usercode
@param pUsercode nuevo Valor de usercode*/
public void setUsercode(String pUsercode){
  usercode=pUsercode;
}

/**Obtiene el valor de amount
@return valor de amount*/
public BigDecimal getAmount(){
  return amount;
}
/**Fija el valor de amount
@param pAmount nuevo Valor de amount*/
public void setAmount(BigDecimal pAmount){
  amount=pAmount;
}

/**Obtiene el valor de score
@return valor de score*/
public String getScore(){
  return score;
}
/**Fija el valor de score
@param pScore nuevo Valor de score*/
public void setScore(String pScore){
  score=pScore;
}

/**Obtiene el valor de provisionpercent
@return valor de provisionpercent*/
public BigDecimal getProvisionpercent(){
  return provisionpercent;
}
/**Fija el valor de provisionpercent
@param pProvisionpercent nuevo Valor de provisionpercent*/
public void setProvisionpercent(BigDecimal pProvisionpercent){
  provisionpercent=pProvisionpercent;
}

/**Obtiene el valor de provisionvalue
@return valor de provisionvalue*/
public BigDecimal getProvisionvalue(){
  return provisionvalue;
}
/**Fija el valor de provisionvalue
@param pProvisionvalue nuevo Valor de provisionvalue*/
public void setProvisionvalue(BigDecimal pProvisionvalue){
  provisionvalue=pProvisionvalue;
}

/**Obtiene el valor de manualscore
@return valor de manualscore*/
public String getManualscore(){
  return manualscore;
}
/**Fija el valor de manualscore
@param pManualscore nuevo Valor de manualscore*/
public void setManualscore(String pManualscore){
  manualscore=pManualscore;
}

/**Obtiene el valor de manualprovisionpercent
@return valor de manualprovisionpercent*/
public BigDecimal getManualprovisionpercent(){
  return manualprovisionpercent;
}
/**Fija el valor de manualprovisionpercent
@param pManualprovisionpercent nuevo Valor de manualprovisionpercent*/
public void setManualprovisionpercent(BigDecimal pManualprovisionpercent){
  manualprovisionpercent=pManualprovisionpercent;
}

/**Obtiene el valor de manualprovisionvalue
@return valor de manualprovisionvalue*/
public BigDecimal getManualprovisionvalue(){
  return manualprovisionvalue;
}
/**Fija el valor de manualprovisionvalue
@param pManualprovisionvalue nuevo Valor de manualprovisionvalue*/
public void setManualprovisionvalue(BigDecimal pManualprovisionvalue){
  manualprovisionvalue=pManualprovisionvalue;
}

/**Obtiene el valor de finalscore
@return valor de finalscore*/
public String getFinalscore(){
  return finalscore;
}
/**Fija el valor de finalscore
@param pFinalscore nuevo Valor de finalscore*/
public void setFinalscore(String pFinalscore){
  finalscore=pFinalscore;
}

/**Obtiene el valor de finalprovisionpercent
@return valor de finalprovisionpercent*/
public BigDecimal getFinalprovisionpercent(){
  return finalprovisionpercent;
}
/**Fija el valor de finalprovisionpercent
@param pFinalprovisionpercent nuevo Valor de finalprovisionpercent*/
public void setFinalprovisionpercent(BigDecimal pFinalprovisionpercent){
  finalprovisionpercent=pFinalprovisionpercent;
}

/**Obtiene el valor de finalprovisionvalue
@return valor de finalprovisionvalue*/
public BigDecimal getFinalprovisionvalue(){
  return finalprovisionvalue;
}
/**Fija el valor de finalprovisionvalue
@param pFinalprovisionvalue nuevo Valor de finalprovisionvalue*/
public void setFinalprovisionvalue(BigDecimal pFinalprovisionvalue){
  finalprovisionvalue=pFinalprovisionvalue;
}

/**Obtiene el valor de previousscore
@return valor de previousscore*/
public String getPreviousscore(){
  return previousscore;
}
/**Fija el valor de previousscore
@param pPreviousscore nuevo Valor de previousscore*/
public void setPreviousscore(String pPreviousscore){
  previousscore=pPreviousscore;
}

/**Obtiene el valor de previousprovisionpercent
@return valor de previousprovisionpercent*/
public BigDecimal getPreviousprovisionpercent(){
  return previousprovisionpercent;
}
/**Fija el valor de previousprovisionpercent
@param pPreviousprovisionpercent nuevo Valor de previousprovisionpercent*/
public void setPreviousprovisionpercent(BigDecimal pPreviousprovisionpercent){
  previousprovisionpercent=pPreviousprovisionpercent;
}

/**Obtiene el valor de previousprovisionvalue
@return valor de previousprovisionvalue*/
public BigDecimal getPreviousprovisionvalue(){
  return previousprovisionvalue;
}
/**Fija el valor de previousprovisionvalue
@param pPreviousprovisionvalue nuevo Valor de previousprovisionvalue*/
public void setPreviousprovisionvalue(BigDecimal pPreviousprovisionvalue){
  previousprovisionvalue=pPreviousprovisionvalue;
}

/**Obtiene el valor de expirationdate
@return valor de expirationdate*/
public Date getExpirationdate(){
  return expirationdate;
}
/**Fija el valor de expirationdate
@param pExpirationdate nuevo Valor de expirationdate*/
public void setExpirationdate(Date pExpirationdate){
  expirationdate=pExpirationdate;
}

/**Obtiene el valor de iscomputedscore
@return valor de iscomputedscore*/
public String getIscomputedscore(){
  return iscomputedscore;
}
/**Fija el valor de iscomputedscore
@param pIscomputedscore nuevo Valor de iscomputedscore*/
public void setIscomputedscore(String pIscomputedscore){
  iscomputedscore=pIscomputedscore;
}

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