/*
 * Arrebol Consultancy copyright.
 *
 * This code belongs to Arrebol Consultancy
 * its use, redistribution or modification are prohibited
 * without written authorization from Arrebol Consultancy.
 */
package com.arrebol.apc.model.catalog;

import com.arrebol.apc.model.core.Office;
import com.arrebol.apc.model.enums.ActiveStatus;
import com.arrebol.apc.model.enums.CustomerClassification;
import com.arrebol.apc.model.enums.FormaPago;
import com.arrebol.apc.model.enums.LugarDeCobro;
import com.arrebol.apc.model.enums.PeopleType;
import com.arrebol.apc.model.loan.Loan;
import com.arrebol.apc.model.ws.parsed.PersonJaxb;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.hibernate.annotations.GenericGenerator;

/**
 *
 * @author Carlos Janitzio Zavala Lopez <janitzio.zavala@arrebol.com.mx>
 */
@Entity
@Table(name = "APC_PEOPLE")
public class People implements Serializable {

   private static final long serialVersionUID = -3628564854853325265L;

   @Id
   @GeneratedValue(generator = "uuid")
   @GenericGenerator(name = "uuid", strategy = "uuid2")
   @Column(name = "id", length = 36)
   private String id;

   @Column(name = "first_name", length = 25, nullable = false)
   private String firstName;

   @Column(name = "second_name", length = 25)
   private String secondName;

   @Column(name = "last_name", length = 25, nullable = false)
   private String lastName;

   @Column(name = "middle_name", length = 25, nullable = false)
   private String middleName;

   @Temporal(TemporalType.DATE)
   @Column(name = "birthdate")
   private Date birthdate;

   @Column(name = "thumbnail", length = 250, nullable = false)
   private String thumbnail;

   @Column(name = "phone_home", length = 15, nullable = false)
   private String phoneHome;

   @Column(name = "address_home", length = 150, nullable = false)
   private String addressHome;

   @Column(name = "phone_business", length = 15)
   private String phoneBusiness;

   @Column(name = "address_business", length = 150)
   private String addressBusiness;

   @Column(name = "company_name", length = 150)
   private String companyName;

   @Enumerated(EnumType.STRING)
   @Column(name = "people_type", nullable = false)
   private PeopleType peopleType;

   @Enumerated(EnumType.STRING)
   @Column(name = "active_status", nullable = false)
   private ActiveStatus activeStatus;

   @ManyToOne(fetch = FetchType.LAZY, optional = false)
   @JoinColumn(
           name = "id_office",
           referencedColumnName = "id",
           nullable = false
   )
   private Office office;

   @ManyToOne(fetch = FetchType.LAZY, optional = false)
   @JoinColumn(
           name = "id_route",
           referencedColumnName = "id",
           nullable = false
   )
   private RouteCtlg routeCtlg;

   @Column(name = "letra_cuenta", length = 10)
   private String letraCuenta;

   @Column(name = "contrato", length = 50)
   private String contrato;

   @Column(name = "celular_personal", length = 15)
   private String personalCelular;

   @Column(name = "cruzamientos_personal", length = 150)
   private String personalCruzamientos;

   @Column(name = "colonia_personal", length = 100)
   private String personalColonia;

   @Column(name = "ciudad_personal", length = 100)
   private String personalCiudad;

   @Column(name = "estado_personal", length = 100)
   private String personalEstado;

   @Column(name = "codigo_postal_personal", length = 10)
   private String personalCodigoPostal;

   @Column(name = "email_personal", length = 150)
   private String personalEmail;

   @Column(name = "edad_personal")
   private Integer personalEdad;

   @Column(name = "celular_negocio", length = 15)
   private String negocioCelular;

   @Column(name = "cruzamientos_negocio", length = 150)
   private String negocioCruzamientos;

   @Column(name = "colonia_negocio", length = 100)
   private String negocioColonia;

   @Column(name = "ciudad_negocio", length = 100)
   private String negocioCiudad;

   @Column(name = "estado_negocio", length = 100)
   private String negocioEstado;

   @Column(name = "codigo_postal_negocio", length = 10)
   private String negocioCodigoPostal;

   @Column(name = "email_negocio", length = 150)
   private String negocioEmail;

