package com.fitbank.hb.persistence.trans;

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

/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla FERETENCION*/
public class Feretention implements Serializable,TransportBean,Cloneable{
/** Nombre de la Tabla FERETENCION */
public static final String TABLE_NAME = "FERETENCION";
/** HashCode asociado con la Instancia*/
private int hashValue = 0;
/** Version de la Clase*/
private static final long serialVersionUID = 1L;
/**
* Clave primaria de la Entidad Feretention
*/
private Long pk;
/**
* Código de ambiente al que se envía el documento. 1 = Desarrollo/Certificación, 2 = Producción.
*/
private Integer ambiente;

/**
* Tipo de emisión del comprobante. 1 = NORMAL. 2=Emisión por Indisponibilidad del Sistema.
*/
private Integer tipoemision;

/**
* Razón social de la entidad que emite la retención.
*/
private String razonsocial;

/**
* Nombre comercial de la entidad que emite la retención.
*/
private String nombrecomercial;

/**
* Número del Registro Único de Contribuyentes de la entidad que emite la retención.
*/
private String ruc;

/**
* Clave de acceso del comprobante. Se guardan los 48 primeros dígitos. El dígito verificador se calcula en la aplicación.
*/
private String claveacceso;

/**
* Código del documento. Para notas de débito siempre va a ser 07. Campo necesario para generar una cabecera genérica de comprobantes.
*/
private String coddoc;

/**
* Código del establecimiento desde el que se emite el comprobante. El código debe estar registrado en el SRI.
*/
private String estab;

/**
* Punto de emisión del comprobante. El punto de emisión debe estar registrado en el SRI.
*/
private String ptoemi;

/**
* Número secuencial del comprobante, a cargo de la entidad que emite el comprobante.
*/
private String secuencial;

/**
* Dirección de la matriz de la entidad que emite el comprobante.
*/
private String dirmatriz;

/**
* Fecha de emisión del comprobante.
*/
private Date fechaemision;

/**
* Dirección del establecimiento desde el que se emite el comprobante.
*/
private String direstablecimiento;

/**
* Código de contribuyente especial dado por el SRI a la entidad que emite el comprobante.
*/
private String contribuyenteespecial;

/**
* Indica si está obligado a llevar contabilidad. SI o NO.
*/
private String obligadocontabilidad;

/**
* Código del tipo de identificación del sujeto retenido. Revisar ficha técnica del SRI para códigos disponibles.
*/
private String tipoidentificacionsujeto;

/**
* Razón social del sujeto retenido.
*/
private String razonsocialsujeto;

/**
* Número de identificación del sujeto retenido. El número de identificación debe estar de acuerdo al tipo indicado en el campo TIPOIDENTIFICACIONSUJETO.
*/
private String identificacionsujeto;

/**
* Dirección de correo electrónico usada por el programa que envía correos en lote para enviar el comprobante.
*/
private String correosujeto;

/**
* Campo formado por el mes y el año en el que se emite el comprobante, por ejemplo 07/2016.
*/
private String periodofiscal;

/**
* Campo de control que muestra la última fecha en la que se contactó al SRI para enviar el comprobante.
*/
private Date fenvio;

/**
* JSON de respuesta del programa que envía comprobantes al SRI.
*/
private Clob resp;

/**
* Número de autorización entregado por el SRI cuando se aprueba el comprobante.
*/
private String numeroautorizacion;

/**
* Código de estatus de envío del comprobante. P = Pendiente, E = Error, A = Por aprobar, O = OK
*/
private String estatusenvio;

/**
* Código de estatus de envío del correo electrónico al cliente. P = Pendiente, E = Error, O = OK.
*/
private String estatusenviocorreo;

/**
* Log del proceso de envío de correo, llenado por el programa que envía correos en lote.
*/
private Clob logenviocorreo;

/**Contructor por defecto*/
public Feretention(){}
/**Contructor de Feretention
@param pPk Clave Primaria del entity
@param pAmbiente Código de ambiente al que se envía el documento. 1 = Desarrollo/Certificación, 2 = Producción.
@param pTipoemision Tipo de emisión del comprobante. 1 = NORMAL. 2=Emisión por Indisponibilidad del Sistema.
@param pRazonsocial Razón social de la entidad que emite la retención.
@param pRuc Número del Registro Único de Contribuyentes de la entidad que emite la retención.
@param pClaveacceso Clave de acceso del comprobante. Se guardan los 48 primeros dígitos. El dígito verificador se calcula en la aplicación.
@param pCoddoc Código del documento. Para notas de débito siempre va a ser 07. Campo necesario para generar una cabecera genérica de comprobantes.
@param pEstab Código del establecimiento desde el que se emite el comprobante. El código debe estar registrado en el SRI.
@param pPtoemi Punto de emisión del comprobante. El punto de emisión debe estar registrado en el SRI.
@param pSecuencial Número secuencial del comprobante, a cargo de la entidad que emite el comprobante.
@param pDirmatriz Dirección de la matriz de la entidad que emite el comprobante.
@param pFechaemision Fecha de emisión del comprobante.
@param pTipoidentificacionsujeto Código del tipo de identificación del sujeto retenido. Revisar ficha técnica del SRI para códigos disponibles.
@param pRazonsocialsujeto Razón social del sujeto retenido.
@param pIdentificacionsujeto Número de identificación del sujeto retenido. El número de identificación debe estar de acuerdo al tipo indicado en el campo TIPOIDENTIFICACIONSUJETO.
@param pPeriodofiscal Campo formado por el mes y el año en el que se emite el comprobante, por ejemplo 07/2016.
@param pEstatusenvio Código de estatus de envío del comprobante. P = Pendiente, E = Error, A = Por aprobar, O = OK
@param pEstatusenviocorreo Código de estatus de envío del correo electrónico al cliente. P = Pendiente, E = Error, O = OK.
*/
public Feretention(Long pPk,Integer pAmbiente,Integer pTipoemision,String pRazonsocial,String pRuc,String pClaveacceso,String pCoddoc,String pEstab,String pPtoemi,String pSecuencial,String pDirmatriz,Date pFechaemision,String pTipoidentificacionsujeto,String pRazonsocialsujeto,String pIdentificacionsujeto,String pPeriodofiscal,String pEstatusenvio,String pEstatusenviocorreo){
 pk=pPk;
 ambiente=pAmbiente;
 tipoemision=pTipoemision;
 razonsocial=pRazonsocial;
 ruc=pRuc;
 claveacceso=pClaveacceso;
 coddoc=pCoddoc;
 estab=pEstab;
 ptoemi=pPtoemi;
 secuencial=pSecuencial;
 dirmatriz=pDirmatriz;
 fechaemision=pFechaemision;
 tipoidentificacionsujeto=pTipoidentificacionsujeto;
 razonsocialsujeto=pRazonsocialsujeto;
 identificacionsujeto=pIdentificacionsujeto;
 periodofiscal=pPeriodofiscal;
 estatusenvio=pEstatusenvio;
 estatusenviocorreo=pEstatusenviocorreo;
}
/**Entrega la Clave primaria de Feretention
@return El objeto que referencia a la Clave primaria de Feretention
*/
public Long getPk(){
  return pk;
}
/**Fija un nuevo valor a la Clave primaria de Feretention
@param pPk El objeto que referencia a la nueva Clave primaria de Feretention
*/
public void setPk(Long pPk){
  pk=pPk;
}
public static final String AMBIENTE="AMBIENTE";
/**Obtiene el valor de ambiente
@return valor de ambiente*/
public Integer getAmbiente(){
  return ambiente;
}
/**Fija el valor de ambiente
@param pAmbiente nuevo Valor de ambiente*/
public void setAmbiente(Integer pAmbiente){
  ambiente=pAmbiente;
}

public static final String TIPOEMISION="TIPOEMISION";
/**Obtiene el valor de tipoemision
@return valor de tipoemision*/
public Integer getTipoemision(){
  return tipoemision;
}
/**Fija el valor de tipoemision
@param pTipoemision nuevo Valor de tipoemision*/
public void setTipoemision(Integer pTipoemision){
  tipoemision=pTipoemision;
}

public static final String RAZONSOCIAL="RAZONSOCIAL";
/**Obtiene el valor de razonsocial
@return valor de razonsocial*/
public String getRazonsocial(){
  return razonsocial;
}
/**Fija el valor de razonsocial
@param pRazonsocial nuevo Valor de razonsocial*/
public void setRazonsocial(String pRazonsocial){
  razonsocial=pRazonsocial;
}

public static final String NOMBRECOMERCIAL="NOMBRECOMERCIAL";
/**Obtiene el valor de nombrecomercial
@return valor de nombrecomercial*/
public String getNombrecomercial(){
  return nombrecomercial;
}
/**Fija el valor de nombrecomercial
@param pNombrecomercial nuevo Valor de nombrecomercial*/
public void setNombrecomercial(String pNombrecomercial){
  nombrecomercial=pNombrecomercial;
}

public static final String RUC="RUC";
/**Obtiene el valor de ruc
@return valor de ruc*/
public String getRuc(){
  return ruc;
}
/**Fija el valor de ruc
@param pRuc nuevo Valor de ruc*/
public void setRuc(String pRuc){
  ruc=pRuc;
}

public static final String CLAVEACCESO="CLAVEACCESO";
/**Obtiene el valor de claveacceso
@return valor de claveacceso*/
public String getClaveacceso(){
  return claveacceso;
}
/**Fija el valor de claveacceso
@param pClaveacceso nuevo Valor de claveacceso*/
public void setClaveacceso(String pClaveacceso){
  claveacceso=pClaveacceso;
}

public static final String CODDOC="CODDOC";
/**Obtiene el valor de coddoc
@return valor de coddoc*/
public String getCoddoc(){
  return coddoc;
}
/**Fija el valor de coddoc
@param pCoddoc nuevo Valor de coddoc*/
public void setCoddoc(String pCoddoc){
  coddoc=pCoddoc;
}

public static final String ESTAB="ESTAB";
/**Obtiene el valor de estab
@return valor de estab*/
public String getEstab(){
  return estab;
}
/**Fija el valor de estab
@param pEstab nuevo Valor de estab*/
public void setEstab(String pEstab){
  estab=pEstab;
}

public static final String PTOEMI="PTOEMI";
/**Obtiene el valor de ptoemi
@return valor de ptoemi*/
public String getPtoemi(){
  return ptoemi;
}
/**Fija el valor de ptoemi
@param pPtoemi nuevo Valor de ptoemi*/
public void setPtoemi(String pPtoemi){
  ptoemi=pPtoemi;
}

public static final String SECUENCIAL="SECUENCIAL";
/**Obtiene el valor de secuencial
@return valor de secuencial*/
public String getSecuencial(){
  return secuencial;
}
/**Fija el valor de secuencial
@param pSecuencial nuevo Valor de secuencial*/
public void setSecuencial(String pSecuencial){
  secuencial=pSecuencial;
}

public static final String DIRMATRIZ="DIRMATRIZ";
/**Obtiene el valor de dirmatriz
@return valor de dirmatriz*/
public String getDirmatriz(){
  return dirmatriz;
}
/**Fija el valor de dirmatriz
@param pDirmatriz nuevo Valor de dirmatriz*/
public void setDirmatriz(String pDirmatriz){
  dirmatriz=pDirmatriz;
}

public static final String FECHAEMISION="FECHAEMISION";
/**Obtiene el valor de fechaemision
@return valor de fechaemision*/
public Date getFechaemision(){
  return fechaemision;
}
/**Fija el valor de fechaemision
@param pFechaemision nuevo Valor de fechaemision*/
public void setFechaemision(Date pFechaemision){
  fechaemision=pFechaemision;
}

public static final String DIRESTABLECIMIENTO="DIRESTABLECIMIENTO";
/**Obtiene el valor de direstablecimiento
@return valor de direstablecimiento*/
public String getDirestablecimiento(){
  return direstablecimiento;
}
/**Fija el valor de direstablecimiento
@param pDirestablecimiento nuevo Valor de direstablecimiento*/
public void setDirestablecimiento(String pDirestablecimiento){
  direstablecimiento=pDirestablecimiento;
}

public static final String CONTRIBUYENTEESPECIAL="CONTRIBUYENTEESPECIAL";
/**Obtiene el valor de contribuyenteespecial
@return valor de contribuyenteespecial*/
public String getContribuyenteespecial(){
  return contribuyenteespecial;
}
/**Fija el valor de contribuyenteespecial
@param pContribuyenteespecial nuevo Valor de contribuyenteespecial*/
public void setContribuyenteespecial(String pContribuyenteespecial){
  contribuyenteespecial=pContribuyenteespecial;
}

public static final String OBLIGADOCONTABILIDAD="OBLIGADOCONTABILIDAD";
/**Obtiene el valor de obligadocontabilidad
@return valor de obligadocontabilidad*/
public String getObligadocontabilidad(){
  return obligadocontabilidad;
}
/**Fija el valor de obligadocontabilidad
@param pObligadocontabilidad nuevo Valor de obligadocontabilidad*/
public void setObligadocontabilidad(String pObligadocontabilidad){
  obligadocontabilidad=pObligadocontabilidad;
}

public static final String TIPOIDENTIFICACIONSUJETO="TIPOIDENTIFICACIONSUJETO";
/**Obtiene el valor de tipoidentificacionsujeto
@return valor de tipoidentificacionsujeto*/
public String getTipoidentificacionsujeto(){
  return tipoidentificacionsujeto;
}
/**Fija el valor de tipoidentificacionsujeto
@param pTipoidentificacionsujeto nuevo Valor de tipoidentificacionsujeto*/
public void setTipoidentificacionsujeto(String pTipoidentificacionsujeto){
  tipoidentificacionsujeto=pTipoidentificacionsujeto;
}

public static final String RAZONSOCIALSUJETO="RAZONSOCIALSUJETO";
/**Obtiene el valor de razonsocialsujeto
@return valor de razonsocialsujeto*/
public String getRazonsocialsujeto(){
  return razonsocialsujeto;
}
/**Fija el valor de razonsocialsujeto
@param pRazonsocialsujeto nuevo Valor de razonsocialsujeto*/
public void setRazonsocialsujeto(String pRazonsocialsujeto){
  razonsocialsujeto=pRazonsocialsujeto;
}

public static final String IDENTIFICACIONSUJETO="IDENTIFICACIONSUJETO";
/**Obtiene el valor de identificacionsujeto
@return valor de identificacionsujeto*/
public String getIdentificacionsujeto(){
  return identificacionsujeto;
}
/**Fija el valor de identificacionsujeto
@param pIdentificacionsujeto nuevo Valor de identificacionsujeto*/
public void setIdentificacionsujeto(String pIdentificacionsujeto){
  identificacionsujeto=pIdentificacionsujeto;
}

public static final String CORREOSUJETO="CORREOSUJETO";
/**Obtiene el valor de correosujeto
@return valor de correosujeto*/
public String getCorreosujeto(){
  return correosujeto;
}
/**Fija el valor de correosujeto
@param pCorreosujeto nuevo Valor de correosujeto*/
public void setCorreosujeto(String pCorreosujeto){
  correosujeto=pCorreosujeto;
}

public static final String PERIODOFISCAL="PERIODOFISCAL";
/**Obtiene el valor de periodofiscal
@return valor de periodofiscal*/
public String getPeriodofiscal(){
  return periodofiscal;
}
/**Fija el valor de periodofiscal
@param pPeriodofiscal nuevo Valor de periodofiscal*/
public void setPeriodofiscal(String pPeriodofiscal){
  periodofiscal=pPeriodofiscal;
}

public static final String FENVIO="FENVIO";
/**Obtiene el valor de fenvio
@return valor de fenvio*/
public Date getFenvio(){
  return fenvio;
}
/**Fija el valor de fenvio
@param pFenvio nuevo Valor de fenvio*/
public void setFenvio(Date pFenvio){
  fenvio=pFenvio;
}

public static final String RESP="RESP";
/**Obtiene el valor de resp
@return valor de resp*/
public Clob getResp(){
  return resp;
}
/**Fija el valor de resp
@param pResp nuevo Valor de resp*/
public void setResp(Clob pResp){
  resp=pResp;
}

public static final String NUMEROAUTORIZACION="NUMEROAUTORIZACION";
/**Obtiene el valor de numeroautorizacion
@return valor de numeroautorizacion*/
public String getNumeroautorizacion(){
  return numeroautorizacion;
}
/**Fija el valor de numeroautorizacion
@param pNumeroautorizacion nuevo Valor de numeroautorizacion*/
public void setNumeroautorizacion(String pNumeroautorizacion){
  numeroautorizacion=pNumeroautorizacion;
}

public static final String ESTATUSENVIO="ESTATUSENVIO";
/**Obtiene el valor de estatusenvio
@return valor de estatusenvio*/
public String getEstatusenvio(){
  return estatusenvio;
}
/**Fija el valor de estatusenvio
@param pEstatusenvio nuevo Valor de estatusenvio*/
public void setEstatusenvio(String pEstatusenvio){
  estatusenvio=pEstatusenvio;
}

public static final String ESTATUSENVIOCORREO="ESTATUSENVIOCORREO";
/**Obtiene el valor de estatusenviocorreo
@return valor de estatusenviocorreo*/
public String getEstatusenviocorreo(){
  return estatusenviocorreo;
}
/**Fija el valor de estatusenviocorreo
@param pEstatusenviocorreo nuevo Valor de estatusenviocorreo*/
public void setEstatusenviocorreo(String pEstatusenviocorreo){
  estatusenviocorreo=pEstatusenviocorreo;
}

public static final String LOGENVIOCORREO="LOGENVIOCORREO";
/**Obtiene el valor de logenviocorreo
@return valor de logenviocorreo*/
public Clob getLogenviocorreo(){
  return logenviocorreo;
}
/**Fija el valor de logenviocorreo
@param pLogenviocorreo nuevo Valor de logenviocorreo*/
public void setLogenviocorreo(Clob pLogenviocorreo){
  logenviocorreo=pLogenviocorreo;
}

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