using Exferia_Aplicacion.General;
using Exferia_Aplicacion.Visualizacion;
using Exferia_EntityFramework;
using Exferia_Formularios;
using Exferia_General;
using Exferia_Ventas._0_Modelos;
using Exferia_Ventas._1_Datos;
using Exferia_Ventas._3_Vistas.ControlesPersonalizados_DentroPaneles;
using Exferia_Ventas.General;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Transactions;
using System.Windows.Forms;
using static Exferia_Aplicacion.General.Enumerados;

namespace Exferia_Ventas._3_Vistas.Controladoras
{
    public class P_RemesaAcumulado_AUX_1_Controladora
    {
        #region Variables Generales
        private P_RemesaAcumulado_AUX_1 g_frm_P_RemesaAcumulado_AUX_1 = null;//Variable que enlaza con la pantalla asociada
        private PE_Esperando g_frm_PE_Esperando;//Pantalla de Espera, para cuando se ejecutan tareas pesadas como cargar, guardar, etc

        //Clases de Negocio Necesarias para la carga de datos
        private VTA_RemesasAcumulados_Datos g_obj_VTA_RemesasAcumulados_Datos = new VTA_RemesasAcumulados_Datos();
        private VTA_RemesasLinea_Datos g_obj_VTA_RemesasLinea_Datos = new VTA_RemesasLinea_Datos();

        public bool g_bol_Termino_CargaDatos_Inicial = false;//Se utiliza para saber cuando se termina la carga de datos estaticos inciales

        public GEN_EjerciciosActivos_Empresa g_mdl_GEN_EjerciciosActivos_Empresa = null;
        public VTA_RemesasAcumulados g_mdl_VTA_RemesasAcumulados = null;

        public string g_str_Estado = "";
        public INTERNO_VTA_RemesasCabecera_Modelo g_mdl_INTERNO_VTA_RemesasCabecera_Modelo = null;

        //Tareea Asincrona de carga de datos
        private BackgroundWorker g_obj_TareaAsincrona_CargarDatos;

        //Tareea Asincrona de borrar de datos
        private BackgroundWorker g_obj_TareaAsincrona_BorrarDatos;

        //Saber si el Ejercicio del Documento tiene CierreAdministrativo o CierreContable
        public G_ENUM_VALIDACIONFECHAS_TIPOCIERRE g_obj_ENUM_VALIDACIONFECHAS_TIPOCIERRE = G_ENUM_VALIDACIONFECHAS_TIPOCIERRE.Ninguno;
        #endregion

        //Constructor de la clase Logica
        public P_RemesaAcumulado_AUX_1_Controladora(P_RemesaAcumulado_AUX_1 _frm_P_RemesaAcumulado_AUX_1)
        {
            g_frm_P_RemesaAcumulado_AUX_1 = _frm_P_RemesaAcumulado_AUX_1;

            g_bol_Termino_CargaDatos_Inicial = true;
        }

