package com.fitbank.hb.persistence.trans;

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

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

/**
* Código del porcentaje a retener correspondiente al código del impuesto y al concepto. Ver ficha técnica del SRI para obtener los códigos disponibles.
*/
private BigDecimal porcentajeretener;

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

/**
* Tipo de documento al que se le aplica la retención. Puede ser 01=Factura, 04=Nota de crédito, 05=Nota de débito, 06=Guía de remisión, 07=Retención.
*/
private String coddocsustento;

/**
* Número del documento de sustento al que hace referencia esta retención.
*/
private String numdocsustento;

/**
* Fecha de emisión del documento de sustento.
*/
private Date fechaemisiondocsustento;

/**Contructor por defecto*/
public Feretentiontaxes(){}
/**Contructor de Feretentiontaxes
@param pPk Clave Primaria del entity
@param pBaseimponible Valor sobre el que se calcula el impuesto.
@param pPorcentajeretener Código del porcentaje a retener correspondiente al código del impuesto y al concepto. Ver ficha técnica del SRI para obtener los códigos disponibles.
@param pValorretenido Valor calculado a ser retenido.
@param pCoddocsustento Tipo de documento al que se le aplica la retención. Puede ser 01=Factura, 04=Nota de crédito, 05=Nota de débito, 06=Guía de remisión, 07=Retención.
*/
public Feretentiontaxes(FeretentiontaxesKey pPk,BigDecimal pBaseimponible,BigDecimal pPorcentajeretener,BigDecimal pValorretenido,String pCoddocsustento){
 pk=pPk;
 baseimponible=pBaseimponible;
 porcentajeretener=pPorcentajeretener;
 valorretenido=pValorretenido;
 coddocsustento=pCoddocsustento;
}
/**Entrega la Clave primaria de Feretentiontaxes
@return El objeto que referencia a la Clave primaria de Feretentiontaxes
*/
public FeretentiontaxesKey getPk(){
  return pk;
}
/**Fija un nuevo valor a la Clave primaria de Feretentiontaxes
@param pPk El objeto que referencia a la nueva Clave primaria de Feretentiontaxes
*/
public void setPk(FeretentiontaxesKey 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 Feretentiontaxes
@param rhs Elemento de Comparacion
@return el resultado de la comparacion
*/
public boolean equals(Object rhs){
    if (rhs == null){return false;}
    if (! (rhs instanceof Feretentiontaxes)){return false;}
    Feretentiontaxes that = (Feretentiontaxes) 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 Feretentiontaxes
@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 blancoFeretentiontaxes
*/
public Object createInstance() throws Exception{
 Feretentiontaxes instance=new Feretentiontaxes();	
 instance.setPk(new FeretentiontaxesKey());
 return instance;
}
public Object cloneMe() throws Exception{
  Feretentiontaxes p=(Feretentiontaxes)this.clone();
  p.setPk((FeretentiontaxesKey)this.pk.cloneMe());
  return p;
}
}