   // Datos fachada
   @Column(name = "fachada_color_fachada", length = 255)
   private String fachadaColorFachada;

   @Column(name = "fachada_decision_fachada", length = 255)
   private String fachadaDecisionFachada;

   @Column(name = "fachada_descripcion_puerta", length = 255)
   private String fachadaDescripcionPuerta;

   @Column(name = "fachada_descripcion_ventanas", length = 255)
   private String fachadaDescripcionVentanas;

   @Column(name = "fachada_frente_numero", length = 255)
   private String fachadaFrenteNumero;

   @Column(name = "fachada_entre_numero_1")
   private Integer fachadaEntreNumero1;

   @Column(name = "fachada_entre_numero_2")
   private Integer fachadaEntreNumero2;

   @Column(name = "fachada_senas_vivienda", length = 255)
   private String fachadaSenasVivienda;

   @Column(name = "fachada_observaciones_para_cobrador", length = 255)
   private String fachadaObservacionesParaCobrador;

   // Datos trabajo
   @Column(name = "trabajo", length = 255)
   private String trabajo;

   @Column(name = "trabajo_domicilio", length = 255)
   private String trabajoDomicilio;

   @Column(name = "trabajo_cruzamientos", length = 255)
   private String trabajoCruzamientos;

   @Column(name = "trabajo_colonia", length = 255)
   private String trabajoColonia;

   @Column(name = "trabajo_ciudad", length = 255)
   private String trabajoCiudad;

   @Column(name = "trabajo_estado", length = 255)
   private String trabajoEstado;

   @Column(name = "trabajo_codigo_postal")
   private Integer trabajoCodigoPostal;

   @Column(name = "trabajo_turno", length = 255)
   private String trabajoTurno;

   @Column(name = "trabajo_departamento", length = 255)
   private String trabajoDepartamento;

   @Column(name = "trabajo_telefono_1", length = 255)
   private String trabajoTelefono1;

   @Column(name = "trabajo_telefono_extra_1", length = 255)
   private String trabajoTelefonoExtra1;

   @Column(name = "trabajo_telefono_2", length = 255)
   private String trabajoTelefono2;

   @Column(name = "trabajo_telefono_extra_2", length = 255)
   private String trabajoTelefonoExtra2;

   // Referencia 1
   @Column(name = "referencia_1_nombre", length = 255)
   private String referencia1Nombre;

   @Column(name = "referencia_1_referencia_1_domicilio", length = 255)
   private String referencia1Domicilio;

   @Column(name = "referencia_1_cruzamientos", length = 255)
   private String referencia1Cruzamientos;

   @Column(name = "referencia_1_colonia", length = 255)
   private String referencia1Colonia;

   @Column(name = "referencia_1_ciudad", length = 255)
   private String referencia1Ciudad;

   @Column(name = "referencia_1_estado", length = 255)
   private String referencia1Estado;

   @Column(name = "referencia_1_codigo_postal")
   private Integer referencia1CodigoPostal;

   @Column(name = "referencia_1_telefono_particular", length = 255)
   private String referencia1TelefonoParticular;

   @Column(name = "referencia_1_celular_particular", length = 255)
   private String referencia1CelularParticular;

   @Column(name = "referencia_1_telefono_trabajo", length = 255)
   private String referencia1TelefonoTrabajo;

   @Column(name = "referencia_1_extra_telefono_trabajo", length = 255)
   private String referencia1ExtraTelefonoTrabajo;

   @Column(name = "referencia_1_parentesco", length = 255)
   private String referencia1Parentesco;

   // Referencia 2
   @Column(name = "referencia_2_nombre", length = 255)
   private String referencia2Nombre;

   @Column(name = "referencia_2_referencia_domicilio", length = 255)
   private String referencia2Domicilio;

   @Column(name = "referencia_2_cruzamientos", length = 255)
   private String referencia2Cruzamientos;

   @Column(name = "referencia_2_colonia", length = 255)
   private String referencia2Colonia;

   @Column(name = "referencia_2_ciudad", length = 255)
   private String referencia2Ciudad;

   @Column(name = "referencia_2_estado", length = 255)
   private String referencia2Estado;

   @Column(name = "referencia_2_codigo_postal")
   private Integer referencia2CodigoPostal;

   @Column(name = "referencia_2_telefono_particular", length = 255)
   private String referencia2TelefonoParticular;

