using Exferia_Aplicacion.General;
using Exferia_Aplicacion.Herencia.Capas;
using Exferia_Aplicacion.Modelos_Listado_Filtros;
using Exferia_EntityFramework;
using Exferia_General;
using Exferia_Ventas._0_Modelos;
using Exferia_Ventas._3_Vistas.Listados;
using Exferia_Ventas.General;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using static Exferia_Aplicacion.General.Enumerados;

namespace Exferia_Ventas._1_Datos
{
    public class VTA_PedidosCabecera_Datos : ABS_Datos
    {
        #region Listado
        public List<INTERNO_VTA_PedidosCabecera_Listado_Modelo> g_lst_INTERNO_VTA_PedidosCabecera_Listado_Modelo = new List<INTERNO_VTA_PedidosCabecera_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(VTA_PedidosCabecera).Name), _lst_CamposConRelacionABuscar, -1, null, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                // ..............................................................

                if ((g_lst_INTERNO_VTA_PedidosCabecera_Listado_Modelo != null) && (g_lst_INTERNO_VTA_PedidosCabecera_Listado_Modelo.Count() > 0))
                {
                    lst_MAE = g_lst_INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cast<dynamic>().ToList();
                }
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(VTA_PedidosCabecera_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(VTA_PedidosCabecera).Name), _lst_CamposConRelacionABuscar, _lng_id, _lst_ids, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                // ..............................................................

