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.Clob;
import java.sql.Date;

/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla FENOTADEBITO*/
public class Fedebitnote implements Serializable,TransportBean,Cloneable{
/** Nombre de la Tabla FENOTADEBITO */
public static final String TABLE_NAME = "FENOTADEBITO";
/** HashCode asociado con la Instancia*/
private int hashValue = 0;
/** Version de la Clase*/
private static final long serialVersionUID = 1L;
/**
* Clave primaria de la Entidad Fedebitnote
*/
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 nota de débito.
*/
private String razonsocial;

/**
* Nombre comercial de la entidad que emite la nota de débito.
*/
private String nombrecomercial;

/**
* Número del Registro Único de Contribuyentes de la entidad que emite la nota de débito.
*/
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 05. Campo necesario para generar una cabecera genérica de comprobantes.
*/
private String coddoc;

/**
* Código del establecimiento desde el que se emite el comprobante.
*/
private String estab;

/**
* Punto de emisión del comprobante.
*/
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 comprador. Revisar ficha técnica del SRI para códigos disponibles.
*/
private String tipoidentificacioncomprador;

/**
* Nombre o razón social del comprador.
*/
private String razonsocialcomprador;

/**
* Identificación del comprador. El tipo de documento viene dado por el tipo de identificación del comprador.
*/
private String identificacioncomprador;

/**
* Contribuyente Regimen Simplificado RISE.
*/
private String rise;

/**
* Código del documento modificado por esta nota de débito.
*/
private String coddocmodificado;

/**
* Número del documento modificado por esta nota de débito.
*/
private String numdocmodificado;

/**
* Fecha de emisión del documento referenciado en esta nota de débito.
*/
private Date fechaemisiondocsustento;

/**
* Valor total de la nota de débito sin impuestos.
*/
private BigDecimal totalsinimpuestos;

/**
* Valor total de la nota de débito incluido impuestos.
*/
private BigDecimal valortotal;

/**
* Dirección usada por el programa que envía correos en lote para enviar el comprobante.
*/
private String correoenvio;

/**
* 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 Fedebitnote(){}
/**Contructor de Fedebitnote
@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 nota de débito.
@param pRuc Número del Registro Único de Contribuyentes de la entidad que emite la nota de débito.
@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 05. Campo necesario para generar una cabecera genérica de comprobantes.
@param pEstab Código del establecimiento desde el que se emite el comprobante.
@param pPtoemi Punto de emisión del comprobante.
@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 pTipoidentificacioncomprador Código del tipo de identificación del comprador. Revisar ficha técnica del SRI para códigos disponibles.
@param pRazonsocialcomprador Nombre o razón social del comprador.
@param pIdentificacioncomprador Identificación del comprador. El tipo de documento viene dado por el tipo de identificación del comprador.
@param pCoddocmodificado Código del documento modificado por esta nota de débito.
@param pNumdocmodificado Número del documento modificado por esta nota de débito.
@param pFechaemisiondocsustento Fecha de emisión del documento referenciado en esta nota de débito.
@param pTotalsinimpuestos Valor total de la nota de débito sin impuestos.
@param pValortotal Valor total de la nota de débito incluido impuestos.
@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 Fedebitnote(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 pTipoidentificacioncomprador,String pRazonsocialcomprador,String pIdentificacioncomprador,String pCoddocmodificado,String pNumdocmodificado,Date pFechaemisiondocsustento,BigDecimal pTotalsinimpuestos,BigDecimal pValortotal,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;
 tipoidentificacioncomprador=pTipoidentificacioncomprador;
 razonsocialcomprador=pRazonsocialcomprador;
 identificacioncomprador=pIdentificacioncomprador;
 coddocmodificado=pCoddocmodificado;
 numdocmodificado=pNumdocmodificado;
 fechaemisiondocsustento=pFechaemisiondocsustento;
 totalsinimpuestos=pTotalsinimpuestos;
 valortotal=pValortotal;
 estatusenvio=pEstatusenvio;
 estatusenviocorreo=pEstatusenviocorreo;
}
/**Entrega la Clave primaria de Fedebitnote
@return El objeto que referencia a la Clave primaria de Fedebitnote
*/
public Long getPk(){
  return pk;
}
/**Fija un nuevo valor a la Clave primaria de Fedebitnote
@param pPk El objeto que referencia a la nueva Clave primaria de Fedebitnote
*/
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 TIPOIDENTIFICACIONCOMPRADOR="TIPOIDENTIFICACIONCOMPRADOR";
/**Obtiene el valor de tipoidentificacioncomprador
@return valor de tipoidentificacioncomprador*/
public String getTipoidentificacioncomprador(){
  return tipoidentificacioncomprador;
}
/**Fija el valor de tipoidentificacioncomprador
@param pTipoidentificacioncomprador nuevo Valor de tipoidentificacioncomprador*/
public void setTipoidentificacioncomprador(String pTipoidentificacioncomprador){
  tipoidentificacioncomprador=pTipoidentificacioncomprador;
}

public static final String RAZONSOCIALCOMPRADOR="RAZONSOCIALCOMPRADOR";
/**Obtiene el valor de razonsocialcomprador
@return valor de razonsocialcomprador*/
public String getRazonsocialcomprador(){
  return razonsocialcomprador;
}
/**Fija el valor de razonsocialcomprador
@param pRazonsocialcomprador nuevo Valor de razonsocialcomprador*/
public void setRazonsocialcomprador(String pRazonsocialcomprador){
  razonsocialcomprador=pRazonsocialcomprador;
}

public static final String IDENTIFICACIONCOMPRADOR="IDENTIFICACIONCOMPRADOR";
/**Obtiene el valor de identificacioncomprador
@return valor de identificacioncomprador*/
public String getIdentificacioncomprador(){
  return identificacioncomprador;
}
/**Fija el valor de identificacioncomprador
@param pIdentificacioncomprador nuevo Valor de identificacioncomprador*/
public void setIdentificacioncomprador(String pIdentificacioncomprador){
  identificacioncomprador=pIdentificacioncomprador;
}

public static final String RISE="RISE";
/**Obtiene el valor de rise
@return valor de rise*/
public String getRise(){
  return rise;
}
/**Fija el valor de rise
@param pRise nuevo Valor de rise*/
public void setRise(String pRise){
  rise=pRise;
}

public static final String CODDOCMODIFICADO="CODDOCMODIFICADO";
/**Obtiene el valor de coddocmodificado
@return valor de coddocmodificado*/
public String getCoddocmodificado(){
  return coddocmodificado;
}
/**Fija el valor de coddocmodificado
@param pCoddocmodificado nuevo Valor de coddocmodificado*/
public void setCoddocmodificado(String pCoddocmodificado){
  coddocmodificado=pCoddocmodificado;
}

public static final String NUMDOCMODIFICADO="NUMDOCMODIFICADO";
/**Obtiene el valor de numdocmodificado
@return valor de numdocmodificado*/
public String getNumdocmodificado(){
  return numdocmodificado;
}
/**Fija el valor de numdocmodificado
@param pNumdocmodificado nuevo Valor de numdocmodificado*/
public void setNumdocmodificado(String pNumdocmodificado){
  numdocmodificado=pNumdocmodificado;
}

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;
}