   @Column(name = "referencia_2_celular_particular", length = 255)
   private String referencia2CelularParticular;

   @Column(name = "referencia_2_telefono_trabajo", length = 255)
   private String referencia2TelefonoTrabajo;

   @Column(name = "referencia_2_extra_telefono_trabajo", length = 255)
   private String referencia2ExtraTelefonoTrabajo;

   @Column(name = "referencia_2_parentesco", length = 255)
   private String referencia2Parentesco;

   // Datos crédito
   @Temporal(TemporalType.TIMESTAMP)
   @Column(name = "datos_credito_fecha_compra", length = 19)
   private Date datosCreditoFechaCompra;

   @Temporal(TemporalType.TIMESTAMP)
   @Column(name = "datos_credito_primer_pago", length = 19)
   private Date datosCreditoPrimerPago;

   @Column(name = "datos_credito_entrega_en", length = 10)
   @Enumerated(EnumType.STRING)
   private LugarDeCobro datosCreditoEntradaEn;

   @Column(name = "datos_credito_cobrar_en", length = 10)
   @Enumerated(EnumType.STRING)
   private LugarDeCobro datosCreditoCobrarEn;

   @Column(name = "datos_credito_forma_pago", length = 10)
   @Enumerated(EnumType.STRING)
   private FormaPago datosCreditoFormaPago;

   @Column(name = "datos_credito_pagos_de")
   private Double datosCreditoPagosDe;

   @Column(name = "datos_credito_numero_pagos")
   private Integer datosCreditoNumeroPagos;

   @Column(name = "datos_credito_vendedor", length = 36)
   private String datosCreditoVendedor;

   @Column(name = "datos_credito_investigador", length = 36)
   private String datosCreditoInvestigador;

   @Column(name = "datos_credito_asignado", length = 36)
   private String datosCreditoAsignado;

   @Column(name = "datos_credito_zona")
   private Integer datosCreditoZona;

   @Column(name = "created_by", nullable = false, length = 36)
   private String createdBy;

   @Temporal(TemporalType.TIMESTAMP)
   @Column(name = "created_on", length = 19)
   private Date createdOn;

   @Column(name = "last_updated_by", length = 36)
   private String lastUpdatedBy;

   @Temporal(TemporalType.TIMESTAMP)
   @Column(name = "last_updated_on", length = 19)
   private Date lastUpdatedOn;

   @Enumerated(EnumType.STRING)
   @Column(name = "classification", nullable = false)
   private CustomerClassification classification;

   @OneToMany(
           mappedBy = "customer",
           cascade = CascadeType.ALL,
           fetch = FetchType.LAZY,
           orphanRemoval = true
   )
   private List<Loan> customerLoans;

   @OneToMany(
           mappedBy = "endorsement",
           cascade = CascadeType.ALL,
           fetch = FetchType.LAZY,
           orphanRemoval = true
   )
   private List<Loan> endorsementLoans;

   public People() {
   }

   public People(String id) {
      this.id = id;
   }

   /**
    *
    * @param jaxb
    * @param isCustomer
    * @param officeId
    * @param userId
    * @param routeId
    */
   public People(PersonJaxb jaxb, boolean isCustomer, String officeId, String userId, String routeId) {
      this.firstName = jaxb.getFirstName();
      this.secondName = jaxb.getSecondName();
      this.lastName = jaxb.getLastName();
      this.middleName = jaxb.getMiddleName();
      this.phoneHome = jaxb.getPhoneHome();
      this.addressHome = jaxb.getAddressHome();

      if (isCustomer) {
         this.phoneBusiness = jaxb.getPhoneWork();
         this.addressBusiness = jaxb.getAddressWork();
         this.companyName = jaxb.getCompanyName();
         this.peopleType = PeopleType.CUSTOMER;
      } else {
         this.peopleType = PeopleType.ENDORSEMENT;
      }

      this.activeStatus = ActiveStatus.ENEBLED;
      this.office = new Office(officeId);
      this.routeCtlg = new RouteCtlg(routeId);
      this.thumbnail = jaxb.getThumbnail();
      this.createdBy = userId;
      this.createdOn = new Date();
      this.classification = CustomerClassification.WHITE;

   }

   public String getId() {
      return id;
   }