        public void Vaciar_Datos()
        {

            //Entidad
            g_frm_P_RemesaAcumulado_AUX_1.Exferia_F3_SoloSeleccion_Entidad.Exferia_F3_SoloSeleccion_Id = -1;
            g_frm_P_RemesaAcumulado_AUX_1.Exferia_F3_SoloSeleccion_Entidad.Exferia_F3_SoloSeleccion_Codigo = "";
            g_frm_P_RemesaAcumulado_AUX_1.Exferia_F3_SoloSeleccion_Entidad.Exferia_F3_SoloSeleccion_Descripcion = "";
            g_frm_P_RemesaAcumulado_AUX_1.Exferia_F3_SoloSeleccion_Entidad.Exferia_F3_SoloSeleccion_FechaBorrado = null;

            //CuentaBancaria
            g_frm_P_RemesaAcumulado_AUX_1.Exferia_F3_SoloSeleccion_CuentaBancaria.Exferia_F3_SoloSeleccion_Id = -1;
            g_frm_P_RemesaAcumulado_AUX_1.Exferia_F3_SoloSeleccion_CuentaBancaria.Exferia_F3_SoloSeleccion_Codigo = "";
            g_frm_P_RemesaAcumulado_AUX_1.Exferia_F3_SoloSeleccion_CuentaBancaria.Exferia_F3_SoloSeleccion_Descripcion = "";
            g_frm_P_RemesaAcumulado_AUX_1.Exferia_F3_SoloSeleccion_CuentaBancaria.Exferia_F3_SoloSeleccion_FechaBorrado = null;
            g_frm_P_RemesaAcumulado_AUX_1.Exferia_Label_SinColor_IBAN_VALOR.Text = "";

            //Datos Resumen
            g_frm_P_RemesaAcumulado_AUX_1.Exferia_TextBox_Concepto.Text = "";

            string[] str_Separador = new string[] { " [" };
            //Si ya hay valores de objeto, los elimino para rellenarlos de nuevo
            if (g_frm_P_RemesaAcumulado_AUX_1.P_Base_TituloPantalla.Split(str_Separador, StringSplitOptions.None).Count() > 1)
            {
                g_frm_P_RemesaAcumulado_AUX_1.P_Base_TituloPantalla = (g_frm_P_RemesaAcumulado_AUX_1.P_Base_TituloPantalla.Split(str_Separador, StringSplitOptions.None))[0];
            }

            //Actualizar el Boton de Seleccion de pantalla ####################################################
            Variables.G_EMS_CONTROL_MENUSUPERIOR.Update_Texto_NombrePantalla(g_frm_P_RemesaAcumulado_AUX_1.Tag.ToString());
            //#################################################################################################
        }