public static final String TOTALSINIMPUESTOS="TOTALSINIMPUESTOS";
/**Obtiene el valor de totalsinimpuestos
@return valor de totalsinimpuestos*/
public BigDecimal getTotalsinimpuestos(){
  return totalsinimpuestos;
}
/**Fija el valor de totalsinimpuestos
@param pTotalsinimpuestos nuevo Valor de totalsinimpuestos*/
public void setTotalsinimpuestos(BigDecimal pTotalsinimpuestos){
  totalsinimpuestos=pTotalsinimpuestos;
}

public static final String VALORTOTAL="VALORTOTAL";
/**Obtiene el valor de valortotal
@return valor de valortotal*/
public BigDecimal getValortotal(){
  return valortotal;
}
/**Fija el valor de valortotal
@param pValortotal nuevo Valor de valortotal*/
public void setValortotal(BigDecimal pValortotal){
  valortotal=pValortotal;
}

public static final String CORREOENVIO="CORREOENVIO";
/**Obtiene el valor de correoenvio
@return valor de correoenvio*/
public String getCorreoenvio(){
  return correoenvio;
}
/**Fija el valor de correoenvio
@param pCorreoenvio nuevo Valor de correoenvio*/
public void setCorreoenvio(String pCorreoenvio){
  correoenvio=pCorreoenvio;
}

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