   public void setId(String id) {
      this.id = id;
   }

   public String getFirstName() {
      return firstName;
   }

   public void setFirstName(String firstName) {
      this.firstName = firstName;
   }

   public String getSecondName() {
      return secondName;
   }

   public void setSecondName(String secondName) {
      this.secondName = secondName;
   }

   public String getLastName() {
      return lastName;
   }

   public void setLastName(String lastName) {
      this.lastName = lastName;
   }

   public String getMiddleName() {
      return middleName;
   }

   public void setMiddleName(String middleName) {
      this.middleName = middleName;
   }

   public Date getBirthdate() {
      return birthdate;
   }

   public void setBirthdate(Date birthdate) {
      this.birthdate = birthdate;
   }

   public String getThumbnail() {
      return thumbnail;
   }

   public void setThumbnail(String thumbnail) {
      this.thumbnail = thumbnail;
   }

   public String getPhoneHome() {
      return phoneHome;
   }

   public void setPhoneHome(String phoneHome) {
      this.phoneHome = phoneHome;
   }

   public String getAddressHome() {
      return addressHome;
   }

   public void setAddressHome(String addressHome) {
      this.addressHome = addressHome;
   }

   public String getPhoneBusiness() {
      return phoneBusiness;
   }

   public void setPhoneBusiness(String phoneBusiness) {
      this.phoneBusiness = phoneBusiness;
   }

   public String getAddressBusiness() {
      return addressBusiness;
   }

   public void setAddressBusiness(String addressBusiness) {
      this.addressBusiness = addressBusiness;
   }

   public String getCompanyName() {
      return companyName;
   }

   public void setCompanyName(String companyName) {
      this.companyName = companyName;
   }

   public PeopleType getPeopleType() {
      return peopleType;
   }

   public void setPeopleType(PeopleType peopleType) {
      this.peopleType = peopleType;
   }

   public ActiveStatus getActiveStatus() {
      return activeStatus;
   }

   public void setActiveStatus(ActiveStatus activeStatus) {
      this.activeStatus = activeStatus;
   }

   public Office getOffice() {
      return office;
   }

   public void setOffice(Office office) {
      this.office = office;
   }

   public RouteCtlg getRouteCtlg() {
      return routeCtlg;
   }

   public void setRouteCtlg(RouteCtlg routeCtlg) {
      this.routeCtlg = routeCtlg;
   }

   public String getLetraCuenta() {
      return letraCuenta;
   }

   public void setLetraCuenta(String letraCuenta) {
      this.letraCuenta = letraCuenta;
   }

   public String getContrato() {
      return contrato;
   }

   public void setContrato(String contrato) {
      this.contrato = contrato;
   }

   public String getPersonalCelular() {
      return personalCelular;
   }

   public void setPersonalCelular(String personalCelular) {
      this.personalCelular = personalCelular;
   }

   public String getPersonalCruzamientos() {
      return personalCruzamientos;
   }

   public void setPersonalCruzamientos(String personalCruzamientos) {
      this.personalCruzamientos = personalCruzamientos;
   }

   public String getPersonalColonia() {
      return personalColonia;
   }

   public void setPersonalColonia(String personalColonia) {
      this.personalColonia = personalColonia;
   }

   public String getPersonalCiudad() {
      return personalCiudad;
   }

   public void setPersonalCiudad(String personalCiudad) {
      this.personalCiudad = personalCiudad;
   }

   public String getPersonalEstado() {
      return personalEstado;
   }

   public void setPersonalEstado(String personalEstado) {
      this.personalEstado = personalEstado;
   }

   public String getPersonalCodigoPostal() {
      return personalCodigoPostal;
   }

   public void setPersonalCodigoPostal(String personalCodigoPostal) {
      this.personalCodigoPostal = personalCodigoPostal;
   }

   public String getPersonalEmail() {
      return personalEmail;
   }

   public void setPersonalEmail(String personalEmail) {
      this.personalEmail = personalEmail;
   }

   public Integer getPersonalEdad() {
      return personalEdad;
   }

   public void setPersonalEdad(Integer personalEdad) {
      this.personalEdad = personalEdad;
   }

   public String getNegocioCelular() {
      return negocioCelular;
   }

   public void setNegocioCelular(String negocioCelular) {
      this.negocioCelular = negocioCelular;
   }

