using Exferia_Aplicacion.General;
using Exferia_Aplicacion.Modelos_Contabilidad;
using Exferia_Contabilidad._0_Modelos;
using Exferia_Contabilidad._1_Datos;
using Exferia_EntityFramework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Exferia_Contabilidad
{
    public class Datos_Contabilidad
    {
        #region CTA_AmortizacionesLinea
        private List<CTA_AmortizacionesLinea> CTA_AmortizacionesLinea_Obtener_Modelo_Listado_Por_IdInmovilizado(long _lng_idInmovilizado)
        {
            List<CTA_AmortizacionesLinea> lst_CTA_AmortizacionesLinea = null;
            try
            {
                CTA_AmortizacionesLinea_Datos obj_CTA_AmortizacionesLinea_Datos = new CTA_AmortizacionesLinea_Datos();

                lst_CTA_AmortizacionesLinea = obj_CTA_AmortizacionesLinea_Datos.Obtener_ModeloListado_Por_IdInmovilizado(_lng_idInmovilizado, false, false);
            }
            catch (Control_Errores)
            {
                lst_CTA_AmortizacionesLinea = null;
            }
            catch (Exception)
            {
                lst_CTA_AmortizacionesLinea = null;
            }

            return lst_CTA_AmortizacionesLinea;
        }
        private List<CTA_AmortizacionesLinea> CTA_AmortizacionesLinea_Obtener_Modelo_Listado_Por_IdInmovilizado_AUX_1(long _lng_idInmovilizado,
                                                                                                                 bool _bol_Cargar_Inmovilizado,
                                                                                                                 bool _bol_Cargar_AmortizacionCabecera)
        {
            List<CTA_AmortizacionesLinea> lst_CTA_AmortizacionesLinea = null;
            try
            {
                CTA_AmortizacionesLinea_Datos obj_CTA_AmortizacionesLinea_Datos = new CTA_AmortizacionesLinea_Datos();

                lst_CTA_AmortizacionesLinea = obj_CTA_AmortizacionesLinea_Datos.Obtener_ModeloListado_Por_IdInmovilizado(_lng_idInmovilizado, _bol_Cargar_Inmovilizado, _bol_Cargar_AmortizacionCabecera);
            }
            catch (Control_Errores)
            {
                lst_CTA_AmortizacionesLinea = null;
            }
            catch (Exception)
            {
                lst_CTA_AmortizacionesLinea = null;
            }

            return lst_CTA_AmortizacionesLinea;
        }
        #endregion

        #region CTA_ClavesAnaliticas
        private CTA_ClavesAnaliticas CTA_ClavesAnaliticas_Obtener_Modelo_Por_Id(long _lng_id)
        {
            CTA_ClavesAnaliticas mdl_CTA_ClavesAnaliticas = null;
            try
            {
                CTA_ClavesAnaliticas_Datos obj_CTA_ClavesAnaliticas_Datos = new CTA_ClavesAnaliticas_Datos();
                mdl_CTA_ClavesAnaliticas = obj_CTA_ClavesAnaliticas_Datos.Obtener_Modelo_Por_Id(_lng_id);
            }
            catch (Control_Errores)
            {
                mdl_CTA_ClavesAnaliticas = null;
            }
            catch (Exception)
            {
                mdl_CTA_ClavesAnaliticas = null;
            }

            return mdl_CTA_ClavesAnaliticas;
        }
        #endregion

        #region CTA_Departamentos
        private CTA_Departamentos CTA_Departamentos_Obtener_Modelo_Por_Id(long _lng_id)
        {
            CTA_Departamentos mdl_CTA_Departamentos = null;
            try
            {
                CTA_Departamentos_Datos obj_CTA_Departamentos_Datos = new CTA_Departamentos_Datos();

                mdl_CTA_Departamentos = obj_CTA_Departamentos_Datos.Obtener_Modelo_Por_Id(_lng_id, false);
            }
            catch (Control_Errores)
            {
                mdl_CTA_Departamentos = null;
            }
            catch (Exception)
            {
                mdl_CTA_Departamentos = null;
            }

            return mdl_CTA_Departamentos;
        }
        private CTA_Departamentos CTA_Departamentos_Obtener_Modelo_Por_Id_AUX_1(long _lng_id, bool _bol_Cargar_Departamento_emails)
        {
            CTA_Departamentos mdl_CTA_Departamentos = null;
            try
            {
                CTA_Departamentos_Datos obj_CTA_Departamentos_Datos = new CTA_Departamentos_Datos();

                mdl_CTA_Departamentos = obj_CTA_Departamentos_Datos.Obtener_Modelo_Por_Id(_lng_id, _bol_Cargar_Departamento_emails);
            }
            catch (Control_Errores)
            {
                mdl_CTA_Departamentos = null;
            }
            catch (Exception)
            {
                mdl_CTA_Departamentos = null;
            }

            return mdl_CTA_Departamentos;
        }
        private List<CTA_Departamentos> CTA_Departamentos_Obtener_Modelo_Listado_Por_Ids(List<long> _lst_ids)
        {
            List<CTA_Departamentos> lst_CTA_Departamentos = null;
            try
            {
                CTA_Departamentos_Datos obj_CTA_Departamentos_Datos = new CTA_Departamentos_Datos();

                lst_CTA_Departamentos = obj_CTA_Departamentos_Datos.Obtener_ModeloListado_Por_Ids(_lst_ids, false);

            }
            catch (Control_Errores)
            {
                lst_CTA_Departamentos = null;
            }
            catch (Exception)
            {
                lst_CTA_Departamentos = null;
            }

            return lst_CTA_Departamentos;
        }
        private List<CTA_Departamentos> CTA_Departamentos_Obtener_Modelo_Listado_Por_Ids_AUX_1(List<long> _lst_ids, bool _bol_Cargar_Departamento_emails)
        {
            List<CTA_Departamentos> lst_CTA_Departamentos = null;
            try
            {
                CTA_Departamentos_Datos obj_CTA_Departamentos_Datos = new CTA_Departamentos_Datos();

                lst_CTA_Departamentos = obj_CTA_Departamentos_Datos.Obtener_ModeloListado_Por_Ids(_lst_ids, _bol_Cargar_Departamento_emails);

            }
            catch (Control_Errores)
            {
                lst_CTA_Departamentos = null;
            }
            catch (Exception)
            {
                lst_CTA_Departamentos = null;
            }

            return lst_CTA_Departamentos;
        }
        #endregion

        #region CTA_DiarioCabecera
        private CTA_DiarioCabecera CTA_DiarioCabecera_Obtener_Modelo_Por_Id(long _lng_idDiarioCabecera)
        {
            try
            {
                CTA_DiarioCabecera_Datos obj_CTA_DiarioCabecera_Datos = new CTA_DiarioCabecera_Datos();
                return obj_CTA_DiarioCabecera_Datos.Obtener_Modelo_Por_Id(_lng_idDiarioCabecera, true);
            }
            catch (Control_Errores)
            {
                return null;
            }
            catch (Exception)
            {
                return null;
            }
        }
        private CTA_DiarioCabecera CTA_DiarioCabecera_Obtener_Modelo_Por_Id_Aux_1(long _lng_idDiarioCabecera, bool _bol_Cargar_Lineas)
        {
            try
            {
                CTA_DiarioCabecera_Datos obj_CTA_DiarioCabecera_Datos = new CTA_DiarioCabecera_Datos();
                return obj_CTA_DiarioCabecera_Datos.Obtener_Modelo_Por_Id(_lng_idDiarioCabecera, _bol_Cargar_Lineas);
            }
            catch (Control_Errores)
            {
                return null;
            }
            catch (Exception)
            {
                return null;
            }
        }
        #endregion

        #region CTA_DiarioLinea
        private List<INTERNO_Contabilidad_Extracto_Modelo> CTA_DiarioLinea_Obtener_Listado_Extractos(long _lng_idMayor,
                                                                                                        string _str_MayorCodigo,
                                                                                                        DateTime _dtt_Ejercicio_TemporadaInicio,
                                                                                                        DateTime _dtt_Ejercicio_TemporadaFin,
                                                                                                        DateTime _dtt_FechaDesde,
                                                                                                        DateTime _dtt_FechaHasta)
        {
            try
            {
                //Buscar el Ejercicio
                CTA_DiarioLinea_Datos obj_CTA_DiarioLinea_Datos = new CTA_DiarioLinea_Datos();
                return obj_CTA_DiarioLinea_Datos.Obtener_Extractos(_lng_idMayor, _str_MayorCodigo, _dtt_Ejercicio_TemporadaInicio, _dtt_Ejercicio_TemporadaFin, _dtt_FechaDesde, _dtt_FechaHasta);
            }
            catch (Control_Errores)
            {
                return null;
            }
            catch (Exception)
            {
                return null;
            }
        }

        private List<INTERNO_Contabilidad_Saldo_Modelo> CTA_DiarioLinea_Obtener_Listado_Saldo(long _lng_idMayor,
                                                                               DateTime _dtt_Ejercicio_TemporadaInicio,
                                                                               DateTime _dtt_Ejercicio_TemporadaFin)
        {
            try
            {
                //Buscar el Ejercicio
                CTA_DiarioLinea_Datos obj_CTA_DiarioLinea_Datos = new CTA_DiarioLinea_Datos();
                return obj_CTA_DiarioLinea_Datos.Obtener_Saldo(_lng_idMayor, _dtt_Ejercicio_TemporadaInicio, _dtt_Ejercicio_TemporadaFin);
            }
            catch (Control_Errores)
            {
                return null;
            }
            catch (Exception)
            {
                return null;
            }
        }

        private List<INTERNO_Contabilidad_Grupos_Modelo> CTA_DiarioLinea_Obtener_Listado_Saldo_Por_Grupos(string _str_Cuenta,
                                                                                DateTime _dtt_Ejercicio_TemporadaInicio,
                                                                                DateTime _dtt_Ejercicio_TemporadaFin)
        {
            try
            {
                //Buscar el Ejercicio
                CTA_DiarioLinea_Datos obj_CTA_DiarioLinea_Datos = new CTA_DiarioLinea_Datos();
                return obj_CTA_DiarioLinea_Datos.Obtener_Saldo_PorGrupos(_str_Cuenta, _dtt_Ejercicio_TemporadaInicio, _dtt_Ejercicio_TemporadaFin);
            }
            catch (Control_Errores)
            {
                return null;
            }
            catch (Exception)
            {
                return null;
            }
        }

        #endregion

        #region CTA_Inmovilizados
        private CTA_Inmovilizados CTA_Inmovilizados_Obtener_Modelo_Por_Id(long _lng_idInmovilizado)
        {
            CTA_Inmovilizados mdl_CTA_Inmovilizados = null;
            try
            {
                CTA_Inmovilizados_Datos obj_CTA_Inmovilizados_Datos = new CTA_Inmovilizados_Datos();

                mdl_CTA_Inmovilizados = obj_CTA_Inmovilizados_Datos.Obtener_Modelo_Por_Id(_lng_idInmovilizado);
            }
            catch (Control_Errores)
            {
                mdl_CTA_Inmovilizados = null;
            }
            catch (Exception)
            {
                mdl_CTA_Inmovilizados = null;
            }

            return mdl_CTA_Inmovilizados;
        }
        #endregion

        #region CTA_Mayor
        private CTA_Mayor CTA_Mayor_Obtener_Modelo_Por_Id(long _lng_id)
        {
            CTA_Mayor mdl_CTA_Mayor = null;
            try
            {
                CTA_Mayor_Datos obj_CTA_Mayor_Datos = new CTA_Mayor_Datos();
                mdl_CTA_Mayor = obj_CTA_Mayor_Datos.Obtener_Modelo_Por_Id(_lng_id);
            }
            catch (Control_Errores)
            {
                mdl_CTA_Mayor = null;
            }
            catch (Exception)
            {
                mdl_CTA_Mayor = null;
            }

            return mdl_CTA_Mayor;
        }
        private List<CTA_Mayor> CTA_Mayor_Obtener_Modelo_Listado_Por_Ids(List<long> _lst_Ids)
        {
            List<CTA_Mayor> lst_CTA_Mayor = null;
            try
            {
                CTA_Mayor_Datos obj_CTA_Mayor_Datos = new CTA_Mayor_Datos();
                lst_CTA_Mayor = obj_CTA_Mayor_Datos.Obtener_ModeloListado_Por_Ids(_lst_Ids);
            }
            catch (Control_Errores)
            {
                lst_CTA_Mayor = null;
            }
            catch (Exception)
            {
                lst_CTA_Mayor = null;
            }

            return lst_CTA_Mayor;
        }

        #endregion

        #region CTA_MayorAuxiliar
        private CTA_MayorAuxiliar CTA_MayorAuxiliar_Obtener_Modelo_Por_Id(long _lng_id)
        {
            CTA_MayorAuxiliar mdl_CTA_MayorAuxiliar = null;
            try
            {
                CTA_MayorAuxiliar_Datos obj_CTA_MayorAuxiliar_Datos = new CTA_MayorAuxiliar_Datos();
                mdl_CTA_MayorAuxiliar = obj_CTA_MayorAuxiliar_Datos.Obtener_Modelo_Por_Id(_lng_id);
            }
            catch (Control_Errores)
            {
                mdl_CTA_MayorAuxiliar = null;
            }
            catch (Exception)
            {
                mdl_CTA_MayorAuxiliar = null;
            }

            return mdl_CTA_MayorAuxiliar;
        }
        private List<CTA_MayorAuxiliar> CTA_MayorAuxiliar_Obtener_Modelo_Listado_Por_Ids(List<long> _lst_Ids)
        {
            List<CTA_MayorAuxiliar> lst_CTA_MayorAuxiliar = null;
            try
            {
                CTA_MayorAuxiliar_Datos obj_CTA_MayorAuxiliar_Datos = new CTA_MayorAuxiliar_Datos();
                lst_CTA_MayorAuxiliar = obj_CTA_MayorAuxiliar_Datos.Obtener_ModeloListado_Por_Ids(_lst_Ids);
            }
            catch (Control_Errores)
            {
                lst_CTA_MayorAuxiliar = null;
            }
            catch (Exception)
            {
                lst_CTA_MayorAuxiliar = null;
            }

            return lst_CTA_MayorAuxiliar;
        }
        #endregion

        #region CTA_PlanGeneralContable

        private List<INTERNO_Contabilidad_GruposSimple_Modelo> CTA_PlanGeneralContable_Obtener_Listado_Grupos_Por_Cuenta(string _str_Cuenta)
        {
            try
            {
                //Buscar el Ejercicio
                CTA_PlanGeneralContable_Datos obj_CTA_PlanGeneralContable_Datos = new CTA_PlanGeneralContable_Datos();
                return obj_CTA_PlanGeneralContable_Datos.Obtener_Grupos(_str_Cuenta);
            }
            catch (Control_Errores)
            {
                return null;
            }
            catch (Exception)
            {
                return null;
            }
        }
        #endregion

        #region CTA_PredefinidosCabeceras
        private CTA_PredefinidosCabeceras CTA_PredefinidosCabeceras_Obtener_Modelo_Por_Id(long _lng_id)
        {
            CTA_PredefinidosCabeceras mdl_CTA_PredefinidosCabeceras = null;
            try
            {
                CTA_PredefinidosCabeceras_Datos obj_CTA_PredefinidosCabeceras_Datos = new CTA_PredefinidosCabeceras_Datos();
                mdl_CTA_PredefinidosCabeceras = obj_CTA_PredefinidosCabeceras_Datos.Obtener_Modelo_Por_Id(_lng_id,
                                                                                                            false,
                                                                                                            false,
                                                                                                            false);
            }
            catch (Control_Errores)
            {
                mdl_CTA_PredefinidosCabeceras = null;
            }
            catch (Exception)
            {
                mdl_CTA_PredefinidosCabeceras = null;
            }

            return mdl_CTA_PredefinidosCabeceras;
        }
        private CTA_PredefinidosCabeceras CTA_PredefinidosCabeceras_Obtener_Modelo_Por_Id_AUX_1(long _lng_id,
                                                                                           bool _bol_Cargar_PredefenidoFichero,
                                                                                           bool _bol_Cargar_PredefenidoFecha,
                                                                                           bool _bol_Cargar_PredefenidoLineas)
        {
            CTA_PredefinidosCabeceras mdl_CTA_PredefinidosCabeceras = null;
            try
            {
                CTA_PredefinidosCabeceras_Datos obj_CTA_PredefinidosCabeceras_Datos = new CTA_PredefinidosCabeceras_Datos();
                mdl_CTA_PredefinidosCabeceras = obj_CTA_PredefinidosCabeceras_Datos.Obtener_Modelo_Por_Id(_lng_id,
                                                                                                            _bol_Cargar_PredefenidoFichero,
                                                                                                            _bol_Cargar_PredefenidoFecha,
                                                                                                            _bol_Cargar_PredefenidoLineas);
            }
            catch (Control_Errores)
            {
                mdl_CTA_PredefinidosCabeceras = null;
            }
            catch (Exception)
            {
                mdl_CTA_PredefinidosCabeceras = null;
            }

            return mdl_CTA_PredefinidosCabeceras;
        }

        private CTA_PredefinidosCabeceras CTA_PredefinidosCabeceras_Obtener_Modelo_Por_Defecto(long _lng_idPredefinidoFichero)
        {
            try
            {
                CTA_PredefinidosCabeceras_Datos obj_CTA_PredefinidosCabeceras_Datos = new CTA_PredefinidosCabeceras_Datos();
                return obj_CTA_PredefinidosCabeceras_Datos.Obtener_Modelo_Por_IdPredefinidoFichero(_lng_idPredefinidoFichero);
            }
            catch (Control_Errores)
            {
                return null;
            }
            catch (Exception)
            {
                return null;
            }
        }

        private List<CTA_PredefinidosCabeceras> CTA_PredefinidosCabeceras_Obtener_Modelo_Listado_Por_Ids(List<long> _lst_Ids)
        {
            List<CTA_PredefinidosCabeceras> lst_CTA_PredefinidosCabeceras = null;
            try
            {
                CTA_PredefinidosCabeceras_Datos obj_CTA_PredefinidosCabeceras_Datos = new CTA_PredefinidosCabeceras_Datos();
                lst_CTA_PredefinidosCabeceras = obj_CTA_PredefinidosCabeceras_Datos.Obtener_ModeloListado_Por_Ids(_lst_Ids);
            }
            catch (Control_Errores)
            {
                lst_CTA_PredefinidosCabeceras = null;
            }
            catch (Exception)
            {
                lst_CTA_PredefinidosCabeceras = null;
            }

            return lst_CTA_PredefinidosCabeceras;
        }

        #endregion

        #region CTA_VolcadoCabecera
        private List<CTA_VolcadoCabecera> CTA_VolcadoCabecera_Obtener_ModeloListado_Por_DocumentoPredefinidosFicheros(long _lng_idDocumento, List<long> _lst_idPredefinidoFichero)
        {
            try
            {
                CTA_VolcadoCabecera_Datos obj_CTA_VolcadoCabecera_Datos = new CTA_VolcadoCabecera_Datos();
                return obj_CTA_VolcadoCabecera_Datos.Obtener_ModeloListado_Por_DocumentoPredefinidosFicheros(_lng_idDocumento, _lst_idPredefinidoFichero);
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception)
            {
                throw;
            }
        }

        private bool CTA_VolcadoCabecera_Esta_Volcado_Por_Id(long _lng_idVolcadoCabecera)
        {
            try
            {
                CTA_VolcadoCabecera_Datos obj_CTA_VolcadoCabecera_Datos = new CTA_VolcadoCabecera_Datos();
                return obj_CTA_VolcadoCabecera_Datos.Esta_Volcado(_lng_idVolcadoCabecera);
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception)
            {
                throw;
            }
        }
        #endregion

        #region Accion Documentos -> Cerrar,Abrir,Volcar,Desvolcar,Exportar
        private INTERNO_ValorDevuelto_Modelo AccionDocumento_Cerrar_EXTERNO(List<long> _lst_idPredefinidoCabecera,
                                                                            long _lng_idDocumento,
                                                                            string _str_Opcion_Auxiliar,
                                                                            List<long> _lst_idDocumento_Auxiliar)
        {
            INTERNO_ValorDevuelto_Modelo mdl_INTERNO_ValorDevuelto_Modelo = new INTERNO_ValorDevuelto_Modelo();
            mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = true;
            mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = "";

            try
            {

                #region Datos de Conexion
                Funciones_FicherosXML.CargarDatosXML_ConexionBD();
                #endregion



                Funciones_Volcado obj_Funciones_Volcado = new Funciones_Volcado();
                mdl_INTERNO_ValorDevuelto_Modelo = obj_Funciones_Volcado.Cerrar_Documento(_lst_idPredefinidoCabecera,
                                                                                            _lng_idDocumento,
                                                                                            _str_Opcion_Auxiliar,
                                                                                            _lst_idDocumento_Auxiliar);
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(Datos_Contabilidad) + "/" + nameof(AccionDocumento_Cerrar_EXTERNO));

                mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
            }

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }

        private INTERNO_ValorDevuelto_Modelo AccionDocumento_Cerrar(List<long> _lst_idPredefinidoCabecera,
                                                                        long _lng_idDocumento,
                                                                        string _str_Opcion_Auxiliar,
                                                                        List<long> _lst_idDocumento_Auxiliar)
        {
            Funciones_Volcado obj_Funciones_Volcado = new Funciones_Volcado();
            return obj_Funciones_Volcado.Cerrar_Documento(_lst_idPredefinidoCabecera,
                                                        _lng_idDocumento,
                                                        _str_Opcion_Auxiliar,
                                                        _lst_idDocumento_Auxiliar);


        }
        private INTERNO_ValorDevuelto_Modelo AccionDocumento_Abrir(long _lng_idDocumento,
                                                            List<long> _lst_idPredefinidosFicheros_VolcadoCabecera,
                                                            long _lng_idVolcadoCabecera,
                                                            string _str_Opcion_Auxiliar,
                                                            List<long> _lst_idDocumento_Auxiliar,
                                                            long _lng_idPredefinidoFichero)
        {
            Funciones_Volcado obj_Funciones_Volcado = new Funciones_Volcado();
            return obj_Funciones_Volcado.Abrir_Documento(_lng_idDocumento,
                                                             _lst_idPredefinidosFicheros_VolcadoCabecera,
                                                             _lng_idVolcadoCabecera,
                                                             _str_Opcion_Auxiliar,
                                                            _lst_idDocumento_Auxiliar,
                                                             _lng_idPredefinidoFichero);


        }
        private INTERNO_ValorDevuelto_Modelo AccionDocumento_Volcar(long _lng_idVolcadoCabecera,
                                                             long _lng_idEmpresa,
                                                             long _lng_idEjercicio,
                                                             DateTime _dtt_Fecha,
                                                             List<GEN_EjerciciosActivos_Empresa> _lst_Ejercicios,
                                                             long _lng_idPredefinidoFichero,
                                                             bool _bol_CerrarPrimero,
                                                             List<long> _lst_idPredefinidoCabecera_PARACERRARDOCUMENTO,
                                                             long _lng_idDocumento_PARACERRARDOCUMENTO,
                                                             string _str_Opcion_Auxiliar_PARACERRARDOCUMENTO,
                                                             List<long> _lst_idDocumento_Auxiliar_PARACERRARDOCUMENTO)
        {
            Funciones_Volcado obj_Funciones_Volcado = new Funciones_Volcado();
            return obj_Funciones_Volcado.Volcar_Documento(_lng_idVolcadoCabecera,
                                                             _lng_idEmpresa,
                                                             _lng_idEjercicio,
                                                             _dtt_Fecha,
                                                             _lst_Ejercicios,
                                                              _lng_idPredefinidoFichero,
                                                              _bol_CerrarPrimero,
                                                              _lst_idPredefinidoCabecera_PARACERRARDOCUMENTO,
                                                              _lng_idDocumento_PARACERRARDOCUMENTO,
                                                              _str_Opcion_Auxiliar_PARACERRARDOCUMENTO,
                                                              _lst_idDocumento_Auxiliar_PARACERRARDOCUMENTO);


        }
        private INTERNO_ValorDevuelto_Modelo AccionDocumento_Desvolcar(long _lng_idVolcadoCabecera,
                                                                DateTime _dtt_Fecha,
                                                                List<GEN_EjerciciosActivos_Empresa> _lst_Ejercicios,
                                                                long _lng_idPredefinidoFichero,
                                                                List<long> _lst_idPredefinidoCabecera_PARACERRARDOCUMENTO,
                                                                long _lng_idDocumento_PARACERRARDOCUMENTO,
                                                                string _str_Opcion_Auxiliar_PARACERRARDOCUMENTO,
                                                                List<long> _lst_idDocumento_Auxiliar_PARACERRARDOCUMENTO)
        {
            Funciones_Volcado obj_Funciones_Volcado = new Funciones_Volcado();
            return obj_Funciones_Volcado.Desvolcar_Documento(_lng_idVolcadoCabecera,
                                                                 _dtt_Fecha,
                                                                _lst_Ejercicios,
                                                                 _lng_idPredefinidoFichero,
                                                                _lst_idPredefinidoCabecera_PARACERRARDOCUMENTO,
                                                                 _lng_idDocumento_PARACERRARDOCUMENTO,
                                                                _str_Opcion_Auxiliar_PARACERRARDOCUMENTO,
                                                                _lst_idDocumento_Auxiliar_PARACERRARDOCUMENTO);


        }

        private INTERNO_ValorDevuelto_Modelo AccionDocumento_Exportar_Contaplus(List<long> _lst_idsVolcadoCabecera)
        {
            Funciones_Volcado obj_Funciones_Volcado = new Funciones_Volcado();
            return obj_Funciones_Volcado.Exportar_Contaplus(_lst_idsVolcadoCabecera);
        }

        #endregion

        #region CTA_Modelo347Cabecera
        public static List<dynamic> CTA_Modelo347Cabecera_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)
        {
            try
            {
                CTA_Modelo347Cabecera_Datos obj_CTA_Modelo347Cabecera_Datos = new CTA_Modelo347Cabecera_Datos();
                return obj_CTA_Modelo347Cabecera_Datos.Obtener_Listado(_lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
            }
            catch (Control_Errores)
            {
                return null;
            }
            catch (Exception)
            {
                return null;
            }
        }
        public static List<dynamic> CTA_Modelo347Cabecera_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)
        {
            try
            {
                CTA_Modelo347Cabecera_Datos obj_CTA_Modelo347Cabecera_Datos = new CTA_Modelo347Cabecera_Datos();
                return obj_CTA_Modelo347Cabecera_Datos.Obtener_RegistroListado(_lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo, _lng_id, _lst_ids);
            }
            catch (Control_Errores)
            {
                return null;
            }
            catch (Exception)
            {
                return null;
            }
        }

        public static INTERNO_CTA_Modelo347Cabecera_Modelo CTA_Modelo347Cabecera_Obtener_Modelo(long _lng_id)
        {
            INTERNO_CTA_Modelo347Cabecera_Modelo mdl_CTA_Modelo347Cabecera = null;
            try
            {
                CTA_Modelo347Cabecera_Datos obj_CTA_MayorAuxiliar_Datos = new CTA_Modelo347Cabecera_Datos();
                mdl_CTA_Modelo347Cabecera = obj_CTA_MayorAuxiliar_Datos.Obtener(_lng_id);
            }
            catch (Control_Errores)
            {
                mdl_CTA_Modelo347Cabecera = null;
            }
            catch (Exception)
            {
                mdl_CTA_Modelo347Cabecera = null;
            }

            return mdl_CTA_Modelo347Cabecera;
        }

        public static INTERNO_ValorDevuelto_Modelo CTA_Modelo347Cabecera_Grabar(CTA_Modelo347Cabecera _mdl)
        {
            INTERNO_ValorDevuelto_Modelo mdl_INTERNO_ValorDevuelto_Modelo = null;
            try
            {
                CTA_Modelo347Cabecera_Datos obj_CTA_MayorAuxiliar_Datos = new CTA_Modelo347Cabecera_Datos();
                mdl_INTERNO_ValorDevuelto_Modelo = obj_CTA_MayorAuxiliar_Datos.Grabar(_mdl);
            }
            catch (Control_Errores)
            {
                mdl_INTERNO_ValorDevuelto_Modelo = null;
            }
            catch (Exception)
            {
                mdl_INTERNO_ValorDevuelto_Modelo = null;
            }

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }
        public static INTERNO_ValorDevuelto_Modelo CTA_Modelo347Cabecera_Borrar(List<long> lst_lng_id)
        {
            INTERNO_ValorDevuelto_Modelo mdl_INTERNO_ValorDevuelto_Modelo = null;
            try
            {
                CTA_Modelo347Cabecera_Datos obj_CTA_Modelo347Cabecera_Datos = new CTA_Modelo347Cabecera_Datos();
                mdl_INTERNO_ValorDevuelto_Modelo = obj_CTA_Modelo347Cabecera_Datos.Borrar(lst_lng_id);
            }
            catch (Control_Errores)
            {
                mdl_INTERNO_ValorDevuelto_Modelo = null;
            }
            catch (Exception)
            {
                mdl_INTERNO_ValorDevuelto_Modelo = null;
            }

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }

        public static INTERNO_ValorDevuelto_Modelo CTA_Modelo347Cabecera_ActualizarOperacionesCabecera(long idCabecera, decimal importeOperacion, long numeroOperaciones, decimal importeInmuebles, long numeroInmuebles)
        {
            INTERNO_ValorDevuelto_Modelo mdl_INTERNO_ValorDevuelto_Modelo = null;
            try
            {
                CTA_Modelo347Cabecera_Datos obj_CTA_Modelo347Cabecera_Datos = new CTA_Modelo347Cabecera_Datos();
                mdl_INTERNO_ValorDevuelto_Modelo = obj_CTA_Modelo347Cabecera_Datos.ActualizarOperacionesCabecera(idCabecera, importeOperacion, numeroOperaciones, importeInmuebles, numeroInmuebles);
            }
            catch (Control_Errores)
            {
                mdl_INTERNO_ValorDevuelto_Modelo = null;
            }
            catch (Exception)
            {
                mdl_INTERNO_ValorDevuelto_Modelo = null;
            }

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }
        #endregion CTA_Modelo347Cabecera

        #region CTA_Modelo347Lineas

        public static INTERNO_CTA_Modelo347Lineas_Modelo CTA_Modelo347Lineas_Obtener_Modelo(long _lng_id)
        {
            INTERNO_CTA_Modelo347Lineas_Modelo mdl_INTERNO_CTA_Modelo347Lineas_Modelo = null;
            try
            {
                CTA_Modelo347Lineas_Datos obj_CTA_Modelo347Lineas_Datos = new CTA_Modelo347Lineas_Datos();
                mdl_INTERNO_CTA_Modelo347Lineas_Modelo = obj_CTA_Modelo347Lineas_Datos.Obtener(_lng_id);
            }
            catch (Control_Errores)
            {
                mdl_INTERNO_CTA_Modelo347Lineas_Modelo = null;
            }
            catch (Exception)
            {
                mdl_INTERNO_CTA_Modelo347Lineas_Modelo = null;
            }

            return mdl_INTERNO_CTA_Modelo347Lineas_Modelo;
        }

        public static CTA_Modelo347Lineas CTA_Modelo347Lineas_Obtener_Modelo_Por_Id(long _lng_id)
        {
            CTA_Modelo347Lineas mdl_CTA_Modelo347Lineas = null;
            try
            {
                CTA_Modelo347Lineas_Datos obj_CTA_Modelo347Lineas_Datos = new CTA_Modelo347Lineas_Datos();
                mdl_CTA_Modelo347Lineas = obj_CTA_Modelo347Lineas_Datos.Obtener_Modelo_Por_Id(_lng_id, true, true);
            }
            catch (Control_Errores)
            {
                mdl_CTA_Modelo347Lineas = null;
            }
            catch (Exception)
            {
                mdl_CTA_Modelo347Lineas = null;
            }

            return mdl_CTA_Modelo347Lineas;
        }
        public static List<INTERNO_CTA_Modelo347Lineas_Modelo> CTA_Modelo347Lineas_Obtener_Registros_Para_Listado_Por_Modelo347(long _lng_id)
        {
            List<INTERNO_CTA_Modelo347Lineas_Modelo> lst_INTERNO_CTA_Modelo347Lineas_Modelo = null;
            try
            {
                CTA_Modelo347Lineas_Datos obj_CTA_Modelo347Lineas_Datos = new CTA_Modelo347Lineas_Datos();
                lst_INTERNO_CTA_Modelo347Lineas_Modelo = obj_CTA_Modelo347Lineas_Datos.Obtener_Registros_Para_Listado_Por_Modelo347(_lng_id, true, true);

            }
            catch (Control_Errores)
            {
                lst_INTERNO_CTA_Modelo347Lineas_Modelo = null;
            }
            catch (Exception)
            {
                lst_INTERNO_CTA_Modelo347Lineas_Modelo = null;
            }

            return lst_INTERNO_CTA_Modelo347Lineas_Modelo;
        }

        public static INTERNO_ValorDevuelto_Modelo CTA_Modelo347Lineas_Grabar(CTA_Modelo347Lineas _mdl)
        {
            INTERNO_ValorDevuelto_Modelo mdl_INTERNO_ValorDevuelto_Modelo = null;
            try
            {
                CTA_Modelo347Lineas_Datos obj_CTA_Modelo347Lineas_Datos = new CTA_Modelo347Lineas_Datos();
                mdl_INTERNO_ValorDevuelto_Modelo = obj_CTA_Modelo347Lineas_Datos.Grabar(_mdl);
            }
            catch (Control_Errores)
            {
                mdl_INTERNO_ValorDevuelto_Modelo = null;
            }
            catch (Exception)
            {
                mdl_INTERNO_ValorDevuelto_Modelo = null;
            }

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }

        public static INTERNO_ValorDevuelto_Modelo CTA_Modelo347Lineas_Grabar(List<CTA_Modelo347Lineas> _lst)
        {
            INTERNO_ValorDevuelto_Modelo mdl_INTERNO_ValorDevuelto_Modelo = null;
            try
            {
                CTA_Modelo347Lineas_Datos obj_CTA_Modelo347Lineas_Datos = new CTA_Modelo347Lineas_Datos();
                mdl_INTERNO_ValorDevuelto_Modelo = obj_CTA_Modelo347Lineas_Datos.GrabarMultiple(_lst);
            }
            catch (Control_Errores)
            {
                mdl_INTERNO_ValorDevuelto_Modelo = null;
            }
            catch (Exception)
            {
                mdl_INTERNO_ValorDevuelto_Modelo = null;
            }

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }
        public static INTERNO_ValorDevuelto_Modelo CTA_Modelo347Lineas_Borrar(List<long> lst_lng_id)
        {
            INTERNO_ValorDevuelto_Modelo mdl_INTERNO_ValorDevuelto_Modelo = null;
            try
            {
                CTA_Modelo347Lineas_Datos obj_CTA_Modelo347Lineas_Datos = new CTA_Modelo347Lineas_Datos();
                mdl_INTERNO_ValorDevuelto_Modelo = obj_CTA_Modelo347Lineas_Datos.Borrar(lst_lng_id);
            }
            catch (Control_Errores)
            {
                mdl_INTERNO_ValorDevuelto_Modelo = null;
            }
            catch (Exception)
            {
                mdl_INTERNO_ValorDevuelto_Modelo = null;
            }

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }

        #endregion CTA_Modelo347Lineas
    }
}
