package com.fitbank.hb.persistence.trans;

import java.io.Serializable;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.sql.Date;
import com.fitbank.common.TransportBean;

/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TFERETENCIONIMPUESTOS*/
public class Tferetentiontaxes implements Serializable,TransportBean,Cloneable{
/** Nombre de la Tabla TFERETENCIONIMPUESTOS */
public static final String TABLE_NAME = "TFERETENCIONIMPUESTOS";
/** HashCode asociado con la Instancia*/
private int hashValue = 0;
/** Version de la Clase*/
private static final long serialVersionUID = 1L;
/**
* Clave primaria de la Entidad Tferetentiontaxes
*/
private TferetentiontaxesKey pk;
/**
* Valor sobre el que se calcula el impuesto.
*/
private BigDecimal baseimponible;

/**
* Codigo del porcentaje a retener correspondiente al codigo del impuesto y al concepto. Ver ficha tecnica del SRI para obtener los codigos disponibles.
*/
private BigDecimal porcentajeretener;

/**
* Valor calculado a ser retenido.
*/
private BigDecimal valorretenido;

/**
* Tipo de documento al que se le aplica la retencion. Puede ser 01=Factura, 04=Nota de credito, 05=Nota de debito, 06=Guia de remision, 07=Retencion.
*/
private String coddocsustento;

/**
* Numero del documento de sustento al que hace referencia esta retencion.
*/
private String numdocsustento;

/**
* Fecha de emision del documento de sustento.
*/
private Date fechaemisiondocsustento;

/**Contructor por defecto*/
public Tferetentiontaxes(){}
/**Contructor de Tferetentiontaxes
@param pPk Clave Primaria del entity
@param pBaseimponible Valor sobre el que se calcula el impuesto.
@param pPorcentajeretener Codigo del porcentaje a retener correspondiente al codigo del impuesto y al concepto. Ver ficha tecnica del SRI para obtener los codigos disponibles.
@param pValorretenido Valor calculado a ser retenido.
@param pCoddocsustento Tipo de documento al que se le aplica la retencion. Puede ser 01=Factura, 04=Nota de credito, 05=Nota de debito, 06=Guia de remision, 07=Retencion.
*/
public Tferetentiontaxes(TferetentiontaxesKey pPk,BigDecimal pBaseimponible,BigDecimal pPorcentajeretener,BigDecimal pValorretenido,String pCoddocsustento){
 pk=pPk;
 baseimponible=pBaseimponible;
 porcentajeretener=pPorcentajeretener;
 valorretenido=pValorretenido;
 coddocsustento=pCoddocsustento;
}
/**Entrega la Clave primaria de Tferetentiontaxes
@return El objeto que referencia a la Clave primaria de Tferetentiontaxes
*/
public TferetentiontaxesKey getPk(){
  return pk;
}
/**Fija un nuevo valor a la Clave primaria de Tferetentiontaxes
@param pPk El objeto que referencia a la nueva Clave primaria de Tferetentiontaxes
*/
public void setPk(TferetentiontaxesKey pPk){
  pk=pPk;
}
public static final String BASEIMPONIBLE="BASEIMPONIBLE";
/**Obtiene el valor de baseimponible
@return valor de baseimponible*/
public BigDecimal getBaseimponible(){
  return baseimponible;
}
/**Fija el valor de baseimponible
@param pBaseimponible nuevo Valor de baseimponible*/
public void setBaseimponible(BigDecimal pBaseimponible){
  baseimponible=pBaseimponible;
}

public static final String PORCENTAJERETENER="PORCENTAJERETENER";
/**Obtiene el valor de porcentajeretener
@return valor de porcentajeretener*/
public BigDecimal getPorcentajeretener(){
  return porcentajeretener;
}
/**Fija el valor de porcentajeretener
@param pPorcentajeretener nuevo Valor de porcentajeretener*/
public void setPorcentajeretener(BigDecimal pPorcentajeretener){
  porcentajeretener=pPorcentajeretener;
}

public static final String VALORRETENIDO="VALORRETENIDO";
/**Obtiene el valor de valorretenido
@return valor de valorretenido*/
public BigDecimal getValorretenido(){
  return valorretenido;
}
/**Fija el valor de valorretenido
@param pValorretenido nuevo Valor de valorretenido*/
public void setValorretenido(BigDecimal pValorretenido){
  valorretenido=pValorretenido;
}

public static final String CODDOCSUSTENTO="CODDOCSUSTENTO";
/**Obtiene el valor de coddocsustento
@return valor de coddocsustento*/
public String getCoddocsustento(){
  return coddocsustento;
}
/**Fija el valor de coddocsustento
@param pCoddocsustento nuevo Valor de coddocsustento*/
public void setCoddocsustento(String pCoddocsustento){
  coddocsustento=pCoddocsustento;
}

public static final String NUMDOCSUSTENTO="NUMDOCSUSTENTO";
/**Obtiene el valor de numdocsustento
@return valor de numdocsustento*/
public String getNumdocsustento(){
  return numdocsustento;
}
/**Fija el valor de numdocsustento
@param pNumdocsustento nuevo Valor de numdocsustento*/
public void setNumdocsustento(String pNumdocsustento){
  numdocsustento=pNumdocsustento;
}

public static final String FECHAEMISIONDOCSUSTENTO="FECHAEMISIONDOCSUSTENTO";
/**Obtiene el valor de fechaemisiondocsustento
@return valor de fechaemisiondocsustento*/
public Date getFechaemisiondocsustento(){
  return fechaemisiondocsustento;
}
/**Fija el valor de fechaemisiondocsustento
@param pFechaemisiondocsustento nuevo Valor de fechaemisiondocsustento*/
public void setFechaemisiondocsustento(Date pFechaemisiondocsustento){
  fechaemisiondocsustento=pFechaemisiondocsustento;
}

/**Implementacion de la comparacion de la entidad Tferetentiontaxes
@param rhs Elemento de Comparacion
@return el resultado de la comparacion
*/
public boolean equals(Object rhs){
    if (rhs == null){return false;}
    if (! (rhs instanceof Tferetentiontaxes)){return false;}
    Tferetentiontaxes that = (Tferetentiontaxes) 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 Tferetentiontaxes
@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 blancoTferetentiontaxes
*/
public Object createInstance() throws Exception{
 Tferetentiontaxes instance=new Tferetentiontaxes();	
 instance.setPk(new TferetentiontaxesKey());
 return instance;
}
public Object cloneMe() throws Exception{
  Tferetentiontaxes p=(Tferetentiontaxes)this.clone();
  p.setPk((TferetentiontaxesKey)this.pk.cloneMe());
  return p;
}
}