   public String getNegocioCruzamientos() {
      return negocioCruzamientos;
   }

   public void setNegocioCruzamientos(String negocioCruzamientos) {
      this.negocioCruzamientos = negocioCruzamientos;
   }

   public String getNegocioColonia() {
      return negocioColonia;
   }

   public void setNegocioColonia(String negocioColonia) {
      this.negocioColonia = negocioColonia;
   }

   public String getNegocioCiudad() {
      return negocioCiudad;
   }

   public void setNegocioCiudad(String negocioCiudad) {
      this.negocioCiudad = negocioCiudad;
   }

   public String getNegocioEstado() {
      return negocioEstado;
   }

   public void setNegocioEstado(String negocioEstado) {
      this.negocioEstado = negocioEstado;
   }

   public String getNegocioCodigoPostal() {
      return negocioCodigoPostal;
   }

   public void setNegocioCodigoPostal(String negocioCodigoPostal) {
      this.negocioCodigoPostal = negocioCodigoPostal;
   }

   public String getNegocioEmail() {
      return negocioEmail;
   }

   public void setNegocioEmail(String negocioEmail) {
      this.negocioEmail = negocioEmail;
   }

   public String getFachadaColorFachada() {
      return fachadaColorFachada;
   }

   public void setFachadaColorFachada(String fachadaColorFachada) {
      this.fachadaColorFachada = fachadaColorFachada;
   }

   public String getFachadaDecisionFachada() {
      return fachadaDecisionFachada;
   }

   public void setFachadaDecisionFachada(String fachadaDecisionFachada) {
      this.fachadaDecisionFachada = fachadaDecisionFachada;
   }

   public String getFachadaDescripcionPuerta() {
      return fachadaDescripcionPuerta;
   }

   public void setFachadaDescripcionPuerta(String fachadaDescripcionPuerta) {
      this.fachadaDescripcionPuerta = fachadaDescripcionPuerta;
   }

   public String getFachadaDescripcionVentanas() {
      return fachadaDescripcionVentanas;
   }

   public void setFachadaDescripcionVentanas(String fachadaDescripcionVentanas) {
      this.fachadaDescripcionVentanas = fachadaDescripcionVentanas;
   }

   public String getFachadaFrenteNumero() {
      return fachadaFrenteNumero;
   }

   public void setFachadaFrenteNumero(String fachadaFrenteNumero) {
      this.fachadaFrenteNumero = fachadaFrenteNumero;
   }

   public Integer getFachadaEntreNumero1() {
      return fachadaEntreNumero1;
   }

   public void setFachadaEntreNumero1(Integer fachadaEntreNumero1) {
      this.fachadaEntreNumero1 = fachadaEntreNumero1;
   }

   public Integer getFachadaEntreNumero2() {
      return fachadaEntreNumero2;
   }

   public void setFachadaEntreNumero2(Integer fachadaEntreNumero2) {
      this.fachadaEntreNumero2 = fachadaEntreNumero2;
   }

   public String getFachadaSenasVivienda() {
      return fachadaSenasVivienda;
   }

   public void setFachadaSenasVivienda(String fachadaSenasVivienda) {
      this.fachadaSenasVivienda = fachadaSenasVivienda;
   }

   public String getFachadaObservacionesParaCobrador() {
      return fachadaObservacionesParaCobrador;
   }

   public void setFachadaObservacionesParaCobrador(String fachadaObservacionesParaCobrador) {
      this.fachadaObservacionesParaCobrador = fachadaObservacionesParaCobrador;
   }

   public String getTrabajo() {
      return trabajo;
   }

   public void setTrabajo(String trabajo) {
      this.trabajo = trabajo;
   }

   public String getTrabajoDomicilio() {
      return trabajoDomicilio;
   }

   public void setTrabajoDomicilio(String trabajoDomicilio) {
      this.trabajoDomicilio = trabajoDomicilio;
   }

   public String getTrabajoCruzamientos() {
      return trabajoCruzamientos;
   }

   public void setTrabajoCruzamientos(String trabajoCruzamientos) {
      this.trabajoCruzamientos = trabajoCruzamientos;
   }

   public String getTrabajoColonia() {
      return trabajoColonia;
   }