        #region Cargar Datos
        public void RecargarDatos()
        {
            try
            {
                //Bloquear el formulario para que no se pueda hacer nada hasta que termine
                g_frm_P_RemesaAcumulado_AUX_1.Enabled = false;

                //Mostrar la pantalla de espera
                g_frm_PE_Esperando = new PE_Esperando();

                // Si la tarea asincrona esta en marcha la paro
                if (g_obj_TareaAsincrona_CargarDatos != null)
                {
                    while (g_obj_TareaAsincrona_CargarDatos.IsBusy)
                        Application.DoEvents();
                }
                else
                {
                    g_obj_TareaAsincrona_CargarDatos = new BackgroundWorker();
                    g_obj_TareaAsincrona_CargarDatos.DoWork += new DoWorkEventHandler(TareaAsincrona_CargarDatos_DoWork);
                    g_obj_TareaAsincrona_CargarDatos.RunWorkerCompleted += new RunWorkerCompletedEventHandler(TareaAsincrona_CargarDatos_Completed);
                    g_obj_TareaAsincrona_CargarDatos.WorkerReportsProgress = false;
                }

                //Vaciar
                Vaciar_Datos();

                //(Tarea Asincrona) Cargar Datos ##################################################################
                g_obj_TareaAsincrona_CargarDatos.RunWorkerAsync();
                //#################################################################################################

                g_frm_PE_Esperando.ShowDialog();
            }
            catch (Exception ex)
            {
                g_frm_P_RemesaAcumulado_AUX_1.Enabled = true;

                if (g_frm_PE_Esperando != null)
                {
                    g_frm_PE_Esperando.Close();
                    g_frm_PE_Esperando = null;
                }

                throw new Control_Errores(Mensajes.G_STR_MENSAJES_GENERAL_ERROR_CARGARDATOSPANTALLA(), ex, nameof(P_RemesaAcumulado_AUX_1_Controladora) + "/" + nameof(RecargarDatos), true);
            }
        }
        private void TareaAsincrona_CargarDatos_DoWork(object sender, DoWorkEventArgs e)
        {
            INTERNO_ValorDevuelto_Modelo mdl_ValorDevuelto_Modelo = new INTERNO_ValorDevuelto_Modelo();
            mdl_ValorDevuelto_Modelo.TodoCorrecto = true;
            try
            {
                // Cargar Valores
                if (CargarDatos(g_frm_P_RemesaAcumulado_AUX_1.P_Base_id) == false)
                {
                    mdl_ValorDevuelto_Modelo.TodoCorrecto = false;
                    mdl_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_MENSAJES_GENERAL_ERROR_CARGARDATOSPANTALLA();
                }
            }
            catch (ThreadAbortException ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(P_RemesaAcumulado_AUX_1_Controladora) + "/" + nameof(TareaAsincrona_CargarDatos_DoWork));
                mdl_ValorDevuelto_Modelo.TodoCorrecto = false;
                mdl_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_MENSAJES_GENERAL_ERROR_CARGARDATOSPANTALLA();
            }
            catch (Control_Errores)
            {
                mdl_ValorDevuelto_Modelo.TodoCorrecto = false;
                mdl_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_MENSAJES_GENERAL_ERROR_CARGARDATOSPANTALLA();
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(P_RemesaAcumulado_AUX_1_Controladora) + "/" + nameof(TareaAsincrona_CargarDatos_DoWork));
                mdl_ValorDevuelto_Modelo.TodoCorrecto = false;
                mdl_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_MENSAJES_GENERAL_ERROR_CARGARDATOSPANTALLA();
            }
            finally
            {
                e.Result = mdl_ValorDevuelto_Modelo;
            }
        }
        private void TareaAsincrona_CargarDatos_Completed(object sender, RunWorkerCompletedEventArgs e)
        {
            if (g_frm_PE_Esperando != null)
            {
                g_frm_PE_Esperando.Close();
                g_frm_PE_Esperando = null;
            }
            //Desbloquear el Formulario
            g_frm_P_RemesaAcumulado_AUX_1.Enabled = true;

            try
            {
                INTERNO_ValorDevuelto_Modelo mdl_ValorDevuelto_Modelo_Resultado = (INTERNO_ValorDevuelto_Modelo)e.Result;

                //Mostrar si tuviera algun mensaje
                if (mdl_ValorDevuelto_Modelo_Resultado.TodoCorrecto == false)
                {
                    Mensajes.MostrarMensaje(mdl_ValorDevuelto_Modelo_Resultado.Mensaje);
                    g_frm_P_RemesaAcumulado_AUX_1.Salir_P_Base();
                }
                else
                {
                    //Si el Ejericicio Tuviera CierreAdministrativo o CierreContable tiene que bloquear todo el Formulario
                    g_obj_ENUM_VALIDACIONFECHAS_TIPOCIERRE = Datos_Generales.ComprobarBloquear_EjercicioCierre(g_frm_P_RemesaAcumulado_AUX_1,
                                                                                                      g_frm_P_RemesaAcumulado_AUX_1.P_Base_ValoresGenerales.EjercicioActivo,
                                                                                                      g_frm_P_RemesaAcumulado_AUX_1.P_Base_ValoresGenerales.Ejercicios_Listado.ToList(),
                                                                                                      g_frm_P_RemesaAcumulado_AUX_1.Exferia_Label_SinColor_Advertencia_Ejercicio,
                                                                                                      g_mdl_INTERNO_VTA_RemesasCabecera_Modelo.fecha,
                                                                                                      0);

                }
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(P_RemesaAcumulado_AUX_1_Controladora) + "/" + nameof(TareaAsincrona_CargarDatos_Completed));
                Mensajes.MostrarMensaje(Mensajes.G_STR_MENSAJES_GENERAL_ERROR_CARGARDATOSPANTALLA());

                g_frm_P_RemesaAcumulado_AUX_1.Salir_P_Base();
            }
            finally
            {
                //Bloqueo los Controles
                SoloLectura.Empezar(g_frm_P_RemesaAcumulado_AUX_1, true);
            }
        }
        public bool CargarDatos(long _lng_id)
        {
            bool bol_ValorDevuelto = true;

            try
            {
                g_mdl_VTA_RemesasAcumulados = g_obj_VTA_RemesasAcumulados_Datos.Obtener(_lng_id);

                //Si no es Nulo Cargo los Datos
                if (g_mdl_VTA_RemesasAcumulados != null)
                {
                    //Poner valores de la entidad
                    g_frm_P_RemesaAcumulado_AUX_1.Exferia_F3_SoloSeleccion_CuentaBancaria.Exferia_F3_SoloSeleccion_RELACIONADOS_Padre_OPCION = Variables.G_STR_OPCION_GTT_SOCIO;

                    //socio
                    if (g_mdl_VTA_RemesasAcumulados.idSocio != null)
                    {
                        g_frm_P_RemesaAcumulado_AUX_1.Exferia_F3_SoloSeleccion_Entidad.Exferia_F3_SoloSeleccion_Id = g_mdl_VTA_RemesasAcumulados.idSocio.Value;
                        g_frm_P_RemesaAcumulado_AUX_1.Exferia_F3_SoloSeleccion_Entidad.Exferia_F3_SoloSeleccion_Codigo = g_mdl_VTA_RemesasAcumulados.GTT_Socios.codigo;
                        g_frm_P_RemesaAcumulado_AUX_1.Exferia_F3_SoloSeleccion_Entidad.Exferia_F3_SoloSeleccion_Descripcion = g_mdl_VTA_RemesasAcumulados.GTT_Socios.razonSocial;
                        g_frm_P_RemesaAcumulado_AUX_1.Exferia_F3_SoloSeleccion_Entidad.Exferia_F3_SoloSeleccion_FechaBorrado = g_mdl_VTA_RemesasAcumulados.GTT_Socios.fechaBorrado;

                        //Poner valores de la entidad
                        g_frm_P_RemesaAcumulado_AUX_1.Exferia_F3_SoloSeleccion_CuentaBancaria.Exferia_F3_SoloSeleccion_RELACIONADOS_Padre_ID = g_mdl_VTA_RemesasAcumulados.idSocio.Value;
                    }
                    
                    //CuentaBancaria
                    if (g_mdl_VTA_RemesasAcumulados.MAE_CuentasBancariasSEPA_Cobros != null)
                    {
                        g_frm_P_RemesaAcumulado_AUX_1.Exferia_F3_SoloSeleccion_CuentaBancaria.Exferia_F3_SoloSeleccion_Id = g_mdl_VTA_RemesasAcumulados.MAE_CuentasBancariasSEPA_Cobros.id;
                        g_frm_P_RemesaAcumulado_AUX_1.Exferia_F3_SoloSeleccion_CuentaBancaria.Exferia_F3_SoloSeleccion_Codigo = g_mdl_VTA_RemesasAcumulados.MAE_CuentasBancariasSEPA_Cobros.referencia;
                        g_frm_P_RemesaAcumulado_AUX_1.Exferia_F3_SoloSeleccion_CuentaBancaria.Exferia_F3_SoloSeleccion_Descripcion = g_mdl_VTA_RemesasAcumulados.MAE_CuentasBancariasSEPA_Cobros.descripcion;
                        g_frm_P_RemesaAcumulado_AUX_1.Exferia_F3_SoloSeleccion_CuentaBancaria.Exferia_F3_SoloSeleccion_FechaBorrado = g_mdl_VTA_RemesasAcumulados.MAE_CuentasBancariasSEPA_Cobros.fechaBorrado;
                        g_frm_P_RemesaAcumulado_AUX_1.Exferia_Label_SinColor_IBAN_VALOR.Text = g_mdl_VTA_RemesasAcumulados.MAE_CuentasBancariasSEPA_Cobros.iban;

                        //Desbloquear pOsicion
                        g_frm_P_RemesaAcumulado_AUX_1.Panel_Posicion.Enabled = true;
                    }
                    else
                    {
                        g_frm_P_RemesaAcumulado_AUX_1.Exferia_F3_SoloSeleccion_CuentaBancaria.Exferia_F3_SoloSeleccion_Id = -1;
                        g_frm_P_RemesaAcumulado_AUX_1.Exferia_F3_SoloSeleccion_CuentaBancaria.Exferia_F3_SoloSeleccion_Codigo = string.Empty;
                        g_frm_P_RemesaAcumulado_AUX_1.Exferia_F3_SoloSeleccion_CuentaBancaria.Exferia_F3_SoloSeleccion_Descripcion = string.Empty;
                        g_frm_P_RemesaAcumulado_AUX_1.Exferia_F3_SoloSeleccion_CuentaBancaria.Exferia_F3_SoloSeleccion_FechaBorrado = null;
                        g_frm_P_RemesaAcumulado_AUX_1.Exferia_Label_SinColor_IBAN_VALOR.Text = "";
                    }

                    //concepto
                    g_frm_P_RemesaAcumulado_AUX_1.Exferia_TextBox_Concepto.Text = g_mdl_VTA_RemesasAcumulados.concepto;

                    //importe
                    g_frm_P_RemesaAcumulado_AUX_1.Exferia_TextBox_Importe.Text = g_mdl_VTA_RemesasAcumulados.importe.ToString();

                    //Posicion
                    if (g_mdl_VTA_RemesasAcumulados.posicion == 1)
                    {
                        g_frm_P_RemesaAcumulado_AUX_1.Exferia_RadioButton_Posicion_Recurrente.Checked = true;
                    }
                    else if (g_mdl_VTA_RemesasAcumulados.posicion == 2)
                    {
                        g_frm_P_RemesaAcumulado_AUX_1.Exferia_RadioButton_Posicion_Ultimo.Checked = true;
                    }
                    else
                    {
                        g_frm_P_RemesaAcumulado_AUX_1.Exferia_RadioButton_Posicion_Primero.Checked = true;
                    }

                    //Mostrar Campo en el Titulo de mantenimiento
                    string str_MenuSuperior_Codigo = "";
                    if (g_frm_P_RemesaAcumulado_AUX_1.g_mdl_PRV_OpcionesDetalle != null &&
                       g_frm_P_RemesaAcumulado_AUX_1.g_mdl_PRV_OpcionesDetalle.camposMostrar_TituloMantenimiento != null &&
                       g_frm_P_RemesaAcumulado_AUX_1.g_mdl_PRV_OpcionesDetalle.camposMostrar_TituloMantenimiento.Trim().Length > 0)
                    {
                        //Obtener el Array de Campos
                        string[] arr_Campos = g_frm_P_RemesaAcumulado_AUX_1.g_mdl_PRV_OpcionesDetalle.camposMostrar_TituloMantenimiento.Split(new char[] { ',' });
                        string str_ValorAMostrarFinal = "";

                        string[] str_Separador = new string[] { " [" };
                        //Si ya hay valores de objeto, los elimino para rellenarlos de nuevo
                        if (g_frm_P_RemesaAcumulado_AUX_1.P_Base_TituloPantalla.Split(str_Separador, StringSplitOptions.None).Count() > 1)
                        {
                            g_frm_P_RemesaAcumulado_AUX_1.P_Base_TituloPantalla = (g_frm_P_RemesaAcumulado_AUX_1.P_Base_TituloPantalla.Split(str_Separador, StringSplitOptions.None))[0];
                        }

                        dynamic dnm_Objeto = g_mdl_VTA_RemesasAcumulados;
                        foreach (string str_campo in arr_Campos)
                        {
                            var Valor = dnm_Objeto.GetType().GetProperty(str_campo).GetValue(dnm_Objeto, null);
                            if (Valor != null)
                            {
                                str_ValorAMostrarFinal += " " + Valor;
                            }

                        }
                        if (str_ValorAMostrarFinal != "")
                        {
                            g_frm_P_RemesaAcumulado_AUX_1.P_Base_TituloPantalla += " [" + str_ValorAMostrarFinal + "] -Modificar";
                        }
                    }

                    //Actualizar el Boton de Seleccion de pantalla ##################################################
                    Variables.G_EMS_CONTROL_MENUSUPERIOR.Add_Texto_NombrePantalla_Descripciones(g_frm_P_RemesaAcumulado_AUX_1.Tag.ToString(), str_MenuSuperior_Codigo);

                    g_frm_P_RemesaAcumulado_AUX_1.P_Base_SeModificoDatosPantalla = false;
                }
            }
            catch (Control_Errores)
            {
                bol_ValorDevuelto = false;
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(P_RemesaCabecera_Controladora) + "/" + nameof(CargarDatos));
                bol_ValorDevuelto = false;
            }

            return bol_ValorDevuelto;
        }
        #endregion

        #region Borrar Datos
        public void BorrarDatos()
        {
            try
            {
                // Preguntar si esta Seguro de Borrar
                if (Mensajes.MostrarMensaje_Pregunta(Mensajes.G_STR_MENSAJES_GENERAL_PREGUNTA_BORRAR()))
                {
                    g_frm_P_RemesaAcumulado_AUX_1.Enabled = false;
                    g_frm_PE_Esperando = new PE_Esperando(Mensajes.G_STR_ESPERANDO_BORRANDODATOS());


                    g_obj_TareaAsincrona_BorrarDatos = new BackgroundWorker();
                    g_obj_TareaAsincrona_BorrarDatos.DoWork += new DoWorkEventHandler(TareaAsincrona_BorrarDatos_DoWork);
                    g_obj_TareaAsincrona_BorrarDatos.RunWorkerCompleted += new RunWorkerCompletedEventHandler(TareaAsincrona_BorrarDatos_Completed);
                    g_obj_TareaAsincrona_BorrarDatos.RunWorkerAsync();

                    g_frm_PE_Esperando.ShowDialog();
                }
            }
            catch (Exception ex)
            {
                if (g_frm_PE_Esperando != null)
                {
                    g_frm_PE_Esperando.Close();
                    g_frm_PE_Esperando = null;
                }

                g_frm_P_RemesaAcumulado_AUX_1.Enabled = true;

                Control_Errores.Errores_Log("", ex, nameof(P_RemesaAcumulado_AUX_1_Controladora) + "/" + nameof(BorrarDatos));
                Mensajes.MostrarMensaje(Mensajes.G_STR_MENSAJES_GENERAL_ERROR_BORRARDATOSPANTALLA());
            }
        }
        private void TareaAsincrona_BorrarDatos_DoWork(object sender, DoWorkEventArgs e)
        {
            INTERNO_ValorDevuelto_Modelo mdl_ValorDevuelto_Modelo = new INTERNO_ValorDevuelto_Modelo();
            mdl_ValorDevuelto_Modelo.TodoCorrecto = true;
            try
            {
                // Borrar 
                mdl_ValorDevuelto_Modelo = BorrarDatos_Final();
            }
            catch (ThreadAbortException ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(P_RemesaAcumulado_AUX_1_Controladora) + "/" + nameof(TareaAsincrona_BorrarDatos_DoWork));

                mdl_ValorDevuelto_Modelo.TodoCorrecto = false;
                mdl_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_MENSAJES_GENERAL_ERROR_BORRARDATOSPANTALLA();
            }
            catch (Control_Errores)
            {
                mdl_ValorDevuelto_Modelo.TodoCorrecto = false;
                mdl_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_MENSAJES_GENERAL_ERROR_BORRARDATOSPANTALLA();
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(P_RemesaAcumulado_AUX_1_Controladora) + "/" + nameof(TareaAsincrona_BorrarDatos_DoWork));

                mdl_ValorDevuelto_Modelo.TodoCorrecto = false;
                mdl_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_MENSAJES_GENERAL_ERROR_BORRARDATOSPANTALLA();
            }
            finally
            {
                e.Result = mdl_ValorDevuelto_Modelo;
            }
        }
        private void TareaAsincrona_BorrarDatos_Completed(object sender, RunWorkerCompletedEventArgs e)
        {
            if (g_frm_PE_Esperando != null)
            {
                g_frm_PE_Esperando.Close();
                g_frm_PE_Esperando = null;
            }
            g_frm_P_RemesaAcumulado_AUX_1.Enabled = true;

            try
            {
                INTERNO_ValorDevuelto_Modelo mdl_ValorDevuelto_Modelo_Resultado = (INTERNO_ValorDevuelto_Modelo)e.Result;

                //Mostrar si tuviera algun mensaje
                if (mdl_ValorDevuelto_Modelo_Resultado.TodoCorrecto == false)
                {
                    if (mdl_ValorDevuelto_Modelo_Resultado.Mensaje.Trim().Length > 0)
                    {
                        Mensajes.MostrarMensaje(mdl_ValorDevuelto_Modelo_Resultado.Mensaje);
                    }
                }
                else
                {
                    // Devolver al Listado el Row Borrar
                    List<object> lst_obj = new List<object>();
                    lst_obj.Add(g_frm_P_RemesaAcumulado_AUX_1.g_mdl_PRV_OpcionesDetalle.opcion);
                    lst_obj.Add(mdl_ValorDevuelto_Modelo_Resultado.Id);

                    g_frm_P_RemesaAcumulado_AUX_1.P_Base_PantallaOrigen.P_Base_ActualizarRegistro_ConObjeto(lst_obj, mdl_ValorDevuelto_Modelo_Resultado.TipoAccion);

                    g_frm_P_RemesaAcumulado_AUX_1.P_Base_SeModificoDatosPantalla = false;
                    g_frm_P_RemesaAcumulado_AUX_1.Salir_P_Base();
                }
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(P_RemesaAcumulado_AUX_1_Controladora) + "/" + nameof(TareaAsincrona_BorrarDatos_Completed));
            }
        }
        private INTERNO_ValorDevuelto_Modelo BorrarDatos_Final()
        {
            INTERNO_ValorDevuelto_Modelo mdl_ValorDevuelto_Modelo = new INTERNO_ValorDevuelto_Modelo();
            mdl_ValorDevuelto_Modelo.TodoCorrecto = true;

            //Iniciar transaccion
            using (TransactionScope transaccion_SQL = new TransactionScope(TransactionScopeOption.Required))
            {
                try
                {
                    //primero Borro el idRemesaAcumulado de RemesaLinea
                    List<long> lst_idRemesaAcumuados = new List<long>();
                    lst_idRemesaAcumuados.Add(g_mdl_VTA_RemesasAcumulados.id);

                    mdl_ValorDevuelto_Modelo = g_obj_VTA_RemesasLinea_Datos.Borrar_idRemesaAcumulado(lst_idRemesaAcumuados);

                    if (mdl_ValorDevuelto_Modelo.TodoCorrecto)
                    {
                        mdl_ValorDevuelto_Modelo = g_obj_VTA_RemesasAcumulados_Datos.Borrar(g_mdl_VTA_RemesasAcumulados != null ? g_mdl_VTA_RemesasAcumulados.id : -1);

                        if (mdl_ValorDevuelto_Modelo.TodoCorrecto)
                        {
                            //Termino Transaccion
                            transaccion_SQL.Complete();
                        }
                    }

                    transaccion_SQL.Dispose();
                }
                catch (Control_Errores)
                {
                    mdl_ValorDevuelto_Modelo.TodoCorrecto = false;
                    mdl_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_MENSAJES_GENERAL_ERROR_BORRARDATOSPANTALLA();
                    transaccion_SQL.Dispose();
                }
                catch (Exception ex)
                {
                    Control_Errores.Errores_Log("", ex, nameof(P_RemesaAcumulado_AUX_1_Controladora) + "/" + nameof(BorrarDatos_Final));
                    mdl_ValorDevuelto_Modelo.TodoCorrecto = false;
                    mdl_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_MENSAJES_GENERAL_ERROR_BORRARDATOSPANTALLA();
                    transaccion_SQL.Dispose();
                }
            }

            return mdl_ValorDevuelto_Modelo;
        }
        #endregion

    }
}