                if ((g_lst_INTERNO_VTA_PedidosCabecera_Listado_Modelo != null) && (g_lst_INTERNO_VTA_PedidosCabecera_Listado_Modelo.Count() > 0))
                {
                    dnm_MAE = g_lst_INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cast<dynamic>().ToList();
                }
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(VTA_PedidosCabecera_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
            {
                VTA_PedidosLineas_Datos obj_VTA_PedidosLineas_Datos = new VTA_PedidosLineas_Datos();


                string str_Filtro_Empresa = Funciones.Formar_ContenidoIN_ParaConsultaWhere(nameof(VTA_PedidosCabecera),
                                                                                            nameof(VTA_PedidosCabecera.idEmpresa),
                                                                                            G_ENUM_FORMARCONTENIDOIN_CONDICIONANTES.OR_INICIO,
                                                                                            _lst_idEmpresasRelacionadas);



                string str_Filtro_IDS = Funciones.Formar_ContenidoIN_ParaConsultaWhere(nameof(VTA_PedidosCabecera),
                                                                                            nameof(VTA_PedidosCabecera.id),
                                                                                            G_ENUM_FORMARCONTENIDOIN_CONDICIONANTES.AND_FIN,
                                                                                            _lst_ids);


                long lng_idCliente = -1;
                string str_Opcion_Cliente = "";

                bool bol_FiltrarEjercicio = false;
                DateTime? dtt_TemporadaInicio = null;
                DateTime? dtt_TemporadaFin = null;

                List<long> lst_idPedidoCabeceraUtilizados = new List<long>();
                bool bol_PedidosUtilizados = false;
                int int_Situacion_Pendiente = int.Parse(Variables.G_MDL_TIPOSITUACION_PEDIDOVENTA_PENDIENTE.Codigo);
                int int_Situacion_PartePendiente = int.Parse(Variables.G_MDL_TIPOSITUACION_PEDIDOVENTA_PARTEPENDIENTE.Codigo);

                bool? bol_PedidosServicio = null;

                bool? bol_Autorizados = null;

                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)
                    {
                        //Ejercicio
                        if (mdl_INTERNO_Filtro_OpcionPadre_Modelo.NOMBRE_CAMPO.Equals(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idEjercicio)))
                        {
                            //Buscar el Modelo de Ejercicio
                            GEN_EjerciciosActivos_Empresa mdl_GEN_EjerciciosActivos_Empresa = Datos_Generales.GEN_EjerciciosActivos_Empresa_Obtener_Por_Id(mdl_INTERNO_Filtro_OpcionPadre_Modelo.VALOR);

                            if (mdl_GEN_EjerciciosActivos_Empresa != null)
                            {
                                bol_FiltrarEjercicio = true;
                                dtt_TemporadaInicio = mdl_GEN_EjerciciosActivos_Empresa.temporadaFechaInicio;
                                dtt_TemporadaFin = mdl_GEN_EjerciciosActivos_Empresa.temporadaFechaFin;
                            }
                        }
                        //CLIENTE
                        else if (mdl_INTERNO_Filtro_OpcionPadre_Modelo.NOMBRE_CAMPO.Equals(Variables.G_STR_OPCION_MAE_CLIENTE))
                        {
                            lng_idCliente = mdl_INTERNO_Filtro_OpcionPadre_Modelo.VALOR;
                            str_Opcion_Cliente = mdl_INTERNO_Filtro_OpcionPadre_Modelo.NOMBRE_CAMPO;
                        }
                        //PEDIDOS YA UTILIZADOS
                        else if (mdl_INTERNO_Filtro_OpcionPadre_Modelo.NOMBRE_CAMPO.Equals(Variables_Ventas.G_STR_FILTRO_LISTADOSELECCION_PEDIDOS_YAUTILIZADOS))
                        {
                            bol_PedidosUtilizados = true;
                            List<long> lst_idsPedidosLinea_YaUtilizados = (List<long>)mdl_INTERNO_Filtro_OpcionPadre_Modelo.VALOR_AUXILIAR;

                            if (lst_idsPedidosLinea_YaUtilizados != null && lst_idsPedidosLinea_YaUtilizados.Count > 0)
                            {

                                lst_idPedidoCabeceraUtilizados = obj_VTA_PedidosLineas_Datos.Obtener_PedidosCabeceras_Por_Lineas(lst_idsPedidosLinea_YaUtilizados);
                            }
                        }
                        //PEDIDOS DE SERVICIO NO
                        else if (mdl_INTERNO_Filtro_OpcionPadre_Modelo.NOMBRE_CAMPO.Equals(Variables_Ventas.G_STR_FILTRO_LISTADOSELECCION_PEDIDOS_SERVICIO))
                        {
                            bol_PedidosServicio = (bool)mdl_INTERNO_Filtro_OpcionPadre_Modelo.VALOR_AUXILIAR;
                        }
                        //AUTORIZADOS
                        else if (mdl_INTERNO_Filtro_OpcionPadre_Modelo.NOMBRE_CAMPO.Equals(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.autorizado)))
                        {
                            bol_Autorizados = (bool)mdl_INTERNO_Filtro_OpcionPadre_Modelo.VALOR_AUXILIAR;
                        }
                    }
                }

                string str_Filtro_YUtilizados = Funciones.Formar_ContenidoIN_ParaConsultaWhere(lst_idPedidoCabeceraUtilizados);


                string str_SQL =
                    " SELECT " +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.id) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.id) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.numeroDocumento) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.numeroDocumento) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.descripcion) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descripcion) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.fecha) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fecha) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.guid) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.guid) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.estado) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.estado) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.tipoVisita) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.tipoVisita) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.descuentoProntoPago) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descuentoProntoPago) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.descuentoFinalFactura) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descuentoFinalFactura) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.descuentoFinalAlbaran) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descuentoFinalAlbaran) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.referencia) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.referencia) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.fechaPrevista) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fechaPrevista) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.recargo) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.recargo) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.situacion) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.situacion) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.autorizado) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.autorizado) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.observaciones) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.observaciones) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.total_bruto) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_bruto) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.total_descuentoProntoPago) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_descuentoProntoPago) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.total_descuentoFinalFactura) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_descuentoFinalFactura) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.total_baseImponible) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_baseImponible) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.total_impuesto) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_impuesto) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.total_recargo) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_recargo) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.total_descuentoFinalAlbaran) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_descuentoFinalAlbaran) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.total) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Bolsa) + " = (CASE WHEN VTA_PedidosCabecera_Bolsa_Filtrado." + nameof(VTA_PedidosCabecera_Bolsa.id) + " > -1 THEN convert(bit,1) ELSE convert(bit,0) END)," +
                        //ids
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idDelegacion) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idDelegacion) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idEmpresa) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idEmpresa) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idCliente) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idCliente) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idMoneda) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idMoneda) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idImpuestoCabecera) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idImpuestoCabecera) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idRelacionClienteProveedor) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idRelacionClienteProveedor) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idEmpleado) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idEmpleado) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idVendedor_Preventa) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_Preventa) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idVendedor_PreventaHabitual) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_PreventaHabitual) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idVendedor_Repartidor) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_Repartidor) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idPredefinidoCabecera_Pedido) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Pedido) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idPredefinidoCabecera_Cancelacion) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Cancelacion) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idPredefinidoCabecera_Anulacion) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Anulacion) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idClaveAnalitica) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idClaveAnalitica) + "," +
                        //Delegacion
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Delegacion)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Delegacion_Codigo) + " = " + nameof(GEN_Delegaciones) + "." + nameof(GEN_Delegaciones.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Delegacion_Descripcion) + " =" + nameof(GEN_Delegaciones) + "." + nameof(GEN_Delegaciones.descripcion) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Delegacion_FechaBorrado) + " =" + nameof(GEN_Delegaciones) + "." + nameof(GEN_Delegaciones.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Delegacion_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Delegacion_Descripcion) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Delegacion_FechaBorrado) + " = NULL, "
                                )
                        ) +
                        //Empresa
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empresa)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empresa_Codigo) + " = " + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empresa_Descripcion) + " =" + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.descripcion) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empresa_FechaBorrado) + " =" + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empresa_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empresa_Descripcion) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empresa_FechaBorrado) + " = NULL, "
                                )
                        ) +
                        //Cliente_Codigo
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_Codigo)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_Codigo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.codigo) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_Codigo) + " = '',"
                                )
                        ) +
                        //Cliente_RazonSocial
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_RazonSocial)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_RazonSocial) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.razonSocial) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_RazonSocial) + " = '',"
                                )
                        ) +
                        //Cliente_NombreComercial
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_NombreComercial)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_NombreComercial) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.nombreComercial) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_NombreComercial) + " = '',"
                                )
                        ) +
                        //Moneda
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Moneda)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Moneda_Codigo) + " = " + nameof(GEN_Monedas) + "." + nameof(GEN_Monedas.moneda) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Moneda_Descripcion) + " =" + nameof(GEN_Monedas) + "." + nameof(GEN_Monedas.descripcion) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Moneda_FechaBorrado) + " =" + nameof(GEN_Monedas) + "." + nameof(GEN_Monedas.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Moneda_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Moneda_Descripcion) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Moneda_FechaBorrado) + " = NULL, "
                                )
                        ) +
                        //ImpuestoCabecera
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ImpuestoCabecera)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ImpuestoCabecera_Codigo) + " = " + nameof(GEN_ImpuestosCabecera) + "." + nameof(GEN_ImpuestosCabecera.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ImpuestoCabecera_Descripcion) + " =" + nameof(GEN_ImpuestosCabecera) + "." + nameof(GEN_ImpuestosCabecera.descripcion) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ImpuestoCabecera_FechaBorrado) + " =" + nameof(GEN_ImpuestosCabecera) + "." + nameof(GEN_ImpuestosCabecera.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ImpuestoCabecera_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ImpuestoCabecera_Descripcion) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ImpuestoCabecera_FechaBorrado) + " = NULL, "
                                )
                        ) +
                        //RelacionClienteProveedor
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor)) ||
                             _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Es_Servicio)) ||
                             _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Proveedor)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor_id) + " = " + nameof(SRV_Relacion_ClienteProveedor) + "." + nameof(SRV_Relacion_ClienteProveedor.id) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor_idProveedor) + " = " + nameof(SRV_Relacion_ClienteProveedor) + "." + nameof(SRV_Relacion_ClienteProveedor.idProveedor) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor_Codigo) + " = " + nameof(SRV_Relacion_ClienteProveedor) + "." + nameof(SRV_Relacion_ClienteProveedor.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor_Descripcion) + " =" + nameof(SRV_Relacion_ClienteProveedor) + "." + nameof(SRV_Relacion_ClienteProveedor.descripcion) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor_FechaBorrado) + " =" + nameof(SRV_Relacion_ClienteProveedor) + "." + nameof(SRV_Relacion_ClienteProveedor.fechaBorrado) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Proveedor_Codigo) + " = " + nameof(MAE_Proveedores) + "." + nameof(MAE_Proveedores.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Proveedor_RazonSocial) + " =" + nameof(MAE_Proveedores) + "." + nameof(MAE_Proveedores.razonSocial) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Proveedor_NombreComercial) + " =" + nameof(MAE_Proveedores) + "." + nameof(MAE_Proveedores.nombreComercial) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Proveedor_FechaBorrado) + " =" + nameof(MAE_Proveedores) + "." + nameof(MAE_Proveedores.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor_id) + " = NULL," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor_idProveedor) + " = NULL," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor_Descripcion) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor_FechaBorrado) + " = NULL, " +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Proveedor_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Proveedor_RazonSocial) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Proveedor_NombreComercial) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Proveedor_FechaBorrado) + " = NULL," 
                                )
                        ) +
                        //Empleado
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empleado)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empleado_Codigo) + " = " + nameof(MAE_Empleados) + "." + nameof(MAE_Empleados.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empleado_Nombre) + " =" + nameof(MAE_Empleados) + "." + nameof(MAE_Empleados.nombre) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empleado_FechaBorrado) + " =" + nameof(MAE_Empleados) + "." + nameof(MAE_Empleados.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empleado_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empleado_Nombre) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empleado_FechaBorrado) + " = NULL, "
                                )
                        ) +
                        //Vendedor(Preventa)
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Preventa)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Preventa_Codigo) + " = " + nameof(MAE_Vendedores) + "_AUX_1." + nameof(MAE_Vendedores.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Preventa_Nombre) + " = " + nameof(MAE_Vendedores) + "_AUX_1." + nameof(MAE_Vendedores.nombre) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Preventa_FechaBorrado) + " " + nameof(MAE_Vendedores) + "_AUX_1." + nameof(MAE_Vendedores.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Preventa_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Preventa_Nombre) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Preventa_FechaBorrado) + " = NULL, "
                                )
                        ) +
                        //Vendedor(PreventaHabitual)
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_PreventaHabitual)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_PreventaHabitual_Codigo) + " =  " + nameof(MAE_Vendedores) + "_AUX_2." + nameof(MAE_Vendedores.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_PreventaHabitual_Nombre) + " =  " + nameof(MAE_Vendedores) + "_AUX_2." + nameof(MAE_Vendedores.nombre) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_PreventaHabitual_FechaBorrado) + " =  " + nameof(MAE_Vendedores) + "_AUX_2." + nameof(MAE_Vendedores.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_PreventaHabitual_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_PreventaHabitual_Nombre) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_PreventaHabitual_FechaBorrado) + " = NULL, "
                                )
                        ) +
                        //Vendedor(Repartidor)
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Repartidor)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Repartidor_Codigo) + " =  " + nameof(MAE_Vendedores) + "_AUX_3." + nameof(MAE_Vendedores.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Repartidor_Nombre) + " =  " + nameof(MAE_Vendedores) + "_AUX_3." + nameof(MAE_Vendedores.nombre) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Repartidor_FechaBorrado) + " =  " + nameof(MAE_Vendedores) + "_AUX_3." + nameof(MAE_Vendedores.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Repartidor_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Repartidor_Nombre) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Repartidor_FechaBorrado) + " = NULL, "
                                )
                        ) +
                        //PredefinidoCabecera (pedido)
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraPedido)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraPedido_Codigo) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_1." + nameof(CTA_PredefinidosCabeceras.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraPedido_Descripcion) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_1." + nameof(CTA_PredefinidosCabeceras.descripcion) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraPedido_FechaBorrado) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_1." + nameof(CTA_PredefinidosCabeceras.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraPedido_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraPedido_Descripcion) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraPedido_FechaBorrado) + " = NULL, "
                                )
                        ) +
                        //PredefinidoCabecera (cancelacion)
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraCancelacion)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraCancelacion_Codigo) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_2." + nameof(CTA_PredefinidosCabeceras.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraCancelacion_Descripcion) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_2." + nameof(CTA_PredefinidosCabeceras.descripcion) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraCancelacion_FechaBorrado) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_2." + nameof(CTA_PredefinidosCabeceras.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraCancelacion_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraCancelacion_Descripcion) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraCancelacion_FechaBorrado) + " = NULL, "
                                )
                        ) +
                        //PredefinidoCabecera (Servicio)
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraAnulacion)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraAnulacion_Codigo) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_3." + nameof(CTA_PredefinidosCabeceras.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraAnulacion_Descripcion) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_3." + nameof(CTA_PredefinidosCabeceras.descripcion) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraAnulacion_FechaBorrado) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_3." + nameof(CTA_PredefinidosCabeceras.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraAnulacion_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraAnulacion_Descripcion) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraAnulacion_FechaBorrado) + " = NULL, "
                                )
                        ) +
                        //ClaveAnalitica
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ClaveAnalitica)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ClaveAnalitica_Codigo) + " = " + nameof(CTA_ClavesAnaliticas) + "." + nameof(CTA_ClavesAnaliticas.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ClaveAnalitica_Descripcion) + " = " + nameof(CTA_ClavesAnaliticas) + "." + nameof(CTA_ClavesAnaliticas.descripcion) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ClaveAnalitica_FechaBorrado) + " = " + nameof(CTA_ClavesAnaliticas) + "." + nameof(CTA_ClavesAnaliticas.fechaBorrado)
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ClaveAnalitica_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ClaveAnalitica_Descripcion) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ClaveAnalitica_FechaBorrado) + " = NULL "
                                )
                        ) +
                        " FROM " + nameof(VTA_PedidosCabecera) +
                        //Delegacion
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Delegacion)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(GEN_Delegaciones) + " ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idDelegacion) + " = " + nameof(GEN_Delegaciones) + "." + nameof(GEN_Delegaciones.id)
                                    )
                                : ("")
                        ) +
                        //Empresa
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empresa)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(GEN_Empresas) + " ON  " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idEmpresa) + " = " + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.id)
                                    )
                                : ("")
                        ) +
                        //Cliente
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_Codigo)) ||
                                _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_RazonSocial)) ||
                                _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_NombreComercial)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(MAE_Clientes) + " ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idCliente) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id)
                                    )
                                : ("")
                        ) +
                        //Moneda
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Moneda)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(GEN_Monedas) + " ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idMoneda) + " = " + nameof(GEN_Monedas) + "." + nameof(GEN_Monedas.id)
                                    )
                                : ("")
                        ) +
                        //ImpuestoCabecera
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ImpuestoCabecera)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(GEN_ImpuestosCabecera) + " ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idImpuestoCabecera) + " = " + nameof(GEN_ImpuestosCabecera) + "." + nameof(GEN_ImpuestosCabecera.id)
                                    )
                                : ("")
                        ) +
                        //RelacionClienteProveedor
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor)) ||
                                 _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Es_Servicio)) ||
                                 _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Proveedor)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(SRV_Relacion_ClienteProveedor) + " ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idRelacionClienteProveedor) + " = " + nameof(SRV_Relacion_ClienteProveedor) + "." + nameof(SRV_Relacion_ClienteProveedor.id) +
                                        " LEFT JOIN " + nameof(MAE_Proveedores) + " ON " + nameof(SRV_Relacion_ClienteProveedor) + "." + nameof(SRV_Relacion_ClienteProveedor.idProveedor) + " = " + nameof(MAE_Proveedores) + "." + nameof(MAE_Proveedores.id)
                                    )
                                : ("")
                        ) +
                        //Empleado
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empleado)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(MAE_Empleados) + " ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idEmpleado) + " = " + nameof(MAE_Empleados) + "." + nameof(MAE_Empleados.id)
                                    )
                                : ("")
                        ) +
                        //Vendedor(Preventa)
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Preventa)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(MAE_Vendedores) + " as " + nameof(MAE_Vendedores) + "_AUX_1 ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_Preventa) + " = " + nameof(MAE_Vendedores) + "_AUX_1." + nameof(MAE_Vendedores.id)
                                    )
                                : ("")
                        ) +
                        //Vendedor(PreventaHabitual)
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_PreventaHabitual)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(MAE_Vendedores) + " as " + nameof(MAE_Vendedores) + "_AUX_2 ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_PreventaHabitual) + " = " + nameof(MAE_Vendedores) + "_AUX_2." + nameof(MAE_Vendedores.id)
                                    )
                                : ("")
                        ) +
                        //Vendedor(Repartidor)
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Repartidor)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(MAE_Vendedores) + " as " + nameof(MAE_Vendedores) + "_AUX_3 ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_Repartidor) + " = " + nameof(MAE_Vendedores) + "_AUX_3." + nameof(MAE_Vendedores.id)
                                    )
                                : ("")
                        ) +
                        //PredefinidoCabecera (Albaran)
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraPedido)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(CTA_PredefinidosCabeceras) + " AS " + nameof(CTA_PredefinidosCabeceras) + "_AUX_1 ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Pedido) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_1." + nameof(CTA_PredefinidosCabeceras.id)
                                    )
                                : ("")
                        ) +
                        //PredefinidoCabecera (Servicio)
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraCancelacion)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(CTA_PredefinidosCabeceras) + " AS " + nameof(CTA_PredefinidosCabeceras) + "_AUX_2 ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Cancelacion) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_2." + nameof(CTA_PredefinidosCabeceras.id)
                                    )
                                : ("")
                        ) +
                        //PredefinidoCabecera (Servicio)
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraAnulacion)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(CTA_PredefinidosCabeceras) + " AS " + nameof(CTA_PredefinidosCabeceras) + "_AUX_3 ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Anulacion) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_3." + nameof(CTA_PredefinidosCabeceras.id)
                                    )
                                : ("")
                        ) +
                        //ClaveAnalitica
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ClaveAnalitica)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(CTA_ClavesAnaliticas) + " ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idClaveAnalitica) + " = " + nameof(CTA_ClavesAnaliticas) + "." + nameof(CTA_ClavesAnaliticas.id)
                                    )
                                : ("")
                        ) +
                    //PEDIDO_BOLSA
                    " LEFT JOIN ( " +
                                    "SELECT " +
                                        nameof(VTA_PedidosCabecera_Bolsa) + "." + nameof(VTA_PedidosCabecera_Bolsa.id) + "," +
                                        nameof(VTA_PedidosCabecera_Bolsa) + "." + nameof(VTA_PedidosCabecera_Bolsa.idUsuario) + "," +
                                        nameof(VTA_PedidosCabecera_Bolsa) + "." + nameof(VTA_PedidosCabecera_Bolsa.idPedidoCabecera) +
                                    " FROM " + nameof(VTA_PedidosCabecera_Bolsa) +
                                    " WHERE " + nameof(VTA_PedidosCabecera_Bolsa) + "." + nameof(VTA_PedidosCabecera_Bolsa.idUsuario) + "=" + Variables.G_MDL_USUARIOVALIDADO_MODELO.id +
                              " ) AS VTA_PedidosCabecera_Bolsa_Filtrado ON VTA_PedidosCabecera_Bolsa_Filtrado." + nameof(VTA_PedidosCabecera_Bolsa.idPedidoCabecera) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.id) +
                    " WHERE " +
                            //fechaBorrado
                            " ( " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fechaBorrado) + " is null ) AND " +
                            //id
                            " ( " +
                                (
                                    (_lng_id > -1)
                                        ? (nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.id) + "=@id ")
                                        : " 1 = 1 "
                                ) +
                            " ) AND " +
                            //ids
                            str_Filtro_IDS +
                            //Empresa
                            " ( " +
                                nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idEmpresa) + "=" + _lng_idEmpresaSeleccionada + str_Filtro_Empresa +
                            " ) AND " +
                            //Cliente
                            " ( " +
                                (
                                     str_Opcion_Cliente != ""
                                         ? (
                                                " (not " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idCliente) + " is null ) and " +
                                                nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idCliente) + "=" + lng_idCliente
                                            )
                                         : " 1 = 1 "
                                ) +
                            " ) AND " +
                            //PedidosVentaCabecera ya Utiliadas
                            " ( " +
                                (
                                    str_Filtro_YUtilizados.Trim().Length>0
                                    ? " (not " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.id) + " in (" + str_Filtro_YUtilizados + ") ) "
                                    : " 1 = 1 "
                                ) +
                            " ) and " +
                            //Situacion de pendiente o parte pendiente
                            " ( " +
                                (
                                    bol_PedidosUtilizados
                                        ?
                                            (
                                                 nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.situacion) + "=" + int_Situacion_Pendiente + " or " + 
                                                 nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.situacion) + "=" + int_Situacion_PartePendiente
                                            )
                                        : " 1 = 1 " 
                                ) +
                            " ) and " +
                            //Quitar los pedido de Servicio
                            " ( " +
                                (
                                    (bol_PedidosServicio!=null)
                                        ? (bol_PedidosServicio.Value)
                                            ? "( not " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idRelacionClienteProveedor) + " is null) "
                                            : nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idRelacionClienteProveedor) + " is null "
                                        : " 1 = 1 "
                                ) +
                            " ) and " +
                            //Autorizado
                            " ( " +
                                (
                                    (bol_Autorizados!=null)
                                    ? bol_Autorizados.Value
                                        ? nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.autorizado) + " = 1 "
                                        : "(" +  nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.autorizado) + " is null or " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.autorizado) + "=0 )"
                                    : " 1 = 1 "
                                ) +
                            " ) and " +
                            //Ejercicio
                            " ( " +
                                (
                                    bol_FiltrarEjercicio == true
                                        ? (
                                                nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fecha) + " <=@TemporadaFin AND " +
                                                nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fecha) + " >=@TemporadaInicio "
                                            )
                                        : " 1 = 1 "
                                ) +
                            " ) ";

                //Parametros
                List<SqlParameter> lst_Parametros = new List<SqlParameter>();
                if (_lng_id > -1)
                {
                    lst_Parametros.Add(new SqlParameter("@id", _lng_id));
                }

                if (bol_FiltrarEjercicio)
                {
                    lst_Parametros.Add(new SqlParameter("@TemporadaFin", dtt_TemporadaFin.Value));
                    lst_Parametros.Add(new SqlParameter("@TemporadaInicio", dtt_TemporadaInicio.Value));
                }

                object[] arr_Parametros = lst_Parametros.ToArray();

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

                //Añadir los Ejercicios
                if (g_lst_INTERNO_VTA_PedidosCabecera_Listado_Modelo != null && g_lst_INTERNO_VTA_PedidosCabecera_Listado_Modelo.Count > 0)
                {
                    Agregar_Ejercicios(_lng_idEmpresaSeleccionada);
                }

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

        private void Agregar_Ejercicios(long _lng_idEmpresaSeleccionada)
        {
            try
            {
                List<GEN_EjerciciosActivos_Empresa> lst_GEN_EjerciciosActivos_Empresa = Datos_Generales.GEN_EjerciciosActivos_Empresa_Obtener_Listado_Por_Empresa(_lng_idEmpresaSeleccionada);

                if (lst_GEN_EjerciciosActivos_Empresa != null)
                {
                    //Rellenar el Listado
                    foreach (INTERNO_VTA_PedidosCabecera_Listado_Modelo mdl_INTERNO_VTA_PedidosCabecera_Listado_Modelo in g_lst_INTERNO_VTA_PedidosCabecera_Listado_Modelo)
                    {
                        mdl_INTERNO_VTA_PedidosCabecera_Listado_Modelo.Ejercicios_Empresa = lst_GEN_EjerciciosActivos_Empresa.Where(m => m.temporadaFechaFin >= mdl_INTERNO_VTA_PedidosCabecera_Listado_Modelo.fecha &&
                                                                                                                                            m.temporadaFechaInicio <= mdl_INTERNO_VTA_PedidosCabecera_Listado_Modelo.fecha)
                                                                                                                              .FirstOrDefault();
                    }
                }
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(VTA_PedidosCabecera_Datos) + "/" + nameof(Agregar_Ejercicios), true);
            }
        }

        #endregion

        #region Listado Secundario
        public List<INTERNO_VTA_PedidosCabecera_Listado_Modelo> g_lst_INTERNO_VTA_PedidosCabecera_Listado_Modelo_LISTADOSECUNDARIO = new List<INTERNO_VTA_PedidosCabecera_Listado_Modelo>();

        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)
        {
            Exferia_Entities obj_Exferia_Entities = null;
            List<dynamic> lst_AUX = null;

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

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

                if ((g_lst_INTERNO_VTA_PedidosCabecera_Listado_Modelo_LISTADOSECUNDARIO != null) && (g_lst_INTERNO_VTA_PedidosCabecera_Listado_Modelo_LISTADOSECUNDARIO.Count() > 0))
                {
                    lst_AUX = g_lst_INTERNO_VTA_PedidosCabecera_Listado_Modelo_LISTADOSECUNDARIO.Cast<dynamic>().ToList();
                }
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(VTA_PedidosCabecera_Datos) + "/" + nameof(Obtener_Listado_Secundario), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
            return lst_AUX;
        }
        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)
        {
            Exferia_Entities obj_Exferia_Entities = null;
            dynamic dnm_AUX = null;

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

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

                if ((g_lst_INTERNO_VTA_PedidosCabecera_Listado_Modelo_LISTADOSECUNDARIO != null) && (g_lst_INTERNO_VTA_PedidosCabecera_Listado_Modelo_LISTADOSECUNDARIO.Count() > 0))
                {
                    dnm_AUX = g_lst_INTERNO_VTA_PedidosCabecera_Listado_Modelo_LISTADOSECUNDARIO.Cast<dynamic>().ToList();
                }
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(VTA_PedidosCabecera_Datos) + "/" + nameof(Obtener_RegistroListado_Secundario), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
            return dnm_AUX;
        }
   
        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)
        {
            try
            {
                string str_Filtro_Empresa = Funciones.Formar_ContenidoIN_ParaConsultaWhere(nameof(VTA_PedidosCabecera),
                                                                                            nameof(VTA_PedidosCabecera.idEmpresa),
                                                                                            G_ENUM_FORMARCONTENIDOIN_CONDICIONANTES.OR_INICIO,
                                                                                            _lst_idEmpresasRelacionadas);

                //Datos del Padre si los tuviera .........................
                long lng_idCliente = -1;
                string str_Opcion_Cliente = "";

                long lng_idArticulo = -1;
                string str_Opcion_Articulo = "";

                long lng_idArticuloComodin = -1;
                string str_Opcion_ArticuloComodin = "";

                bool bol_FiltrarEjercicio = false;
                DateTime? dtt_TemporadaInicio = null;
                DateTime? dtt_TemporadaFin = null;

                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)
                    {
                        //Ejercicio
                        if (mdl_INTERNO_Filtro_OpcionPadre_Modelo.NOMBRE_CAMPO.Equals(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idEjercicio)))
                        {
                            //Buscar el Modelo de Ejercicio
                            GEN_EjerciciosActivos_Empresa mdl_GEN_EjerciciosActivos_Empresa = Datos_Generales.GEN_EjerciciosActivos_Empresa_Obtener_Por_Id(mdl_INTERNO_Filtro_OpcionPadre_Modelo.VALOR);

                            if (mdl_GEN_EjerciciosActivos_Empresa != null)
                            {
                                bol_FiltrarEjercicio = true;
                                dtt_TemporadaInicio = mdl_GEN_EjerciciosActivos_Empresa.temporadaFechaInicio;
                                dtt_TemporadaFin = mdl_GEN_EjerciciosActivos_Empresa.temporadaFechaFin;
                            }
                        }
                        //CLIENTE
                        else if (mdl_INTERNO_Filtro_OpcionPadre_Modelo.NOMBRE_CAMPO.Equals(Variables.G_STR_OPCION_MAE_CLIENTE))
                        {
                            lng_idCliente = mdl_INTERNO_Filtro_OpcionPadre_Modelo.VALOR;
                            str_Opcion_Cliente = mdl_INTERNO_Filtro_OpcionPadre_Modelo.NOMBRE_CAMPO;
                        }
                        //ARTICULO
                        else if (mdl_INTERNO_Filtro_OpcionPadre_Modelo.NOMBRE_CAMPO.Equals(Variables.G_STR_OPCION_MAE_ARTICULO))
                        {
                            lng_idArticulo = mdl_INTERNO_Filtro_OpcionPadre_Modelo.VALOR;
                            str_Opcion_Articulo = mdl_INTERNO_Filtro_OpcionPadre_Modelo.NOMBRE_CAMPO;
                        }
                        //ARTICULOCOMODIN
                        else if (mdl_INTERNO_Filtro_OpcionPadre_Modelo.NOMBRE_CAMPO.Equals(Variables.G_STR_OPCION_MAE_ARTICULOCOMODIN))
                        {
                            lng_idArticuloComodin = mdl_INTERNO_Filtro_OpcionPadre_Modelo.VALOR;
                            str_Opcion_ArticuloComodin = mdl_INTERNO_Filtro_OpcionPadre_Modelo.NOMBRE_CAMPO;
                        }
                    }
                }

                //Si tiene filto por articulo y por articulo comodin y los dos estan a -1 se deja solo uno
                if (str_Opcion_Articulo.Trim().Length > 0 &&
                    str_Opcion_ArticuloComodin.Trim().Length > 0)
                {
                    if (lng_idArticulo == -1 &&
                        lng_idArticuloComodin > -1)
                    {
                        str_Opcion_Articulo = "";
                    }
                    else if (lng_idArticuloComodin == -1 &&
                             lng_idArticulo > -1)
                    {
                        str_Opcion_ArticuloComodin = "";
                    }
                    else
                    {
                        str_Opcion_ArticuloComodin = "";
                    }
                }

                #region Pedidos Lineas Por Articulo
                List<long> lst_idsPedidoCabecera_PorArticulo = null;

                if (lng_idArticulo > -1)
                {
                    VTA_PedidosLineas_Datos obj_VTA_PedidosLineas_Datos = new VTA_PedidosLineas_Datos();
                    lst_idsPedidoCabecera_PorArticulo = obj_VTA_PedidosLineas_Datos.Obtener_IdsPedidoCabecera_PorIdArticulo(lng_idArticulo);
                }
                if (lst_idsPedidoCabecera_PorArticulo == null)
                {
                    lst_idsPedidoCabecera_PorArticulo = new List<long>();
                }

                string str_Filtro_PedidosPorArticulo = Funciones.Formar_ContenidoIN_ParaConsultaWhere(nameof(VTA_PedidosCabecera),
                                                                                                    nameof(VTA_PedidosCabecera.id),
                                                                                                    G_ENUM_FORMARCONTENIDOIN_CONDICIONANTES.NADA,
                                                                                                    lst_idsPedidoCabecera_PorArticulo);
                #endregion

                #region Pedidos Lineas Por Articulo Comodin
                List<long> lst_idsPedidoCabecera_PorArticuloComodin = null;

                if (lng_idArticuloComodin > -1)
                {
                    VTA_PedidosLineas_Datos obj_VTA_PedidosLineas_Datos = new VTA_PedidosLineas_Datos();
                    lst_idsPedidoCabecera_PorArticuloComodin = obj_VTA_PedidosLineas_Datos.Obtener_IdsPedidoCabecera_PorIdArticuloComodin(lng_idArticuloComodin);
                }
                if (lst_idsPedidoCabecera_PorArticuloComodin == null)
                {
                    lst_idsPedidoCabecera_PorArticuloComodin = new List<long>();
                }

                string str_Filtro_PedidosPorArticuloComodin = Funciones.Formar_ContenidoIN_ParaConsultaWhere(nameof(VTA_PedidosCabecera),
                                                                                                    nameof(VTA_PedidosCabecera.id),
                                                                                                    G_ENUM_FORMARCONTENIDOIN_CONDICIONANTES.NADA,
                                                                                                    lst_idsPedidoCabecera_PorArticuloComodin);
                #endregion


                string str_Filtro_Pedidos = Funciones.Formar_ContenidoIN_ParaConsultaWhere(nameof(VTA_PedidosCabecera),
                                                                                                     nameof(VTA_PedidosCabecera.id),
                                                                                                     G_ENUM_FORMARCONTENIDOIN_CONDICIONANTES.AND_FIN,
                                                                                                     _lst_ids);

                


                string str_SQL =
                         " SELECT " +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.id) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.id) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.numeroDocumento) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.numeroDocumento) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.descripcion) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descripcion) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.fecha) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fecha) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.guid) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.guid) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.estado) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.estado) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.tipoVisita) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.tipoVisita) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.descuentoProntoPago) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descuentoProntoPago) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.descuentoFinalFactura) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descuentoFinalFactura) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.descuentoFinalAlbaran) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descuentoFinalAlbaran) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.referencia) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.referencia) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.fechaPrevista) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fechaPrevista) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.recargo) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.recargo) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.situacion) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.situacion) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.autorizado) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.autorizado) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.observaciones) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.observaciones) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.total_bruto) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_bruto) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.total_descuentoProntoPago) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_descuentoProntoPago) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.total_descuentoFinalFactura) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_descuentoFinalFactura) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.total_baseImponible) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_baseImponible) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.total_impuesto) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_impuesto) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.total_recargo) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_recargo) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.total_descuentoFinalAlbaran) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_descuentoFinalAlbaran) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.total) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total) + "," +
                        //ids
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idDelegacion) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idDelegacion) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idEmpresa) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idEmpresa) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idCliente) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idCliente) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idMoneda) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idMoneda) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idImpuestoCabecera) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idImpuestoCabecera) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idRelacionClienteProveedor) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idRelacionClienteProveedor) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idEmpleado) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idEmpleado) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idVendedor_Preventa) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_Preventa) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idVendedor_PreventaHabitual) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_PreventaHabitual) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idVendedor_Repartidor) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_Repartidor) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idPredefinidoCabecera_Pedido) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Pedido) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idPredefinidoCabecera_Cancelacion) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Cancelacion) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idPredefinidoCabecera_Anulacion) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Anulacion) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.idClaveAnalitica) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idClaveAnalitica) + "," +
                        //Delegacion
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Delegacion)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Delegacion_Codigo) + " = " + nameof(GEN_Delegaciones) + "." + nameof(GEN_Delegaciones.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Delegacion_Descripcion) + " =" + nameof(GEN_Delegaciones) + "." + nameof(GEN_Delegaciones.descripcion) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Delegacion_FechaBorrado) + " =" + nameof(GEN_Delegaciones) + "." + nameof(GEN_Delegaciones.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Delegacion_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Delegacion_Descripcion) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Delegacion_FechaBorrado) + " = NULL, "
                                )
                        ) +
                        //Empresa
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empresa)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empresa_Codigo) + " = " + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empresa_Descripcion) + " =" + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.descripcion) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empresa_FechaBorrado) + " =" + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empresa_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empresa_Descripcion) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empresa_FechaBorrado) + " = NULL, "
                                )
                        ) +
                        //Cliente_Codigo
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_Codigo)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_Codigo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.codigo) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_Codigo) + " = '',"
                                )
                        ) +
                        //Cliente_RazonSocial
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_RazonSocial)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_RazonSocial) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.razonSocial) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_RazonSocial) + " = '',"
                                )
                        ) +
                        //Cliente_NombreComercial
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_NombreComercial)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_NombreComercial) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.nombreComercial) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_NombreComercial) + " = '',"
                                )
                        ) +
                        //Moneda
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Moneda)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Moneda_Codigo) + " = " + nameof(GEN_Monedas) + "." + nameof(GEN_Monedas.moneda) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Moneda_Descripcion) + " =" + nameof(GEN_Monedas) + "." + nameof(GEN_Monedas.descripcion) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Moneda_FechaBorrado) + " =" + nameof(GEN_Monedas) + "." + nameof(GEN_Monedas.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Moneda_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Moneda_Descripcion) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Moneda_FechaBorrado) + " = NULL, "
                                )
                        ) +
                        //ImpuestoCabecera
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ImpuestoCabecera)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ImpuestoCabecera_Codigo) + " = " + nameof(GEN_ImpuestosCabecera) + "." + nameof(GEN_ImpuestosCabecera.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ImpuestoCabecera_Descripcion) + " =" + nameof(GEN_ImpuestosCabecera) + "." + nameof(GEN_ImpuestosCabecera.descripcion) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ImpuestoCabecera_FechaBorrado) + " =" + nameof(GEN_ImpuestosCabecera) + "." + nameof(GEN_ImpuestosCabecera.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ImpuestoCabecera_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ImpuestoCabecera_Descripcion) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ImpuestoCabecera_FechaBorrado) + " = NULL, "
                                )
                        ) +
                        //RelacionClienteProveedor
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor)) ||
                             _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Es_Servicio)) ||
                             _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Proveedor)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor_id) + " = " + nameof(SRV_Relacion_ClienteProveedor) + "." + nameof(SRV_Relacion_ClienteProveedor.id) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor_idProveedor) + " = " + nameof(SRV_Relacion_ClienteProveedor) + "." + nameof(SRV_Relacion_ClienteProveedor.idProveedor) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor_Codigo) + " = " + nameof(SRV_Relacion_ClienteProveedor) + "." + nameof(SRV_Relacion_ClienteProveedor.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor_Descripcion) + " =" + nameof(SRV_Relacion_ClienteProveedor) + "." + nameof(SRV_Relacion_ClienteProveedor.descripcion) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor_FechaBorrado) + " =" + nameof(SRV_Relacion_ClienteProveedor) + "." + nameof(SRV_Relacion_ClienteProveedor.fechaBorrado) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Proveedor_Codigo) + " = " + nameof(MAE_Proveedores) + "." + nameof(MAE_Proveedores.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Proveedor_RazonSocial) + " =" + nameof(MAE_Proveedores) + "." + nameof(MAE_Proveedores.razonSocial) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Proveedor_NombreComercial) + " =" + nameof(MAE_Proveedores) + "." + nameof(MAE_Proveedores.nombreComercial) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Proveedor_FechaBorrado) + " =" + nameof(MAE_Proveedores) + "." + nameof(MAE_Proveedores.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor_id) + " = NULL," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor_idProveedor) + " = NULL," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor_Descripcion) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor_FechaBorrado) + " = NULL, " +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Proveedor_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Proveedor_RazonSocial) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Proveedor_NombreComercial) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Proveedor_FechaBorrado) + " = NULL,"
                                )
                        ) +
                        //Empleado
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empleado)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empleado_Codigo) + " = " + nameof(MAE_Empleados) + "." + nameof(MAE_Empleados.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empleado_Nombre) + " =" + nameof(MAE_Empleados) + "." + nameof(MAE_Empleados.nombre) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empleado_FechaBorrado) + " =" + nameof(MAE_Empleados) + "." + nameof(MAE_Empleados.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empleado_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empleado_Nombre) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empleado_FechaBorrado) + " = NULL, "
                                )
                        ) +
                        //Vendedor(Preventa)
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Preventa)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Preventa_Codigo) + " = " + nameof(MAE_Vendedores) + "_AUX_1." + nameof(MAE_Vendedores.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Preventa_Nombre) + " = " + nameof(MAE_Vendedores) + "_AUX_1." + nameof(MAE_Vendedores.nombre) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Preventa_FechaBorrado) + " " + nameof(MAE_Vendedores) + "_AUX_1." + nameof(MAE_Vendedores.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Preventa_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Preventa_Nombre) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Preventa_FechaBorrado) + " = NULL, "
                                )
                        ) +
                        //Vendedor(PreventaHabitual)
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_PreventaHabitual)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_PreventaHabitual_Codigo) + " =  " + nameof(MAE_Vendedores) + "_AUX_2." + nameof(MAE_Vendedores.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_PreventaHabitual_Nombre) + " =  " + nameof(MAE_Vendedores) + "_AUX_2." + nameof(MAE_Vendedores.nombre) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_PreventaHabitual_FechaBorrado) + " =  " + nameof(MAE_Vendedores) + "_AUX_2." + nameof(MAE_Vendedores.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_PreventaHabitual_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_PreventaHabitual_Nombre) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_PreventaHabitual_FechaBorrado) + " = NULL, "
                                )
                        ) +
                        //Vendedor(Repartidor)
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Repartidor)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Repartidor_Codigo) + " =  " + nameof(MAE_Vendedores) + "_AUX_3." + nameof(MAE_Vendedores.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Repartidor_Nombre) + " =  " + nameof(MAE_Vendedores) + "_AUX_3." + nameof(MAE_Vendedores.nombre) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Repartidor_FechaBorrado) + " =  " + nameof(MAE_Vendedores) + "_AUX_3." + nameof(MAE_Vendedores.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Repartidor_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Repartidor_Nombre) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Repartidor_FechaBorrado) + " = NULL, "
                                )
                        ) +
                        //PredefinidoCabecera (pedido)
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraPedido)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraPedido_Codigo) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_1." + nameof(CTA_PredefinidosCabeceras.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraPedido_Descripcion) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_1." + nameof(CTA_PredefinidosCabeceras.descripcion) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraPedido_FechaBorrado) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_1." + nameof(CTA_PredefinidosCabeceras.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraPedido_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraPedido_Descripcion) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraPedido_FechaBorrado) + " = NULL, "
                                )
                        ) +
                        //PredefinidoCabecera (cancelacion)
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraCancelacion)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraCancelacion_Codigo) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_2." + nameof(CTA_PredefinidosCabeceras.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraCancelacion_Descripcion) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_2." + nameof(CTA_PredefinidosCabeceras.descripcion) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraCancelacion_FechaBorrado) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_2." + nameof(CTA_PredefinidosCabeceras.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraCancelacion_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraCancelacion_Descripcion) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraCancelacion_FechaBorrado) + " = NULL, "
                                )
                        ) +
                        //PredefinidoCabecera (Servicio)
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraAnulacion)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraAnulacion_Codigo) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_3." + nameof(CTA_PredefinidosCabeceras.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraAnulacion_Descripcion) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_3." + nameof(CTA_PredefinidosCabeceras.descripcion) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraAnulacion_FechaBorrado) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_3." + nameof(CTA_PredefinidosCabeceras.fechaBorrado) + ","
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraAnulacion_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraAnulacion_Descripcion) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraAnulacion_FechaBorrado) + " = NULL, "
                                )
                        ) +
                        //ClaveAnalitica
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ClaveAnalitica)))
                            ?
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ClaveAnalitica_Codigo) + " = " + nameof(CTA_ClavesAnaliticas) + "." + nameof(CTA_ClavesAnaliticas.codigo) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ClaveAnalitica_Descripcion) + " = " + nameof(CTA_ClavesAnaliticas) + "." + nameof(CTA_ClavesAnaliticas.descripcion) + "," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ClaveAnalitica_FechaBorrado) + " = " + nameof(CTA_ClavesAnaliticas) + "." + nameof(CTA_ClavesAnaliticas.fechaBorrado)
                                )
                            :
                                (
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ClaveAnalitica_Codigo) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ClaveAnalitica_Descripcion) + " = ''," +
                                    nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ClaveAnalitica_FechaBorrado) + " = NULL "
                                )
                        ) +
                        " FROM " + nameof(VTA_PedidosCabecera) +
                        //Delegacion
                        (
                            (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Delegacion)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(GEN_Delegaciones) + " ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idDelegacion) + " = " + nameof(GEN_Delegaciones) + "." + nameof(GEN_Delegaciones.id)
                                    )
                                : ("")
                        ) +
                        //Empresa
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empresa)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(GEN_Empresas) + " ON  " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idEmpresa) + " = " + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.id)
                                    )
                                : ("")
                        ) +
                        //Cliente
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_Codigo)) ||
                                _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_RazonSocial)) ||
                                _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Cliente_NombreComercial)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(MAE_Clientes) + " ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idCliente) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id)
                                    )
                                : ("")
                        ) +
                        //Moneda
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Moneda)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(GEN_Monedas) + " ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idMoneda) + " = " + nameof(GEN_Monedas) + "." + nameof(GEN_Monedas.id)
                                    )
                                : ("")
                        ) +
                        //ImpuestoCabecera
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ImpuestoCabecera)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(GEN_ImpuestosCabecera) + " ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idImpuestoCabecera) + " = " + nameof(GEN_ImpuestosCabecera) + "." + nameof(GEN_ImpuestosCabecera.id)
                                    )
                                : ("")
                        ) +
                        //RelacionClienteProveedor
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.RelacionClienteProveedor)) ||
                                 _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Es_Servicio)) ||
                                 _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Proveedor)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(SRV_Relacion_ClienteProveedor) + " ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idRelacionClienteProveedor) + " = " + nameof(SRV_Relacion_ClienteProveedor) + "." + nameof(SRV_Relacion_ClienteProveedor.id) +
                                        " LEFT JOIN " + nameof(MAE_Proveedores) + " ON " + nameof(SRV_Relacion_ClienteProveedor) + "." + nameof(SRV_Relacion_ClienteProveedor.idProveedor) + " = " + nameof(MAE_Proveedores) + "." + nameof(MAE_Proveedores.id)
                                    )
                                : ("")
                        ) +
                        //Empleado
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Empleado)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(MAE_Empleados) + " ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idEmpleado) + " = " + nameof(MAE_Empleados) + "." + nameof(MAE_Empleados.id)
                                    )
                                : ("")
                        ) +
                        //Vendedor(Preventa)
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Preventa)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(MAE_Vendedores) + " as " + nameof(MAE_Vendedores) + "_AUX_1 ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_Preventa) + " = " + nameof(MAE_Vendedores) + "_AUX_1." + nameof(MAE_Vendedores.id)
                                    )
                                : ("")
                        ) +
                        //Vendedor(PreventaHabitual)
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_PreventaHabitual)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(MAE_Vendedores) + " as " + nameof(MAE_Vendedores) + "_AUX_2 ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_PreventaHabitual) + " = " + nameof(MAE_Vendedores) + "_AUX_2." + nameof(MAE_Vendedores.id)
                                    )
                                : ("")
                        ) +
                        //Vendedor(Repartidor)
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.Vendedor_Repartidor)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(MAE_Vendedores) + " as " + nameof(MAE_Vendedores) + "_AUX_3 ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_Repartidor) + " = " + nameof(MAE_Vendedores) + "_AUX_3." + nameof(MAE_Vendedores.id)
                                    )
                                : ("")
                        ) +
                        //PredefinidoCabecera (Albaran)
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraPedido)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(CTA_PredefinidosCabeceras) + " AS " + nameof(CTA_PredefinidosCabeceras) + "_AUX_1 ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Pedido) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_1." + nameof(CTA_PredefinidosCabeceras.id)
                                    )
                                : ("")
                        ) +
                        //PredefinidoCabecera (Servicio)
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraCancelacion)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(CTA_PredefinidosCabeceras) + " AS " + nameof(CTA_PredefinidosCabeceras) + "_AUX_2 ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Cancelacion) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_2." + nameof(CTA_PredefinidosCabeceras.id)
                                    )
                                : ("")
                        ) +
                        //PredefinidoCabecera (Servicio)
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.PredefinidoCabeceraAnulacion)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(CTA_PredefinidosCabeceras) + " AS " + nameof(CTA_PredefinidosCabeceras) + "_AUX_3 ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Anulacion) + " = " + nameof(CTA_PredefinidosCabeceras) + "_AUX_3." + nameof(CTA_PredefinidosCabeceras.id)
                                    )
                                : ("")
                        ) +
                        //ClaveAnalitica
                        (
                                (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_VTA_PedidosCabecera_Listado_Modelo.ClaveAnalitica)))
                                ?
                                    (
                                        " LEFT JOIN " + nameof(CTA_ClavesAnaliticas) + " ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idClaveAnalitica) + " = " + nameof(CTA_ClavesAnaliticas) + "." + nameof(CTA_ClavesAnaliticas.id)
                                    )
                                : ("")
                        ) +
                    " WHERE " +
                            //fechaBorrado
                            " ( " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fechaBorrado) + " is null ) AND " +
                            //id
                            " ( " +
                                (
                                    (_lng_id > -1)
                                        ? (nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.id) + "=@id ")
                                        : " 1 = 1 "
                                ) +
                            " ) AND " +
                            str_Filtro_Pedidos +
                            //Empresa
                            " ( " +
                                nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idEmpresa) + "=" + _lng_idEmpresaSeleccionada + str_Filtro_Empresa +
                            " ) AND " +
                            " ( " +
                                (
                                    str_Opcion_Cliente != ""
                                        ? (
                                            " ( not " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idCliente) + " is null) and " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idCliente) + "=" + lng_idCliente
                                            )
                                        : " 1 = 1 "
                                ) +
                            " ) AND " +
                            //Articulo
                            " ( " +
                                (
                                    str_Opcion_Articulo != ""
                                        ?
                                            (
                                                lst_idsPedidoCabecera_PorArticulo.Count > 0
                                                    ? str_Filtro_PedidosPorArticulo
                                                    : " 1 <> 1 "
                                            )
                                        : " 1 = 1 "
                                ) +
                            " ) AND " +
                            //ArticuloComodin
                            " ( " +
                                (
                                    str_Opcion_ArticuloComodin != ""
                                        ?
                                            (
                                                lst_idsPedidoCabecera_PorArticuloComodin.Count > 0
                                                    ? str_Filtro_PedidosPorArticuloComodin
                                                    : " 1 <> 1 "
                                            )
                                        : " 1 = 1 "
                                ) +
                            " ) AND " +
                            //Ejercicio
                            " ( " +
                                (
                                    bol_FiltrarEjercicio == true
                                        ? (nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fecha) + " <=@TemporadaFin AND " +
                                                nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fecha) + " >=@TemporadaInicio ")
                                        : " 1 = 1 "
                                ) +
                            " ) ";

                //Parametros
                List<SqlParameter> lst_Parametros = new List<SqlParameter>();
                if (_lng_id > -1)
                {
                    lst_Parametros.Add(new SqlParameter("@id", _lng_id));
                }

                if (bol_FiltrarEjercicio)
                {
                    lst_Parametros.Add(new SqlParameter("@TemporadaFin", dtt_TemporadaFin.Value));
                    lst_Parametros.Add(new SqlParameter("@TemporadaInicio", dtt_TemporadaInicio.Value));
                }

                object[] arr_Parametros = lst_Parametros.ToArray();

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

                //Añadir los Ejercicios
                if (g_lst_INTERNO_VTA_PedidosCabecera_Listado_Modelo_LISTADOSECUNDARIO != null && g_lst_INTERNO_VTA_PedidosCabecera_Listado_Modelo_LISTADOSECUNDARIO.Count > 0)
                {
                    Agregar_Ejercicios_ListadoSecundario(_lng_idEmpresaSeleccionada);
                }

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

        private void Agregar_Ejercicios_ListadoSecundario(long _lng_idEmpresaSeleccionada)
        {
            try
            {
                List<GEN_EjerciciosActivos_Empresa> lst_GEN_EjerciciosActivos_Empresa = Datos_Generales.GEN_EjerciciosActivos_Empresa_Obtener_Listado_Por_Empresa(_lng_idEmpresaSeleccionada);

                if (lst_GEN_EjerciciosActivos_Empresa != null)
                {
                    //Rellenar el Listado
                    foreach (INTERNO_VTA_PedidosCabecera_Listado_Modelo mdl_INTERNO_VTA_PedidosCabecera_Listado_Modelo in g_lst_INTERNO_VTA_PedidosCabecera_Listado_Modelo_LISTADOSECUNDARIO)
                    {
                        mdl_INTERNO_VTA_PedidosCabecera_Listado_Modelo.Ejercicios_Empresa = lst_GEN_EjerciciosActivos_Empresa.Where(m => m.temporadaFechaFin >= mdl_INTERNO_VTA_PedidosCabecera_Listado_Modelo.fecha &&
                                                                                                                                            m.temporadaFechaInicio <= mdl_INTERNO_VTA_PedidosCabecera_Listado_Modelo.fecha)
                                                                                                                              .FirstOrDefault();
                    }
                }
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(VTA_PedidosCabecera_Datos) + "/" + nameof(Agregar_Ejercicios), true);
            }
        }
        #endregion

        #region F3
        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)
        {
            return null;
        }
        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)
        {
            return null;
        }
        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)
        { }
        #endregion

        #region Obtener
        #region Obtener Simple

        private dynamic g_dnm_Modelo_Obtener = null;

        private static int g_int_TotalHilos_Obtener = 17;
        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_VTA_PedidosCabecera_Modelo.id) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.id) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.numeroDocumento) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.numeroDocumento) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.descripcion) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descripcion) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.idDelegacion) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idDelegacion) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.idEmpresa) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idEmpresa) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.fecha) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fecha) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.guid) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.guid) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.estado) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.estado) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.tipoVisita) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.tipoVisita) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.idCliente) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idCliente) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.idMoneda) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idMoneda) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.idImpuestoCabecera) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idImpuestoCabecera) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.idRelacionClienteProveedor) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idRelacionClienteProveedor) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.descuentoProntoPago) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descuentoProntoPago) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.descuentoFinalFactura) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descuentoFinalFactura) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.idEmpleado) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idEmpleado) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.idVendedor_Preventa) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_Preventa) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.idVendedor_PreventaHabitual) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_PreventaHabitual) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.idVendedor_Repartidor) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_Repartidor) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.referencia) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.referencia) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.fechaPrevista) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fechaPrevista) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.idPredefinidoCabecera_Pedido) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Pedido) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.idPredefinidoCabecera_Cancelacion) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Cancelacion) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.idPredefinidoCabecera_Anulacion) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Anulacion) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.idClaveAnalitica) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idClaveAnalitica) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.recargo) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.recargo) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.situacion) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.situacion) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.autorizado) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.autorizado) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.fechaBorrado) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fechaBorrado) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.observaciones) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.observaciones) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.descuentoFinalAlbaran) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descuentoFinalAlbaran) + " , " +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.total_bruto) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_bruto) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.total_descuentoProntoPago) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_descuentoProntoPago) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.total_descuentoFinalFactura) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_descuentoFinalFactura) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.total_baseImponible) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_baseImponible) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.total_impuesto) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_impuesto) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.total_recargo) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_recargo) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.total_descuentoFinalAlbaran) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_descuentoFinalAlbaran) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Modelo.total) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total) + 

                   " FROM " + nameof(VTA_PedidosCabecera) +
                    " WHERE " + nameof(VTA_PedidosCabecera.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_VTA_PedidosCabecera_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_Delegaciones ##########################################################################################
                    ThreadStart obj_ThreadStart_DELEGACION = new ThreadStart(Obtener_Delegacion_Modelo_OBTENER);
                    Thread obj_Thread_DELEGACION = new Thread(obj_ThreadStart_DELEGACION);
                    obj_Thread_DELEGACION.Start();

                    //MAE_Clientes ##########################################################################################
                    ThreadStart obj_ThreadStart_CLIENTE = new ThreadStart(Obtener_Cliente_Modelo_OBTENER);
                    Thread obj_Thread_CLIENTE = new Thread(obj_ThreadStart_CLIENTE);
                    obj_Thread_CLIENTE.Start();

                    //GEN_Monedas ##########################################################################################
                    ThreadStart obj_ThreadStart_MONEDA = new ThreadStart(Obtener_Moneda_Modelo_OBTENER);
                    Thread obj_Thread_MONEDA = new Thread(obj_ThreadStart_MONEDA);
                    obj_Thread_MONEDA.Start();

                    //GEN_ImpuestosCabecera ##########################################################################################
                    ThreadStart obj_ThreadStart_IMPUESTOCABECERA = new ThreadStart(Obtener_ImpuestoCabecera_Modelo_OBTENER);
                    Thread obj_Thread_IMPUESTOCABECERA = new Thread(obj_ThreadStart_IMPUESTOCABECERA);
                    obj_Thread_IMPUESTOCABECERA.Start();

                    //SRV_Relacion_ClienteProveedor ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idRelacionClienteProveedor != null)
                    {
                        ThreadStart obj_ThreadStart_CLIENTEPROVEEDOR = new ThreadStart(Obtener_ClienteProveedor_Modelo_OBTENER);
                        Thread obj_Thread_CLIENTEPROVEEDOR = new Thread(obj_ThreadStart_CLIENTEPROVEEDOR);
                        obj_Thread_CLIENTEPROVEEDOR.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[4] = true;
                    }

                    //MAE_Empleados ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idEmpleado != null)
                    {
                        ThreadStart obj_ThreadStart_EMPLEADO = new ThreadStart(Obtener_Empleado_Modelo_OBTENER);
                        Thread obj_Thread_EMPLEADO = new Thread(obj_ThreadStart_EMPLEADO);
                        obj_Thread_EMPLEADO.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[5] = true;
                    }

                    //GEN_Empresas ##########################################################################################
                    ThreadStart obj_ThreadStart_EMPRESA = new ThreadStart(Obtener_Empresa_Modelo_OBTENER);
                    Thread obj_Thread_EMPRESA = new Thread(obj_ThreadStart_EMPRESA);
                    obj_Thread_EMPRESA.Start();

                    //MAE_Vendedores ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idVendedor_Preventa != null)
                    {
                        ThreadStart obj_ThreadStart_VENDEDOR_PREVENTA = new ThreadStart(Obtener_VendedorPreventa_Modelo_OBTENER);
                        Thread obj_Thread_VENDEDOR_PREVENTA = new Thread(obj_ThreadStart_VENDEDOR_PREVENTA);
                        obj_Thread_VENDEDOR_PREVENTA.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[7] = true;
                    }

                    //MAE_Vendedores1 ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idVendedor_PreventaHabitual != null)
                    {
                        ThreadStart obj_ThreadStart_VENDEDOR_PREVENTAHABITUAL = new ThreadStart(Obtener_VendedorPreventahabitual_Modelo_OBTENER);
                        Thread obj_Thread_VENDEDOR_PREVENTAHABITUAL = new Thread(obj_ThreadStart_VENDEDOR_PREVENTAHABITUAL);
                        obj_Thread_VENDEDOR_PREVENTAHABITUAL.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[8] = true;
                    }

                    //MAE_Vendedores2 ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idVendedor_Repartidor != null)
                    {
                        ThreadStart obj_ThreadStart_VENDEDOR_REPARTIDOR = new ThreadStart(Obtener_VendedorRepartido_Modelo_OBTENER);
                        Thread obj_Thread_VENDEDOR_REPARTIDOR = new Thread(obj_ThreadStart_VENDEDOR_REPARTIDOR);
                        obj_Thread_VENDEDOR_REPARTIDOR.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[9] = true;
                    }

                    //CTA_PredefinidosCabeceras ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idPredefinidoCabecera_Pedido != null)
                    {
                        ThreadStart obj_ThreadStart_PREDEFINIDOCABECERA_PEDIDO = new ThreadStart(Obtener_PredefinidoCabeceraPedido_Modelo_OBTENER);
                        Thread obj_Thread_PREDEFINIDOCABECERA_PEDIDO = new Thread(obj_ThreadStart_PREDEFINIDOCABECERA_PEDIDO);
                        obj_Thread_PREDEFINIDOCABECERA_PEDIDO.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[10] = true;
                    }

                    //CTA_PredefinidosCabeceras1 ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idPredefinidoCabecera_Cancelacion != null)
                    {
                        ThreadStart obj_ThreadStart_PREDEFINIDOCABECERA_CANCELACION = new ThreadStart(Obtener_PredefinidoCabeceraCancelacion_Modelo_OBTENER);
                        Thread obj_Thread_PREDEFINIDOCABECERA_CANCELACION = new Thread(obj_ThreadStart_PREDEFINIDOCABECERA_CANCELACION);
                        obj_Thread_PREDEFINIDOCABECERA_CANCELACION.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[11] = true;
                    }

                    //CTA_PredefinidosCabeceras2 ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idPredefinidoCabecera_Anulacion != null)
                    {
                        ThreadStart obj_ThreadStart_PREDEFINIDOCABECERA_ANULACION = new ThreadStart(Obtener_PredefinidoCabeceraAnulacion_Modelo_OBTENER);
                        Thread obj_Thread_PREDEFINIDOCABECERA_ANULACION = new Thread(obj_ThreadStart_PREDEFINIDOCABECERA_ANULACION);
                        obj_Thread_PREDEFINIDOCABECERA_ANULACION.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[12] = true;
                    }

                    //CTA_ClavesAnaliticas ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idClaveAnalitica != null)
                    {
                        ThreadStart obj_ThreadStart_CLAVEANALTICA = new ThreadStart(Obtener_ClaveAnalitica_Modelo_OBTENER);
                        Thread obj_Thread_CLAVEANALTICA = new Thread(obj_ThreadStart_CLAVEANALTICA);
                        obj_Thread_CLAVEANALTICA.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[13] = true;
                    }

                    //VTA_PedidosCabecera_Anexos ##########################################################################################
                    ThreadStart obj_ThreadStart_ANEXOS = new ThreadStart(Obtener_Anexos_Modelo_OBTENER);
                    Thread obj_Thread_ANEXOS = new Thread(obj_ThreadStart_ANEXOS);
                    obj_Thread_ANEXOS.Start();

                    //VTA_PedidosCabecera_Resumen ##########################################################################################
                    ThreadStart obj_ThreadStart_RESUMEN = new ThreadStart(Obtener_Resumen_Modelo_OBTENER);
                    Thread obj_Thread_RESUMEN = new Thread(obj_ThreadStart_RESUMEN);
                    obj_Thread_RESUMEN.Start();

                    //VTA_PedidosLineas ##########################################################################################
                    ThreadStart obj_ThreadStart_LINEAS = new ThreadStart(Obtener_Lineas_Modelo_OBTENER);
                    Thread obj_Thread_LINEAS = new Thread(obj_ThreadStart_LINEAS);
                    obj_Thread_LINEAS.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(VTA_PedidosCabecera_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_Delegacion_Modelo_OBTENER()
        {
            try
            {
                g_dnm_Modelo_Obtener.GEN_Delegaciones = Datos_Generales.GEN_Delegaciones_Obtener_Modelo_Por_Id(g_dnm_Modelo_Obtener.idDelegacion);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[0] = true;
            }
        }
        private void Obtener_Cliente_Modelo_OBTENER()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_MAESTROS + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_MAESTROS + "." + Variables.G_STR_LIBRERIA_DATOSMAESTROS);
                //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_DATOSMAESTROS_PROCEDIMIENTO_MAECLIENTES_OBTENERMODELO_POR_ID_AUX_1, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_dnm_Modelo_Obtener.idCliente,false,false,false,false,false,true };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_dnm_Modelo_Obtener.MAE_Clientes = (MAE_Clientes)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[1] = 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[2] = true;
            }
        }
        private void Obtener_ImpuestoCabecera_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[3] = true;
            }
        }
        private void Obtener_ClienteProveedor_Modelo_OBTENER()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_SERVICIOS + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_SERVICIOS + "." + Variables.G_STR_LIBRERIA_DATOSSERVICIOS);
                //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_DATOSSERVICIOS_PROCEDIMIENTO_SRVRELACIONCLIENTEPROVEEDOR_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_dnm_Modelo_Obtener.idRelacionClienteProveedor };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_dnm_Modelo_Obtener.SRV_Relacion_ClienteProveedor = (SRV_Relacion_ClienteProveedor)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[4] = true;
            }
        }
        private void Obtener_Empleado_Modelo_OBTENER()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_MAESTROS + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_MAESTROS + "." + Variables.G_STR_LIBRERIA_DATOSMAESTROS);
                //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_DATOSMAESTROS_PROCEDIMIENTO_MAEEMPLEADOS_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_dnm_Modelo_Obtener.idEmpleado };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_dnm_Modelo_Obtener.MAE_Empleados = (MAE_Empleados)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[5] = 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, false, false, false, false);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[6] = true;
            }
        }
        private void Obtener_VendedorPreventa_Modelo_OBTENER()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_MAESTROS + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_MAESTROS + "." + Variables.G_STR_LIBRERIA_DATOSMAESTROS);
                //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_DATOSMAESTROS_PROCEDIMIENTO_MAEVENDEDORES_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_dnm_Modelo_Obtener.idVendedor_Preventa };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_dnm_Modelo_Obtener.MAE_Vendedores = (MAE_Vendedores)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[7] = true;
            }
        }
        private void Obtener_VendedorPreventahabitual_Modelo_OBTENER()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_MAESTROS + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_MAESTROS + "." + Variables.G_STR_LIBRERIA_DATOSMAESTROS);
                //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_DATOSMAESTROS_PROCEDIMIENTO_MAEVENDEDORES_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_dnm_Modelo_Obtener.idVendedor_PreventaHabitual };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_dnm_Modelo_Obtener.MAE_Vendedores1 = (MAE_Vendedores)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[8] = true;
            }
        }
        private void Obtener_VendedorRepartido_Modelo_OBTENER()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_MAESTROS + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_MAESTROS + "." + Variables.G_STR_LIBRERIA_DATOSMAESTROS);
                //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_DATOSMAESTROS_PROCEDIMIENTO_MAEVENDEDORES_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_dnm_Modelo_Obtener.idVendedor_Repartidor };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_dnm_Modelo_Obtener.MAE_Vendedores2 = (MAE_Vendedores)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[9] = true;
            }
        }
        private void Obtener_PredefinidoCabeceraPedido_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_Pedido };
                //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[10] = true;
            }
        }
        private void Obtener_PredefinidoCabeceraCancelacion_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_Cancelacion };
                //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[11] = true;
            }
        }
        private void Obtener_PredefinidoCabeceraAnulacion_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_Anulacion };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_dnm_Modelo_Obtener.CTA_PredefinidosCabeceras2 = (CTA_PredefinidosCabeceras)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[12] = true;
            }
        }
        private void Obtener_ClaveAnalitica_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_CTACLAVESANALITICAS_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_dnm_Modelo_Obtener.idClaveAnalitica };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_dnm_Modelo_Obtener.CTA_ClavesAnaliticas = (CTA_ClavesAnaliticas)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[13] = true;
            }
        }
        private void Obtener_Anexos_Modelo_OBTENER()
        {
            try
            {
                VTA_PedidosCabecera_Anexos_Datos obj_VTA_PedidosCabecera_Anexos_Datos = new VTA_PedidosCabecera_Anexos_Datos();
                g_dnm_Modelo_Obtener.VTA_PedidosCabecera_Anexos = obj_VTA_PedidosCabecera_Anexos_Datos.Obtener_ModeloListado_Por_PedidoCabecera(g_dnm_Modelo_Obtener.id);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[14] = true;
            }
        }
        private void Obtener_Resumen_Modelo_OBTENER()
        {
            try
            {
                VTA_PedidosCabecera_Resumen_Datos obj_VTA_PedidosCabecera_Resumen_Datos = new VTA_PedidosCabecera_Resumen_Datos();
                g_dnm_Modelo_Obtener.VTA_PedidosCabecera_Resumen = obj_VTA_PedidosCabecera_Resumen_Datos.Obtener_ModeloListado_Por_PedidoCabecera(g_dnm_Modelo_Obtener.id);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[15] = true;
            }
        }
        private void Obtener_Lineas_Modelo_OBTENER()
        {
            try
            {
                VTA_PedidosLineas_Datos obj_VTA_PedidosLineas_Datos = new VTA_PedidosLineas_Datos();
                g_dnm_Modelo_Obtener.PedidoLineas = obj_VTA_PedidosLineas_Datos.Obtener_Registros_Para_Listado_Por_PedidoCabecera(g_dnm_Modelo_Obtener.id);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[16] = true;
            }
        }

        #endregion
        #endregion

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

        public List<INTERNO_Listado_Simple_Modelo> Buscar_Datos_Filtros_Relacionados(string _str_Where)
        {
            Exferia_Entities obj_Exferia_Entities = null;

            List<INTERNO_Listado_Simple_Modelo> lst_INTERNO_Listado_Simple_Modelo = null;

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

                if (_str_Where.Trim().Length > 0)
                {
                    _str_Where = " WHERE " + _str_Where;
                }

                //Formar Consulta SQLServer ....................................................
                string str_SQL =
                                " SELECT " +
                                   nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.id) + " as " + nameof(INTERNO_Listado_Simple_Modelo.ID) + "," +
                                   " (convert(varchar(12), " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.numeroDocumento) + ") + '/' + " + nameof(GEN_Delegaciones) + "." + nameof(GEN_Delegaciones.codigo) + ") as " + nameof(INTERNO_Listado_Simple_Modelo.CODIGO) + "," +
                                   " convert(varchar(10)," + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fecha) + ",103) as " + nameof(INTERNO_Listado_Simple_Modelo.DESCRIPCION) + "," +
                                   nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fechaBorrado) + " as " + nameof(INTERNO_Listado_Simple_Modelo.FECHABORRADO) + "," +
                                  "( '(' + " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.codigo) + " + ') ' + " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.razonSocial) + ") as " + nameof(INTERNO_Listado_Simple_Modelo.AUXILIAR_1) + " " +
                                " FROM " + nameof(VTA_PedidosCabecera) +
                                " INNER JOIN " + nameof(GEN_Delegaciones) + " on " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idDelegacion) + " = " + nameof(GEN_Delegaciones) + "." + nameof(GEN_Delegaciones.id) + " " +
                                " INNER JOIN " + nameof(MAE_Clientes) + " on " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idCliente) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id) + " "
                                + _str_Where;

                //Ejecutar Consulta
                lst_INTERNO_Listado_Simple_Modelo = obj_Exferia_Entities.Database.SqlQuery<INTERNO_Listado_Simple_Modelo>(str_SQL).ToList();

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

            return lst_INTERNO_Listado_Simple_Modelo;
        }

        public bool TieneRelacion_ConServicios(long _lng_idRelacionClienteProveedor)
        {
            Exferia_Entities obj_Exferia_Entities = null;

            bool bol_TieneRelacion = false;

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

                // Consulta .........................................................
                string str_Consulta = " SELECT count(" + nameof(VTA_PedidosCabecera.id) + ") " +
                                      " FROM " + nameof(VTA_PedidosCabecera) +
                                      " WHERE " + nameof(VTA_PedidosCabecera.idRelacionClienteProveedor) + "=" + _lng_idRelacionClienteProveedor;
                //....................................................................
                int? int_ValorDevuelto = obj_Exferia_Entities.Database.SqlQuery<int?>(str_Consulta).FirstOrDefault();
                //....................................................................

                if (int_ValorDevuelto != null && int_ValorDevuelto.Value > 0)
                {
                    bol_TieneRelacion = true;
                }
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(VTA_PedidosCabecera_Datos) + "/" + nameof(TieneRelacion_ConServicios), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }

            return bol_TieneRelacion;
        }

        public bool TieneVariosPedidosServicio(List<long> _lst_idPedidoCabecera)
        {
            Exferia_Entities obj_Exferia_Entities = null;

            bool bol_TieneVariosPedidosServicio = false;

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

                string str_Filtros_PedidosCabecera = Funciones.Formar_ContenidoIN_ParaConsultaWhere(nameof(VTA_PedidosCabecera),
                                                                                                  nameof(VTA_PedidosCabecera.id),
                                                                                                  G_ENUM_FORMARCONTENIDOIN_CONDICIONANTES.NADA,
                                                                                                  _lst_idPedidoCabecera);

                // Consulta .........................................................
                string str_Consulta = " SELECT count(" + nameof(VTA_PedidosCabecera.id) + ") " +
                                      " FROM " + nameof(VTA_PedidosCabecera) +
                                      " WHERE " + 
                                           " ( not " +  nameof(VTA_PedidosCabecera.idRelacionClienteProveedor) + " is null ) and  " +
                                           str_Filtros_PedidosCabecera;
                //....................................................................
                int? int_ValorDevuelto = obj_Exferia_Entities.Database.SqlQuery<int?>(str_Consulta).FirstOrDefault();
                //....................................................................

                if (int_ValorDevuelto != null && int_ValorDevuelto.Value > 1)
                {
                    bol_TieneVariosPedidosServicio = true;
                }
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(VTA_PedidosCabecera_Datos) + "/" + nameof(TieneVariosPedidosServicio), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }

            return bol_TieneVariosPedidosServicio;
        }
        public bool TieneMezcladosPedidosServicioYNormales(List<long> _lst_idPedidoCabecera)
        {
            Exferia_Entities obj_Exferia_Entities = null;

            bool bol_TieneVariosPedidosServicio = false;

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

                string str_Filtros_PedidosCabecera = Funciones.Formar_ContenidoIN_ParaConsultaWhere(nameof(VTA_PedidosCabecera),
                                                                                                  nameof(VTA_PedidosCabecera.id),
                                                                                                  G_ENUM_FORMARCONTENIDOIN_CONDICIONANTES.NADA,
                                                                                                  _lst_idPedidoCabecera);

                #region Pedido Normal
                bool bol_PedidoNormal = false;
                // Consulta .........................................................
                string str_Consulta_PedidoNormal = " SELECT count(" + nameof(VTA_PedidosCabecera.id) + ") " +
                                      " FROM " + nameof(VTA_PedidosCabecera) +
                                      " WHERE " +
                                           " ( " + nameof(VTA_PedidosCabecera.idRelacionClienteProveedor) + " is null ) and  " +
                                           str_Filtros_PedidosCabecera;
                //....................................................................
                int? int_ValorDevuelto_PedidoNormal = obj_Exferia_Entities.Database.SqlQuery<int?>(str_Consulta_PedidoNormal).FirstOrDefault();
                //....................................................................

                if (int_ValorDevuelto_PedidoNormal != null && int_ValorDevuelto_PedidoNormal.Value > 0)
                {
                    bol_PedidoNormal = true;
                }
                #endregion

                #region Pedido de Servicio
                bool bol_PedidoServicio = false;
                // Consulta .........................................................
                string str_Consulta_PedidoServicio = " SELECT count(" + nameof(VTA_PedidosCabecera.id) + ") " +
                                      " FROM " + nameof(VTA_PedidosCabecera) +
                                      " WHERE " +
                                           " ( not " + nameof(VTA_PedidosCabecera.idRelacionClienteProveedor) + " is null ) and  " +
                                           str_Filtros_PedidosCabecera;
                //....................................................................
                int? int_ValorDevuelto_PedidoServicio = obj_Exferia_Entities.Database.SqlQuery<int?>(str_Consulta_PedidoServicio).FirstOrDefault();
                //....................................................................

                if (int_ValorDevuelto_PedidoServicio != null && int_ValorDevuelto_PedidoServicio.Value > 0)
                {
                    bol_PedidoServicio = true;
                }
                #endregion


                if (bol_PedidoServicio && bol_PedidoNormal)
                {
                    bol_TieneVariosPedidosServicio = true;
                }

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

            return bol_TieneVariosPedidosServicio;
        }
        public long EsDeServicio(long _lng_idPedidoCabecera)
        {
            Exferia_Entities obj_Exferia_Entities = null;

            long lng_idRelacionClienteProveedor = -1;

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

                // Consulta .........................................................
                string str_Consulta = " SELECT " + nameof(VTA_PedidosCabecera.idRelacionClienteProveedor) + 
                                      " FROM " + nameof(VTA_PedidosCabecera) +
                                      " WHERE " +
                                           " ( not " + nameof(VTA_PedidosCabecera.idRelacionClienteProveedor) + " is null ) and  " +
                                           nameof(VTA_PedidosCabecera.id) + "=" + _lng_idPedidoCabecera;
                //....................................................................
                long? lng_idRelacionClienteProveedor_Recibido = obj_Exferia_Entities.Database.SqlQuery<long?>(str_Consulta).FirstOrDefault();
                //....................................................................

                if (lng_idRelacionClienteProveedor_Recibido != null)
                {
                    lng_idRelacionClienteProveedor = lng_idRelacionClienteProveedor_Recibido.Value;
                }
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(VTA_PedidosCabecera_Datos) + "/" + nameof(EsDeServicio), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }

            return lng_idRelacionClienteProveedor;
        }

        #region Para Conversion a Facturas
        private INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo = null;

        private static int g_int_TotalHilos_Obtener_CONVERSION = 17;
        private bool[] g_bol_Hilos_Terminados_Obtener_CONVERSION = new bool[g_int_TotalHilos_Obtener_CONVERSION];

        public INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo Obtener_ParaConversion_Por_Id(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_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.id) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.id) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.numeroDocumento) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.numeroDocumento) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.descripcion) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descripcion) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.fecha) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fecha) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.guid) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.guid) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.estado) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.estado) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.tipoVisita) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.tipoVisita) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.descuentoProntoPago) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descuentoProntoPago) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.descuentoFinalFactura) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descuentoFinalFactura) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.descuentoFinalAlbaran) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descuentoFinalAlbaran) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.referencia) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.referencia) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.fechaPrevista) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fechaPrevista) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.recargo) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.recargo) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.situacion) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.situacion) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.autorizado) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.autorizado) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.observaciones) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.observaciones) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.total_bruto) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_bruto) + "," +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.total_descuentoProntoPago) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_descuentoProntoPago) + "," +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.total_descuentoFinalFactura) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_descuentoFinalFactura) + "," +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.total_baseImponible) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_baseImponible) + "," +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.total_impuesto) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_impuesto) + "," +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.total_recargo) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_recargo) + "," +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.total_descuentoFinalAlbaran) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_descuentoFinalAlbaran) + "," +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.total) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total) + "," +
                            //ids
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idDelegacion) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idDelegacion) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idEmpresa) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idEmpresa) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idCliente) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idCliente) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idMoneda) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idMoneda) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idImpuestoCabecera) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idImpuestoCabecera) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idRelacionClienteProveedor) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idRelacionClienteProveedor) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idEmpleado) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idEmpleado) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idVendedor_Preventa) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_Preventa) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idVendedor_PreventaHabitual) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_PreventaHabitual) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idVendedor_Repartidor) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_Repartidor) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idPredefinidoCabecera_Pedido) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Pedido) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idPredefinidoCabecera_Cancelacion) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Cancelacion) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idPredefinidoCabecera_Anulacion) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Anulacion) + " , " +
                            nameof(INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idClaveAnalitica) + "=" + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idClaveAnalitica) + 
                    " FROM " + nameof(VTA_PedidosCabecera) +
                    " WHERE " +
                          nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.id) + "=@id";

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

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

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

                    //GEN_Delegaciones ##########################################################################################
                    ThreadStart obj_ThreadStart_DELEGACION = new ThreadStart(Obtener_Delegacion_Modelo_CONVERSION);
                    Thread obj_Thread_DELEGACION = new Thread(obj_ThreadStart_DELEGACION);
                    obj_Thread_DELEGACION.Start();
                   
                    //MAE_Clientes ##########################################################################################
                    ThreadStart obj_ThreadStart_CLIENTE = new ThreadStart(Obtener_Cliente_Modelo_CONVERSION);
                    Thread obj_Thread_CLIENTE = new Thread(obj_ThreadStart_CLIENTE);
                    obj_Thread_CLIENTE.Start();
                    
                    //GEN_Monedas ##########################################################################################
                    ThreadStart obj_ThreadStart_MONEDA = new ThreadStart(Obtener_Moneda_Modelo_CONVERSION);
                    Thread obj_Thread_MONEDA = new Thread(obj_ThreadStart_MONEDA);
                    obj_Thread_MONEDA.Start();

                    //GEN_ImpuestosCabecera ##########################################################################################
                    ThreadStart obj_ThreadStart_IMPUESTOCABECERA = new ThreadStart(Obtener_ImpuestoCabecera_Modelo_CONVERSION);
                    Thread obj_Thread_IMPUESTOCABECERA = new Thread(obj_ThreadStart_IMPUESTOCABECERA);
                    obj_Thread_IMPUESTOCABECERA.Start();

                    //SRV_Relacion_ClienteProveedor ##########################################################################################
                    if (g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idRelacionClienteProveedor != null)
                    {
                        ThreadStart obj_ThreadStart_CLIENTEPROVEEDOR = new ThreadStart(Obtener_ClienteProveedor_Modelo_CONVERSION);
                        Thread obj_Thread_CLIENTEPROVEEDOR = new Thread(obj_ThreadStart_CLIENTEPROVEEDOR);
                        obj_Thread_CLIENTEPROVEEDOR.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener_CONVERSION[4] = true;
                    }

                    //MAE_Empleados ##########################################################################################
                    if (g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idEmpleado != null)
                    {
                        ThreadStart obj_ThreadStart_EMPLEADO = new ThreadStart(Obtener_Empleado_Modelo_CONVERSION);
                        Thread obj_Thread_EMPLEADO = new Thread(obj_ThreadStart_EMPLEADO);
                        obj_Thread_EMPLEADO.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener_CONVERSION[5] = true;
                    }

                    //GEN_Empresas ##########################################################################################
                    ThreadStart obj_ThreadStart_EMPRESA = new ThreadStart(Obtener_Empresa_Modelo_CONVERSION);
                    Thread obj_Thread_EMPRESA = new Thread(obj_ThreadStart_EMPRESA);
                    obj_Thread_EMPRESA.Start();
                    
                    //MAE_Vendedores ##########################################################################################
                    if (g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idVendedor_Preventa != null)
                    {
                        ThreadStart obj_ThreadStart_VENDEDOR_PREVENTA = new ThreadStart(Obtener_VendedorPreventa_Modelo_CONVERSION);
                        Thread obj_Thread_VENDEDOR_PREVENTA = new Thread(obj_ThreadStart_VENDEDOR_PREVENTA);
                        obj_Thread_VENDEDOR_PREVENTA.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener_CONVERSION[7] = true;
                    }

                    //MAE_Vendedores1 ##########################################################################################
                    if (g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idVendedor_PreventaHabitual != null)
                    {
                        ThreadStart obj_ThreadStart_VENDEDOR_PREVENTAHABITUAL = new ThreadStart(Obtener_VendedorPreventahabitual_Modelo_CONVERSION);
                        Thread obj_Thread_VENDEDOR_PREVENTAHABITUAL = new Thread(obj_ThreadStart_VENDEDOR_PREVENTAHABITUAL);
                        obj_Thread_VENDEDOR_PREVENTAHABITUAL.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener_CONVERSION[8] = true;
                    }

                    //MAE_Vendedores2 ##########################################################################################
                    if (g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idVendedor_Repartidor != null)
                    {
                        ThreadStart obj_ThreadStart_VENDEDOR_REPARTIDOR = new ThreadStart(Obtener_VendedorRepartido_Modelo_CONVERSION);
                        Thread obj_Thread_VENDEDOR_REPARTIDOR = new Thread(obj_ThreadStart_VENDEDOR_REPARTIDOR);
                        obj_Thread_VENDEDOR_REPARTIDOR.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener_CONVERSION[9] = true;
                    }

                    //CTA_PredefinidosCabeceras ##########################################################################################
                    if (g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idPredefinidoCabecera_Pedido != null)
                    {
                        ThreadStart obj_ThreadStart_PREDEFINIDOCABECERA_PEDIDO = new ThreadStart(Obtener_PredefinidoCabeceraPedido_Modelo_CONVERSION);
                        Thread obj_Thread_PREDEFINIDOCABECERA_PEDIDO = new Thread(obj_ThreadStart_PREDEFINIDOCABECERA_PEDIDO);
                        obj_Thread_PREDEFINIDOCABECERA_PEDIDO.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener_CONVERSION[10] = true;
                    }

                    //CTA_PredefinidosCabeceras1 ##########################################################################################
                    if (g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idPredefinidoCabecera_Cancelacion != null)
                    {
                        ThreadStart obj_ThreadStart_PREDEFINIDOCABECERA_CANCELACION = new ThreadStart(Obtener_PredefinidoCabeceraCancelacion_Modelo_CONVERSION);
                        Thread obj_Thread_PREDEFINIDOCABECERA_CANCELACION = new Thread(obj_ThreadStart_PREDEFINIDOCABECERA_CANCELACION);
                        obj_Thread_PREDEFINIDOCABECERA_CANCELACION.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener_CONVERSION[11] = true;
                    }

                    //CTA_PredefinidosCabeceras2 ##########################################################################################
                    if (g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idPredefinidoCabecera_Anulacion != null)
                    {
                        ThreadStart obj_ThreadStart_PREDEFINIDOCABECERA_ANULACION = new ThreadStart(Obtener_PredefinidoCabeceraAnulacion_Modelo_CONVERSION);
                        Thread obj_Thread_PREDEFINIDOCABECERA_ANULACION = new Thread(obj_ThreadStart_PREDEFINIDOCABECERA_ANULACION);
                        obj_Thread_PREDEFINIDOCABECERA_ANULACION.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener_CONVERSION[12] = true;
                    }

                    //CTA_ClavesAnaliticas ##########################################################################################
                    if (g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idClaveAnalitica != null)
                    {
                        ThreadStart obj_ThreadStart_CLAVEANALTICA = new ThreadStart(Obtener_ClaveAnalitica_Modelo_CONVERSION);
                        Thread obj_Thread_CLAVEANALTICA = new Thread(obj_ThreadStart_CLAVEANALTICA);
                        obj_Thread_CLAVEANALTICA.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener_CONVERSION[13] = true;
                    }

                    //VTA_PedidosCabecera_Anexos ##########################################################################################
                    ThreadStart obj_ThreadStart_ANEXOS = new ThreadStart(Obtener_Anexos_Modelo_CONVERSION);
                    Thread obj_Thread_ANEXOS = new Thread(obj_ThreadStart_ANEXOS);
                    obj_Thread_ANEXOS.Start();

                    //VTA_PedidosCabecera_Resumen ##########################################################################################
                    ThreadStart obj_ThreadStart_RESUMEN = new ThreadStart(Obtener_Resumen_Modelo_CONVERSION);
                    Thread obj_Thread_RESUMEN = new Thread(obj_ThreadStart_RESUMEN);
                    obj_Thread_RESUMEN.Start();

                    //VTA_PedidosLineas ##########################################################################################
                    ThreadStart obj_ThreadStart_LINEAS = new ThreadStart(Obtener_Lineas_Modelo_CONVERSION);
                    Thread obj_Thread_LINEAS = new Thread(obj_ThreadStart_LINEAS);
                    obj_Thread_LINEAS.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_CONVERSION)
                        {
                            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(VTA_PedidosCabecera_Datos) + "/" + nameof(Obtener_ParaConversion_Por_Id), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
            return g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo;
        }
        
        #region Tablas Relacionadas
        private void Obtener_Delegacion_Modelo_CONVERSION()
        {
            try
            {
                g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.GEN_Delegaciones = Datos_Generales.GEN_Delegaciones_Obtener_Modelo_Por_Id(g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idDelegacion);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_CONVERSION[0] = true;
            }
        }
        private void Obtener_Cliente_Modelo_CONVERSION()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_MAESTROS + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_MAESTROS + "." + Variables.G_STR_LIBRERIA_DATOSMAESTROS);
                //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_DATOSMAESTROS_PROCEDIMIENTO_MAECLIENTES_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idCliente };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.MAE_Clientes = (MAE_Clientes)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_CONVERSION[1] = true;
            }
        }
        private void Obtener_Moneda_Modelo_CONVERSION()
        {
            try
            {
                g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.GEN_Monedas = Datos_Generales.GEN_Monedas_Obtener_Modelo_Por_Id(g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idMoneda);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_CONVERSION[2] = true;
            }
        }
        private void Obtener_ImpuestoCabecera_Modelo_CONVERSION()
        {
            try
            {
                g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.GEN_ImpuestosCabecera = Datos_Generales.GEN_ImpuestosCabecera_Obtener_Modelo_Por_Id(g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idImpuestoCabecera);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_CONVERSION[3] = true;
            }
        }
        private void Obtener_ClienteProveedor_Modelo_CONVERSION()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_SERVICIOS + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_SERVICIOS + "." + Variables.G_STR_LIBRERIA_DATOSSERVICIOS);
                //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_DATOSSERVICIOS_PROCEDIMIENTO_SRVRELACIONCLIENTEPROVEEDOR_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idRelacionClienteProveedor.Value };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.SRV_Relacion_ClienteProveedor = (SRV_Relacion_ClienteProveedor)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_CONVERSION[4] = true;
            }
        }
        private void Obtener_Empleado_Modelo_CONVERSION()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_MAESTROS + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_MAESTROS + "." + Variables.G_STR_LIBRERIA_DATOSMAESTROS);
                //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_DATOSMAESTROS_PROCEDIMIENTO_MAEEMPLEADOS_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idEmpleado.Value };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.MAE_Empleados = (MAE_Empleados)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_CONVERSION[5] = true;
            }
        }
        private void Obtener_Empresa_Modelo_CONVERSION()
        {
            try
            {
                g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.GEN_Empresas = Datos_Generales.GEN_Empresas_Obtener_Modelo_Por_Id(g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idEmpresa,false,false,false,false);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_CONVERSION[6] = true;
            }
        }
        private void Obtener_VendedorPreventa_Modelo_CONVERSION()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_MAESTROS + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_MAESTROS + "." + Variables.G_STR_LIBRERIA_DATOSMAESTROS);
                //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_DATOSMAESTROS_PROCEDIMIENTO_MAEVENDEDORES_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idVendedor_Preventa.Value };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.MAE_Vendedores = (MAE_Vendedores)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_CONVERSION[7] = true;
            }
        }
        private void Obtener_VendedorPreventahabitual_Modelo_CONVERSION()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_MAESTROS + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_MAESTROS + "." + Variables.G_STR_LIBRERIA_DATOSMAESTROS);
                //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_DATOSMAESTROS_PROCEDIMIENTO_MAEVENDEDORES_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idVendedor_PreventaHabitual.Value };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.MAE_Vendedores1 = (MAE_Vendedores)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_CONVERSION[8] = true;
            }
        }
        private void Obtener_VendedorRepartido_Modelo_CONVERSION()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_MAESTROS + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_MAESTROS + "." + Variables.G_STR_LIBRERIA_DATOSMAESTROS);
                //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_DATOSMAESTROS_PROCEDIMIENTO_MAEVENDEDORES_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idVendedor_Repartidor.Value };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.MAE_Vendedores2 = (MAE_Vendedores)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_CONVERSION[9] = true;
            }
        }
        private void Obtener_PredefinidoCabeceraPedido_Modelo_CONVERSION()
        {
            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_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idPredefinidoCabecera_Pedido.Value};
                //Pasamos los parametros al metodo y lo ejecutamos
                g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.CTA_PredefinidosCabeceras = (CTA_PredefinidosCabeceras)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_CONVERSION[10] = true;
            }
        }
        private void Obtener_PredefinidoCabeceraCancelacion_Modelo_CONVERSION()
        {
            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_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idPredefinidoCabecera_Cancelacion.Value };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.CTA_PredefinidosCabeceras1 = (CTA_PredefinidosCabeceras)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_CONVERSION[11] = true;
            }
        }
        private void Obtener_PredefinidoCabeceraAnulacion_Modelo_CONVERSION()
        {
            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_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idPredefinidoCabecera_Anulacion.Value};
                //Pasamos los parametros al metodo y lo ejecutamos
                g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.CTA_PredefinidosCabeceras2 = (CTA_PredefinidosCabeceras)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_CONVERSION[12] = true;
            }
        }
        private void Obtener_ClaveAnalitica_Modelo_CONVERSION()
        {
            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_CTACLAVESANALITICAS_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.idClaveAnalitica.Value };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.CTA_ClavesAnaliticas = (CTA_ClavesAnaliticas)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_CONVERSION[13] = true;
            }
        }
        private void Obtener_Anexos_Modelo_CONVERSION()
        {
            try
            {
                VTA_PedidosCabecera_Anexos_Datos obj_VTA_PedidosCabecera_Anexos_Datos = new VTA_PedidosCabecera_Anexos_Datos();
                g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.VTA_PedidosCabecera_Anexos = obj_VTA_PedidosCabecera_Anexos_Datos.Obtener_ModeloListado_Por_PedidoCabecera(g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.id);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_CONVERSION[14] = true;
            }
        }
        private void Obtener_Resumen_Modelo_CONVERSION()
        {
            try
            {
                VTA_PedidosCabecera_Resumen_Datos obj_VTA_PedidosCabecera_Resumen_Datos = new VTA_PedidosCabecera_Resumen_Datos();
                g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.VTA_PedidosCabecera_Resumen = obj_VTA_PedidosCabecera_Resumen_Datos.Obtener_ModeloListado_Por_PedidoCabecera(g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.id);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_CONVERSION[15] = true;
            }
        }
        private void Obtener_Lineas_Modelo_CONVERSION()
        {
            try
            {
                VTA_PedidosLineas_Datos obj_VTA_PedidosLineas_Datos = new VTA_PedidosLineas_Datos();
                g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.PedidoLineas = obj_VTA_PedidosLineas_Datos.Obtener_ParaTraspaso_Por_PedidoCabecera(g_mdl_INTERNO_VTA_PedidosCabecera_ConversionAlbaranFactura_Modelo.id);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_CONVERSION[16] = true;
            }
        }

        #endregion

        #endregion

        #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_VTA_PedidosCabecera_Bolsa_Listado_Modelo> lst_INTERNO_VTA_PedidosCabecera_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(VTA_PedidosCabecera).Name);
                string str_Filtros_Empresas = Funciones.Formar_ContenidoIN_ParaConsultaWhere(lst_idEmpresa);

                string str_SQL =
                    " SELECT " +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.id) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.id) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.numeroDocumento) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.numeroDocumento) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.descripcion) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descripcion) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.fecha) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fecha) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.guid) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.guid) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.estado) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.estado) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.tipoVisita) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.tipoVisita) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.descuentoProntoPago) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descuentoProntoPago) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.descuentoFinalFactura) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descuentoFinalFactura) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.descuentoFinalAlbaran) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descuentoFinalAlbaran) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.referencia) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.referencia) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.fechaPrevista) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fechaPrevista) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.recargo) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.recargo) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.situacion) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.situacion) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.autorizado) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.autorizado) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.observaciones) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.observaciones) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.total_bruto) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_bruto) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.total_descuentoProntoPago) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_descuentoProntoPago) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.total_descuentoFinalFactura) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_descuentoFinalFactura) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.total_baseImponible) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_baseImponible) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.total_impuesto) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_impuesto) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.total_recargo) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_recargo) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.total_descuentoFinalAlbaran) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_descuentoFinalAlbaran) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.total) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total) + "," +
                        //ids
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.idDelegacion) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idDelegacion) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.idEmpresa) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idEmpresa) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.idCliente) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idCliente) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.idMoneda) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idMoneda) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.idImpuestoCabecera) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idImpuestoCabecera) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.idRelacionClienteProveedor) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idRelacionClienteProveedor) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.idEmpleado) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idEmpleado) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.idVendedor_Preventa) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_Preventa) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.idVendedor_PreventaHabitual) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_PreventaHabitual) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.idVendedor_Repartidor) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_Repartidor) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.idPredefinidoCabecera_Pedido) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Pedido) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.idPredefinidoCabecera_Cancelacion) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Cancelacion) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.idPredefinidoCabecera_Anulacion) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Anulacion) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.idClaveAnalitica) + " = " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idClaveAnalitica) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.Cliente_Codigo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.codigo) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.Cliente_RazonSocial) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.razonSocial) + "," +
                        nameof(INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.Cliente_NombreComercial) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.nombreComercial) + 
                        " FROM " + nameof(VTA_PedidosCabecera) +
                        //Cliente
                        " LEFT JOIN " + nameof(MAE_Clientes) + " ON " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idCliente) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id) +
                        " WHERE " +
                            //fechaBorrado
                            " ( " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fechaBorrado) + " is null ) AND " +
                            " ( " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idEmpresa) + "=@idEmpresa " +
                                    (
                                        (lst_idEmpresa != null && lst_idEmpresa.Count > 0)
                                            ? (" OR " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idEmpresa) + " in (" + str_Filtros_Empresas + ") ")
                                            : " "
                                    ) +
                            " ) ";

                //Parametros
                List<SqlParameter> lst_Parametros = new List<SqlParameter>();
                lst_Parametros.Add(new SqlParameter("@idEmpresa", _lng_idEmpresaSeleccionada));
                object[] arr_Parametros = lst_Parametros.ToArray();

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

                //Añadir los Ejercicios
                if (lst_INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo != null && lst_INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.Count > 0)
                {
                    Agregar_Ejercicios_Bolsa(_lng_idEmpresaSeleccionada, ref lst_INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo);

                    //Filtro
                    var obj_Devuelto = lst_INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.AsQueryable().Where(Funciones_Lambda.Formar_EmpresionLambda_Filtrado<INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo>(_dct_ListadoFiltros, new ABS_Listado_VTA_PedidosCabecera_Bolsa(_lng_idEmpresaSeleccionada)));
                    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(VTA_PedidosCabecera_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_Ejercicios_Bolsa(long _lng_idEmpresaSeleccionada, ref List<INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo> _lst_INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo)
        {
            try
            {
                List<GEN_EjerciciosActivos_Empresa> lst_GEN_EjerciciosActivos_Empresa = Datos_Generales.GEN_EjerciciosActivos_Empresa_Obtener_Listado_Por_Empresa(_lng_idEmpresaSeleccionada);

                if (lst_GEN_EjerciciosActivos_Empresa != null)
                {
                    //Rellenar el Listado
                    foreach (INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo mdl_INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo in _lst_INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo)
                    {
                        mdl_INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.Ejercicios_Empresa = lst_GEN_EjerciciosActivos_Empresa.Where(m => m.temporadaFechaFin >= mdl_INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.fecha &&
                                                                                                                                            m.temporadaFechaInicio <= mdl_INTERNO_VTA_PedidosCabecera_Bolsa_Listado_Modelo.fecha)
                                                                                                                              .FirstOrDefault();
                    }
                }
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(VTA_PedidosCabecera_Datos) + "/" + nameof(Agregar_Ejercicios_Bolsa), true);
            }
        }
        #endregion

        #endregion

        #region MODELOS

        #region Modelo Simple
        private VTA_PedidosCabecera g_mdl_VTA_PedidosCabecera = null;
        public VTA_PedidosCabecera Obtener_Modelo_Por_Id(long _lng_id,
                                                         bool _bol_Cargar_Delegaciones)
        {
            try
            {
                string str_SQL = Obtener_Consulta_Modelo() +
                                 //WHERE
                                 " WHERE " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.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_Delegaciones);


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

            return g_mdl_VTA_PedidosCabecera;
        }

        #region Ejecutar Consulta Modelo
        private static int g_int_TotalHilos_Modelo = 1;
        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_Delegaciones)
        {
            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_VTA_PedidosCabecera = obj_Exferia_Entities.Database.SqlQuery<VTA_PedidosCabecera>(_str_SQL, _arr_Parametros).FirstOrDefault();

                #region Rellenar Tablas Relacionadas
                if (g_mdl_VTA_PedidosCabecera != 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_Delegaciones ##########################################################################################
                    if (_bol_Cargar_Delegaciones)
                    {
                        ThreadStart obj_ThreadStart_DELEGACIONES = new ThreadStart(Obtener_Delegaciones_Modelo);
                        Thread obj_Thread_DELEGACIONES = new Thread(obj_ThreadStart_DELEGACIONES);
                        obj_Thread_DELEGACIONES.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Modelo[0] = 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(VTA_PedidosCabecera_Datos) + "/" + nameof(Ejecutar_Consulta_Modelo), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
        }
        #region Tablas Relacionadas
        private void Obtener_Delegaciones_Modelo()
        {
            try
            {
                g_mdl_VTA_PedidosCabecera.GEN_Delegaciones = Datos_Generales.GEN_Delegaciones_Obtener_Modelo_Por_Id(g_mdl_VTA_PedidosCabecera.idDelegacion);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Modelo[0] = true;
            }
        }

        #endregion
        #endregion

        #endregion

        #region Modelo Listado
        private List<VTA_PedidosCabecera> g_lst_VTA_PedidosCabecera = null;

        public List<VTA_PedidosCabecera> Obtener_ModeloListado_Por_PedidosLineas(List<long> _lst_idPedidoLinea)
        {
            try
            {

                string str_Filtro_pedidosLINEAS = Funciones.Formar_ContenidoIN_ParaConsultaWhere(nameof(VTA_PedidosLineas),
                                                                                                   nameof(VTA_PedidosLineas.id),
                                                                                                   G_ENUM_FORMARCONTENIDOIN_CONDICIONANTES.NADA,
                                                                                                   _lst_idPedidoLinea);

                //Consulta
                string str_SQL = Obtener_Consulta_Modelo() +
                                    //INNER JOIN
                                    " INNER JOIN " + nameof(VTA_PedidosLineas) + " on " + nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.id) + "=" + nameof(VTA_PedidosLineas) + "." + nameof(VTA_PedidosLineas.idPedidoCabecera) +
                                    //WHERE
                                    " WHERE " +
                                        nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fechaBorrado) + " is null and " +
                                        nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.situacion) + "<>" + int.Parse(Variables.G_MDL_TIPOSITUACION_PEDIDOVENTA_ANULADO.Codigo) + " and " +
                                        nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.situacion) + "<>" + int.Parse(Variables.G_MDL_TIPOSITUACION_PEDIDOVENTA_CANCELADO.Codigo) + " and " +
                                        str_Filtro_pedidosLINEAS;

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

                if (g_lst_VTA_PedidosCabecera != null && g_lst_VTA_PedidosCabecera.Count > 0)
                {

                    //Quitar las Cabeceras repetidas (no se puede hacer un distinct porque hay un campo tipo text)
                    List<VTA_PedidosCabecera>  lst_VTA_PedidosCabecera = new List<VTA_PedidosCabecera>();

                    foreach (VTA_PedidosCabecera mdl_VTA_PedidosCabecera in g_lst_VTA_PedidosCabecera)
                    {
                        if (!lst_VTA_PedidosCabecera.Exists(m => m.id.Equals(mdl_VTA_PedidosCabecera.id)))
                        {
                            lst_VTA_PedidosCabecera.Add(mdl_VTA_PedidosCabecera);
                        }
                    }

                    g_lst_VTA_PedidosCabecera = lst_VTA_PedidosCabecera;
                }

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

            return g_lst_VTA_PedidosCabecera;
        }

        #region Ejecutar Consulta
        //Listado de modelos Relacionados
        private List<VTA_PedidosLineas> g_lst_VTA_PedidosLineas = null;

        //Hilos
        private static int g_int_TotalHilos_Modelo_Listado = 1;
        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_PedidosLineas)
        {
            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_VTA_PedidosCabecera = obj_Exferia_Entities.Database.SqlQuery<VTA_PedidosCabecera>(_str_SQL, _arr_Parametros).ToList();

                #region Rellenar tablas Relacionadas
                if (g_lst_VTA_PedidosCabecera != null && g_lst_VTA_PedidosCabecera.Count > 0)
                {
                    if (_bol_Cargar_PedidosLineas)
                    {
                        #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;
                        }

                        //VTA_PedidosLineas ############################################# 
                        if (_bol_Cargar_PedidosLineas)
                        {
                            ThreadStart obj_ThreadStart_PEDIDOSLINEAS = new ThreadStart(Obtener_PedidosLineas_Modelo_Listado);
                            Thread obj_Thread_PEDIDOSLINEAS = new Thread(obj_ThreadStart_PEDIDOSLINEAS);
                            obj_Thread_PEDIDOSLINEAS.Start();
                        }
                        else
                        {
                            g_bol_Hilos_Terminados_Modelo_Listado[0] = 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_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 (VTA_PedidosCabecera mdl_VTA_PedidosCabecera in g_lst_VTA_PedidosCabecera)
                        {
                            //VTA_PedidosLineas #############################################
                            if (_bol_Cargar_PedidosLineas &&
                                g_lst_VTA_PedidosLineas != null &&
                                g_lst_VTA_PedidosLineas.Count > 0)
                            {
                                mdl_VTA_PedidosCabecera.VTA_PedidosLineas = g_lst_VTA_PedidosLineas.Where(m => m.idPedidoCabecera == mdl_VTA_PedidosCabecera.id).ToList();
                            }
                        }
                        #endregion
                    }

                }

                #endregion

            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(VTA_PedidosCabecera_Datos) + "/" + nameof(Ejecutar_Consulta_Modelo_Listado), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
        }
        #region TablasRelacionadas
        private void Obtener_PedidosLineas_Modelo_Listado()
        {
            try
            {
                VTA_PedidosLineas_Datos obj_VTA_PedidosLineas_Datos = new VTA_PedidosLineas_Datos();
                g_lst_VTA_PedidosLineas = obj_VTA_PedidosLineas_Datos.Obtener_ModeloListado_Por_PedidosCabeceras(g_lst_VTA_PedidosCabecera.Select(m => m.id).ToList());
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Modelo_Listado[0] = true;
            }
        }
        #endregion
        #endregion

        #endregion

        private string Obtener_Consulta_Modelo()
        {
            return
               " SELECT " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.id) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.numeroDocumento) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descripcion) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idDelegacion) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idEmpresa) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fecha) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.guid) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.estado) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.tipoVisita) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idCliente) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idMoneda) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idImpuestoCabecera) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idRelacionClienteProveedor) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descuentoProntoPago) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descuentoFinalFactura) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idEmpleado) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_Preventa) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_PreventaHabitual) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idVendedor_Repartidor) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.referencia) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fechaPrevista) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Pedido) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Cancelacion) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Anulacion) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.idClaveAnalitica) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.recargo) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.situacion) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.autorizado) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.fechaBorrado) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.observaciones) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.descuentoFinalAlbaran) + " , " +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_bruto) + "," +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_descuentoProntoPago) + "," +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_descuentoFinalFactura) + "," +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_baseImponible) + "," +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_impuesto) + "," +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_recargo) + "," +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total_descuentoFinalAlbaran) + "," +
                    nameof(VTA_PedidosCabecera) + "." + nameof(VTA_PedidosCabecera.total) + 
               " FROM " + nameof(VTA_PedidosCabecera);
        }
        #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;

                VTA_PedidosCabecera mdl_VTA_PedidosCabecera_AGrabar = (VTA_PedidosCabecera)_mdl_obj;
                VTA_PedidosCabecera mdl_VTA_PedidosCabecera_DatosViejos = new VTA_PedidosCabecera();

                // Ver si existe ######################################################################
                VTA_PedidosCabecera mdl_VTA_PedidosCabecera_Final = Obtener_Modelo_Por_Id(mdl_VTA_PedidosCabecera_AGrabar.id,false);
                //###################################################################################### 

                if (mdl_VTA_PedidosCabecera_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_VTA_PedidosCabecera_Final, mdl_VTA_PedidosCabecera_DatosViejos, false, false);

                    //Cargar los Datos del Modelo
                    Funciones.CopiarPropiedadesObjetos(mdl_VTA_PedidosCabecera_AGrabar, mdl_VTA_PedidosCabecera_Final, false, false);

                    #region Update
                    string str_SQL_Update = " UPDATE " + nameof(VTA_PedidosCabecera) +
                                            " SET " +
                                                nameof(VTA_PedidosCabecera.numeroDocumento) + "=@numeroDocumento," +
                                                nameof(VTA_PedidosCabecera.descripcion) + "=@descripcion," +
                                                nameof(VTA_PedidosCabecera.idDelegacion) + "=@idDelegacion," +
                                                nameof(VTA_PedidosCabecera.idEmpresa) + "=@idEmpresa," +
                                                nameof(VTA_PedidosCabecera.fecha) + "=@fecha," +
                                                nameof(VTA_PedidosCabecera.guid) + "=@guid," +
                                                nameof(VTA_PedidosCabecera.estado) + "=@estado," +
                                                nameof(VTA_PedidosCabecera.tipoVisita) + "=@tipoVisita," +
                                                nameof(VTA_PedidosCabecera.idCliente) + "=@idCliente," +
                                                nameof(VTA_PedidosCabecera.idMoneda) + "=@idMoneda," +
                                                nameof(VTA_PedidosCabecera.idImpuestoCabecera) + "=@idImpuestoCabecera," +
                                                nameof(VTA_PedidosCabecera.idRelacionClienteProveedor) + "=@idRelacionClienteProveedor," +
                                                nameof(VTA_PedidosCabecera.descuentoProntoPago) + "=@descuentoProntoPago," +
                                                nameof(VTA_PedidosCabecera.descuentoFinalFactura) + "=@descuentoFinalFactura," +
                                                nameof(VTA_PedidosCabecera.idEmpleado) + "=@idEmpleado," +
                                                nameof(VTA_PedidosCabecera.idVendedor_Preventa) + "=@idVendedor_Preventa," +
                                                nameof(VTA_PedidosCabecera.idVendedor_PreventaHabitual) + "=@idVendedor_PreventaHabitual," +
                                                nameof(VTA_PedidosCabecera.idVendedor_Repartidor) + "=@idVendedor_Repartidor," +
                                                nameof(VTA_PedidosCabecera.referencia) + "=@referencia," +
                                                nameof(VTA_PedidosCabecera.fechaPrevista) + "=@fechaPrevista," +
                                                nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Pedido) + "=@idPredefinidoCabecera_Pedido," +
                                                nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Cancelacion) + "=@idPredefinidoCabecera_Cancelacion," +
                                                nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Anulacion) + "=@idPredefinidoCabecera_Anulacion," +
                                                nameof(VTA_PedidosCabecera.idClaveAnalitica) + "=@idClaveAnalitica," +
                                                nameof(VTA_PedidosCabecera.recargo) + "=@recargo," +
                                                nameof(VTA_PedidosCabecera.situacion) + "=@situacion," +
                                                nameof(VTA_PedidosCabecera.autorizado) + "=@autorizado," +
                                                nameof(VTA_PedidosCabecera.fechaBorrado) + "=@fechaBorrado," +
                                                nameof(VTA_PedidosCabecera.observaciones) + "=@observaciones," +
                                                nameof(VTA_PedidosCabecera.descuentoFinalAlbaran) + "=@descuentoFinalAlbaran, " +
                                                nameof(VTA_PedidosCabecera.total_bruto) + "=@total_bruto, " +
                                                nameof(VTA_PedidosCabecera.total_descuentoProntoPago) + "=@total_descuentoProntoPago, " +
                                                nameof(VTA_PedidosCabecera.total_descuentoFinalFactura) + "=@total_descuentoFinalFactura, " +
                                                nameof(VTA_PedidosCabecera.total_baseImponible) + "=@total_baseImponible, " +
                                                nameof(VTA_PedidosCabecera.total_impuesto) + "=@total_impuesto, " +
                                                nameof(VTA_PedidosCabecera.total_recargo) + "=@total_recargo, " +
                                                nameof(VTA_PedidosCabecera.total_descuentoFinalAlbaran) + "=@total_descuentoFinalAlbaran, " +
                                                nameof(VTA_PedidosCabecera.total) + "=@total " +
                                            " WHERE " +
                                                nameof(VTA_PedidosCabecera.id) + "=@id";
                    //Parametros
                    object[] arr_Parametros_Update = new object[]
                    {
                        new SqlParameter("@numeroDocumento",  mdl_VTA_PedidosCabecera_Final.numeroDocumento),
                        new SqlParameter("@descripcion",  mdl_VTA_PedidosCabecera_Final.descripcion),
                        new SqlParameter("@idDelegacion",  mdl_VTA_PedidosCabecera_Final.idDelegacion),
                        new SqlParameter("@idEmpresa",  mdl_VTA_PedidosCabecera_Final.idEmpresa),
                        new SqlParameter("@fecha",  mdl_VTA_PedidosCabecera_Final.fecha),
                        mdl_VTA_PedidosCabecera_Final.guid!=null
                            ?   new SqlParameter("@guid", mdl_VTA_PedidosCabecera_Final.guid)
                            :   new SqlParameter("@guid",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.estado!=null
                            ?   new SqlParameter("@estado", mdl_VTA_PedidosCabecera_Final.estado)
                            :   new SqlParameter("@estado",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.tipoVisita!=null
                            ?   new SqlParameter("@tipoVisita", mdl_VTA_PedidosCabecera_Final.tipoVisita)
                            :   new SqlParameter("@tipoVisita",  DBNull.Value),
                        new SqlParameter("@idCliente",  mdl_VTA_PedidosCabecera_Final.idCliente),
                        new SqlParameter("@idMoneda",  mdl_VTA_PedidosCabecera_Final.idMoneda),
                        new SqlParameter("@idImpuestoCabecera",  mdl_VTA_PedidosCabecera_Final.idImpuestoCabecera),
                        mdl_VTA_PedidosCabecera_Final.idRelacionClienteProveedor!=null
                            ?   new SqlParameter("@idRelacionClienteProveedor", mdl_VTA_PedidosCabecera_Final.idRelacionClienteProveedor)
                            :   new SqlParameter("@idRelacionClienteProveedor",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.descuentoProntoPago!=null
                            ?   new SqlParameter("@descuentoProntoPago", mdl_VTA_PedidosCabecera_Final.descuentoProntoPago)
                            :   new SqlParameter("@descuentoProntoPago",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.descuentoFinalFactura!=null
                            ?   new SqlParameter("@descuentoFinalFactura", mdl_VTA_PedidosCabecera_Final.descuentoFinalFactura)
                            :   new SqlParameter("@descuentoFinalFactura",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idEmpleado!=null
                            ?   new SqlParameter("@idEmpleado", mdl_VTA_PedidosCabecera_Final.idEmpleado)
                            :   new SqlParameter("@idEmpleado",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idVendedor_Preventa!=null
                            ?   new SqlParameter("@idVendedor_Preventa", mdl_VTA_PedidosCabecera_Final.idVendedor_Preventa)
                            :   new SqlParameter("@idVendedor_Preventa",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idVendedor_PreventaHabitual!=null
                            ?   new SqlParameter("@idVendedor_PreventaHabitual", mdl_VTA_PedidosCabecera_Final.idVendedor_PreventaHabitual)
                            :   new SqlParameter("@idVendedor_PreventaHabitual",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idVendedor_Repartidor!=null
                            ?   new SqlParameter("@idVendedor_Repartidor", mdl_VTA_PedidosCabecera_Final.idVendedor_Repartidor)
                            :   new SqlParameter("@idVendedor_Repartidor",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.referencia!=null
                            ?   new SqlParameter("@referencia", mdl_VTA_PedidosCabecera_Final.referencia)
                            :   new SqlParameter("@referencia",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.fechaPrevista!=null
                            ?   new SqlParameter("@fechaPrevista", mdl_VTA_PedidosCabecera_Final.fechaPrevista)
                            :   new SqlParameter("@fechaPrevista",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idPredefinidoCabecera_Pedido!=null
                            ?   new SqlParameter("@idPredefinidoCabecera_Pedido", mdl_VTA_PedidosCabecera_Final.idPredefinidoCabecera_Pedido)
                            :   new SqlParameter("@idPredefinidoCabecera_Pedido",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idPredefinidoCabecera_Cancelacion!=null
                            ?   new SqlParameter("@idPredefinidoCabecera_Cancelacion", mdl_VTA_PedidosCabecera_Final.idPredefinidoCabecera_Cancelacion)
                            :   new SqlParameter("@idPredefinidoCabecera_Cancelacion",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idPredefinidoCabecera_Anulacion!=null
                            ?   new SqlParameter("@idPredefinidoCabecera_Anulacion", mdl_VTA_PedidosCabecera_Final.idPredefinidoCabecera_Anulacion)
                            :   new SqlParameter("@idPredefinidoCabecera_Anulacion",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idClaveAnalitica!=null
                            ?   new SqlParameter("@idClaveAnalitica", mdl_VTA_PedidosCabecera_Final.idClaveAnalitica)
                            :   new SqlParameter("@idClaveAnalitica",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.recargo!=null
                            ?   new SqlParameter("@recargo", mdl_VTA_PedidosCabecera_Final.recargo)
                            :   new SqlParameter("@recargo",  DBNull.Value),
                        new SqlParameter("@situacion",  mdl_VTA_PedidosCabecera_Final.situacion),
                        mdl_VTA_PedidosCabecera_Final.autorizado!=null
                            ?   new SqlParameter("@autorizado", mdl_VTA_PedidosCabecera_Final.autorizado)
                            :   new SqlParameter("@autorizado",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.fechaBorrado!=null
                            ?   new SqlParameter("@fechaBorrado", mdl_VTA_PedidosCabecera_Final.fechaBorrado)
                            :   new SqlParameter("@fechaBorrado",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.observaciones!=null
                            ?   new SqlParameter("@observaciones", mdl_VTA_PedidosCabecera_Final.observaciones)
                            :   new SqlParameter("@observaciones",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.descuentoFinalAlbaran!=null
                            ?   new SqlParameter("@descuentoFinalAlbaran", mdl_VTA_PedidosCabecera_Final.descuentoFinalAlbaran)
                            :   new SqlParameter("@descuentoFinalAlbaran",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.total_bruto!=null
                            ?   new SqlParameter("@total_bruto", mdl_VTA_PedidosCabecera_Final.total_bruto)
                            :   new SqlParameter("@total_bruto",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.total_descuentoProntoPago!=null
                            ?   new SqlParameter("@total_descuentoProntoPago", mdl_VTA_PedidosCabecera_Final.total_descuentoProntoPago)
                            :   new SqlParameter("@total_descuentoProntoPago",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.total_descuentoFinalFactura!=null
                            ?   new SqlParameter("@total_descuentoFinalFactura", mdl_VTA_PedidosCabecera_Final.total_descuentoFinalFactura)
                            :   new SqlParameter("@total_descuentoFinalFactura",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.total_baseImponible!=null
                            ?   new SqlParameter("@total_baseImponible", mdl_VTA_PedidosCabecera_Final.total_baseImponible)
                            :   new SqlParameter("@total_baseImponible",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.total_impuesto!=null
                            ?   new SqlParameter("@total_impuesto", mdl_VTA_PedidosCabecera_Final.total_impuesto)
                            :   new SqlParameter("@total_impuesto",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.total_recargo!=null
                            ?   new SqlParameter("@total_recargo", mdl_VTA_PedidosCabecera_Final.total_recargo)
                            :   new SqlParameter("@total_recargo",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.total_descuentoFinalAlbaran!=null
                            ?   new SqlParameter("@total_descuentoFinalAlbaran", mdl_VTA_PedidosCabecera_Final.total_descuentoFinalAlbaran)
                            :   new SqlParameter("@total_descuentoFinalAlbaran",  DBNull.Value),
                         mdl_VTA_PedidosCabecera_Final.total!=null
                            ?   new SqlParameter("@total", mdl_VTA_PedidosCabecera_Final.total)
                            :   new SqlParameter("@total",  DBNull.Value),
                        new SqlParameter("@id",  mdl_VTA_PedidosCabecera_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_VTA_PedidosCabecera_Final.id;
                }
                else
                {
                    mdl_VTA_PedidosCabecera_Final = new VTA_PedidosCabecera();

                    //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_VTA_PedidosCabecera_AGrabar, mdl_VTA_PedidosCabecera_Final, false, false);

                    #region INSERT
                    string str_SQL_Insert = " INSERT INTO " + nameof(VTA_PedidosCabecera) +
                                            " (" +
                                                    nameof(VTA_PedidosCabecera.numeroDocumento) + "," +
                                                    nameof(VTA_PedidosCabecera.descripcion) + "," +
                                                    nameof(VTA_PedidosCabecera.idDelegacion) + "," +
                                                    nameof(VTA_PedidosCabecera.idEmpresa) + "," +
                                                    nameof(VTA_PedidosCabecera.fecha) + "," +
                                                    nameof(VTA_PedidosCabecera.guid) + "," +
                                                    nameof(VTA_PedidosCabecera.estado) + "," +
                                                    nameof(VTA_PedidosCabecera.tipoVisita) + "," +
                                                    nameof(VTA_PedidosCabecera.idCliente) + "," +
                                                    nameof(VTA_PedidosCabecera.idMoneda) + "," +
                                                    nameof(VTA_PedidosCabecera.idImpuestoCabecera) + "," +
                                                    nameof(VTA_PedidosCabecera.idRelacionClienteProveedor) + "," +
                                                    nameof(VTA_PedidosCabecera.descuentoProntoPago) + "," +
                                                    nameof(VTA_PedidosCabecera.descuentoFinalFactura) + "," +
                                                    nameof(VTA_PedidosCabecera.idEmpleado) + "," +
                                                    nameof(VTA_PedidosCabecera.idVendedor_Preventa) + "," +
                                                    nameof(VTA_PedidosCabecera.idVendedor_PreventaHabitual) + "," +
                                                    nameof(VTA_PedidosCabecera.idVendedor_Repartidor) + "," +
                                                    nameof(VTA_PedidosCabecera.referencia) + "," +
                                                    nameof(VTA_PedidosCabecera.fechaPrevista) + "," +
                                                    nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Pedido) + "," +
                                                    nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Cancelacion) + "," +
                                                    nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Anulacion) + "," +
                                                    nameof(VTA_PedidosCabecera.idClaveAnalitica) + "," +
                                                    nameof(VTA_PedidosCabecera.recargo) + "," +
                                                    nameof(VTA_PedidosCabecera.situacion) + "," +
                                                    nameof(VTA_PedidosCabecera.autorizado) + "," +
                                                    nameof(VTA_PedidosCabecera.fechaBorrado) + "," +
                                                    nameof(VTA_PedidosCabecera.observaciones) + "," +
                                                    nameof(VTA_PedidosCabecera.descuentoFinalAlbaran) + "," +
                                                    nameof(VTA_PedidosCabecera.total_bruto) + "," +
                                                    nameof(VTA_PedidosCabecera.total_descuentoProntoPago) + "," +
                                                    nameof(VTA_PedidosCabecera.total_descuentoFinalFactura) + "," +
                                                    nameof(VTA_PedidosCabecera.total_baseImponible) + "," +
                                                    nameof(VTA_PedidosCabecera.total_impuesto) + "," +
                                                    nameof(VTA_PedidosCabecera.total_recargo) + "," +
                                                    nameof(VTA_PedidosCabecera.total_descuentoFinalAlbaran) + "," +
                                                    nameof(VTA_PedidosCabecera.total) +
                                            " ) " +
                                            " OUTPUT INSERTED." + nameof(VTA_PedidosCabecera.id) +
                                            " VALUES " +
                                            " ( " +
                                                "@numeroDocumento," +
                                                "@descripcion," +
                                                "@idDelegacion," +
                                                "@idEmpresa," +
                                                "@fecha," +
                                                "@guid," +
                                                "@estado," +
                                                "@tipoVisita," +
                                                "@idCliente," +
                                                "@idMoneda," +
                                                "@idImpuestoCabecera," +
                                                "@idRelacionClienteProveedor," +
                                                "@descuentoProntoPago," +
                                                "@descuentoFinalFactura," +
                                                "@idEmpleado," +
                                                "@idVendedor_Preventa," +
                                                "@idVendedor_PreventaHabitual," +
                                                "@idVendedor_Repartidor," +
                                                "@referencia," +
                                                "@fechaPrevista," +
                                                "@idPredefinidoCabecera_Pedido," +
                                                "@idPredefinidoCabecera_Cancelacion," +
                                                "@idPredefinidoCabecera_Anulacion," +
                                                "@idClaveAnalitica," +
                                                "@recargo," +
                                                "@situacion," +
                                                "@autorizado," +
                                                "@fechaBorrado," +
                                                "@observaciones," +
                                                "@descuentoFinalAlbaran," +
                                                "@total_bruto," +
                                                "@total_descuentoProntoPago," +
                                                "@total_descuentoFinalFactura," +
                                                "@total_baseImponible," +
                                                "@total_impuesto," +
                                                "@total_recargo," +
                                                "@total_descuentoFinalAlbaran," +
                                                "@total" +
                                            " ) ";
                    //Parametros
                    object[] arr_Parametros_Insert = new object[]
                    {
                        new SqlParameter("@numeroDocumento",  mdl_VTA_PedidosCabecera_Final.numeroDocumento),
                        new SqlParameter("@descripcion",  mdl_VTA_PedidosCabecera_Final.descripcion),
                        new SqlParameter("@idDelegacion",  mdl_VTA_PedidosCabecera_Final.idDelegacion),
                        new SqlParameter("@idEmpresa",  mdl_VTA_PedidosCabecera_Final.idEmpresa),
                        new SqlParameter("@fecha",  mdl_VTA_PedidosCabecera_Final.fecha),
                        mdl_VTA_PedidosCabecera_Final.guid!=null
                            ?   new SqlParameter("@guid", mdl_VTA_PedidosCabecera_Final.guid)
                            :   new SqlParameter("@guid",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.estado!=null
                            ?   new SqlParameter("@estado", mdl_VTA_PedidosCabecera_Final.estado)
                            :   new SqlParameter("@estado",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.tipoVisita!=null
                            ?   new SqlParameter("@tipoVisita", mdl_VTA_PedidosCabecera_Final.tipoVisita)
                            :   new SqlParameter("@tipoVisita",  DBNull.Value),
                        new SqlParameter("@idCliente",  mdl_VTA_PedidosCabecera_Final.idCliente),
                        new SqlParameter("@idMoneda",  mdl_VTA_PedidosCabecera_Final.idMoneda),
                        new SqlParameter("@idImpuestoCabecera",  mdl_VTA_PedidosCabecera_Final.idImpuestoCabecera),
                        mdl_VTA_PedidosCabecera_Final.idRelacionClienteProveedor!=null
                            ?   new SqlParameter("@idRelacionClienteProveedor", mdl_VTA_PedidosCabecera_Final.idRelacionClienteProveedor)
                            :   new SqlParameter("@idRelacionClienteProveedor",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.descuentoProntoPago!=null
                            ?   new SqlParameter("@descuentoProntoPago", mdl_VTA_PedidosCabecera_Final.descuentoProntoPago)
                            :   new SqlParameter("@descuentoProntoPago",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.descuentoFinalFactura!=null
                            ?   new SqlParameter("@descuentoFinalFactura", mdl_VTA_PedidosCabecera_Final.descuentoFinalFactura)
                            :   new SqlParameter("@descuentoFinalFactura",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idEmpleado!=null
                            ?   new SqlParameter("@idEmpleado", mdl_VTA_PedidosCabecera_Final.idEmpleado)
                            :   new SqlParameter("@idEmpleado",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idVendedor_Preventa!=null
                            ?   new SqlParameter("@idVendedor_Preventa", mdl_VTA_PedidosCabecera_Final.idVendedor_Preventa)
                            :   new SqlParameter("@idVendedor_Preventa",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idVendedor_PreventaHabitual!=null
                            ?   new SqlParameter("@idVendedor_PreventaHabitual", mdl_VTA_PedidosCabecera_Final.idVendedor_PreventaHabitual)
                            :   new SqlParameter("@idVendedor_PreventaHabitual",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idVendedor_Repartidor!=null
                            ?   new SqlParameter("@idVendedor_Repartidor", mdl_VTA_PedidosCabecera_Final.idVendedor_Repartidor)
                            :   new SqlParameter("@idVendedor_Repartidor",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.referencia!=null
                            ?   new SqlParameter("@referencia", mdl_VTA_PedidosCabecera_Final.referencia)
                            :   new SqlParameter("@referencia",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.fechaPrevista!=null
                            ?   new SqlParameter("@fechaPrevista", mdl_VTA_PedidosCabecera_Final.fechaPrevista)
                            :   new SqlParameter("@fechaPrevista",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idPredefinidoCabecera_Pedido!=null
                            ?   new SqlParameter("@idPredefinidoCabecera_Pedido", mdl_VTA_PedidosCabecera_Final.idPredefinidoCabecera_Pedido)
                            :   new SqlParameter("@idPredefinidoCabecera_Pedido",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idPredefinidoCabecera_Cancelacion!=null
                            ?   new SqlParameter("@idPredefinidoCabecera_Cancelacion", mdl_VTA_PedidosCabecera_Final.idPredefinidoCabecera_Cancelacion)
                            :   new SqlParameter("@idPredefinidoCabecera_Cancelacion",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idPredefinidoCabecera_Anulacion!=null
                            ?   new SqlParameter("@idPredefinidoCabecera_Anulacion", mdl_VTA_PedidosCabecera_Final.idPredefinidoCabecera_Anulacion)
                            :   new SqlParameter("@idPredefinidoCabecera_Anulacion",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idClaveAnalitica!=null
                            ?   new SqlParameter("@idClaveAnalitica", mdl_VTA_PedidosCabecera_Final.idClaveAnalitica)
                            :   new SqlParameter("@idClaveAnalitica",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.recargo!=null
                            ?   new SqlParameter("@recargo", mdl_VTA_PedidosCabecera_Final.recargo)
                            :   new SqlParameter("@recargo",  DBNull.Value),
                        new SqlParameter("@situacion",  mdl_VTA_PedidosCabecera_Final.situacion),
                        mdl_VTA_PedidosCabecera_Final.autorizado!=null
                            ?   new SqlParameter("@autorizado", mdl_VTA_PedidosCabecera_Final.autorizado)
                            :   new SqlParameter("@autorizado",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.fechaBorrado!=null
                            ?   new SqlParameter("@fechaBorrado", mdl_VTA_PedidosCabecera_Final.fechaBorrado)
                            :   new SqlParameter("@fechaBorrado",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.observaciones!=null
                            ?   new SqlParameter("@observaciones", mdl_VTA_PedidosCabecera_Final.observaciones)
                            :   new SqlParameter("@observaciones",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.descuentoFinalAlbaran!=null
                            ?   new SqlParameter("@descuentoFinalAlbaran", mdl_VTA_PedidosCabecera_Final.descuentoFinalAlbaran)
                            :   new SqlParameter("@descuentoFinalAlbaran",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.total_bruto!=null
                            ?   new SqlParameter("@total_bruto", mdl_VTA_PedidosCabecera_Final.total_bruto)
                            :   new SqlParameter("@total_bruto",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.total_descuentoProntoPago!=null
                            ?   new SqlParameter("@total_descuentoProntoPago", mdl_VTA_PedidosCabecera_Final.total_descuentoProntoPago)
                            :   new SqlParameter("@total_descuentoProntoPago",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.total_descuentoFinalFactura!=null
                            ?   new SqlParameter("@total_descuentoFinalFactura", mdl_VTA_PedidosCabecera_Final.total_descuentoFinalFactura)
                            :   new SqlParameter("@total_descuentoFinalFactura",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.total_baseImponible!=null
                            ?   new SqlParameter("@total_baseImponible", mdl_VTA_PedidosCabecera_Final.total_baseImponible)
                            :   new SqlParameter("@total_baseImponible",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.total_impuesto!=null
                            ?   new SqlParameter("@total_impuesto", mdl_VTA_PedidosCabecera_Final.total_impuesto)
                            :   new SqlParameter("@total_impuesto",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.total_recargo!=null
                            ?   new SqlParameter("@total_recargo", mdl_VTA_PedidosCabecera_Final.total_recargo)
                            :   new SqlParameter("@total_recargo",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.total_descuentoFinalAlbaran!=null
                            ?   new SqlParameter("@total_descuentoFinalAlbaran", mdl_VTA_PedidosCabecera_Final.total_descuentoFinalAlbaran)
                            :   new SqlParameter("@total_descuentoFinalAlbaran",  DBNull.Value),
                         mdl_VTA_PedidosCabecera_Final.total!=null
                            ?   new SqlParameter("@total", mdl_VTA_PedidosCabecera_Final.total)
                            :   new SqlParameter("@total",  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(VTA_PedidosCabecera), mdl_VTA_PedidosCabecera_DatosViejos, mdl_VTA_PedidosCabecera_Final, mdl_INTERNO_ValorDevuelto_Modelo.TipoAccion, obj_Exferia_Entities);

            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(VTA_PedidosCabecera_Datos) + "/" + nameof(Grabar), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
            return mdl_INTERNO_ValorDevuelto_Modelo;
        }
        public INTERNO_ValorDevuelto_Modelo Insertar(VTA_PedidosCabecera _mdl_VTA_PedidosCabecera_AGrabar)
        {
            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;

                VTA_PedidosCabecera mdl_VTA_PedidosCabecera_DatosViejos = new VTA_PedidosCabecera();
                VTA_PedidosCabecera mdl_VTA_PedidosCabecera_Final = new VTA_PedidosCabecera();

                //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_VTA_PedidosCabecera_AGrabar, mdl_VTA_PedidosCabecera_Final, false, false);

                #region INSERT
                string str_SQL_Insert = " INSERT INTO " + nameof(VTA_PedidosCabecera) +
                                        " (" +
                                                nameof(VTA_PedidosCabecera.numeroDocumento) + "," +
                                                nameof(VTA_PedidosCabecera.descripcion) + "," +
                                                nameof(VTA_PedidosCabecera.idDelegacion) + "," +
                                                nameof(VTA_PedidosCabecera.idEmpresa) + "," +
                                                nameof(VTA_PedidosCabecera.fecha) + "," +
                                                nameof(VTA_PedidosCabecera.guid) + "," +
                                                nameof(VTA_PedidosCabecera.estado) + "," +
                                                nameof(VTA_PedidosCabecera.tipoVisita) + "," +
                                                nameof(VTA_PedidosCabecera.idCliente) + "," +
                                                nameof(VTA_PedidosCabecera.idMoneda) + "," +
                                                nameof(VTA_PedidosCabecera.idImpuestoCabecera) + "," +
                                                nameof(VTA_PedidosCabecera.idRelacionClienteProveedor) + "," +
                                                nameof(VTA_PedidosCabecera.descuentoProntoPago) + "," +
                                                nameof(VTA_PedidosCabecera.descuentoFinalFactura) + "," +
                                                nameof(VTA_PedidosCabecera.idEmpleado) + "," +
                                                nameof(VTA_PedidosCabecera.idVendedor_Preventa) + "," +
                                                nameof(VTA_PedidosCabecera.idVendedor_PreventaHabitual) + "," +
                                                nameof(VTA_PedidosCabecera.idVendedor_Repartidor) + "," +
                                                nameof(VTA_PedidosCabecera.referencia) + "," +
                                                nameof(VTA_PedidosCabecera.fechaPrevista) + "," +
                                                nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Pedido) + "," +
                                                nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Cancelacion) + "," +
                                                nameof(VTA_PedidosCabecera.idPredefinidoCabecera_Anulacion) + "," +
                                                nameof(VTA_PedidosCabecera.idClaveAnalitica) + "," +
                                                nameof(VTA_PedidosCabecera.recargo) + "," +
                                                nameof(VTA_PedidosCabecera.situacion) + "," +
                                                nameof(VTA_PedidosCabecera.autorizado) + "," +
                                                nameof(VTA_PedidosCabecera.fechaBorrado) + "," +
                                                nameof(VTA_PedidosCabecera.observaciones) + "," +
                                                nameof(VTA_PedidosCabecera.descuentoFinalAlbaran) + "," +
                                                nameof(VTA_PedidosCabecera.total_bruto) + "," +
                                                nameof(VTA_PedidosCabecera.total_descuentoProntoPago) + "," +
                                                nameof(VTA_PedidosCabecera.total_descuentoFinalFactura) + "," +
                                                nameof(VTA_PedidosCabecera.total_baseImponible) + "," +
                                                nameof(VTA_PedidosCabecera.total_impuesto) + "," +
                                                nameof(VTA_PedidosCabecera.total_recargo) + "," +
                                                nameof(VTA_PedidosCabecera.total_descuentoFinalAlbaran) + "," +
                                                nameof(VTA_PedidosCabecera.total) +
                                        " ) " +
                                        " OUTPUT INSERTED." + nameof(VTA_PedidosCabecera.id) +
                                        " VALUES " +
                                        " ( " +
                                            "@numeroDocumento," +
                                            "@descripcion," +
                                            "@idDelegacion," +
                                            "@idEmpresa," +
                                            "@fecha," +
                                            "@guid," +
                                            "@estado," +
                                            "@tipoVisita," +
                                            "@idCliente," +
                                            "@idMoneda," +
                                            "@idImpuestoCabecera," +
                                            "@idRelacionClienteProveedor," +
                                            "@descuentoProntoPago," +
                                            "@descuentoFinalFactura," +
                                            "@idEmpleado," +
                                            "@idVendedor_Preventa," +
                                            "@idVendedor_PreventaHabitual," +
                                            "@idVendedor_Repartidor," +
                                            "@referencia," +
                                            "@fechaPrevista," +
                                            "@idPredefinidoCabecera_Pedido," +
                                            "@idPredefinidoCabecera_Cancelacion," +
                                            "@idPredefinidoCabecera_Anulacion," +
                                            "@idClaveAnalitica," +
                                            "@recargo," +
                                            "@situacion," +
                                            "@autorizado," +
                                            "@fechaBorrado," +
                                            "@observaciones," +
                                            "@descuentoFinalAlbaran," +
                                            "@total_bruto," +
                                            "@total_descuentoProntoPago," +
                                            "@total_descuentoFinalFactura," +
                                            "@total_baseImponible," +
                                            "@total_impuesto," +
                                            "@total_recargo," +
                                            "@total_descuentoFinalAlbaran," +
                                            "@total" +
                                        " ) ";
                //Parametros
                object[] arr_Parametros_Insert = new object[]
                {
                        new SqlParameter("@numeroDocumento",  mdl_VTA_PedidosCabecera_Final.numeroDocumento),
                        new SqlParameter("@descripcion",  mdl_VTA_PedidosCabecera_Final.descripcion),
                        new SqlParameter("@idDelegacion",  mdl_VTA_PedidosCabecera_Final.idDelegacion),
                        new SqlParameter("@idEmpresa",  mdl_VTA_PedidosCabecera_Final.idEmpresa),
                        new SqlParameter("@fecha",  mdl_VTA_PedidosCabecera_Final.fecha),
                        mdl_VTA_PedidosCabecera_Final.guid!=null
                            ?   new SqlParameter("@guid", mdl_VTA_PedidosCabecera_Final.guid)
                            :   new SqlParameter("@guid",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.estado!=null
                            ?   new SqlParameter("@estado", mdl_VTA_PedidosCabecera_Final.estado)
                            :   new SqlParameter("@estado",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.tipoVisita!=null
                            ?   new SqlParameter("@tipoVisita", mdl_VTA_PedidosCabecera_Final.tipoVisita)
                            :   new SqlParameter("@tipoVisita",  DBNull.Value),
                        new SqlParameter("@idCliente",  mdl_VTA_PedidosCabecera_Final.idCliente),
                        new SqlParameter("@idMoneda",  mdl_VTA_PedidosCabecera_Final.idMoneda),
                        new SqlParameter("@idImpuestoCabecera",  mdl_VTA_PedidosCabecera_Final.idImpuestoCabecera),
                        mdl_VTA_PedidosCabecera_Final.idRelacionClienteProveedor!=null
                            ?   new SqlParameter("@idRelacionClienteProveedor", mdl_VTA_PedidosCabecera_Final.idRelacionClienteProveedor)
                            :   new SqlParameter("@idRelacionClienteProveedor",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.descuentoProntoPago!=null
                            ?   new SqlParameter("@descuentoProntoPago", mdl_VTA_PedidosCabecera_Final.descuentoProntoPago)
                            :   new SqlParameter("@descuentoProntoPago",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.descuentoFinalFactura!=null
                            ?   new SqlParameter("@descuentoFinalFactura", mdl_VTA_PedidosCabecera_Final.descuentoFinalFactura)
                            :   new SqlParameter("@descuentoFinalFactura",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idEmpleado!=null
                            ?   new SqlParameter("@idEmpleado", mdl_VTA_PedidosCabecera_Final.idEmpleado)
                            :   new SqlParameter("@idEmpleado",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idVendedor_Preventa!=null
                            ?   new SqlParameter("@idVendedor_Preventa", mdl_VTA_PedidosCabecera_Final.idVendedor_Preventa)
                            :   new SqlParameter("@idVendedor_Preventa",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idVendedor_PreventaHabitual!=null
                            ?   new SqlParameter("@idVendedor_PreventaHabitual", mdl_VTA_PedidosCabecera_Final.idVendedor_PreventaHabitual)
                            :   new SqlParameter("@idVendedor_PreventaHabitual",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idVendedor_Repartidor!=null
                            ?   new SqlParameter("@idVendedor_Repartidor", mdl_VTA_PedidosCabecera_Final.idVendedor_Repartidor)
                            :   new SqlParameter("@idVendedor_Repartidor",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.referencia!=null
                            ?   new SqlParameter("@referencia", mdl_VTA_PedidosCabecera_Final.referencia)
                            :   new SqlParameter("@referencia",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.fechaPrevista!=null
                            ?   new SqlParameter("@fechaPrevista", mdl_VTA_PedidosCabecera_Final.fechaPrevista)
                            :   new SqlParameter("@fechaPrevista",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idPredefinidoCabecera_Pedido!=null
                            ?   new SqlParameter("@idPredefinidoCabecera_Pedido", mdl_VTA_PedidosCabecera_Final.idPredefinidoCabecera_Pedido)
                            :   new SqlParameter("@idPredefinidoCabecera_Pedido",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idPredefinidoCabecera_Cancelacion!=null
                            ?   new SqlParameter("@idPredefinidoCabecera_Cancelacion", mdl_VTA_PedidosCabecera_Final.idPredefinidoCabecera_Cancelacion)
                            :   new SqlParameter("@idPredefinidoCabecera_Cancelacion",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idPredefinidoCabecera_Anulacion!=null
                            ?   new SqlParameter("@idPredefinidoCabecera_Anulacion", mdl_VTA_PedidosCabecera_Final.idPredefinidoCabecera_Anulacion)
                            :   new SqlParameter("@idPredefinidoCabecera_Anulacion",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.idClaveAnalitica!=null
                            ?   new SqlParameter("@idClaveAnalitica", mdl_VTA_PedidosCabecera_Final.idClaveAnalitica)
                            :   new SqlParameter("@idClaveAnalitica",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.recargo!=null
                            ?   new SqlParameter("@recargo", mdl_VTA_PedidosCabecera_Final.recargo)
                            :   new SqlParameter("@recargo",  DBNull.Value),
                        new SqlParameter("@situacion",  mdl_VTA_PedidosCabecera_Final.situacion),
                        mdl_VTA_PedidosCabecera_Final.autorizado!=null
                            ?   new SqlParameter("@autorizado", mdl_VTA_PedidosCabecera_Final.autorizado)
                            :   new SqlParameter("@autorizado",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.fechaBorrado!=null
                            ?   new SqlParameter("@fechaBorrado", mdl_VTA_PedidosCabecera_Final.fechaBorrado)
                            :   new SqlParameter("@fechaBorrado",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.observaciones!=null
                            ?   new SqlParameter("@observaciones", mdl_VTA_PedidosCabecera_Final.observaciones)
                            :   new SqlParameter("@observaciones",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.descuentoFinalAlbaran!=null
                            ?   new SqlParameter("@descuentoFinalAlbaran", mdl_VTA_PedidosCabecera_Final.descuentoFinalAlbaran)
                            :   new SqlParameter("@descuentoFinalAlbaran",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.total_bruto!=null
                            ?   new SqlParameter("@total_bruto", mdl_VTA_PedidosCabecera_Final.total_bruto)
                            :   new SqlParameter("@total_bruto",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.total_descuentoProntoPago!=null
                            ?   new SqlParameter("@total_descuentoProntoPago", mdl_VTA_PedidosCabecera_Final.total_descuentoProntoPago)
                            :   new SqlParameter("@total_descuentoProntoPago",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.total_descuentoFinalFactura!=null
                            ?   new SqlParameter("@total_descuentoFinalFactura", mdl_VTA_PedidosCabecera_Final.total_descuentoFinalFactura)
                            :   new SqlParameter("@total_descuentoFinalFactura",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.total_baseImponible!=null
                            ?   new SqlParameter("@total_baseImponible", mdl_VTA_PedidosCabecera_Final.total_baseImponible)
                            :   new SqlParameter("@total_baseImponible",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.total_impuesto!=null
                            ?   new SqlParameter("@total_impuesto", mdl_VTA_PedidosCabecera_Final.total_impuesto)
                            :   new SqlParameter("@total_impuesto",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.total_recargo!=null
                            ?   new SqlParameter("@total_recargo", mdl_VTA_PedidosCabecera_Final.total_recargo)
                            :   new SqlParameter("@total_recargo",  DBNull.Value),
                        mdl_VTA_PedidosCabecera_Final.total_descuentoFinalAlbaran!=null
                            ?   new SqlParameter("@total_descuentoFinalAlbaran", mdl_VTA_PedidosCabecera_Final.total_descuentoFinalAlbaran)
                            :   new SqlParameter("@total_descuentoFinalAlbaran",  DBNull.Value),
                         mdl_VTA_PedidosCabecera_Final.total!=null
                            ?   new SqlParameter("@total", mdl_VTA_PedidosCabecera_Final.total)
                            :   new SqlParameter("@total",  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();

                #region TABLAS RELACIONADAS
                //ANEXOS
                if (_mdl_VTA_PedidosCabecera_AGrabar.VTA_PedidosCabecera_Anexos != null && _mdl_VTA_PedidosCabecera_AGrabar.VTA_PedidosCabecera_Anexos.Count > 0)
                {
                    VTA_PedidosCabecera_Anexos_Datos obj_VTA_PedidosCabecera_Anexos_Datos = new VTA_PedidosCabecera_Anexos_Datos();

                    foreach (VTA_PedidosCabecera_Anexos mdl_VTA_PedidosCabecera_Anexos in _mdl_VTA_PedidosCabecera_AGrabar.VTA_PedidosCabecera_Anexos)
                    {
                        //Añadir el idPedidoCabecera
                        mdl_VTA_PedidosCabecera_Anexos.idPedidoCabecera = mdl_INTERNO_ValorDevuelto_Modelo.Id;

                        //Insertar
                        obj_VTA_PedidosCabecera_Anexos_Datos.Insertar(mdl_VTA_PedidosCabecera_Anexos);
                    }
                }

                //RESUMEN
                if (_mdl_VTA_PedidosCabecera_AGrabar.VTA_PedidosCabecera_Resumen != null && _mdl_VTA_PedidosCabecera_AGrabar.VTA_PedidosCabecera_Resumen.Count > 0)
                {
                    VTA_PedidosCabecera_Resumen_Datos obj_VTA_PedidosCabecera_Resumen_Datos = new VTA_PedidosCabecera_Resumen_Datos();

                    foreach (VTA_PedidosCabecera_Resumen mdl_VTA_PedidosCabecera_Resumen in _mdl_VTA_PedidosCabecera_AGrabar.VTA_PedidosCabecera_Resumen)
                    {
                        //Añadir el idPedidoCabecera
                        mdl_VTA_PedidosCabecera_Resumen.idPedidoCabecera = mdl_INTERNO_ValorDevuelto_Modelo.Id;

                        //Insertar
                        obj_VTA_PedidosCabecera_Resumen_Datos.Insertar_Final(mdl_VTA_PedidosCabecera_Resumen);
                    }
                }

                //LINEAS
                if (_mdl_VTA_PedidosCabecera_AGrabar.VTA_PedidosLineas != null && _mdl_VTA_PedidosCabecera_AGrabar.VTA_PedidosLineas.Count > 0)
                {
                    VTA_PedidosLineas_Datos obj_VTA_PedidosLineas_Datos = new VTA_PedidosLineas_Datos();

                    foreach (VTA_PedidosLineas mdl_VTA_PedidosLineas in _mdl_VTA_PedidosCabecera_AGrabar.VTA_PedidosLineas)
                    {
                        //Añadir el idPedidoCabecera
                        mdl_VTA_PedidosLineas.idPedidoCabecera = mdl_INTERNO_ValorDevuelto_Modelo.Id;

                        //Insertar
                        obj_VTA_PedidosLineas_Datos.Insertar(mdl_VTA_PedidosLineas);
                    }
                }

                #endregion

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

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }

        public INTERNO_ValorDevuelto_Modelo Actualizar_Estado(long _lng_id, string _str_Estado)
        {
            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;

                string str_SQL_Update =
                    " UPDATE " + nameof(VTA_PedidosCabecera) +
                    "   set " + nameof(VTA_PedidosCabecera.estado) + "='" + _str_Estado + "' " +
                    " WHERE " + nameof(VTA_PedidosCabecera.id) + "=" + _lng_id;

                obj_Exferia_Entities.Database.ExecuteSqlCommand(str_SQL_Update);
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(VTA_PedidosCabecera_Datos) + "/" + nameof(Actualizar_Estado), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }
        public INTERNO_ValorDevuelto_Modelo Actualizar_Situacion(long _lng_id, int _int_Situacion)
        {
            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;

                string str_SQL_Update =
                    " UPDATE " + nameof(VTA_PedidosCabecera) +
                    "   set " + nameof(VTA_PedidosCabecera.situacion) + "=" + _int_Situacion + " " +
                    " WHERE " + nameof(VTA_PedidosCabecera.id) + "=" + _lng_id;

                obj_Exferia_Entities.Database.ExecuteSqlCommand(str_SQL_Update);
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(VTA_PedidosCabecera_Datos) + "/" + nameof(Actualizar_Situacion), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }
        public INTERNO_ValorDevuelto_Modelo Actualizar_Autorizado(long _lng_id, bool _bol_Autorizado)
        {
            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;

                string str_SQL_Update =
                    " UPDATE " + nameof(VTA_PedidosCabecera) +
                    "   set " + nameof(VTA_PedidosCabecera.autorizado) + "=" + (_bol_Autorizado ? 1 : 0) + " " +
                    " WHERE " + nameof(VTA_PedidosCabecera.id) + "=" + _lng_id;

                obj_Exferia_Entities.Database.ExecuteSqlCommand(str_SQL_Update);
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(VTA_PedidosCabecera_Datos) + "/" + nameof(Actualizar_Autorizado), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }
        public INTERNO_ValorDevuelto_Modelo Actualizar_Fecha(long _lng_id, DateTime _dtt_Fecha)
        {
            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;

                string str_SQL_Update =
                    " UPDATE " + nameof(VTA_PedidosCabecera) +
                    "   set " +
                            nameof(VTA_PedidosCabecera.fecha) + "='" + _dtt_Fecha.ToString("dd/MM/yyyy") + "' " +
                    " WHERE " + nameof(VTA_PedidosCabecera.id) + "=" + _lng_id;

                obj_Exferia_Entities.Database.ExecuteSqlCommand(str_SQL_Update);
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(VTA_PedidosCabecera_Datos) + "/" + nameof(Actualizar_Fecha), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }
        public INTERNO_ValorDevuelto_Modelo Actualizar_RelacionClienteProveedor(long _lng_id, long? _lng_idRelacionClienteProveedor)
        {
            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;

                string str_SQL_Update = "";

                if (_lng_idRelacionClienteProveedor!=null)
                {
                    str_SQL_Update =" UPDATE " + nameof(VTA_PedidosCabecera) +
                                       "   set " + nameof(VTA_PedidosCabecera.idRelacionClienteProveedor) + "=" + _lng_idRelacionClienteProveedor.Value + " " +
                                    " WHERE " + nameof(VTA_PedidosCabecera.id) + "=" + _lng_id;
                }
                else
                {
                    str_SQL_Update =" UPDATE " + nameof(VTA_PedidosCabecera) +
                                       "   set " + nameof(VTA_PedidosCabecera.idRelacionClienteProveedor) + "= null "  +
                                    " WHERE " + nameof(VTA_PedidosCabecera.id) + "=" + _lng_id;
                }
                

                obj_Exferia_Entities.Database.ExecuteSqlCommand(str_SQL_Update);
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(VTA_PedidosCabecera_Datos) + "/" + nameof(Actualizar_RelacionClienteProveedor), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }
        public INTERNO_ValorDevuelto_Modelo Actualizar_VariosCampos(long _lng_id, long _lng_idCliente, long _lng_idImpuestoCabecera,long? _lng_idMoneda, long? _lng_idVendedorPreventaHabitual, DateTime _dtt_Fecha, decimal _dcm_DescuentoProntoPago, decimal _dcm_DescuentoFinalFactura, decimal _dcm_DescuentoFinalAlbaran, bool _bol_Recargo)
        {
            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;

                string str_SQL_Update =
                    " UPDATE " + nameof(VTA_PedidosCabecera) +
                    "   set " + nameof(VTA_PedidosCabecera.descuentoProntoPago) + "=" + _dcm_DescuentoProntoPago.ToString().Replace(",", ".") + ", " +
                                nameof(VTA_PedidosCabecera.descuentoFinalFactura) + "=" + _dcm_DescuentoFinalFactura.ToString().Replace(",", ".") + ", " +
                                nameof(VTA_PedidosCabecera.descuentoFinalAlbaran) + "=" + _dcm_DescuentoFinalAlbaran.ToString().Replace(",", ".") + ", " +
                                nameof(VTA_PedidosCabecera.idCliente) + "=" + _lng_idCliente + ", " +
                                nameof(VTA_PedidosCabecera.idImpuestoCabecera) + "=" + _lng_idImpuestoCabecera + ", " +
                                nameof(VTA_PedidosCabecera.idMoneda) + "=" + (_lng_idMoneda!=null ? _lng_idMoneda.Value.ToString() : " NULL ") + ", " +
                                nameof(VTA_PedidosCabecera.idVendedor_PreventaHabitual) + "=" + (_lng_idVendedorPreventaHabitual != null ? _lng_idVendedorPreventaHabitual.Value.ToString() : " NULL ") + ", " +
                                nameof(VTA_PedidosCabecera.recargo) + "=" + (_bol_Recargo ? "1" : "0") + ", " +
                                nameof(VTA_PedidosCabecera.fecha) + "='" + _dtt_Fecha + "' " +
                    " WHERE " + nameof(VTA_PedidosCabecera.id) + "=" + _lng_id;

                obj_Exferia_Entities.Database.ExecuteSqlCommand(str_SQL_Update);
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(VTA_PedidosCabecera_Datos) + "/" + nameof(Actualizar_VariosCampos), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }
        public INTERNO_ValorDevuelto_Modelo Actualizar_Totales(long _lng_id,
                                                                  decimal _dcm_total_bruto,
                                                                  decimal _dcm_total_descuentoProntoPago,
                                                                  decimal _dcm_total_descuentoFinalFactura,
                                                                  decimal _dcm_total_baseImponible,
                                                                  decimal _dcm_total_impuesto,
                                                                  decimal _dcm_total_recargo,
                                                                  decimal _dcm_total_descuentoFinalAlbaran,
                                                                  decimal _dcm_total)
        {
            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;


                string str_SQL_Update =
                    " UPDATE " + nameof(VTA_PedidosCabecera) +
                    "   set " + nameof(VTA_PedidosCabecera.total_bruto) + "=" + _dcm_total_bruto.ToString().Replace(",", ".") + ", " +
                                nameof(VTA_PedidosCabecera.total_descuentoProntoPago) + "=" + _dcm_total_descuentoProntoPago.ToString().Replace(",", ".") + ", " +
                                nameof(VTA_PedidosCabecera.total_descuentoFinalFactura) + "=" + _dcm_total_descuentoFinalFactura.ToString().Replace(",", ".") + ", " +
                                nameof(VTA_PedidosCabecera.total_baseImponible) + "=" + _dcm_total_baseImponible.ToString().Replace(",", ".") + ", " +
                                nameof(VTA_PedidosCabecera.total_impuesto) + "=" + _dcm_total_impuesto.ToString().Replace(",", ".") + ", " +
                                nameof(VTA_PedidosCabecera.total_recargo) + "=" + _dcm_total_recargo.ToString().Replace(",", ".") + ", " +
                                nameof(VTA_PedidosCabecera.total_descuentoFinalAlbaran) + "=" + _dcm_total_descuentoFinalAlbaran.ToString().Replace(",", ".") + ", " +
                                nameof(VTA_PedidosCabecera.total) + "=" + _dcm_total.ToString().Replace(",", ".") +
                    " WHERE " + nameof(VTA_PedidosCabecera.id) + "=" + _lng_id;

                obj_Exferia_Entities.Database.ExecuteSqlCommand(str_SQL_Update);
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(VTA_PedidosCabecera_Datos) + "/" + nameof(Actualizar_Totales), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }
        #endregion

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

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

            bool bol_ActualizarFechaBorrado = false;//Este campo se utiliza por si no se puede borrar, que actualice la fecha de borrado

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

                // Ver si existe ######################################################################
                VTA_PedidosCabecera mdl_VTA_PedidosCabecera_Final = Obtener_Modelo_Por_Id(_lng_id,false);
                //######################################################################################

                //Actualiazr primero VTA_PresupuestosCabecera para quitar la relacion, y cambiar la situacion a pendiente si estuviera relacionado
                VTA_PresupuestosCabecera_Datos obj_VTA_PresupuestosCabecera_Datos = new VTA_PresupuestosCabecera_Datos();
                obj_VTA_PresupuestosCabecera_Datos.QuitarRelacion_PedidoCabecera(_lng_id, obj_Exferia_Entities);


                if (mdl_VTA_PedidosCabecera_Final != null)
                {
                    //Se intenta borrar, si diera un error porque esta relacaionado se graba la fecha de baja
                    try
                    {

                        #region Delete
                        string str_SQL_Delete = " DELETE FROM  " + nameof(VTA_PedidosCabecera) +
                                                " WHERE " +
                                                    nameof(VTA_PedidosCabecera.id) + "=@id";
                        //Parametros
                        object[] arr_Parametros_Delete = new object[]
                        {
                            new SqlParameter("@id", _lng_id)
                        };
                        #endregion

                        //Delete
                        obj_Exferia_Entities.Database.ExecuteSqlCommand(str_SQL_Delete, arr_Parametros_Delete);

                        // Grabar un registro de trazabilidad con los datos de la transaccion realizada.
                        Datos_Generales.USR_Trazabilidad_Grabar(typeof(VTA_PedidosCabecera), null, mdl_VTA_PedidosCabecera_Final, G_ENUM_TIPOACCION.INT_ELIMINAR, obj_Exferia_Entities);
                    }
                    catch (Exception ex)
                    {
                        var sqlException = ex.GetBaseException() as SqlException;
                        if (sqlException != null)
                        {
                            if (sqlException.Errors.Count > 0)
                            {
                                switch (sqlException.Errors[0].Number)
                                {
                                    case Control_Errores.G_INT_ERRORCONTROLADO_BORRAR_CONFLICTO_CLAVEFORANEA: // Foreign Key violation
                                        bol_ActualizarFechaBorrado = true;
                                        break;
                                    default:
                                        throw;
                                }
                            }
                        }
                        else
                        {
                            throw;
                        }
                    }
                }

                // Actualizar la fecha de baja , al no poder borrarlo por tener relaciones
                if (bol_ActualizarFechaBorrado)
                {
                    // Se graba la fecha de baja
                    #region Update
                    string str_SQL_Update = " UPDATE " + nameof(VTA_PedidosCabecera) +
                                                " SET " +
                                                nameof(VTA_PedidosCabecera.fechaBorrado) + "=@fechaBorrado " +
                                            " WHERE " +
                                                nameof(VTA_PedidosCabecera.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(VTA_PedidosCabecera), null, mdl_VTA_PedidosCabecera_Final, G_ENUM_TIPOACCION.INT_ELIMINAR, obj_Exferia_Entities);
                }

                // Devolver también el Objeto
                mdl_INTERNO_ValorDevuelto_Modelo.Id = _lng_id;

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


            return mdl_INTERNO_ValorDevuelto_Modelo;
        }
        public override INTERNO_ValorDevuelto_Modelo Borrar(long _lng_id, long _lng_idAuxiliar)
        {
            return null;
        }
        public override INTERNO_ValorDevuelto_Modelo Borrar(object _mdl_obj)
        {
            return null;
        }
        #endregion
    }
}