   public void setTrabajoColonia(String trabajoColonia) {
      this.trabajoColonia = trabajoColonia;
   }

   public String getTrabajoCiudad() {
      return trabajoCiudad;
   }

   public void setTrabajoCiudad(String trabajoCiudad) {
      this.trabajoCiudad = trabajoCiudad;
   }

   public String getTrabajoEstado() {
      return trabajoEstado;
   }

   public void setTrabajoEstado(String trabajoEstado) {
      this.trabajoEstado = trabajoEstado;
   }

   public Integer getTrabajoCodigoPostal() {
      return trabajoCodigoPostal;
   }

   public void setTrabajoCodigoPostal(Integer trabajoCodigoPostal) {
      this.trabajoCodigoPostal = trabajoCodigoPostal;
   }

   public String getTrabajoTurno() {
      return trabajoTurno;
   }

   public void setTrabajoTurno(String trabajoTurno) {
      this.trabajoTurno = trabajoTurno;
   }

   public String getTrabajoDepartamento() {
      return trabajoDepartamento;
   }

   public void setTrabajoDepartamento(String trabajoDepartamento) {
      this.trabajoDepartamento = trabajoDepartamento;
   }

   public String getTrabajoTelefono1() {
      return trabajoTelefono1;
   }

   public void setTrabajoTelefono1(String trabajoTelefono1) {
      this.trabajoTelefono1 = trabajoTelefono1;
   }

   public String getTrabajoTelefonoExtra1() {
      return trabajoTelefonoExtra1;
   }

   public void setTrabajoTelefonoExtra1(String trabajoTelefonoExtra1) {
      this.trabajoTelefonoExtra1 = trabajoTelefonoExtra1;
   }

   public String getTrabajoTelefono2() {
      return trabajoTelefono2;
   }

   public void setTrabajoTelefono2(String trabajoTelefono2) {
      this.trabajoTelefono2 = trabajoTelefono2;
   }

   public String getTrabajoTelefonoExtra2() {
      return trabajoTelefonoExtra2;
   }

   public void setTrabajoTelefonoExtra2(String trabajoTelefonoExtra2) {
      this.trabajoTelefonoExtra2 = trabajoTelefonoExtra2;
   }

   public String getReferencia1Nombre() {
      return referencia1Nombre;
   }

   public void setReferencia1Nombre(String referencia1Nombre) {
      this.referencia1Nombre = referencia1Nombre;
   }

   public String getReferencia1Domicilio() {
      return referencia1Domicilio;
   }

   public void setReferencia1Domicilio(String referencia1Domicilio) {
      this.referencia1Domicilio = referencia1Domicilio;
   }

   public String getReferencia1Cruzamientos() {
      return referencia1Cruzamientos;
   }

   public void setReferencia1Cruzamientos(String referencia1Cruzamientos) {
      this.referencia1Cruzamientos = referencia1Cruzamientos;
   }

   public String getReferencia1Colonia() {
      return referencia1Colonia;
   }

   public void setReferencia1Colonia(String referencia1Colonia) {
      this.referencia1Colonia = referencia1Colonia;
   }

   public String getReferencia1Ciudad() {
      return referencia1Ciudad;
   }

   public void setReferencia1Ciudad(String referencia1Ciudad) {
      this.referencia1Ciudad = referencia1Ciudad;
   }

   public String getReferencia1Estado() {
      return referencia1Estado;
   }

   public void setReferencia1Estado(String referencia1Estado) {
      this.referencia1Estado = referencia1Estado;
   }

   public Integer getReferencia1CodigoPostal() {
      return referencia1CodigoPostal;
   }

   public void setReferencia1CodigoPostal(Integer referencia1CodigoPostal) {
      this.referencia1CodigoPostal = referencia1CodigoPostal;
   }

   public String getReferencia1TelefonoParticular() {
      return referencia1TelefonoParticular;
   }

   public void setReferencia1TelefonoParticular(String referencia1TelefonoParticular) {
      this.referencia1TelefonoParticular = referencia1TelefonoParticular;
   }

   public String getReferencia1CelularParticular() {
      return referencia1CelularParticular;
   }

   public void setReferencia1CelularParticular(String referencia1CelularParticular) {
      this.referencia1CelularParticular = referencia1CelularParticular;
   }

