using Exferia_Aplicacion.General;
using Exferia_Aplicacion.Modelos_Informes;
using Exferia_EntityFramework;
using Exferia_Informes._0_Modelos;
using Exferia_Informes._1_Datos;
using Exferia_Informes.Informes.InformContable;
using Exferia_Informes.Informes.InformesOficiales.LibroDiario;
using Exferia_Informes.Informes.InformesOficiales.LibroMayor;
using Exferia_Informes.Informes.Mandatos;
using Exferia_Informes.Informes.ZEC.Cartas;
using Exferia_Informes.Informes.ZEC.Vencimiento;
using Microsoft.Reporting.WinForms;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Printing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Exferia_Informes.Informes
{
    public class Imprimir_Directamente_Informes 
    {
        #region Variables privadas
        private INF_ConfiguracionVencimientos_Socios_Datos g_obj_INF_ConfiguracionVencimientos_Datos = new INF_ConfiguracionVencimientos_Socios_Datos();
        #endregion

        public bool Imprimir_Mandato_B2B(List<INTERNO_Impresoras_DocumentoLocal_Modelo> _lst_INTERNO_Impresoras_DocumentoLocal_Modelo, INTERNO_Informes_Vencimiento_Modelo _mdl_INTERNO_Informes_Vencimiento_Modelo, INTERNO_Informes_Acreedor_Modelo _mdl_INTERNO_Informes_Acreedor_Modelo)
        {
            bool bol_TodoCorrecto = true;
            try
            {
                if (_lst_INTERNO_Impresoras_DocumentoLocal_Modelo != null)
                {
                    //Buscar INF_ConfiguracionVencimientos_Socios
                    INF_ConfiguracionVencimientos_Socios mdl_INF_ConfiguracionVencimientos_Socios = g_obj_INF_ConfiguracionVencimientos_Datos.Obtener_Modelo_Por_IdEjercicio(_mdl_INTERNO_Informes_Vencimiento_Modelo.Ejercicio_id);

                    //Creamos el ReportViewer......................
                    ReportViewer rpv = new ReportViewer();
                    rpv.LocalReport.ReportEmbeddedResource = "Exferia_Informes.Informes.Mandatos.inf_Mandato_B2B.rdlc";

                    //Rellenar Informe
                    Rellenar_DataSet_Mandatos.Rellenar_Mandato_Simple(rpv.LocalReport.DataSources, mdl_INF_ConfiguracionVencimientos_Socios.imagen_Logo_Carta_SuperiorIzquierda, _mdl_INTERNO_Informes_Vencimiento_Modelo, _mdl_INTERNO_Informes_Acreedor_Modelo);

                    //Imprimir
                    foreach (INTERNO_Impresoras_DocumentoLocal_Modelo mdl_INTERNO_Impresoras_DocumentoLocal_Modelo in _lst_INTERNO_Impresoras_DocumentoLocal_Modelo)
                    {
                        Funciones_ImpresionDirecta obj_Funciones_ImpresionDirecta = new Funciones_ImpresionDirecta(mdl_INTERNO_Impresoras_DocumentoLocal_Modelo);
                        obj_Funciones_ImpresionDirecta.Convertir_Report_EMF(rpv.LocalReport);
                        obj_Funciones_ImpresionDirecta.Imprimir("Mandato_B2B " + _mdl_INTERNO_Informes_Vencimiento_Modelo.Entidad_roeZEC);
                    }

                    rpv.Dispose();
                }
            }
            catch (Control_Errores)
            {
                bol_TodoCorrecto = false;
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(Imprimir_Directamente_Informes) + "/" + nameof(Imprimir_Mandato_B2B));
                bol_TodoCorrecto = false;
            }

            return bol_TodoCorrecto;
        }

        public bool Imprimir_Mandato_CORE(List<INTERNO_Impresoras_DocumentoLocal_Modelo> _lst_INTERNO_Impresoras_DocumentoLocal_Modelo, INTERNO_Informes_Vencimiento_Modelo _mdl_INTERNO_Informes_Vencimiento_Modelo, INTERNO_Informes_Acreedor_Modelo _mdl_INTERNO_Informes_Acreedor_Modelo)
        {
            bool bol_TodoCorrecto = true;
            try
            {
                if (_lst_INTERNO_Impresoras_DocumentoLocal_Modelo != null)
                {
                    //Buscar INF_ConfiguracionVencimientos_Socios
                    INF_ConfiguracionVencimientos_Socios mdl_INF_ConfiguracionVencimientos_Socios = g_obj_INF_ConfiguracionVencimientos_Datos.Obtener_Modelo_Por_IdEjercicio(_mdl_INTERNO_Informes_Vencimiento_Modelo.Ejercicio_id);

                    //Creamos el ReportViewer......................
                    ReportViewer rpv = new ReportViewer();
                    rpv.LocalReport.ReportEmbeddedResource = "Exferia_Informes.Informes.Mandatos.inf_Mandato_CORE.rdlc";

                    //Rellenar Informe
                    Rellenar_DataSet_Mandatos.Rellenar_Mandato_Simple(rpv.LocalReport.DataSources, mdl_INF_ConfiguracionVencimientos_Socios.imagen_Logo_Carta_SuperiorIzquierda, _mdl_INTERNO_Informes_Vencimiento_Modelo, _mdl_INTERNO_Informes_Acreedor_Modelo);

                    //Imprimir
                    foreach (INTERNO_Impresoras_DocumentoLocal_Modelo mdl_INTERNO_Impresoras_DocumentoLocal_Modelo in _lst_INTERNO_Impresoras_DocumentoLocal_Modelo)
                    {
                        Funciones_ImpresionDirecta obj_Funciones_ImpresionDirecta = new Funciones_ImpresionDirecta(mdl_INTERNO_Impresoras_DocumentoLocal_Modelo);
                        obj_Funciones_ImpresionDirecta.Convertir_Report_EMF(rpv.LocalReport);
                        obj_Funciones_ImpresionDirecta.Imprimir("Mandato_CORE " + _mdl_INTERNO_Informes_Vencimiento_Modelo.Entidad_roeZEC);
                    }

                    rpv.Dispose();
                }
            }
            catch (Control_Errores)
            {
                bol_TodoCorrecto = false;
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(Imprimir_Directamente_Informes) + "/" + nameof(Imprimir_Mandato_CORE));
                bol_TodoCorrecto = false;
            }

            return bol_TodoCorrecto;
        }

        public bool Imprimir_CartaBajaConDomiciliacion(List<INTERNO_Impresoras_DocumentoLocal_Modelo> _lst_INTERNO_Impresoras_DocumentoLocal_Modelo, INTERNO_Informes_Vencimiento_Modelo _mdl_INTERNO_Informes_Vencimiento_Modelo)
        {
            bool bol_TodoCorrecto = true;
            try
            {
                if (_lst_INTERNO_Impresoras_DocumentoLocal_Modelo != null)
                {
                    //Buscar INF_ConfiguracionVencimientos_Socios
                    INF_ConfiguracionVencimientos_Socios mdl_INF_ConfiguracionVencimientos_Socios = g_obj_INF_ConfiguracionVencimientos_Datos.Obtener_Modelo_Por_IdEjercicio(_mdl_INTERNO_Informes_Vencimiento_Modelo.Ejercicio_id);

                    //Creamos el ReportViewer......................
                    ReportViewer rpv = new ReportViewer();
                    rpv.LocalReport.ReportEmbeddedResource = "Exferia_Informes.Informes.ZEC.Cartas.inf_Carta_Baja_ConDomiciliacion.rdlc";

                    //Rellenar Informe
                    Rellenar_DataSet_Cartas.Rellenar_CartaBaja_ConDomiciliacion(rpv.LocalReport.DataSources, mdl_INF_ConfiguracionVencimientos_Socios, _mdl_INTERNO_Informes_Vencimiento_Modelo);

                    //Imprimir
                    foreach (INTERNO_Impresoras_DocumentoLocal_Modelo mdl_INTERNO_Impresoras_DocumentoLocal_Modelo in _lst_INTERNO_Impresoras_DocumentoLocal_Modelo)
                    {
                        Funciones_ImpresionDirecta obj_Funciones_ImpresionDirecta = new Funciones_ImpresionDirecta(mdl_INTERNO_Impresoras_DocumentoLocal_Modelo);
                        obj_Funciones_ImpresionDirecta.Convertir_Report_EMF(rpv.LocalReport);
                        obj_Funciones_ImpresionDirecta.Imprimir("Carta_Baja_ConDomiciliacion " + _mdl_INTERNO_Informes_Vencimiento_Modelo.Entidad_roeZEC);
                    }

                    rpv.Dispose();
                }
            }
            catch (Control_Errores)
            {
                bol_TodoCorrecto = false;
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(Imprimir_Directamente_Informes) + "/" + nameof(Imprimir_CartaBajaConDomiciliacion));
                bol_TodoCorrecto = false;
            }

            return bol_TodoCorrecto;
        }

        public bool Imprimir_CartaBajaSinDomiciliacion(List<INTERNO_Impresoras_DocumentoLocal_Modelo> _lst_INTERNO_Impresoras_DocumentoLocal_Modelo, INTERNO_Informes_Vencimiento_Modelo _mdl_INTERNO_Informes_Vencimiento_Modelo)
        {
            bool bol_TodoCorrecto = true;
            try
            {
                if (_lst_INTERNO_Impresoras_DocumentoLocal_Modelo != null)
                {
                    //Buscar INF_ConfiguracionVencimientos_Socios
                    INF_ConfiguracionVencimientos_Socios mdl_INF_ConfiguracionVencimientos_Socios = g_obj_INF_ConfiguracionVencimientos_Datos.Obtener_Modelo_Por_IdEjercicio(_mdl_INTERNO_Informes_Vencimiento_Modelo.Ejercicio_id);

                    //Creamos el ReportViewer......................
                    ReportViewer rpv = new ReportViewer();
                    rpv.LocalReport.ReportEmbeddedResource = "Exferia_Informes.Informes.ZEC.Cartas.inf_Carta_Baja_SinDomiciliacion.rdlc";

                    //Rellenar Informe
                    Rellenar_DataSet_Cartas.Rellenar_CartaBaja_SinDomiciliacion(rpv.LocalReport.DataSources, mdl_INF_ConfiguracionVencimientos_Socios, _mdl_INTERNO_Informes_Vencimiento_Modelo);

                    //Imprimir
                    foreach (INTERNO_Impresoras_DocumentoLocal_Modelo mdl_INTERNO_Impresoras_DocumentoLocal_Modelo in _lst_INTERNO_Impresoras_DocumentoLocal_Modelo)
                    {
                        Funciones_ImpresionDirecta obj_Funciones_ImpresionDirecta = new Funciones_ImpresionDirecta(mdl_INTERNO_Impresoras_DocumentoLocal_Modelo);
                        obj_Funciones_ImpresionDirecta.Convertir_Report_EMF(rpv.LocalReport);
                        obj_Funciones_ImpresionDirecta.Imprimir("Carta_Baja_SinDomiciliacion " + _mdl_INTERNO_Informes_Vencimiento_Modelo.Entidad_roeZEC);
                    }

                    rpv.Dispose();
                }
            }
            catch (Control_Errores)
            {
                bol_TodoCorrecto = false;
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(Imprimir_Directamente_Informes) + "/" + nameof(Imprimir_CartaBajaSinDomiciliacion));
                bol_TodoCorrecto = false;
            }

            return bol_TodoCorrecto;
        }

        public bool Imprimir_CartaInformacionCargoCuenta(List<INTERNO_Impresoras_DocumentoLocal_Modelo> _lst_INTERNO_Impresoras_DocumentoLocal_Modelo, INTERNO_Informes_Vencimiento_Modelo _mdl_INTERNO_Informes_Vencimiento_Modelo)
        {
            bool bol_TodoCorrecto = true;
            try
            {
                if (_lst_INTERNO_Impresoras_DocumentoLocal_Modelo != null)
                {
                    //Buscar INF_ConfiguracionVencimientos_Socios
                    INF_ConfiguracionVencimientos_Socios mdl_INF_ConfiguracionVencimientos_Socios = g_obj_INF_ConfiguracionVencimientos_Datos.Obtener_Modelo_Por_IdEjercicio(_mdl_INTERNO_Informes_Vencimiento_Modelo.Ejercicio_id);

                    //Creamos el ReportViewer......................
                    ReportViewer rpv = new ReportViewer();
                    rpv.LocalReport.ReportEmbeddedResource = "Exferia_Informes.Informes.ZEC.Cartas.inf_Carta_InformacionCargoCuenta.rdlc";

                    //Rellenar Informe
                    Rellenar_DataSet_Cartas.Rellenar_InformacionCargoCuenta(rpv.LocalReport.DataSources, mdl_INF_ConfiguracionVencimientos_Socios, _mdl_INTERNO_Informes_Vencimiento_Modelo);

                    //Imprimir
                    foreach (INTERNO_Impresoras_DocumentoLocal_Modelo mdl_INTERNO_Impresoras_DocumentoLocal_Modelo in _lst_INTERNO_Impresoras_DocumentoLocal_Modelo)
                    {
                        Funciones_ImpresionDirecta obj_Funciones_ImpresionDirecta = new Funciones_ImpresionDirecta(mdl_INTERNO_Impresoras_DocumentoLocal_Modelo);
                        obj_Funciones_ImpresionDirecta.Convertir_Report_EMF(rpv.LocalReport);
                        obj_Funciones_ImpresionDirecta.Imprimir("Carta_InformacionCargoCuenta " + _mdl_INTERNO_Informes_Vencimiento_Modelo.Entidad_roeZEC);
                    }

                    rpv.Dispose();
                }
            }
            catch (Control_Errores)
            {
                bol_TodoCorrecto = false;
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(Imprimir_Directamente_Informes) + "/" + nameof(Imprimir_CartaInformacionCargoCuenta));
                bol_TodoCorrecto = false;
            }

            return bol_TodoCorrecto;
        }

        public bool Imprimir_CartaInicial(List<INTERNO_Impresoras_DocumentoLocal_Modelo> _lst_INTERNO_Impresoras_DocumentoLocal_Modelo, INTERNO_Informes_Vencimiento_Modelo _mdl_INTERNO_Informes_Vencimiento_Modelo)
        {
            bool bol_TodoCorrecto = true;
            try
            {
                if (_lst_INTERNO_Impresoras_DocumentoLocal_Modelo != null)
                {
                    //Buscar INF_ConfiguracionVencimientos_Socios
                    INF_ConfiguracionVencimientos_Socios mdl_INF_ConfiguracionVencimientos_Socios = g_obj_INF_ConfiguracionVencimientos_Datos.Obtener_Modelo_Por_IdEjercicio(_mdl_INTERNO_Informes_Vencimiento_Modelo.Ejercicio_id);

                    //Creamos el ReportViewer......................
                    ReportViewer rpv = new ReportViewer();
                    rpv.LocalReport.ReportEmbeddedResource = "Exferia_Informes.Informes.ZEC.Cartas.inf_Carta_Inicial.rdlc";

                    //Rellenar Informe
                    Rellenar_DataSet_Cartas.Rellenar_CartaInicial(rpv.LocalReport.DataSources, mdl_INF_ConfiguracionVencimientos_Socios, _mdl_INTERNO_Informes_Vencimiento_Modelo.Ejercicio_Anyo);

                    //Imprimir
                    foreach (INTERNO_Impresoras_DocumentoLocal_Modelo mdl_INTERNO_Impresoras_DocumentoLocal_Modelo in _lst_INTERNO_Impresoras_DocumentoLocal_Modelo)
                    {
                        Funciones_ImpresionDirecta obj_Funciones_ImpresionDirecta = new Funciones_ImpresionDirecta(mdl_INTERNO_Impresoras_DocumentoLocal_Modelo);
                        obj_Funciones_ImpresionDirecta.Convertir_Report_EMF(rpv.LocalReport);
                        obj_Funciones_ImpresionDirecta.Imprimir("Carta_Inicial " + _mdl_INTERNO_Informes_Vencimiento_Modelo.Entidad_roeZEC);
                    }

                    rpv.Dispose();
                }
            }
            catch (Control_Errores)
            {
                bol_TodoCorrecto = false;
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(Imprimir_Directamente_Informes) + "/" + nameof(Imprimir_CartaInicial));
                bol_TodoCorrecto = false;
            }

            return bol_TodoCorrecto;
        }

        public bool Imprimir_Carta_NotificacionTasaAnual(List<INTERNO_Impresoras_DocumentoLocal_Modelo> _lst_INTERNO_Impresoras_DocumentoLocal_Modelo, INTERNO_Informes_Vencimiento_Modelo _mdl_INTERNO_Informes_Vencimiento_Modelo)
        {
            bool bol_TodoCorrecto = true;
            try
            {
                if (_lst_INTERNO_Impresoras_DocumentoLocal_Modelo != null)
                {
                    //Buscar INF_ConfiguracionVencimientos_Socios
                    INF_ConfiguracionVencimientos_Socios mdl_INF_ConfiguracionVencimientos_Socios = g_obj_INF_ConfiguracionVencimientos_Datos.Obtener_Modelo_Por_IdEjercicio(_mdl_INTERNO_Informes_Vencimiento_Modelo.Ejercicio_id);

                    //Creamos el ReportViewer......................
                    ReportViewer rpv = new ReportViewer();
                    rpv.LocalReport.ReportEmbeddedResource = "Exferia_Informes.Informes.ZEC.Cartas.inf_Carta_NotificacionTasaAnual.rdlc";

                    //Rellenar Informe
                    Rellenar_DataSet_Cartas.Rellenar_NotificacionTasaAnual(rpv.LocalReport.DataSources, mdl_INF_ConfiguracionVencimientos_Socios, _mdl_INTERNO_Informes_Vencimiento_Modelo);

                    //Imprimir
                    foreach (INTERNO_Impresoras_DocumentoLocal_Modelo mdl_INTERNO_Impresoras_DocumentoLocal_Modelo in _lst_INTERNO_Impresoras_DocumentoLocal_Modelo)
                    {
                        Funciones_ImpresionDirecta obj_Funciones_ImpresionDirecta = new Funciones_ImpresionDirecta(mdl_INTERNO_Impresoras_DocumentoLocal_Modelo);
                        obj_Funciones_ImpresionDirecta.Convertir_Report_EMF(rpv.LocalReport);
                        obj_Funciones_ImpresionDirecta.Imprimir("NotificacionTasaAnual " + _mdl_INTERNO_Informes_Vencimiento_Modelo.Entidad_roeZEC);
                    }

                    rpv.Dispose();
                }
            }
            catch (Control_Errores)
            {
                bol_TodoCorrecto = false;
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(Imprimir_Directamente_Informes) + "/" + nameof(Imprimir_Carta_NotificacionTasaAnual));
                bol_TodoCorrecto = false;
            }

            return bol_TodoCorrecto;
        }

        public bool Imprimir_Vencimiento(List<INTERNO_Impresoras_DocumentoLocal_Modelo> _lst_INTERNO_Impresoras_DocumentoLocal_Modelo, INTERNO_Informes_Vencimiento_Modelo _mdl_INTERNO_Informes_Vencimiento_Modelo, INTERNO_Informes_Acreedor_Modelo _mdl_INTERNO_Informes_Acreedor_Modelo)
        {
            bool bol_TodoCorrecto = true;
            try
            {
                if (_lst_INTERNO_Impresoras_DocumentoLocal_Modelo != null)
                {
                    //Buscar INF_ConfiguracionVencimientos_Socios
                    INF_ConfiguracionVencimientos_Socios mdl_INF_ConfiguracionVencimientos_Socios = g_obj_INF_ConfiguracionVencimientos_Datos.Obtener_Modelo_Por_IdEjercicio(_mdl_INTERNO_Informes_Vencimiento_Modelo.Ejercicio_id);

                    //Creamos el ReportViewer......................
                    ReportViewer rpv = new ReportViewer();
                    rpv.LocalReport.ReportEmbeddedResource = "Exferia_Informes.Informes.ZEC.Vencimiento.inf_Vencimientos_ZEC.rdlc";

                    //Rellenar Informe
                    Rellenar_DataSet_Vencimientos.Rellenar_Vencimiento(rpv.LocalReport.DataSources, mdl_INF_ConfiguracionVencimientos_Socios, _mdl_INTERNO_Informes_Vencimiento_Modelo, _mdl_INTERNO_Informes_Acreedor_Modelo);

                    //Imprimir
                    foreach (INTERNO_Impresoras_DocumentoLocal_Modelo mdl_INTERNO_Impresoras_DocumentoLocal_Modelo in _lst_INTERNO_Impresoras_DocumentoLocal_Modelo)
                    {
                        Funciones_ImpresionDirecta obj_Funciones_ImpresionDirecta = new Funciones_ImpresionDirecta(mdl_INTERNO_Impresoras_DocumentoLocal_Modelo);
                        obj_Funciones_ImpresionDirecta.Convertir_Report_EMF(rpv.LocalReport);
                        obj_Funciones_ImpresionDirecta.Imprimir("Vencimiento " + _mdl_INTERNO_Informes_Vencimiento_Modelo.Entidad_roeZEC);
                    }

                    rpv.Dispose();
                }
            }
            catch (Control_Errores)
            {
                bol_TodoCorrecto = false;
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(Imprimir_Directamente_Informes) + "/" + nameof(Imprimir_Vencimiento));
                bol_TodoCorrecto = false;
            }

            return bol_TodoCorrecto;
        }

        public bool Imprimir_InformeContable(List<INTERNO_Impresoras_DocumentoLocal_Modelo> _lst_INTERNO_Impresoras_DocumentoLocal_Modelo,
                                                CTA_InformesContablesCabecera _mdl_CTA_InformesContablesCabecera,
                                                Dictionary<long, decimal?> _dct_Calculos_Por_IdInformeContableLinea_Actual,
                                                GEN_Empresas _mdl_GEN_Empresas_Actual,
                                                DateTime _dtt_FechaInicio_Actual,
                                                DateTime _dtt_FechaFin_Actual,
                                                bool _bol_Comparativa,
                                                Dictionary<long, decimal?> _dct_Calculos_Por_IdInformeContableLinea_Comparativa,
                                                GEN_Empresas _mdl_GEN_Empresas_Comparativa,
                                                DateTime? _dtt_FechaInicio_Comparativa,
                                                DateTime? _dtt_FechaFin_Comparativa,
                                                string _str_Titulo,
                                                int _int_NivelAMostrar,
                                                bool _bol_MostrarDetalles,
                                                bool _bol_CuentasEnBlanco,
                                                int _int_Pagina)
        {
            bool bol_TodoCorrecto = true;
            try
            {
                if (_lst_INTERNO_Impresoras_DocumentoLocal_Modelo != null)
                {
                    //Creamos el ReportViewer......................
                    ReportViewer rpv = new ReportViewer();
                    rpv.LocalReport.ReportEmbeddedResource = "Exferia_Informes.Informes.InformeContable.inf_InformeContable.rdlc";

                    //Rellenar Informe
                    Rellenar_DataSet_InformeContable.Rellenar_InformeContable(rpv.LocalReport.DataSources,
                                                                             _mdl_CTA_InformesContablesCabecera,
                                                                             _dct_Calculos_Por_IdInformeContableLinea_Actual,
                                                                             _mdl_GEN_Empresas_Actual,
                                                                             _dtt_FechaInicio_Actual,
                                                                             _dtt_FechaFin_Actual,
                                                                             _bol_Comparativa,
                                                                             _dct_Calculos_Por_IdInformeContableLinea_Comparativa,
                                                                             _mdl_GEN_Empresas_Comparativa,
                                                                             _dtt_FechaInicio_Comparativa,
                                                                             _dtt_FechaFin_Comparativa,
                                                                             _str_Titulo,
                                                                             _int_NivelAMostrar,
                                                                             _bol_MostrarDetalles,
                                                                             _bol_CuentasEnBlanco,
                                                                             _int_Pagina);

                    //Imprimir
                    foreach (INTERNO_Impresoras_DocumentoLocal_Modelo mdl_INTERNO_Impresoras_DocumentoLocal_Modelo in _lst_INTERNO_Impresoras_DocumentoLocal_Modelo)
                    {
                        Funciones_ImpresionDirecta obj_Funciones_ImpresionDirecta = new Funciones_ImpresionDirecta(mdl_INTERNO_Impresoras_DocumentoLocal_Modelo);
                        obj_Funciones_ImpresionDirecta.Convertir_Report_EMF(rpv.LocalReport);
                        obj_Funciones_ImpresionDirecta.Imprimir("InformeContable");
                    }

                    rpv.Dispose();
                }
            }
            catch (Control_Errores)
            {
                bol_TodoCorrecto = false;
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(Imprimir_Directamente_Informes) + "/" + nameof(Imprimir_InformeContable));
                bol_TodoCorrecto = false;
            }

            return bol_TodoCorrecto;
        }

        public bool Imprimir_InformeOficial_LibroDiario(List<INTERNO_Impresoras_DocumentoLocal_Modelo> _lst_INTERNO_Impresoras_DocumentoLocal_Modelo,
                                                        int _int_TipoInforme,
                                                        GEN_Empresas _mdl_GEN_Empresas,
                                                        GEN_EjerciciosActivos_Empresa _mdl_GEN_EjerciciosActivos_Empresa,
                                                        DateTime _dtt_FechaListado,
                                                        string _str_Titulo,
                                                        bool _bolNumeracionAsientoAutomatico,
                                                        decimal _dcm_DatosIniciales_Debe,
                                                        decimal _dcm_DatosIniciales_Haber,
                                                        long? _lng_DatosIniciales_NumeroAsiento,
                                                        int? _int_DatosIniciales_Pagina,
                                                        DateTime _dtt_Criterio_FechaDesde,
                                                        DateTime _dtt_Criterio_FechaHasta,
                                                        long? _lng_Criterios_NumeroAsientoDesde,
                                                        long? _lng_Criterio_NumeroAsientoHasta,
                                                        string _str_Cuenta_Desde,
                                                        string _str_Cuenta_Hasta,
                                                        int _int_Digitos_O_Mayor,
                                                        List<INTERNO_InformeOficial_LibroDiario_Modelo> _lst_INTERNO_InformeOficial_LibroDiario_Modelo)
        {
            bool bol_TodoCorrecto = true;
            try
            {
                if (_lst_INTERNO_Impresoras_DocumentoLocal_Modelo != null)
                {
                    //Creamos el ReportViewer......................
                    ReportViewer rpv = new ReportViewer();

                    if (_int_TipoInforme==1)
                    {
                        rpv.LocalReport.ReportEmbeddedResource = "Exferia_Informes.Informes.InformesOficiales.LibroDiario.inf_InformeOficial_LibroDiario_Horizontal.rdlc";
                    }
                    else
                    {
                        rpv.LocalReport.ReportEmbeddedResource = "Exferia_Informes.Informes.InformesOficiales.LibroDiario.inf_InformeOficial_LibroDiario_Vertical.rdlc";
                    }
                   
                    //Rellenar Informe
                    Rellenar_DataSet_InformeOficial_LibroDiario.Rellenar_InformeOficial_LibroDiario(rpv.LocalReport.DataSources,
                                                                                                    _mdl_GEN_Empresas,
                                                                                                    _mdl_GEN_EjerciciosActivos_Empresa,
                                                                                                    _dtt_FechaListado,
                                                                                                    _str_Titulo,
                                                                                                    _bolNumeracionAsientoAutomatico,
                                                                                                    _dcm_DatosIniciales_Debe,
                                                                                                    _dcm_DatosIniciales_Haber,
                                                                                                    _lng_DatosIniciales_NumeroAsiento,
                                                                                                    _int_DatosIniciales_Pagina,
                                                                                                    _dtt_Criterio_FechaDesde,
                                                                                                    _dtt_Criterio_FechaHasta,
                                                                                                    _lng_Criterios_NumeroAsientoDesde,
                                                                                                    _lng_Criterio_NumeroAsientoHasta,
                                                                                                    _str_Cuenta_Desde,
                                                                                                    _str_Cuenta_Hasta,
                                                                                                    _int_Digitos_O_Mayor,
                                                                                                    _lst_INTERNO_InformeOficial_LibroDiario_Modelo);

                    //Imprimir
                    foreach (INTERNO_Impresoras_DocumentoLocal_Modelo mdl_INTERNO_Impresoras_DocumentoLocal_Modelo in _lst_INTERNO_Impresoras_DocumentoLocal_Modelo)
                    {
                        Funciones_ImpresionDirecta obj_Funciones_ImpresionDirecta = new Funciones_ImpresionDirecta(mdl_INTERNO_Impresoras_DocumentoLocal_Modelo);
                        obj_Funciones_ImpresionDirecta.Convertir_Report_EMF(rpv.LocalReport);
                        obj_Funciones_ImpresionDirecta.Imprimir("InformeOficial_LibroDiario");
                    }

                    rpv.Dispose();
                }
            }
            catch (Control_Errores)
            {
                bol_TodoCorrecto = false;
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(Imprimir_Directamente_Informes) + "/" + nameof(Imprimir_InformeOficial_LibroDiario));
                bol_TodoCorrecto = false;
            }

            return bol_TodoCorrecto;
        }

        public bool Imprimir_InformeOficial_LibroMayor(List<INTERNO_Impresoras_DocumentoLocal_Modelo> _lst_INTERNO_Impresoras_DocumentoLocal_Modelo,
                                                                    GEN_Empresas _mdl_GEN_Empresas,
                                                                    GEN_EjerciciosActivos_Empresa _mdl_GEN_EjerciciosActivos_Empresa,
                                                                    DateTime _dtt_FechaListado,
                                                                    string _str_Titulo,
                                                                    bool _bol_CuentaPorHoja,
                                                                    int? _int_DatosIniciales_Pagina,
                                                                    DateTime _dtt_Criterio_FechaDesde,
                                                                    DateTime _dtt_Criterio_FechaHasta,
                                                                    string _str_Cuenta_Desde,
                                                                    string _str_Cuenta_Hasta,
                                                                    List<INTERNO_InformeOficial_LibroMayor_Anterior_Modelo> _lst_INTERNO_InformeOficial_LibroMayor_Anterior_Modelo,
                                                                    List<INTERNO_InformeOficial_LibroMayor_Modelo> _lst_INTERNO_InformeOficial_LibroMayor_Modelo)
        {
            bool bol_TodoCorrecto = true;
            try
            {
                if (_lst_INTERNO_Impresoras_DocumentoLocal_Modelo != null)
                {
                    //Creamos el ReportViewer......................
                    ReportViewer rpv = new ReportViewer();
                    rpv.LocalReport.ReportEmbeddedResource = "Exferia_Informes.Informes.InformesOficiales.LibroMayor.inf_InformeOficial_LibroMayor.rdlc";

                    //Rellenar Informe
                    Rellenar_DataSet_InformeOficial_LibroMayor.Rellenar_InformeOficial_LibroMayor(rpv.LocalReport.DataSources,
                                                                                                   _mdl_GEN_Empresas,
                                                                                                    _mdl_GEN_EjerciciosActivos_Empresa,
                                                                                                    _dtt_FechaListado,
                                                                                                    _str_Titulo,
                                                                                                    _bol_CuentaPorHoja,
                                                                                                    _int_DatosIniciales_Pagina,
                                                                                                    _dtt_Criterio_FechaDesde,
                                                                                                    _dtt_Criterio_FechaHasta,
                                                                                                    _str_Cuenta_Desde,
                                                                                                    _str_Cuenta_Hasta,
                                                                                                    _lst_INTERNO_InformeOficial_LibroMayor_Anterior_Modelo,
                                                                                                    _lst_INTERNO_InformeOficial_LibroMayor_Modelo);

                    //Imprimir
                    foreach (INTERNO_Impresoras_DocumentoLocal_Modelo mdl_INTERNO_Impresoras_DocumentoLocal_Modelo in _lst_INTERNO_Impresoras_DocumentoLocal_Modelo)
                    {
                        Funciones_ImpresionDirecta obj_Funciones_ImpresionDirecta = new Funciones_ImpresionDirecta(mdl_INTERNO_Impresoras_DocumentoLocal_Modelo);
                        obj_Funciones_ImpresionDirecta.Convertir_Report_EMF(rpv.LocalReport);
                        obj_Funciones_ImpresionDirecta.Imprimir("InformeOficial_LibroMayor");
                    }

                    rpv.Dispose();
                }
            }
            catch (Control_Errores)
            {
                bol_TodoCorrecto = false;
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(Imprimir_Directamente_Informes) + "/" + nameof(Imprimir_InformeOficial_LibroMayor));
                bol_TodoCorrecto = false;
            }

            return bol_TodoCorrecto;
        }

        public bool Imprimir_InformeOficial_BalancesSumasYSaldos(List<INTERNO_Impresoras_DocumentoLocal_Modelo> _lst_INTERNO_Impresoras_DocumentoLocal_Modelo,
                                                                    GEN_Empresas _mdl_GEN_Empresas,
                                                                    GEN_EjerciciosActivos_Empresa _mdl_GEN_EjerciciosActivos_Empresa,
                                                                    DateTime _dtt_FechaListado,
                                                                    string _str_Titulo,
                                                                    int? _int_DatosIniciales_Pagina,
                                                                    DateTime _dtt_Criterio_FechaDesde,
                                                                    DateTime _dtt_Criterio_FechaHasta,
                                                                    string _str_Cuenta_Desde,
                                                                    string _str_Cuenta_Hasta,
                                                                    List<INTERNO_InformeOficial_BalancesSumasYSaldos_Modelo> _lst_INTERNO_InformeOficial_BalancesSumasYSaldos_Modelo,
                                                                    List<CTA_PlanGeneralContable> _lst_CTA_PlanGeneralContable)
        {
            bool bol_TodoCorrecto = true;
            try
            {
                if (_lst_INTERNO_Impresoras_DocumentoLocal_Modelo != null)
                {
                    //Creamos el ReportViewer......................
                    ReportViewer rpv = new ReportViewer();
                    rpv.LocalReport.ReportEmbeddedResource = "Exferia_Informes.Informes.InformesOficiales.BalancesSumasYSaldos.inf_InformeOficial_BalancesSumasYSaldos.rdlc";

                    //Rellenar Informe
                    Rellenar_DataSet_InformeOficial_BalancesSumasYSaldos.Rellenar_InformeOficial_BalancesSumasYSaldos(rpv.LocalReport.DataSources,
                                                                                                                       _mdl_GEN_Empresas,
                                                                                                                        _mdl_GEN_EjerciciosActivos_Empresa,
                                                                                                                        _dtt_FechaListado,
                                                                                                                        _str_Titulo,
                                                                                                                        _int_DatosIniciales_Pagina,
                                                                                                                        _dtt_Criterio_FechaDesde,
                                                                                                                        _dtt_Criterio_FechaHasta,
                                                                                                                        _str_Cuenta_Desde,
                                                                                                                        _str_Cuenta_Hasta,
                                                                                                                        _lst_INTERNO_InformeOficial_BalancesSumasYSaldos_Modelo,
                                                                                                                        _lst_CTA_PlanGeneralContable);

                    //Imprimir
                    foreach (INTERNO_Impresoras_DocumentoLocal_Modelo mdl_INTERNO_Impresoras_DocumentoLocal_Modelo in _lst_INTERNO_Impresoras_DocumentoLocal_Modelo)
                    {
                        Funciones_ImpresionDirecta obj_Funciones_ImpresionDirecta = new Funciones_ImpresionDirecta(mdl_INTERNO_Impresoras_DocumentoLocal_Modelo);
                        obj_Funciones_ImpresionDirecta.Convertir_Report_EMF(rpv.LocalReport);
                        obj_Funciones_ImpresionDirecta.Imprimir("InformeOficial_LibroMayor");
                    }

                    rpv.Dispose();
                }
            }
            catch (Control_Errores)
            {
                bol_TodoCorrecto = false;
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(Imprimir_Directamente_Informes) + "/" + nameof(Imprimir_InformeOficial_BalancesSumasYSaldos));
                bol_TodoCorrecto = false;
            }

            return bol_TodoCorrecto;
        }
    }
}
