package com.fitbank.hb.persistence.trans;

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

/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TFERETENCION*/
public class Tferetention implements Serializable,TransportBean,Cloneable{
/** Nombre de la Tabla TFERETENCION */
public static final String TABLE_NAME = "TFERETENCION";
/** HashCode asociado con la Instancia*/
private int hashValue = 0;
/** Version de la Clase*/
private static final long serialVersionUID = 1L;
/**
* Clave primaria de la Entidad Tferetention
*/
private Long pk;
/**
* Codigo de ambiente al que se envia el documento. 1 = Desarrollo/Certificacion, 2 = Produccion.
*/
private Integer ambiente;

/**
* Tipo de emision del comprobante. 1 = NORMAL. 2=Emision por Indisponibilidad del Sistema.
*/
private Integer tipoemision;

/**
* Razon social de la entidad que emite la retencion.
*/
private String razonsocial;

/**
* Nombre comercial de la entidad que emite la retencion.
*/
private String nombrecomercial;

/**
* Numero del Registro unico de Contribuyentes de la entidad que emite la retencion.
*/
private String ruc;

/**
* Clave de acceso del comprobante. Se guardan los 48 primeros digitos. El digito verificador se calcula en la aplicacion.
*/
private String claveacceso;

/**
* Codigo del documento. Para notas de debito siempre va a ser 07. Campo necesario para generar una cabecera generica de comprobantes.
*/
private String coddoc;

/**
* Codigo del establecimiento desde el que se emite el comprobante. El codigo debe estar registrado en el SRI.
*/
private String estab;

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

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

/**
* Direccion de la matriz de la entidad que emite el comprobante.
*/
private String dirmatriz;

/**
* Fecha de emision del comprobante.
*/
private Date fechaemision;

/**
* Direccion del establecimiento desde el que se emite el comprobante.
*/
private String direstablecimiento;

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

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

/**
* Codigo del tipo de identificacion del sujeto retenido. Revisar ficha tecnica del SRI para codigos disponibles.
*/
private String tipoidentificacionsujeto;

/**
* Razon social del sujeto retenido.
*/
private String razonsocialsujeto;

/**
* Numero de identificacion del sujeto retenido. El numero de identificacion debe estar de acuerdo al tipo indicado en el campo TIPOIDENTIFICACIONSUJETO.
*/
private String identificacionsujeto;

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

/**
* Campo de control que muestra la ultima fecha en la que se contacto al SRI para enviar el comprobante.
*/
private Date fenvio;

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

/**
* Numero de autorizacion entregado por el SRI cuando se aprueba el comprobante.
*/
private String numeroautorizacion;

/**
* Codigo de estatus de envio del comprobante. P = Pendiente, E = Error, A = Por aprobar, O = OK, N = Anulada
*/
private String estatusenvio;

/**
* Codigo de estatus de envio del correo electronico al cliente. P = Pendiente,
 E = Error, O = OK, I = Invalido
*/
private String estatusenviocorreo;

/**
* Log del proceso de envio de correo, llenado por el programa que envia correos en lote.
*/
private Clob logenviocorreo;

/**
* Direccion de correo electronico usada por el programa que envia correos en lote para enviar el comprobante.
*/
private String correosujeto;

/**
* Xml generado por el generador.
*/
private Clob xmlforlote;

/**
* Numero Mensaje
*/
private String numeromensaje;

/**
* Codigo de subsistema de la transaccion origen.
*/
private String csubsistema;

/**
* Codigo de la transaccion origen.
*/
private String ctransaccion;

/**
* Version de la transaccion origen.
*/
private String versiontransaccion;

/**
* Codigo de la oficina
*/
private Integer coficina;

/**
* Codigo de la sucursal
*/
private Integer csucursal;

/**
* Codigo de persona de la compañía.
*/
private Integer cpersona_compania;

/**
* Secuencia de rubro de la transaccion
*/
private Integer stransaccion;

/**
* Codigo de comercio asignado a la empresa
*/
private String codigocomercio;

/**Contructor por defecto*/
public Tferetention(){}
/**Contructor de Tferetention
@param pPk Clave Primaria del entity
@param pAmbiente Codigo de ambiente al que se envia el documento. 1 = Desarrollo/Certificacion, 2 = Produccion.
@param pTipoemision Tipo de emision del comprobante. 1 = NORMAL. 2=Emision por Indisponibilidad del Sistema.
@param pRazonsocial Razon social de la entidad que emite la retencion.
@param pRuc Numero del Registro unico de Contribuyentes de la entidad que emite la retencion.
@param pClaveacceso Clave de acceso del comprobante. Se guardan los 48 primeros digitos. El digito verificador se calcula en la aplicacion.
@param pCoddoc Codigo del documento. Para notas de debito siempre va a ser 07. Campo necesario para generar una cabecera generica de comprobantes.
@param pEstab Codigo del establecimiento desde el que se emite el comprobante. El codigo debe estar registrado en el SRI.
@param pPtoemi Punto de emision del comprobante. El punto de emision debe estar registrado en el SRI.
@param pSecuencial Numero secuencial del comprobante, a cargo de la entidad que emite el comprobante.
@param pDirmatriz Direccion de la matriz de la entidad que emite el comprobante.
@param pFechaemision Fecha de emision del comprobante.
@param pTipoidentificacionsujeto Codigo del tipo de identificacion del sujeto retenido. Revisar ficha tecnica del SRI para codigos disponibles.
@param pRazonsocialsujeto Razon social del sujeto retenido.
@param pIdentificacionsujeto Numero de identificacion del sujeto retenido. El numero de identificacion debe estar de acuerdo al tipo indicado en el campo TIPOIDENTIFICACIONSUJETO.
@param pPeriodofiscal Campo formado por el mes y el anio en el que se emite el comprobante, por ejemplo 07/2016.
@param pEstatusenvio Codigo de estatus de envio del comprobante. P = Pendiente, E = Error, A = Por aprobar, O = OK, N = Anulada
@param pEstatusenviocorreo Codigo de estatus de envio del correo electronico al cliente. P = Pendiente,
 E = Error, O = OK, I = Invalido
*/
public Tferetention(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 Tferetention
@return El objeto que referencia a la Clave primaria de Tferetention
*/
public Long getPk(){
  return pk;
}
/**Fija un nuevo valor a la Clave primaria de Tferetention
@param pPk El objeto que referencia a la nueva Clave primaria de Tferetention
*/
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 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;
}

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 XMLFORLOTE="XMLFORLOTE";
/**Obtiene el valor de xmlforlote
@return valor de xmlforlote*/
public Clob getXmlforlote(){
  return xmlforlote;
}
/**Fija el valor de xmlforlote
@param pXmlforlote nuevo Valor de xmlforlote*/
public void setXmlforlote(Clob pXmlforlote){
  xmlforlote=pXmlforlote;
}

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 CSUBSISTEMA="CSUBSISTEMA";
/**Obtiene el valor de csubsistema
@return valor de csubsistema*/
public String getCsubsistema(){
  return csubsistema;
}
/**Fija el valor de csubsistema
@param pCsubsistema nuevo Valor de csubsistema*/
public void setCsubsistema(String pCsubsistema){
  csubsistema=pCsubsistema;
}

public static final String CTRANSACCION="CTRANSACCION";
/**Obtiene el valor de ctransaccion
@return valor de ctransaccion*/
public String getCtransaccion(){
  return ctransaccion;
}
/**Fija el valor de ctransaccion
@param pCtransaccion nuevo Valor de ctransaccion*/
public void setCtransaccion(String pCtransaccion){
  ctransaccion=pCtransaccion;
}

public static final String VERSIONTRANSACCION="VERSIONTRANSACCION";
/**Obtiene el valor de versiontransaccion
@return valor de versiontransaccion*/
public String getVersiontransaccion(){
  return versiontransaccion;
}
/**Fija el valor de versiontransaccion
@param pVersiontransaccion nuevo Valor de versiontransaccion*/
public void setVersiontransaccion(String pVersiontransaccion){
  versiontransaccion=pVersiontransaccion;
}

public static final String COFICINA="COFICINA";
/**Obtiene el valor de coficina
@return valor de coficina*/
public Integer getCoficina(){
  return coficina;
}
/**Fija el valor de coficina
@param pCoficina nuevo Valor de coficina*/
public void setCoficina(Integer pCoficina){
  coficina=pCoficina;
}

public static final String CSUCURSAL="CSUCURSAL";
/**Obtiene el valor de csucursal
@return valor de csucursal*/
public Integer getCsucursal(){
  return csucursal;
}
/**Fija el valor de csucursal
@param pCsucursal nuevo Valor de csucursal*/
public void setCsucursal(Integer pCsucursal){
  csucursal=pCsucursal;
}

public static final String CPERSONA_COMPANIA="CPERSONA_COMPANIA";
/**Obtiene el valor de cpersona_compania
@return valor de cpersona_compania*/
public Integer getCpersona_compania(){
  return cpersona_compania;
}
/**Fija el valor de cpersona_compania
@param pCpersona_compania nuevo Valor de cpersona_compania*/
public void setCpersona_compania(Integer pCpersona_compania){
  cpersona_compania=pCpersona_compania;
}

public static final String STRANSACCION="STRANSACCION";
/**Obtiene el valor de stransaccion
@return valor de stransaccion*/
public Integer getStransaccion(){
  return stransaccion;
}
/**Fija el valor de stransaccion
@param pStransaccion nuevo Valor de stransaccion*/
public void setStransaccion(Integer pStransaccion){
  stransaccion=pStransaccion;
}

public static final String CODIGOCOMERCIO="CODIGOCOMERCIO";
/**Obtiene el valor de codigocomercio
@return valor de codigocomercio*/
public String getCodigocomercio(){
  return codigocomercio;
}
/**Fija el valor de codigocomercio
@param pCodigocomercio nuevo Valor de codigocomercio*/
public void setCodigocomercio(String pCodigocomercio){
  codigocomercio=pCodigocomercio;
}

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