   public String getReferencia1TelefonoTrabajo() {
      return referencia1TelefonoTrabajo;
   }

   public void setReferencia1TelefonoTrabajo(String referencia1TelefonoTrabajo) {
      this.referencia1TelefonoTrabajo = referencia1TelefonoTrabajo;
   }

   public String getReferencia1ExtraTelefonoTrabajo() {
      return referencia1ExtraTelefonoTrabajo;
   }

   public void setReferencia1ExtraTelefonoTrabajo(String referencia1ExtraTelefonoTrabajo) {
      this.referencia1ExtraTelefonoTrabajo = referencia1ExtraTelefonoTrabajo;
   }

   public String getReferencia1Parentesco() {
      return referencia1Parentesco;
   }

   public void setReferencia1Parentesco(String referencia1Parentesco) {
      this.referencia1Parentesco = referencia1Parentesco;
   }

   public String getReferencia2Nombre() {
      return referencia2Nombre;
   }

   public void setReferencia2Nombre(String referencia2Nombre) {
      this.referencia2Nombre = referencia2Nombre;
   }

   public String getReferencia2Domicilio() {
      return referencia2Domicilio;
   }

   public void setReferencia2Domicilio(String referencia2Domicilio) {
      this.referencia2Domicilio = referencia2Domicilio;
   }

   public String getReferencia2Cruzamientos() {
      return referencia2Cruzamientos;
   }

   public void setReferencia2Cruzamientos(String referencia2Cruzamientos) {
      this.referencia2Cruzamientos = referencia2Cruzamientos;
   }

   public String getReferencia2Colonia() {
      return referencia2Colonia;
   }

   public void setReferencia2Colonia(String referencia2Colonia) {
      this.referencia2Colonia = referencia2Colonia;
   }

   public String getReferencia2Ciudad() {
      return referencia2Ciudad;
   }

   public void setReferencia2Ciudad(String referencia2Ciudad) {
      this.referencia2Ciudad = referencia2Ciudad;
   }

   public String getReferencia2Estado() {
      return referencia2Estado;
   }

   public void setReferencia2Estado(String referencia2Estado) {
      this.referencia2Estado = referencia2Estado;
   }

   public Integer getReferencia2CodigoPostal() {
      return referencia2CodigoPostal;
   }

   public void setReferencia2CodigoPostal(Integer referencia2CodigoPostal) {
      this.referencia2CodigoPostal = referencia2CodigoPostal;
   }

   public String getReferencia2TelefonoParticular() {
      return referencia2TelefonoParticular;
   }

   public void setReferencia2TelefonoParticular(String referencia2TelefonoParticular) {
      this.referencia2TelefonoParticular = referencia2TelefonoParticular;
   }

   public String getReferencia2CelularParticular() {
      return referencia2CelularParticular;
   }

   public void setReferencia2CelularParticular(String referencia2CelularParticular) {
      this.referencia2CelularParticular = referencia2CelularParticular;
   }

   public String getReferencia2TelefonoTrabajo() {
      return referencia2TelefonoTrabajo;
   }

   public void setReferencia2TelefonoTrabajo(String referencia2TelefonoTrabajo) {
      this.referencia2TelefonoTrabajo = referencia2TelefonoTrabajo;
   }

   public String getReferencia2ExtraTelefonoTrabajo() {
      return referencia2ExtraTelefonoTrabajo;
   }

   public void setReferencia2ExtraTelefonoTrabajo(String referencia2ExtraTelefonoTrabajo) {
      this.referencia2ExtraTelefonoTrabajo = referencia2ExtraTelefonoTrabajo;
   }

   public String getReferencia2Parentesco() {
      return referencia2Parentesco;
   }

   public void setReferencia2Parentesco(String referencia2Parentesco) {
      this.referencia2Parentesco = referencia2Parentesco;
   }

   public Date getDatosCreditoFechaCompra() {
      return datosCreditoFechaCompra;
   }

   public void setDatosCreditoFechaCompra(Date datosCreditoFechaCompra) {
      this.datosCreditoFechaCompra = datosCreditoFechaCompra;
   }

   public Date getDatosCreditoPrimerPago() {
      return datosCreditoPrimerPago;
   }

   public void setDatosCreditoPrimerPago(Date datosCreditoPrimerPago) {
      this.datosCreditoPrimerPago = datosCreditoPrimerPago;
   }

