private async void TxtIdentificacion_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((int)e.KeyChar == (int)Keys.Enter)
            {
                if (!string.IsNullOrEmpty(this.txtIdentificacion.Text))
                {
                    var(rpta, dt) =
                        await NDireccion_clientes.BuscarDirecciones("IDENTIFICACION CLIENTE", this.txtIdentificacion.Text);

                    if (dt != null)
                    {
                        Mensajes.MensajeInformacion("El cliente ya existe, se pondrán los datos automáticamente", "Entendido");

                        Direccion_clientes direccion = new Direccion_clientes(dt.Rows[0]);

                        this.txtNombres.Text             = direccion.Usuario.Nombres;
                        this.txtApellidos.Text           = direccion.Usuario.Apellidos;
                        this.txtTelCliente.Text          = direccion.Usuario.Celular;
                        this.txtDireccionResidencia.Text = direccion.Direccion;
                    }
                }
            }
        }
        private async void BtnSave_Click(object sender, EventArgs e)
        {
            try
            {
                var(result, usuario, direccion, venta, agendamiento) = await this.Comprobaciones();

                if (result)
                {
                    MensajeEspera.ShowWait("Guardando...");
                    List <string> errores = new List <string>();
                    string        rpta    = "";

                    if (this.IsEditar)
                    {
                        rpta = NUsuarios.EditarUsuario(usuario.Id_usuario, usuario);
                    }
                    else
                    {
                        rpta = NUsuarios.InsertarUsuario(out int id_usuario, usuario);
                        direccion.Id_usuario = id_usuario;
                        venta.Id_cliente     = id_usuario;
                        usuario.Id_usuario   = id_usuario;
                    }

                    if (rpta.Equals("OK"))
                    {
                        if (this.IsEditar)
                        {
                            rpta = NDireccion_clientes.EditarDireccion(direccion.Id_direccion, direccion);
                        }
                        else
                        {
                            rpta = NDireccion_clientes.InsertarDireccion(out int id_direccion, direccion);
                            venta.Id_direccion = id_direccion;
                        }

                        if (rpta.Equals("OK"))
                        {
                            if (this.IsEditar)
                            {
                                rpta = NVentas.EditarVenta(venta.Id_venta, venta);
                            }
                            else
                            {
                                rpta           = NVentas.InsertarVenta(out int id_venta, venta);
                                venta.Id_venta = id_venta;
                            }

                            if (rpta.Equals("OK"))
                            {
                                if (this.rdActual.Checked && !this.IsEditar && this.chkDescontar.Checked)
                                {
                                    foreach (Articulos art in this.ArticulosSelected)
                                    {
                                        Detalle_articulos_venta detalle = new Detalle_articulos_venta
                                        {
                                            Articulo          = art,
                                            Id_articulo       = art.Id_articulo,
                                            Venta             = venta,
                                            Id_venta          = venta.Id_venta,
                                            Cantidad_articulo = (int)art.Cantidad_articulo,
                                            Valor_articulo    = art.Valor_articulo,
                                            Estado_detalle    = "ACTIVO",
                                        };

                                        var(rptaDetalle, id_detalle) =
                                            await NDetalle_articulos_venta.InsertarDetalle(detalle);

                                        if (!rptaDetalle.Equals("OK"))
                                        {
                                            errores.Add(rptaDetalle);
                                        }
                                    }
                                }

                                MainController main = MainController.GetInstance();

                                if (!this.IsEditar)
                                {
                                    rpta = NUsuariosVentas.InsertarUsuarioVenta(new Usuarios_ventas
                                    {
                                        Id_usuario = main.Usuario.Id_usuario,
                                        Id_venta   = venta.Id_venta,
                                    });

                                    if (rpta.Equals("OK"))
                                    {
                                        agendamiento.Id_venta = venta.Id_venta;
                                        rpta = NAgendamiento_cobros.InsertarAgendamiento(out int id_agendamiento, agendamiento);
                                        if (rpta.Equals("OK"))
                                        {
                                            MensajeEspera.CloseForm();
                                            Mensajes.MensajeInformacion("Se guardó correctamente el cliente, " +
                                                                        "número cliente: " + usuario.Id_usuario + " Número venta: " + venta.Id_venta, "Entendido");
                                            this.Close();
                                        }
                                        else
                                        {
                                            throw new Exception(rpta);
                                        }
                                    }
                                    else
                                    {
                                        throw new Exception(rpta);
                                    }
                                }
                                else
                                {
                                    //Obtener el último agendamiento
                                    var(rptaAg, dt) =
                                        await NAgendamiento_cobros.BuscarAgendamientos("ID VENTA", venta.Id_venta.ToString());

                                    if (dt != null)
                                    {
                                        agendamiento             = new Agendamiento_cobros(dt.Rows[0]);
                                        agendamiento.Valor_cobro = venta.Valor_cuota;
                                        agendamiento.Fecha_cobro = this.dateUltimoPago.Value;
                                        rptaAg = await NAgendamiento_cobros.EditarAgendamiento(agendamiento.Id_agendamiento, agendamiento);

                                        if (rptaAg != "OK")
                                        {
                                            Mensajes.MensajeInformacion("Se actualizó el cliente pero no su último pago," +
                                                                        "número cliente: " + usuario.Id_usuario + " Número venta: " + venta.Id_venta, "Entendido");
                                            this.OnRefresh?.Invoke(sender, e);
                                            this.Close();
                                        }
                                        else
                                        {
                                            Mensajes.MensajeInformacion("Se actualizó correctamente el cliente, " +
                                                                        "número cliente: " + usuario.Id_usuario + " Número venta: " + venta.Id_venta, "Entendido");
                                            this.OnRefresh?.Invoke(sender, e);
                                            this.Close();
                                        }
                                    }
                                    else
                                    {
                                        Mensajes.MensajeInformacion("Se actualizó correctamente el cliente pero no se encontraron sus agendamientos, número asignado: " + usuario.Id_usuario, "Entendido");
                                        this.OnRefresh?.Invoke(sender, e);
                                        this.Close();
                                    }
                                }
                            }
                        }
                        else
                        {
                            throw new Exception(rpta);
                        }
                    }
                    else
                    {
                        throw new Exception(rpta);
                    }
                }
                MensajeEspera.CloseForm();
            }
            catch (Exception ex)
            {
                MensajeEspera.CloseForm();
                Mensajes.MensajeErrorCompleto(this.Name, "BtnSave_Click",
                                              "Hubo un error al guardar el cliente", ex.Message);
            }
        }