using Exferia_Aplicacion.General;
using Exferia_Aplicacion.Visualizacion;
using Exferia_Controles;
using Exferia_General;
using Exferia_GestionTasas._3_Vistas.Controladoras;
using Exferia_GestionTasas.General;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Exferia_GestionTasas._3_Vistas
{
    public partial class P_Socio_Procesos_GeneracionRemesa : Exferia_Formularios.P_Base_Mantenimientos
    {
        #region Variables Generales
        private P_Socio_Procesos_GeneracionRemesa_Controladora g_obj_Controladora;

        internal INTERNO_OpcionesDetalle_Modelo g_mdl_INTERNO_OpcionesDetalle_Modelo = null;

        internal List<INTERNO_Permisos_Modelo> g_lst_INTERNO_Permisos_Modelo = null;

        private bool g_bol_Termino_Modificando = false;
        #endregion

        #region Objetos en Pantalla
        //Exferia_FechaSeleccion
        internal Exferia_FechaSeleccion Exferia_FechaSeleccion_Fecha { get { return ex_usc_P_Socio_Procesos_GeneracionRemesa_Fecha; } }
        internal Exferia_FechaSeleccion Exferia_FechaSeleccion_FechaEnvioFichero { get { return ex_usc_P_Socio_Procesos_GeneracionRemesa_FechaEnvioFichero; } }
        internal Exferia_FechaSeleccion Exferia_FechaSeleccion_FechaPeriodoInicio { get { return ex_usc_P_Socio_Procesos_GeneracionRemesa_FechaPeriodoInicio; } }
        internal Exferia_FechaSeleccion Exferia_FechaSeleccion_FechaPeriodoFin { get { return ex_usc_P_Socio_Procesos_GeneracionRemesa_FechaPeriodoFin; } }
        internal Exferia_FechaSeleccion Exferia_FechaSeleccion_FechaVencimiento { get { return ex_usc_P_Socio_Procesos_GeneracionRemesa_FechaVencimiento; } }

        // Exferia_Label_SinColor
        internal Exferia_Label_SinColor Exferia_Label_SinColor_SEPA_Formato_TITULO { get { return ex_lbl_P_Socio_Procesos_GeneracionRemesa_SEPA_Formato_TITULO; } }
        internal Exferia_Label_SinColor Exferia_Label_SinColor_SEPA_FechaVto_TITULO { get { return ex_lbl_P_Socio_Procesos_GeneracionRemesa_SEPA_FechaVto_TITULO; } }

        //Exferia_F3_SoloSeleccion
        internal Exferia_F3_SoloSeleccion Exferia_F3_SoloSeleccion_ClavePredefinida_Remesa { get { return ex_usc_F3_P_Socio_Procesos_GeneracionRemesa_ClavePredefinida_Remesa; } }
        internal Exferia_F3_SoloSeleccion Exferia_F3_SoloSeleccion_ClavePredefinida_Negociacion { get { return ex_usc_F3_P_Socio_Procesos_GeneracionRemesa_ClavePredefinida_Negociacion; } }

        //Exferia_TextBox
        internal Exferia_TextBox Exferia_TextBox_Codigo { get { return ex_txt_P_Socio_Procesos_GeneracionRemesa_LiquidacionTributaria_Codigo; } }

        //Exferia_CheckBox
        internal Exferia_CheckBox Exferia_CheckBox_Recurrente { get { return ex_chk_P_CabeceraRemesa_Recurrente; } }
        internal Exferia_CheckBox Exferia_CheckBox_Unica { get { return ex_chk_P_CabeceraRemesa_Unica; } }
        internal Exferia_CheckBox Exferia_CheckBox_Modalidad1 { get { return ex_chk_P_Socio_Procesos_GeneracionRemesa_Modalidad_1; } }
        internal Exferia_CheckBox Exferia_CheckBox_Modalidad2 { get { return ex_chk_P_Socio_Procesos_GeneracionRemesa_Modalidad_2; } }
        internal Exferia_CheckBox Exferia_CheckBox_Modalidad3 { get { return ex_chk_P_Socio_Procesos_GeneracionRemesa_Modalidad_3; } }
        internal Exferia_CheckBox Exferia_CheckBox_Imprimir_Automaticamente { get { return ex_chk_P_Socio_Procesos_GeneracionRemesa_Imprimir_Automaticamente; } }
        internal Exferia_CheckBox Exferia_CheckBox_Utilizar_Bolsa { get { return ex_chk_P_Socio_Procesos_GeneracionRemesa_Utilizar_Bolsa; } }

        //Exferia_RadioButton
        internal Exferia_RadioButton Exferia_RadioButton_SEPA_SEPA { get { return ex_rdb_P_Socio_Procesos_GeneracionRemesa_SEPA; } }
        internal Exferia_RadioButton Exferia_RadioButton_SEPA_Ninguna { get { return ex_rdb_P_Socio_Procesos_GeneracionRemesa_Ninguna; } }
        internal Exferia_RadioButton Exferia_RadioButton_SEPA_FormatoCORE { get { return ex_rdb_P_Socio_Procesos_GeneracionRemesa_SEPA_FormatoCORE; } }
        internal Exferia_RadioButton Exferia_RadioButton_SEPA_FormatoCOR1 { get { return ex_rdb_P_Socio_Procesos_GeneracionRemesa_SEPA_FormatoCOR1; } }
        internal Exferia_RadioButton Exferia_RadioButton_SEPA_FormatoB2B { get { return ex_rdb_P_Socio_Procesos_GeneracionRemesa_SEPA_FormatoB2B; } }
        internal Exferia_RadioButton Exferia_RadioButton_SEPA_FechaVto_CabeceraRemesa { get { return ex_rdb_P_Socio_Procesos_GeneracionRemesa_SEPA_FechaVto_CabeceraRemesa; } }
        internal Exferia_RadioButton Exferia_RadioButton_SEPA_FechaVto_FechaVencimiento { get { return ex_rdb_P_Socio_Procesos_GeneracionRemesa_SEPA_FechaVto_FechaVencimiento; } }
        
        #endregion

        #region Constructor
        public P_Socio_Procesos_GeneracionRemesa(string _str_Opcion,
                                                INTERNO_ValoresGenerales_Modelo _mdl_INTERNO_ValoresGenerales_Modelo,
                                                DateTime _dtt_FechaTrabajo,
                                                INTERNO_OpcionesDetalle_Modelo _mdl_INTERNO_OpcionesDetalle_Modelo,
                                                List<long> _lst_ids)
        {
            InitializeComponent();

            Repintar.Empezar(this);

            CheckForIllegalCrossThreadCalls = false;

            //Instanciar Controladora
            g_obj_Controladora = new P_Socio_Procesos_GeneracionRemesa_Controladora(this);

            //Empresa seleccionada y fecha de trabajo ....................................................
            P_Base_ValoresGenerales = _mdl_INTERNO_ValoresGenerales_Modelo;
            P_Base_FechaTrabajo = _dtt_FechaTrabajo;

            //Datos de Opciones detalle
            g_mdl_INTERNO_OpcionesDetalle_Modelo = _mdl_INTERNO_OpcionesDetalle_Modelo;

            //Buscar los Permisos
            g_lst_INTERNO_Permisos_Modelo = Datos_Generales.Permisos_Buscar(_str_Opcion);

            g_obj_Controladora.g_lst_ids = _lst_ids;

            //Titulo de la Pantalla .............................................................................
            P_Base_TituloPantalla = g_mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento;

            try
            {
                // Label con Empresa Seleccionada 
                if (P_Base_ValoresGenerales != null)
                {
                    try
                    {
                        P_Base_Mantenimientos_InformacionEmpresaSeleccionada = P_Base_ValoresGenerales.str_Empresa_Descripcion + " - " +
                                                                "(" + P_Base_FechaTrabajo.ToString("dd/MM/yyyy") + ")";
                    }
                    catch (Exception ex)
                    {
                        //No se muestra mensaje pero se guarda en el log
                        Control_Errores.Errores_Log(ex.Message, ex, nameof(P_Socio_Procesos_GeneracionRemesa) + "/" + nameof(P_Socio_Procesos_GeneracionRemesa));
                    }
                }
                //....................................................................................................

                //Bloquear pantalla hasta que termine la carga por defecto .....
                Enabled = false;
                //.............................................................


                //Rellenar para los F3 .......................................
                //PREDEFINIDOCABECERA (Remesa)
                ex_usc_F3_P_Socio_Procesos_GeneracionRemesa_ClavePredefinida_Remesa.Exferia_F3_SoloSeleccion_PRINCIPAL_Opcion_BuscarDatos = Variables.G_STR_OPCION_CTA_PREDEFINIDOCABECERA;
                ex_usc_F3_P_Socio_Procesos_GeneracionRemesa_ClavePredefinida_Remesa.Exferia_F3_SoloSeleccion_PantallaContenedora = this;
                ex_usc_F3_P_Socio_Procesos_GeneracionRemesa_ClavePredefinida_Remesa.Exferia_F3_SoloSeleccion_PRINCIPAL_BUSCARTITULO = false;
                ex_usc_F3_P_Socio_Procesos_GeneracionRemesa_ClavePredefinida_Remesa.Exferia_F3_SoloSeleccion_RELACIONADOS_Padre_OPCION = Variables.G_STR_OPCION_CTA_PREDEFINIDOFICHERO;
                ex_usc_F3_P_Socio_Procesos_GeneracionRemesa_ClavePredefinida_Remesa.Exferia_F3_SoloSeleccion_RELACIONADOS_Padre_ID = Variables.G_PREDEFINIDOFICHEROS_REMESASDEEFECTOSVENTA.Id;
                ex_usc_F3_P_Socio_Procesos_GeneracionRemesa_ClavePredefinida_Remesa.Prueba();

                //PREDEFINIDOCABECERA (Negociacion)
                ex_usc_F3_P_Socio_Procesos_GeneracionRemesa_ClavePredefinida_Negociacion.Exferia_F3_SoloSeleccion_PRINCIPAL_Opcion_BuscarDatos = Variables.G_STR_OPCION_CTA_PREDEFINIDOCABECERA;
                ex_usc_F3_P_Socio_Procesos_GeneracionRemesa_ClavePredefinida_Negociacion.Exferia_F3_SoloSeleccion_PantallaContenedora = this;
                ex_usc_F3_P_Socio_Procesos_GeneracionRemesa_ClavePredefinida_Negociacion.Exferia_F3_SoloSeleccion_PRINCIPAL_BUSCARTITULO = false;
                ex_usc_F3_P_Socio_Procesos_GeneracionRemesa_ClavePredefinida_Negociacion.Exferia_F3_SoloSeleccion_RELACIONADOS_Padre_OPCION = Variables.G_STR_OPCION_CTA_PREDEFINIDOFICHERO;
                ex_usc_F3_P_Socio_Procesos_GeneracionRemesa_ClavePredefinida_Negociacion.Exferia_F3_SoloSeleccion_RELACIONADOS_Padre_ID = Variables.G_PREDEFINIDOFICHEROS_CANCELACIONRIESGOREMESAVENTA.Id;
            }
            catch (Control_Errores)
            { }
            catch (Exception ex)
            {
                //No se muestra mensaje pero se guarda en el log
                Control_Errores.Errores_Log(ex.Message, ex, nameof(P_Socio_Procesos_GeneracionRemesa) + "/" + nameof(P_Socio_Procesos_GeneracionRemesa));
            }
            finally
            {
                //Bloquear pantalla hasta que termine la carga por defecto .....
                Enabled = true;
                //.............................................................
            }
        }
        #endregion

        #region Inicio de pantalla
        private void P_Socio_Procesos_GeneracionRemesa_Shown(object sender, EventArgs e)
        {
            try
            {
                g_obj_Controladora.Datos_PorDefecto();

                ex_usc_P_Socio_Procesos_GeneracionRemesa_Fecha.Exferia_FechaSeleccion_Foco();
            }
            catch (Control_Errores)
            {
                Mensajes.MostrarMensaje(Mensajes.G_STR_MENSAJES_GENERAL_ERROR_CARGARDATOSPANTALLA());
                Salir_P_Base();
            }
            catch (Exception ex)
            {
                //No se muestra mensaje pero se guarda en el log
                Control_Errores.Errores_Log(ex.Message, ex, nameof(P_Socio_Procesos_GeneracionRemesa) + "/" + nameof(P_Socio_Procesos_GeneracionRemesa_Shown));

                Mensajes.MostrarMensaje(Mensajes.G_STR_MENSAJES_GENERAL_ERROR_CARGARDATOSPANTALLA());
                Salir_P_Base();
            }
        }
        #endregion

        #region Generacion
        private void ex_btn_P_Socio_Procesos_GeneracionRemesa_Generacion_Click(object sender, EventArgs e)
        {
            g_obj_Controladora.Generar_Remesas();
        }
        #endregion

        #region Datos SEPA
        private void ex_rdb_P_Socio_Procesos_GeneracionRemesa_Ninguna_CheckedChanged(object sender, EventArgs e)
        {
            pnl_Norma_SEPA.Visible = false;

            bool bol_Valor_Anterior = g_bol_Termino_Modificando;

            g_bol_Termino_Modificando = false;

            ex_rdb_P_Socio_Procesos_GeneracionRemesa_SEPA_FormatoCORE.Checked = false;
            ex_rdb_P_Socio_Procesos_GeneracionRemesa_SEPA_FormatoCOR1.Checked = false;
            ex_rdb_P_Socio_Procesos_GeneracionRemesa_SEPA_FormatoB2B.Checked = false;

            g_bol_Termino_Modificando = bol_Valor_Anterior;
        }
        private void ex_rdb_P_Socio_Procesos_GeneracionRemesa_SEPA_CheckedChanged(object sender, EventArgs e)
        {
            pnl_Norma_SEPA.Visible = true;
        }

        #endregion
    }
}