   public LugarDeCobro getDatosCreditoEntradaEn() {
      return datosCreditoEntradaEn;
   }

   public void setDatosCreditoEntradaEn(LugarDeCobro datosCreditoEntradaEn) {
      this.datosCreditoEntradaEn = datosCreditoEntradaEn;
   }

   public LugarDeCobro getDatosCreditoCobrarEn() {
      return datosCreditoCobrarEn;
   }

   public void setDatosCreditoCobrarEn(LugarDeCobro datosCreditoCobrarEn) {
      this.datosCreditoCobrarEn = datosCreditoCobrarEn;
   }

   public FormaPago getDatosCreditoFormaPago() {
      return datosCreditoFormaPago;
   }

   public void setDatosCreditoFormaPago(FormaPago datosCreditoFormaPago) {
      this.datosCreditoFormaPago = datosCreditoFormaPago;
   }

   public Double getDatosCreditoPagosDe() {
      return datosCreditoPagosDe;
   }

   public void setDatosCreditoPagosDe(Double datosCreditoPagosDe) {
      this.datosCreditoPagosDe = datosCreditoPagosDe;
   }

   public Integer getDatosCreditoNumeroPagos() {
      return datosCreditoNumeroPagos;
   }

   public void setDatosCreditoNumeroPagos(Integer datosCreditoNumeroPagos) {
      this.datosCreditoNumeroPagos = datosCreditoNumeroPagos;
   }

   public String getDatosCreditoVendedor() {
      return datosCreditoVendedor;
   }

   public void setDatosCreditoVendedor(String datosCreditoVendedor) {
      this.datosCreditoVendedor = datosCreditoVendedor;
   }

   public String getDatosCreditoInvestigador() {
      return datosCreditoInvestigador;
   }

   public void setDatosCreditoInvestigador(String datosCreditoInvestigador) {
      this.datosCreditoInvestigador = datosCreditoInvestigador;
   }

   public String getDatosCreditoAsignado() {
      return datosCreditoAsignado;
   }

   public void setDatosCreditoAsignado(String datosCreditoAsignado) {
      this.datosCreditoAsignado = datosCreditoAsignado;
   }

   public Integer getDatosCreditoZona() {
      return datosCreditoZona;
   }

   public void setDatosCreditoZona(Integer datosCreditoZona) {
      this.datosCreditoZona = datosCreditoZona;
   }

   public String getCreatedBy() {
      return createdBy;
   }

   public void setCreatedBy(String createdBy) {
      this.createdBy = createdBy;
   }

   public Date getCreatedOn() {
      return createdOn;
   }

   public void setCreatedOn(Date createdOn) {
      this.createdOn = createdOn;
   }

   public String getLastUpdatedBy() {
      return lastUpdatedBy;
   }

   public void setLastUpdatedBy(String lastUpdatedBy) {
      this.lastUpdatedBy = lastUpdatedBy;
   }

   public Date getLastUpdatedOn() {
      return lastUpdatedOn;
   }

   public void setLastUpdatedOn(Date lastUpdatedOn) {
      this.lastUpdatedOn = lastUpdatedOn;
   }

   public List<Loan> getCustomerLoans() {
      return customerLoans;
   }

   public void setCustomerLoans(List<Loan> customerLoans) {
      this.customerLoans = customerLoans;
   }

   public List<Loan> getEndorsementLoans() {
      return endorsementLoans;
   }

   public void setEndorsementLoans(List<Loan> endorsementLoans) {
      this.endorsementLoans = endorsementLoans;
   }

   public Integer getTotalLoan() {
      if (getCustomerLoans() != null) {
         return getCustomerLoans().size();
      } else {
         return 0;
      }
   }

   public CustomerClassification getClassification() {
      return classification;
   }

   public void setClassification(CustomerClassification classification) {
      this.classification = classification;
   }

   public String getFullName() {
      String name = "";
      if (secondName == null || secondName.equalsIgnoreCase("null") || secondName.isEmpty()) {
         return firstName.trim() + " " + lastName.trim() + " " + middleName.trim();
      } else {
         return firstName.trim() + " " + secondName.trim() + " " + lastName.trim() + " " + middleName.trim();
      }
   }

}
