using Exferia_Aplicacion.Herencia.Capas;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Exferia_Aplicacion.General;
using Exferia_EntityFramework;
using System.Runtime.CompilerServices;
using Exferia_General;
using Exferia_Mythos._0_Modelos;
using System.Data.SqlClient;
using System.Threading;
using static Exferia_Aplicacion.General.Enumerados;
using System.Reflection;
using Exferia_Aplicacion.Modelos_Generales;
using Exferia_Mythos.General;

namespace Exferia_Mythos._1_Datos
{
    public class MYT_Partes_Datos : ABS_Datos
    {

        #region Listado
        public List<INTERNO_MYT_Partes_Listado_Modelo> g_lst_INTERNO_MYT_Partes_Listado_Modelo = null;

        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_MYT = 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(MYT_Partes).Name), _lst_CamposConRelacionABuscar, -1, null, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                //.....................................................................

                if ((g_lst_INTERNO_MYT_Partes_Listado_Modelo != null) && (g_lst_INTERNO_MYT_Partes_Listado_Modelo.Count() > 0))
                {
                    lst_MYT = g_lst_INTERNO_MYT_Partes_Listado_Modelo.Cast<dynamic>().ToList();
                }
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MYT_Partes_Datos) + "/" + nameof(Obtener_Listado), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
            return lst_MYT;
        }

        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_MYT = 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(MYT_Partes).Name), _lst_CamposConRelacionABuscar, _lng_id, _lst_ids, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                //......................................................................

                if ((g_lst_INTERNO_MYT_Partes_Listado_Modelo != null) && (g_lst_INTERNO_MYT_Partes_Listado_Modelo.Count() > 0))
                {
                    dnm_MYT = g_lst_INTERNO_MYT_Partes_Listado_Modelo.Cast<dynamic>().ToList();
                }
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MYT_Partes_Datos) + "/" + nameof(Obtener_RegistroListado), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
            return dnm_MYT;
        }

        protected override void ConsultaRellenar_Listado(Exferia_Entities _obj_Exferia_Entities, long _lng_idEmpresaSeleccionada, long _lng_idEjercicioActual, List<long> _lst_idEmpresasRelacionadas, List<string> _lst_CamposConRelacionABuscar, long _lng_id, List<long> _lst_ids, List<INTERNO_Filtro_OpcionPadre_Modelo> _lst_INTERNO_Filtro_OpcionPadre_Modelo, List<INTERNO_Filtro_Modelo> _lst_INTERNO_Filtro_Modelo)
        {
            try
            {
                List<SqlParameter> lst_Parametros = new List<SqlParameter>();

                string str_Filtros_Empresas = Funciones.Formar_ContenidoIN_ParaConsultaWhere(_lst_idEmpresasRelacionadas);

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

                string str_SQL =
                    " SELECT " +
                         nameof(INTERNO_MYT_Partes_Listado_Modelo.id) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.id) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.codigo) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.codigo) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.fechaHoraRecepcion) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaHoraRecepcion) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.fechaHoraCita) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaHoraCita) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.textoCita) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.textoCita) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.guid) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.guid) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.fechaBorrado) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaBorrado) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.recargo) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.recargo) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_bruto) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_bruto) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_baseImponible) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_baseImponible) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_impuesto) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_impuesto) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_recargo) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_recargo) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.notaImportante) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.notaImportante) + " , " +
                         nameof(INTERNO_MYT_Partes_Listado_Modelo.descuentoProntoPago) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.descuentoProntoPago) + " , " +
                         nameof(INTERNO_MYT_Partes_Listado_Modelo.descuentoFinalFactura) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.descuentoFinalFactura) + " , " +
                         nameof(INTERNO_MYT_Partes_Listado_Modelo.descuentoFinalAlbaran) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.descuentoFinalAlbaran) + " , " +
                         nameof(INTERNO_MYT_Partes_Listado_Modelo.aplicarRetencion) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.aplicarRetencion) + " , " +
                         nameof(INTERNO_MYT_Partes_Listado_Modelo.retencion_Porcentaje) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.retencion_Porcentaje) + " , " +
                         nameof(INTERNO_MYT_Partes_Listado_Modelo.retencion_Valor) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.retencion_Valor) + " , " +
                         nameof(INTERNO_MYT_Partes_Listado_Modelo.retencion_Base) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.retencion_Base) + " , " +
                         nameof(INTERNO_MYT_Partes_Listado_Modelo.total_descuentoProntoPago) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_descuentoProntoPago) + " , " +
                         nameof(INTERNO_MYT_Partes_Listado_Modelo.total_descuentoFinalFactura) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_descuentoFinalFactura) + " , " +
                         nameof(INTERNO_MYT_Partes_Listado_Modelo.total_descuentoFinalAlbaran) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_descuentoFinalAlbaran) + " , " +
                         nameof(INTERNO_MYT_Partes_Listado_Modelo.total_retencion) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_retencion) + " , " +
                         nameof(INTERNO_MYT_Partes_Listado_Modelo.total_Final) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_Final) + " , " +
                        //ids
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idInstalacionCabecera) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionCabecera) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idInstalacionLinea) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionLinea) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idPrioridad) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idPrioridad) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idParteTipo) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idParteTipo) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idParteEstado) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idParteEstado) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idDepartamento) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idDepartamento) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idPrevision) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idPrevision) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idInspeccion) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInspeccion) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idEstructuraPartePeticionDatoCabecera) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEstructuraPartePeticionDatoCabecera) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idEmpresa) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEmpresa) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idTecnico) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idTecnico) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idMoneda) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idMoneda) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idImpuestoCabecera) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idImpuestoCabecera) + "," +
                         //InstalacionCabecera
                         (
                             (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionCabecera)))
                             ?
                                 (
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionCabecera_Id) + " = " + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.id) + "," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionCabecera_Codigo) + " = " + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.codigo) + "," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionCabecera_Descripcion) + " =" + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.descripcion) + "," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionCabecera_FechaBorrado) + " =" + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.fechaBorrado) + ","
                                 )
                             :
                                 (
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionCabecera_Id) + " = NULL, " +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionCabecera_Codigo) + " = ''," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionCabecera_Descripcion) + " = ''," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionCabecera_FechaBorrado) + " = NULL, "
                                 )
                         ) +
                         //Cliente
                         (
                             (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MYT_Partes_Listado_Modelo.Cliente)))
                             ?
                                 (
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Cliente_Id) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id) + "," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Cliente_Codigo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.codigo) + "," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Cliente_Descripcion) + " =" + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.razonSocial) + "," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Cliente_FechaBorrado) + " =" + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaBorrado) + ","
                                 )
                             :
                                 (
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Cliente_Id) + " = NULL, " +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Cliente_Codigo) + " = ''," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Cliente_Descripcion) + " = ''," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Cliente_FechaBorrado) + " = NULL, "
                                 )
                         ) +
                         //InstalacionLinea
                         (
                             (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionLinea)))
                             ?
                                 (
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionLinea_Codigo) + " = " + nameof(MYT_InstalacionesLineas) + "." + nameof(MYT_InstalacionesLineas.codigo) + "," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionLinea_Descripcion) + " =" + nameof(MYT_InstalacionesLineas) + "." + nameof(MYT_InstalacionesLineas.descripcion) + "," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionLinea_FechaBorrado) + " =" + nameof(MYT_InstalacionesLineas) + "." + nameof(MYT_InstalacionesLineas.fechaBorrado) + ","
                                 )
                             :
                                 (
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionLinea_Codigo) + " = ''," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionLinea_Descripcion) + " = ''," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionLinea_FechaBorrado) + " = NULL, "
                                 )
                         ) +
                         //Prioridad
                         (
                             (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MYT_Partes_Listado_Modelo.Prioridad)))
                             ?
                                 (
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Prioridad_Codigo) + " = " + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.codigo) + "," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Prioridad_Descripcion) + " =" + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.descripcion) + "," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Prioridad_FechaBorrado) + " =" + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.fechaBorrado) + ","
                                 )
                             :
                                 (
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Prioridad_Codigo) + " = ''," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Prioridad_Descripcion) + " = ''," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Prioridad_FechaBorrado) + " = NULL, "
                                 )
                         ) +
                         //ParteTipo
                         (
                             (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteTipo)))
                             ?
                                 (
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteTipo_Codigo) + " = " + nameof(MYT_PartesTipos) + "." + nameof(MYT_PartesTipos.codigo) + "," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteTipo_Descripcion) + " =" + nameof(MYT_PartesTipos) + "." + nameof(MYT_PartesTipos.descripcion) + "," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteTipo_FechaBorrado) + " =" + nameof(MYT_PartesTipos) + "." + nameof(MYT_PartesTipos.fechaBorrado) + ","
                                 )
                             :
                                 (
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteTipo_Codigo) + " = ''," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteTipo_Descripcion) + " = ''," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteTipo_FechaBorrado) + " = NULL, "
                                 )
                         ) +
                         //ParteEstado
                         (
                             (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteEstado)))
                             ?
                                 (
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteEstado_Codigo) + " = " + nameof(MYT_PartesEstados) + "." + nameof(MYT_PartesEstados.codigo) + "," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteEstado_EstadoInterno) + " = " + nameof(MYT_PartesEstados) + "." + nameof(MYT_PartesEstados.estadoInterno) + "," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteEstado_Descripcion) + " =" + nameof(MYT_PartesEstados) + "." + nameof(MYT_PartesEstados.descripcion) + "," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteEstado_FechaBorrado) + " =" + nameof(MYT_PartesEstados) + "." + nameof(MYT_PartesEstados.fechaBorrado) + ","
                                 )
                             :
                                 (
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteEstado_Codigo) + " = ''," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteEstado_EstadoInterno) + " = ''," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteEstado_Descripcion) + " = ''," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteEstado_FechaBorrado) + " = NULL, "
                                 )
                         ) +
                         //Departamento
                         (
                             (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MYT_Partes_Listado_Modelo.Departamento)))
                             ?
                                 (
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Departamento_Codigo) + " = " + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.codigo) + "," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Departamento_Descripcion) + " =" + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.descripcion) + "," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Departamento_FechaBorrado) + " =" + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.fechaBorrado) + ","
                                 )
                             :
                                 (
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Departamento_Codigo) + " = ''," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Departamento_Descripcion) + " = ''," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Departamento_FechaBorrado) + " = NULL, "
                                 )
                         ) +
                         //EstructuraPartePeticionDato
                         (
                             (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MYT_Partes_Listado_Modelo.EstructuraPartePeticionDato)))
                             ?
                                 (
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.EstructuraPartePeticionDato_Codigo) + " = " + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera) + "." + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera.codigo) + "," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.EstructuraPartePeticionDato_Descripcion) + " =" + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera) + "." + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera.descripcion) + "," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.EstructuraPartePeticionDato_FechaBorrado) + " =" + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera) + "." + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera.fechaBorrado) + ","
                                 )
                             :
                                 (
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.EstructuraPartePeticionDato_Codigo) + " = ''," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.EstructuraPartePeticionDato_Descripcion) + " = ''," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.EstructuraPartePeticionDato_FechaBorrado) + " = NULL, "
                                 )
                         ) +
                         //Empresa
                         (
                             (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MYT_Partes_Listado_Modelo.Empresa)))
                             ?
                                 (
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Empresa_Codigo) + " = " + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.codigo) + "," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Empresa_Descripcion) + " =" + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.descripcion) + "," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Empresa_FechaBorrado) + " =" + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.fechaBorrado) + ","
                                 )
                             :
                                 (
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Empresa_Codigo) + " = ''," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Empresa_Descripcion) + " = ''," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Empresa_FechaBorrado) + " = NULL, "
                                 )
                         ) +
                         //Tecnico
                         (
                             (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MYT_Partes_Listado_Modelo.Tecnico)))
                             ?
                                 (
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Tecnico_Codigo) + " = " + nameof(MYT_Tecnicos) + "." + nameof(MYT_Tecnicos.codigo) + "," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Tecnico_Descripcion) + " =" + nameof(MYT_Tecnicos) + "." + nameof(MYT_Tecnicos.nombre) + "," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Tecnico_FechaBorrado) + " =" + nameof(MYT_Tecnicos) + "." + nameof(MYT_Tecnicos.fechaBorrado)
                                 )
                             :
                                 (
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Tecnico_Codigo) + " = ''," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Tecnico_Descripcion) + " = ''," +
                                     nameof(INTERNO_MYT_Partes_Listado_Modelo.Tecnico_FechaBorrado) + " = NULL "
                                 )
                         ) +
                " FROM " + nameof(MYT_Partes) +
                         //InstalacionCabecera.Cliente o  InstalacionLinea
                         (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionCabecera)) ||
                              _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MYT_Partes_Listado_Modelo.Cliente)) ||
                               _lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionLinea))
                              )
                                 ?
                                     (
                                      " LEFT JOIN " + nameof(MYT_InstalacionesLineas) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionLinea) + " = " + nameof(MYT_InstalacionesLineas) + "." + nameof(MYT_InstalacionesLineas.id) +
                                      " LEFT JOIN " + nameof(MYT_InstalacionesCabecera) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionCabecera) + " = " + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.id) +
                                      " LEFT JOIN " + nameof(MAE_Clientes) + " ON " + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.idCliente) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id)
                                     )
                                 : ("")
                         ) +
                         //Prioridad
                         (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MYT_Partes_Listado_Modelo.Prioridad)))
                                 ?
                                     (
                                      " LEFT JOIN " + nameof(MAE_Prioridades) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idPrioridad) + " = " + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.id)
                                     )
                                 : ("")
                         ) +
                         //ParteTipo
                         (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteTipo)))
                                 ?
                                     (
                                      " LEFT JOIN " + nameof(MYT_PartesTipos) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idParteTipo) + " = " + nameof(MYT_PartesTipos) + "." + nameof(MYT_PartesTipos.id)
                                     )
                                 : ("")
                         ) +
                         //ParteEstado
                         (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteEstado)))
                                 ?
                                     (
                                      " LEFT JOIN " + nameof(MYT_PartesEstados) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idParteEstado) + " = " + nameof(MYT_PartesEstados) + "." + nameof(MYT_PartesEstados.id)
                                     )
                                 : ("")
                         ) +
                         //Departamento
                         (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MYT_Partes_Listado_Modelo.Departamento)))
                                 ?
                                     (
                                      " LEFT JOIN " + nameof(CTA_Departamentos) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idDepartamento) + " = " + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.id)
                                     )
                                 : ("")
                         ) +
                         //EstructuraPartePeticionDato
                         (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MYT_Partes_Listado_Modelo.EstructuraPartePeticionDato)))
                                 ?
                                     (
                                      " LEFT JOIN " + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEstructuraPartePeticionDatoCabecera) + " = " + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera) + "." + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera.id)
                                     )
                                 : ("")
                         ) +
                         //Empresa
                         (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MYT_Partes_Listado_Modelo.Empresa)))
                                 ?
                                     (
                                      " LEFT JOIN " + nameof(GEN_Empresas) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEmpresa) + " = " + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.id)
                                     )
                                 : ("")
                         ) +
                         //Tecnico
                         (
                              (_lst_CamposConRelacionABuscar.Contains(nameof(INTERNO_MYT_Partes_Listado_Modelo.Tecnico)))
                                 ?
                                     (
                                      " LEFT JOIN " + nameof(MYT_Tecnicos) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idTecnico) + " = " + nameof(MYT_Tecnicos) + "." + nameof(MYT_Tecnicos.id)
                                     )
                                 : ("")
                         ) +
                " WHERE " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaBorrado) + " IS null AND " +
                        " ( " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEmpresa) + "=@idEmpresa " +
                                (
                                    (_lst_idEmpresasRelacionadas != null && _lst_idEmpresasRelacionadas.Count > 0)
                                        ? (" OR " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEmpresa) + " in (" + str_Filtros_Empresas + ") ")
                                        : " "
                                ) +
                            " ) AND " +
                        (_lng_id > -1 ? (nameof(MYT_Partes) + "." + nameof(MYT_Partes.id) + "=@id") : "1 = 1");


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

                object[] arr_Parametros = lst_Parametros.ToArray();

                //Rellenar el Modelo
                g_lst_INTERNO_MYT_Partes_Listado_Modelo = _obj_Exferia_Entities.Database.SqlQuery<INTERNO_MYT_Partes_Listado_Modelo>(str_SQL, arr_Parametros).ToList();
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MYT_Partes_Datos) + "/" + nameof(ConsultaRellenar_Listado), true);
            }
        }
        #endregion

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

        #region F3
        private INTERNO_MYT_Partes_Listado_Modelo g_mdl_INTERNO_MYT_Partes_Listado_Modelo_F3 = null;

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

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

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

                if (g_mdl_INTERNO_MYT_Partes_Listado_Modelo_F3 != null)
                {
                    dnm_MYT = g_mdl_INTERNO_MYT_Partes_Listado_Modelo_F3;
                }
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MYT_Partes_Datos) + "/" + nameof(Obtener_F3), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
            return dnm_MYT;
        }

        public override dynamic Obtener_F3_PorId(long _lng_id, long _lng_idEmpresaSeleccionada, long _lng_idEjercicioActual, List<INTERNO_Filtro_OpcionPadre_Modelo> _lst_INTERNO_Filtro_OpcionPadre_Modelo, List<INTERNO_Filtro_Modelo> _lst_INTERNO_Filtro_Modelo)
        {
            Exferia_Entities obj_Exferia_Entities = null;
            dynamic dnm_MYT = null;

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

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

                if (g_mdl_INTERNO_MYT_Partes_Listado_Modelo_F3 != null)
                {
                    dnm_MYT = g_mdl_INTERNO_MYT_Partes_Listado_Modelo_F3;
                }
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MYT_Partes_Datos) + "/" + nameof(Obtener_F3_PorId), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
            return dnm_MYT;
        }

        protected override void ConsultaRellenar_F3(Exferia_Entities _obj_Exferia_Entities, long _lng_idEmpresaSeleccionada, long _lng_idEjercicioActual, List<long> _lst_idEmpresasRelacionas, string _str_CampoBusqueda, string _str_Filtro, long _lng_id, List<INTERNO_Filtro_OpcionPadre_Modelo> _lst_INTERNO_Filtro_OpcionPadre_Modelo, List<INTERNO_Filtro_Modelo> _lst_INTERNO_Filtro_Modelo)
        {
            try
            {
                List<SqlParameter> lst_Parametros = new List<SqlParameter>();

                string str_Filtros_Empresas = Funciones.Formar_ContenidoIN_ParaConsultaWhere(_lst_idEmpresasRelacionas);

                string str_SQL =
                     " SELECT distinct " +
                         nameof(INTERNO_MYT_Partes_Listado_Modelo.id) + " = " + nameof(MYT_Partes.id) + "," +
                         nameof(INTERNO_MYT_Partes_Listado_Modelo.codigo) + " = " + nameof(MYT_Partes.codigo) + 
                 " FROM " + nameof(MYT_Partes) +
                 " WHERE " + nameof(MYT_Partes.fechaBorrado) + " IS null AND " +
                            " ( " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEmpresa) + "=@idEmpresa " +
                                (
                                    (_lst_idEmpresasRelacionas != null && _lst_idEmpresasRelacionas.Count > 0)
                                        ? (" OR " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEmpresa) + " in (" + str_Filtros_Empresas + ") ")
                                        : " "
                                ) +
                            " ) AND " +
                            (
                            (_lng_id > -1)
                                ? (nameof(MYT_Partes.id) + " = " + _lng_id)
                                : (
                                    (nameof(MYT_Partes.codigo) + "=@Filtro")
                                )
                            );

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

                object[] arr_Parametros = lst_Parametros.ToArray();

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

        #region Obtener
        #region Obtener Simple

        private dynamic g_dnm_Modelo_Obtener = null;

        private static int g_int_TotalHilos_Obtener = 23;
        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_MYT_Partes_Modelo.id) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.id) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.codigo) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.codigo) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idInstalacionCabecera) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionCabecera) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idInstalacionLinea) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionLinea) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idPrioridad) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idPrioridad) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idParteTipo) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idParteTipo) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idParteEstado) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idParteEstado) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idDepartamento) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idDepartamento) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idPrevision) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idPrevision) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idInspeccion) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInspeccion) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idEstructuraPartePeticionDatoCabecera) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEstructuraPartePeticionDatoCabecera) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.fechaHoraRecepcion) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaHoraRecepcion) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.fechaHoraCita) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaHoraCita) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.textoCita) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.textoCita) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.incidencias) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.incidencias) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.observaciones) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.observaciones) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.guid) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.guid) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.fechaBorrado) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaBorrado) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idEmpresa) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEmpresa) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idTecnico) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idTecnico) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idMoneda) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idMoneda) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idImpuestoCabecera) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idImpuestoCabecera) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.recargo) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.recargo) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_bruto) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_bruto) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_baseImponible) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_baseImponible) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_impuesto) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_impuesto) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_recargo) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_recargo) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.idAlbaranCabecera) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idAlbaranCabecera) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.idFacturaCabecera) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idFacturaCabecera) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.notaImportante) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.notaImportante) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.descuentoProntoPago) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.descuentoProntoPago) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.descuentoFinalFactura) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.descuentoFinalFactura) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.descuentoFinalAlbaran) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.descuentoFinalAlbaran) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.aplicarRetencion) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.aplicarRetencion) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.retencion_Porcentaje) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.retencion_Porcentaje) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.retencion_Valor) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.retencion_Valor) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.retencion_Base) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.retencion_Base) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_descuentoProntoPago) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_descuentoProntoPago) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_descuentoFinalFactura) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_descuentoFinalFactura) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_descuentoFinalAlbaran) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_descuentoFinalAlbaran) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_retencion) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_retencion) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_Final) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_Final) + 
               " FROM " + nameof(MYT_Partes) +
               " WHERE " + nameof(MYT_Partes.fechaBorrado) + " IS NULL AND " +
                           nameof(MYT_Partes.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_MYT_Partes_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;
                    }

                    //MYT_InstalacionesCabecera ##########################################################################################
                    ThreadStart obj_ThreadStart_INSTALACIONCABECERA = new ThreadStart(Obtener_InstalacionCabecera_Modelo_Obtener);
                    Thread obj_Thread_INSTALACIONCABECERA = new Thread(obj_ThreadStart_INSTALACIONCABECERA);
                    obj_Thread_INSTALACIONCABECERA.Start();

                    //MYT_InstalacionesLineas ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idInstalacionLinea != null)
                    {
                        ThreadStart obj_ThreadStart_INSTALACIONLINEA = new ThreadStart(Obtener_InstalacionLinea_Modelo_Obtener);
                        Thread obj_Thread_INSTALACIONLINEA = new Thread(obj_ThreadStart_INSTALACIONLINEA);
                        obj_Thread_INSTALACIONLINEA.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[1] = true;
                    }

                    //MAE_Prioridades ##########################################################################################
                    ThreadStart obj_ThreadStart_PRIORIDAD = new ThreadStart(Obtener_Prioridad_Modelo_Obtener);
                    Thread obj_Thread_PRIORIDAD = new Thread(obj_ThreadStart_PRIORIDAD);
                    obj_Thread_PRIORIDAD.Start();

                    //MYT_PartesTipos ##########################################################################################
                    ThreadStart obj_ThreadStart_PARTETIPO = new ThreadStart(Obtener_ParteTipo_Modelo_Obtener);
                    Thread obj_Thread_PARTETIPO = new Thread(obj_ThreadStart_PARTETIPO);
                    obj_Thread_PARTETIPO.Start();

                    //MYT_PartesEstados ##########################################################################################
                    ThreadStart obj_ThreadStart_PARTEESTADO = new ThreadStart(Obtener_ParteEstado_Modelo_Obtener);
                    Thread obj_Thread_PARTEESTADO = new Thread(obj_ThreadStart_PARTEESTADO);
                    obj_Thread_PARTEESTADO.Start();

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

                    //MYT_Previsiones ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idPrevision != null)
                    {
                        ThreadStart obj_ThreadStart_PREVISIONES = new ThreadStart(Obtener_Prevision_Modelo_Obtener);
                        Thread obj_Thread_PREVISIONES = new Thread(obj_ThreadStart_PREVISIONES);
                        obj_Thread_PREVISIONES.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[6] = true;
                    }

                    //MYT_Inspecciones ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idInspeccion != null)
                    {
                        ThreadStart obj_ThreadStart_INSPECCION = new ThreadStart(Obtener_Inspeccion_Modelo_Obtener);
                        Thread obj_Thread_INSPECCION = new Thread(obj_ThreadStart_INSPECCION);
                        obj_Thread_INSPECCION.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[7] = true;
                    }

                    //MYT_EstructurasPartesPeticionDatos_Cabecera ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idEstructuraPartePeticionDatoCabecera != null)
                    {
                        ThreadStart obj_ThreadStart_ESTRUCTURAPETICIONDATOSCABECERA = new ThreadStart(Obtener_EstructuraPartePeticionDatoCabecera_Modelo_Obtener);
                        Thread obj_Thread_ESTRUCTURAPETICIONDATOSCABECERA = new Thread(obj_ThreadStart_ESTRUCTURAPETICIONDATOSCABECERA);
                        obj_Thread_ESTRUCTURAPETICIONDATOSCABECERA.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[8] = true;
                    }

                    //MYT_Tecnicos ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idTecnico != null)
                    {
                        ThreadStart obj_ThreadStart_TECNICO = new ThreadStart(Obtener_Tecnico_Modelo_Obtener);
                        Thread obj_Thread_TECNICO = new Thread(obj_ThreadStart_TECNICO);
                        obj_Thread_TECNICO.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[9] = true;
                    }

                    //MYT_Partes_Protocolos ##########################################################################################
                    ThreadStart obj_ThreadStart_PARTEPROTOCOLOS = new ThreadStart(Obtener_PartesProtocolos_Modelo_Obtener);
                    Thread obj_Thread_PARTEPROTOCOLOS = new Thread(obj_ThreadStart_PARTEPROTOCOLOS);
                    obj_Thread_PARTEPROTOCOLOS.Start();

                    //MYT_Partes_PeticionDatos ##########################################################################################
                    ThreadStart obj_ThreadStart_PETICIONDATOS = new ThreadStart(Obtener_PeticionDatos_Modelo_Obtener);
                    Thread obj_Thread_PETICIONDATOS = new Thread(obj_ThreadStart_PETICIONDATOS);
                    obj_Thread_PETICIONDATOS.Start();

                    //MYT_Partes_ProtocolosRellenos ##########################################################################################
                    ThreadStart obj_ThreadStart_PARTESPROTOCOLOSRELLENOS = new ThreadStart(Obtener_PartesProtocolosRellenos_Modelo_Obtener);
                    Thread obj_Thread_PARTESPROTOCOLOSRELLENOS = new Thread(obj_ThreadStart_PARTESPROTOCOLOSRELLENOS);
                    obj_Thread_PARTESPROTOCOLOSRELLENOS.Start();

                    //Listado_ProtocolosRellenos ##########################################################################################
                    ThreadStart obj_ThreadStart_LISTADOPARTESPROTOCOLOSRELLENOS = new ThreadStart(Obtener_ListadoPartesProtocolosRellenos_Modelo_Obtener);
                    Thread obj_Thread_LISTADOPARTESPROTOCOLOSRELLENOS = new Thread(obj_ThreadStart_LISTADOPARTESPROTOCOLOSRELLENOS);
                    obj_Thread_LISTADOPARTESPROTOCOLOSRELLENOS.Start();

                    //Listado_TrabajosRealizados ##########################################################################################
                    ThreadStart obj_ThreadStart_LISTADOTRABAJOSREALIZADOS = new ThreadStart(Obtener_ListadoTrabajosRealizados_Modelo_Obtener);
                    Thread obj_Thread_LISTADOTRABAJOSREALIZADOS = new Thread(obj_ThreadStart_LISTADOTRABAJOSREALIZADOS);
                    obj_Thread_LISTADOTRABAJOSREALIZADOS.Start();

                    //Listado_Notas ##########################################################################################
                    ThreadStart obj_ThreadStart_LISTADONOTAS = new ThreadStart(Obtener_ListadoNotas_Modelo_Obtener);
                    Thread obj_Thread_LISTADONOTAS = new Thread(obj_ThreadStart_LISTADONOTAS);
                    obj_Thread_LISTADONOTAS.Start();

                    //Listado_Fotos ##########################################################################################
                    ThreadStart obj_ThreadStart_LISTADOFOTOS = new ThreadStart(Obtener_ListadoFotos_Modelo_Obtener);
                    Thread obj_Thread_LISTADOFOTOS = new Thread(obj_ThreadStart_LISTADOFOTOS);
                    obj_Thread_LISTADOFOTOS.Start();

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

                    //GEN_ImpuestosCabecera ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idImpuestoCabecera != null)
                    {
                        ThreadStart obj_ThreadStart_IMPUESTOCABECERA = new ThreadStart(Obtener_ImpuestoCabecera_Modelo_Obtener);
                        Thread obj_Thread_IMPUESTOCABECERA = new Thread(obj_ThreadStart_IMPUESTOCABECERA);
                        obj_Thread_IMPUESTOCABECERA.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[18] = true;
                    }

                    //MYT_PartesLineas ##########################################################################################
                    ThreadStart obj_ThreadStart_PARTELINEAS = new ThreadStart(Obtener_ParteLineas_Modelo_OBTENER);
                    Thread obj_Thread_PARTELINEAS = new Thread(obj_ThreadStart_PARTELINEAS);
                    obj_Thread_PARTELINEAS.Start();

                    // MYT_PartesLineas_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_AlbaranesCabecera ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idAlbaranCabecera != null)
                    {
                        ThreadStart obj_ThreadStart_ALBARANCABECERA = new ThreadStart(Obtener_AlbaranCabecera_Modelo_Obtener);
                        Thread obj_Thread_ALBARANCABECERA = new Thread(obj_ThreadStart_ALBARANCABECERA);
                        obj_Thread_ALBARANCABECERA.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[21] = true;
                    }

                    //VTA_FacturasCabecera ##########################################################################################
                    if (g_dnm_Modelo_Obtener.idFacturaCabecera != null)
                    {
                        ThreadStart obj_ThreadStart_FACTURACABECERA = new ThreadStart(Obtener_FacturaCabecera_Modelo_Obtener);
                        Thread obj_Thread_FACTURACABECERA = new Thread(obj_ThreadStart_FACTURACABECERA);
                        obj_Thread_FACTURACABECERA.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener[22] = 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_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(MYT_Partes_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_InstalacionCabecera_Modelo_Obtener()
        {
            try
            {
                MYT_InstalacionesCabecera_Datos obj_MYT_InstalacionesCabecera_Datos = new MYT_InstalacionesCabecera_Datos();
                g_dnm_Modelo_Obtener.MYT_InstalacionesCabecera = obj_MYT_InstalacionesCabecera_Datos.Obtener_Modelo_Por_Id(g_dnm_Modelo_Obtener.idInstalacionCabecera, true,false);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[0] = true;
            }
        }
        private void Obtener_InstalacionLinea_Modelo_Obtener()
        {
            try
            {
                MYT_InstalacionesLineas_Datos obj_MYT_InstalacionesLineas_Datos = new MYT_InstalacionesLineas_Datos();
                g_dnm_Modelo_Obtener.MYT_InstalacionesLineas = obj_MYT_InstalacionesLineas_Datos.Obtener_Modelo_Por_Id(g_dnm_Modelo_Obtener.idInstalacionLinea, false,true);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[1] = true;
            }
        }
        private void Obtener_Prioridad_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_MAEPRIORIDADES_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_dnm_Modelo_Obtener.idPrioridad };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_dnm_Modelo_Obtener.MAE_Prioridades = (MAE_Prioridades)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[2] = true;
            }
        }
        private void Obtener_ParteTipo_Modelo_Obtener()
        {
            try
            {
                MYT_PartesTipos_Datos obj_MYT_PartesTipos_Datos = new MYT_PartesTipos_Datos();
                g_dnm_Modelo_Obtener.MYT_PartesTipos = obj_MYT_PartesTipos_Datos.Obtener_Modelo_Por_Id(g_dnm_Modelo_Obtener.idParteTipo,false);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[3] = true;
            }
        }
        private void Obtener_ParteEstado_Modelo_Obtener()
        {
            try
            {
                MYT_PartesEstados_Datos obj_MYT_PartesEstados_Datos = new MYT_PartesEstados_Datos();
                g_dnm_Modelo_Obtener.MYT_PartesEstados = obj_MYT_PartesEstados_Datos.Obtener_Modelo_Por_Id(g_dnm_Modelo_Obtener.idParteEstado);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[4] = true;
            }
        }
        private void Obtener_Departamento_Modelo_Obtener()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_CONTABILIDAD + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_CONTABILIDAD + "." + Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD);
                //creamos la instancia
                var obj_Clase = Activator.CreateInstance(m_type);
                //Cargamos el metodo solicitado
                MethodInfo obj_MethodInfo = obj_Clase.GetType().GetMethod(Variables.G_STR_LIBRERIA_DATOSCONTABILIDAD_PROCEDIMIENTO_CTADEPARTAMENTO_OBTENERMODELO_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros = { g_dnm_Modelo_Obtener.idDepartamento };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_dnm_Modelo_Obtener.CTA_Departamentos = (CTA_Departamentos)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[5] = true;
            }
        }
        private void Obtener_Prevision_Modelo_Obtener()
        {
            try
            {
                MYT_Previsiones_Datos obj_MYT_Previsiones_Datos = new MYT_Previsiones_Datos();
                g_dnm_Modelo_Obtener.MYT_Previsiones = obj_MYT_Previsiones_Datos.Obtener_Modelo_Por_Id(g_dnm_Modelo_Obtener.idPrevision,false);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[6] = true;
            }
        }
        private void Obtener_Inspeccion_Modelo_Obtener()
        {
            try
            {
                MYT_Inspecciones_Datos obj_MYT_Inspecciones_Datos = new MYT_Inspecciones_Datos();
                g_dnm_Modelo_Obtener.MYT_Inspecciones = obj_MYT_Inspecciones_Datos.Obtener_Modelo_Por_Id(g_dnm_Modelo_Obtener.idInspeccion);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[7] = true;
            }
        }
        private void Obtener_EstructuraPartePeticionDatoCabecera_Modelo_Obtener()
        {
            try
            {
                MYT_EstructurasPartesPeticionDatos_Cabecera_Datos obj_MYT_EstructurasPartesPeticionDatos_Cabecera_Datos = new MYT_EstructurasPartesPeticionDatos_Cabecera_Datos();
                g_dnm_Modelo_Obtener.MYT_EstructurasPartesPeticionDatos_Cabecera = obj_MYT_EstructurasPartesPeticionDatos_Cabecera_Datos.Obtener_Modelo_Por_Id(g_dnm_Modelo_Obtener.idEstructuraPartePeticionDatoCabecera,false,false);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[8] = true;
            }
        }
        private void Obtener_Tecnico_Modelo_Obtener()
        {
            try
            {
                MYT_Tecnicos_Datos obj_MYT_Tecnicos_Datos = new MYT_Tecnicos_Datos();
                g_dnm_Modelo_Obtener.MYT_Tecnicos = obj_MYT_Tecnicos_Datos.Obtener_Modelo_Por_Id(g_dnm_Modelo_Obtener.idTecnico,false, false);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[9] = true;
            }
        }
        private void Obtener_PartesProtocolos_Modelo_Obtener()
        {
            try
            {
                MYT_Partes_Protocolos_Datos obj_MYT_Partes_Protocolos_Datos = new MYT_Partes_Protocolos_Datos();
                g_dnm_Modelo_Obtener.MYT_Partes_Protocolos = obj_MYT_Partes_Protocolos_Datos.Obtener_ModeloListado_Por_IdParte(g_dnm_Modelo_Obtener.id);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[10] = true;
            }
        }
        private void Obtener_PeticionDatos_Modelo_Obtener()
        {
            try
            {
                MYT_Partes_PeticionDatos_Datos obj_MYT_Partes_PeticionDatos_Datos = new MYT_Partes_PeticionDatos_Datos();
                g_dnm_Modelo_Obtener.MYT_Partes_PeticionDatos = obj_MYT_Partes_PeticionDatos_Datos.Obtener_ModeloListado_Por_IdParte(g_dnm_Modelo_Obtener.id);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[11] = true;
            }
        }
        private void Obtener_PartesProtocolosRellenos_Modelo_Obtener()
        {
            try
            {
                MYT_Partes_ProtocolosRellenos_Datos obj_MYT_Partes_ProtocolosRellenos_Datos = new MYT_Partes_ProtocolosRellenos_Datos();
                g_dnm_Modelo_Obtener.MYT_Partes_ProtocolosRellenos = obj_MYT_Partes_ProtocolosRellenos_Datos.Obtener_ModeloListado_Por_IdParte(g_dnm_Modelo_Obtener.id);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[12] = true;
            }
        }
        private void Obtener_ListadoPartesProtocolosRellenos_Modelo_Obtener()
        {
            try
            {
                MYT_Partes_ProtocolosRellenos_Datos obj_MYT_Partes_ProtocolosRellenos_Datos = new MYT_Partes_ProtocolosRellenos_Datos();
                g_dnm_Modelo_Obtener.ProtocolosRellenos = obj_MYT_Partes_ProtocolosRellenos_Datos.Obtener_Registros_Para_Listado_Por_Parte(g_dnm_Modelo_Obtener.id);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[13] = true;
            }
        }
        private void Obtener_ListadoTrabajosRealizados_Modelo_Obtener()
        {
            try
            {
                MYT_Partes_TrabajosRealizados_Datos obj_MYT_Partes_TrabajosRealizados_Datos = new MYT_Partes_TrabajosRealizados_Datos();
                g_dnm_Modelo_Obtener.TrabajosRealizados = obj_MYT_Partes_TrabajosRealizados_Datos.Obtener_Registros_Para_Listado_Por_Parte(g_dnm_Modelo_Obtener.id);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[14] = true;
            }
        }
        private void Obtener_ListadoNotas_Modelo_Obtener()
        {
            try
            {
                MYT_Partes_Notas_Datos obj_MYT_Partes_Notas_Datos = new MYT_Partes_Notas_Datos();
                g_dnm_Modelo_Obtener.Notas = obj_MYT_Partes_Notas_Datos.Obtener_Registros_Para_Listado_Por_Parte(g_dnm_Modelo_Obtener.id);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[15] = true;
            }
        }
        private void Obtener_ListadoFotos_Modelo_Obtener()
        {
            try
            {
                MYT_Partes_Fotos_Datos obj_MYT_Partes_Fotos_Datos = new MYT_Partes_Fotos_Datos();
                g_dnm_Modelo_Obtener.MYT_Partes_Fotos = obj_MYT_Partes_Fotos_Datos.Obtener_ModeloListado_Por_IdParte(g_dnm_Modelo_Obtener.id);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[16] = 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[17] = 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[18] = true;
            }
        }
        private void Obtener_ParteLineas_Modelo_OBTENER()
        {
            try
            {
                MYT_PartesLineas_Datos obj_MYT_PartesLineas_Datos = new MYT_PartesLineas_Datos();
                g_dnm_Modelo_Obtener.ParteLineas = obj_MYT_PartesLineas_Datos.Obtener_Registros_Para_Listado_Por_IdParte(g_dnm_Modelo_Obtener.id);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[19] = true;
            }
        }
        private void Obtener_Resumen_Modelo_OBTENER()
        {
            try
            {
                MYT_PartesLineas_Resumen_Datos obj_MYT_PartesLineas_Resumen_Datos = new MYT_PartesLineas_Resumen_Datos();
                g_dnm_Modelo_Obtener.MYT_PartesLineas_Resumen = obj_MYT_PartesLineas_Resumen_Datos.Obtener_ModeloListado_Por_IdParte(g_dnm_Modelo_Obtener.id);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[20] = true;
            }
        }
        private void Obtener_AlbaranCabecera_Modelo_Obtener()
        {
            try
            {
                //Cargamos el ensamblado
                Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_VENTAS + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_VENTAS + "." + Variables.G_STR_LIBRERIA_DATOSVENTAS);
                //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_DATOSVENTAS_PROCEDIMIENTO_VTAALBARANESCABECERA_OBTENER_POR_ID, BindingFlags.Instance | BindingFlags.NonPublic);

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

                //Obtener valores
                object[] arr_Parametros = { g_dnm_Modelo_Obtener.idFacturaCabecera };
                //Pasamos los parametros al metodo y lo ejecutamos
                g_dnm_Modelo_Obtener.VTA_FacturasCabecera = (VTA_FacturasCabecera)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener[22] = true;
            }
        }
        #endregion
        #endregion

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

        #region Obtener Por Parte
        private INTERNO_MYT_Partes_Modelo g_mdl_INTERNO_MYT_Partes_Modelo_SIMPLE = null;

        private static int g_int_TotalHilos_Obtener_SIMPLE = 2;
        private bool[] g_bol_Hilos_Terminados_Obtener_SIMPLE = new bool[g_int_TotalHilos_Obtener_SIMPLE];

        public INTERNO_MYT_Partes_Modelo Obtener_Por_IdParte_Simple(long _lng_idParte)
        {
            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_MYT_Partes_Modelo.id) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.id) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.codigo) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.codigo) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.idInstalacionCabecera) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionCabecera) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.idInstalacionLinea) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionLinea) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.idPrioridad) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idPrioridad) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.idParteTipo) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idParteTipo) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.idParteEstado) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idParteEstado) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.idDepartamento) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idDepartamento) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.idPrevision) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idPrevision) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.idInspeccion) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInspeccion) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.idEstructuraPartePeticionDatoCabecera) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEstructuraPartePeticionDatoCabecera) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.fechaHoraRecepcion) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaHoraRecepcion) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.fechaHoraCita) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaHoraCita) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.textoCita) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.textoCita) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.incidencias) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.incidencias) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.observaciones) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.observaciones) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.guid) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.guid) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.fechaBorrado) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaBorrado) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.idEmpresa) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEmpresa) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.idTecnico) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idTecnico) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.idMoneda) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idMoneda) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.idImpuestoCabecera) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idImpuestoCabecera) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.recargo) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.recargo) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_bruto) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_bruto) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_baseImponible) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_baseImponible) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_impuesto) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_impuesto) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_recargo) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_recargo) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.notaImportante) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.notaImportante) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.descuentoProntoPago) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.descuentoProntoPago) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.descuentoFinalFactura) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.descuentoFinalFactura) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.descuentoFinalAlbaran) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.descuentoFinalAlbaran) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.aplicarRetencion) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.aplicarRetencion) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.retencion_Porcentaje) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.retencion_Porcentaje) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.retencion_Valor) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.retencion_Valor) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.retencion_Base) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.retencion_Base) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_descuentoProntoPago) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_descuentoProntoPago) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_descuentoFinalFactura) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_descuentoFinalFactura) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_descuentoFinalAlbaran) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_descuentoFinalAlbaran) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_retencion) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_retencion) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_Final) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_Final) +
                    " FROM " + nameof(MYT_Partes) +
                    " WHERE " +
                          nameof(MYT_Partes) + "." + nameof(MYT_Partes.id) + "=@id";

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

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

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

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


                    //MYT_PartesLineas ##########################################################################################
                    ThreadStart obj_ThreadStart_LINEAS = new ThreadStart(Obtener_Lineas_Modelo_SIMPLE);
                    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_SIMPLE)
                        {
                            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(MYT_Partes_Datos) + "/" + nameof(Obtener_Por_IdParte_Simple), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }

            return g_mdl_INTERNO_MYT_Partes_Modelo_SIMPLE;
        }
        #region Tablas Relacionadas
        private void Obtener_Instalaciones_Modelo_SIMPLE()
        {
            try
            {
                MYT_InstalacionesCabecera_Datos obj_MYT_InstalacionesCabecera_Datos = new MYT_InstalacionesCabecera_Datos();
                g_mdl_INTERNO_MYT_Partes_Modelo_SIMPLE.MYT_InstalacionesCabecera = obj_MYT_InstalacionesCabecera_Datos.Obtener_Modelo_Por_Id(g_mdl_INTERNO_MYT_Partes_Modelo_SIMPLE.idInstalacionCabecera,true,false);

            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_SIMPLE[0] = true;
            }
        }
        private void Obtener_Lineas_Modelo_SIMPLE()
        {
            try
            {
                MYT_PartesLineas_Datos obj_MYT_PartesLineas_Datos = new MYT_PartesLineas_Datos();
                g_mdl_INTERNO_MYT_Partes_Modelo_SIMPLE.MYT_PartesLineas = obj_MYT_PartesLineas_Datos.Obtener_ModeloListado_Por_IdParte(g_mdl_INTERNO_MYT_Partes_Modelo_SIMPLE.id);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_SIMPLE[1] = true;
            }
        }
        #endregion
        #endregion

        #region Para Listado

        #region Simple
        private INTERNO_MYT_Partes_Listado_Modelo g_mdl_INTERNO_MYT_Partes_Listado_Modelo_PARALISTADO = null;

        public INTERNO_MYT_Partes_Listado_Modelo Obtener_Registro_Para_Listado_Por_Id(long _lng_id)
        {
            g_mdl_INTERNO_MYT_Partes_Listado_Modelo_PARALISTADO = null;

            try
            {
                string str_SQL = Obtener_Consulta_Para_Listado() +
                                " WHERE " +
                                    nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaBorrado) + "  is null AND " +
                                    nameof(MYT_Partes) + "." + nameof(MYT_Partes.id) + " =@id ";
                //where
                List<SqlParameter> lst_Parametros = new List<SqlParameter>();
                lst_Parametros.Add(new SqlParameter("@id", _lng_id));

                //Parametros
                object[] arr_Parametros = lst_Parametros.ToArray();

                //Ejecutar
                Ejecutar_Consulta_Modelo_ParaListado(str_SQL, arr_Parametros);

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

            return g_mdl_INTERNO_MYT_Partes_Listado_Modelo_PARALISTADO;
        }

        #region Ejecutar Consulta Modelo Para Listado

        private void Ejecutar_Consulta_Modelo_ParaListado(string _str_SQL,
                                                            object[] _arr_Parametros)
        {
            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_INTERNO_MYT_Partes_Listado_Modelo_PARALISTADO = obj_Exferia_Entities.Database.SqlQuery<INTERNO_MYT_Partes_Listado_Modelo>(_str_SQL, _arr_Parametros).FirstOrDefault();
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MYT_Partes_Datos) + "/" + nameof(Ejecutar_Consulta_Modelo_ParaListado), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
        }


        #endregion
        #endregion

        #region Listado
        private List<INTERNO_MYT_Partes_Listado_Modelo> g_lst_INTERNO_MYT_Partes_Listado_Modelo_PARALISTADO = null;

        public List<INTERNO_MYT_Partes_Listado_Modelo> Obtener_Registros_Para_Listado_Por_InstalacionCabecera(long _lng_idInstalacionCabecera)
        {
            try
            {
                string str_SQL = Obtener_Consulta_Para_Listado() +
                                    " WHERE " +
                                        nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaBorrado) + " is null and " +
                                        nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionCabecera) + "=@idInstalacionCabecera ";
                //Parametros
                object[] arr_Parametros = new object[]
                {
                    new SqlParameter("@idInstalacionCabecera",  _lng_idInstalacionCabecera)
                };

                Ejecutar_Consulta_Modelo_Listado_PARALISTADO(str_SQL,
                                                            arr_Parametros);
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MYT_Partes_Datos) + "/" + nameof(Obtener_Registros_Para_Listado_Por_InstalacionCabecera), true);
            }

            return g_lst_INTERNO_MYT_Partes_Listado_Modelo_PARALISTADO;
        }

        public List<INTERNO_MYT_Partes_Listado_Modelo> Obtener_Registros_Para_Listado_Por_InstalacionLinea(long _lng_idInstalacionLinea)
        {
            try
            {
                string str_SQL = Obtener_Consulta_Para_Listado() +
                                    " WHERE " +
                                        nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaBorrado) + " is null and " +
                                        nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionLinea) + "=@idInstalacionLinea ";
                //Parametros
                object[] arr_Parametros = new object[]
                {
                    new SqlParameter("@idInstalacionLinea",  _lng_idInstalacionLinea)
                };

                Ejecutar_Consulta_Modelo_Listado_PARALISTADO(str_SQL,
                                                            arr_Parametros);
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MYT_Partes_Datos) + "/" + nameof(Obtener_Registros_Para_Listado_Por_InstalacionLinea), true);
            }

            return g_lst_INTERNO_MYT_Partes_Listado_Modelo_PARALISTADO;
        }

        #region Ejecutar Consulta
        private void Ejecutar_Consulta_Modelo_Listado_PARALISTADO(string _str_SQL,
                                                                  object[] _arr_Parametros)
        {
            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_INTERNO_MYT_Partes_Listado_Modelo_PARALISTADO = obj_Exferia_Entities.Database.SqlQuery<INTERNO_MYT_Partes_Listado_Modelo>(_str_SQL, _arr_Parametros).ToList();
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MYT_Partes_Datos) + "/" + nameof(Ejecutar_Consulta_Modelo_Listado_PARALISTADO), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
        }
        #endregion

        #endregion

        private string Obtener_Consulta_Para_Listado()
        {
            return
                    " SELECT " +
                         nameof(INTERNO_MYT_Partes_Listado_Modelo.id) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.id) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.codigo) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.codigo) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.fechaHoraRecepcion) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaHoraRecepcion) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.fechaHoraCita) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaHoraCita) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.textoCita) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.textoCita) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.guid) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.guid) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.fechaBorrado) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaBorrado) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.recargo) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.recargo) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_bruto) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_bruto) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_baseImponible) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_baseImponible) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_impuesto) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_impuesto) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_recargo) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_recargo) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.notaImportante) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.notaImportante) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.descuentoProntoPago) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.descuentoProntoPago) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.descuentoFinalFactura) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.descuentoFinalFactura) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.descuentoFinalAlbaran) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.descuentoFinalAlbaran) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.aplicarRetencion) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.aplicarRetencion) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.retencion_Porcentaje) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.retencion_Porcentaje) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.retencion_Valor) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.retencion_Valor) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.retencion_Base) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.retencion_Base) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_descuentoProntoPago) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_descuentoProntoPago) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_descuentoFinalFactura) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_descuentoFinalFactura) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_descuentoFinalAlbaran) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_descuentoFinalAlbaran) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_retencion) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_retencion) + " , " +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_Final) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_Final) + " , " +
                        //ids
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idInstalacionCabecera) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionCabecera) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idInstalacionLinea) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionLinea) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idPrioridad) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idPrioridad) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idParteTipo) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idParteTipo) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idParteEstado) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idParteEstado) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idDepartamento) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idDepartamento) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idPrevision) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idPrevision) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idInspeccion) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInspeccion) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idEstructuraPartePeticionDatoCabecera) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEstructuraPartePeticionDatoCabecera) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idEmpresa) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEmpresa) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idTecnico) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idTecnico) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idMoneda) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idMoneda) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idImpuestoCabecera) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idImpuestoCabecera) + "," +
                        //InstalacionCabecera
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionCabecera_Id) + " = " + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.id) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionCabecera_Codigo) + " = " + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.codigo) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionCabecera_Descripcion) + " =" + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.descripcion) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionCabecera_FechaBorrado) + " =" + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.fechaBorrado) + "," +
                        //Cliente
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Cliente_Id) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Cliente_Codigo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.codigo) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Cliente_Descripcion) + " =" + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.razonSocial) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Cliente_FechaBorrado) + " =" + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaBorrado) + ","+
                        //InstalacionLinea
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionLinea_Codigo) + " = " + nameof(MYT_InstalacionesLineas) + "." + nameof(MYT_InstalacionesLineas.codigo) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionLinea_Descripcion) + " =" + nameof(MYT_InstalacionesLineas) + "." + nameof(MYT_InstalacionesLineas.descripcion) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionLinea_FechaBorrado) + " =" + nameof(MYT_InstalacionesLineas) + "." + nameof(MYT_InstalacionesLineas.fechaBorrado) + ","+
                        //Prioridad
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Prioridad_Codigo) + " = " + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.codigo) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Prioridad_Descripcion) + " =" + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.descripcion) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Prioridad_FechaBorrado) + " =" + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.fechaBorrado) + ","+
                        //ParteTipo
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteTipo_Codigo) + " = " + nameof(MYT_PartesTipos) + "." + nameof(MYT_PartesTipos.codigo) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteTipo_Descripcion) + " =" + nameof(MYT_PartesTipos) + "." + nameof(MYT_PartesTipos.descripcion) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteTipo_FechaBorrado) + " =" + nameof(MYT_PartesTipos) + "." + nameof(MYT_PartesTipos.fechaBorrado) + ","+
                        //ParteEstado
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteEstado_Codigo) + " = " + nameof(MYT_PartesEstados) + "." + nameof(MYT_PartesEstados.codigo) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteEstado_EstadoInterno) + " = " + nameof(MYT_PartesEstados) + "." + nameof(MYT_PartesEstados.estadoInterno) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteEstado_Descripcion) + " =" + nameof(MYT_PartesEstados) + "." + nameof(MYT_PartesEstados.descripcion) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteEstado_FechaBorrado) + " =" + nameof(MYT_PartesEstados) + "." + nameof(MYT_PartesEstados.fechaBorrado) + ","+
                        //Departamento
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Departamento_Codigo) + " = " + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.codigo) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Departamento_Descripcion) + " =" + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.descripcion) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Departamento_FechaBorrado) + " =" + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.fechaBorrado) + ","+
                        //EstructuraPartePeticionDato
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.EstructuraPartePeticionDato_Codigo) + " = " + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera) + "." + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera.codigo) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.EstructuraPartePeticionDato_Descripcion) + " =" + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera) + "." + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera.descripcion) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.EstructuraPartePeticionDato_FechaBorrado) + " =" + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera) + "." + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera.fechaBorrado) + ","+
                        //Empresa
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Empresa_Codigo) + " = " + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.codigo) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Empresa_Descripcion) + " =" + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.descripcion) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Empresa_FechaBorrado) + " =" + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.fechaBorrado) + ","+
                        //Tecnico
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Tecnico_Codigo) + " = " + nameof(MYT_Tecnicos) + "." + nameof(MYT_Tecnicos.codigo) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Tecnico_Descripcion) + " =" + nameof(MYT_Tecnicos) + "." + nameof(MYT_Tecnicos.nombre) + "," +
                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Tecnico_FechaBorrado) + " =" + nameof(MYT_Tecnicos) + "." + nameof(MYT_Tecnicos.fechaBorrado)+
                " FROM " + nameof(MYT_Partes) +
                        //InstalacionCabecera.Cliente o  InstalacionLinea
                        " LEFT JOIN " + nameof(MYT_InstalacionesLineas) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionLinea) + " = " + nameof(MYT_InstalacionesLineas) + "." + nameof(MYT_InstalacionesLineas.id) +
                        " LEFT JOIN " + nameof(MYT_InstalacionesCabecera) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionCabecera) + " = " + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.id) +
                        " LEFT JOIN " + nameof(MAE_Clientes) + " ON " + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.idCliente) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id) +
                        //Prioridad
                        " LEFT JOIN " + nameof(MAE_Prioridades) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idPrioridad) + " = " + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.id) +
                        //ParteTipo
                        " LEFT JOIN " + nameof(MYT_PartesTipos) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idParteTipo) + " = " + nameof(MYT_PartesTipos) + "." + nameof(MYT_PartesTipos.id) +
                        //ParteEstado
                        " LEFT JOIN " + nameof(MYT_PartesEstados) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idParteEstado) + " = " + nameof(MYT_PartesEstados) + "." + nameof(MYT_PartesEstados.id) +
                        //Departamento
                        " LEFT JOIN " + nameof(CTA_Departamentos) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idDepartamento) + " = " + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.id) +
                        //EstructuraPartePeticionDato
                        " LEFT JOIN " + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEstructuraPartePeticionDatoCabecera) + " = " + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera) + "." + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera.id) +
                        //Empresa
                        " LEFT JOIN " + nameof(GEN_Empresas) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEmpresa) + " = " + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.id) +
                        //Tecnico
                        " LEFT JOIN " + nameof(MYT_Tecnicos) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idTecnico) + " = " + nameof(MYT_Tecnicos) + "." + nameof(MYT_Tecnicos.id);
                                    
        }
        #endregion

        #region Para Visor
        public List<INTERNO_MYT_Partes_Listado_Modelo> Obtener_Para_Visor_PartesAsignados()
        {
            Exferia_Entities obj_Exferia_Entities = null;
            List<INTERNO_MYT_Partes_Listado_Modelo> lst_INTERNO_MYT_Partes_Listado_Modelo = new List<INTERNO_MYT_Partes_Listado_Modelo>();
            try
            {
                //Conexion
                obj_Exferia_Entities = new Exferia_Entities();
                obj_Exferia_Entities.Configuration.LazyLoadingEnabled = false;

                string str_SQL_AUX_1 = " SELECT " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.id) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.id) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.codigo) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.codigo) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.fechaHoraRecepcion) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaHoraRecepcion) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.fechaHoraCita) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaHoraCita) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.textoCita) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.textoCita) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.guid) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.guid) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.fechaBorrado) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaBorrado) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.recargo) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.recargo) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_bruto) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_bruto) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_baseImponible) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_baseImponible) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_impuesto) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_impuesto) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_recargo) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_recargo) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.notaImportante) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.notaImportante) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.descuentoProntoPago) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.descuentoProntoPago) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.descuentoFinalFactura) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.descuentoFinalFactura) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.descuentoFinalAlbaran) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.descuentoFinalAlbaran) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.aplicarRetencion) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.aplicarRetencion) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.retencion_Porcentaje) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.retencion_Porcentaje) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.retencion_Valor) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.retencion_Valor) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.retencion_Base) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.retencion_Base) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_descuentoProntoPago) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_descuentoProntoPago) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_descuentoFinalFactura) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_descuentoFinalFactura) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_descuentoFinalAlbaran) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_descuentoFinalAlbaran) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_retencion) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_retencion) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_Final) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_Final) + " , " +
                                        //ids
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idInstalacionCabecera) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionCabecera) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idInstalacionLinea) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionLinea) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idPrioridad) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idPrioridad) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idParteTipo) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idParteTipo) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idParteEstado) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idParteEstado) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idDepartamento) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idDepartamento) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idPrevision) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idPrevision) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idInspeccion) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInspeccion) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idEstructuraPartePeticionDatoCabecera) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEstructuraPartePeticionDatoCabecera) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idEmpresa) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEmpresa) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idTecnico) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idTecnico) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idMoneda) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idMoneda) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idImpuestoCabecera) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idImpuestoCabecera) + "," +
                                        //InstalacionCabecera
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionCabecera_Id) + " = " + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.id) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionCabecera_Codigo) + " = " + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.codigo) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionCabecera_Descripcion) + " =" + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.descripcion) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionCabecera_FechaBorrado) + " =" + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.fechaBorrado) + "," +
                                        //Cliente
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Cliente_Id) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Cliente_Codigo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.codigo) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Cliente_Descripcion) + " =" + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.razonSocial) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Cliente_FechaBorrado) + " =" + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaBorrado) + "," +
                                        //InstalacionLinea
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionLinea_Codigo) + " = " + nameof(MYT_InstalacionesLineas) + "." + nameof(MYT_InstalacionesLineas.codigo) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionLinea_Descripcion) + " =" + nameof(MYT_InstalacionesLineas) + "." + nameof(MYT_InstalacionesLineas.descripcion) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionLinea_FechaBorrado) + " =" + nameof(MYT_InstalacionesLineas) + "." + nameof(MYT_InstalacionesLineas.fechaBorrado) + "," +
                                        //Prioridad
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Prioridad_Codigo) + " = " + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.codigo) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Prioridad_Descripcion) + " =" + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.descripcion) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Prioridad_FechaBorrado) + " =" + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.fechaBorrado) + "," +
                                        //ParteTipo
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteTipo_Codigo) + " = " + nameof(MYT_PartesTipos) + "." + nameof(MYT_PartesTipos.codigo) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteTipo_Descripcion) + " =" + nameof(MYT_PartesTipos) + "." + nameof(MYT_PartesTipos.descripcion) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteTipo_FechaBorrado) + " =" + nameof(MYT_PartesTipos) + "." + nameof(MYT_PartesTipos.fechaBorrado) + "," +
                                        //ParteEstado
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteEstado_Codigo) + " = " + nameof(MYT_PartesEstados) + "." + nameof(MYT_PartesEstados.codigo) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteEstado_EstadoInterno) + " = " + nameof(MYT_PartesEstados) + "." + nameof(MYT_PartesEstados.estadoInterno) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteEstado_Descripcion) + " =" + nameof(MYT_PartesEstados) + "." + nameof(MYT_PartesEstados.descripcion) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteEstado_FechaBorrado) + " =" + nameof(MYT_PartesEstados) + "." + nameof(MYT_PartesEstados.fechaBorrado) + "," +
                                        //Departamento
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Departamento_Codigo) + " = " + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.codigo) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Departamento_Descripcion) + " =" + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.descripcion) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Departamento_FechaBorrado) + " =" + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.fechaBorrado) + "," +
                                        //EstructuraPartePeticionDato
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.EstructuraPartePeticionDato_Codigo) + " = " + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera) + "." + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera.codigo) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.EstructuraPartePeticionDato_Descripcion) + " =" + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera) + "." + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera.descripcion) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.EstructuraPartePeticionDato_FechaBorrado) + " =" + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera) + "." + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera.fechaBorrado) + "," +
                                        //Empresa
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Empresa_Codigo) + " = " + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.codigo) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Empresa_Descripcion) + " =" + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.descripcion) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Empresa_FechaBorrado) + " =" + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.fechaBorrado) + "," +
                                        //Tecnico
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Tecnico_Codigo) + " = " + nameof(MYT_Tecnicos) + "." + nameof(MYT_Tecnicos.codigo) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Tecnico_Descripcion) + " =" + nameof(MYT_Tecnicos) + "." + nameof(MYT_Tecnicos.nombre) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Tecnico_FechaBorrado) + " =" + nameof(MYT_Tecnicos) + "." + nameof(MYT_Tecnicos.fechaBorrado) +
                                " FROM " + nameof(MYT_Partes) +
                                //SincronizacionRegistros
                                " INNER JOIN " + nameof(SNC_SincronizacionRegistros) + " ON " +
                                            " convert(bigint," + nameof(SNC_SincronizacionRegistros) + "." + nameof(SNC_SincronizacionRegistros.campoclave) + ") = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.id) + " and " +
                                            nameof(SNC_SincronizacionRegistros) + "." + nameof(SNC_SincronizacionRegistros.tabla) + " = '" + nameof(MYT_Partes) + "' and " +
                                            nameof(SNC_SincronizacionRegistros) + "." + nameof(SNC_SincronizacionRegistros.tipoAccion) + " <> '" + Variables.G_STR_TIPOACCION_ELIMINAR + "' " +
                                //InstalacionCabecera.Cliente o  InstalacionLinea
                                " LEFT JOIN " + nameof(MYT_InstalacionesLineas) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionLinea) + " = " + nameof(MYT_InstalacionesLineas) + "." + nameof(MYT_InstalacionesLineas.id) +
                                " LEFT JOIN " + nameof(MYT_InstalacionesCabecera) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionCabecera) + " = " + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.id) +
                                " LEFT JOIN " + nameof(MAE_Clientes) + " ON " + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.idCliente) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id) +
                                //Prioridad
                                " LEFT JOIN " + nameof(MAE_Prioridades) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idPrioridad) + " = " + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.id) +
                                //ParteTipo
                                " LEFT JOIN " + nameof(MYT_PartesTipos) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idParteTipo) + " = " + nameof(MYT_PartesTipos) + "." + nameof(MYT_PartesTipos.id) +
                                //ParteEstado
                                " LEFT JOIN " + nameof(MYT_PartesEstados) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idParteEstado) + " = " + nameof(MYT_PartesEstados) + "." + nameof(MYT_PartesEstados.id) +
                                //Departamento
                                " LEFT JOIN " + nameof(CTA_Departamentos) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idDepartamento) + " = " + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.id) +
                                //EstructuraPartePeticionDato
                                " LEFT JOIN " + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEstructuraPartePeticionDatoCabecera) + " = " + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera) + "." + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera.id) +
                                //Empresa
                                " LEFT JOIN " + nameof(GEN_Empresas) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEmpresa) + " = " + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.id) +
                                //Tecnico
                                " LEFT JOIN " + nameof(MYT_Tecnicos) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idTecnico) + " = " + nameof(MYT_Tecnicos) + "." + nameof(MYT_Tecnicos.id) +
                                " WHERE " +
                                    nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaBorrado) + " is null ";


                //Rellenar el Modelo
                lst_INTERNO_MYT_Partes_Listado_Modelo = obj_Exferia_Entities.Database.SqlQuery<INTERNO_MYT_Partes_Listado_Modelo>(str_SQL_AUX_1).ToList();
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MYT_Partes_Datos) + "/" + nameof(Obtener_Para_Visor_PartesAsignados), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }

            return lst_INTERNO_MYT_Partes_Listado_Modelo;
        }
        public List<INTERNO_MYT_Partes_Listado_Modelo> Obtener_Para_Visor_PartesNoAsignados()
        {
            Exferia_Entities obj_Exferia_Entities = null;
            List<INTERNO_MYT_Partes_Listado_Modelo> lst_INTERNO_MYT_Partes_Listado_Modelo = new List<INTERNO_MYT_Partes_Listado_Modelo>();
            try
            {
                //Conexion
                obj_Exferia_Entities = new Exferia_Entities();
                obj_Exferia_Entities.Configuration.LazyLoadingEnabled = false;

                string str_SQL_AUX_1 = " SELECT " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.id) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.id) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.codigo) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.codigo) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.fechaHoraRecepcion) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaHoraRecepcion) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.fechaHoraCita) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaHoraCita) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.textoCita) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.textoCita) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.guid) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.guid) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.fechaBorrado) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaBorrado) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.recargo) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.recargo) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_bruto) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_bruto) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_baseImponible) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_baseImponible) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_impuesto) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_impuesto) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_recargo) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_recargo) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.notaImportante) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.notaImportante) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.descuentoProntoPago) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.descuentoProntoPago) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.descuentoFinalFactura) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.descuentoFinalFactura) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.descuentoFinalAlbaran) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.descuentoFinalAlbaran) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.aplicarRetencion) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.aplicarRetencion) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.retencion_Porcentaje) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.retencion_Porcentaje) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.retencion_Valor) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.retencion_Valor) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.retencion_Base) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.retencion_Base) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_descuentoProntoPago) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_descuentoProntoPago) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_descuentoFinalFactura) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_descuentoFinalFactura) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_descuentoFinalAlbaran) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_descuentoFinalAlbaran) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_retencion) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_retencion) + " , " +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.total_Final) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_Final) + " , " +
                                        //ids
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idInstalacionCabecera) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionCabecera) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idInstalacionLinea) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionLinea) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idPrioridad) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idPrioridad) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idParteTipo) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idParteTipo) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idParteEstado) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idParteEstado) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idDepartamento) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idDepartamento) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idPrevision) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idPrevision) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idInspeccion) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInspeccion) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idEstructuraPartePeticionDatoCabecera) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEstructuraPartePeticionDatoCabecera) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idEmpresa) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEmpresa) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idTecnico) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idTecnico) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idMoneda) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idMoneda) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.idImpuestoCabecera) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idImpuestoCabecera) + "," +
                                        //InstalacionCabecera
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionCabecera_Id) + " = " + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.id) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionCabecera_Codigo) + " = " + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.codigo) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionCabecera_Descripcion) + " =" + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.descripcion) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionCabecera_FechaBorrado) + " =" + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.fechaBorrado) + "," +
                                        //Cliente
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Cliente_Id) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Cliente_Codigo) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.codigo) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Cliente_Descripcion) + " =" + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.razonSocial) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Cliente_FechaBorrado) + " =" + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.fechaBorrado) + "," +
                                        //InstalacionLinea
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionLinea_Codigo) + " = " + nameof(MYT_InstalacionesLineas) + "." + nameof(MYT_InstalacionesLineas.codigo) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionLinea_Descripcion) + " =" + nameof(MYT_InstalacionesLineas) + "." + nameof(MYT_InstalacionesLineas.descripcion) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.InstalacionLinea_FechaBorrado) + " =" + nameof(MYT_InstalacionesLineas) + "." + nameof(MYT_InstalacionesLineas.fechaBorrado) + "," +
                                        //Prioridad
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Prioridad_Codigo) + " = " + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.codigo) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Prioridad_Descripcion) + " =" + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.descripcion) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Prioridad_FechaBorrado) + " =" + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.fechaBorrado) + "," +
                                        //ParteTipo
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteTipo_Codigo) + " = " + nameof(MYT_PartesTipos) + "." + nameof(MYT_PartesTipos.codigo) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteTipo_Descripcion) + " =" + nameof(MYT_PartesTipos) + "." + nameof(MYT_PartesTipos.descripcion) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteTipo_FechaBorrado) + " =" + nameof(MYT_PartesTipos) + "." + nameof(MYT_PartesTipos.fechaBorrado) + "," +
                                        //ParteEstado
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteEstado_Codigo) + " = " + nameof(MYT_PartesEstados) + "." + nameof(MYT_PartesEstados.codigo) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteEstado_EstadoInterno) + " = " + nameof(MYT_PartesEstados) + "." + nameof(MYT_PartesEstados.estadoInterno) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteEstado_Descripcion) + " =" + nameof(MYT_PartesEstados) + "." + nameof(MYT_PartesEstados.descripcion) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.ParteEstado_FechaBorrado) + " =" + nameof(MYT_PartesEstados) + "." + nameof(MYT_PartesEstados.fechaBorrado) + "," +
                                        //Departamento
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Departamento_Codigo) + " = " + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.codigo) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Departamento_Descripcion) + " =" + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.descripcion) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Departamento_FechaBorrado) + " =" + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.fechaBorrado) + "," +
                                        //EstructuraPartePeticionDato
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.EstructuraPartePeticionDato_Codigo) + " = " + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera) + "." + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera.codigo) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.EstructuraPartePeticionDato_Descripcion) + " =" + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera) + "." + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera.descripcion) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.EstructuraPartePeticionDato_FechaBorrado) + " =" + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera) + "." + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera.fechaBorrado) + "," +
                                        //Empresa
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Empresa_Codigo) + " = " + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.codigo) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Empresa_Descripcion) + " =" + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.descripcion) + "," +
                                        nameof(INTERNO_MYT_Partes_Listado_Modelo.Empresa_FechaBorrado) + " =" + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.fechaBorrado) +
                                " FROM " + nameof(MYT_Partes) +
                                //InstalacionCabecera.Cliente o  InstalacionLinea
                                " LEFT JOIN " + nameof(MYT_InstalacionesLineas) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionLinea) + " = " + nameof(MYT_InstalacionesLineas) + "." + nameof(MYT_InstalacionesLineas.id) +
                                " LEFT JOIN " + nameof(MYT_InstalacionesCabecera) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionCabecera) + " = " + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.id) +
                                " LEFT JOIN " + nameof(MAE_Clientes) + " ON " + nameof(MYT_InstalacionesCabecera) + "." + nameof(MYT_InstalacionesCabecera.idCliente) + " = " + nameof(MAE_Clientes) + "." + nameof(MAE_Clientes.id) +
                                //Prioridad
                                " LEFT JOIN " + nameof(MAE_Prioridades) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idPrioridad) + " = " + nameof(MAE_Prioridades) + "." + nameof(MAE_Prioridades.id) +
                                //ParteTipo
                                " LEFT JOIN " + nameof(MYT_PartesTipos) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idParteTipo) + " = " + nameof(MYT_PartesTipos) + "." + nameof(MYT_PartesTipos.id) +
                                //ParteEstado
                                " LEFT JOIN " + nameof(MYT_PartesEstados) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idParteEstado) + " = " + nameof(MYT_PartesEstados) + "." + nameof(MYT_PartesEstados.id) +
                                //Departamento
                                " LEFT JOIN " + nameof(CTA_Departamentos) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idDepartamento) + " = " + nameof(CTA_Departamentos) + "." + nameof(CTA_Departamentos.id) +
                                //EstructuraPartePeticionDato
                                " LEFT JOIN " + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEstructuraPartePeticionDatoCabecera) + " = " + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera) + "." + nameof(MYT_EstructurasPartesPeticionDatos_Cabecera.id) +
                                //Empresa
                                " LEFT JOIN " + nameof(GEN_Empresas) + " ON " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEmpresa) + " = " + nameof(GEN_Empresas) + "." + nameof(GEN_Empresas.id) +
                                //WHERE
                                " WHERE " +
                                    nameof(MYT_PartesEstados) + "." + nameof(MYT_PartesEstados.estadoInterno) + "<>'" + Variables_Mythos.G_MDL_ESTADOSINTERNOSPARTES_TERMINADO.Codigo + "' AND " +
                                    nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaBorrado) + " is null AND " + 
                                    nameof(MYT_Partes) + "." + nameof(MYT_Partes.idTecnico) + " is null ";

                //Rellenar el Modelo
                lst_INTERNO_MYT_Partes_Listado_Modelo = obj_Exferia_Entities.Database.SqlQuery<INTERNO_MYT_Partes_Listado_Modelo>(str_SQL_AUX_1).ToList();
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MYT_Partes_Datos) + "/" + nameof(Obtener_Para_Visor_PartesNoAsignados), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }

            return lst_INTERNO_MYT_Partes_Listado_Modelo;
        }


        #endregion

        #endregion

        #region Para Traspaso a Albaran/Factura
        public List<INTERNO_MYT_Parte_Traspaso_Simple_Modelo> Obtener_ParaTraspaso_Por_IdsParte_Simple(List<long> _lst_idParte)
        {
            Exferia_Entities obj_Exferia_Entities = null;

            List<INTERNO_MYT_Parte_Traspaso_Simple_Modelo> lst_INTERNO_MYT_Parte_Traspaso_Simple_Modelo = null;

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

                    string str_Filtro_IDS = Funciones.Formar_ContenidoIN_ParaConsultaWhere(nameof(MYT_Partes),
                                                                                            nameof(MYT_Partes.id),
                                                                                            G_ENUM_FORMARCONTENIDOIN_CONDICIONANTES.NADA,
                                                                                            _lst_idParte);
                    obj_Exferia_Entities = new Exferia_Entities();
                    obj_Exferia_Entities.Configuration.LazyLoadingEnabled = false;


                    string str_SQL =
                          " SELECT " +
                                nameof(INTERNO_MYT_Parte_Traspaso_Simple_Modelo.idParte) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.id) + " , " +
                                nameof(INTERNO_MYT_Parte_Traspaso_Simple_Modelo.idFacturaCabecera) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idFacturaCabecera) + " , " +
                                nameof(INTERNO_MYT_Parte_Traspaso_Simple_Modelo.idAlbaranCabecera) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idAlbaranCabecera) + " , " +
                                nameof(INTERNO_MYT_Parte_Traspaso_Simple_Modelo.estado_Interno) + "=" + nameof(MYT_PartesEstados) + "." + nameof(MYT_PartesEstados.estadoInterno) +
                        " FROM " + nameof(MYT_Partes) +
                        " INNER JOIN " + nameof(MYT_PartesEstados) + " ON " + nameof(MYT_Partes)+ "." + nameof(MYT_Partes.idParteEstado) + "=" + nameof(MYT_PartesEstados) + "." + nameof(MYT_PartesEstados.id) +
                      " WHERE " +
                              nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaBorrado) + " is null AND " +
                              str_Filtro_IDS;

                    //Rellenar el listado
                    lst_INTERNO_MYT_Parte_Traspaso_Simple_Modelo = obj_Exferia_Entities.Database.SqlQuery<INTERNO_MYT_Parte_Traspaso_Simple_Modelo>(str_SQL).ToList();

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

            return lst_INTERNO_MYT_Parte_Traspaso_Simple_Modelo;
        }

        #region Completo
        private INTERNO_MYT_Parte_Traspaso_Modelo g_mdl_INTERNO_MYT_Parte_Traspaso_Modelo = null;

        private static int g_int_TotalHilos_Obtener_ParaTraspaso = 5;
        private bool[] g_bol_Hilos_Terminados_Obtener_ParaTraspaso = new bool[g_int_TotalHilos_Obtener_ParaTraspaso];
        public INTERNO_MYT_Parte_Traspaso_Modelo Obtener_ParaTraspaso_Por_IdParte(long _lng_idParte)
        {
            Exferia_Entities obj_Exferia_Entities = null;

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

                g_mdl_INTERNO_MYT_Parte_Traspaso_Modelo = null;

                string str_SQL =
                       " SELECT " +
                            nameof(INTERNO_MYT_Partes_Modelo.id) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.id) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.codigo) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.codigo) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idInstalacionCabecera) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionCabecera) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idInstalacionLinea) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInstalacionLinea) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idPrioridad) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idPrioridad) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idParteTipo) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idParteTipo) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idParteEstado) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idParteEstado) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idDepartamento) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idDepartamento) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idPrevision) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idPrevision) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idInspeccion) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idInspeccion) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idEstructuraPartePeticionDatoCabecera) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEstructuraPartePeticionDatoCabecera) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.fechaHoraRecepcion) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaHoraRecepcion) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.fechaHoraCita) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaHoraCita) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.textoCita) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.textoCita) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.incidencias) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.incidencias) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.observaciones) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.observaciones) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.guid) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.guid) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.fechaBorrado) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaBorrado) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idEmpresa) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idEmpresa) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idTecnico) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idTecnico) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idMoneda) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idMoneda) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.idImpuestoCabecera) + " = " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idImpuestoCabecera) + "," +
                            nameof(INTERNO_MYT_Partes_Modelo.recargo) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.recargo) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_bruto) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_bruto) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_baseImponible) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_baseImponible) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_impuesto) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_impuesto) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_recargo) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_recargo) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.notaImportante) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.notaImportante) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.idAlbaranCabecera) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idAlbaranCabecera) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.idFacturaCabecera) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.idFacturaCabecera) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.descuentoProntoPago) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.descuentoProntoPago) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.descuentoFinalFactura) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.descuentoFinalFactura) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.descuentoFinalAlbaran) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.descuentoFinalAlbaran) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.aplicarRetencion) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.aplicarRetencion) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.retencion_Porcentaje) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.retencion_Porcentaje) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.retencion_Valor) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.retencion_Valor) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.retencion_Base) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.retencion_Base) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_descuentoProntoPago) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_descuentoProntoPago) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_descuentoFinalFactura) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_descuentoFinalFactura) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_descuentoFinalAlbaran) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_descuentoFinalAlbaran) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_retencion) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_retencion) + " , " +
                            nameof(INTERNO_MYT_Partes_Modelo.total_Final) + "=" + nameof(MYT_Partes) + "." + nameof(MYT_Partes.total_Final) +
                    " FROM " + nameof(MYT_Partes) +
                    " WHERE " +
                            nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaBorrado) + " is null AND " +
                            nameof(MYT_Partes) + "." + nameof(MYT_Partes.id) + "=@id";

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

                //Rellenar el listado
                g_mdl_INTERNO_MYT_Parte_Traspaso_Modelo = obj_Exferia_Entities.Database.SqlQuery<INTERNO_MYT_Parte_Traspaso_Modelo>(str_SQL, arr_Parametros).FirstOrDefault();

                #region Relaciones
                if (g_mdl_INTERNO_MYT_Parte_Traspaso_Modelo != null)
                {
                    //reiniciar Valores de los hilos
                    for (int int_Contador = 0; int_Contador < g_int_TotalHilos_Obtener_ParaTraspaso; int_Contador++)
                    {
                        g_bol_Hilos_Terminados_Obtener_ParaTraspaso[int_Contador] = false;
                    }

                    //MYT_InstalacionesCabecera ##########################################################################################
                    ThreadStart obj_ThreadStart_INSTALACIONCABECERA = new ThreadStart(Obtener_InstalacionCabecera_Modelo_OBTENER_PARATRASPASO);
                    Thread obj_Thread_INSTALACIONCABECERA = new Thread(obj_ThreadStart_INSTALACIONCABECERA);
                    obj_Thread_INSTALACIONCABECERA.Start();

                    //MYT_PartesEstados ##########################################################################################
                    ThreadStart obj_ThreadStart_PARTEESTADO = new ThreadStart(Obtener_ParteEstado_Modelo_Obtener_PARATRASPASO);
                    Thread obj_Thread_PARTEESTADO = new Thread(obj_ThreadStart_PARTEESTADO);
                    obj_Thread_PARTEESTADO.Start();

                    //MYT_Tecnicos ##########################################################################################
                    if (g_mdl_INTERNO_MYT_Parte_Traspaso_Modelo.idTecnico != null)
                    {
                        ThreadStart obj_ThreadStart_TECNICO = new ThreadStart(Obtener_Tecnico_Modelo_OBTENER_PARATRASPASO);
                        Thread obj_Thread_TECNICO = new Thread(obj_ThreadStart_TECNICO);
                        obj_Thread_TECNICO.Start();
                    }
                    else
                    {
                        g_bol_Hilos_Terminados_Obtener_ParaTraspaso[2] = true;
                    }

                    //MYT_PartesLineas ##########################################################################################
                    ThreadStart obj_ThreadStart_PARTELINEAS = new ThreadStart(Obtener_ParteLineas_Modelo_OBTENER_PARATRASPASO);
                    Thread obj_Thread_PARTELINEAS = new Thread(obj_ThreadStart_PARTELINEAS);
                    obj_Thread_PARTELINEAS.Start();

                    // MYT_PartesLineas_Resumen ##########################################################################################
                    ThreadStart obj_ThreadStart_RESUMEN = new ThreadStart(Obtener_Resumen_Modelo_OBTENER_PARATRASPASO);
                    Thread obj_Thread_RESUMEN = new Thread(obj_ThreadStart_RESUMEN);
                    obj_Thread_RESUMEN.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_ParaTraspaso)
                        {
                            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(MYT_Partes_Datos) + "/" + nameof(Obtener_ParaTraspaso_Por_IdParte), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }

            return g_mdl_INTERNO_MYT_Parte_Traspaso_Modelo;
        }

        #region Tablas Relacionadas
        private void Obtener_InstalacionCabecera_Modelo_OBTENER_PARATRASPASO()
        {
            try
            {
                MYT_InstalacionesCabecera_Datos obj_MYT_InstalacionesCabecera_Datos = new MYT_InstalacionesCabecera_Datos();
                g_mdl_INTERNO_MYT_Parte_Traspaso_Modelo.MYT_InstalacionesCabecera = obj_MYT_InstalacionesCabecera_Datos.Obtener_Modelo_Por_Id(g_mdl_INTERNO_MYT_Parte_Traspaso_Modelo.idInstalacionCabecera, true, false);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_ParaTraspaso[0] = true;
            }
        }
        private void Obtener_ParteEstado_Modelo_Obtener_PARATRASPASO()
        {
            try
            {
                MYT_PartesEstados_Datos obj_MYT_PartesEstados_Datos = new MYT_PartesEstados_Datos();
                g_mdl_INTERNO_MYT_Parte_Traspaso_Modelo.MYT_PartesEstados = obj_MYT_PartesEstados_Datos.Obtener_Modelo_Por_Id(g_mdl_INTERNO_MYT_Parte_Traspaso_Modelo.idParteEstado);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_ParaTraspaso[1] = true;
            }
        }

        private void Obtener_Tecnico_Modelo_OBTENER_PARATRASPASO()
        {
            try
            {
                MYT_Tecnicos_Datos obj_MYT_Tecnicos_Datos = new MYT_Tecnicos_Datos();
                g_mdl_INTERNO_MYT_Parte_Traspaso_Modelo.MYT_Tecnicos = obj_MYT_Tecnicos_Datos.Obtener_Modelo_Por_Id(g_mdl_INTERNO_MYT_Parte_Traspaso_Modelo.idTecnico.Value, false, false);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_ParaTraspaso[2] = true;
            }
        }
        private void Obtener_ParteLineas_Modelo_OBTENER_PARATRASPASO()
        {
            try
            {
                MYT_PartesLineas_Datos obj_MYT_PartesLineas_Datos = new MYT_PartesLineas_Datos();
                g_mdl_INTERNO_MYT_Parte_Traspaso_Modelo.ParteLineas = obj_MYT_PartesLineas_Datos.Obtener_Registros_Para_Traspaso_Por_IdParte(g_mdl_INTERNO_MYT_Parte_Traspaso_Modelo.id);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_ParaTraspaso[3] = true;
            }
        }
        private void Obtener_Resumen_Modelo_OBTENER_PARATRASPASO()
        {
            try
            {
                MYT_PartesLineas_Resumen_Datos obj_MYT_PartesLineas_Resumen_Datos = new MYT_PartesLineas_Resumen_Datos();
                g_mdl_INTERNO_MYT_Parte_Traspaso_Modelo.MYT_PartesLineas_Resumen = obj_MYT_PartesLineas_Resumen_Datos.Obtener_ModeloListado_Por_IdParte(g_mdl_INTERNO_MYT_Parte_Traspaso_Modelo.id);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Obtener_ParaTraspaso[4] = true;
            }
        }
        #endregion

        #endregion
        #endregion

        #region MODELOS

        #region Modelo Simple
        private MYT_Partes g_mdl_MYT_Partes = null;
        public MYT_Partes Obtener_Modelo_Por_Id(long _lng_id)
        {
            try
            {

                string str_SQL = Obtener_Consulta_Modelo() +
                                   //WHERE
                                   " WHERE " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.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,
                                         false);
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MYT_Partes_Datos) + "/" + nameof(Obtener_Modelo_Por_Id), true);
            }

            return g_mdl_MYT_Partes;
        }
        
        public MYT_Partes Obtener_Modelo_Para_Sincronizacion(long _lng_id)
        {
            try
            {

                string str_SQL = Obtener_Consulta_Modelo() +
                                   //WHERE
                                   " WHERE " + nameof(MYT_Partes) + "." + nameof(MYT_Partes.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,
                                         true);
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MYT_Partes_Datos) + "/" + nameof(Obtener_Modelo_Para_Sincronizacion), true);
            }

            return g_mdl_MYT_Partes;
        }

        #region Ejecutar Consulta
        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_Tecnicos)
        {
            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_MYT_Partes = obj_Exferia_Entities.Database.SqlQuery<MYT_Partes>(_str_SQL, _arr_Parametros).FirstOrDefault();

                #region Rellenar tablas Relacionadas
                if (g_mdl_MYT_Partes != 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;
                    }

                    //TECNICO ##########################################################################################
                    if (_bol_Cargar_Tecnicos &&
                        g_mdl_MYT_Partes.idTecnico!=null)
                    {
                        ThreadStart obj_ThreadStart_TECNICO = new ThreadStart(Obtener_Tecnico_Modelo_Simple);
                        Thread obj_Thread_TECNICO = new Thread(obj_ThreadStart_TECNICO);
                        obj_Thread_TECNICO.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(MYT_Partes_Datos) + "/" + nameof(Ejecutar_Consulta_Modelo), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();

            }
        }
        private void Obtener_Tecnico_Modelo_Simple()
        {
            try
            {
                MYT_Tecnicos_Datos obj_MYT_Tecnicos_Datos = new MYT_Tecnicos_Datos();
                g_mdl_MYT_Partes.MYT_Tecnicos = obj_MYT_Tecnicos_Datos.Obtener_Modelo_Por_Id(g_mdl_MYT_Partes.idTecnico.Value, false, false);
            }
            catch (Control_Errores)
            { }
            finally
            {
                g_bol_Hilos_Terminados_Modelo[0] = true;
            }
        }

        #endregion
        #endregion

        #region Modelo Listado
        private List<MYT_Partes> g_lst_MYT_Partes = null;

        public List<MYT_Partes> Obtener_ModeloListado_Por_Ids(List<long> _lst_Ids)
        {
            try
            {
                if (_lst_Ids != null && _lst_Ids.Count > 0)
                {

                    string str_Filtro_IDS = Funciones.Formar_ContenidoIN_ParaConsultaWhere(nameof(MYT_Partes),
                                                                                            nameof(MYT_Partes.id),
                                                                                            G_ENUM_FORMARCONTENIDOIN_CONDICIONANTES.NADA,
                                                                                            _lst_Ids);

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


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

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

            return g_lst_MYT_Partes;
        }
        public List<MYT_Partes> Obtener_ModeloListado_Por_IdPrevision(long _lng_idPrevision)
        {
            try
            {
               

                //Consulta
                string str_SQL = Obtener_Consulta_Modelo() +
                                            " WHERE " +
                                                nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaBorrado) + " is null and " +
                                                nameof(MYT_Partes) + "." + nameof(MYT_Partes.idPrevision) + "=@idPrevision";


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

                //Ejecutar y rellenar el listado
                Ejecutar_Consulta_Modelo_Listado(str_SQL,
                                                 arr_Parametros);

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

            return g_lst_MYT_Partes;
        }

        public List<MYT_Partes> Obtener_ModeloListado_Por_IdsPrevision(List<long> _lst_idPrevision)
        {
            try
            {
                if (_lst_idPrevision != null && _lst_idPrevision.Count > 0)
                {

                    string str_Filtro_IDS = Funciones.Formar_ContenidoIN_ParaConsultaWhere(nameof(MYT_Partes),
                                                                                            nameof(MYT_Partes.idPrevision),
                                                                                            G_ENUM_FORMARCONTENIDOIN_CONDICIONANTES.NADA,
                                                                                            _lst_idPrevision);

                    //Consulta
                    string str_SQL = Obtener_Consulta_Modelo() +
                                                " WHERE " +
                                                    nameof(MYT_Partes) + "." + nameof(MYT_Partes.fechaBorrado) + " is null and " +
                                                    str_Filtro_IDS;


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

                }


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

            return g_lst_MYT_Partes;
        }

        #region Ejecutar Consulta

        private void Ejecutar_Consulta_Modelo_Listado(string _str_SQL,
                                                      object[] _arr_Parametros)
        {
            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_MYT_Partes = obj_Exferia_Entities.Database.SqlQuery<MYT_Partes>(_str_SQL, _arr_Parametros).ToList();
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MYT_Partes_Datos) + "/" + nameof(Ejecutar_Consulta_Modelo_Listado), true);
            }
            finally
            {
                obj_Exferia_Entities.Database.Connection.Close();
                obj_Exferia_Entities.Dispose();
            }
        }
        #endregion
        #endregion

        private string Obtener_Consulta_Modelo()
        {
            return
                " SELECT " +
                    nameof(MYT_Partes.id) + " , " +
                    nameof(MYT_Partes.codigo) + " , " +
                    nameof(MYT_Partes.idInstalacionCabecera) + " , " +
                    nameof(MYT_Partes.idInstalacionLinea) + " , " +
                    nameof(MYT_Partes.idPrioridad) + " , " +
                    nameof(MYT_Partes.idParteTipo) + " , " +
                    nameof(MYT_Partes.idParteEstado) + " , " +
                    nameof(MYT_Partes.idDepartamento) + " , " +
                    nameof(MYT_Partes.idPrevision) + " , " +
                    nameof(MYT_Partes.idInspeccion) + " , " +
                    nameof(MYT_Partes.idEstructuraPartePeticionDatoCabecera) + " , " +
                    nameof(MYT_Partes.fechaHoraRecepcion) + " , " +
                    nameof(MYT_Partes.fechaHoraCita) + " , " +
                    nameof(MYT_Partes.textoCita) + " , " +
                    nameof(MYT_Partes.incidencias) + " , " +
                    nameof(MYT_Partes.observaciones) + " , " +
                    nameof(MYT_Partes.guid) + " , " +
                    nameof(MYT_Partes.fechaBorrado) + " , " +
                    nameof(MYT_Partes.idEmpresa) + " , " +
                    nameof(MYT_Partes.idTecnico) + " , " +
                    nameof(MYT_Partes.idMoneda) + " , " +
                    nameof(MYT_Partes.idImpuestoCabecera) + " , " +
                    nameof(MYT_Partes.recargo) + " , " +
                    nameof(MYT_Partes.total_bruto) + " , " +
                    nameof(MYT_Partes.total_baseImponible) + " , " +
                    nameof(MYT_Partes.total_impuesto) + " , " +
                    nameof(MYT_Partes.total_recargo) + " , " +
                    nameof(MYT_Partes.total) + " , " +
                    nameof(MYT_Partes.idAlbaranCabecera) + " , " +
                    nameof(MYT_Partes.idFacturaCabecera) +  " , " +
                    nameof(MYT_Partes.notaImportante) + " , " +
                    nameof(MYT_Partes.descuentoProntoPago) + " , " +
                    nameof(MYT_Partes.descuentoFinalFactura) + " , " +
                    nameof(MYT_Partes.descuentoFinalAlbaran) + " , " +
                    nameof(MYT_Partes.aplicarRetencion) + " , " +
                    nameof(MYT_Partes.retencion_Porcentaje) + " , " +
                    nameof(MYT_Partes.retencion_Valor) + " , " +
                    nameof(MYT_Partes.retencion_Base) + " , " +
                    nameof(MYT_Partes.total_descuentoProntoPago) + " , " +
                    nameof(MYT_Partes.total_descuentoFinalFactura) + " , " +
                    nameof(MYT_Partes.total_descuentoFinalAlbaran) + " , " +
                    nameof(MYT_Partes.total_retencion) + " , " +
                    nameof(MYT_Partes.total_Final) +
                " FROM " + nameof(MYT_Partes);
        }
        #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;

                MYT_Partes mdl_MYT_Partes_AGrabar = (MYT_Partes)_mdl_obj;
                MYT_Partes mdl_MYT_Partes_DatosViejos = new MYT_Partes();

                // Ver si existe ######################################################################
                MYT_Partes mdl_MYT_Partes_Final = Obtener_Modelo_Por_Id(mdl_MYT_Partes_AGrabar.id);
                //#####################################################################################

                //UPDATE
                if (mdl_MYT_Partes_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_MYT_Partes_Final, mdl_MYT_Partes_DatosViejos, false, false);

                    // Cargar los Datos Nuevos del Modelo
                    Funciones.CopiarPropiedadesObjetos(mdl_MYT_Partes_AGrabar, mdl_MYT_Partes_Final, false, false);

                    #region Update
                    string str_SQL_Update = " UPDATE " + nameof(MYT_Partes) +
                                           " SET " +
                                                nameof(MYT_Partes.codigo) + "=@codigo," +
                                                nameof(MYT_Partes.idInstalacionCabecera) + "=@idInstalacionCabecera," +
                                                nameof(MYT_Partes.idInstalacionLinea) + "=@idInstalacionLinea," +
                                                nameof(MYT_Partes.idPrioridad) + "=@idPrioridad," +
                                                nameof(MYT_Partes.idParteTipo) + "=@idParteTipo," +
                                                nameof(MYT_Partes.idParteEstado) + "=@idParteEstado," +
                                                nameof(MYT_Partes.idDepartamento) + "=@idDepartamento," +
                                                nameof(MYT_Partes.idPrevision) + "=@idPrevision," +
                                                nameof(MYT_Partes.idInspeccion) + "=@idInspeccion," +
                                                nameof(MYT_Partes.idEstructuraPartePeticionDatoCabecera) + "=@idEstructuraPartePeticionDatoCabecera," +
                                                nameof(MYT_Partes.fechaHoraRecepcion) + "=@fechaHoraRecepcion," +
                                                nameof(MYT_Partes.fechaHoraCita) + "=@fechaHoraCita," +
                                                nameof(MYT_Partes.textoCita) + "=@textoCita," +
                                                nameof(MYT_Partes.incidencias) + "=@incidencias," +
                                                nameof(MYT_Partes.observaciones) + "=@observaciones," +
                                                nameof(MYT_Partes.guid) + "=@guid," +
                                                nameof(MYT_Partes.fechaBorrado) + "=@fechaBorrado," +
                                                nameof(MYT_Partes.idEmpresa) + "=@idEmpresa," +
                                                nameof(MYT_Partes.idTecnico) + "=@idTecnico," +
                                                nameof(MYT_Partes.idMoneda) + "=@idMoneda," +
                                                nameof(MYT_Partes.idImpuestoCabecera) + "=@idImpuestoCabecera," +
                                                nameof(MYT_Partes.recargo) + "=@recargo," +
                                                nameof(MYT_Partes.total_bruto) + "=@total_bruto," +
                                                nameof(MYT_Partes.total_baseImponible) + "=@total_baseImponible," +
                                                nameof(MYT_Partes.total_impuesto) + "=@total_impuesto," +
                                                nameof(MYT_Partes.total_recargo) + "=@total_recargo," +
                                                nameof(MYT_Partes.total) + "=@total," +
                                                nameof(MYT_Partes.idAlbaranCabecera) + "=@idAlbaranCabecera," +
                                                nameof(MYT_Partes.idFacturaCabecera) + "=@idFacturaCabecera," +
                                                nameof(MYT_Partes.notaImportante) + "=@notaImportante," +
                                                nameof(MYT_Partes.descuentoProntoPago) + "=@descuentoProntoPago," +
                                                nameof(MYT_Partes.descuentoFinalFactura) + "=@descuentoFinalFactura," +
                                                nameof(MYT_Partes.descuentoFinalAlbaran) + "=@descuentoFinalAlbaran," +
                                                nameof(MYT_Partes.aplicarRetencion) + "=@aplicarRetencion," +
                                                nameof(MYT_Partes.retencion_Porcentaje) + "=@retencion_Porcentaje," +
                                                nameof(MYT_Partes.retencion_Valor) + "=@retencion_Valor," +
                                                nameof(MYT_Partes.retencion_Base) + "=@retencion_Base," +
                                                nameof(MYT_Partes.total_descuentoProntoPago) + "=@total_descuentoProntoPago," +
                                                nameof(MYT_Partes.total_descuentoFinalFactura) + "=@total_descuentoFinalFactura," +
                                                nameof(MYT_Partes.total_descuentoFinalAlbaran) + "=@total_descuentoFinalAlbaran," +
                                                nameof(MYT_Partes.total_retencion) + "=@total_retencion," +
                                                nameof(MYT_Partes.total_Final) + "=@total_Final" +
                                           " WHERE " +
                                               nameof(MYT_Partes.id) + "=@id";

                    //Parametros
                    object[] arr_Parametros_Update = new object[]
                    {
                         new SqlParameter("@codigo",  mdl_MYT_Partes_Final.codigo),
                         new SqlParameter("@idInstalacionCabecera",  mdl_MYT_Partes_Final.idInstalacionCabecera),
                         mdl_MYT_Partes_Final.idInstalacionLinea != null
                            ?   new SqlParameter("@idInstalacionLinea", mdl_MYT_Partes_Final.idInstalacionLinea.Value)
                            :   new SqlParameter("@idInstalacionLinea",  DBNull.Value),
                         new SqlParameter("@idPrioridad",  mdl_MYT_Partes_Final.idPrioridad),
                         new SqlParameter("@idParteTipo",  mdl_MYT_Partes_Final.idParteTipo),
                         new SqlParameter("@idParteEstado",  mdl_MYT_Partes_Final.idParteEstado),
                         mdl_MYT_Partes_Final.idDepartamento != null
                            ?   new SqlParameter("@idDepartamento", mdl_MYT_Partes_Final.idDepartamento.Value)
                            :   new SqlParameter("@idDepartamento",  DBNull.Value),
                         mdl_MYT_Partes_Final.idPrevision != null
                            ?   new SqlParameter("@idPrevision", mdl_MYT_Partes_Final.idPrevision.Value)
                            :   new SqlParameter("@idPrevision",  DBNull.Value),
                         mdl_MYT_Partes_Final.idInspeccion != null
                            ?   new SqlParameter("@idInspeccion", mdl_MYT_Partes_Final.idInspeccion.Value)
                            :   new SqlParameter("@idInspeccion",  DBNull.Value),
                          mdl_MYT_Partes_Final.idEstructuraPartePeticionDatoCabecera != null
                            ?   new SqlParameter("@idEstructuraPartePeticionDatoCabecera", mdl_MYT_Partes_Final.idEstructuraPartePeticionDatoCabecera.Value)
                            :   new SqlParameter("@idEstructuraPartePeticionDatoCabecera",  DBNull.Value),
                         mdl_MYT_Partes_Final.fechaHoraRecepcion != null
                            ?   new SqlParameter("@fechaHoraRecepcion", mdl_MYT_Partes_Final.fechaHoraRecepcion.Value)
                            :   new SqlParameter("@fechaHoraRecepcion",  DBNull.Value),
                         mdl_MYT_Partes_Final.fechaHoraCita != null
                            ?   new SqlParameter("@fechaHoraCita", mdl_MYT_Partes_Final.fechaHoraCita.Value)
                            :   new SqlParameter("@fechaHoraCita",  DBNull.Value),
                         mdl_MYT_Partes_Final.textoCita != null
                            ?   new SqlParameter("@textoCita", mdl_MYT_Partes_Final.textoCita)
                            :   new SqlParameter("@textoCita",  DBNull.Value),
                         mdl_MYT_Partes_Final.incidencias != null
                            ?   new SqlParameter("@incidencias", mdl_MYT_Partes_Final.incidencias)
                            :   new SqlParameter("@incidencias",  DBNull.Value),
                           mdl_MYT_Partes_Final.observaciones != null
                            ?   new SqlParameter("@observaciones", mdl_MYT_Partes_Final.observaciones)
                            :   new SqlParameter("@observaciones",  DBNull.Value),
                            mdl_MYT_Partes_Final.guid != null
                            ?   new SqlParameter("@guid", mdl_MYT_Partes_Final.guid)
                            :   new SqlParameter("@guid",  DBNull.Value),
                             mdl_MYT_Partes_Final.fechaBorrado != null
                            ?   new SqlParameter("@fechaBorrado", mdl_MYT_Partes_Final.fechaBorrado.Value)
                            :   new SqlParameter("@fechaBorrado",  DBNull.Value),
                            new SqlParameter("@idEmpresa",  mdl_MYT_Partes_Final.idEmpresa),
                            mdl_MYT_Partes_Final.idTecnico != null
                            ?   new SqlParameter("@idTecnico", mdl_MYT_Partes_Final.idTecnico.Value)
                            :   new SqlParameter("@idTecnico",  DBNull.Value),
                            mdl_MYT_Partes_Final.idMoneda != null
                            ?   new SqlParameter("@idMoneda", mdl_MYT_Partes_Final.idMoneda.Value)
                            :   new SqlParameter("@idMoneda",  DBNull.Value),
                            mdl_MYT_Partes_Final.idImpuestoCabecera != null
                            ?   new SqlParameter("@idImpuestoCabecera", mdl_MYT_Partes_Final.idImpuestoCabecera.Value)
                            :   new SqlParameter("@idImpuestoCabecera",  DBNull.Value),
                            mdl_MYT_Partes_Final.recargo != null
                            ?   new SqlParameter("@recargo", mdl_MYT_Partes_Final.recargo.Value)
                            :   new SqlParameter("@recargo",  DBNull.Value),
                            mdl_MYT_Partes_Final.total_bruto != null
                            ?   new SqlParameter("@total_bruto", mdl_MYT_Partes_Final.total_bruto.Value)
                            :   new SqlParameter("@total_bruto",  DBNull.Value),
                            mdl_MYT_Partes_Final.total_baseImponible != null
                            ?   new SqlParameter("@total_baseImponible", mdl_MYT_Partes_Final.total_baseImponible.Value)
                            :   new SqlParameter("@total_baseImponible",  DBNull.Value),
                            mdl_MYT_Partes_Final.total_impuesto != null
                            ?   new SqlParameter("@total_impuesto", mdl_MYT_Partes_Final.total_impuesto.Value)
                            :   new SqlParameter("@total_impuesto",  DBNull.Value),
                            mdl_MYT_Partes_Final.total_recargo != null
                            ?   new SqlParameter("@total_recargo", mdl_MYT_Partes_Final.total_recargo.Value)
                            :   new SqlParameter("@total_recargo",  DBNull.Value),
                            mdl_MYT_Partes_Final.total != null
                            ?   new SqlParameter("@total", mdl_MYT_Partes_Final.total.Value)
                            :   new SqlParameter("@total",  DBNull.Value),
                            mdl_MYT_Partes_Final.idAlbaranCabecera != null
                            ?   new SqlParameter("@idAlbaranCabecera", mdl_MYT_Partes_Final.idAlbaranCabecera.Value)
                            :   new SqlParameter("@idAlbaranCabecera",  DBNull.Value),
                            mdl_MYT_Partes_Final.idFacturaCabecera != null
                            ?   new SqlParameter("@idFacturaCabecera", mdl_MYT_Partes_Final.idFacturaCabecera.Value)
                            :   new SqlParameter("@idFacturaCabecera",  DBNull.Value),
                            mdl_MYT_Partes_Final.notaImportante != null
                            ?   new SqlParameter("@notaImportante", mdl_MYT_Partes_Final.notaImportante)
                            :   new SqlParameter("@notaImportante",  DBNull.Value),
                            mdl_MYT_Partes_Final.descuentoProntoPago != null
                            ?   new SqlParameter("@descuentoProntoPago", mdl_MYT_Partes_Final.descuentoProntoPago)
                            :   new SqlParameter("@descuentoProntoPago",  DBNull.Value),
                            mdl_MYT_Partes_Final.descuentoFinalFactura != null
                            ?   new SqlParameter("@descuentoFinalFactura", mdl_MYT_Partes_Final.descuentoFinalFactura)
                            :   new SqlParameter("@descuentoFinalFactura",  DBNull.Value),
                            mdl_MYT_Partes_Final.descuentoFinalAlbaran != null
                            ?   new SqlParameter("@descuentoFinalAlbaran", mdl_MYT_Partes_Final.descuentoFinalAlbaran)
                            :   new SqlParameter("@descuentoFinalAlbaran",  DBNull.Value),
                            mdl_MYT_Partes_Final.aplicarRetencion != null
                            ?   new SqlParameter("@aplicarRetencion", mdl_MYT_Partes_Final.aplicarRetencion)
                            :   new SqlParameter("@aplicarRetencion",  DBNull.Value),
                            mdl_MYT_Partes_Final.retencion_Porcentaje != null
                            ?   new SqlParameter("@retencion_Porcentaje", mdl_MYT_Partes_Final.retencion_Porcentaje)
                            :   new SqlParameter("@retencion_Porcentaje",  DBNull.Value),
                            mdl_MYT_Partes_Final.retencion_Valor != null
                            ?   new SqlParameter("@retencion_Valor", mdl_MYT_Partes_Final.retencion_Valor)
                            :   new SqlParameter("@retencion_Valor",  DBNull.Value),
                            mdl_MYT_Partes_Final.retencion_Base != null
                            ?   new SqlParameter("@retencion_Base", mdl_MYT_Partes_Final.retencion_Base)
                            :   new SqlParameter("@retencion_Base",  DBNull.Value),
                            mdl_MYT_Partes_Final.total_descuentoProntoPago != null
                            ?   new SqlParameter("@total_descuentoProntoPago", mdl_MYT_Partes_Final.total_descuentoProntoPago)
                            :   new SqlParameter("@total_descuentoProntoPago",  DBNull.Value),
                            mdl_MYT_Partes_Final.total_descuentoFinalFactura != null
                            ?   new SqlParameter("@total_descuentoFinalFactura", mdl_MYT_Partes_Final.total_descuentoFinalFactura)
                            :   new SqlParameter("@total_descuentoFinalFactura",  DBNull.Value),
                            mdl_MYT_Partes_Final.total_descuentoFinalAlbaran != null
                            ?   new SqlParameter("@total_descuentoFinalAlbaran", mdl_MYT_Partes_Final.total_descuentoFinalAlbaran)
                            :   new SqlParameter("@total_descuentoFinalAlbaran",  DBNull.Value),
                            mdl_MYT_Partes_Final.total_retencion != null
                            ?   new SqlParameter("@total_retencion", mdl_MYT_Partes_Final.total_retencion)
                            :   new SqlParameter("@total_retencion",  DBNull.Value),
                            mdl_MYT_Partes_Final.total_Final != null
                            ?   new SqlParameter("@total_Final", mdl_MYT_Partes_Final.total_Final)
                            :   new SqlParameter("@total_Final",  DBNull.Value),
                            new SqlParameter("@id", mdl_MYT_Partes_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_MYT_Partes_Final.id;
                }
                //INSERT
                else
                {
                    mdl_MYT_Partes_Final = new MYT_Partes();

                    //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_MYT_Partes_AGrabar, mdl_MYT_Partes_Final, false, false);

                    #region INSERT
                    string str_SQL_Insert = " INSERT INTO " + nameof(MYT_Partes) +
                                               " (" +
                                                        nameof(MYT_Partes.codigo) + "," +
                                                        nameof(MYT_Partes.idInstalacionCabecera) + "," +
                                                        nameof(MYT_Partes.idInstalacionLinea) + "," +
                                                        nameof(MYT_Partes.idPrioridad) + "," +
                                                        nameof(MYT_Partes.idParteTipo) + "," +
                                                        nameof(MYT_Partes.idParteEstado) + "," +
                                                        nameof(MYT_Partes.idDepartamento) + "," +
                                                        nameof(MYT_Partes.idPrevision) + "," +
                                                        nameof(MYT_Partes.idInspeccion) + "," +
                                                        nameof(MYT_Partes.idEstructuraPartePeticionDatoCabecera) + "," +
                                                        nameof(MYT_Partes.fechaHoraRecepcion) + "," +
                                                        nameof(MYT_Partes.fechaHoraCita) + "," +
                                                        nameof(MYT_Partes.textoCita) + "," +
                                                        nameof(MYT_Partes.incidencias) + "," +
                                                        nameof(MYT_Partes.observaciones) + "," +
                                                        nameof(MYT_Partes.guid) + "," +
                                                        nameof(MYT_Partes.fechaBorrado) + "," +
                                                        nameof(MYT_Partes.idEmpresa) + "," +
                                                        nameof(MYT_Partes.idTecnico) + "," +
                                                        nameof(MYT_Partes.idMoneda) + "," +
                                                        nameof(MYT_Partes.idImpuestoCabecera) + "," +
                                                        nameof(MYT_Partes.recargo) + "," +
                                                        nameof(MYT_Partes.total_bruto) + "," +
                                                        nameof(MYT_Partes.total_baseImponible) + "," +
                                                        nameof(MYT_Partes.total_impuesto) + "," +
                                                        nameof(MYT_Partes.total_recargo) + "," +
                                                        nameof(MYT_Partes.total) + "," +
                                                        nameof(MYT_Partes.idAlbaranCabecera) + "," +
                                                        nameof(MYT_Partes.idFacturaCabecera) + "," +
                                                        nameof(MYT_Partes.notaImportante) + "," +
                                                        nameof(MYT_Partes.descuentoProntoPago) + "," +
                                                        nameof(MYT_Partes.descuentoFinalFactura) + "," +
                                                        nameof(MYT_Partes.descuentoFinalAlbaran) + "," +
                                                        nameof(MYT_Partes.aplicarRetencion) + "," +
                                                        nameof(MYT_Partes.retencion_Porcentaje) + "," +
                                                        nameof(MYT_Partes.retencion_Valor) + "," +
                                                        nameof(MYT_Partes.retencion_Base) + "," +
                                                        nameof(MYT_Partes.total_descuentoProntoPago) + "," +
                                                        nameof(MYT_Partes.total_descuentoFinalFactura) + "," +
                                                        nameof(MYT_Partes.total_descuentoFinalAlbaran) + "," +
                                                        nameof(MYT_Partes.total_retencion) + "," +
                                                        nameof(MYT_Partes.total_Final) + 
                                               " ) " +
                                               " OUTPUT INSERTED." + nameof(MYT_Partes.id) +
                                               " VALUES " +
                                               " ( " +
                                                    "@codigo," +
                                                    "@idInstalacionCabecera," +
                                                    "@idInstalacionLinea," +
                                                    "@idPrioridad," +
                                                    "@idParteTipo," +
                                                    "@idParteEstado," +
                                                    "@idDepartamento," +
                                                    "@idPrevision," +
                                                    "@idInspeccion," +
                                                    "@idEstructuraPartePeticionDatoCabecera," +
                                                    "@fechaHoraRecepcion," +
                                                    "@fechaHoraCita," +
                                                    "@textoCita," +
                                                    "@incidencias," +
                                                    "@observaciones," +
                                                    "@guid," +
                                                    "@fechaBorrado," +
                                                    "@idEmpresa," +
                                                    "@idTecnico," +
                                                    "@idMoneda," +
                                                    "@idImpuestoCabecera," +
                                                    "@recargo," +
                                                    "@total_bruto," +
                                                    "@total_baseImponible," +
                                                    "@total_impuesto," +
                                                    "@total_recargo," +
                                                    "@total," +
                                                    "@idAlbaranCabecera," +
                                                    "@idFacturaCabecera," +
                                                    "@notaImportante," +
                                                    "@descuentoProntoPago," +
                                                    "@descuentoFinalFactura," +
                                                    "@descuentoFinalAlbaran," +
                                                    "@aplicarRetencion," +
                                                    "@retencion_Porcentaje," +
                                                    "@retencion_Valor," +
                                                    "@retencion_Base," +
                                                    "@total_descuentoProntoPago," +
                                                    "@total_descuentoFinalFactura," +
                                                    "@total_descuentoFinalAlbaran," +
                                                    "@total_retencion," +
                                                    "@total_Final" +
                                               " ) ";

                    //Parametros
                    object[] arr_Parametros_Insert = new object[]
                    {
                         new SqlParameter("@codigo",  mdl_MYT_Partes_Final.codigo),
                         new SqlParameter("@idInstalacionCabecera",  mdl_MYT_Partes_Final.idInstalacionCabecera),
                         mdl_MYT_Partes_Final.idInstalacionLinea != null
                            ?   new SqlParameter("@idInstalacionLinea", mdl_MYT_Partes_Final.idInstalacionLinea.Value)
                            :   new SqlParameter("@idInstalacionLinea",  DBNull.Value),
                         new SqlParameter("@idPrioridad",  mdl_MYT_Partes_Final.idPrioridad),
                         new SqlParameter("@idParteTipo",  mdl_MYT_Partes_Final.idParteTipo),
                         new SqlParameter("@idParteEstado",  mdl_MYT_Partes_Final.idParteEstado),
                         mdl_MYT_Partes_Final.idDepartamento != null
                            ?   new SqlParameter("@idDepartamento", mdl_MYT_Partes_Final.idDepartamento.Value)
                            :   new SqlParameter("@idDepartamento",  DBNull.Value),
                         mdl_MYT_Partes_Final.idPrevision != null
                            ?   new SqlParameter("@idPrevision", mdl_MYT_Partes_Final.idPrevision.Value)
                            :   new SqlParameter("@idPrevision",  DBNull.Value),
                         mdl_MYT_Partes_Final.idInspeccion != null
                            ?   new SqlParameter("@idInspeccion", mdl_MYT_Partes_Final.idInspeccion.Value)
                            :   new SqlParameter("@idInspeccion",  DBNull.Value),
                          mdl_MYT_Partes_Final.idEstructuraPartePeticionDatoCabecera != null
                            ?   new SqlParameter("@idEstructuraPartePeticionDatoCabecera", mdl_MYT_Partes_Final.idEstructuraPartePeticionDatoCabecera.Value)
                            :   new SqlParameter("@idEstructuraPartePeticionDatoCabecera",  DBNull.Value),
                         mdl_MYT_Partes_Final.fechaHoraRecepcion != null
                            ?   new SqlParameter("@fechaHoraRecepcion", mdl_MYT_Partes_Final.fechaHoraRecepcion.Value)
                            :   new SqlParameter("@fechaHoraRecepcion",  DBNull.Value),
                         mdl_MYT_Partes_Final.fechaHoraCita != null
                            ?   new SqlParameter("@fechaHoraCita", mdl_MYT_Partes_Final.fechaHoraCita.Value)
                            :   new SqlParameter("@fechaHoraCita",  DBNull.Value),
                         mdl_MYT_Partes_Final.textoCita != null
                            ?   new SqlParameter("@textoCita", mdl_MYT_Partes_Final.textoCita)
                            :   new SqlParameter("@textoCita",  DBNull.Value),
                         mdl_MYT_Partes_Final.incidencias != null
                            ?   new SqlParameter("@incidencias", mdl_MYT_Partes_Final.incidencias)
                            :   new SqlParameter("@incidencias",  DBNull.Value),
                           mdl_MYT_Partes_Final.observaciones != null
                            ?   new SqlParameter("@observaciones", mdl_MYT_Partes_Final.observaciones)
                            :   new SqlParameter("@observaciones",  DBNull.Value),
                            mdl_MYT_Partes_Final.guid != null
                            ?   new SqlParameter("@guid", mdl_MYT_Partes_Final.guid)
                            :   new SqlParameter("@guid",  DBNull.Value),
                             mdl_MYT_Partes_Final.fechaBorrado != null
                            ?   new SqlParameter("@fechaBorrado", mdl_MYT_Partes_Final.fechaBorrado.Value)
                            :   new SqlParameter("@fechaBorrado",  DBNull.Value),
                            new SqlParameter("@idEmpresa",  mdl_MYT_Partes_Final.idEmpresa),
                            mdl_MYT_Partes_Final.idTecnico != null
                            ?   new SqlParameter("@idTecnico", mdl_MYT_Partes_Final.idTecnico.Value)
                            :   new SqlParameter("@idTecnico",  DBNull.Value),
                            mdl_MYT_Partes_Final.idMoneda != null
                            ?   new SqlParameter("@idMoneda", mdl_MYT_Partes_Final.idMoneda.Value)
                            :   new SqlParameter("@idMoneda",  DBNull.Value),
                            mdl_MYT_Partes_Final.idImpuestoCabecera != null
                            ?   new SqlParameter("@idImpuestoCabecera", mdl_MYT_Partes_Final.idImpuestoCabecera.Value)
                            :   new SqlParameter("@idImpuestoCabecera",  DBNull.Value),
                            mdl_MYT_Partes_Final.recargo != null
                            ?   new SqlParameter("@recargo", mdl_MYT_Partes_Final.recargo.Value)
                            :   new SqlParameter("@recargo",  DBNull.Value),
                            mdl_MYT_Partes_Final.total_bruto != null
                            ?   new SqlParameter("@total_bruto", mdl_MYT_Partes_Final.total_bruto.Value)
                            :   new SqlParameter("@total_bruto",  DBNull.Value),
                            mdl_MYT_Partes_Final.total_baseImponible != null
                            ?   new SqlParameter("@total_baseImponible", mdl_MYT_Partes_Final.total_baseImponible.Value)
                            :   new SqlParameter("@total_baseImponible",  DBNull.Value),
                            mdl_MYT_Partes_Final.total_impuesto != null
                            ?   new SqlParameter("@total_impuesto", mdl_MYT_Partes_Final.total_impuesto.Value)
                            :   new SqlParameter("@total_impuesto",  DBNull.Value),
                            mdl_MYT_Partes_Final.total_recargo != null
                            ?   new SqlParameter("@total_recargo", mdl_MYT_Partes_Final.total_recargo.Value)
                            :   new SqlParameter("@total_recargo",  DBNull.Value),
                            mdl_MYT_Partes_Final.total != null
                            ?   new SqlParameter("@total", mdl_MYT_Partes_Final.total.Value)
                            :   new SqlParameter("@total",  DBNull.Value),
                            mdl_MYT_Partes_Final.idAlbaranCabecera != null
                            ?   new SqlParameter("@idAlbaranCabecera", mdl_MYT_Partes_Final.idAlbaranCabecera.Value)
                            :   new SqlParameter("@idAlbaranCabecera",  DBNull.Value),
                            mdl_MYT_Partes_Final.idFacturaCabecera != null
                            ?   new SqlParameter("@idFacturaCabecera", mdl_MYT_Partes_Final.idFacturaCabecera.Value)
                            :   new SqlParameter("@idFacturaCabecera",  DBNull.Value),
                            mdl_MYT_Partes_Final.notaImportante != null
                            ?   new SqlParameter("@notaImportante", mdl_MYT_Partes_Final.notaImportante)
                            :   new SqlParameter("@notaImportante",  DBNull.Value),
                            mdl_MYT_Partes_Final.descuentoProntoPago != null
                            ?   new SqlParameter("@descuentoProntoPago", mdl_MYT_Partes_Final.descuentoProntoPago)
                            :   new SqlParameter("@descuentoProntoPago",  DBNull.Value),
                            mdl_MYT_Partes_Final.descuentoFinalFactura != null
                            ?   new SqlParameter("@descuentoFinalFactura", mdl_MYT_Partes_Final.descuentoFinalFactura)
                            :   new SqlParameter("@descuentoFinalFactura",  DBNull.Value),
                            mdl_MYT_Partes_Final.descuentoFinalAlbaran != null
                            ?   new SqlParameter("@descuentoFinalAlbaran", mdl_MYT_Partes_Final.descuentoFinalAlbaran)
                            :   new SqlParameter("@descuentoFinalAlbaran",  DBNull.Value),
                            mdl_MYT_Partes_Final.aplicarRetencion != null
                            ?   new SqlParameter("@aplicarRetencion", mdl_MYT_Partes_Final.aplicarRetencion)
                            :   new SqlParameter("@aplicarRetencion",  DBNull.Value),
                            mdl_MYT_Partes_Final.retencion_Porcentaje != null
                            ?   new SqlParameter("@retencion_Porcentaje", mdl_MYT_Partes_Final.retencion_Porcentaje)
                            :   new SqlParameter("@retencion_Porcentaje",  DBNull.Value),
                            mdl_MYT_Partes_Final.retencion_Valor != null
                            ?   new SqlParameter("@retencion_Valor", mdl_MYT_Partes_Final.retencion_Valor)
                            :   new SqlParameter("@retencion_Valor",  DBNull.Value),
                            mdl_MYT_Partes_Final.retencion_Base != null
                            ?   new SqlParameter("@retencion_Base", mdl_MYT_Partes_Final.retencion_Base)
                            :   new SqlParameter("@retencion_Base",  DBNull.Value),
                            mdl_MYT_Partes_Final.total_descuentoProntoPago != null
                            ?   new SqlParameter("@total_descuentoProntoPago", mdl_MYT_Partes_Final.total_descuentoProntoPago)
                            :   new SqlParameter("@total_descuentoProntoPago",  DBNull.Value),
                            mdl_MYT_Partes_Final.total_descuentoFinalFactura != null
                            ?   new SqlParameter("@total_descuentoFinalFactura", mdl_MYT_Partes_Final.total_descuentoFinalFactura)
                            :   new SqlParameter("@total_descuentoFinalFactura",  DBNull.Value),
                            mdl_MYT_Partes_Final.total_descuentoFinalAlbaran != null
                            ?   new SqlParameter("@total_descuentoFinalAlbaran", mdl_MYT_Partes_Final.total_descuentoFinalAlbaran)
                            :   new SqlParameter("@total_descuentoFinalAlbaran",  DBNull.Value),
                            mdl_MYT_Partes_Final.total_retencion != null
                            ?   new SqlParameter("@total_retencion", mdl_MYT_Partes_Final.total_retencion)
                            :   new SqlParameter("@total_retencion",  DBNull.Value),
                            mdl_MYT_Partes_Final.total_Final != null
                            ?   new SqlParameter("@total_Final", mdl_MYT_Partes_Final.total_Final)
                            :   new SqlParameter("@total_Final",  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(MYT_Partes), mdl_MYT_Partes_DatosViejos, mdl_MYT_Partes_Final, mdl_INTERNO_ValorDevuelto_Modelo.TipoAccion, obj_Exferia_Entities);
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MYT_Partes_Datos) + "/" + nameof(Grabar), 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_idInstalacionCabecera, long _lng_idImpuestoCabecera, long? _lng_idMoneda, DateTime _dtt_Fecha, decimal _dcm_DescuentoProntoPago,
                                                                    decimal _dcm_DescuentoFinalAlbaran, decimal _dcm_DescuentoFinalFactura, 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(MYT_Partes) +
                    "   set " + 
                                nameof(MYT_Partes.idInstalacionCabecera) + "=" + _lng_idInstalacionCabecera + ", " +
                                nameof(MYT_Partes.idImpuestoCabecera) + "=" + _lng_idImpuestoCabecera + ", " +
                                nameof(MYT_Partes.idMoneda) + "=" + (_lng_idMoneda != null ? _lng_idMoneda.Value.ToString() : " NULL ") + ", " +
                                nameof(MYT_Partes.recargo) + "=" + (_bol_Recargo ? "1" : "0") + ", " +
                                nameof(MYT_Partes.descuentoProntoPago) + "=" + _dcm_DescuentoProntoPago.ToString().Replace(",", ".") + ", " +
                                nameof(MYT_Partes.descuentoFinalAlbaran) + "=" + _dcm_DescuentoFinalAlbaran.ToString().Replace(",", ".") + ", " +
                                nameof(MYT_Partes.descuentoFinalFactura) + "=" + _dcm_DescuentoFinalFactura.ToString().Replace(",", ".") + ", " +
                                nameof(MYT_Partes.fechaHoraRecepcion) + "='" + _dtt_Fecha + "' " +
                    " WHERE " + nameof(MYT_Partes.id) + "=" + _lng_id;

                obj_Exferia_Entities.Database.ExecuteSqlCommand(str_SQL_Update);
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MYT_Partes_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_descuentoFinalAlbaran,
                                                                decimal _dcm_total_baseImponible,
                                                                decimal _dcm_total_impuesto,
                                                                decimal _dcm_total_recargo,
                                                                decimal _dcm_total,
                                                                decimal _dcm_total_retencion,
                                                                decimal _dcm_total_Final)
        {
            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(MYT_Partes) +
                    "   set " + nameof(MYT_Partes.total_bruto) + "=" + _dcm_total_bruto.ToString().Replace(",", ".") + ", " +
                                nameof(MYT_Partes.total_baseImponible) + "=" + _dcm_total_baseImponible.ToString().Replace(",", ".") + ", " +
                                nameof(MYT_Partes.total_impuesto) + "=" + _dcm_total_impuesto.ToString().Replace(",", ".") + ", " +
                                nameof(MYT_Partes.total_recargo) + "=" + _dcm_total_recargo.ToString().Replace(",", ".") + ", " +
                                nameof(MYT_Partes.total) + "=" + _dcm_total.ToString().Replace(",", ".") + ", " +
                                nameof(MYT_Partes.total_descuentoProntoPago) + "=" + _dcm_total_descuentoProntoPago.ToString().Replace(",", ".") + ", " +
                                nameof(MYT_Partes.total_descuentoFinalFactura) + "=" + _dcm_total_descuentoFinalFactura.ToString().Replace(",", ".") + ", " +
                                nameof(MYT_Partes.total_descuentoFinalAlbaran) + "=" + _dcm_total_descuentoFinalAlbaran.ToString().Replace(",", ".") + ", " +
                                nameof(MYT_Partes.total_retencion) + "=" + _dcm_total_retencion.ToString().Replace(",", ".") + ", " +
                                nameof(MYT_Partes.total_Final) + "=" + _dcm_total_Final.ToString().Replace(",", ".") + 
                    " WHERE " + nameof(MYT_Partes.id) + "=" + _lng_id;

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

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }

        public INTERNO_ValorDevuelto_Modelo Actualizar_Tecnico(long _lng_id,
                                                               long _lng_idTecnico)
        {
            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(MYT_Partes) +
                    "   set " + nameof(MYT_Partes.idTecnico) + "=" + _lng_idTecnico +
                    " WHERE " + nameof(MYT_Partes.id) + "=" + _lng_id;

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

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }

        public INTERNO_ValorDevuelto_Modelo Actualizar_AlbaranCabecera( long _lng_id,
                                                                long _lng_idAlbaranCabecera)
        {
            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(MYT_Partes) +
                    "   set " + nameof(MYT_Partes.idAlbaranCabecera) + "=" + _lng_idAlbaranCabecera + 
                    " WHERE " + nameof(MYT_Partes.id) + "=" + _lng_id;

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

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }
        public INTERNO_ValorDevuelto_Modelo Quitar_AlbaranCabecera(long _lng_idAlbaranCabecera)
        {
            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(MYT_Partes) +
                    "   set " + nameof(MYT_Partes.idAlbaranCabecera) + "=null " +
                    " WHERE " + nameof(MYT_Partes.idAlbaranCabecera) + "=" + _lng_idAlbaranCabecera;

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

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }

        public INTERNO_ValorDevuelto_Modelo Actualizar_FacturaCabecera(long _lng_id,
                                                               long _lng_idFacturaCabecera)
        {
            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(MYT_Partes) +
                    "   set " + nameof(MYT_Partes.idFacturaCabecera) + "=" + _lng_idFacturaCabecera +
                    " WHERE " + nameof(MYT_Partes.id) + "=" + _lng_id;

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

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }
        public INTERNO_ValorDevuelto_Modelo Quitar_FacturaCabecera(long _lng_idFacturaCabecera)
        {
            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(MYT_Partes) +
                    "   set " + nameof(MYT_Partes.idFacturaCabecera) + "=null " +
                    " WHERE " + nameof(MYT_Partes.idFacturaCabecera) + "=" + _lng_idFacturaCabecera;

                obj_Exferia_Entities.Database.ExecuteSqlCommand(str_SQL_Update);
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(MYT_Partes_Datos) + "/" + nameof(Quitar_FacturaCabecera), 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_ValorDevuelto_Modelo = new INTERNO_ValorDevuelto_Modelo();
            mdl_ValorDevuelto_Modelo.TodoCorrecto = true;
            //Tipo de Accion que se va a realizar
            mdl_ValorDevuelto_Modelo.TipoAccion = G_ENUM_TIPOACCION.INT_ELIMINAR;

            try
            {

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

                // Ver si existe ######################################################################
                MYT_Partes mdl_MYT_Partes_Final = Obtener_Modelo_Por_Id(_lng_id);
                //######################################################################################

                if (mdl_MYT_Partes_Final != null)
                {
                    #region Update
                    string str_SQL_Update = " UPDATE " + nameof(MYT_Partes) +
                                                " SET " +
                                                nameof(MYT_Partes.fechaBorrado) + "=@fechaBorrado " +
                                            " WHERE " +
                                                nameof(MYT_Partes.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(MYT_Partes), null, mdl_MYT_Partes_Final, G_ENUM_TIPOACCION.INT_ELIMINAR, obj_Exferia_Entities);
                }

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

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

            return mdl_ValorDevuelto_Modelo;
        }

        public override INTERNO_ValorDevuelto_Modelo Borrar(long _lng_id, long _lng_idAuxiliar)
        {
            throw new NotImplementedException();
        }

        public override INTERNO_ValorDevuelto_Modelo Borrar(object _mdl_obj)
        {
            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;

                List<long> lst_idPartes = (List<long>)_mdl_obj;

                if (lst_idPartes != null & lst_idPartes.Count > 0)
                {
                    string str_Filtro_Partes = Funciones.Formar_ContenidoIN_ParaConsultaWhere(lst_idPartes);

                    //Lineas
                    string str_SQL = " UPDATE " + nameof(MYT_Partes) +
                                     " SET " +
                                               nameof(MYT_Partes.fechaBorrado) + "=@fechaBorrado " +
                                     " WHERE " + nameof(MYT_Partes.id) + " in (" + str_Filtro_Partes + ")";

                    //Parametros
                    object[] arr_Parametros_Update = new object[]
                    {
                        new SqlParameter("@fechaBorrado",  DateTime.Now)
                    };

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

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }
        #endregion

    }
}
