using Exferia_Aplicacion.General;
using Exferia_Aplicacion.Herencia.Capas;
using Exferia_EntityFramework;
using Exferia_Maestros._0_Modelos;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.CompilerServices;
using System.Transactions;
using System.Data.SqlClient;
using Exferia_General;
using static Exferia_Aplicacion.General.Enumerados;
using Exferia_Maestros._3_Vistas.Listados;
using Exferia_Aplicacion.Modelos_Maestros;
using System.Threading;
using System.Reflection;
using Exferia_Aplicacion.Modelos_Generales;
using Exferia_Aplicacion.Modelos_Mythos;

namespace Exferia_Maestros._1_Datos
{
    public class MAE_Clientes_Datos : ABS_Datos
    {
        #region Listado
        public List<INTERNO_MAE_Clientes_Listado_Modelo> g_lst_INTERNO_MAE_Clientes_Listado_Modelo = new List<INTERNO_MAE_Clientes_Listado_Modelo>();

        public override List<dynamic> Obtener_Listado(long _lng_idEmpresaSeleccionada, long _lng_idEjercicioActual, List<string> _lst_CamposConRelacionABuscar, List<INTERNO_Filtro_OpcionPadre_Modelo> _lst_INTERNO_Filtro_OpcionPadre_Modelo, List<INTERNO_Filtro_Modelo> _lst_INTERNO_Filtro_Modelo)
        {
            Exferia_Entities obj_Exferia_Entities = null;
            List<dynamic> lst_MAE = null;

            try
            {
                obj_Exferia_Entities = new Exferia_Entities();
                obj_Exferia_Entities.Configuration.LazyLoadingEnabled = false;

                // Consulta .....................................................
                ConsultaRellenar_Listado(obj_Exferia_Entities, _lng_idEmpresaSeleccionada, _lng_idEjercicioActual, Datos_Generales.GEN_Empresas_Devolver_EmpresasCompartidas_SegunFichero(_lng_idEmpresaSeleccionada, typeof(MAE_Clientes).Name), _lst_CamposConRelacionABuscar, -1, null, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                // ..............................................................

                if ((g_lst_INTERNO_MAE_Clientes_Listado_Modelo != null) && (g_lst_INTERNO_MAE_Clientes_Listado_Modelo.Count() > 0))
                {
                    lst_MAE = g_lst_INTERNO_MAE_Clientes_Listado_Modelo.Cast<dynamic>().ToList();
                }
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(Obtener_Listado), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
            return lst_MAE;
        }
        public override dynamic Obtener_RegistroListado(long _lng_idEmpresaSeleccionada, long _lng_idEjercicioActual, List<string> _lst_CamposConRelacionABuscar, List<INTERNO_Filtro_OpcionPadre_Modelo> _lst_INTERNO_Filtro_OpcionPadre_Modelo, List<INTERNO_Filtro_Modelo> _lst_INTERNO_Filtro_Modelo, long _lng_id, List<long> _lst_ids)
        {
            Exferia_Entities obj_Exferia_Entities = null;
            dynamic dnm_MAE = null;

            try
            {
                obj_Exferia_Entities = new Exferia_Entities();
                obj_Exferia_Entities.Configuration.LazyLoadingEnabled = false;

                // Consulta .....................................................
                ConsultaRellenar_Listado(obj_Exferia_Entities, _lng_idEmpresaSeleccionada, _lng_idEjercicioActual, Datos_Generales.GEN_Empresas_Devolver_EmpresasCompartidas_SegunFichero(_lng_idEmpresaSeleccionada, typeof(MAE_Clientes).Name), _lst_CamposConRelacionABuscar, _lng_id, _lst_ids, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                // ..............................................................

                if ((g_lst_INTERNO_MAE_Clientes_Listado_Modelo != null))
                {
                    dnm_MAE = g_lst_INTERNO_MAE_Clientes_Listado_Modelo.Cast<dynamic>().ToList();
                }
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(Obtener_RegistroListado), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
            return dnm_MAE;
        }
        protected override void ConsultaRellenar_Listado(Exferia_Entities _obj_Exferia_Entities, long _lng_idEmpresaSeleccionada, long _lng_idEjercicioActual, List<long> _lst_idEmpresasRelacionadas, List<string> _lst_CamposConRelacionABuscar, long _lng_id, List<long> _lst_ids, List<INTERNO_Filtro_OpcionPadre_Modelo> _lst_INTERNO_Filtro_OpcionPadre_Modelo, List<INTERNO_Filtro_Modelo> _lst_INTERNO_Filtro_Modelo)
        {
            try
            {
                List<SqlParameter> lst_Parametros = new List<SqlParameter>();

                string str_Filtros_Empresas = Funciones.Formar_ContenidoIN_ParaConsultaWhere(_lst_idEmpresasRelacionadas);


                //Array de Ids para actualizar
                string str_Filtros_IDS = Funciones.Formar_ContenidoIN_ParaConsultaWhere(_lst_ids);

                bool? bol_Cadena = null;
                long lng_idCliente_Cadena_Actual = -1;

                int int_ClienteCRM = 0;

                if (_lst_INTERNO_Filtro_OpcionPadre_Modelo != null && _lst_INTERNO_Filtro_OpcionPadre_Modelo.Count > 0)
                {
                    foreach (INTERNO_Filtro_OpcionPadre_Modelo mdl_INTERNO_Filtro_OpcionPadre_Modelo in _lst_INTERNO_Filtro_OpcionPadre_Modelo)
                    {
                        //Solo las Cadenas
                        if (mdl_INTERNO_Filtro_OpcionPadre_Modelo.NOMBRE_CAMPO == nameof(INTERNO_MAE_Clientes_Listado_Modelo.cadena))
                        {
                            bol_Cadena = (bool)mdl_INTERNO_Filtro_OpcionPadre_Modelo.VALOR_AUXILIAR;
                            lng_idCliente_Cadena_Actual = mdl_INTERNO_Filtro_OpcionPadre_Modelo.VALOR;
                        }
                        //Cliente_CRM
                        else if (mdl_INTERNO_Filtro_OpcionPadre_Modelo.NOMBRE_CAMPO == nameof(INTERNO_MAE_Clientes_Listado_Modelo.clienteCRM))
                        {
                            int_ClienteCRM = (int)mdl_INTERNO_Filtro_OpcionPadre_Modelo.VALOR_AUXILIAR;
                        }
                    }
                }

                //Cliente CRM
                string str_Where_Cliente_CRM = "";
                if (int_ClienteCRM > 0)
                {
                    str_Where_Cliente_CRM = " and " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.clienteCRM) + "=" + Variables.G_INT_TIPOCLIENTECRM_CODIGO + " ";
                }
                else if (int_ClienteCRM == -1)
                { }
                else
                {
                    str_Where_Cliente_CRM = " and (" + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.clienteCRM) + " is null or " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.clienteCRM) + "=0) ";
                }


                string str_SQL =
                      " SELECT " +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.id) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.codigo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.codigo) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.razonSocial) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.razonSocial) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.nombreComercial) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.nombreComercial) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.cif) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.cif) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.telefono1) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.telefono1) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.telefono2) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.telefono2) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.fax) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fax) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idFormaPago) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idFormaPago) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.retencion) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.retencion) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.recargo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.recargo) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.fechaAlta) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaAlta) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.fechaBaja) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaBaja) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.riesgo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.riesgo) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.descuentoProntoPago) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.descuentoProntoPago) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.descuentoFinalAlbaran) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.descuentoFinalAlbaran) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.numeroProveedor) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.numeroProveedor) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.albaranValorado) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.albaranValorado) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.noDeclararModelosOficiales) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.noDeclararModelosOficiales) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.noFacturar) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.noFacturar) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.permiteDepositos) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.permiteDepositos) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.aplicarRiesgo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.aplicarRiesgo) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.imprimirDeudaAcumulada) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.imprimirDeudaAcumulada) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.email) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.email) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.web) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.web) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.imprimirDatosCadena) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.imprimirDatosCadena) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.facturarDatosCadena) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.facturarDatosCadena) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.descuentoGeneral) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.descuentoGeneral) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.EAN_Cliente) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.EAN_Cliente) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.EAN_Documento) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.EAN_Documento) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.EAN_Entrega) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.EAN_Entrega) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.criterioCaja) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.criterioCaja) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.tipoDocumento) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.tipoDocumento) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.tipoPrecio) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.tipoPrecio) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.tipoPuntoVerde) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.tipoPuntoVerde) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.formatoFactura) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.formatoFactura) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.modeloFactura) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.modeloFactura) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.diasRiesgo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.diasRiesgo) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.documentosRiesgo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.documentosRiesgo) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.descuentoFinalFactura) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.descuentoFinalFactura) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.imprimir_Trazabilidad) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.imprimir_Trazabilidad) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.infoMicro) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.infoMicro) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.posicionLatitud) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.posicionLatitud) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.posicionLongitud) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.posicionLongitud) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.EAN_Vendedor) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.EAN_Vendedor) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.numeroROPO) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.numeroROPO) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.numeroAplicador) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.numeroAplicador) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.fechaBorrado) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaBorrado) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.zoom) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.zoom) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.tipoMapa) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.tipoMapa) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.permiteCobrarAlbaran) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.permiteCobrarAlbaran) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.cadena) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.cadena) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.clienteCRM) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.clienteCRM) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.atencionDe) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.atencionDe) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.referenciasFacturas) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.referenciasFacturas) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.enviarPorEmail) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.enviarPorEmail) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.web_Usuario) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.web_Usuario) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.web_Clave) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.web_Clave) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.conversionVolumen) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.conversionVolumen) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.saltoEscala) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.saltoEscala) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.seguro_Porcentaje) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.seguro_Porcentaje) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.seguro_Minimo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.seguro_Minimo) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.comisionReembolso_Porcentaje) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.comisionReembolso_Porcentaje) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.comisionReembolso_Minimo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.comisionReembolso_Minimo) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.comisionReembolso_Maximo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.comisionReembolso_Maximo) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.incrementoRecogida_Porcentaje) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.incrementoRecogida_Porcentaje) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.fechaAltaCRM) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaAltaCRM) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.fechaConversionCRM) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaConversionCRM) + "," +
                          //ids
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idImpuestoCabecera) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idImpuestoCabecera) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idEmpresa) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idEmpresa) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idVendedor) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idVendedor) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idMayor_CuentaContable) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaContable) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idMayor_CuentaContraPartida) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaContraPartida) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idMayor_CuentaRetencion) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaRetencion) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idMayor_CuentaRemesas) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaRemesas) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idMayorAuxiliar) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayorAuxiliar) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idMoneda) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMoneda) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idMotivoAltaBaja_Alta) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMotivoAltaBaja_Alta) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idMotivoAltaBaja_Baja) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMotivoAltaBaja_Baja) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idVendedor_Cobrador) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idVendedor_Cobrador) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idDepartamento) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idDepartamento) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idTesoreria) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idTesoreria) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idDelegacion) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idDelegacion) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idAbonoTipo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idAbonoTipo) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idPredefinidoCabecera_Ventas) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idPredefinidoCabecera_Ventas) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idPredefinidoCabecera_Cobros) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idPredefinidoCabecera_Cobros) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idPrioridad) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idPrioridad) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.Bolsa) + " = (CASE WHEN MAE_Clientes_Bolsa_Filtrado." + nameof(MAE_Clientes_Bolsa.id) + " > -1 THEN convert(bit,1) ELSE convert(bit,0) END)," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idCliente_Cadena) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idCliente_Cadena) + "," +
                            //Empresa
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Empresa)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Empresa_Codigo) + " = " + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Empresa_Descripcion) + " =" + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Empresa_FechaBorrado) + " =" + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Empresa_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Empresa_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Empresa_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //FormaPago
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.FormaPago)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.FormaPago_Codigo) + " = " + nameof(MAE_FormasPago) + "." + nameof(MAE_FormasPago.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.FormaPago_Descripcion) + " =" + nameof(MAE_FormasPago) + "." + nameof(MAE_FormasPago.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.FormaPago_FechaBorrado) + " =" + nameof(MAE_FormasPago) + "." + nameof(MAE_FormasPago.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.FormaPago_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.FormaPago_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.FormaPago_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //Mayor_CuentaContable
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContable)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContable_Codigo) + " = AUX_1." + nameof(CTA_Mayor.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContable_Descripcion) + " = AUX_1." + nameof(CTA_Mayor.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContable_FechaBorrado) + " = AUX_1." + nameof(CTA_Mayor.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContable_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContable_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContable_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //MayorCuentaRetencion
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorCuentaRetencion)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorCuentaRetencion_Codigo) + " = AUX_2." + nameof(CTA_Mayor.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorCuentaRetencion_Descripcion) + " = AUX_2." + nameof(CTA_Mayor.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorCuentaRetencion_FechaBorrado) + " = AUX_2." + nameof(CTA_Mayor.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorCuentaRetencion_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorCuentaRetencion_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorCuentaRetencion_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //ImpuestoCabecera
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.ImpuestoCabecera)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ImpuestoCabecera_Codigo) + " = " + nameof(GEN_ImpuestosCabecera) + "." + nameof(GEN_ImpuestosCabecera.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ImpuestoCabecera_Descripcion) + " =" + nameof(GEN_ImpuestosCabecera) + "." + nameof(GEN_ImpuestosCabecera.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ImpuestoCabecera_FechaBorrado) + " =" + nameof(GEN_ImpuestosCabecera) + "." + nameof(GEN_ImpuestosCabecera.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ImpuestoCabecera_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ImpuestoCabecera_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ImpuestoCabecera_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //Vendedor
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Vendedor)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Vendedor_Codigo) + " = AUX_3." + nameof(MAE_Vendedores.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Vendedor_Nombre) + " = AUX_3." + nameof(MAE_Vendedores.nombre) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Vendedor_FechaBorrado) + " = AUX_3." + nameof(MAE_Vendedores.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Vendedor_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Vendedor_Nombre) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Vendedor_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //Moneda
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Moneda)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Moneda_Codigo) + " = " + nameof(GEN_Monedas) + "." + nameof(GEN_Monedas.moneda) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Moneda_Descripcion) + " =" + nameof(GEN_Monedas) + "." + nameof(GEN_Monedas.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Moneda_FechaBorrado) + " =" + nameof(GEN_Monedas) + "." + nameof(GEN_Monedas.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Moneda_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Moneda_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Moneda_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //MotivoAlta
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoAlta)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoAlta_Codigo) + " = AUX_4." + nameof(MAE_MotivosAltaBaja.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoAlta_Descripcion) + " = AUX_4." + nameof(MAE_MotivosAltaBaja.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoAlta_FechaBorrado) + " = AUX_4." + nameof(MAE_MotivosAltaBaja.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoAlta_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoAlta_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoAlta_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //MotivoBaja
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoBaja)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoBaja_Codigo) + " = AUX_5." + nameof(MAE_MotivosAltaBaja.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoBaja_Descripcion) + " = AUX_5." + nameof(MAE_MotivosAltaBaja.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoBaja_FechaBorrado) + " = AUX_5." + nameof(MAE_MotivosAltaBaja.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoBaja_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoBaja_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoBaja_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //Mayor_CuentaRemesas
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaRemesa)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaRemesa_Codigo) + " = AUX_6." + nameof(CTA_Mayor.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaRemesa_Descripcion) + " = AUX_6." + nameof(CTA_Mayor.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaRemesa_FechaBorrado) + " = AUX_6." + nameof(CTA_Mayor.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaRemesa_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaRemesa_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaRemesa_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //Mayor_CuentaContraPartida
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContraPartida)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContraPartida_Codigo) + " = AUX_7." + nameof(CTA_Mayor.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContraPartida_Descripcion) + " = AUX_7." + nameof(CTA_Mayor.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContraPartida_FechaBorrado) + " = AUX_7." + nameof(CTA_Mayor.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContraPartida_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContraPartida_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContraPartida_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //MayorAuxiliar
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorAuxiliar)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorAuxiliar_Codigo) + " = " + nameof(CTA_MayorAuxiliar) + "." + nameof(CTA_MayorAuxiliar.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorAuxiliar_Descripcion) + " =" + nameof(CTA_MayorAuxiliar) + "." + nameof(CTA_MayorAuxiliar.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorAuxiliar_FechaBorrado) + " =" + nameof(CTA_MayorAuxiliar) + "." + nameof(CTA_MayorAuxiliar.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorAuxiliar_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorAuxiliar_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorAuxiliar_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //Cobrador
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Cobrador)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Cobrador_Codigo) + " = AUX_8." + nameof(MAE_Vendedores.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Cobrador_Nombre) + " = AUX_8." + nameof(MAE_Vendedores.nombre) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Cobrador_FechaBorrado) + " = AUX_8." + nameof(MAE_Vendedores.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Cobrador_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Cobrador_Nombre) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Cobrador_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //Departamento
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Departamento)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Departamento_Codigo) + " = " + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Departamento_Descripcion) + " =" + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Departamento_FechaBorrado) + " =" + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Departamento_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Departamento_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Departamento_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //Tesoreria
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Tesoreria)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Tesoreria_Codigo) + " = " + nameof(MAE_Tesorerias) + "." + nameof(MAE_Tesorerias.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Tesoreria_Descripcion) + " =" + nameof(MAE_Tesorerias) + "." + nameof(MAE_Tesorerias.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Tesoreria_FechaBorrado) + " =" + nameof(MAE_Tesorerias) + "." + nameof(MAE_Tesorerias.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Tesoreria_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Tesoreria_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Tesoreria_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //Delegacion
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Delegacion)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Delegacion_Codigo) + " = " + nameof(GEN_Delegaciones) + "." + nameof(GEN_Delegaciones.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Delegacion_Descripcion) + " =" + nameof(GEN_Delegaciones) + "." + nameof(GEN_Delegaciones.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Delegacion_FechaBorrado) + " =" + nameof(GEN_Delegaciones) + "." + nameof(GEN_Delegaciones.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Delegacion_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Delegacion_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Delegacion_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //AbonosTipos
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.AbonosTipos)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.AbonosTipos_Codigo) + " = " + nameof(MAE_AbonosTipos) + "." + nameof(MAE_AbonosTipos.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.AbonosTipos_Descripcion) + " =" + nameof(MAE_AbonosTipos) + "." + nameof(MAE_AbonosTipos.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.AbonosTipos_FechaBorrado) + " =" + nameof(MAE_AbonosTipos) + "." + nameof(MAE_AbonosTipos.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.AbonosTipos_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.AbonosTipos_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.AbonosTipos_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //PredefinidosVenta
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosVenta)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosVenta_Codigo) + " = AUX_9." + nameof(CTA_PredefinidosCabeceras.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosVenta_Descripcion) + " = AUX_9." + nameof(CTA_PredefinidosCabeceras.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosVenta_FechaBorrado) + " = AUX_9." + nameof(CTA_PredefinidosCabeceras.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosVenta_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosVenta_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosVenta_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //PredefinidosCompra
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosCompra)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosCompra_Codigo) + " = AUX_10." + nameof(CTA_PredefinidosCabeceras.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosCompra_Descripcion) + " = AUX_10." + nameof(CTA_PredefinidosCabeceras.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosCompra_FechaBorrado) + " = AUX_10." + nameof(CTA_PredefinidosCabeceras.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosCompra_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosCompra_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosCompra_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //Prioridad
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Prioridad)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Prioridad_Codigo) + " = " + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Prioridad_Descripcion) + " = " + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Prioridad_FechaBorrado) + " = " + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Prioridad_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Prioridad_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Prioridad_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //Cadena(Cliente)
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.ClienteCadena)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ClienteCadena_Codigo) + " = " + nameof(MAE_Clientes) + "_Cadena." + nameof(MAE_Clientes.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ClienteCadena_Descripcion) + " = " + nameof(MAE_Clientes) + "_Cadena." + nameof(MAE_Clientes.razonSocial) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ClienteCadena_FechaBorrado) + " = " + nameof(MAE_Clientes) + "_Cadena." + nameof(MAE_Clientes.fechaBorrado)
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ClienteCadena_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ClienteCadena_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ClienteCadena_FechaBorrado) + " = NULL "
                                    )
                            ) +
                        " FROM " + nameof(MAE_Clientes) +
                            //Empresa
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Empresa)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(GEN_Empresas) + " ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idEmpresa) + " = " + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.id)
                                        )
                                    : ("")
                            ) +
                            //FormaPago
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.FormaPago)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(MAE_FormasPago) + " ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idFormaPago) + " = " + nameof(MAE_FormasPago) + "." + nameof(MAE_FormasPago.id)
                                        )
                                    : ("")
                            ) +
                            //Mayor_CuentaContable
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContable)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(CTA_Mayor) + " AS AUX_1 ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaContable) + " = AUX_1." + nameof(CTA_Mayor.id)
                                        )
                                    : ("")
                            ) +
                            //MayorCuentaRetencion
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorCuentaRetencion)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(CTA_Mayor) + " AS AUX_2 ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaRetencion) + " = AUX_2." + nameof(CTA_Mayor.id)
                                        )
                                    : ("")
                            ) +
                            //ImpuestoCabecera
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.ImpuestoCabecera)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(GEN_ImpuestosCabecera) + " ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idImpuestoCabecera) + " = " + nameof(GEN_ImpuestosCabecera) + "." + nameof(GEN_ImpuestosCabecera.id)
                                        )
                                    : ("")
                            ) +
                            //Vendedor
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Vendedor)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(MAE_Vendedores) + " AS AUX_3  ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idVendedor) + " = AUX_3." + nameof(MAE_Vendedores.id)
                                        )
                                    : ("")
                            ) +
                            //Moneda
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Moneda)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(GEN_Monedas) + " ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMoneda) + " = " + nameof(GEN_Monedas) + "." + nameof(GEN_Monedas.id)
                                        )
                                    : ("")
                            ) +
                            //MotivoAlta
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoAlta)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(MAE_MotivosAltaBaja) + " AS AUX_4 ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMotivoAltaBaja_Alta) + " = AUX_4." + nameof(MAE_MotivosAltaBaja.id)
                                        )
                                    : ("")
                            ) +
                            //MotivoBaja
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoBaja)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(MAE_MotivosAltaBaja) + " AS AUX_5 ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMotivoAltaBaja_Baja) + " = AUX_5." + nameof(MAE_MotivosAltaBaja.id)
                                        )
                                    : ("")
                            ) +
                            //Mayor_CuentaRemesas
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaRemesa)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(CTA_Mayor) + " AS AUX_6 ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaRemesas) + " = AUX_6." + nameof(CTA_Mayor.id)
                                        )
                                    : ("")
                            ) +
                            //Mayor_CuentaContraPartida
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContraPartida)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(CTA_Mayor) + " AS AUX_7 ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaContraPartida) + " = AUX_7." + nameof(CTA_Mayor.id)
                                        )
                                    : ("")
                            ) +
                            //MayorAuxiliar
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorAuxiliar)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(CTA_MayorAuxiliar) + " ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayorAuxiliar) + " = " + nameof(CTA_MayorAuxiliar) + "." + nameof(CTA_MayorAuxiliar.id)
                                        )
                                    : ("")
                            ) +
                            //Cobrador
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Cobrador)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(MAE_Vendedores) + " AS AUX_8 ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idVendedor_Cobrador) + " = AUX_8." + nameof(MAE_Vendedores.id)
                                        )
                                    : ("")
                            ) +
                            //Departamento
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Departamento)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(CTA_Departamentos) + " ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idDepartamento) + " = " + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.id)
                                        )
                                    : ("")
                            ) +
                            //Tesoreria
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Tesoreria)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(MAE_Tesorerias) + " ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idTesoreria) + " = " + nameof(MAE_Tesorerias) + "." + nameof(MAE_Tesorerias.id)
                                        )
                                    : ("")
                            ) +
                            //Delegacion
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Delegacion)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(GEN_Delegaciones) + " ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idDelegacion) + " = " + nameof(GEN_Delegaciones) + "." + nameof(GEN_Delegaciones.id)
                                        )
                                    : ("")
                            ) +
                            //AbonosTipos
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.AbonosTipos)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(MAE_AbonosTipos) + " ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idAbonoTipo) + " = " + nameof(MAE_AbonosTipos) + "." + nameof(MAE_AbonosTipos.id)
                                        )
                                    : ("")
                            ) +
                            //PredefinidosVenta
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosVenta)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(CTA_PredefinidosCabeceras) + " AS AUX_9 ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idPredefinidoCabecera_Ventas) + " = AUX_9." + nameof(CTA_PredefinidosCabeceras.id)
                                        )
                                    : ("")
                            ) +
                            //PredefinidosCompra
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosCompra)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(CTA_PredefinidosCabeceras) + " AS AUX_10 ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idPredefinidoCabecera_Cobros) + " = AUX_10." + nameof(CTA_PredefinidosCabeceras.id)
                                        )
                                    : ("")
                            ) +
                            //Prioridad
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Prioridad)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(MAE_Prioridades) + " ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idPredefinidoCabecera_Ventas) + " = " + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.id)
                                        )
                                    : ("")
                            ) +
                            //Cadena(Cliente)
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.ClienteCadena)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(MAE_Clientes) + " AS " + nameof(MAE_Clientes) + "_Cadena ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idCliente_Cadena) + " = " + nameof(MAE_Clientes) + "_Cadena." + nameof(MAE_Clientes.id)
                                        )
                                    : ("")
                            ) +
                        //CLIENTE_BOLSA
                        " LEFT JOIN ( " +
                                    "SELECT " +
                                        nameof(MAE_Clientes_Bolsa) + "." + nameof(MAE_Clientes_Bolsa.id) + "," +
                                        nameof(MAE_Clientes_Bolsa) + "." + nameof(MAE_Clientes_Bolsa.idUsuario) + "," +
                                        nameof(MAE_Clientes_Bolsa) + "." + nameof(MAE_Clientes_Bolsa.idCliente) +
                                    " FROM " + nameof(MAE_Clientes_Bolsa) +
                                    " WHERE " + nameof(MAE_Clientes_Bolsa) + "." + nameof(MAE_Clientes_Bolsa.idUsuario) + "=" + Variables.G_MDL_USUARIOVALIDADO_MODELO.id +
                                  " ) AS MAE_Clientes_Bolsa_Filtrado ON MAE_Clientes_Bolsa_Filtrado." + nameof(MAE_Clientes_Bolsa.idCliente) + "=" + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id) +
                        " WHERE " +
                                //FechaBorrado
                                nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaBorrado) + " IS null AND " +
                                //Empresa
                                " ( " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idEmpresa) + "=@idEmpresa" +
                                    (
                                        (_lst_idEmpresasRelacionadas != null && _lst_idEmpresasRelacionadas.Count > 0)
                                            ? (" OR " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idEmpresa) + " in (" + str_Filtros_Empresas + ") ")
                                            : " "
                                    ) +
                                " ) AND " +
                                //Cadena
                                " ( " +
                                    (
                                        (bol_Cadena != null)
                                            ? (
                                                " ( not " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.cadena) + " is null ) AND  " +
                                                nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.cadena) + " =1 AND "
                                                ) +
                                                (
                                                    (lng_idCliente_Cadena_Actual > -1)
                                                        ? nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idCliente_Cadena) + "<>" + lng_idCliente_Cadena_Actual
                                                        : "  1=1 "
                                                )
                                            : (" 1=1 ")
                                    ) +
                                " ) AND " +
                                //id
                                (
                                    (str_Filtros_IDS.Trim().Length > 0)
                                    ? (nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id) + " in (" + str_Filtros_IDS + ") ")
                                    : (
                                        (_lng_id > -1)
                                        ?
                                        (nameof(MAE_Clientes) + "." + (nameof(MAE_Clientes.id) + "=@id"))
                                        : ("1 = 1"))
                                ) +
                                //Cliente CRM
                                str_Where_Cliente_CRM;

                //Parametros
                lst_Parametros.Add(new SqlParameter("@id", _lng_id));
                lst_Parametros.Add(new SqlParameter("@idEmpresa", _lng_idEmpresaSeleccionada));

                object[] arr_Parametros = lst_Parametros.ToArray();

                //Rellenar el Modelo
                g_lst_INTERNO_MAE_Clientes_Listado_Modelo = _obj_Exferia_Entities.Database.SqlQuery<INTERNO_MAE_Clientes_Listado_Modelo>(str_SQL, arr_Parametros).ToList();

                //Direcciones
                if (g_lst_INTERNO_MAE_Clientes_Listado_Modelo != null && g_lst_INTERNO_MAE_Clientes_Listado_Modelo.Count > 0)
                {
                    Agregar_Direcciones(_lst_CamposConRelacionABuscar);
                }

            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(ConsultaRellenar_Listado), true);
            }
        }

        private void Agregar_Direcciones(List<string> _lst_CamposConRelacionABuscar)
        {
            try
            {
                List<long> lst_ids = g_lst_INTERNO_MAE_Clientes_Listado_Modelo.Select(m => m.id).ToList();

                //Buscar datos de direccion de envio ##################################################################
                List<GEN_Direcciones> lst_Direcciones_Envio = null;

                if (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionEnvio_NombreVia)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionEnvio_CodigoPostal)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionEnvio_Pais)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionEnvio_Provincia)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionEnvio_Municipio)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionEnvio_Poblacion)))
                {
                    lst_Direcciones_Envio = Datos_Generales.GEN_Direcciones_Obtener_Modelo_Listado_Por_IdsClienteTipoDireccion(lst_ids,
                                                                                                                                    Variables.G_STR_TIPODIRECCION_ENVIO,
                                                                                                                                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionEnvio_Pais)),
                                                                                                                                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionEnvio_Provincia)),
                                                                                                                                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionEnvio_Municipio)),
                                                                                                                                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionEnvio_Poblacion)),
                                                                                                                                    false);

                }
                //######################################################################################

                //Buscar datos de direccion de fACTURACION ##################################################################
                List<GEN_Direcciones> lst_Direcciones_Facturacion = null;

                if (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFacturacion_NombreVia)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFacturacion_CodigoPostal)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFacturacion_Pais)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFacturacion_Provincia)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFacturacion_Municipio)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFacturacion_Poblacion)))
                {
                    lst_Direcciones_Facturacion = Datos_Generales.GEN_Direcciones_Obtener_Modelo_Listado_Por_IdsClienteTipoDireccion(lst_ids,
                                                                                                                                    Variables.G_STR_TIPODIRECCION_FACTURACION,
                                                                                                                                        _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFacturacion_Pais)),
                                                                                                                                        _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFacturacion_Provincia)),
                                                                                                                                        _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFacturacion_Municipio)),
                                                                                                                                        _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFacturacion_Poblacion)),
                                                                                                                                        false);

                }
                //######################################################################################

                //Buscar datos de direccion de Fiscal ##################################################################
                List<GEN_Direcciones> lst_Direcciones_Fiscal = null;

                if (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFiscal_NombreVia)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFiscal_TipoNumeracion)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFiscal_NumeroCasa)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFiscal_CalificadorNumero)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFiscal_Bloque)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFiscal_Portal)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFiscal_Escalera)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFiscal_Planta)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFiscal_Puerta)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFiscal_DatosComplementariosDomicilio)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFiscal_CodigoPostal)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFiscal_Pais)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFiscal_Provincia)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFiscal_Municipio)) ||
                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFiscal_Poblacion)))
                {
                    lst_Direcciones_Fiscal = Datos_Generales.GEN_Direcciones_Obtener_Modelo_Listado_Por_IdsClienteTipoDireccion(lst_ids,
                                                                                                                                    Variables.G_STR_TIPODIRECCION_FISCAL,
                                                                                                                                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFiscal_Pais)),
                                                                                                                                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFiscal_Provincia)),
                                                                                                                                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFiscal_Municipio)),
                                                                                                                                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFiscal_Poblacion)),
                                                                                                                                    _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.DireccionFiscal_TipoVia)));

                }
                //######################################################################################


                //Rellenar el Listado
                foreach (INTERNO_MAE_Clientes_Listado_Modelo mdl_INTERNO_MAE_Clientes_Listado_Modelo in g_lst_INTERNO_MAE_Clientes_Listado_Modelo)
                {
                    //Direccion de Envio
                    if (lst_Direcciones_Envio != null &&
                        lst_Direcciones_Envio.Count > 0)
                    {
                        mdl_INTERNO_MAE_Clientes_Listado_Modelo.DireccionEnvio = lst_Direcciones_Envio.Where(m => m.idCliente != null && m.idCliente.Value.Equals(mdl_INTERNO_MAE_Clientes_Listado_Modelo.id)).FirstOrDefault();
                    }

                    //Direccion de Facturacion
                    if (lst_Direcciones_Facturacion != null &&
                        lst_Direcciones_Facturacion.Count > 0)
                    {
                        mdl_INTERNO_MAE_Clientes_Listado_Modelo.DireccionFacturacion = lst_Direcciones_Facturacion.Where(m => m.idCliente != null && m.idCliente.Value.Equals(mdl_INTERNO_MAE_Clientes_Listado_Modelo.id)).FirstOrDefault();
                    }

                    //Direccion de Fiscal
                    if (lst_Direcciones_Fiscal != null &&
                        lst_Direcciones_Fiscal.Count > 0)
                    {
                        mdl_INTERNO_MAE_Clientes_Listado_Modelo.DireccionFiscal = lst_Direcciones_Fiscal.Where(m => m.idCliente != null && m.idCliente.Value.Equals(mdl_INTERNO_MAE_Clientes_Listado_Modelo.id)).FirstOrDefault();
                    }
                }
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(Agregar_Direcciones), true);
            }
        }

        #endregion

        #region Listado Secundario
        public override List<dynamic> Obtener_Listado_Secundario(long _lng_idEmpresaSeleccionada, long _lng_idEjercicioActual, List<string> _lst_CamposConRelacionABuscar, List<INTERNO_Filtro_OpcionPadre_Modelo> _lst_INTERNO_Filtro_OpcionPadre_Modelo, List<INTERNO_Filtro_Modelo> _lst_INTERNO_Filtro_Modelo)
        {
            return null;
        }
        public override dynamic Obtener_RegistroListado_Secundario(long _lng_idEmpresaSeleccionada, long _lng_idEjercicioActual, List<string> _lst_CamposConRelacionABuscar, List<INTERNO_Filtro_OpcionPadre_Modelo> _lst_INTERNO_Filtro_OpcionPadre_Modelo, List<INTERNO_Filtro_Modelo> _lst_INTERNO_Filtro_Modelo, long _lng_id, List<long> _lst_ids)
        {
            return null;
        }
        protected override void ConsultaRellenar_Listado_Secundario(Exferia_Entities _obj_Exferia_Entities, long _lng_idEmpresaSeleccionada, long _lng_idEjercicioActual, List<long> _lst_idEmpresasRelacionadas, List<string> _lst_CamposConRelacionABuscar, long _lng_id, List<long> _lst_ids, List<INTERNO_Filtro_OpcionPadre_Modelo> _lst_INTERNO_Filtro_OpcionPadre_Modelo, List<INTERNO_Filtro_Modelo> _lst_INTERNO_Filtro_Modelo)
        { }
        #endregion

        #region F3
        private INTERNO_MAE_Clientes_Listado_Modelo g_mdl_INTERNO_MAE_Clientes_Listado_Modelo_F3 = null;

        public override dynamic Obtener_F3(string _str_filtro, string _str_CampoBusqueda, long _lng_idEmpresaSeleccionada, long _lng_idEjercicioActual, List<INTERNO_Filtro_OpcionPadre_Modelo> _lst_INTERNO_Filtro_OpcionPadre_Modelo, List<INTERNO_Filtro_Modelo> _lst_INTERNO_Filtro_Modelo)
        {
            Exferia_Entities obj_Exferia_Entities = null;
            dynamic dnm_MAE = null;

            try
            {
                obj_Exferia_Entities = new Exferia_Entities();
                obj_Exferia_Entities.Configuration.LazyLoadingEnabled = false;

                //Consulta ......................................................
                ConsultaRellenar_F3(obj_Exferia_Entities, _lng_idEmpresaSeleccionada, _lng_idEjercicioActual, Datos_Generales.GEN_Empresas_Devolver_EmpresasCompartidas_SegunFichero(_lng_idEmpresaSeleccionada, typeof(MAE_Clientes).Name), _str_CampoBusqueda, _str_filtro, -1, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                // ..............................................................

                if (g_mdl_INTERNO_MAE_Clientes_Listado_Modelo_F3 != null)
                {
                    dnm_MAE = g_mdl_INTERNO_MAE_Clientes_Listado_Modelo_F3;
                }
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(Obtener_F3), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
            return dnm_MAE;
        }
        public override dynamic Obtener_F3_PorId(long _lng_id, long _lng_idEmpresaSeleccionada, long _lng_idEjercicioActual, List<INTERNO_Filtro_OpcionPadre_Modelo> _lst_INTERNO_Filtro_OpcionPadre_Modelo, List<INTERNO_Filtro_Modelo> _lst_INTERNO_Filtro_Modelo)
        {
            Exferia_Entities obj_Exferia_Entities = null;
            dynamic dnm_MAE = null;

            try
            {
                obj_Exferia_Entities = new Exferia_Entities();
                obj_Exferia_Entities.Configuration.LazyLoadingEnabled = false;

                //Conuslta ......................................................
                ConsultaRellenar_F3(obj_Exferia_Entities, _lng_idEmpresaSeleccionada, _lng_idEjercicioActual, Datos_Generales.GEN_Empresas_Devolver_EmpresasCompartidas_SegunFichero(_lng_idEmpresaSeleccionada, typeof(MAE_Clientes).Name), "", "", _lng_id, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                // ..............................................................

                if (g_mdl_INTERNO_MAE_Clientes_Listado_Modelo_F3 != null)
                {
                    dnm_MAE = g_mdl_INTERNO_MAE_Clientes_Listado_Modelo_F3;
                }
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(Obtener_F3_PorId), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
            return dnm_MAE;
        }
        protected override void ConsultaRellenar_F3(Exferia_Entities _obj_Exferia_Entities, long _lng_idEmpresaSeleccionada, long _lng_idEjercicioActual, List<long> _lst_idEmpresasRelacionadas, string _str_CampoBusqueda, string _str_Filtro, long _lng_id, List<INTERNO_Filtro_OpcionPadre_Modelo> _lst_INTERNO_Filtro_OpcionPadre_Modelo, List<INTERNO_Filtro_Modelo> _lst_INTERNO_Filtro_Modelo)
        {
            try
            {
                List<SqlParameter> lst_Parametros = new List<SqlParameter>();

                string str_Filtros_Empresas = Funciones.Formar_ContenidoIN_ParaConsultaWhere(_lst_idEmpresasRelacionadas);

                bool? bol_Cadena = null;
                long lng_idCliente_Cadena_Actual = -1;

                int int_ClienteCRM = 0;

                if (_lst_INTERNO_Filtro_OpcionPadre_Modelo != null && _lst_INTERNO_Filtro_OpcionPadre_Modelo.Count > 0)
                {
                    foreach (INTERNO_Filtro_OpcionPadre_Modelo mdl_INTERNO_Filtro_OpcionPadre_Modelo in _lst_INTERNO_Filtro_OpcionPadre_Modelo)
                    {
                        //Solo las Cadenas
                        if (mdl_INTERNO_Filtro_OpcionPadre_Modelo.NOMBRE_CAMPO == nameof(INTERNO_MAE_Clientes_Listado_Modelo.cadena))
                        {
                            bol_Cadena = (bool)mdl_INTERNO_Filtro_OpcionPadre_Modelo.VALOR_AUXILIAR;
                            lng_idCliente_Cadena_Actual = mdl_INTERNO_Filtro_OpcionPadre_Modelo.VALOR;
                        }
                        //Cliente_CRM
                        else if (mdl_INTERNO_Filtro_OpcionPadre_Modelo.NOMBRE_CAMPO == nameof(INTERNO_MAE_Clientes_Listado_Modelo.clienteCRM))
                        {
                            int_ClienteCRM = (int)mdl_INTERNO_Filtro_OpcionPadre_Modelo.VALOR_AUXILIAR;
                        }
                    }
                }

                //Cliente CRM
                string str_Where_Cliente_CRM = "";
                if (int_ClienteCRM > 0)
                {
                    str_Where_Cliente_CRM = " and " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.clienteCRM) + "=" + Variables.G_INT_TIPOCLIENTECRM_CODIGO + " ";
                }
                else if (int_ClienteCRM == -1)
                { }
                else
                {
                    str_Where_Cliente_CRM = " and (" + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.clienteCRM) + " is null or " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.clienteCRM) + "=0) ";
                }

                string str_SQL =
                   " SELECT distinct " +
                       nameof(INTERNO_MAE_Clientes_Listado_Modelo.id) + " = " + nameof(MAE_Clientes.id) + "," +
                       nameof(INTERNO_MAE_Clientes_Listado_Modelo.codigo) + " = " + nameof(MAE_Clientes.codigo) + "," +
                       nameof(INTERNO_MAE_Clientes_Listado_Modelo.razonSocial) + " = " + nameof(MAE_Clientes.razonSocial) + "," +
                       nameof(INTERNO_MAE_Clientes_Listado_Modelo.nombreComercial) + " = " + nameof(MAE_Clientes.nombreComercial) +
               " FROM " + nameof(MAE_Clientes) +
               " WHERE " +
                        //fechaBorrado
                        nameof(MAE_Clientes.fechaBorrado) + " IS null AND " +
                        //Empresa
                        " ( " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idEmpresa) + "=@idEmpresa" +
                                      (
                                          (_lst_idEmpresasRelacionadas != null && _lst_idEmpresasRelacionadas.Count > 0)
                                              ? (" OR " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idEmpresa) + " in (" + str_Filtros_Empresas + ") ")
                                              : " "
                                      ) +
                        " ) AND " +
                        //Cadena
                        " ( " +
                            (
                                (bol_Cadena != null)
                                    ? (
                                        " ( not " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.cadena) + " is null ) AND  " +
                                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.cadena) + " =1 AND "
                                        ) +
                                        (
                                            (lng_idCliente_Cadena_Actual > -1)
                                                ? nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idCliente_Cadena) + "<>" + lng_idCliente_Cadena_Actual
                                                : "  1=1 "
                                        )
                                    : (" 1=1 ")
                            ) +
                        " ) AND " +
                        //id
                        (
                            (_lng_id > -1)
                            ? (nameof(MAE_Clientes.id) + " = " + _lng_id)
                            : (
                                //Filtrar por Codigo
                                (_str_CampoBusqueda.Equals(nameof(MAE_Clientes.codigo)))
                                    ? (nameof(MAE_Clientes.codigo) + "=@Filtro")
                                    //Filtrar por nombreComercial
                                    : (_str_CampoBusqueda.Equals(nameof(MAE_Clientes.nombreComercial)))
                                        ? (nameof(MAE_Clientes.nombreComercial) + "=@Filtro")
                                        //Filtrar por Razon Social
                                        : (nameof(MAE_Clientes.razonSocial) + "=@Filtro")
                                )
                        ) +
                        //Cliente CRM
                        str_Where_Cliente_CRM;

                //Parametros
                lst_Parametros.Add(new SqlParameter("@idEmpresa", _lng_idEmpresaSeleccionada));
                lst_Parametros.Add(new SqlParameter("@Filtro", _str_Filtro));

                object[] arr_Parametros = lst_Parametros.ToArray();

                //Rellenar el Modelo
                g_mdl_INTERNO_MAE_Clientes_Listado_Modelo_F3 = _obj_Exferia_Entities.Database.SqlQuery<INTERNO_MAE_Clientes_Listado_Modelo>(str_SQL, arr_Parametros).FirstOrDefault();
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(ConsultaRellenar_F3), true);
            }
        }
        #endregion

        #region Obtener

        #region Obtener Simple
        private dynamic g_dnm_Modelo_Obtener = null;

        private static int g_int_TotalHilos_Obtener = 33;
        private bool[] g_bol_Hilos_Terminados_Obtener = new bool[g_int_TotalHilos_Obtener];

        public override dynamic Obtener(long _lng_id)
        {
            Exferia_Entities obj_Exferia_Entities = null;

            try
            {
                obj_Exferia_Entities = new Exferia_Entities();
                obj_Exferia_Entities.Configuration.LazyLoadingEnabled = false;

                string str_SQL =
                 " SELECT " +
                          nameof(INTERNO_MAE_Clientes_Modelo.id) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.codigo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.codigo) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.razonSocial) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.razonSocial) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.nombreComercial) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.nombreComercial) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.cif) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.cif) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.telefono1) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.telefono1) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.telefono2) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.telefono2) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.fax) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fax) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.confidencial) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.confidencial) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.observaciones) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.observaciones) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.idFormaPago) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idFormaPago) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.retencion) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.retencion) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.recargo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.recargo) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.fechaAlta) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaAlta) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.fechaBaja) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaBaja) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.riesgo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.riesgo) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.descuentoProntoPago) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.descuentoProntoPago) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.descuentoFinalAlbaran) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.descuentoFinalAlbaran) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.idImpuestoCabecera) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idImpuestoCabecera) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.idEmpresa) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idEmpresa) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.numeroProveedor) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.numeroProveedor) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.albaranValorado) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.albaranValorado) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.idVendedor) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idVendedor) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.idMayor_CuentaContable) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaContable) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.idMayor_CuentaContraPartida) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaContraPartida) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.idMayor_CuentaRetencion) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaRetencion) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.idMayor_CuentaRemesas) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaRemesas) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.idMayorAuxiliar) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayorAuxiliar) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.idMoneda) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMoneda) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.noDeclararModelosOficiales) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.noDeclararModelosOficiales) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.noFacturar) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.noFacturar) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.idMotivoAltaBaja_Alta) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMotivoAltaBaja_Alta) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.idMotivoAltaBaja_Baja) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMotivoAltaBaja_Baja) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.permiteDepositos) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.permiteDepositos) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.aplicarRiesgo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.aplicarRiesgo) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.imprimirDeudaAcumulada) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.imprimirDeudaAcumulada) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.email) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.email) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.web) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.web) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.imprimirDatosCadena) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.imprimirDatosCadena) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.facturarDatosCadena) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.facturarDatosCadena) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.descuentoGeneral) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.descuentoGeneral) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.EAN_Cliente) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.EAN_Cliente) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.EAN_Documento) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.EAN_Documento) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.EAN_Entrega) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.EAN_Entrega) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.criterioCaja) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.criterioCaja) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.tipoDocumento) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.tipoDocumento) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.tipoPrecio) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.tipoPrecio) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.tipoPuntoVerde) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.tipoPuntoVerde) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.formatoFactura) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.formatoFactura) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.modeloFactura) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.modeloFactura) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.diasRiesgo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.diasRiesgo) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.documentosRiesgo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.documentosRiesgo) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.descuentoFinalFactura) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.descuentoFinalFactura) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.idVendedor_Cobrador) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idVendedor_Cobrador) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.imprimir_Trazabilidad) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.imprimir_Trazabilidad) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.infoMicro) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.infoMicro) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.idDepartamento) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idDepartamento) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.posicionLatitud) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.posicionLatitud) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.posicionLongitud) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.posicionLongitud) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.EAN_Vendedor) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.EAN_Vendedor) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.idTesoreria) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idTesoreria) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.idDelegacion) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idDelegacion) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.idAbonoTipo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idAbonoTipo) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.idPredefinidoCabecera_Ventas) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idPredefinidoCabecera_Ventas) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.idPredefinidoCabecera_Cobros) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idPredefinidoCabecera_Cobros) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.numeroROPO) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.numeroROPO) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.numeroAplicador) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.numeroAplicador) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.fechaBorrado) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaBorrado) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.zoom) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.zoom) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.tipoMapa) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.tipoMapa) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.permiteCobrarAlbaran) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.permiteCobrarAlbaran) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.idPrioridad) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idPrioridad) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.idCliente_Cadena) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idCliente_Cadena) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.cadena) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.cadena) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.clienteCRM) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.clienteCRM) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.atencionDe) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.atencionDe) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.referenciasFacturas) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.referenciasFacturas) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.enviarPorEmail) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.enviarPorEmail) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.web_Usuario) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.web_Usuario) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.web_Clave) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.web_Clave) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.conversionVolumen) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.conversionVolumen) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.saltoEscala) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.saltoEscala) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.seguro_Porcentaje) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.seguro_Porcentaje) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.seguro_Minimo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.seguro_Minimo) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.comisionReembolso_Porcentaje) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.comisionReembolso_Porcentaje) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.comisionReembolso_Minimo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.comisionReembolso_Minimo) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.comisionReembolso_Maximo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.comisionReembolso_Maximo) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.incrementoRecogida_Porcentaje) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.incrementoRecogida_Porcentaje) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.fechaAltaCRM) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaAltaCRM) + "," +
                          nameof(INTERNO_MAE_Clientes_Modelo.fechaConversionCRM) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaConversionCRM) +
                          " FROM " + nameof(MAE_Clientes) +
                " WHERE " + nameof(MAE_Clientes.fechaBorrado) + " IS NULL AND " +
                           nameof(MAE_Clientes.id) + "=@id ";

                //Parametros
                object[] arr_Parametros = new object[]
                {
                     new SqlParameter("@id",  _lng_id)
                };

                //Rellenar el Modelo
                g_dnm_Modelo_Obtener = obj_Exferia_Entities.Database.SqlQuery<INTERNO_MAE_Clientes_Modelo>(str_SQL, arr_Parametros).FirstOrDefault();

                #region Rellenar Tablas Relacionadas
                if (g_dnm_Modelo_Obtener != null)
                {
                    //reiniciar Valores de los hilos
                    for (int int_Contador = 0; int_Contador < g_int_TotalHilos_Obtener; int_Contador++)
                    {
                        g_bol_Hilos_Terminados_Obtener[int_Contador] = false;
                    }

                    //GEN_Direcciones ##########################################################################################
                    ThreadStart obj_ThreadStart_DIRECCIONES = new ThreadStart(Obtener_Direcciones_Modelo_Obtener);
                    Thread obj_Thread_DIRECCIONES = new Thread(obj_ThreadStart_DIRECCIONES);
                    obj_Thread_DIRECCIONES.Start();

                    //CTA_Departamento ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idDepartamento != null)
                    {
                        ThreadStart obj_ThreadStart_DEPARTAMENTO = new ThreadStart(Obtener_Departamento_Modelo_Obtener);
                        Thread obj_Thread_DEPARTAMENTO = new Thread(obj_ThreadStart_DEPARTAMENTO);
                        obj_Thread_DEPARTAMENTO.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[1] = true;
                    }

                    //CTA_Mayor(CuentaContable) ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idMayor_CuentaContable != null)
                    {
                        ThreadStart obj_ThreadStart_MAYORCUENTACONTABLE = new ThreadStart(Obtener_MayorCuentaContable_Modelo_Obtener);
                        Thread obj_Thread_MAYORCUENTACONTABLE = new Thread(obj_ThreadStart_MAYORCUENTACONTABLE);
                        obj_Thread_MAYORCUENTACONTABLE.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[2] = true;
                    }

                    //CTA_Mayor(CuentaRemesa) ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idMayor_CuentaRemesas != null)
                    {
                        ThreadStart obj_ThreadStart_MAYORCUENTAREMESA = new ThreadStart(Obtener_MayorCuentaRemesa_Modelo_Obtener);
                        Thread obj_Thread_MAYORCUENTAREMESA = new Thread(obj_ThreadStart_MAYORCUENTAREMESA);
                        obj_Thread_MAYORCUENTAREMESA.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[3] = true;
                    }

                    //CTA_Mayor(ContraPartida) ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idMayor_CuentaContraPartida != null)
                    {
                        ThreadStart obj_ThreadStart_MAYORCUENTACONTRAPARTIDA = new ThreadStart(Obtener_MayorCuentaContraPartida_Modelo_Obtener);
                        Thread obj_Thread_MAYORCUENTACONTRATPARTIDA = new Thread(obj_ThreadStart_MAYORCUENTACONTRAPARTIDA);
                        obj_Thread_MAYORCUENTACONTRATPARTIDA.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[4] = true;
                    }

                    //CTA_Mayor(CuentaRetencion) ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idMayor_CuentaRetencion != null)
                    {
                        ThreadStart obj_ThreadStart_MAYORCUENTARETENCION = new ThreadStart(Obtener_MayorCuentaRetencion_Modelo_Obtener);
                        Thread obj_Thread_MAYORCUENTARETENCION = new Thread(obj_ThreadStart_MAYORCUENTARETENCION);
                        obj_Thread_MAYORCUENTARETENCION.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[5] = true;
                    }

                    //CTA_MayorAuxiliar ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idMayorAuxiliar != null)
                    {
                        ThreadStart obj_ThreadStart_MAYORAUXILIAR = new ThreadStart(Obtener_MayorAuxiliar_Modelo_Obtener);
                        Thread obj_Thread_MAYORAUXILIAR = new Thread(obj_ThreadStart_MAYORAUXILIAR);
                        obj_Thread_MAYORAUXILIAR.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[6] = true;
                    }

                    //CTA_PredefinidosCabecera(Ventas) ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idPredefinidoCabecera_Ventas != null)
                    {
                        ThreadStart obj_ThreadStart_PREDEFINIDOVENTAS = new ThreadStart(Obtener_PredefinidoVentas_Modelo_Obtener);
                        Thread obj_Thread_PREDEFINIDOVENTAS = new Thread(obj_ThreadStart_PREDEFINIDOVENTAS);
                        obj_Thread_PREDEFINIDOVENTAS.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[7] = true;
                    }

                    //CTA_PredefinidosCabecera(Cobros) ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idPredefinidoCabecera_Cobros != null)
                    {
                        ThreadStart obj_ThreadStart_PREDEFINIDOCOBROS = new ThreadStart(Obtener_PredefinidoCobros_Modelo_Obtener);
                        Thread obj_Thread_PREDEFINIDOCOBROS = new Thread(obj_ThreadStart_PREDEFINIDOCOBROS);
                        obj_Thread_PREDEFINIDOCOBROS.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[8] = true;
                    }

                    //GEN_Delegaciones ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idDelegacion != null)
                    {
                        ThreadStart obj_ThreadStart_DELEGACION = new ThreadStart(Obtener_Delegacion_Modelo_Obtener);
                        Thread obj_Thread_DELEGACION = new Thread(obj_ThreadStart_DELEGACION);
                        obj_Thread_DELEGACION.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[9] = true;
                    }

                    //GEN_Empresa ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idEmpresa != null)
                    {
                        ThreadStart obj_ThreadStart_EMPRESA = new ThreadStart(Obtener_Empresa_Modelo_Obtener);
                        Thread obj_Thread_EMPRESA = new Thread(obj_ThreadStart_EMPRESA);
                        obj_Thread_EMPRESA.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[10] = true;
                    }

                    //GEN_ImpuestosCabecera ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idImpuestoCabecera != null)
                    {
                        ThreadStart obj_ThreadStart_IMPUESTOSCABECERA = new ThreadStart(Obtener_ImpuestosCabecera_Modelo_Obtener);
                        Thread obj_Thread_IMPUESTOSCABECERA = new Thread(obj_ThreadStart_IMPUESTOSCABECERA);
                        obj_Thread_IMPUESTOSCABECERA.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[11] = true;
                    }

                    //GEN_Moneda ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idMoneda != null)
                    {
                        ThreadStart obj_ThreadStart_MONEDA = new ThreadStart(Obtener_Moneda_Modelo_Obtener);
                        Thread obj_Thread_MONEDA = new Thread(obj_ThreadStart_MONEDA);
                        obj_Thread_MONEDA.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[12] = true;
                    }

                    //MAE_AbonosTipos ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idAbonoTipo != null)
                    {
                        ThreadStart obj_ThreadStart_ABONOTIPO = new ThreadStart(Obtener_AbonoTipo_Modelo_Obtener);
                        Thread obj_Thread_ABONOTIPO = new Thread(obj_ThreadStart_ABONOTIPO);
                        obj_Thread_ABONOTIPO.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[13] = true;
                    }

                    //MAE_Contactos ##########################################################################################
                    ThreadStart obj_ThreadStart_CONTACTOS = new ThreadStart(Obtener_Contactos_Modelo_Obtener);
                    Thread obj_Thread_CONTACTOS = new Thread(obj_ThreadStart_CONTACTOS);
                    obj_Thread_CONTACTOS.Start();

                    //MAE_FormaPago ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idFormaPago != null)
                    {
                        ThreadStart obj_ThreadStart_FORMAPAGO = new ThreadStart(Obtener_FormaPago_Modelo_Obtener);
                        Thread obj_Thread_FORMAPAGO = new Thread(obj_ThreadStart_FORMAPAGO);
                        obj_Thread_FORMAPAGO.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[15] = true;
                    }

                    //MAE_MotivosAltaBaja(Alta) ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idMotivoAltaBaja_Alta != null)
                    {
                        ThreadStart obj_ThreadStart_MOTIVOALTABAJAALTA = new ThreadStart(Obtener_MotivoAltaBajaAlta_Modelo_Obtener);
                        Thread obj_Thread_MOTIVOALTABAJAALTA = new Thread(obj_ThreadStart_MOTIVOALTABAJAALTA);
                        obj_Thread_MOTIVOALTABAJAALTA.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[16] = true;
                    }

                    //MAE_MotivosAltaBaja(Baja) ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idMotivoAltaBaja_Baja != null)
                    {
                        ThreadStart obj_ThreadStart_MOTIVOALTABAJABAJA = new ThreadStart(Obtener_MotivoAltaBajaBaja_Modelo_Obtener);
                        Thread obj_Thread_MOTIVOALTABAJABAJA = new Thread(obj_ThreadStart_MOTIVOALTABAJABAJA);
                        obj_Thread_MOTIVOALTABAJABAJA.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[17] = true;
                    }

                    //MAE_Tesoreria ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idTesoreria != null)
                    {
                        ThreadStart obj_ThreadStart_TESORERIA = new ThreadStart(Obtener_Tesoreria_Modelo_Obtener);
                        Thread obj_Thread_TESORERIA = new Thread(obj_ThreadStart_TESORERIA);
                        obj_Thread_TESORERIA.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[18] = true;
                    }

                    //MAE_Vendedores ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idVendedor != null)
                    {
                        ThreadStart obj_ThreadStart_VENDEDOR = new ThreadStart(Obtener_Vendedor_Modelo_Obtener);
                        Thread obj_Thread_VENDEDOR = new Thread(obj_ThreadStart_VENDEDOR);
                        obj_Thread_VENDEDOR.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[19] = true;
                    }

                    //MAE_VendedoresCobrador ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idVendedor_Cobrador != null)
                    {
                        ThreadStart obj_ThreadStart_VENDEDORCOBRADOR = new ThreadStart(Obtener_VendedorCobrador_Modelo_Obtener);
                        Thread obj_Thread_VENDEDORCOBRADOR = new Thread(obj_ThreadStart_VENDEDORCOBRADOR);
                        obj_Thread_VENDEDORCOBRADOR.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[20] = true;
                    }

                    //MAE_Clientes_AgruapacionesClientesLineas ##########################################################################################
                    ThreadStart obj_ThreadStart_CLIENTEAGRUPACIONCLIENTELINEA = new ThreadStart(Obtener_ClienteAgrupacionClienteLinea_Modelo_Obtener);
                    Thread obj_Thread_CLIENTEAGRUPACIONCLIENTELINEA = new Thread(obj_ThreadStart_CLIENTEAGRUPACIONCLIENTELINEA);
                    obj_Thread_CLIENTEAGRUPACIONCLIENTELINEA.Start();

                    //MAE_CuentasBancariasSEPA_Cobros ##########################################################################################
                    ThreadStart obj_ThreadStart_CUENTASBANCARIAS = new ThreadStart(Obtener_CuentasBancaris_Modelo_Obtener);
                    Thread obj_Thread_CUENTASBANCARIAS = new Thread(obj_ThreadStart_CUENTASBANCARIAS);
                    obj_Thread_CUENTASBANCARIAS.Start();

                    //SRV_Relacion_ClienteProveedor ##########################################################################################
                    ThreadStart obj_ThreadStart_RELACIONCLIENTEPROVEEDOR = new ThreadStart(Obtener_RelacionClienteProveedor_Modelo_Obtener);
                    Thread obj_Thread_RELACIONCLIENTEPROVEEDOR = new Thread(obj_ThreadStart_RELACIONCLIENTEPROVEEDOR);
                    obj_Thread_RELACIONCLIENTEPROVEEDOR.Start();

                    //MAE_Prioridades ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idPrioridad != null)
                    {
                        ThreadStart obj_ThreadStart_PRIORIDADES = new ThreadStart(Obtener_Prioridades_Modelo_Obtener);
                        Thread obj_Thread_PRIORIDADES = new Thread(obj_ThreadStart_PRIORIDADES);
                        obj_Thread_PRIORIDADES.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[24] = true;
                    }

                    //MAE_Clientes(Cadenas) ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idCliente_Cadena != null)
                    {
                        ThreadStart obj_ThreadStart_CLIENTECADENA = new ThreadStart(Obtener_ClienteCadena_Modelo_Obtener);
                        Thread obj_Thread_CLIENTECADENA = new Thread(obj_ThreadStart_CLIENTECADENA);
                        obj_Thread_CLIENTECADENA.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[25] = true;
                    }

                    //MAE_Clientes(RELACIONADOS)##########################################################################################
                    ThreadStart obj_ThreadStart_CLIENTECADENARELACIONADOS = new ThreadStart(Obtener_ClientesCadena_Relacionados_Modelo_Obtener);
                    Thread obj_Thread_CLIENTECADENARELACIONADOS = new Thread(obj_ThreadStart_CLIENTECADENARELACIONADOS);
                    obj_Thread_CLIENTECADENARELACIONADOS.Start();

                    //MYT_InstalacionesCabecera##########################################################################################
                    ThreadStart obj_ThreadStart_INSTALACIONES = new ThreadStart(Obtener_Instalaciones_Modelo_Obtener);
                    Thread obj_Thread_INSTALACIONES = new Thread(obj_ThreadStart_INSTALACIONES);
                    obj_Thread_INSTALACIONES.Start();

                    //MAE_Clientes_Terminales##########################################################################################
                    ThreadStart obj_ThreadStart_CLIENTESTERMINALES = new ThreadStart(Obtener_ClientesTerminales_Modelo_Obtener);
                    Thread obj_Thread_CLIENTESTERMINALES = new Thread(obj_ThreadStart_CLIENTESTERMINALES);
                    obj_Thread_CLIENTESTERMINALES.Start();

                    //MAE_ClientesEmails##########################################################################################
                    ThreadStart obj_ThreadStart_CLIENTESEMAILS = new ThreadStart(Obtener_ClientesEmails_Modelo_Obtener);
                    Thread obj_Thread_CLIENTESEMAILS = new Thread(obj_ThreadStart_CLIENTESEMAILS);
                    obj_Thread_CLIENTESEMAILS.Start();

                    //MAE_Clientes_TarifasCabecera ##########################################################################################
                    ThreadStart obj_ThreadStart_CLIENTETARIFASCABECERA = new ThreadStart(Obtener_ClienteTarifasCabecera_Modelo_Obtener);
                    Thread obj_Thread_CLIENTETARIFASCABECERA = new Thread(obj_ThreadStart_CLIENTETARIFASCABECERA);
                    obj_Thread_CLIENTETARIFASCABECERA.Start();


                    //HRM_PrecioSeguro ##########################################################################################
                    ThreadStart obj_ThreadStart_CLIENTESEGUROS = new ThreadStart(Obtener_ClienteSeguros_Modelo_Obtener);
                    Thread obj_CLIENTESEGUROS = new Thread(obj_ThreadStart_CLIENTESEGUROS);
                    obj_CLIENTESEGUROS.Start();

                    //HRM_Contratos ##########################################################################################
                    ThreadStart obj_ThreadStart_CONTRATOS = new ThreadStart(Obtener_Contratos_IdCliente_Modelo_Obtener);
                    Thread obj_CONTRATOS = new Thread(obj_ThreadStart_CONTRATOS);
                    obj_CONTRATOS.Start();

                    //Esperando a que terminen todos los hilos .........................................
                    bool bol_Termino = false;
                    while (bol_Termino == false)
                    {
                        bol_Termino = true;
                        foreach (bool bol_Termino_Hilo in g_bol_Hilos_Terminados_Obtener)
                        {
                            if (bol_Termino_Hilo == false)
                            {
                                bol_Termino = false;
                                break;
                            }
                        }

                        Thread.Sleep(10);
                    }
                    //.................................................................................
                }
                #endregion
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(Obtener), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
            return g_dnm_Modelo_Obtener;
        }

        #region Tablas Relacionadas
        private void Obtener_Direcciones_Modelo_Obtener()
        {
            try
            {
                g_dnm_Modelo_Obtener.GEN_Direcciones = Datos_Generales.GEN_Direcciones_Obtener_Modelo_Listado_Por_IdCliente(g_dnm_Modelo_Obtener.id);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[0] = true;
            }
        }
        private void Obtener_Departamento_Modelo_Obtener()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_CONTABILIDAD + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_CONTABILIDAD + "." + Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD);
                //creamos la instancia
                var obj_Clase = Activator.CreateInstance(m_type);
                //Cargamos el metodo solicitado
                MethodInfo obj_MethodInfo = obj_Clase.GetType().GetMethod(Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD_PROCEDIMIENTO_CTADEPARTAMENTO_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_dnm_Modelo_Obtener.idDepartamento };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_dnm_Modelo_Obtener.CTA_Departamentos = (CTA_Departamentos)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[1] = true;
            }
        }
        private void Obtener_MayorCuentaContable_Modelo_Obtener()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_CONTABILIDAD + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_CONTABILIDAD + "." + Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD);
                //creamos la instancia
                var obj_Clase = Activator.CreateInstance(m_type);
                //Cargamos el metodo solicitado
                MethodInfo obj_MethodInfo = obj_Clase.GetType().GetMethod(Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD_PROCEDIMIENTO_CTAMAYOR_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_dnm_Modelo_Obtener.idMayor_CuentaContable };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_dnm_Modelo_Obtener.CTA_Mayor = (CTA_Mayor)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[2] = true;
            }
        }
        private void Obtener_MayorCuentaRemesa_Modelo_Obtener()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_CONTABILIDAD + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_CONTABILIDAD + "." + Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD);
                //creamos la instancia
                var obj_Clase = Activator.CreateInstance(m_type);
                //Cargamos el metodo solicitado
                MethodInfo obj_MethodInfo = obj_Clase.GetType().GetMethod(Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD_PROCEDIMIENTO_CTAMAYOR_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_dnm_Modelo_Obtener.idMayor_CuentaRemesas };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_dnm_Modelo_Obtener.CTA_Mayor2 = (CTA_Mayor)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[3] = true;
            }
        }
        private void Obtener_MayorCuentaContraPartida_Modelo_Obtener()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_CONTABILIDAD + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_CONTABILIDAD + "." + Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD);
                //creamos la instancia
                var obj_Clase = Activator.CreateInstance(m_type);
                //Cargamos el metodo solicitado
                MethodInfo obj_MethodInfo = obj_Clase.GetType().GetMethod(Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD_PROCEDIMIENTO_CTAMAYOR_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_dnm_Modelo_Obtener.idMayor_CuentaContraPartida };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_dnm_Modelo_Obtener.CTA_Mayor3 = (CTA_Mayor)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[4] = true;
            }
        }
        private void Obtener_MayorCuentaRetencion_Modelo_Obtener()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_CONTABILIDAD + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_CONTABILIDAD + "." + Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD);
                //creamos la instancia
                var obj_Clase = Activator.CreateInstance(m_type);
                //Cargamos el metodo solicitado
                MethodInfo obj_MethodInfo = obj_Clase.GetType().GetMethod(Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD_PROCEDIMIENTO_CTAMAYOR_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_dnm_Modelo_Obtener.idMayor_CuentaRetencion };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_dnm_Modelo_Obtener.CTA_Mayor1 = (CTA_Mayor)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[5] = true;
            }
        }
        private void Obtener_MayorAuxiliar_Modelo_Obtener()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_CONTABILIDAD + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_CONTABILIDAD + "." + Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD);
                //creamos la instancia
                var obj_Clase = Activator.CreateInstance(m_type);
                //Cargamos el metodo solicitado
                MethodInfo obj_MethodInfo = obj_Clase.GetType().GetMethod(Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD_PROCEDIMIENTO_CTAMAYORAUXILIAR_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_dnm_Modelo_Obtener.idMayorAuxiliar };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_dnm_Modelo_Obtener.CTA_MayorAuxiliar = (CTA_MayorAuxiliar)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[6] = true;
            }
        }
        private void Obtener_PredefinidoVentas_Modelo_Obtener()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_CONTABILIDAD + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_CONTABILIDAD + "." + Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD);
                //creamos la instancia
                var obj_Clase = Activator.CreateInstance(m_type);
                //Cargamos el metodo solicitado
                MethodInfo obj_MethodInfo = obj_Clase.GetType().GetMethod(Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD_PROCEDIMIENTO_CTAPREDEFINIDOCABECERA_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_dnm_Modelo_Obtener.idPredefinidoCabecera_Ventas };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_dnm_Modelo_Obtener.CTA_PredefinidosCabeceras = (CTA_PredefinidosCabeceras)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[7] = true;
            }
        }
        private void Obtener_PredefinidoCobros_Modelo_Obtener()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_CONTABILIDAD + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_CONTABILIDAD + "." + Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD);
                //creamos la instancia
                var obj_Clase = Activator.CreateInstance(m_type);
                //Cargamos el metodo solicitado
                MethodInfo obj_MethodInfo = obj_Clase.GetType().GetMethod(Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD_PROCEDIMIENTO_CTAPREDEFINIDOCABECERA_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_dnm_Modelo_Obtener.idPredefinidoCabecera_Cobros };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_dnm_Modelo_Obtener.CTA_PredefinidosCabeceras1 = (CTA_PredefinidosCabeceras)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[8] = true;
            }
        }
        private void Obtener_Delegacion_Modelo_Obtener()
        {
            try
            {
                g_dnm_Modelo_Obtener.GEN_Delegaciones1 = Datos_Generales.GEN_Delegaciones_Obtener_Modelo_Por_Id(g_dnm_Modelo_Obtener.idDelegacion);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[9] = true;
            }
        }
        private void Obtener_Empresa_Modelo_Obtener()
        {
            try
            {
                g_dnm_Modelo_Obtener.GEN_Empresas = Datos_Generales.GEN_Empresas_Obtener_Modelo_Por_Id(g_dnm_Modelo_Obtener.idEmpresa);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[10] = true;
            }
        }
        private void Obtener_ImpuestosCabecera_Modelo_Obtener()
        {
            try
            {
                g_dnm_Modelo_Obtener.GEN_ImpuestosCabecera = Datos_Generales.GEN_ImpuestosCabecera_Obtener_Modelo_Por_Id(g_dnm_Modelo_Obtener.idImpuestoCabecera);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[11] = true;
            }
        }
        private void Obtener_Moneda_Modelo_Obtener()
        {
            try
            {
                g_dnm_Modelo_Obtener.GEN_Monedas = Datos_Generales.GEN_Monedas_Obtener_Modelo_Por_Id(g_dnm_Modelo_Obtener.idMoneda);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[12] = true;
            }
        }
        private void Obtener_AbonoTipo_Modelo_Obtener()
        {
            try
            {
                MAE_AbonosTipos_Datos obj_MAE_AbonosTipos_Datos = new MAE_AbonosTipos_Datos();
                g_dnm_Modelo_Obtener.MAE_AbonosTipos = obj_MAE_AbonosTipos_Datos.Obtener_Modelo_Por_Id(g_dnm_Modelo_Obtener.idAbonoTipo);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[13] = true;
            }
        }
        private void Obtener_Contactos_Modelo_Obtener()
        {
            try
            {
                MAE_Contactos_Datos obj_MAE_Contactos_Datos = new MAE_Contactos_Datos();
                g_dnm_Modelo_Obtener.Contactos = obj_MAE_Contactos_Datos.Obtener_Interno_ModeloListado_Por_idCliente(g_dnm_Modelo_Obtener.id);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[14] = true;
            }
        }
        private void Obtener_FormaPago_Modelo_Obtener()
        {
            try
            {
                MAE_FormasPago_Datos obj_MAE_FormasPago_Datos = new MAE_FormasPago_Datos();
                g_dnm_Modelo_Obtener.MAE_FormasPago = obj_MAE_FormasPago_Datos.Obtener_Modelo_Por_Id(g_dnm_Modelo_Obtener.idFormaPago);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[15] = true;
            }
        }
        private void Obtener_MotivoAltaBajaAlta_Modelo_Obtener()
        {
            try
            {
                MAE_MotivosAltaBaja_Datos obj_MAE_MotivosAltaBaja_Datos = new MAE_MotivosAltaBaja_Datos();
                g_dnm_Modelo_Obtener.MAE_MotivosAltaBaja = obj_MAE_MotivosAltaBaja_Datos.Obtener_Modelo_Por_Id(g_dnm_Modelo_Obtener.idMotivoAltaBaja_Alta);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[16] = true;
            }
        }
        private void Obtener_MotivoAltaBajaBaja_Modelo_Obtener()
        {
            try
            {
                MAE_MotivosAltaBaja_Datos obj_MAE_MotivosAltaBaja_Datos = new MAE_MotivosAltaBaja_Datos();
                g_dnm_Modelo_Obtener.MAE_MotivosAltaBaja1 = obj_MAE_MotivosAltaBaja_Datos.Obtener_Modelo_Por_Id(g_dnm_Modelo_Obtener.idMotivoAltaBaja_Baja);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[17] = true;
            }
        }
        private void Obtener_Tesoreria_Modelo_Obtener()
        {
            try
            {
                MAE_Tesorerias_Datos obj_MAE_Tesorerias_Datos = new MAE_Tesorerias_Datos();
                g_dnm_Modelo_Obtener.MAE_Tesorerias = obj_MAE_Tesorerias_Datos.Obtener_Modelo_Por_Id(g_dnm_Modelo_Obtener.idTesoreria, false, false, false, false, false, false, false, false, false, false);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[18] = true;
            }

        }
        private void Obtener_Vendedor_Modelo_Obtener()
        {
            try
            {
                MAE_Vendedores_Datos obj_MAE_Vendedores_Datos = new MAE_Vendedores_Datos();
                g_dnm_Modelo_Obtener.MAE_Vendedores = obj_MAE_Vendedores_Datos.Obtener_Modelo_Por_Id(g_dnm_Modelo_Obtener.idVendedor, false);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[19] = true;
            }
        }
        private void Obtener_VendedorCobrador_Modelo_Obtener()
        {
            try
            {
                MAE_Vendedores_Datos obj_MAE_Vendedores_Datos = new MAE_Vendedores_Datos();
                g_dnm_Modelo_Obtener.MAE_Vendedores1 = obj_MAE_Vendedores_Datos.Obtener_Modelo_Por_Id(g_dnm_Modelo_Obtener.idVendedor_Cobrador, false);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[20] = true;
            }
        }
        private void Obtener_ClienteAgrupacionClienteLinea_Modelo_Obtener()
        {
            try
            {
                MAE_Clientes_AgrupacionesClientesLineas_Datos obj_MAE_Clientes_AgrupacionesClientesLineas_Datos = new MAE_Clientes_AgrupacionesClientesLineas_Datos();
                g_dnm_Modelo_Obtener.MAE_Clientes_AgrupacionesClientesLineas = obj_MAE_Clientes_AgrupacionesClientesLineas_Datos.Obtener_ModeloListado_Por_IdCliente(g_dnm_Modelo_Obtener.id, true);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[21] = true;
            }
        }
        private void Obtener_CuentasBancaris_Modelo_Obtener()
        {
            try
            {
                MAE_CuentasBancariasSEPA_Cobros_Datos obj_MAE_CuentasBancariasSEPA_Cobros_Datos = new MAE_CuentasBancariasSEPA_Cobros_Datos();
                g_dnm_Modelo_Obtener.CuentasBancarias = obj_MAE_CuentasBancariasSEPA_Cobros_Datos.Obtener_Interno_ModeloListado_Por_idClienteidEmpresaSeleccionada(g_dnm_Modelo_Obtener.id, g_dnm_Modelo_Obtener.idEmpresa, false, true);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[22] = true;
            }
        }
        private void Obtener_RelacionClienteProveedor_Modelo_Obtener()
        {
            try
            {
                //Cargamos el ensamblado ##############################################################################################
                Assembly m_assembly_2 = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_SERVICIOS + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type_2 = m_assembly_2.GetType("" + Variables.G_STR_LIBRERIA_SERVICIOS + "." + Variables.G_STR_LIBRERIA_DATOSSERVICIOS);
                //Creamos la instancia
                var obj_Clase = Activator.CreateInstance(m_type_2);
                //Cargamos el metodo solicitado
                MethodInfo obj_MethodInfo = obj_Clase.GetType().GetMethod(Variables.G_STR_LIBRERIA_DATOSSERVICIOS_PROCEDIMIENTO_SRVRELACIONCLIENTEPROVEEDOR_OBTENER_LISTADO, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_dnm_Modelo_Obtener.id, -1 };

                g_dnm_Modelo_Obtener.Relaciones_ClienteProveedor = (List<INTERNO_RelacionClienteProveedor_Modelo>)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[23] = true;
            }
        }
        private void Obtener_Prioridades_Modelo_Obtener()
        {
            try
            {
                MAE_Prioridades_Datos obj_MAE_Prioridades_Datos = new MAE_Prioridades_Datos();
                g_dnm_Modelo_Obtener.MAE_Prioridades = obj_MAE_Prioridades_Datos.Obtener_Modelo_Por_Id(g_dnm_Modelo_Obtener.idPrioridad);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[24] = true;
            }
        }
        private void Obtener_ClienteCadena_Modelo_Obtener()
        {
            try
            {
                g_dnm_Modelo_Obtener.MAE_Clientes2 = Obtener_Modelo_Por_Id(g_dnm_Modelo_Obtener.idCliente_Cadena, false, false, false, false, false, false, false, false);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[25] = true;
            }
        }
        private void Obtener_ClientesCadena_Relacionados_Modelo_Obtener()
        {
            try
            {
                g_dnm_Modelo_Obtener.ClientesCadena = Obtener_Por_idCliente_Cadena(g_dnm_Modelo_Obtener.id);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[26] = true;
            }
        }
        private void Obtener_Instalaciones_Modelo_Obtener()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_MYTHOS + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_MYTHOS + "." + Variables.G_STR_LIBRERIA_DATOSMYTHOS);
                //creamos la instancia
                var obj_Clase = Activator.CreateInstance(m_type);
                //Cargamos el metodo solicitado
                MethodInfo obj_MethodInfo = obj_Clase.GetType().GetMethod(Variables.G_STR_LIBRERIA_DATOSMYTHOS_PROCEDIMIENTO_MYTINSTALACIONESCABECERA_OBTENER_PARALISTADO_PORCLIENTE, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_dnm_Modelo_Obtener.id };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_dnm_Modelo_Obtener.Instalaciones = (List<INTERNO_MYT_InstalacionesCabecera_Listado_Modelo>)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[27] = true;
            }
        }
        private void Obtener_ClientesTerminales_Modelo_Obtener()
        {
            try
            {
                MAE_Clientes_Terminales_Datos obj_MAE_Clientes_Terminales_Datos = new MAE_Clientes_Terminales_Datos();
                g_dnm_Modelo_Obtener.MAE_Clientes_Terminales = obj_MAE_Clientes_Terminales_Datos.Obtener_ModeloListado_Por_IdCliente(g_dnm_Modelo_Obtener.id);
            }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[28] = true;
            }
        }
        private void Obtener_ClientesEmails_Modelo_Obtener()
        {
            try
            {
                MAE_ClientesEmails_Datos obj_MAE_ClientesEmails_Datos = new MAE_ClientesEmails_Datos();
                g_dnm_Modelo_Obtener.MAE_ClientesEmails = obj_MAE_ClientesEmails_Datos.Obtener_ModeloListado_Por_IdCliente(g_dnm_Modelo_Obtener.id);
            }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[29] = true;
            }
        }
        private void Obtener_ClienteTarifasCabecera_Modelo_Obtener()
        {
            try
            {
                MAE_Clientes_TarifasCabecera_Datos obj_MAE_Clientes_TarifasCabecera_Datos = new MAE_Clientes_TarifasCabecera_Datos();
                g_dnm_Modelo_Obtener.MAE_Clientes_TarifasCabecera = obj_MAE_Clientes_TarifasCabecera_Datos.Obtener_ModeloListado_Por_IdCliente(g_dnm_Modelo_Obtener.id, false);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[30] = true;
            }
        }
        private void Obtener_ClienteSeguros_Modelo_Obtener()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_HERMES + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_HERMES + "." + Variables.G_STR_LIBRERIA_DATOSHERMES);
                //creamos la instancia
                var obj_Clase = Activator.CreateInstance(m_type);
                //Cargamos el metodo solicitado
                MethodInfo obj_MethodInfo = obj_Clase.GetType().GetMethod(Variables.G_STR_LIBRERIA_DATOSHERMES_PROCEDIMIENTO_HRMPRECIOSEGURO_OBTENERLISTADO_PORIDCLIENTE, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_dnm_Modelo_Obtener.id };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_dnm_Modelo_Obtener.HRM_PrecioSeguro = (List<HRM_PrecioSeguro>)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[31] = true;
            }
        }

        private void Obtener_Contratos_IdCliente_Modelo_Obtener()
        {
            List<HRM_Contratos> _lst = null;
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_HERMES + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_HERMES + "." + Variables.G_STR_LIBRERIA_DATOSHERMES);
                //creamos la instancia
                var obj_Clase = Activator.CreateInstance(m_type);
                //Cargamos el metodo solicitado
                MethodInfo obj_MethodInfo = obj_Clase.GetType().GetMethod(Variables.G_STR_LIBRERIA_DATOSHERMES_PROCEDIMIENTO_HRMCONTRATO_OBTENERLISTADO_PORIDCLIENTE, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_dnm_Modelo_Obtener.id };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_dnm_Modelo_Obtener.HRM_Contratos = (List<HRM_Contratos>)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[32] = true;
            }

        }
        #endregion
        #endregion
        public override dynamic Obtener_Registro_PorCampo(string _str_Filtro, string _str_CampoBusqueda, long _lng_idEmpresaSeleccionada, long _lng_idEjercicioActual)
        {
            throw new NotImplementedException();
        }

        #region Para Bolsa
        public List<long> Obtener_Registros_Para_Bolsa(long _lng_idEmpresaSeleccionada,
                                                       long _lng_idEjercicioActual,
                                                       List<string> _lst_CamposConRelacionABuscar,
                                                       Dictionary<string, object> _dct_ListadoFiltros)
        {
            List<long> lst_listado_ids = null;
            List<INTERNO_MAE_Clientes_Bolsa_Listado_Modelo> lst_INTERNO_MAE_Clientes_Bolsa_Listado_Modelo = null;
            Exferia_Entities obj_Exferia_Entities = null;

            try
            {
                obj_Exferia_Entities = new Exferia_Entities();
                obj_Exferia_Entities.Configuration.LazyLoadingEnabled = false;

                //Empresas
                List<long> lst_idEmpresa = Datos_Generales.GEN_Empresas_Devolver_EmpresasCompartidas_SegunFichero(_lng_idEmpresaSeleccionada, typeof(MAE_Clientes).Name);
                string str_Filtros_Empresas = Funciones.Formar_ContenidoIN_ParaConsultaWhere(lst_idEmpresa);

                //Parametros
                List<SqlParameter> lst_Parametros = new List<SqlParameter>();

                string str_SQL =
                 " SELECT " +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.id) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.codigo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.codigo) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.razonSocial) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.razonSocial) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.nombreComercial) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.nombreComercial) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.cif) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.cif) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.telefono1) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.telefono1) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.telefono2) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.telefono2) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.fax) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fax) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.retencion) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.retencion) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.recargo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.recargo) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.fechaAlta) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaAlta) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.fechaBaja) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaBaja) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.riesgo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.riesgo) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.descuentoProntoPago) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.descuentoProntoPago) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.descuentoFinalAlbaran) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.descuentoFinalAlbaran) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.numeroProveedor) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.numeroProveedor) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.albaranValorado) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.albaranValorado) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.noDeclararModelosOficiales) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.noDeclararModelosOficiales) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.noFacturar) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.noFacturar) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.permiteDepositos) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.permiteDepositos) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.aplicarRiesgo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.aplicarRiesgo) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.imprimirDeudaAcumulada) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.imprimirDeudaAcumulada) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.email) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.email) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.web) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.web) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.imprimirDatosCadena) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.imprimirDatosCadena) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.facturarDatosCadena) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.facturarDatosCadena) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.descuentoGeneral) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.descuentoGeneral) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.EAN_Cliente) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.EAN_Cliente) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.EAN_Documento) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.EAN_Documento) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.EAN_Entrega) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.EAN_Entrega) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.criterioCaja) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.criterioCaja) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.tipoDocumento) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.tipoDocumento) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.tipoPrecio) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.tipoPrecio) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.tipoPuntoVerde) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.tipoPuntoVerde) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.formatoFactura) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.formatoFactura) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.modeloFactura) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.modeloFactura) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.diasRiesgo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.diasRiesgo) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.documentosRiesgo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.documentosRiesgo) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.descuentoFinalFactura) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.descuentoFinalFactura) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.imprimir_Trazabilidad) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.imprimir_Trazabilidad) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.infoMicro) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.infoMicro) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.posicionLatitud) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.posicionLatitud) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.posicionLongitud) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.posicionLongitud) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.EAN_Vendedor) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.EAN_Vendedor) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.numeroROPO) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.numeroROPO) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.numeroAplicador) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.numeroAplicador) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.permiteCobrarAlbaran) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.permiteCobrarAlbaran) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.cadena) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.cadena) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.clienteCRM) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.clienteCRM) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.atencionDe) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.atencionDe) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.referenciasFacturas) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.referenciasFacturas) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.enviarPorEmail) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.enviarPorEmail) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.web_Usuario) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.web_Usuario) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.web_Clave) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.web_Clave) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.conversionVolumen) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.conversionVolumen) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.saltoEscala) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.saltoEscala) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.seguro_Porcentaje) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.seguro_Porcentaje) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.seguro_Minimo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.seguro_Minimo) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.comisionReembolso_Porcentaje) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.comisionReembolso_Porcentaje) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.comisionReembolso_Minimo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.comisionReembolso_Minimo) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.comisionReembolso_Maximo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.comisionReembolso_Maximo) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.incrementoRecogida_Porcentaje) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.incrementoRecogida_Porcentaje) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.fechaAltaCRM) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaAltaCRM) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.fechaConversionCRM) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaConversionCRM) + "," +
                           //ids
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.idMayor_CuentaContable) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaContable) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.idFormaPago) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idFormaPago) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.idImpuestoCabecera) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idImpuestoCabecera) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.idEmpresa) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idEmpresa) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.idVendedor) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idVendedor) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.idMayor_CuentaRetencion) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaRetencion) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.idMoneda) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMoneda) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.idMotivoAltaBaja_Alta) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMotivoAltaBaja_Alta) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.idMotivoAltaBaja_Baja) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMotivoAltaBaja_Baja) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.idMayor_CuentaRemesas) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaRemesas) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.idMayor_CuentaContraPartida) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaContraPartida) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.idMayorAuxiliar) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayorAuxiliar) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.idVendedor_Cobrador) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idVendedor_Cobrador) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.idDepartamento) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idDepartamento) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.idTesoreria) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idTesoreria) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.idDelegacion) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idDelegacion) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.idAbonoTipo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idAbonoTipo) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.idPredefinidoCabecera_Ventas) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idPredefinidoCabecera_Ventas) + "," +
                           nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.idPredefinidoCabecera_Cobros) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idPredefinidoCabecera_Cobros) + "," +
                            nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.idPrioridad) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idPrioridad) + "," +
                            nameof(INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.idCliente_Cadena) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idCliente_Cadena) +
                    " FROM " + nameof(MAE_Clientes) +
                    " WHERE " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaBorrado) + " IS NULL AND " +
                            " ( " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idEmpresa) + "=@idEmpresa " +
                                    (
                                        (lst_idEmpresa != null && lst_idEmpresa.Count > 0)
                                            ? (" OR " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idEmpresa) + " in (" + str_Filtros_Empresas + ") ")
                                            : " "
                                    ) +
                                " ) ";

                //Parametros
                object[] arr_Parametros = new object[]
                {
                    new SqlParameter("@idEmpresa", _lng_idEmpresaSeleccionada)
                };

                //Rellenar el Modelo
                lst_INTERNO_MAE_Clientes_Bolsa_Listado_Modelo = obj_Exferia_Entities.Database.SqlQuery<INTERNO_MAE_Clientes_Bolsa_Listado_Modelo>(str_SQL, arr_Parametros).ToList();

                //si no es nulo aplicamos el filtro
                if (lst_INTERNO_MAE_Clientes_Bolsa_Listado_Modelo != null && lst_INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.Count > 0)
                {
                    //Agrego direcciones
                    Agregar_Direcciones_Para_Bolsa(ref lst_INTERNO_MAE_Clientes_Bolsa_Listado_Modelo);

                    //Filtro
                    var obj_Devuelto = lst_INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.AsQueryable().Where(Funciones_Lambda.Formar_EmpresionLambda_Filtrado<INTERNO_MAE_Clientes_Bolsa_Listado_Modelo>(_dct_ListadoFiltros, new ABS_Bolsa_MAE_Clientes()));
                    if (obj_Devuelto != null && obj_Devuelto.Count() > 0)
                    {
                        lst_listado_ids = obj_Devuelto.Select(m => m.id).ToList();
                    }
                }
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(Obtener_Registros_Para_Bolsa), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
            return lst_listado_ids;
        }
        private void Agregar_Direcciones_Para_Bolsa(ref List<INTERNO_MAE_Clientes_Bolsa_Listado_Modelo> _lst_INTERNO_MAE_Clientes_Bolsa_Listado_Modelo)
        {
            try
            {
                List<long> lst_ids = _lst_INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.Select(m => m.id).ToList();

                //Buscar datos de direccion de envio ##################################################################
                List<GEN_Direcciones> lst_Direcciones_Envio = Datos_Generales.GEN_Direcciones_Obtener_Modelo_Listado_Por_IdsClienteTipoDireccion(lst_ids,
                                                                                                                                    Variables.G_STR_TIPODIRECCION_ENVIO,
                                                                                                                                    false,
                                                                                                                                    false,
                                                                                                                                    false,
                                                                                                                                    false,
                                                                                                                                    false);


                //######################################################################################

                //Buscar datos de direccion de fACTURACION ##################################################################
                List<GEN_Direcciones> lst_Direcciones_Facturacion = Datos_Generales.GEN_Direcciones_Obtener_Modelo_Listado_Por_IdsClienteTipoDireccion(lst_ids,
                                                                                                                                    Variables.G_STR_TIPODIRECCION_FACTURACION,
                                                                                                                                        false,
                                                                                                                                        false,
                                                                                                                                        false,
                                                                                                                                        false,
                                                                                                                                        false);


                //######################################################################################

                //Buscar datos de direccion de Fiscal ##################################################################
                List<GEN_Direcciones> lst_Direcciones_Fiscal = Datos_Generales.GEN_Direcciones_Obtener_Modelo_Listado_Por_IdsClienteTipoDireccion(lst_ids,
                                                                                                                                    Variables.G_STR_TIPODIRECCION_FISCAL,
                                                                                                                                    false,
                                                                                                                                    false,
                                                                                                                                    false,
                                                                                                                                    false,
                                                                                                                                    false);


                //######################################################################################


                //Rellenar el Listado
                foreach (INTERNO_MAE_Clientes_Bolsa_Listado_Modelo mdl_INTERNO_MAE_Clientes_Bolsa_Listado_Modelo in _lst_INTERNO_MAE_Clientes_Bolsa_Listado_Modelo)
                {
                    //Direccion de Envio
                    if (lst_Direcciones_Envio != null &&
                        lst_Direcciones_Envio.Count > 0)
                    {
                        mdl_INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.DireccionEnvio = lst_Direcciones_Envio.Where(m => m.idCliente != null && m.idCliente.Value.Equals(mdl_INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.id)).FirstOrDefault();
                    }

                    //Direccion de Facturacion
                    if (lst_Direcciones_Facturacion != null &&
                        lst_Direcciones_Facturacion.Count > 0)
                    {
                        mdl_INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.DireccionFacturacion = lst_Direcciones_Facturacion.Where(m => m.idCliente != null && m.idCliente.Value.Equals(mdl_INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.id)).FirstOrDefault();
                    }

                    //Direccion de Fiscal
                    if (lst_Direcciones_Fiscal != null &&
                        lst_Direcciones_Fiscal.Count > 0)
                    {
                        mdl_INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.DireccionFiscal = lst_Direcciones_Fiscal.Where(m => m.idCliente != null && m.idCliente.Value.Equals(mdl_INTERNO_MAE_Clientes_Bolsa_Listado_Modelo.id)).FirstOrDefault();
                    }
                }
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(Agregar_Direcciones_Para_Bolsa), true);
            }
        }
        #endregion

        public long? Obtener_IdMayor_CuentaContable(long _lng_id)
        {
            Exferia_Entities obj_Exferia_Entities = null;
            long? lng_idMayor_CuentaContable = null;

            try
            {
                obj_Exferia_Entities = new Exferia_Entities();
                obj_Exferia_Entities.Configuration.LazyLoadingEnabled = false;

                string str_SQL =
                " SELECT " + nameof(MAE_Clientes.idMayor_CuentaContable) +
                " FROM " + nameof(MAE_Clientes) +
                " WHERE " + nameof(MAE_Clientes.fechaBorrado) + " IS NULL AND " +
                           nameof(MAE_Clientes.id) + "=@id ";

                //Parametros
                object[] arr_Parametros = new object[]
                {
                     new SqlParameter("@id",  _lng_id)
                };

                //Rellenar el Modelo
                lng_idMayor_CuentaContable = obj_Exferia_Entities.Database.SqlQuery<long?>(str_SQL, arr_Parametros).FirstOrDefault();
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(Obtener_IdMayor_CuentaContable), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
            return lng_idMayor_CuentaContable;
        }

        public List<long> Obtener_Por_idCliente_Cadena(long _lng_idCliente_Cadena)
        {
            Exferia_Entities obj_Exferia_Entities = null;
            List<long> lst_idClientes = null;

            try
            {
                obj_Exferia_Entities = new Exferia_Entities();
                obj_Exferia_Entities.Configuration.LazyLoadingEnabled = false;

                string str_SQL =
                " SELECT " + nameof(MAE_Clientes.id) +
                " FROM " + nameof(MAE_Clientes) +
                " WHERE " + nameof(MAE_Clientes.fechaBorrado) + " IS NULL AND " +
                           nameof(MAE_Clientes.idCliente_Cadena) + "=@idCliente_Cadena ";

                //Parametros
                object[] arr_Parametros = new object[]
                {
                     new SqlParameter("@idCliente_Cadena",  _lng_idCliente_Cadena)
                };

                //Rellenar el Modelo
                lst_idClientes = obj_Exferia_Entities.Database.SqlQuery<long>(str_SQL, arr_Parametros).ToList();
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(Obtener_Por_idCliente_Cadena), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
            return lst_idClientes;
        }

        #region Para Para Cadena

        public List<dynamic> Obtener_Registros_Para_Cadena(long _lng_id,
                                                        long? _lng_idCliente_Actual,
                                                        long _lng_idEmpresaSeleccionada,
                                                        List<string> _lst_CamposConRelacionABuscar,
                                                        Dictionary<string, object> _dct_ListadoFiltros)
        {
            List<dynamic> lst_Final = null;
            List<INTERNO_MAE_Clientes_Listado_Modelo> lst_INTERNO_MAE_Clientes_Listado_Modelo = null;
            Exferia_Entities obj_Exferia_Entities = null;

            try
            {
                obj_Exferia_Entities = new Exferia_Entities();
                obj_Exferia_Entities.Configuration.LazyLoadingEnabled = false;

                //Empresas
                List<long> lst_idEmpresa = Datos_Generales.GEN_Empresas_Devolver_EmpresasCompartidas_SegunFichero(_lng_idEmpresaSeleccionada, typeof(MAE_Clientes).Name);
                string str_Filtros_Empresas = Funciones.Formar_ContenidoIN_ParaConsultaWhere(lst_idEmpresa);

                string str_SQL =
                      " SELECT " +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.id) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.codigo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.codigo) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.razonSocial) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.razonSocial) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.nombreComercial) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.nombreComercial) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.cif) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.cif) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.telefono1) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.telefono1) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.telefono2) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.telefono2) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.fax) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fax) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idFormaPago) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idFormaPago) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.retencion) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.retencion) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.recargo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.recargo) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.fechaAlta) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaAlta) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.fechaBaja) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaBaja) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.riesgo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.riesgo) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.descuentoProntoPago) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.descuentoProntoPago) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.descuentoFinalAlbaran) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.descuentoFinalAlbaran) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.numeroProveedor) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.numeroProveedor) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.albaranValorado) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.albaranValorado) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.noDeclararModelosOficiales) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.noDeclararModelosOficiales) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.noFacturar) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.noFacturar) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.permiteDepositos) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.permiteDepositos) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.aplicarRiesgo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.aplicarRiesgo) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.imprimirDeudaAcumulada) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.imprimirDeudaAcumulada) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.email) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.email) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.web) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.web) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.imprimirDatosCadena) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.imprimirDatosCadena) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.facturarDatosCadena) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.facturarDatosCadena) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.descuentoGeneral) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.descuentoGeneral) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.EAN_Cliente) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.EAN_Cliente) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.EAN_Documento) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.EAN_Documento) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.EAN_Entrega) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.EAN_Entrega) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.criterioCaja) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.criterioCaja) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.tipoDocumento) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.tipoDocumento) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.tipoPrecio) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.tipoPrecio) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.tipoPuntoVerde) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.tipoPuntoVerde) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.formatoFactura) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.formatoFactura) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.modeloFactura) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.modeloFactura) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.diasRiesgo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.diasRiesgo) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.documentosRiesgo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.documentosRiesgo) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.descuentoFinalFactura) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.descuentoFinalFactura) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.imprimir_Trazabilidad) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.imprimir_Trazabilidad) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.infoMicro) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.infoMicro) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.posicionLatitud) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.posicionLatitud) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.posicionLongitud) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.posicionLongitud) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.EAN_Vendedor) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.EAN_Vendedor) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.numeroROPO) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.numeroROPO) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.numeroAplicador) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.numeroAplicador) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.fechaBorrado) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaBorrado) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.zoom) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.zoom) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.tipoMapa) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.tipoMapa) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.permiteCobrarAlbaran) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.permiteCobrarAlbaran) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.cadena) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.cadena) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.clienteCRM) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.clienteCRM) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.atencionDe) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.atencionDe) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.referenciasFacturas) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.referenciasFacturas) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.enviarPorEmail) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.enviarPorEmail) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.web_Usuario) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.web_Usuario) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.web_Clave) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.web_Clave) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.conversionVolumen) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.conversionVolumen) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.saltoEscala) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.saltoEscala) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.seguro_Porcentaje) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.seguro_Porcentaje) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.seguro_Minimo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.seguro_Minimo) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.comisionReembolso_Porcentaje) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.comisionReembolso_Porcentaje) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.comisionReembolso_Minimo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.comisionReembolso_Minimo) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.comisionReembolso_Maximo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.comisionReembolso_Maximo) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.incrementoRecogida_Porcentaje) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.incrementoRecogida_Porcentaje) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.fechaAltaCRM) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaAltaCRM) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.fechaConversionCRM) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaConversionCRM) + "," +
                          //ids
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idImpuestoCabecera) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idImpuestoCabecera) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idEmpresa) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idEmpresa) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idVendedor) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idVendedor) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idMayor_CuentaContable) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaContable) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idMayor_CuentaContraPartida) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaContraPartida) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idMayor_CuentaRetencion) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaRetencion) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idMayor_CuentaRemesas) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaRemesas) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idMayorAuxiliar) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayorAuxiliar) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idMoneda) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMoneda) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idMotivoAltaBaja_Alta) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMotivoAltaBaja_Alta) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idMotivoAltaBaja_Baja) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMotivoAltaBaja_Baja) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idVendedor_Cobrador) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idVendedor_Cobrador) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idDepartamento) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idDepartamento) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idTesoreria) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idTesoreria) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idDelegacion) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idDelegacion) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idAbonoTipo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idAbonoTipo) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idPredefinidoCabecera_Ventas) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idPredefinidoCabecera_Ventas) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idPredefinidoCabecera_Cobros) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idPredefinidoCabecera_Cobros) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idPrioridad) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idPrioridad) + "," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.Bolsa) + " = (CASE WHEN MAE_Clientes_Bolsa_Filtrado." + nameof(MAE_Clientes_Bolsa.id) + " > -1 THEN convert(bit,1) ELSE convert(bit,0) END)," +
                          nameof(INTERNO_MAE_Clientes_Listado_Modelo.idCliente_Cadena) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idCliente_Cadena) + "," +
                            //Empresa
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Empresa)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Empresa_Codigo) + " = " + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Empresa_Descripcion) + " =" + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Empresa_FechaBorrado) + " =" + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Empresa_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Empresa_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Empresa_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //FormaPago
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.FormaPago)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.FormaPago_Codigo) + " = " + nameof(MAE_FormasPago) + "." + nameof(MAE_FormasPago.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.FormaPago_Descripcion) + " =" + nameof(MAE_FormasPago) + "." + nameof(MAE_FormasPago.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.FormaPago_FechaBorrado) + " =" + nameof(MAE_FormasPago) + "." + nameof(MAE_FormasPago.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.FormaPago_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.FormaPago_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.FormaPago_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //Mayor_CuentaContable
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContable)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContable_Codigo) + " = AUX_1." + nameof(CTA_Mayor.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContable_Descripcion) + " = AUX_1." + nameof(CTA_Mayor.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContable_FechaBorrado) + " = AUX_1." + nameof(CTA_Mayor.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContable_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContable_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContable_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //MayorCuentaRetencion
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorCuentaRetencion)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorCuentaRetencion_Codigo) + " = AUX_2." + nameof(CTA_Mayor.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorCuentaRetencion_Descripcion) + " = AUX_2." + nameof(CTA_Mayor.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorCuentaRetencion_FechaBorrado) + " = AUX_2." + nameof(CTA_Mayor.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorCuentaRetencion_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorCuentaRetencion_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorCuentaRetencion_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //ImpuestoCabecera
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.ImpuestoCabecera)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ImpuestoCabecera_Codigo) + " = " + nameof(GEN_ImpuestosCabecera) + "." + nameof(GEN_ImpuestosCabecera.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ImpuestoCabecera_Descripcion) + " =" + nameof(GEN_ImpuestosCabecera) + "." + nameof(GEN_ImpuestosCabecera.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ImpuestoCabecera_FechaBorrado) + " =" + nameof(GEN_ImpuestosCabecera) + "." + nameof(GEN_ImpuestosCabecera.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ImpuestoCabecera_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ImpuestoCabecera_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ImpuestoCabecera_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //Vendedor
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Vendedor)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Vendedor_Codigo) + " = AUX_3." + nameof(MAE_Vendedores.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Vendedor_Nombre) + " = AUX_3." + nameof(MAE_Vendedores.nombre) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Vendedor_FechaBorrado) + " = AUX_3." + nameof(MAE_Vendedores.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Vendedor_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Vendedor_Nombre) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Vendedor_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //Moneda
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Moneda)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Moneda_Codigo) + " = " + nameof(GEN_Monedas) + "." + nameof(GEN_Monedas.moneda) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Moneda_Descripcion) + " =" + nameof(GEN_Monedas) + "." + nameof(GEN_Monedas.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Moneda_FechaBorrado) + " =" + nameof(GEN_Monedas) + "." + nameof(GEN_Monedas.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Moneda_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Moneda_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Moneda_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //MotivoAlta
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoAlta)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoAlta_Codigo) + " = AUX_4." + nameof(MAE_MotivosAltaBaja.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoAlta_Descripcion) + " = AUX_4." + nameof(MAE_MotivosAltaBaja.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoAlta_FechaBorrado) + " = AUX_4." + nameof(MAE_MotivosAltaBaja.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoAlta_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoAlta_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoAlta_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //MotivoBaja
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoBaja)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoBaja_Codigo) + " = AUX_5." + nameof(MAE_MotivosAltaBaja.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoBaja_Descripcion) + " = AUX_5." + nameof(MAE_MotivosAltaBaja.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoBaja_FechaBorrado) + " = AUX_5." + nameof(MAE_MotivosAltaBaja.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoBaja_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoBaja_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoBaja_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //Mayor_CuentaRemesas
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaRemesa)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaRemesa_Codigo) + " = AUX_6." + nameof(CTA_Mayor.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaRemesa_Descripcion) + " = AUX_6." + nameof(CTA_Mayor.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaRemesa_FechaBorrado) + " = AUX_6." + nameof(CTA_Mayor.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaRemesa_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaRemesa_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaRemesa_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //Mayor_CuentaContraPartida
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContraPartida)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContraPartida_Codigo) + " = AUX_7." + nameof(CTA_Mayor.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContraPartida_Descripcion) + " = AUX_7." + nameof(CTA_Mayor.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContraPartida_FechaBorrado) + " = AUX_7." + nameof(CTA_Mayor.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContraPartida_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContraPartida_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContraPartida_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //MayorAuxiliar
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorAuxiliar)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorAuxiliar_Codigo) + " = " + nameof(CTA_MayorAuxiliar) + "." + nameof(CTA_MayorAuxiliar.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorAuxiliar_Descripcion) + " =" + nameof(CTA_MayorAuxiliar) + "." + nameof(CTA_MayorAuxiliar.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorAuxiliar_FechaBorrado) + " =" + nameof(CTA_MayorAuxiliar) + "." + nameof(CTA_MayorAuxiliar.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorAuxiliar_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorAuxiliar_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorAuxiliar_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //Cobrador
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Cobrador)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Cobrador_Codigo) + " = AUX_8." + nameof(MAE_Vendedores.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Cobrador_Nombre) + " = AUX_8." + nameof(MAE_Vendedores.nombre) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Cobrador_FechaBorrado) + " = AUX_8." + nameof(MAE_Vendedores.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Cobrador_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Cobrador_Nombre) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Cobrador_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //Departamento
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Departamento)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Departamento_Codigo) + " = " + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Departamento_Descripcion) + " =" + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Departamento_FechaBorrado) + " =" + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Departamento_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Departamento_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Departamento_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //Tesoreria
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Tesoreria)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Tesoreria_Codigo) + " = " + nameof(MAE_Tesorerias) + "." + nameof(MAE_Tesorerias.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Tesoreria_Descripcion) + " =" + nameof(MAE_Tesorerias) + "." + nameof(MAE_Tesorerias.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Tesoreria_FechaBorrado) + " =" + nameof(MAE_Tesorerias) + "." + nameof(MAE_Tesorerias.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Tesoreria_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Tesoreria_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Tesoreria_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //Delegacion
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Delegacion)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Delegacion_Codigo) + " = " + nameof(GEN_Delegaciones) + "." + nameof(GEN_Delegaciones.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Delegacion_Descripcion) + " =" + nameof(GEN_Delegaciones) + "." + nameof(GEN_Delegaciones.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Delegacion_FechaBorrado) + " =" + nameof(GEN_Delegaciones) + "." + nameof(GEN_Delegaciones.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Delegacion_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Delegacion_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Delegacion_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //AbonosTipos
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.AbonosTipos)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.AbonosTipos_Codigo) + " = " + nameof(MAE_AbonosTipos) + "." + nameof(MAE_AbonosTipos.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.AbonosTipos_Descripcion) + " =" + nameof(MAE_AbonosTipos) + "." + nameof(MAE_AbonosTipos.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.AbonosTipos_FechaBorrado) + " =" + nameof(MAE_AbonosTipos) + "." + nameof(MAE_AbonosTipos.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.AbonosTipos_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.AbonosTipos_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.AbonosTipos_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //PredefinidosVenta
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosVenta)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosVenta_Codigo) + " = AUX_9." + nameof(CTA_PredefinidosCabeceras.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosVenta_Descripcion) + " = AUX_9." + nameof(CTA_PredefinidosCabeceras.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosVenta_FechaBorrado) + " = AUX_9." + nameof(CTA_PredefinidosCabeceras.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosVenta_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosVenta_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosVenta_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //PredefinidosCompra
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosCompra)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosCompra_Codigo) + " = AUX_10." + nameof(CTA_PredefinidosCabeceras.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosCompra_Descripcion) + " = AUX_10." + nameof(CTA_PredefinidosCabeceras.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosCompra_FechaBorrado) + " = AUX_10." + nameof(CTA_PredefinidosCabeceras.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosCompra_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosCompra_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosCompra_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //Prioridad
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Prioridad)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Prioridad_Codigo) + " = " + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Prioridad_Descripcion) + " = " + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.descripcion) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Prioridad_FechaBorrado) + " = " + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.fechaBorrado) + ","
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Prioridad_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Prioridad_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.Prioridad_FechaBorrado) + " = NULL, "
                                    )
                            ) +
                            //Cadena(Cliente)
                            (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.ClienteCadena)))
                                ?
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ClienteCadena_Codigo) + " = " + nameof(MAE_Clientes) + "_Cadena." + nameof(MAE_Clientes.codigo) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ClienteCadena_Descripcion) + " = " + nameof(MAE_Clientes) + "_Cadena." + nameof(MAE_Clientes.razonSocial) + "," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ClienteCadena_FechaBorrado) + " = " + nameof(MAE_Clientes) + "_Cadena." + nameof(MAE_Clientes.fechaBorrado)
                                    )
                                :
                                    (
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ClienteCadena_Codigo) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ClienteCadena_Descripcion) + " = ''," +
                                        nameof(INTERNO_MAE_Clientes_Listado_Modelo.ClienteCadena_FechaBorrado) + " = NULL "
                                    )
                            ) +
                        " FROM " + nameof(MAE_Clientes) +
                            //Empresa
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Empresa)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(GEN_Empresas) + " ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idEmpresa) + " = " + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.id)
                                        )
                                    : ("")
                            ) +
                            //FormaPago
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.FormaPago)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(MAE_FormasPago) + " ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idFormaPago) + " = " + nameof(MAE_FormasPago) + "." + nameof(MAE_FormasPago.id)
                                        )
                                    : ("")
                            ) +
                            //Mayor_CuentaContable
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContable)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(CTA_Mayor) + " AS AUX_1 ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaContable) + " = AUX_1." + nameof(CTA_Mayor.id)
                                        )
                                    : ("")
                            ) +
                            //MayorCuentaRetencion
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorCuentaRetencion)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(CTA_Mayor) + " AS AUX_2 ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaRetencion) + " = AUX_2." + nameof(CTA_Mayor.id)
                                        )
                                    : ("")
                            ) +
                            //ImpuestoCabecera
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.ImpuestoCabecera)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(GEN_ImpuestosCabecera) + " ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idImpuestoCabecera) + " = " + nameof(GEN_ImpuestosCabecera) + "." + nameof(GEN_ImpuestosCabecera.id)
                                        )
                                    : ("")
                            ) +
                            //Vendedor
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Vendedor)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(MAE_Vendedores) + " AS AUX_3  ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idVendedor) + " = AUX_3." + nameof(MAE_Vendedores.id)
                                        )
                                    : ("")
                            ) +
                            //Moneda
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Moneda)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(GEN_Monedas) + " ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMoneda) + " = " + nameof(GEN_Monedas) + "." + nameof(GEN_Monedas.id)
                                        )
                                    : ("")
                            ) +
                            //MotivoAlta
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoAlta)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(MAE_MotivosAltaBaja) + " AS AUX_4 ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMotivoAltaBaja_Alta) + " = AUX_4." + nameof(MAE_MotivosAltaBaja.id)
                                        )
                                    : ("")
                            ) +
                            //MotivoBaja
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.MotivoBaja)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(MAE_MotivosAltaBaja) + " AS AUX_5 ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMotivoAltaBaja_Baja) + " = AUX_5." + nameof(MAE_MotivosAltaBaja.id)
                                        )
                                    : ("")
                            ) +
                            //Mayor_CuentaRemesas
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaRemesa)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(CTA_Mayor) + " AS AUX_6 ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaRemesas) + " = AUX_6." + nameof(CTA_Mayor.id)
                                        )
                                    : ("")
                            ) +
                            //Mayor_CuentaContraPartida
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Mayor_CuentaContraPartida)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(CTA_Mayor) + " AS AUX_7 ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaContraPartida) + " = AUX_7." + nameof(CTA_Mayor.id)
                                        )
                                    : ("")
                            ) +
                            //MayorAuxiliar
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.MayorAuxiliar)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(CTA_MayorAuxiliar) + " ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayorAuxiliar) + " = " + nameof(CTA_MayorAuxiliar) + "." + nameof(CTA_MayorAuxiliar.id)
                                        )
                                    : ("")
                            ) +
                            //Cobrador
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Cobrador)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(MAE_Vendedores) + " AS AUX_8 ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idVendedor_Cobrador) + " = AUX_8." + nameof(MAE_Vendedores.id)
                                        )
                                    : ("")
                            ) +
                            //Departamento
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Departamento)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(CTA_Departamentos) + " ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idDepartamento) + " = " + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.id)
                                        )
                                    : ("")
                            ) +
                            //Tesoreria
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Tesoreria)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(MAE_Tesorerias) + " ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idTesoreria) + " = " + nameof(MAE_Tesorerias) + "." + nameof(MAE_Tesorerias.id)
                                        )
                                    : ("")
                            ) +
                            //Delegacion
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Delegacion)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(GEN_Delegaciones) + " ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idDelegacion) + " = " + nameof(GEN_Delegaciones) + "." + nameof(GEN_Delegaciones.id)
                                        )
                                    : ("")
                            ) +
                            //AbonosTipos
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.AbonosTipos)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(MAE_AbonosTipos) + " ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idAbonoTipo) + " = " + nameof(MAE_AbonosTipos) + "." + nameof(MAE_AbonosTipos.id)
                                        )
                                    : ("")
                            ) +
                            //PredefinidosVenta
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosVenta)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(CTA_PredefinidosCabeceras) + " AS AUX_9 ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idPredefinidoCabecera_Ventas) + " = AUX_9." + nameof(CTA_PredefinidosCabeceras.id)
                                        )
                                    : ("")
                            ) +
                            //PredefinidosCompra
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.PredefinidosCompra)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(CTA_PredefinidosCabeceras) + " AS AUX_10 ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idPredefinidoCabecera_Cobros) + " = AUX_10." + nameof(CTA_PredefinidosCabeceras.id)
                                        )
                                    : ("")
                            ) +
                            //Prioridad
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.Prioridad)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(MAE_Prioridades) + " ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idPredefinidoCabecera_Ventas) + " = " + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.id)
                                        )
                                    : ("")
                            ) +
                            //Cadena(Cliente)
                            (
                                 (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MAE_Clientes_Listado_Modelo.ClienteCadena)))
                                    ?
                                        (
                                         " LEFT JOIN " + nameof(MAE_Clientes) + " AS " + nameof(MAE_Clientes) + "_Cadena ON " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idCliente_Cadena) + " = " + nameof(MAE_Clientes) + "_Cadena." + nameof(MAE_Clientes.id)
                                        )
                                    : ("")
                            ) +
                        //CLIENTE_BOLSA
                        " LEFT JOIN ( " +
                                    "SELECT " +
                                        nameof(MAE_Clientes_Bolsa) + "." + nameof(MAE_Clientes_Bolsa.id) + "," +
                                        nameof(MAE_Clientes_Bolsa) + "." + nameof(MAE_Clientes_Bolsa.idUsuario) + "," +
                                        nameof(MAE_Clientes_Bolsa) + "." + nameof(MAE_Clientes_Bolsa.idCliente) +
                                    " FROM " + nameof(MAE_Clientes_Bolsa) +
                                    " WHERE " + nameof(MAE_Clientes_Bolsa) + "." + nameof(MAE_Clientes_Bolsa.idUsuario) + "=" + Variables.G_MDL_USUARIOVALIDADO_MODELO.id +
                                  " ) AS MAE_Clientes_Bolsa_Filtrado ON MAE_Clientes_Bolsa_Filtrado." + nameof(MAE_Clientes_Bolsa.idCliente) + "=" + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id) +
                        " WHERE " +
                                //FechaBorrado
                                nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaBorrado) + " IS null AND " +
                                //No sean Cadena
                                " ( " +
                                    nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.cadena) + " IS null OR " +
                                    nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.cadena) + " =0  " +
                                " ) AND " +
                                //No esten en otras cadenas ya seleccionados
                                " ( " +
                                    nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idCliente_Cadena) + " IS null " +
                                   (
                                    _lng_idCliente_Actual != null
                                        ? " OR " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idCliente_Cadena) + " = " + _lng_idCliente_Actual.Value
                                        : " "
                                    ) +
                                " ) AND " +
                                //El cliente actual no deberia aparecer
                                " ( " +
                                    (
                                        _lng_idCliente_Actual != null
                                            ? (nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id) + " <> " + _lng_idCliente_Actual.Value)
                                            : (" 1=1 ")
                                    ) +
                                " ) AND " +
                               //Empresa
                               " ( " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idEmpresa) + "=@idEmpresa " +
                                    (
                                        (lst_idEmpresa != null && lst_idEmpresa.Count > 0)
                                            ? (" OR " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idEmpresa) + " in (" + str_Filtros_Empresas + ") ")
                                            : " "
                                    ) +
                                " )  AND " +
                                //id
                                (
                                    (_lng_id > -1)
                                        ? (nameof(MAE_Clientes) + "." + (nameof(MAE_Clientes.id) + "=@id"))
                                        : ("1 = 1")
                                );

                //Parametros
                List<SqlParameter> lst_Parametros = new List<SqlParameter>();

                lst_Parametros.Add(new SqlParameter("@id", _lng_id));
                lst_Parametros.Add(new SqlParameter("@idEmpresa", _lng_idEmpresaSeleccionada));

                object[] arr_Parametros = lst_Parametros.ToArray();

                //Rellenar el Modelo
                lst_INTERNO_MAE_Clientes_Listado_Modelo = obj_Exferia_Entities.Database.SqlQuery<INTERNO_MAE_Clientes_Listado_Modelo>(str_SQL, arr_Parametros).ToList();

                //Direcciones
                if (lst_INTERNO_MAE_Clientes_Listado_Modelo != null && lst_INTERNO_MAE_Clientes_Listado_Modelo.Count > 0)
                {
                    Agregar_Direcciones_Para_Cadena(ref lst_INTERNO_MAE_Clientes_Listado_Modelo);

                    //transformar a Dynamic
                    lst_Final = lst_INTERNO_MAE_Clientes_Listado_Modelo.Cast<dynamic>().ToList();
                }

            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(Obtener_Registros_Para_Cadena), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
            return lst_Final;
        }
        private void Agregar_Direcciones_Para_Cadena(ref List<INTERNO_MAE_Clientes_Listado_Modelo> _lst_INTERNO_MAE_Clientes_Listado_Modelo)
        {
            try
            {
                List<long> lst_ids = _lst_INTERNO_MAE_Clientes_Listado_Modelo.Select(m => m.id).ToList();

                //Buscar datos de direccion de envio ##################################################################
                List<GEN_Direcciones> lst_Direcciones_Envio = Datos_Generales.GEN_Direcciones_Obtener_Modelo_Listado_Por_IdsClienteTipoDireccion(lst_ids,
                                                                                                                                    Variables.G_STR_TIPODIRECCION_ENVIO,
                                                                                                                                    false,
                                                                                                                                    false,
                                                                                                                                    false,
                                                                                                                                    false,
                                                                                                                                    false);


                //######################################################################################

                //Buscar datos de direccion de fACTURACION ##################################################################
                List<GEN_Direcciones> lst_Direcciones_Facturacion = Datos_Generales.GEN_Direcciones_Obtener_Modelo_Listado_Por_IdsClienteTipoDireccion(lst_ids,
                                                                                                                                    Variables.G_STR_TIPODIRECCION_FACTURACION,
                                                                                                                                        false,
                                                                                                                                        false,
                                                                                                                                        false,
                                                                                                                                        false,
                                                                                                                                        false);


                //######################################################################################

                //Buscar datos de direccion de Fiscal ##################################################################
                List<GEN_Direcciones> lst_Direcciones_Fiscal = Datos_Generales.GEN_Direcciones_Obtener_Modelo_Listado_Por_IdsClienteTipoDireccion(lst_ids,
                                                                                                                                    Variables.G_STR_TIPODIRECCION_FISCAL,
                                                                                                                                    false,
                                                                                                                                    false,
                                                                                                                                    false,
                                                                                                                                    false,
                                                                                                                                    false);


                //######################################################################################


                //Rellenar el Listado
                foreach (INTERNO_MAE_Clientes_Listado_Modelo mdl_INTERNO_MAE_Clientes_Listado_Modelo in _lst_INTERNO_MAE_Clientes_Listado_Modelo)
                {
                    //Direccion de Envio
                    if (lst_Direcciones_Envio != null &&
                        lst_Direcciones_Envio.Count > 0)
                    {
                        mdl_INTERNO_MAE_Clientes_Listado_Modelo.DireccionEnvio = lst_Direcciones_Envio.Where(m => m.idCliente != null && m.idCliente.Value.Equals(mdl_INTERNO_MAE_Clientes_Listado_Modelo.id)).FirstOrDefault();
                    }

                    //Direccion de Facturacion
                    if (lst_Direcciones_Facturacion != null &&
                        lst_Direcciones_Facturacion.Count > 0)
                    {
                        mdl_INTERNO_MAE_Clientes_Listado_Modelo.DireccionFacturacion = lst_Direcciones_Facturacion.Where(m => m.idCliente != null && m.idCliente.Value.Equals(mdl_INTERNO_MAE_Clientes_Listado_Modelo.id)).FirstOrDefault();
                    }

                    //Direccion de Fiscal
                    if (lst_Direcciones_Fiscal != null &&
                        lst_Direcciones_Fiscal.Count > 0)
                    {
                        mdl_INTERNO_MAE_Clientes_Listado_Modelo.DireccionFiscal = lst_Direcciones_Fiscal.Where(m => m.idCliente != null && m.idCliente.Value.Equals(mdl_INTERNO_MAE_Clientes_Listado_Modelo.id)).FirstOrDefault();
                    }
                }
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(Agregar_Direcciones_Para_Cadena), true);
            }
        }
        #endregion

        #region Para Listado
        public List<INTERNO_MAE_Clientes_ListadoSimple_Modelo> Obtener_ParaListadoSimple()
        {
            List<INTERNO_MAE_Clientes_ListadoSimple_Modelo> lst_INTERNO_MAE_Clientes_ListadoSimple_Modelo = null;
            Exferia_Entities obj_Exferia_Entities = null;

            try
            {
                obj_Exferia_Entities = new Exferia_Entities();
                obj_Exferia_Entities.Configuration.LazyLoadingEnabled = false;

                string str_SQL =
                 " SELECT " +
                         nameof(INTERNO_MAE_Clientes_ListadoSimple_Modelo.Id) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id) + "," +
                         nameof(INTERNO_MAE_Clientes_ListadoSimple_Modelo.Codigo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.codigo) + "," +
                         nameof(INTERNO_MAE_Clientes_ListadoSimple_Modelo.RazonSocial) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.razonSocial) + "," +
                         nameof(INTERNO_MAE_Clientes_ListadoSimple_Modelo.NombreComercial) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.nombreComercial) + "," +
                         nameof(INTERNO_MAE_Clientes_ListadoSimple_Modelo.FechaBaja) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaBaja) + "," +
                         nameof(INTERNO_MAE_Clientes_ListadoSimple_Modelo.Bolsa) + " = (CASE WHEN MAE_Clientes_Bolsa_Filtrado." + nameof(MAE_Clientes.id) + " > -1 THEN convert(bit,1) ELSE convert(bit,0) END) " +
                    " FROM " + nameof(MAE_Clientes) +
                    //CLIENTES_BOLSA
                    " LEFT JOIN ( " +
                            "SELECT " +
                                nameof(MAE_Clientes_Bolsa) + "." + nameof(MAE_Clientes_Bolsa.id) + "," +
                                nameof(MAE_Clientes_Bolsa) + "." + nameof(MAE_Clientes_Bolsa.idUsuario) + "," +
                                nameof(MAE_Clientes_Bolsa) + "." + nameof(MAE_Clientes_Bolsa.idCliente) +
                            " FROM " + nameof(MAE_Clientes_Bolsa) +
                            " WHERE " + nameof(MAE_Clientes_Bolsa) + "." + nameof(MAE_Clientes_Bolsa.idUsuario) + "=" + Variables.G_MDL_USUARIOVALIDADO_MODELO.id +
                            " ) AS MAE_Clientes_Bolsa_Filtrado ON MAE_Clientes_Bolsa_Filtrado." + nameof(MAE_Clientes_Bolsa.idCliente) + "=" + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id) +
                    " WHERE " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaBorrado) + " IS NULL ";

                //Rellenar el Modelo
                lst_INTERNO_MAE_Clientes_ListadoSimple_Modelo = obj_Exferia_Entities.Database.SqlQuery<INTERNO_MAE_Clientes_ListadoSimple_Modelo>(str_SQL).ToList();
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(Obtener_ParaListadoSimple), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
            return lst_INTERNO_MAE_Clientes_ListadoSimple_Modelo;
        }

        #endregion
        #endregion

        #region MODELOS

        #region Modelo Simple
        private MAE_Clientes g_mdl_MAE_Clientes = null;
        public MAE_Clientes Obtener_Modelo_Por_Id(long _lng_id,
                                                  bool _bol_Cargar_ImpuestoCabecera,
                                                  bool _bol_Cargar_Moneda,
                                                  bool _bol_Cargar_Vendedor,
                                                  bool _bol_Cargar_VendedorCobrador,
                                                  bool _bol_Cargar_FormaPago,
                                                  bool _bol_Cargar_Direcciones,
                                                  bool _bol_Cargar_ClientesTarifas,
                                                  bool _bol_Cargar_ClientesPrecioSeguro)
        {
            try
            {

                string str_SQL = Obtener_Consulta_Modelo() +
                                   //WHERE
                                   " WHERE " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id) + "=@id";

                //Parametros
                object[] arr_Parametros = new object[]
                {
                     new SqlParameter("@id",  _lng_id)
                };

                //Ejecutar y rellenar el modelo
                Ejecutar_Consulta_Modelo(str_SQL,
                                         arr_Parametros,
                                         _bol_Cargar_ImpuestoCabecera,
                                         _bol_Cargar_Moneda,
                                         _bol_Cargar_Vendedor,
                                         _bol_Cargar_VendedorCobrador,
                                         _bol_Cargar_FormaPago,
                                         _bol_Cargar_Direcciones,
                                         true,
                                         _bol_Cargar_ClientesTarifas,
                                         _bol_Cargar_ClientesPrecioSeguro);
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(Obtener_Modelo_Por_Id), true);
            }

            return g_mdl_MAE_Clientes;
        }

        #region Ejecutar Consulta
        private static int g_int_TotalHilos_Modelo = 10;
        private bool[] g_bol_Hilos_Terminados_Modelo = new bool[g_int_TotalHilos_Modelo];

        private void Ejecutar_Consulta_Modelo(string _str_SQL,
                                               object[] _arr_Parametros,
                                               bool _bol_Cargar_ImpuestoCabecera,
                                               bool _bol_Cargar_Moneda,
                                               bool _bol_Cargar_Vendedor,
                                               bool _bol_Cargar_VendedorCobrador,
                                               bool _bol_Cargar_FormaPago,
                                               bool _bol_Cargar_Direcciones,
                                               bool _bol_Cargar_Predefinidos,
                                               bool _bol_Cargar_ClientesTarifas,
                                               bool _bol_Cargar_ClientesPrecioSeguro)
        {
            Exferia_Entities obj_Exferia_Entities = null;

            try
            {
                //Conexion
                obj_Exferia_Entities = new Exferia_Entities();
                obj_Exferia_Entities.Configuration.LazyLoadingEnabled = false;


                //Rellenar el modelo
                g_mdl_MAE_Clientes = obj_Exferia_Entities.Database.SqlQuery<MAE_Clientes>(_str_SQL, _arr_Parametros).FirstOrDefault();

                #region Rellenar Tablas Relacionadas
                if (g_mdl_MAE_Clientes != null)
                {
                    //reiniciar Valores de los hilos
                    for (int int_Contador = 0; int_Contador < g_int_TotalHilos_Modelo; int_Contador++)
                    {
                        g_bol_Hilos_Terminados_Modelo[int_Contador] = false;
                    }

                    //GEN_ImpuestosCabecera ##########################################################################################
                    if (_bol_Cargar_ImpuestoCabecera)
                    {
                        ThreadStart obj_ThreadStart_IMPUESTOSCABECERA = new ThreadStart(Obtener_ImpuestosCabecera_Modelo);
                        Thread obj_Thread_IMPUESTOSCABECERA = new Thread(obj_ThreadStart_IMPUESTOSCABECERA);
                        obj_Thread_IMPUESTOSCABECERA.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Modelo[0] = true;
                    }

                    //GEN_Moneda ##########################################################################################
                    if (_bol_Cargar_Moneda)
                    {
                        ThreadStart obj_ThreadStart_MONEDA = new ThreadStart(Obtener_Moneda_Modelo);
                        Thread obj_Thread_MONEDA = new Thread(obj_ThreadStart_MONEDA);
                        obj_Thread_MONEDA.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Modelo[1] = true;
                    }

                    //MAE_Vendedores ##########################################################################################
                    if (_bol_Cargar_Vendedor &&
                        g_mdl_MAE_Clientes.idVendedor != null)
                    {
                        ThreadStart obj_ThreadStart_VENDEDOR = new ThreadStart(Obtener_Vendedor_Modelo);
                        Thread obj_Thread_VENDEDOR = new Thread(obj_ThreadStart_VENDEDOR);
                        obj_Thread_VENDEDOR.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Modelo[2] = true;
                    }

                    //MAE_VendedoresCobrador ##########################################################################################
                    if (_bol_Cargar_VendedorCobrador &&
                        g_mdl_MAE_Clientes.idVendedor_Cobrador != null)
                    {
                        ThreadStart obj_ThreadStart_VENDEDORCOBRADOR = new ThreadStart(Obtener_VendedorCobrador_Modelo);
                        Thread obj_Thread_VENDEDORCOBRADOR = new Thread(obj_ThreadStart_VENDEDORCOBRADOR);
                        obj_Thread_VENDEDORCOBRADOR.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Modelo[3] = true;
                    }

                    //MAE_FormaPago ##########################################################################################
                    if (_bol_Cargar_FormaPago)
                    {
                        ThreadStart obj_ThreadStart_FORMAPAGO = new ThreadStart(Obtener_FormaPago_Modelo);
                        Thread obj_Thread_FORMAPAGO = new Thread(obj_ThreadStart_FORMAPAGO);
                        obj_Thread_FORMAPAGO.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Modelo[4] = true;
                    }

                    //GEN_Direcciones
                    ThreadStart obj_ThreadStart_DIRECCIONES = new ThreadStart(Obtener_Direcciones_Modelo);
                    Thread obj_Thread_DIRECCIONES = new Thread(obj_ThreadStart_DIRECCIONES);
                    obj_Thread_DIRECCIONES.Start();

                    //CTA_PredefinidosCabeceras(Venta) ##########################################################################################
                    if (_bol_Cargar_Predefinidos && g_mdl_MAE_Clientes.idPredefinidoCabecera_Ventas != null)
                    {
                        ThreadStart obj_ThreadStart_PREDEFINIDO_VENTA = new ThreadStart(Obtener_PredefinidoVenta_Modelo);
                        Thread obj_Thread_PREDEFINIDO_VENTA = new Thread(obj_ThreadStart_PREDEFINIDO_VENTA);
                        obj_Thread_PREDEFINIDO_VENTA.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Modelo[6] = true;
                    }

                    //CTA_PredefinidosCabeceras(Compra) ##########################################################################################
                    if (_bol_Cargar_Predefinidos && g_mdl_MAE_Clientes.idPredefinidoCabecera_Cobros != null)
                    {
                        ThreadStart obj_ThreadStart_PREDEFINIDO_COMPRA = new ThreadStart(Obtener_PredefinidoCompra_Modelo);
                        Thread obj_Thread_PREDEFINIDO_COMPRA = new Thread(obj_ThreadStart_PREDEFINIDO_COMPRA);
                        obj_Thread_PREDEFINIDO_COMPRA.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Modelo[7] = true;
                    }

                    //MAE_Clientes_TarifasCabecera ##########################################################################################
                    if (_bol_Cargar_ClientesTarifas)
                    {
                        ThreadStart obj_ThreadStart_CLIENTETARIFA = new ThreadStart(Obtener_ClienteTarifa_Modelo);
                        Thread obj_Thread_CLIENTETARIFA = new Thread(obj_ThreadStart_CLIENTETARIFA);
                        obj_Thread_CLIENTETARIFA.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Modelo[8] = true;
                    }

                    if (_bol_Cargar_ClientesPrecioSeguro)
                    {
                        //HRM_PrecioSeguro ##########################################################################################
                        ThreadStart obj_ThreadStart_CLIENTESEGUROS = new ThreadStart(Obtener_ClienteSeguros_Modelo);
                        Thread obj_CLIENTESEGUROS = new Thread(obj_ThreadStart_CLIENTESEGUROS);
                        obj_CLIENTESEGUROS.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Modelo[9] = true;
                    }
                    //Esperando a que terminen todos los hilos .........................................
                    bool bol_Termino = false;
                    while (bol_Termino == false)
                    {
                        bol_Termino = true;
                        foreach (bool bol_Termino_Hilo in g_bol_Hilos_Terminados_Modelo)
                        {
                            if (bol_Termino_Hilo == false)
                            {
                                bol_Termino = false;
                                break;
                            }
                        }

                        Thread.Sleep(10);
                    }
                    //.................................................................................
                }

                #endregion
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(Ejecutar_Consulta_Modelo), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
        }

        #region Tablas Relacionadas
        private void Obtener_ImpuestosCabecera_Modelo()
        {
            try
            {
                g_mdl_MAE_Clientes.GEN_ImpuestosCabecera = Datos_Generales.GEN_ImpuestosCabecera_Obtener_Modelo_Por_Id(g_mdl_MAE_Clientes.idImpuestoCabecera);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Modelo[0] = true;
            }
        }
        private void Obtener_Moneda_Modelo()
        {
            try
            {
                g_mdl_MAE_Clientes.GEN_Monedas = Datos_Generales.GEN_Monedas_Obtener_Modelo_Por_Id(g_mdl_MAE_Clientes.idMoneda);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Modelo[1] = true;
            }
        }
        private void Obtener_Vendedor_Modelo()
        {
            try
            {
                MAE_Vendedores_Datos obj_MAE_Vendedores_Datos = new MAE_Vendedores_Datos();
                g_mdl_MAE_Clientes.MAE_Vendedores = obj_MAE_Vendedores_Datos.Obtener_Modelo_Por_Id(g_mdl_MAE_Clientes.idVendedor.Value, false);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Modelo[2] = true;
            }
        }
        private void Obtener_VendedorCobrador_Modelo()
        {
            try
            {
                MAE_Vendedores_Datos obj_MAE_Vendedores_Datos = new MAE_Vendedores_Datos();
                g_mdl_MAE_Clientes.MAE_Vendedores1 = obj_MAE_Vendedores_Datos.Obtener_Modelo_Por_Id(g_mdl_MAE_Clientes.idVendedor_Cobrador.Value, false);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Modelo[3] = true;
            }
        }
        private void Obtener_FormaPago_Modelo()
        {
            try
            {
                MAE_FormasPago_Datos obj_MAE_FormasPago_Datos = new MAE_FormasPago_Datos();
                g_mdl_MAE_Clientes.MAE_FormasPago = obj_MAE_FormasPago_Datos.Obtener_Modelo_Por_Id(g_mdl_MAE_Clientes.idFormaPago);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Modelo[4] = true;
            }
        }
        private void Obtener_Direcciones_Modelo()
        {
            try
            {
                g_mdl_MAE_Clientes.GEN_Direcciones = Datos_Generales.GEN_Direcciones_Obtener_Modelo_Listado_Por_IdCliente(g_mdl_MAE_Clientes.id);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Modelo[5] = true;
            }
        }
        private void Obtener_PredefinidoVenta_Modelo()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_CONTABILIDAD + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_CONTABILIDAD + "." + Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD);
                //creamos la instancia
                var obj_Clase = Activator.CreateInstance(m_type);
                //Cargamos el metodo solicitado
                MethodInfo obj_MethodInfo = obj_Clase.GetType().GetMethod(Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD_PROCEDIMIENTO_CTAPREDEFINIDOCABECERA_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_mdl_MAE_Clientes.idPredefinidoCabecera_Ventas.Value };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_mdl_MAE_Clientes.CTA_PredefinidosCabeceras = (CTA_PredefinidosCabeceras)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Modelo[6] = true;
            }
        }
        private void Obtener_PredefinidoCompra_Modelo()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_CONTABILIDAD + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_CONTABILIDAD + "." + Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD);
                //creamos la instancia
                var obj_Clase = Activator.CreateInstance(m_type);
                //Cargamos el metodo solicitado
                MethodInfo obj_MethodInfo = obj_Clase.GetType().GetMethod(Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD_PROCEDIMIENTO_CTAPREDEFINIDOCABECERA_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_mdl_MAE_Clientes.idPredefinidoCabecera_Cobros.Value };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_mdl_MAE_Clientes.CTA_PredefinidosCabeceras1 = (CTA_PredefinidosCabeceras)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Modelo[7] = true;
            }
        }
        private void Obtener_ClienteTarifa_Modelo()
        {
            try
            {
                MAE_Clientes_TarifasCabecera_Datos obj_MAE_Clientes_TarifasCabecera_Datos = new MAE_Clientes_TarifasCabecera_Datos();
                g_mdl_MAE_Clientes.MAE_Clientes_TarifasCabecera = obj_MAE_Clientes_TarifasCabecera_Datos.Obtener_ModeloListado_Por_IdCliente(g_mdl_MAE_Clientes.id, true);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Modelo[8] = true;
            }
        }

        private void Obtener_ClienteSeguros_Modelo()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_HERMES + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_HERMES + "." + Variables.G_STR_LIBRERIA_DATOSHERMES);
                //creamos la instancia
                var obj_Clase = Activator.CreateInstance(m_type);
                //Cargamos el metodo solicitado
                MethodInfo obj_MethodInfo = obj_Clase.GetType().GetMethod(Variables.G_STR_LIBRERIA_DATOSHERMES_PROCEDIMIENTO_HRMPRECIOSEGURO_OBTENERLISTADO_PORIDCLIENTE, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_mdl_MAE_Clientes.id };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_mdl_MAE_Clientes.HRM_PrecioSeguro = (List<HRM_PrecioSeguro>)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Modelo[9] = true;
            }
        }
        #endregion

        #endregion

        #endregion

        #region Modelo Listado
        private List<MAE_Clientes> g_lst_MAE_Clientes = null;

        public List<MAE_Clientes> Obtener_ModeloListado_Por_Ids(List<long> _lst_Ids,
                                                                bool _bol_Cargar_PredefinidoCabecera,
                                                                bool _bol_Cargar_Direcciones)
        {
            try
            {
                if (_lst_Ids != null && _lst_Ids.Count > 0)
                {
                    string str_Filtro_IDS = Funciones.Formar_ContenidoIN_ParaConsultaWhere(nameof(MAE_Clientes),
                                                                                             nameof(MAE_Clientes.id),
                                                                                             G_ENUM_FORMARCONTENIDOIN_CONDICIONANTES.NADA,
                                                                                             _lst_Ids);

                    //Consulta
                    string str_SQL = Obtener_Consulta_Modelo() +
                                                " WHERE " +
                                                    str_Filtro_IDS;



                    //Ejecutar y rellenar el listado
                    Ejecutar_Consulta_Modelo_Listado(str_SQL,
                                                    new object[] { },
                                                    _bol_Cargar_PredefinidoCabecera,
                                                    _bol_Cargar_Direcciones);

                }
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(Obtener_ModeloListado_Por_Ids), true);
            }

            return g_lst_MAE_Clientes;
        }

        #region Ejecutar Consulta
        //Listado de modelos Relacionados
        private List<CTA_PredefinidosCabeceras> g_lst_CTA_PredefinidosCabeceras = null;
        private List<GEN_Direcciones> g_lst_GEN_Direcciones = null;

        //Hilos
        private static int g_int_TotalHilos_Modelo_Listado = 2;
        private bool[] g_bol_Hilos_Terminados_Modelo_Listado = new bool[g_int_TotalHilos_Modelo_Listado];

        private void Ejecutar_Consulta_Modelo_Listado(string _str_SQL,
                                                      object[] _arr_Parametros,
                                                      bool _bol_Cargar_PredefinidoCabecera,
                                                      bool _bol_Cargar_Direcciones)
        {
            Exferia_Entities obj_Exferia_Entities = null;

            try
            {
                //Conexion
                obj_Exferia_Entities = new Exferia_Entities();
                obj_Exferia_Entities.Configuration.LazyLoadingEnabled = false;


                //Rellenar el modelo
                g_lst_MAE_Clientes = obj_Exferia_Entities.Database.SqlQuery<MAE_Clientes>(_str_SQL, _arr_Parametros).ToList();

                #region Rellenar tablas Relacionadas
                if (g_lst_MAE_Clientes != null && g_lst_MAE_Clientes.Count > 0)
                {
                    if (_bol_Cargar_PredefinidoCabecera &&
                        _bol_Cargar_Direcciones)
                    {
                        #region PRIMERO BUSCO LOS DATOS DE LAS TABLAS RELACIONADAS
                        //reiniciar Valores de los hilos
                        for (int int_Contador = 0; int_Contador < g_int_TotalHilos_Modelo_Listado; int_Contador++)
                        {
                            g_bol_Hilos_Terminados_Modelo_Listado[int_Contador] = false;
                        }

                        //CTA_PredefinidosCabeceras ############################################# 
                        if (_bol_Cargar_PredefinidoCabecera)
                        {
                            ThreadStart obj_ThreadStart_PREDEFINIDOSCABECERA = new ThreadStart(Obtener_PredifinidosCabecera_Modelo_Listado);
                            Thread obj_Thread_PREDEFINIDOSCABECERA = new Thread(obj_ThreadStart_PREDEFINIDOSCABECERA);
                            obj_Thread_PREDEFINIDOSCABECERA.Start();
                        }
                        else
                        {
                            g_bol_Hilos_Terminados_Modelo_Listado[0] = false;
                        }

                        //GEN_Direcciones ############################################# 
                        if (_bol_Cargar_Direcciones)
                        {
                            ThreadStart obj_ThreadStart_DIRECCIONES = new ThreadStart(Obtener_Direcciones_Modelo_Listado);
                            Thread obj_Thread_DIRECCIONES = new Thread(obj_ThreadStart_DIRECCIONES);
                            obj_Thread_DIRECCIONES.Start();
                        }
                        else
                        {
                            g_bol_Hilos_Terminados_Modelo_Listado[1] = false;
                        }

                        //Esperando a que terminen todos los hilos .........................................
                        bool bol_Termino = false;
                        while (bol_Termino == false)
                        {
                            bol_Termino = true;
                            foreach (bool bol_Termino_Hilo in g_bol_Hilos_Terminados_Modelo_Listado)
                            {
                                if (bol_Termino_Hilo == false)
                                {
                                    bol_Termino = false;
                                    break;
                                }
                            }

                            Thread.Sleep(10);
                        }
                        //.................................................................................

                        #endregion

                        #region DESPUES SE LO VOY ASIGNANDO A LOS REGISTRO UNO A UNO
                        foreach (MAE_Clientes mdl_MAE_Clientes in g_lst_MAE_Clientes)
                        {
                            //CTA_PredefinidosCabeceras #############################################
                            if (_bol_Cargar_PredefinidoCabecera &&
                                mdl_MAE_Clientes.idPredefinidoCabecera_Ventas != null &&
                                g_lst_CTA_PredefinidosCabeceras != null &&
                                g_lst_CTA_PredefinidosCabeceras.Count > 0)
                            {
                                mdl_MAE_Clientes.CTA_PredefinidosCabeceras = g_lst_CTA_PredefinidosCabeceras.Where(m => m.id == mdl_MAE_Clientes.idPredefinidoCabecera_Ventas.Value).FirstOrDefault();
                            }

                            //GEN_Direcciones #############################################
                            if (_bol_Cargar_Direcciones &&
                                g_lst_GEN_Direcciones != null &&
                                g_lst_GEN_Direcciones.Count > 0)
                            {
                                mdl_MAE_Clientes.GEN_Direcciones = g_lst_GEN_Direcciones.Where(m => m.idCliente != null && m.idCliente.Value == mdl_MAE_Clientes.id).ToList();
                            }
                        }
                        #endregion
                    }
                }
                #endregion
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(Ejecutar_Consulta_Modelo_Listado), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
        }

        #region TablasRelacionadas
        private void Obtener_PredifinidosCabecera_Modelo_Listado()
        {
            try
            {
                List<long> lst_idPredefinidoCabcera = g_lst_MAE_Clientes.Where(m => m.idPredefinidoCabecera_Ventas != null).Select(m => m.idPredefinidoCabecera_Ventas.Value).ToList();

                if (lst_idPredefinidoCabcera != null && lst_idPredefinidoCabcera.Count > 0)
                {
                    //Cargamos el ensamblado
                    Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_CONTABILIDAD + ".dll");
                    //Obtenemos el tipo de la clase
                    Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_CONTABILIDAD + "." + Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD);
                    //creamos la instancia
                    var obj_Clase = Activator.CreateInstance(m_type);
                    //Cargamos el metodo solicitado
                    MethodInfo obj_MethodInfo = obj_Clase.GetType().GetMethod(Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD_PROCEDIMIENTO_CTAPREDEFINIDOCABECERA_OBTENERMODELOLISTADO_POR_IDS, BindingFlags.Instance | BindingFlags.NonPublic);

                    //Obtener valores
                    object[] arr_Parametros = { lst_idPredefinidoCabcera };
                    //Pasamos los parametros al metodo y lo ejecutamos
                    g_lst_CTA_PredefinidosCabeceras = (List<CTA_PredefinidosCabeceras>)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
                }
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Modelo_Listado[0] = true;
            }
        }

        private void Obtener_Direcciones_Modelo_Listado()
        {
            try
            {
                List<long> lst_ids = g_lst_MAE_Clientes.Select(m => m.id).ToList();

                List<GEN_Direcciones> lst_GEN_Direcciones_Fiscal_Envio = Datos_Generales.GEN_Direcciones_Obtener_Modelo_Listado_Por_IdsClienteTipoDireccion(lst_ids, Variables.G_STR_TIPODIRECCION_ENVIO, true, true, true, true, false);
                List<GEN_Direcciones> lst_GEN_Direcciones_Fiscal_Facturacion = Datos_Generales.GEN_Direcciones_Obtener_Modelo_Listado_Por_IdsClienteTipoDireccion(lst_ids, Variables.G_STR_TIPODIRECCION_FACTURACION, true, true, true, true, false);
                List<GEN_Direcciones> lst_GEN_Direcciones_Fiscal_Fiscal = Datos_Generales.GEN_Direcciones_Obtener_Modelo_Listado_Por_IdsClienteTipoDireccion(lst_ids, Variables.G_STR_TIPODIRECCION_FISCAL, true, true, true, true, false);

                if ((lst_GEN_Direcciones_Fiscal_Envio != null && lst_GEN_Direcciones_Fiscal_Envio.Count > 0) ||
                    (lst_GEN_Direcciones_Fiscal_Facturacion != null && lst_GEN_Direcciones_Fiscal_Facturacion.Count > 0) ||
                    (lst_GEN_Direcciones_Fiscal_Fiscal != null && lst_GEN_Direcciones_Fiscal_Fiscal.Count > 0))
                {
                    g_lst_GEN_Direcciones = new List<GEN_Direcciones>();

                    if (lst_GEN_Direcciones_Fiscal_Envio != null && lst_GEN_Direcciones_Fiscal_Envio.Count > 0)
                    {
                        g_lst_GEN_Direcciones.AddRange(lst_GEN_Direcciones_Fiscal_Envio);
                    }

                    if (lst_GEN_Direcciones_Fiscal_Facturacion != null && lst_GEN_Direcciones_Fiscal_Facturacion.Count > 0)
                    {
                        g_lst_GEN_Direcciones.AddRange(lst_GEN_Direcciones_Fiscal_Facturacion);
                    }

                    if (lst_GEN_Direcciones_Fiscal_Fiscal != null && lst_GEN_Direcciones_Fiscal_Fiscal.Count > 0)
                    {
                        g_lst_GEN_Direcciones.AddRange(lst_GEN_Direcciones_Fiscal_Fiscal);
                    }
                }
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Modelo_Listado[1] = true;
            }
        }
        #endregion

        #endregion
        #endregion

        private string Obtener_Consulta_Modelo()
        {
            return
                " SELECT " +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.codigo) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.razonSocial) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.nombreComercial) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.cif) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.telefono1) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.telefono2) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fax) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.confidencial) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.observaciones) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idFormaPago) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.retencion) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.recargo) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaAlta) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaBaja) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.riesgo) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.descuentoProntoPago) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.descuentoFinalAlbaran) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idImpuestoCabecera) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idEmpresa) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.numeroProveedor) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.albaranValorado) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idVendedor) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaContable) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaContraPartida) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaRetencion) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayor_CuentaRemesas) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMayorAuxiliar) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMoneda) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.noDeclararModelosOficiales) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.noFacturar) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMotivoAltaBaja_Alta) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idMotivoAltaBaja_Baja) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.permiteDepositos) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.aplicarRiesgo) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.imprimirDeudaAcumulada) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.email) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.web) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.imprimirDatosCadena) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.facturarDatosCadena) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.descuentoGeneral) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.EAN_Cliente) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.EAN_Documento) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.EAN_Entrega) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.criterioCaja) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.tipoDocumento) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.tipoPrecio) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.tipoPuntoVerde) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.formatoFactura) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.modeloFactura) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.diasRiesgo) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.documentosRiesgo) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.descuentoFinalFactura) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idVendedor_Cobrador) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.imprimir_Trazabilidad) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.infoMicro) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idDepartamento) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.posicionLatitud) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.posicionLongitud) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.EAN_Vendedor) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idTesoreria) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idDelegacion) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idAbonoTipo) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idPredefinidoCabecera_Ventas) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idPredefinidoCabecera_Cobros) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.numeroROPO) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.numeroAplicador) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaBorrado) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.zoom) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.tipoMapa) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.permiteCobrarAlbaran) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idPrioridad) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.idCliente_Cadena) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.cadena) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.clienteCRM) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.atencionDe) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.referenciasFacturas) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.enviarPorEmail) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.web_Usuario) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.web_Clave) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.conversionVolumen) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.saltoEscala) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.seguro_Porcentaje) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.seguro_Minimo) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.comisionReembolso_Porcentaje) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.comisionReembolso_Minimo) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.comisionReembolso_Maximo) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.incrementoRecogida_Porcentaje) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaAltaCRM) + "," +
                        nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaConversionCRM) +
                " FROM " + nameof(MAE_Clientes);
        }
        #endregion

        #region Grabar
        public override INTERNO_ValorDevuelto_Modelo Grabar(object _mdl_obj)
        {
            Exferia_Entities obj_Exferia_Entities = null;

            INTERNO_ValorDevuelto_Modelo mdl_INTERNO_ValorDevuelto_Modelo = new INTERNO_ValorDevuelto_Modelo();
            mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = true;

            try
            {
                obj_Exferia_Entities = new Exferia_Entities();
                obj_Exferia_Entities.Configuration.LazyLoadingEnabled = false;

                MAE_Clientes mdl_MAE_Cliente_AGrabar = (MAE_Clientes)_mdl_obj;
                MAE_Clientes mdl_MAE_Cliente_DatosViejos = new MAE_Clientes();

                // Ver si existe ######################################################################
                MAE_Clientes mdl_MAE_Cliente_Final = Obtener_Modelo_Por_Id(mdl_MAE_Cliente_AGrabar.id, false, false, false, false, false, false, false, false);
                //#####################################################################################

                //UPDATE
                if (mdl_MAE_Cliente_Final != null)
                {
                    //Tipo de Accion que se va a realizar
                    mdl_INTERNO_ValorDevuelto_Modelo.TipoAccion = G_ENUM_TIPOACCION.INT_MODIFICAR;

                    //Datos viejos para la trazabilidad
                    Funciones.CopiarPropiedadesObjetos(mdl_MAE_Cliente_Final, mdl_MAE_Cliente_DatosViejos, false, false);

                    // Cargar los Datos Nuevos del Modelo
                    Funciones.CopiarPropiedadesObjetos(mdl_MAE_Cliente_AGrabar, mdl_MAE_Cliente_Final, false, false);

                    #region Update
                    string str_SQL_Update = " UPDATE " + nameof(MAE_Clientes) +
                                            " SET " +
                                                nameof(MAE_Clientes.codigo) + "=@codigo," +
                                                nameof(MAE_Clientes.razonSocial) + "=@razonSocial," +
                                                nameof(MAE_Clientes.nombreComercial) + "=@nombreComercial," +
                                                nameof(MAE_Clientes.cif) + "=@cif," +
                                                nameof(MAE_Clientes.telefono1) + "=@telefono1," +
                                                nameof(MAE_Clientes.telefono2) + "=@telefono2," +
                                                nameof(MAE_Clientes.fax) + "=@fax," +
                                                nameof(MAE_Clientes.confidencial) + "=@confidencial," +
                                                nameof(MAE_Clientes.observaciones) + "=@observaciones," +
                                                nameof(MAE_Clientes.idFormaPago) + "=@idFormaPago," +
                                                nameof(MAE_Clientes.retencion) + "=@retencion," +
                                                nameof(MAE_Clientes.recargo) + "=@recargo," +
                                                nameof(MAE_Clientes.fechaAlta) + "=@fechaAlta," +
                                                nameof(MAE_Clientes.fechaBaja) + "=@fechaBaja," +
                                                nameof(MAE_Clientes.riesgo) + "=@riesgo," +
                                                nameof(MAE_Clientes.descuentoProntoPago) + "=@descuentoProntoPago," +
                                                nameof(MAE_Clientes.descuentoFinalAlbaran) + "=@descuentoFinalAlbaran," +
                                                nameof(MAE_Clientes.numeroProveedor) + "=@numeroProveedor," +
                                                nameof(MAE_Clientes.albaranValorado) + "=@albaranValorado," +
                                                nameof(MAE_Clientes.noDeclararModelosOficiales) + "=@noDeclararModelosOficiales," +
                                                nameof(MAE_Clientes.noFacturar) + "=@noFacturar," +
                                                nameof(MAE_Clientes.permiteDepositos) + "=@permiteDepositos," +
                                                nameof(MAE_Clientes.aplicarRiesgo) + "=@aplicarRiesgo," +
                                                nameof(MAE_Clientes.imprimirDeudaAcumulada) + "=@imprimirDeudaAcumulada," +
                                                nameof(MAE_Clientes.email) + "=@email," +
                                                nameof(MAE_Clientes.web) + "=@web," +
                                                nameof(MAE_Clientes.imprimirDatosCadena) + "=@imprimirDatosCadena," +
                                                nameof(MAE_Clientes.facturarDatosCadena) + "=@facturarDatosCadena," +
                                                nameof(MAE_Clientes.descuentoGeneral) + "=@descuentoGeneral," +
                                                nameof(MAE_Clientes.EAN_Cliente) + "=@EAN_Cliente," +
                                                nameof(MAE_Clientes.EAN_Documento) + "=@EAN_Documento," +
                                                nameof(MAE_Clientes.EAN_Entrega) + "=@EAN_Entrega," +
                                                nameof(MAE_Clientes.criterioCaja) + "=@criterioCaja," +
                                                nameof(MAE_Clientes.tipoDocumento) + "=@tipoDocumento," +
                                                nameof(MAE_Clientes.tipoPrecio) + "=@tipoPrecio," +
                                                nameof(MAE_Clientes.tipoPuntoVerde) + "=@tipoPuntoVerde," +
                                                nameof(MAE_Clientes.formatoFactura) + "=@formatoFactura," +
                                                nameof(MAE_Clientes.modeloFactura) + "=@modeloFactura," +
                                                nameof(MAE_Clientes.diasRiesgo) + "=@diasRiesgo," +
                                                nameof(MAE_Clientes.documentosRiesgo) + "=@documentosRiesgo," +
                                                nameof(MAE_Clientes.descuentoFinalFactura) + "=@descuentoFinalFactura," +
                                                nameof(MAE_Clientes.imprimir_Trazabilidad) + "=@imprimir_Trazabilidad," +
                                                nameof(MAE_Clientes.infoMicro) + "=@infoMicro," +
                                                nameof(MAE_Clientes.posicionLatitud) + "=@posicionLatitud," +
                                                nameof(MAE_Clientes.posicionLongitud) + "=@posicionLongitud," +
                                                nameof(MAE_Clientes.EAN_Vendedor) + "=@EAN_Vendedor," +
                                                nameof(MAE_Clientes.numeroROPO) + "=@numeroROPO," +
                                                nameof(MAE_Clientes.numeroAplicador) + "=@numeroAplicador," +
                                                nameof(MAE_Clientes.fechaBorrado) + "=@fechaBorrado," +
                                                nameof(MAE_Clientes.zoom) + "=@zoom," +
                                                nameof(MAE_Clientes.tipoMapa) + "=@tipoMapa," +
                                                nameof(MAE_Clientes.idImpuestoCabecera) + "=@idImpuestoCabecera," +
                                                nameof(MAE_Clientes.idEmpresa) + "=@idEmpresa," +
                                                nameof(MAE_Clientes.idVendedor) + "=@idVendedor," +
                                                nameof(MAE_Clientes.idMayor_CuentaContable) + "=@idMayor_CuentaContable," +
                                                nameof(MAE_Clientes.idMayor_CuentaContraPartida) + "=@idMayor_CuentaContraPartida," +
                                                nameof(MAE_Clientes.idMayor_CuentaRetencion) + "=@idMayor_CuentaRetencion," +
                                                nameof(MAE_Clientes.idMayor_CuentaRemesas) + "=@idMayor_CuentaRemesas," +
                                                nameof(MAE_Clientes.idMayorAuxiliar) + "=@idMayorAuxiliar," +
                                                nameof(MAE_Clientes.idMoneda) + "=@idMoneda," +
                                                nameof(MAE_Clientes.idMotivoAltaBaja_Alta) + "=@idMotivoAltaBaja_Alta," +
                                                nameof(MAE_Clientes.idMotivoAltaBaja_Baja) + "=@idMotivoAltaBaja_Baja," +
                                                nameof(MAE_Clientes.idVendedor_Cobrador) + "=@idVendedor_Cobrador," +
                                                nameof(MAE_Clientes.idDepartamento) + "=@idDepartamento," +
                                                nameof(MAE_Clientes.idTesoreria) + "=@idTesoreria," +
                                                nameof(MAE_Clientes.idDelegacion) + "=@idDelegacion," +
                                                nameof(MAE_Clientes.idAbonoTipo) + "=@idAbonoTipo," +
                                                nameof(MAE_Clientes.idPredefinidoCabecera_Ventas) + "=@idPredefinidoCabecera_Ventas," +
                                                nameof(MAE_Clientes.idPredefinidoCabecera_Cobros) + "=@idPredefinidoCabecera_Cobros," +
                                                nameof(MAE_Clientes.permiteCobrarAlbaran) + "=@permiteCobrarAlbaran," +
                                                nameof(MAE_Clientes.idPrioridad) + "=@idPrioridad," +
                                                nameof(MAE_Clientes.idCliente_Cadena) + "=@idCliente_Cadena," +
                                                nameof(MAE_Clientes.cadena) + "=@cadena," +
                                                nameof(MAE_Clientes.clienteCRM) + "=@clienteCRM," +
                                                nameof(MAE_Clientes.atencionDe) + "=@atencionDe," +
                                                nameof(MAE_Clientes.referenciasFacturas) + "=@referenciasFacturas," +
                                                nameof(MAE_Clientes.enviarPorEmail) + "=@enviarPorEmail," +
                                                nameof(MAE_Clientes.web_Usuario) + "=@web_Usuario," +
                                                nameof(MAE_Clientes.web_Clave) + "=@web_Clave," +
                                                nameof(MAE_Clientes.conversionVolumen) + "=@conversionVolumen," +
                                                nameof(MAE_Clientes.saltoEscala) + "=@saltoEscala," +
                                                nameof(MAE_Clientes.seguro_Porcentaje) + "=@seguro_Porcentaje," +
                                                nameof(MAE_Clientes.seguro_Minimo) + "=@seguro_Minimo," +
                                                nameof(MAE_Clientes.comisionReembolso_Porcentaje) + "=@comisionReembolso_Porcentaje," +
                                                nameof(MAE_Clientes.comisionReembolso_Minimo) + "=@comisionReembolso_Minimo," +
                                                nameof(MAE_Clientes.comisionReembolso_Maximo) + "=@comisionReembolso_Maximo," +
                                                nameof(MAE_Clientes.incrementoRecogida_Porcentaje) + "=@incrementoRecogida_Porcentaje," +
                                                nameof(MAE_Clientes.fechaAltaCRM) + "=@fechaAltaCRM," +
                                                nameof(MAE_Clientes.fechaConversionCRM) + "=@fechaConversionCRM" +
                                            " WHERE " +
                                                nameof(MAE_Clientes.id) + "=@id";
                    //Parametros
                    object[] arr_Parametros_Update = new object[]
                    {
                        new SqlParameter("@codigo", mdl_MAE_Cliente_Final.codigo),
                        new SqlParameter("@nombreComercial", mdl_MAE_Cliente_Final.nombreComercial),
                        new SqlParameter("@razonSocial", mdl_MAE_Cliente_Final.razonSocial),
                        mdl_MAE_Cliente_Final.cif != null
                            ?   new SqlParameter("@cif", mdl_MAE_Cliente_Final.cif)
                            :   new SqlParameter("@cif",  DBNull.Value),
                        mdl_MAE_Cliente_Final.telefono1 != null
                            ?   new SqlParameter("@telefono1", mdl_MAE_Cliente_Final.telefono1)
                            :   new SqlParameter("@telefono1",  DBNull.Value),
                        mdl_MAE_Cliente_Final.telefono2 != null
                            ?   new SqlParameter("@telefono2", mdl_MAE_Cliente_Final.telefono2)
                            :   new SqlParameter("@telefono2",  DBNull.Value),
                        mdl_MAE_Cliente_Final.fax != null
                            ?   new SqlParameter("@fax", mdl_MAE_Cliente_Final.fax)
                            :   new SqlParameter("@fax",  DBNull.Value),
                        mdl_MAE_Cliente_Final.confidencial != null
                            ?   new SqlParameter("@confidencial", mdl_MAE_Cliente_Final.confidencial)
                            :   new SqlParameter("@confidencial",  DBNull.Value),
                        mdl_MAE_Cliente_Final.observaciones != null
                            ?   new SqlParameter("@observaciones", mdl_MAE_Cliente_Final.observaciones)
                            :   new SqlParameter("@observaciones",  DBNull.Value),
                        new SqlParameter("@idFormaPago", mdl_MAE_Cliente_Final.idFormaPago),
                        mdl_MAE_Cliente_Final.retencion != null
                            ?   new SqlParameter("@retencion", mdl_MAE_Cliente_Final.retencion.Value)
                            :   new SqlParameter("@retencion",  DBNull.Value),
                        mdl_MAE_Cliente_Final.recargo != null
                            ?   new SqlParameter("@recargo", mdl_MAE_Cliente_Final.recargo.Value)
                            :   new SqlParameter("@recargo",  DBNull.Value),
                        new SqlParameter("@fechaAlta", mdl_MAE_Cliente_Final.fechaAlta),
                        mdl_MAE_Cliente_Final.fechaBaja != null
                            ?   new SqlParameter("@fechaBaja", mdl_MAE_Cliente_Final.fechaBaja.Value)
                            :   new SqlParameter("@fechaBaja",  DBNull.Value),
                        mdl_MAE_Cliente_Final.riesgo != null
                            ?   new SqlParameter("@riesgo", mdl_MAE_Cliente_Final.riesgo.Value)
                            :   new SqlParameter("@riesgo",  DBNull.Value),
                       mdl_MAE_Cliente_Final.descuentoProntoPago != null
                            ?   new SqlParameter("@descuentoProntoPago", mdl_MAE_Cliente_Final.descuentoProntoPago.Value)
                            :   new SqlParameter("@descuentoProntoPago",  DBNull.Value),
                       mdl_MAE_Cliente_Final.descuentoFinalAlbaran != null
                            ?   new SqlParameter("@descuentoFinalAlbaran", mdl_MAE_Cliente_Final.descuentoFinalAlbaran.Value)
                            :   new SqlParameter("@descuentoFinalAlbaran",  DBNull.Value),
                       new SqlParameter("@idImpuestoCabecera", mdl_MAE_Cliente_Final.idImpuestoCabecera),
                       new SqlParameter("@idEmpresa", mdl_MAE_Cliente_Final.idEmpresa),
                       mdl_MAE_Cliente_Final.numeroProveedor != null
                            ?   new SqlParameter("@numeroProveedor", mdl_MAE_Cliente_Final.numeroProveedor)
                            :   new SqlParameter("@numeroProveedor",  DBNull.Value),
                       mdl_MAE_Cliente_Final.albaranValorado != null
                            ?   new SqlParameter("@albaranValorado", mdl_MAE_Cliente_Final.albaranValorado)
                            :   new SqlParameter("@albaranValorado",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idVendedor != null
                            ?   new SqlParameter("@idVendedor", mdl_MAE_Cliente_Final.idVendedor.Value)
                            :   new SqlParameter("@idVendedor",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idMayor_CuentaContable != null
                            ?   new SqlParameter("@idMayor_CuentaContable", mdl_MAE_Cliente_Final.idMayor_CuentaContable.Value)
                            :   new SqlParameter("@idMayor_CuentaContable",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idMayor_CuentaContraPartida != null
                            ?   new SqlParameter("@idMayor_CuentaContraPartida", mdl_MAE_Cliente_Final.idMayor_CuentaContraPartida.Value)
                            :   new SqlParameter("@idMayor_CuentaContraPartida",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idMayor_CuentaRetencion != null
                            ?   new SqlParameter("@idMayor_CuentaRetencion", mdl_MAE_Cliente_Final.idMayor_CuentaRetencion.Value)
                            :   new SqlParameter("@idMayor_CuentaRetencion",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idMayor_CuentaRemesas != null
                            ?   new SqlParameter("@idMayor_CuentaRemesas", mdl_MAE_Cliente_Final.idMayor_CuentaRemesas.Value)
                            :   new SqlParameter("@idMayor_CuentaRemesas",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idMayorAuxiliar != null
                            ?   new SqlParameter("@idMayorAuxiliar", mdl_MAE_Cliente_Final.idMayorAuxiliar.Value)
                            :   new SqlParameter("@idMayorAuxiliar",  DBNull.Value),
                       new SqlParameter("@idMoneda", mdl_MAE_Cliente_Final.idMoneda),
                       mdl_MAE_Cliente_Final.noDeclararModelosOficiales != null
                            ?   new SqlParameter("@noDeclararModelosOficiales", mdl_MAE_Cliente_Final.noDeclararModelosOficiales.Value)
                            :   new SqlParameter("@noDeclararModelosOficiales",  DBNull.Value),
                       mdl_MAE_Cliente_Final.noFacturar != null
                            ?   new SqlParameter("@noFacturar", mdl_MAE_Cliente_Final.noFacturar.Value)
                            :   new SqlParameter("@noFacturar",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idMotivoAltaBaja_Alta != null
                            ?   new SqlParameter("@idMotivoAltaBaja_Alta", mdl_MAE_Cliente_Final.idMotivoAltaBaja_Alta.Value)
                            :   new SqlParameter("@idMotivoAltaBaja_Alta",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idMotivoAltaBaja_Baja != null
                            ?   new SqlParameter("@idMotivoAltaBaja_Baja", mdl_MAE_Cliente_Final.idMotivoAltaBaja_Baja.Value)
                            :   new SqlParameter("@idMotivoAltaBaja_Baja",  DBNull.Value),
                       mdl_MAE_Cliente_Final.permiteDepositos != null
                            ?   new SqlParameter("@permiteDepositos", mdl_MAE_Cliente_Final.permiteDepositos.Value)
                            :   new SqlParameter("@permiteDepositos",  DBNull.Value),
                       mdl_MAE_Cliente_Final.aplicarRiesgo != null
                            ?   new SqlParameter("@aplicarRiesgo", mdl_MAE_Cliente_Final.aplicarRiesgo)
                            :   new SqlParameter("@aplicarRiesgo",  DBNull.Value),
                       mdl_MAE_Cliente_Final.imprimirDeudaAcumulada != null
                            ?   new SqlParameter("@imprimirDeudaAcumulada", mdl_MAE_Cliente_Final.imprimirDeudaAcumulada.Value)
                            :   new SqlParameter("@imprimirDeudaAcumulada",  DBNull.Value),
                       mdl_MAE_Cliente_Final.email != null
                            ?   new SqlParameter("@email", mdl_MAE_Cliente_Final.email)
                            :   new SqlParameter("@email",  DBNull.Value),
                       mdl_MAE_Cliente_Final.web != null
                            ?   new SqlParameter("@web", mdl_MAE_Cliente_Final.web)
                            :   new SqlParameter("@web",  DBNull.Value),
                       mdl_MAE_Cliente_Final.imprimirDatosCadena != null
                            ?   new SqlParameter("@imprimirDatosCadena", mdl_MAE_Cliente_Final.imprimirDatosCadena.Value)
                            :   new SqlParameter("@imprimirDatosCadena",  DBNull.Value),
                       mdl_MAE_Cliente_Final.facturarDatosCadena != null
                            ?   new SqlParameter("@facturarDatosCadena", mdl_MAE_Cliente_Final.facturarDatosCadena.Value)
                            :   new SqlParameter("@facturarDatosCadena",  DBNull.Value),
                       mdl_MAE_Cliente_Final.descuentoGeneral != null
                            ?   new SqlParameter("@descuentoGeneral", mdl_MAE_Cliente_Final.descuentoGeneral.Value)
                            :   new SqlParameter("@descuentoGeneral",  DBNull.Value),
                       mdl_MAE_Cliente_Final.EAN_Cliente != null
                            ?   new SqlParameter("@EAN_Cliente", mdl_MAE_Cliente_Final.EAN_Cliente)
                            :   new SqlParameter("@EAN_Cliente",  DBNull.Value),
                       mdl_MAE_Cliente_Final.EAN_Documento != null
                            ?   new SqlParameter("@EAN_Documento", mdl_MAE_Cliente_Final.EAN_Documento)
                            :   new SqlParameter("@EAN_Documento",  DBNull.Value),
                       mdl_MAE_Cliente_Final.EAN_Entrega != null
                            ?   new SqlParameter("@EAN_Entrega", mdl_MAE_Cliente_Final.EAN_Entrega)
                            :   new SqlParameter("@EAN_Entrega",  DBNull.Value),
                       mdl_MAE_Cliente_Final.criterioCaja != null
                            ?   new SqlParameter("@criterioCaja", mdl_MAE_Cliente_Final.criterioCaja)
                            :   new SqlParameter("@criterioCaja",  DBNull.Value),
                       mdl_MAE_Cliente_Final.tipoDocumento != null
                            ?   new SqlParameter("@tipoDocumento", mdl_MAE_Cliente_Final.tipoDocumento)
                            :   new SqlParameter("@tipoDocumento",  DBNull.Value),
                       mdl_MAE_Cliente_Final.tipoPrecio != null
                            ?   new SqlParameter("@tipoPrecio", mdl_MAE_Cliente_Final.tipoPrecio)
                            :   new SqlParameter("@tipoPrecio",  DBNull.Value),
                       mdl_MAE_Cliente_Final.tipoPuntoVerde != null
                            ?   new SqlParameter("@tipoPuntoVerde", mdl_MAE_Cliente_Final.tipoPuntoVerde)
                            :   new SqlParameter("@tipoPuntoVerde",  DBNull.Value),
                       mdl_MAE_Cliente_Final.formatoFactura != null
                            ?   new SqlParameter("@formatoFactura", mdl_MAE_Cliente_Final.formatoFactura.Value)
                            :   new SqlParameter("@formatoFactura",  DBNull.Value),
                       mdl_MAE_Cliente_Final.modeloFactura != null
                            ?   new SqlParameter("@modeloFactura", mdl_MAE_Cliente_Final.modeloFactura)
                            :   new SqlParameter("@modeloFactura",  DBNull.Value),
                       mdl_MAE_Cliente_Final.diasRiesgo != null
                            ?   new SqlParameter("@diasRiesgo", mdl_MAE_Cliente_Final.diasRiesgo.Value)
                            :   new SqlParameter("@diasRiesgo",  DBNull.Value),
                       mdl_MAE_Cliente_Final.documentosRiesgo != null
                            ?   new SqlParameter("@documentosRiesgo", mdl_MAE_Cliente_Final.documentosRiesgo.Value)
                            :   new SqlParameter("@documentosRiesgo",  DBNull.Value),
                       mdl_MAE_Cliente_Final.descuentoFinalFactura != null
                            ?   new SqlParameter("@descuentoFinalFactura", mdl_MAE_Cliente_Final.descuentoFinalFactura.Value)
                            :   new SqlParameter("@descuentoFinalFactura",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idVendedor_Cobrador != null
                            ?   new SqlParameter("@idVendedor_Cobrador", mdl_MAE_Cliente_Final.idVendedor_Cobrador.Value)
                            :   new SqlParameter("@idVendedor_Cobrador",  DBNull.Value),
                       mdl_MAE_Cliente_Final.imprimir_Trazabilidad != null
                            ?   new SqlParameter("@imprimir_Trazabilidad", mdl_MAE_Cliente_Final.imprimir_Trazabilidad.Value)
                            :   new SqlParameter("@imprimir_Trazabilidad",  DBNull.Value),
                       mdl_MAE_Cliente_Final.infoMicro != null
                            ?   new SqlParameter("@infoMicro", mdl_MAE_Cliente_Final.infoMicro)
                            :   new SqlParameter("@infoMicro",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idDepartamento != null
                            ?   new SqlParameter("@idDepartamento", mdl_MAE_Cliente_Final.idDepartamento.Value)
                            :   new SqlParameter("@idDepartamento",  DBNull.Value),
                       mdl_MAE_Cliente_Final.posicionLatitud != null
                            ?   new SqlParameter("@posicionLatitud", mdl_MAE_Cliente_Final.posicionLatitud)
                            :   new SqlParameter("@posicionLatitud",  DBNull.Value),
                       mdl_MAE_Cliente_Final.posicionLongitud != null
                            ?   new SqlParameter("@posicionLongitud", mdl_MAE_Cliente_Final.posicionLongitud)
                            :   new SqlParameter("@posicionLongitud",  DBNull.Value),
                       mdl_MAE_Cliente_Final.EAN_Vendedor != null
                            ?   new SqlParameter("@EAN_Vendedor", mdl_MAE_Cliente_Final.EAN_Vendedor)
                            :   new SqlParameter("@EAN_Vendedor",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idTesoreria != null
                            ?   new SqlParameter("@idTesoreria", mdl_MAE_Cliente_Final.idTesoreria.Value)
                            :   new SqlParameter("@idTesoreria",  DBNull.Value),
                       new SqlParameter("@idDelegacion", mdl_MAE_Cliente_Final.idDelegacion),
                       mdl_MAE_Cliente_Final.idAbonoTipo != null
                            ?   new SqlParameter("@idAbonoTipo", mdl_MAE_Cliente_Final.idAbonoTipo.Value)
                            :   new SqlParameter("@idAbonoTipo",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idPredefinidoCabecera_Ventas != null
                            ?   new SqlParameter("@idPredefinidoCabecera_Ventas", mdl_MAE_Cliente_Final.idPredefinidoCabecera_Ventas.Value)
                            :   new SqlParameter("@idPredefinidoCabecera_Ventas",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idPredefinidoCabecera_Cobros != null
                            ?   new SqlParameter("@idPredefinidoCabecera_Cobros", mdl_MAE_Cliente_Final.idPredefinidoCabecera_Cobros.Value)
                            :   new SqlParameter("@idPredefinidoCabecera_Cobros",  DBNull.Value),
                       mdl_MAE_Cliente_Final.numeroROPO != null
                            ?   new SqlParameter("@numeroROPO", mdl_MAE_Cliente_Final.numeroROPO)
                            :   new SqlParameter("@numeroROPO",  DBNull.Value),
                       mdl_MAE_Cliente_Final.numeroAplicador != null
                            ?   new SqlParameter("@numeroAplicador", mdl_MAE_Cliente_Final.numeroAplicador)
                            :   new SqlParameter("@numeroAplicador",  DBNull.Value),
                       mdl_MAE_Cliente_Final.fechaBorrado != null
                            ?   new SqlParameter("@fechaBorrado", mdl_MAE_Cliente_Final.fechaBorrado.Value)
                            :   new SqlParameter("@fechaBorrado",  DBNull.Value),
                       mdl_MAE_Cliente_Final.zoom != null
                            ?   new SqlParameter("@zoom", mdl_MAE_Cliente_Final.zoom.Value)
                            :   new SqlParameter("@zoom",  DBNull.Value),
                        mdl_MAE_Cliente_Final.tipoMapa != null
                            ?   new SqlParameter("@tipoMapa", mdl_MAE_Cliente_Final.tipoMapa.Value)
                            :   new SqlParameter("@tipoMapa",  DBNull.Value),
                        mdl_MAE_Cliente_Final.permiteCobrarAlbaran != null
                            ?   new SqlParameter("@permiteCobrarAlbaran", mdl_MAE_Cliente_Final.permiteCobrarAlbaran.Value)
                            :   new SqlParameter("@permiteCobrarAlbaran",  DBNull.Value),
                        mdl_MAE_Cliente_Final.idPrioridad != null
                            ?   new SqlParameter("@idPrioridad", mdl_MAE_Cliente_Final.idPrioridad.Value)
                            :   new SqlParameter("@idPrioridad",  DBNull.Value),
                        mdl_MAE_Cliente_Final.idCliente_Cadena != null
                            ?   new SqlParameter("@idCliente_Cadena", mdl_MAE_Cliente_Final.idCliente_Cadena.Value)
                            :   new SqlParameter("@idCliente_Cadena",  DBNull.Value),
                        mdl_MAE_Cliente_Final.cadena != null
                            ?   new SqlParameter("@cadena", mdl_MAE_Cliente_Final.cadena.Value)
                            :   new SqlParameter("@cadena",  DBNull.Value),
                        mdl_MAE_Cliente_Final.clienteCRM != null
                            ?   new SqlParameter("@clienteCRM", mdl_MAE_Cliente_Final.clienteCRM.Value)
                            :   new SqlParameter("@clienteCRM",  DBNull.Value),
                        mdl_MAE_Cliente_Final.atencionDe != null
                            ?   new SqlParameter("@atencionDe", mdl_MAE_Cliente_Final.atencionDe)
                            :   new SqlParameter("@atencionDe",  DBNull.Value),
                        mdl_MAE_Cliente_Final.referenciasFacturas != null
                            ?   new SqlParameter("@referenciasFacturas", mdl_MAE_Cliente_Final.referenciasFacturas)
                            :   new SqlParameter("@referenciasFacturas",  DBNull.Value),
                        mdl_MAE_Cliente_Final.enviarPorEmail != null
                            ?   new SqlParameter("@enviarPorEmail", mdl_MAE_Cliente_Final.enviarPorEmail.Value)
                            :   new SqlParameter("@enviarPorEmail",  DBNull.Value),
                        mdl_MAE_Cliente_Final.web_Usuario != null
                            ?   new SqlParameter("@web_Usuario", mdl_MAE_Cliente_Final.web_Usuario)
                            :   new SqlParameter("@web_Usuario",  DBNull.Value),
                        mdl_MAE_Cliente_Final.web_Clave != null
                            ?   new SqlParameter("@web_Clave", mdl_MAE_Cliente_Final.web_Clave)
                            :   new SqlParameter("@web_Clave",  DBNull.Value),
                        mdl_MAE_Cliente_Final.conversionVolumen != null
                            ?   new SqlParameter("@conversionVolumen", mdl_MAE_Cliente_Final.conversionVolumen)
                            :   new SqlParameter("@conversionVolumen",  DBNull.Value),
                        mdl_MAE_Cliente_Final.saltoEscala != null
                            ?   new SqlParameter("@saltoEscala", mdl_MAE_Cliente_Final.saltoEscala)
                            :   new SqlParameter("@saltoEscala",  DBNull.Value),
                         mdl_MAE_Cliente_Final.seguro_Porcentaje != null
                            ?   new SqlParameter("@seguro_Porcentaje", mdl_MAE_Cliente_Final.seguro_Porcentaje.Value)
                            :   new SqlParameter("@seguro_Porcentaje",  DBNull.Value),
                        mdl_MAE_Cliente_Final.seguro_Minimo != null
                            ?   new SqlParameter("@seguro_Minimo", mdl_MAE_Cliente_Final.seguro_Minimo.Value)
                            :   new SqlParameter("@seguro_Minimo",  DBNull.Value),
                        mdl_MAE_Cliente_Final.comisionReembolso_Porcentaje != null
                            ?   new SqlParameter("@comisionReembolso_Porcentaje", mdl_MAE_Cliente_Final.comisionReembolso_Porcentaje.Value)
                            :   new SqlParameter("@comisionReembolso_Porcentaje",  DBNull.Value),
                        mdl_MAE_Cliente_Final.comisionReembolso_Minimo != null
                            ?   new SqlParameter("@comisionReembolso_Minimo", mdl_MAE_Cliente_Final.comisionReembolso_Minimo.Value)
                            :   new SqlParameter("@comisionReembolso_Minimo",  DBNull.Value),
                        mdl_MAE_Cliente_Final.comisionReembolso_Maximo != null
                            ?   new SqlParameter("@comisionReembolso_Maximo", mdl_MAE_Cliente_Final.comisionReembolso_Maximo.Value)
                            :   new SqlParameter("@comisionReembolso_Maximo",  DBNull.Value),
                        mdl_MAE_Cliente_Final.incrementoRecogida_Porcentaje != null
                            ?   new SqlParameter("@incrementoRecogida_Porcentaje", mdl_MAE_Cliente_Final.incrementoRecogida_Porcentaje.Value)
                            :   new SqlParameter("@incrementoRecogida_Porcentaje",  DBNull.Value),
                         mdl_MAE_Cliente_Final.fechaAltaCRM != null
                            ?   new SqlParameter("@fechaAltaCRM", mdl_MAE_Cliente_Final.fechaAltaCRM.Value)
                            :   new SqlParameter("@fechaAltaCRM",  DBNull.Value),
                          mdl_MAE_Cliente_Final.fechaConversionCRM != null
                            ?   new SqlParameter("@fechaConversionCRM", mdl_MAE_Cliente_Final.fechaConversionCRM.Value)
                            :   new SqlParameter("@fechaConversionCRM",  DBNull.Value),
                        new SqlParameter("@id", mdl_MAE_Cliente_Final.id)
                    };
                    #endregion

                    //Update
                    obj_Exferia_Entities.Database.ExecuteSqlCommand(str_SQL_Update, arr_Parametros_Update);

                    //Id de la tabla
                    mdl_INTERNO_ValorDevuelto_Modelo.Id = mdl_MAE_Cliente_Final.id;
                }
                //INSERT
                else
                {
                    mdl_MAE_Cliente_Final = new MAE_Clientes();

                    //Tipo de Accion que se va a realizar
                    mdl_INTERNO_ValorDevuelto_Modelo.TipoAccion = G_ENUM_TIPOACCION.INT_INSERTAR;

                    // Cargar los Datos del Modelo
                    Funciones.CopiarPropiedadesObjetos(mdl_MAE_Cliente_AGrabar, mdl_MAE_Cliente_Final, false, false);

                    #region INSERT
                    string str_SQL_Insert = " INSERT INTO " + nameof(MAE_Clientes) +
                                                " (" +
                                                        nameof(MAE_Clientes.codigo) + "," +
                                                        nameof(MAE_Clientes.razonSocial) + "," +
                                                        nameof(MAE_Clientes.nombreComercial) + "," +
                                                        nameof(MAE_Clientes.cif) + "," +
                                                        nameof(MAE_Clientes.telefono1) + "," +
                                                        nameof(MAE_Clientes.telefono2) + "," +
                                                        nameof(MAE_Clientes.fax) + "," +
                                                        nameof(MAE_Clientes.confidencial) + "," +
                                                        nameof(MAE_Clientes.observaciones) + "," +
                                                        nameof(MAE_Clientes.idFormaPago) + "," +
                                                        nameof(MAE_Clientes.retencion) + "," +
                                                        nameof(MAE_Clientes.recargo) + "," +
                                                        nameof(MAE_Clientes.fechaAlta) + "," +
                                                        nameof(MAE_Clientes.fechaBaja) + "," +
                                                        nameof(MAE_Clientes.riesgo) + "," +
                                                        nameof(MAE_Clientes.descuentoProntoPago) + "," +
                                                        nameof(MAE_Clientes.descuentoFinalAlbaran) + "," +
                                                        nameof(MAE_Clientes.numeroProveedor) + "," +
                                                        nameof(MAE_Clientes.albaranValorado) + "," +
                                                        nameof(MAE_Clientes.noDeclararModelosOficiales) + "," +
                                                        nameof(MAE_Clientes.noFacturar) + "," +
                                                        nameof(MAE_Clientes.permiteDepositos) + "," +
                                                        nameof(MAE_Clientes.aplicarRiesgo) + "," +
                                                        nameof(MAE_Clientes.imprimirDeudaAcumulada) + "," +
                                                        nameof(MAE_Clientes.email) + "," +
                                                        nameof(MAE_Clientes.web) + "," +
                                                        nameof(MAE_Clientes.imprimirDatosCadena) + "," +
                                                        nameof(MAE_Clientes.facturarDatosCadena) + "," +
                                                        nameof(MAE_Clientes.descuentoGeneral) + "," +
                                                        nameof(MAE_Clientes.EAN_Cliente) + "," +
                                                        nameof(MAE_Clientes.EAN_Documento) + "," +
                                                        nameof(MAE_Clientes.EAN_Entrega) + "," +
                                                        nameof(MAE_Clientes.criterioCaja) + "," +
                                                        nameof(MAE_Clientes.tipoDocumento) + "," +
                                                        nameof(MAE_Clientes.tipoPrecio) + "," +
                                                        nameof(MAE_Clientes.tipoPuntoVerde) + "," +
                                                        nameof(MAE_Clientes.formatoFactura) + "," +
                                                        nameof(MAE_Clientes.modeloFactura) + "," +
                                                        nameof(MAE_Clientes.diasRiesgo) + "," +
                                                        nameof(MAE_Clientes.documentosRiesgo) + "," +
                                                        nameof(MAE_Clientes.descuentoFinalFactura) + "," +
                                                        nameof(MAE_Clientes.imprimir_Trazabilidad) + "," +
                                                        nameof(MAE_Clientes.infoMicro) + "," +
                                                        nameof(MAE_Clientes.posicionLatitud) + "," +
                                                        nameof(MAE_Clientes.posicionLongitud) + "," +
                                                        nameof(MAE_Clientes.EAN_Vendedor) + "," +
                                                        nameof(MAE_Clientes.numeroROPO) + "," +
                                                        nameof(MAE_Clientes.numeroAplicador) + "," +
                                                        nameof(MAE_Clientes.fechaBorrado) + "," +
                                                        nameof(MAE_Clientes.zoom) + "," +
                                                        nameof(MAE_Clientes.tipoMapa) + "," +
                                                        nameof(MAE_Clientes.idImpuestoCabecera) + "," +
                                                        nameof(MAE_Clientes.idEmpresa) + "," +
                                                        nameof(MAE_Clientes.idVendedor) + "," +
                                                        nameof(MAE_Clientes.idMayor_CuentaContable) + "," +
                                                        nameof(MAE_Clientes.idMayor_CuentaContraPartida) + "," +
                                                        nameof(MAE_Clientes.idMayor_CuentaRetencion) + "," +
                                                        nameof(MAE_Clientes.idMayor_CuentaRemesas) + "," +
                                                        nameof(MAE_Clientes.idMayorAuxiliar) + "," +
                                                        nameof(MAE_Clientes.idMoneda) + "," +
                                                        nameof(MAE_Clientes.idMotivoAltaBaja_Alta) + "," +
                                                        nameof(MAE_Clientes.idMotivoAltaBaja_Baja) + "," +
                                                        nameof(MAE_Clientes.idVendedor_Cobrador) + "," +
                                                        nameof(MAE_Clientes.idDepartamento) + "," +
                                                        nameof(MAE_Clientes.idTesoreria) + "," +
                                                        nameof(MAE_Clientes.idDelegacion) + "," +
                                                        nameof(MAE_Clientes.idAbonoTipo) + "," +
                                                        nameof(MAE_Clientes.idPredefinidoCabecera_Ventas) + "," +
                                                        nameof(MAE_Clientes.idPredefinidoCabecera_Cobros) + "," +
                                                        nameof(MAE_Clientes.permiteCobrarAlbaran) + "," +
                                                        nameof(MAE_Clientes.idPrioridad) + "," +
                                                        nameof(MAE_Clientes.idCliente_Cadena) + "," +
                                                        nameof(MAE_Clientes.cadena) + "," +
                                                        nameof(MAE_Clientes.clienteCRM) + "," +
                                                        nameof(MAE_Clientes.atencionDe) + "," +
                                                        nameof(MAE_Clientes.referenciasFacturas) + "," +
                                                        nameof(MAE_Clientes.enviarPorEmail) + "," +
                                                        nameof(MAE_Clientes.web_Usuario) + "," +
                                                        nameof(MAE_Clientes.web_Clave) + "," +
                                                        nameof(MAE_Clientes.conversionVolumen) + "," +
                                                        nameof(MAE_Clientes.saltoEscala) + "," +
                                                        nameof(MAE_Clientes.seguro_Porcentaje) + "," +
                                                        nameof(MAE_Clientes.seguro_Minimo) + "," +
                                                        nameof(MAE_Clientes.comisionReembolso_Porcentaje) + "," +
                                                        nameof(MAE_Clientes.comisionReembolso_Minimo) + "," +
                                                        nameof(MAE_Clientes.comisionReembolso_Maximo) + "," +
                                                        nameof(MAE_Clientes.incrementoRecogida_Porcentaje) + "," +
                                                        nameof(MAE_Clientes.fechaAltaCRM) + "," +
                                                        nameof(MAE_Clientes.fechaConversionCRM) +
                                                " ) " +
                                                " OUTPUT INSERTED." + nameof(MAE_Clientes.id) +
                                                " VALUES " +
                                                " ( " +
                                                      "@codigo," +
                                                      "@razonSocial," +
                                                      "@nombreComercial," +
                                                      "@cif," +
                                                      "@telefono1," +
                                                      "@telefono2," +
                                                      "@fax," +
                                                      "@confidencial," +
                                                      "@observaciones," +
                                                      "@idFormaPago," +
                                                      "@retencion," +
                                                      "@recargo," +
                                                      "@fechaAlta," +
                                                      "@fechaBaja," +
                                                      "@riesgo," +
                                                      "@descuentoProntoPago," +
                                                      "@descuentoFinalAlbaran," +
                                                      "@numeroProveedor," +
                                                      "@albaranValorado," +
                                                      "@noDeclararModelosOficiales," +
                                                      "@noFacturar," +
                                                      "@permiteDepositos," +
                                                      "@aplicarRiesgo," +
                                                      "@imprimirDeudaAcumulada," +
                                                      "@email," +
                                                      "@web," +
                                                      "@imprimirDatosCadena," +
                                                      "@facturarDatosCadena," +
                                                      "@descuentoGeneral," +
                                                      "@EAN_Cliente," +
                                                      "@EAN_Documento," +
                                                      "@EAN_Entrega," +
                                                      "@criterioCaja," +
                                                      "@tipoDocumento," +
                                                      "@tipoPrecio," +
                                                      "@tipoPuntoVerde," +
                                                      "@formatoFactura," +
                                                      "@modeloFactura," +
                                                      "@diasRiesgo," +
                                                      "@documentosRiesgo," +
                                                      "@descuentoFinalFactura," +
                                                      "@imprimir_Trazabilidad," +
                                                      "@infoMicro," +
                                                      "@posicionLatitud," +
                                                      "@posicionLongitud," +
                                                      "@EAN_Vendedor," +
                                                      "@numeroROPO," +
                                                      "@numeroAplicador," +
                                                      "@fechaBorrado," +
                                                      "@zoom," +
                                                      "@tipoMapa," +
                                                      "@idImpuestoCabecera," +
                                                      "@idEmpresa," +
                                                      "@idVendedor," +
                                                      "@idMayor_CuentaContable," +
                                                      "@idMayor_CuentaContraPartida," +
                                                      "@idMayor_CuentaRetencion," +
                                                      "@idMayor_CuentaRemesas," +
                                                      "@idMayorAuxiliar," +
                                                      "@idMoneda," +
                                                      "@idMotivoAltaBaja_Alta," +
                                                      "@idMotivoAltaBaja_Baja," +
                                                      "@idVendedor_Cobrador," +
                                                      "@idDepartamento," +
                                                      "@idTesoreria," +
                                                      "@idDelegacion," +
                                                      "@idAbonoTipo," +
                                                      "@idPredefinidoCabecera_Ventas," +
                                                      "@idPredefinidoCabecera_Cobros," +
                                                      "@permiteCobrarAlbaran," +
                                                      "@idPrioridad," +
                                                      "@idCliente_Cadena," +
                                                      "@cadena," +
                                                      "@clienteCRM," +
                                                      "@atencionDe," +
                                                      "@referenciasFacturas," +
                                                      "@enviarPorEmail," +
                                                      "@web_Usuario," +
                                                      "@web_Clave," +
                                                      "@conversionVolumen," +
                                                      "@saltoEscala," +
                                                      "@seguro_Porcentaje," +
                                                      "@seguro_Minimo," +
                                                      "@comisionReembolso_Porcentaje," +
                                                      "@comisionReembolso_Minimo," +
                                                      "@comisionReembolso_Maximo," +
                                                      "@incrementoRecogida_Porcentaje," +
                                                      "@fechaAltaCRM," +
                                                      "@fechaConversionCRM " +
                                                " ) ";
                    //Parametros
                    object[] arr_Parametros_Insert = new object[]
                    {
                        new SqlParameter("@codigo", mdl_MAE_Cliente_Final.codigo),
                        new SqlParameter("@nombreComercial", mdl_MAE_Cliente_Final.nombreComercial),
                        new SqlParameter("@razonSocial", mdl_MAE_Cliente_Final.razonSocial),
                        mdl_MAE_Cliente_Final.cif != null
                            ?   new SqlParameter("@cif", mdl_MAE_Cliente_Final.cif)
                            :   new SqlParameter("@cif",  DBNull.Value),
                        mdl_MAE_Cliente_Final.telefono1 != null
                            ?   new SqlParameter("@telefono1", mdl_MAE_Cliente_Final.telefono1)
                            :   new SqlParameter("@telefono1",  DBNull.Value),
                        mdl_MAE_Cliente_Final.telefono2 != null
                            ?   new SqlParameter("@telefono2", mdl_MAE_Cliente_Final.telefono2)
                            :   new SqlParameter("@telefono2",  DBNull.Value),
                        mdl_MAE_Cliente_Final.fax != null
                            ?   new SqlParameter("@fax", mdl_MAE_Cliente_Final.fax)
                            :   new SqlParameter("@fax",  DBNull.Value),
                        mdl_MAE_Cliente_Final.confidencial != null
                            ?   new SqlParameter("@confidencial", mdl_MAE_Cliente_Final.confidencial)
                            :   new SqlParameter("@confidencial",  DBNull.Value),
                        mdl_MAE_Cliente_Final.observaciones != null
                            ?   new SqlParameter("@observaciones", mdl_MAE_Cliente_Final.observaciones)
                            :   new SqlParameter("@observaciones",  DBNull.Value),
                        new SqlParameter("@idFormaPago", mdl_MAE_Cliente_Final.idFormaPago),
                        mdl_MAE_Cliente_Final.retencion != null
                            ?   new SqlParameter("@retencion", mdl_MAE_Cliente_Final.retencion.Value)
                            :   new SqlParameter("@retencion",  DBNull.Value),
                        mdl_MAE_Cliente_Final.recargo != null
                            ?   new SqlParameter("@recargo", mdl_MAE_Cliente_Final.recargo.Value)
                            :   new SqlParameter("@recargo",  DBNull.Value),
                        new SqlParameter("@fechaAlta", mdl_MAE_Cliente_Final.fechaAlta),
                        mdl_MAE_Cliente_Final.fechaBaja != null
                            ?   new SqlParameter("@fechaBaja", mdl_MAE_Cliente_Final.fechaBaja.Value)
                            :   new SqlParameter("@fechaBaja",  DBNull.Value),
                        mdl_MAE_Cliente_Final.riesgo != null
                            ?   new SqlParameter("@riesgo", mdl_MAE_Cliente_Final.riesgo.Value)
                            :   new SqlParameter("@riesgo",  DBNull.Value),
                       mdl_MAE_Cliente_Final.descuentoProntoPago != null
                            ?   new SqlParameter("@descuentoProntoPago", mdl_MAE_Cliente_Final.descuentoProntoPago.Value)
                            :   new SqlParameter("@descuentoProntoPago",  DBNull.Value),
                       mdl_MAE_Cliente_Final.descuentoFinalAlbaran != null
                            ?   new SqlParameter("@descuentoFinalAlbaran", mdl_MAE_Cliente_Final.descuentoFinalAlbaran.Value)
                            :   new SqlParameter("@descuentoFinalAlbaran",  DBNull.Value),
                       new SqlParameter("@idImpuestoCabecera", mdl_MAE_Cliente_Final.idImpuestoCabecera),
                       new SqlParameter("@idEmpresa", mdl_MAE_Cliente_Final.idEmpresa),
                       mdl_MAE_Cliente_Final.numeroProveedor != null
                            ?   new SqlParameter("@numeroProveedor", mdl_MAE_Cliente_Final.numeroProveedor)
                            :   new SqlParameter("@numeroProveedor",  DBNull.Value),
                       mdl_MAE_Cliente_Final.albaranValorado != null
                            ?   new SqlParameter("@albaranValorado", mdl_MAE_Cliente_Final.albaranValorado)
                            :   new SqlParameter("@albaranValorado",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idVendedor != null
                            ?   new SqlParameter("@idVendedor", mdl_MAE_Cliente_Final.idVendedor.Value)
                            :   new SqlParameter("@idVendedor",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idMayor_CuentaContable != null
                            ?   new SqlParameter("@idMayor_CuentaContable", mdl_MAE_Cliente_Final.idMayor_CuentaContable.Value)
                            :   new SqlParameter("@idMayor_CuentaContable",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idMayor_CuentaContraPartida != null
                            ?   new SqlParameter("@idMayor_CuentaContraPartida", mdl_MAE_Cliente_Final.idMayor_CuentaContraPartida.Value)
                            :   new SqlParameter("@idMayor_CuentaContraPartida",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idMayor_CuentaRetencion != null
                            ?   new SqlParameter("@idMayor_CuentaRetencion", mdl_MAE_Cliente_Final.idMayor_CuentaRetencion.Value)
                            :   new SqlParameter("@idMayor_CuentaRetencion",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idMayor_CuentaRemesas != null
                            ?   new SqlParameter("@idMayor_CuentaRemesas", mdl_MAE_Cliente_Final.idMayor_CuentaRemesas.Value)
                            :   new SqlParameter("@idMayor_CuentaRemesas",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idMayorAuxiliar != null
                            ?   new SqlParameter("@idMayorAuxiliar", mdl_MAE_Cliente_Final.idMayorAuxiliar.Value)
                            :   new SqlParameter("@idMayorAuxiliar",  DBNull.Value),
                       new SqlParameter("@idMoneda", mdl_MAE_Cliente_Final.idMoneda),
                       mdl_MAE_Cliente_Final.noDeclararModelosOficiales != null
                            ?   new SqlParameter("@noDeclararModelosOficiales", mdl_MAE_Cliente_Final.noDeclararModelosOficiales.Value)
                            :   new SqlParameter("@noDeclararModelosOficiales",  DBNull.Value),
                       mdl_MAE_Cliente_Final.noFacturar != null
                            ?   new SqlParameter("@noFacturar", mdl_MAE_Cliente_Final.noFacturar.Value)
                            :   new SqlParameter("@noFacturar",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idMotivoAltaBaja_Alta != null
                            ?   new SqlParameter("@idMotivoAltaBaja_Alta", mdl_MAE_Cliente_Final.idMotivoAltaBaja_Alta.Value)
                            :   new SqlParameter("@idMotivoAltaBaja_Alta",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idMotivoAltaBaja_Baja != null
                            ?   new SqlParameter("@idMotivoAltaBaja_Baja", mdl_MAE_Cliente_Final.idMotivoAltaBaja_Baja.Value)
                            :   new SqlParameter("@idMotivoAltaBaja_Baja",  DBNull.Value),
                       mdl_MAE_Cliente_Final.permiteDepositos != null
                            ?   new SqlParameter("@permiteDepositos", mdl_MAE_Cliente_Final.permiteDepositos.Value)
                            :   new SqlParameter("@permiteDepositos",  DBNull.Value),
                       mdl_MAE_Cliente_Final.aplicarRiesgo != null
                            ?   new SqlParameter("@aplicarRiesgo", mdl_MAE_Cliente_Final.aplicarRiesgo)
                            :   new SqlParameter("@aplicarRiesgo",  DBNull.Value),
                       mdl_MAE_Cliente_Final.imprimirDeudaAcumulada != null
                            ?   new SqlParameter("@imprimirDeudaAcumulada", mdl_MAE_Cliente_Final.imprimirDeudaAcumulada.Value)
                            :   new SqlParameter("@imprimirDeudaAcumulada",  DBNull.Value),
                       mdl_MAE_Cliente_Final.email != null
                            ?   new SqlParameter("@email", mdl_MAE_Cliente_Final.email)
                            :   new SqlParameter("@email",  DBNull.Value),
                       mdl_MAE_Cliente_Final.web != null
                            ?   new SqlParameter("@web", mdl_MAE_Cliente_Final.web)
                            :   new SqlParameter("@web",  DBNull.Value),
                       mdl_MAE_Cliente_Final.imprimirDatosCadena != null
                            ?   new SqlParameter("@imprimirDatosCadena", mdl_MAE_Cliente_Final.imprimirDatosCadena.Value)
                            :   new SqlParameter("@imprimirDatosCadena",  DBNull.Value),
                       mdl_MAE_Cliente_Final.facturarDatosCadena != null
                            ?   new SqlParameter("@facturarDatosCadena", mdl_MAE_Cliente_Final.facturarDatosCadena.Value)
                            :   new SqlParameter("@facturarDatosCadena",  DBNull.Value),
                       mdl_MAE_Cliente_Final.descuentoGeneral != null
                            ?   new SqlParameter("@descuentoGeneral", mdl_MAE_Cliente_Final.descuentoGeneral.Value)
                            :   new SqlParameter("@descuentoGeneral",  DBNull.Value),
                       mdl_MAE_Cliente_Final.EAN_Cliente != null
                            ?   new SqlParameter("@EAN_Cliente", mdl_MAE_Cliente_Final.EAN_Cliente)
                            :   new SqlParameter("@EAN_Cliente",  DBNull.Value),
                       mdl_MAE_Cliente_Final.EAN_Documento != null
                            ?   new SqlParameter("@EAN_Documento", mdl_MAE_Cliente_Final.EAN_Documento)
                            :   new SqlParameter("@EAN_Documento",  DBNull.Value),
                       mdl_MAE_Cliente_Final.EAN_Entrega != null
                            ?   new SqlParameter("@EAN_Entrega", mdl_MAE_Cliente_Final.EAN_Entrega)
                            :   new SqlParameter("@EAN_Entrega",  DBNull.Value),
                       mdl_MAE_Cliente_Final.criterioCaja != null
                            ?   new SqlParameter("@criterioCaja", mdl_MAE_Cliente_Final.criterioCaja)
                            :   new SqlParameter("@criterioCaja",  DBNull.Value),
                       mdl_MAE_Cliente_Final.tipoDocumento != null
                            ?   new SqlParameter("@tipoDocumento", mdl_MAE_Cliente_Final.tipoDocumento)
                            :   new SqlParameter("@tipoDocumento",  DBNull.Value),
                       mdl_MAE_Cliente_Final.tipoPrecio != null
                            ?   new SqlParameter("@tipoPrecio", mdl_MAE_Cliente_Final.tipoPrecio)
                            :   new SqlParameter("@tipoPrecio",  DBNull.Value),
                       mdl_MAE_Cliente_Final.tipoPuntoVerde != null
                            ?   new SqlParameter("@tipoPuntoVerde", mdl_MAE_Cliente_Final.tipoPuntoVerde)
                            :   new SqlParameter("@tipoPuntoVerde",  DBNull.Value),
                       mdl_MAE_Cliente_Final.formatoFactura != null
                            ?   new SqlParameter("@formatoFactura", mdl_MAE_Cliente_Final.formatoFactura.Value)
                            :   new SqlParameter("@formatoFactura",  DBNull.Value),
                       mdl_MAE_Cliente_Final.modeloFactura != null
                            ?   new SqlParameter("@modeloFactura", mdl_MAE_Cliente_Final.modeloFactura)
                            :   new SqlParameter("@modeloFactura",  DBNull.Value),
                       mdl_MAE_Cliente_Final.diasRiesgo != null
                            ?   new SqlParameter("@diasRiesgo", mdl_MAE_Cliente_Final.diasRiesgo.Value)
                            :   new SqlParameter("@diasRiesgo",  DBNull.Value),
                       mdl_MAE_Cliente_Final.documentosRiesgo != null
                            ?   new SqlParameter("@documentosRiesgo", mdl_MAE_Cliente_Final.documentosRiesgo.Value)
                            :   new SqlParameter("@documentosRiesgo",  DBNull.Value),
                       mdl_MAE_Cliente_Final.descuentoFinalFactura != null
                            ?   new SqlParameter("@descuentoFinalFactura", mdl_MAE_Cliente_Final.descuentoFinalFactura.Value)
                            :   new SqlParameter("@descuentoFinalFactura",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idVendedor_Cobrador != null
                            ?   new SqlParameter("@idVendedor_Cobrador", mdl_MAE_Cliente_Final.idVendedor_Cobrador.Value)
                            :   new SqlParameter("@idVendedor_Cobrador",  DBNull.Value),
                       mdl_MAE_Cliente_Final.imprimir_Trazabilidad != null
                            ?   new SqlParameter("@imprimir_Trazabilidad", mdl_MAE_Cliente_Final.imprimir_Trazabilidad.Value)
                            :   new SqlParameter("@imprimir_Trazabilidad",  DBNull.Value),
                       mdl_MAE_Cliente_Final.infoMicro != null
                            ?   new SqlParameter("@infoMicro", mdl_MAE_Cliente_Final.infoMicro)
                            :   new SqlParameter("@infoMicro",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idDepartamento != null
                            ?   new SqlParameter("@idDepartamento", mdl_MAE_Cliente_Final.idDepartamento.Value)
                            :   new SqlParameter("@idDepartamento",  DBNull.Value),
                       mdl_MAE_Cliente_Final.posicionLatitud != null
                            ?   new SqlParameter("@posicionLatitud", mdl_MAE_Cliente_Final.posicionLatitud)
                            :   new SqlParameter("@posicionLatitud",  DBNull.Value),
                       mdl_MAE_Cliente_Final.posicionLongitud != null
                            ?   new SqlParameter("@posicionLongitud", mdl_MAE_Cliente_Final.posicionLongitud)
                            :   new SqlParameter("@posicionLongitud",  DBNull.Value),
                       mdl_MAE_Cliente_Final.EAN_Vendedor != null
                            ?   new SqlParameter("@EAN_Vendedor", mdl_MAE_Cliente_Final.EAN_Vendedor)
                            :   new SqlParameter("@EAN_Vendedor",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idTesoreria != null
                            ?   new SqlParameter("@idTesoreria", mdl_MAE_Cliente_Final.idTesoreria.Value)
                            :   new SqlParameter("@idTesoreria",  DBNull.Value),
                       new SqlParameter("@idDelegacion", mdl_MAE_Cliente_Final.idDelegacion),
                       mdl_MAE_Cliente_Final.idAbonoTipo != null
                            ?   new SqlParameter("@idAbonoTipo", mdl_MAE_Cliente_Final.idAbonoTipo.Value)
                            :   new SqlParameter("@idAbonoTipo",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idPredefinidoCabecera_Ventas != null
                            ?   new SqlParameter("@idPredefinidoCabecera_Ventas", mdl_MAE_Cliente_Final.idPredefinidoCabecera_Ventas.Value)
                            :   new SqlParameter("@idPredefinidoCabecera_Ventas",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idPredefinidoCabecera_Cobros != null
                            ?   new SqlParameter("@idPredefinidoCabecera_Cobros", mdl_MAE_Cliente_Final.idPredefinidoCabecera_Cobros.Value)
                            :   new SqlParameter("@idPredefinidoCabecera_Cobros",  DBNull.Value),
                       mdl_MAE_Cliente_Final.numeroROPO != null
                            ?   new SqlParameter("@numeroROPO", mdl_MAE_Cliente_Final.numeroROPO)
                            :   new SqlParameter("@numeroROPO",  DBNull.Value),
                       mdl_MAE_Cliente_Final.numeroAplicador != null
                            ?   new SqlParameter("@numeroAplicador", mdl_MAE_Cliente_Final.numeroAplicador)
                            :   new SqlParameter("@numeroAplicador",  DBNull.Value),
                       mdl_MAE_Cliente_Final.fechaBorrado != null
                            ?   new SqlParameter("@fechaBorrado", mdl_MAE_Cliente_Final.fechaBorrado.Value)
                            :   new SqlParameter("@fechaBorrado",  DBNull.Value),
                       mdl_MAE_Cliente_Final.zoom != null
                            ?   new SqlParameter("@zoom", mdl_MAE_Cliente_Final.zoom.Value)
                            :   new SqlParameter("@zoom",  DBNull.Value),
                       mdl_MAE_Cliente_Final.tipoMapa != null
                            ?   new SqlParameter("@tipoMapa", mdl_MAE_Cliente_Final.tipoMapa.Value)
                            :   new SqlParameter("@tipoMapa",  DBNull.Value),
                       mdl_MAE_Cliente_Final.permiteCobrarAlbaran != null
                            ?   new SqlParameter("@permiteCobrarAlbaran", mdl_MAE_Cliente_Final.permiteCobrarAlbaran.Value)
                            :   new SqlParameter("@permiteCobrarAlbaran",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idPrioridad != null
                            ?   new SqlParameter("@idPrioridad", mdl_MAE_Cliente_Final.idPrioridad.Value)
                            :   new SqlParameter("@idPrioridad",  DBNull.Value),
                       mdl_MAE_Cliente_Final.idCliente_Cadena != null
                            ?   new SqlParameter("@idCliente_Cadena", mdl_MAE_Cliente_Final.idCliente_Cadena.Value)
                            :   new SqlParameter("@idCliente_Cadena",  DBNull.Value),
                       mdl_MAE_Cliente_Final.cadena != null
                            ?   new SqlParameter("@cadena", mdl_MAE_Cliente_Final.cadena.Value)
                            :   new SqlParameter("@cadena",  DBNull.Value),
                        mdl_MAE_Cliente_Final.clienteCRM != null
                            ?   new SqlParameter("@clienteCRM", mdl_MAE_Cliente_Final.clienteCRM.Value)
                            :   new SqlParameter("@clienteCRM",  DBNull.Value),
                        mdl_MAE_Cliente_Final.atencionDe != null
                            ?   new SqlParameter("@atencionDe", mdl_MAE_Cliente_Final.atencionDe)
                            :   new SqlParameter("@atencionDe",  DBNull.Value),
                        mdl_MAE_Cliente_Final.referenciasFacturas != null
                            ?   new SqlParameter("@referenciasFacturas", mdl_MAE_Cliente_Final.referenciasFacturas)
                            :   new SqlParameter("@referenciasFacturas",  DBNull.Value),
                        mdl_MAE_Cliente_Final.enviarPorEmail != null
                            ?   new SqlParameter("@enviarPorEmail", mdl_MAE_Cliente_Final.enviarPorEmail.Value)
                            :   new SqlParameter("@enviarPorEmail",  DBNull.Value),
                        mdl_MAE_Cliente_Final.web_Usuario != null
                            ?   new SqlParameter("@web_Usuario", mdl_MAE_Cliente_Final.web_Usuario)
                            :   new SqlParameter("@web_Usuario",  DBNull.Value),
                        mdl_MAE_Cliente_Final.web_Clave != null
                            ?   new SqlParameter("@web_Clave", mdl_MAE_Cliente_Final.web_Clave)
                            :   new SqlParameter("@web_Clave",  DBNull.Value),
                        mdl_MAE_Cliente_Final.conversionVolumen != null
                            ?   new SqlParameter("@conversionVolumen", mdl_MAE_Cliente_Final.conversionVolumen)
                            :   new SqlParameter("@conversionVolumen",  DBNull.Value),
                        mdl_MAE_Cliente_Final.saltoEscala != null
                            ?   new SqlParameter("@saltoEscala", mdl_MAE_Cliente_Final.saltoEscala)
                            :   new SqlParameter("@saltoEscala",  DBNull.Value),
                        mdl_MAE_Cliente_Final.seguro_Porcentaje != null
                            ?   new SqlParameter("@seguro_Porcentaje", mdl_MAE_Cliente_Final.seguro_Porcentaje.Value)
                            :   new SqlParameter("@seguro_Porcentaje",  DBNull.Value),
                        mdl_MAE_Cliente_Final.seguro_Minimo != null
                            ?   new SqlParameter("@seguro_Minimo", mdl_MAE_Cliente_Final.seguro_Minimo.Value)
                            :   new SqlParameter("@seguro_Minimo",  DBNull.Value),
                        mdl_MAE_Cliente_Final.comisionReembolso_Porcentaje != null
                            ?   new SqlParameter("@comisionReembolso_Porcentaje", mdl_MAE_Cliente_Final.comisionReembolso_Porcentaje.Value)
                            :   new SqlParameter("@comisionReembolso_Porcentaje",  DBNull.Value),
                        mdl_MAE_Cliente_Final.comisionReembolso_Minimo != null
                            ?   new SqlParameter("@comisionReembolso_Minimo", mdl_MAE_Cliente_Final.comisionReembolso_Minimo.Value)
                            :   new SqlParameter("@comisionReembolso_Minimo",  DBNull.Value),
                        mdl_MAE_Cliente_Final.comisionReembolso_Maximo != null
                            ?   new SqlParameter("@comisionReembolso_Maximo", mdl_MAE_Cliente_Final.comisionReembolso_Maximo.Value)
                            :   new SqlParameter("@comisionReembolso_Maximo",  DBNull.Value),
                        mdl_MAE_Cliente_Final.incrementoRecogida_Porcentaje != null
                            ?   new SqlParameter("@incrementoRecogida_Porcentaje", mdl_MAE_Cliente_Final.incrementoRecogida_Porcentaje.Value)
                            :   new SqlParameter("@incrementoRecogida_Porcentaje",  DBNull.Value),
                         mdl_MAE_Cliente_Final.fechaAltaCRM != null
                            ?   new SqlParameter("@fechaAltaCRM", mdl_MAE_Cliente_Final.fechaAltaCRM.Value)
                            :   new SqlParameter("@fechaAltaCRM",  DBNull.Value),
                          mdl_MAE_Cliente_Final.fechaConversionCRM != null
                            ?   new SqlParameter("@fechaConversionCRM", mdl_MAE_Cliente_Final.fechaConversionCRM.Value)
                            :   new SqlParameter("@fechaConversionCRM",  DBNull.Value)
                    };
                    #endregion

                    //Id de la tabla
                    mdl_INTERNO_ValorDevuelto_Modelo.Id = obj_Exferia_Entities.Database.SqlQuery<long>(str_SQL_Insert, arr_Parametros_Insert).Single();
                }

                // Grabar un registro de trazabilidad con los datos de la transaccion realizada.
                Datos_Generales.USR_Trazabilidad_Grabar(typeof(MAE_Clientes), mdl_MAE_Cliente_DatosViejos, mdl_MAE_Cliente_Final, mdl_INTERNO_ValorDevuelto_Modelo.TipoAccion, obj_Exferia_Entities);
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(Grabar), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }

        public INTERNO_ValorDevuelto_Modelo Grabar(long _lng_idCliente, List<long> _lst_Cliente_Cadena)
        {
            Exferia_Entities dbcontext = null;
            INTERNO_ValorDevuelto_Modelo mdl_ValorDevuelto_Modelo = new INTERNO_ValorDevuelto_Modelo();
            mdl_ValorDevuelto_Modelo.TodoCorrecto = true;

            try
            {
                dbcontext = new Exferia_Entities();
                dbcontext.Configuration.ProxyCreationEnabled = true;

                //Borrar Relaciones Antiguas ..............................................
                string str_SQL_Borrar = " UPDATE " + nameof(MAE_Clientes) +
                                        " SET " +
                                            nameof(MAE_Clientes.idCliente_Cadena) + "=null " +
                                        " WHERE " + nameof(MAE_Clientes.idCliente_Cadena) + "=" + _lng_idCliente;
                dbcontext.Database.ExecuteSqlCommand(str_SQL_Borrar);
                //.........................................................................

                //Grabar Relaciones Nuevas .................................................
                if (_lst_Cliente_Cadena != null &&
                    _lst_Cliente_Cadena.Count > 0)
                {
                    string str_SQL_Insertar = "";
                    foreach (long lng_idCliente_Relacionado in _lst_Cliente_Cadena)
                    {
                        str_SQL_Insertar += " UPDATE " + nameof(MAE_Clientes) +
                                            " SET " +
                                                    nameof(MAE_Clientes.idCliente_Cadena) + "=" + _lng_idCliente +
                                            " WHERE " + nameof(MAE_Clientes.id) + "=" + lng_idCliente_Relacionado;
                    }
                    dbcontext.Database.ExecuteSqlCommand(str_SQL_Insertar);

                }
                else
                {
                    //Actualizar facturar cadena ..............................................
                    string str_SQL_Actualizar = " UPDATE " + nameof(MAE_Clientes) +
                                            " SET " +
                                                nameof(MAE_Clientes.facturarDatosCadena) + "=0, " +
                                                nameof(MAE_Clientes.imprimirDatosCadena) + "=0, " +
                                                nameof(MAE_Clientes.modeloFactura) + "='" + Variables.G_MDL_TIPOMODELOFACTURA_DESGLOSEALBARANES.Codigo + "'" +
                                            " WHERE " + nameof(MAE_Clientes.idCliente_Cadena) + "=" + _lng_idCliente;
                    dbcontext.Database.ExecuteSqlCommand(str_SQL_Actualizar);
                    //.........................................................................
                }


                //Actualizar facturar cadena ..............................................
                string str_SQL_Actualizar_AUX_2 = " UPDATE " + nameof(MAE_Clientes) +
                                        " SET " +
                                            nameof(MAE_Clientes.facturarDatosCadena) + "=0, " +
                                            nameof(MAE_Clientes.imprimirDatosCadena) + "=0, " +
                                            nameof(MAE_Clientes.modeloFactura) + "='" + Variables.G_MDL_TIPOMODELOFACTURA_DESGLOSEALBARANES.Codigo + "'" +
                                        " WHERE " + nameof(MAE_Clientes.idCliente_Cadena) + " is null AND " +
                                                    " ( not " + nameof(MAE_Clientes.facturarDatosCadena) + " is null) AND " +
                                                    nameof(MAE_Clientes.facturarDatosCadena) + "=1 ";
                dbcontext.Database.ExecuteSqlCommand(str_SQL_Actualizar_AUX_2);

            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(Grabar), true);
            }
            finally
            {
                dbcontext.Database.Connection.Close();
                dbcontext.Dispose();
            }

            return mdl_ValorDevuelto_Modelo;
        }

        public INTERNO_ValorDevuelto_Modelo Convertir_ClienteCRM_A_Definitivo(long _lng_idCliente)
        {
            Exferia_Entities dbcontext = null;

            INTERNO_ValorDevuelto_Modelo mdl_ValorDevuelto_Modelo = new INTERNO_ValorDevuelto_Modelo();
            mdl_ValorDevuelto_Modelo.TodoCorrecto = true;

            try
            {
                dbcontext = new Exferia_Entities();
                dbcontext.Configuration.ProxyCreationEnabled = true;

                string str_SQL_uPDATE = " UPDATE " + nameof(MAE_Clientes) +
                                        " SET " +
                                                nameof(MAE_Clientes.clienteCRM) + "= null, " +
                                                nameof(MAE_Clientes.fechaConversionCRM) + "= getDate() " +
                                        " WHERE " + nameof(MAE_Clientes.id) + "=" + _lng_idCliente;

                dbcontext.Database.ExecuteSqlCommand(str_SQL_uPDATE);

            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(Convertir_ClienteCRM_A_Definitivo), true);
            }
            finally
            {
                dbcontext.Database.Connection.Close();
                dbcontext.Dispose();
            }

            return mdl_ValorDevuelto_Modelo;
        }
        #endregion

        #region Borrar
        public override INTERNO_ValorDevuelto_Modelo Borrar(long _lng_id)
        {
            Exferia_Entities obj_Exferia_Entities = null;

            INTERNO_ValorDevuelto_Modelo mdl_ValorDevuelto_Modelo = new INTERNO_ValorDevuelto_Modelo();
            mdl_ValorDevuelto_Modelo.TodoCorrecto = true;
            //Tipo de Accion que se va a realizar
            mdl_ValorDevuelto_Modelo.TipoAccion = G_ENUM_TIPOACCION.INT_ELIMINAR;

            try
            {
                obj_Exferia_Entities = new Exferia_Entities();
                obj_Exferia_Entities.Configuration.LazyLoadingEnabled = false;

                // Ver si existe ######################################################################
                MAE_Clientes mdl_MAE_Clientes_Final = Obtener_Modelo_Por_Id(_lng_id, false, false, false, false, false, false, false, false);
                //######################################################################################

                if (mdl_MAE_Clientes_Final != null)
                {
                    #region Update
                    string str_SQL_Update = " UPDATE " + nameof(MAE_Clientes) +
                                                " SET " +
                                                nameof(MAE_Clientes.fechaBorrado) + "=@fechaBorrado " +
                                            " WHERE " +
                                                nameof(MAE_Clientes.id) + "=@id";
                    //Parametros
                    object[] arr_Parametros_Update = new object[]
                    {
                                 new SqlParameter("@fechaBorrado",  DateTime.Now),
                                new SqlParameter("@id", _lng_id)
                    };
                    #endregion

                    //Update
                    obj_Exferia_Entities.Database.ExecuteSqlCommand(str_SQL_Update, arr_Parametros_Update);

                    // Grabar un registro de trazabilidad con los datos de la transaccion realizada.
                    Datos_Generales.USR_Trazabilidad_Grabar(typeof(MAE_Clientes), null, mdl_MAE_Clientes_Final, G_ENUM_TIPOACCION.INT_ELIMINAR, obj_Exferia_Entities);
                }

                // Devolver también el Objeto
                mdl_ValorDevuelto_Modelo.Id = _lng_id;
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(Borrar), true);
            }
            finally
            {

                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }

            return mdl_ValorDevuelto_Modelo;
        }
        public override INTERNO_ValorDevuelto_Modelo Borrar(long _lng_id, long _lng_idAuxiliar)
        {
            throw new NotImplementedException();
        }
        public override INTERNO_ValorDevuelto_Modelo Borrar(object _mdl_obj)
        {
            return null;
        }
        #endregion

        #region Obtener Informe Altas/Conversiones EntreFechas
        public INTERNO_MAE_Clientes_InformeEntreFechas Obtener_InformeAltasConversiones_EntreFechas(DateTime? dtt_desdeFecha, DateTime? dtt_hastaFecha)
        {
            Exferia_Entities obj_Exferia_Entities = null;
            INTERNO_MAE_Clientes_InformeEntreFechas _mdl_result = new INTERNO_MAE_Clientes_InformeEntreFechas() { Clientes = 0, Leads = 0 };

            try
            {
                obj_Exferia_Entities = new Exferia_Entities();
                obj_Exferia_Entities.Configuration.LazyLoadingEnabled = false;

                string str_sql = $@"
                SELECT SUM(res.Leads) as Leads, SUM(res.Clientes) as Clientes
                FROM 
                (
	                SELECT COUNT(*) as Leads, Clientes = 0
	                FROM {nameof(MAE_Clientes)}
	                WHERE {nameof(MAE_Clientes.fechaAltaCRM)} BETWEEN @desdeFecha AND @hastaFecha
                        AND {nameof(MAE_Clientes.fechaConversionCRM)} IS NULL

	                UNION

	                SELECT Leads = 0, COUNT(*) as Clientes
	                FROM {nameof(MAE_Clientes)}
	                WHERE {nameof(MAE_Clientes.fechaConversionCRM)} BETWEEN @desdeFecha AND @hastaFecha
                ) as res";

                //Parametros
                var lst_Parametros = new List<SqlParameter>();
                lst_Parametros.Add(new SqlParameter("@desdeFecha", dtt_desdeFecha ?? (dynamic)DBNull.Value));
                lst_Parametros.Add(new SqlParameter("@hastaFecha", dtt_hastaFecha ?? (dynamic)DBNull.Value));

                object[] arr_Parametros = lst_Parametros.ToArray();

                //Rellenar el Modelo
                _mdl_result = obj_Exferia_Entities.Database.SqlQuery<INTERNO_MAE_Clientes_InformeEntreFechas>(str_sql, arr_Parametros).FirstOrDefault() ?? _mdl_result;

            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MAE_Clientes_Datos) + "/" + nameof(Obtener_InformeAltasConversiones_EntreFechas), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
            return _mdl_result;
        }
        #endregion Obtener Informe Altas/Conversiones EntreFechas
    }
}
