private void BtnIniciar_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.VerificarEsquema())
                {
                    string rpta = "OK";
                    MensajeEspera.ShowWait("Cargando");
                    this.CrearTablaErrores();

                    if (this.VerificarClientes(out string consulta))
                    {
                        //rpta = NUsuarios.InsertarUsuarios(consulta);
                        if (rpta.Equals("OK"))
                        {
                            MensajeEspera.CloseForm();
                            Mensajes.MensajeInformacion("Se importaron los clientes correctamente", "Entendido");
                            this.Close();
                        }
                        else
                        {
                            throw new Exception("Hubo un error al insertar los clientes en la consulta masiva, " + rpta);
                        }
                    }
                    MensajeEspera.CloseForm();
                }
            }
            catch (Exception ex)
            {
                MensajeEspera.CloseForm();
                Mensajes.MensajeErrorCompleto(this.Name, "BtnIniciar_Click",
                                              "Hubo un error al cargar los clientes", ex.Message);
            }
        }
Ejemplo n.º 2
0
        private void Timer1_Tick(object sender, EventArgs e)
        {
            if (conteoBackup < 10)
            {
                switch (conteoBackup)
                {
                case 3:
                    MensajeEspera.ChangeMensaje("Recuperando base de datos...");
                    break;

                case 5:
                    MensajeEspera.ChangeMensaje("Recuperando tablas...");
                    break;

                case 8:
                    MensajeEspera.ChangeMensaje("Recuperando información...");
                    break;

                case 10:
                    MensajeEspera.ChangeMensaje("Finalizando copia...");
                    break;
                }
                conteoBackup += 1;
            }
            else
            {
                if (backupFinish)
                {
                    MensajeEspera.CloseForm();
                    this.CerrarTimer();
                }
            }
        }
Ejemplo n.º 3
0
        public void BuscarArticulos(List <ArticuloSmall> articulos)
        {
            try
            {
                if (articulos.Count > 10)
                {
                    MensajeEspera.ShowWait("Cargando");
                }

                this.panelArticulos.Enabled = true;
                //this.label1.Text = articulos.Count + " productos o artículos";
                this.panelArticulos.Limpiar();

                this.listArticulos = new List <Articulo>();
                foreach (ArticuloSmall articulo in articulos)
                {
                    object obj = (object)articulo.articulo;
                    obj = CopyDeep.Copy(obj);
                    Articulo art = (Articulo)obj;
                    listArticulos.Add(art);
                }

                this.chkSeleccionarTodos.Checked = true;

                List <ArticuloCarrito> nuevaListaSmall = new List <ArticuloCarrito>();
                foreach (Articulo art in listArticulos)
                {
                    ArticuloCarrito articulo = new ArticuloCarrito();
                    articulo.Id_articulo = art.Id_articulo;
                    articulo.AsignarDatos(art);
                    articulo.Tag = art.Id_articulo;
                    articulo.chkArticulo.Checked          = true;
                    articulo.OnChkArticuloCheckedChanged += Articulo_onChkArticuloCheckedChanged;
                    articulo.OnBtnRemoveClick            += Articulo_onBtnRemoveClick;
                    articulo.OnBtnVerPerfilClick         += Articulo_onBtnVerPerfilClick;
                    this.panelArticulos.AddControl(articulo);
                    nuevaListaSmall.Add(articulo);
                    //this.TotalValue(true, art.Precio * art.Cantidad_carrito);
                }

                this.TotalValue(false, 0);
                this.items_seleccionados = this.panelArticulos.controls.Count;
                this.groupBox1.Text      = "Productos seleccionados (" + this.items_seleccionados + ")";

                this.panelArticulos.Width = this.Width;
                this.panelArticulos.RefreshPanel(new ArticuloCarrito());
                if (articulos.Count > 10)
                {
                    MensajeEspera.CloseForm();
                }
            }
            catch (Exception ex)
            {
                MensajeEspera.CloseForm();
                Mensajes.MensajeErrorCompleto(this.Name, "BuscarArticulos",
                                              "Hubo un error al buscar artículos", ex.Message);
            }
        }
        private async void TxtPass_OnCustomKeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(Keys.Enter))
            {
                MensajeEspera.ShowWait("Iniciando...");

                var(rpta, objects) = await NCredenciales.Login(this.usuarioSelected.Celular,
                                                               this.txtPass.Texto, DateTime.Now.ToString("yyyy-MM-dd"));

                if (rpta.Equals("OK"))
                {
                    Credenciales   credencial = (Credenciales)objects[0];
                    MainController main       = MainController.GetInstance();
                    main.Usuario = credencial.Usuario;

                    if (credencial.Usuario.Tipo_usuario.Equals("TRABAJADOR CARTERAS"))
                    {
                        Turnos turno = (Turnos)objects[1];
                        main.Turno    = turno;
                        main.Id_cobro = turno.Id_cobro;
                        main.Cobro    = turno.Cobro;

                        FrmObservarArticulos frmArticulos = new FrmObservarArticulos
                        {
                            StartPosition = FormStartPosition.CenterScreen,
                            WindowState   = FormWindowState.Maximized,
                        };
                        frmArticulos.Show();
                        //frmArticulos.LoadArticulos(dtArticulos);
                        this.Hide();
                    }
                    else
                    {
                        DataTable dtSolicitudes = (DataTable)objects[1];
                        DataTable dtCobros      = (DataTable)objects[2];

                        FrmPrincipal FrmPrincipal = new FrmPrincipal
                        {
                            StartPosition = FormStartPosition.CenterScreen,
                            WindowState   = FormWindowState.Maximized,
                        };
                        FrmPrincipal.LoadCobros(dtCobros);
                        FrmPrincipal.LoadNotificaciones(dtSolicitudes);
                        FrmPrincipal.Show();
                        //FrmEstadisticasCobro.LoadArticulos(dtArticulos);
                        this.Hide();
                    }
                }
                else
                {
                    MensajeEspera.CloseForm();
                    Mensajes.MensajeInformacion(rpta, "Entendido");
                }

                MensajeEspera.CloseForm();
            }
        }
        private async void BtnIngresar_Click(object sender, EventArgs e)
        {
            try
            {
                MensajeEspera.ShowWait("Iniciando...");

                var(rpta, objects) = await NCredenciales.Login(this.usuarioSelected.Celular,
                                                               this.txtPass.Texto, DateTime.Now.ToString());

                if (rpta.Equals("OK"))
                {
                    MainController main       = MainController.GetInstance();
                    Credenciales   credencial = (Credenciales)objects[0];
                    main.Usuario = credencial.Usuario;

                    if (credencial.Usuario.Tipo_usuario.Equals("TRABAJADOR CARTERAS"))
                    {
                        Turnos turno = (Turnos)objects[1];
                        main.Turno = turno;

                        FrmObservarArticulos frmArticulos = new FrmObservarArticulos
                        {
                            StartPosition = FormStartPosition.CenterScreen,
                            WindowState   = FormWindowState.Maximized,
                        };
                        frmArticulos.Show();
                        //frmArticulos.LoadArticulos(dtArticulos);
                        this.Hide();
                    }
                    else
                    {
                        FrmPrincipal frmPrincipal = new FrmPrincipal
                        {
                            StartPosition = FormStartPosition.CenterScreen,
                            WindowState   = FormWindowState.Maximized,
                        };
                        frmPrincipal.Show();
                        //frmArticulos.LoadArticulos(dtArticulos);
                        this.Hide();
                    }
                }
                else
                {
                    MensajeEspera.CloseForm();
                    Mensajes.MensajeInformacion(rpta, "Entendido");
                }

                MensajeEspera.CloseForm();
            }
            catch (Exception ex)
            {
                MensajeEspera.CloseForm();
                Mensajes.MensajeErrorCompleto(this.Name, "BtnIngresar_Click",
                                              "Hubo un error al ingresar", ex.Message);
            }
        }
Ejemplo n.º 6
0
        private void BtnIniciar_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.VerificarEsquema())
                {
                    MensajeEspera.ShowWait("Cargando");
                    this.CrearTablaErrores();
                    List <EVehiculos> Vehiculos = new List <EVehiculos>();
                    foreach (DataRow row in this.dtVehiculosCargados.Rows)
                    {
                        int    Id_vehiculo = Convert.ToInt32(row["Codigo"]);
                        string Placa       = Convert.ToString(row["Placa"]).Trim();
                        string Propietario = Convert.ToString(row["Propietario"]).Trim();
                        string Chofer      = Convert.ToString(row["Chofer"]).Trim();
                        string Marca       = Convert.ToString(row["Marca"]).Trim();
                        string Modelo      = Convert.ToString(row["Modelo"]).Trim();
                        string Color       = Convert.ToString(row["Color"]).Trim();

                        if (!this.VerificarVehiculo(out EVehiculos eVehiculo,
                                                    Id_vehiculo, Placa, Propietario, Chofer, Marca, Modelo, Color))
                        {
                            this.AddError("No se pudieron asignar y verificar los datos para crear la entidad Vehiculo");
                            break;
                        }

                        Vehiculos.Add(eVehiculo);
                    }

                    if (Vehiculos.Count > 0)
                    {
                        string rpta =
                            EVehiculos.InsertarVehiculos(Vehiculos);
                        if (!rpta.Equals("OK"))
                        {
                            this.AddError("Hubo un error al insertar un vehículo en la base de datos, detalles: " + rpta);
                        }
                        else
                        {
                            MensajeEspera.CloseForm();
                            Mensajes.MensajeInformacion("Se importaron " + Vehiculos.Count + " vehículos.", "Entendido");
                            this.Close();
                        }
                    }

                    MensajeEspera.CloseForm();
                }
            }
            catch (Exception ex)
            {
                MensajeEspera.CloseForm();
                Mensajes.MensajeErrorCompleto(this.Name, "BtnIniciar_Click",
                                              "Hubo un error al cargar los vehículos", ex.Message);
            }
        }
Ejemplo n.º 7
0
        private void BtnAbrir_Click(object sender, EventArgs e)
        {
            if (this.EEmpleado != null)
            {
                ETurnos eTurno = new ETurnos
                {
                    EEmpleado         = this.EEmpleado,
                    Hora_inicio_turno = DateTime.Now.TimeOfDay,
                    Hora_fin_turno    = DateTime.Now.TimeOfDay,
                    Fecha_turno       = DateTime.Now,
                    Estado_turno      = "ABIERTO"
                };

                string rpta = ETurnos.InsertarTurno(eTurno, out int id_turno);
                if (rpta.Equals("OK"))
                {
                    eTurno.Id_turno   = id_turno;
                    this.ETurno       = eTurno;
                    this.DialogResult = DialogResult.OK;
                    OnAbrirTurnoSuccess?.Invoke(this, e);
                    this.Close();
                    return;
                }
                else
                {
                    Mensajes.MensajeInformacion("Hubo un error al abrir el turno, detalles: " + rpta, "Entendido");
                    return;
                }
            }

            if (this.ETurno != null)
            {
                MensajeEspera.ShowWait("Finalizando");
                this.ETurno.Estado_turno   = "CERRADO";
                this.ETurno.Hora_fin_turno = DateTime.Now.TimeOfDay;

                string rpta = ETurnos.EditarTurno(this.ETurno, this.ETurno.Id_turno);
                if (rpta.Equals("OK"))
                {
                    this.DialogResult = DialogResult.OK;
                    OnCerrarTurnoSuccess?.Invoke(this, e);
                    MensajeEspera.CloseForm();

                    this.Close();
                    return;
                }
                else
                {
                    Mensajes.MensajeInformacion("Hubo un error al cerrar el turno, detalles: " + rpta, "Entendido");
                    return;
                }
            }
        }
Ejemplo n.º 8
0
        private void BuscarArticulos(string tipo_busqueda, string texto_busqueda)
        {
            try
            {
                MensajeEspera.ShowWait("Buscando artículos");
                DataTable dtArticulos =
                    NArticulos.BuscarArticulos(tipo_busqueda, texto_busqueda, out string rpta);
                if (dtArticulos != null)
                {
                    this.panelArticles.Enabled = true;
                    this.lblResultados.Text    = "Se encontraron " + dtArticulos.Rows.Count + " artículos";
                    this.panelArticles.Limpiar();

                    foreach (DataRow row in dtArticulos.Rows)
                    {
                        int           id_articulo = Convert.ToInt32(row["Id_articulo"]);
                        ArticuloSmall articulo    = new ArticuloSmall();
                        articulo.Id_articulo = id_articulo;

                        if (this.IsVenta)
                        {
                            articulo.IsVenta       = this.IsVenta;
                            articulo.onBtnAddCart += Articulo_onBtnAddCart;
                            articulo.onBtnRemove  += Articulo_onBtnRemove;
                        }

                        articulo.AsignarDatosArticulo();
                        articulo.onBtnVerArticuloClick += Articulo_onBtnVerArticuloClick;
                        articulo.IsEditar = this.IsEditar;
                        this.panelArticles.AddControl(articulo);
                    }
                    this.panelArticles.RefreshPanel(new ArticuloSmall());
                }
                else
                {
                    this.panelArticles.Limpiar();
                    this.lblResultados.Text    = "No se encontraron artículos";
                    this.panelArticles.Enabled = false;
                }
                MensajeEspera.CloseForm();
            }
            catch (Exception ex)
            {
                MensajeEspera.CloseForm();
                Mensajes.MensajeErrorCompleto(this.Name, "BuscarArticulos",
                                              "Hubo un error al buscar artículos", ex.Message);
            }
        }
Ejemplo n.º 9
0
        private void BtnAsignarCarrera_Click(object sender, EventArgs e)
        {
            if (this.EDireccion != null && this.ECliente != null && this.EVehiculo != null)
            {
                if (int.TryParse(this.tiempoLlegada.Value.ToString(), out int tiempo_llegada))
                {
                    MensajeEspera.ShowWait("Asignando...");
                    ECarreras eCarrera = new ECarreras
                    {
                        ECliente   = this.ECliente,
                        EDireccion = this.EDireccion,
                        EVehiculo  = this.EVehiculo,
                        EEmpleado  = new EEmpleados {
                            Id_empleado = 1
                        },
                        Fecha_carrera   = DateTime.Now,
                        Hora_carrera    = DateTime.Now.ToString("HH:mm:ss"),
                        Lugar_ubicacion = this.txtLugarUbicacion.Text,
                        Tiempo_llegada  = tiempo_llegada,
                        Estado_carrera  = "PENDIENTE",
                        Observaciones   = ""
                    };

                    string rpta = ECarreras.InsertarCarrera(eCarrera, out int id_carrera);
                    if (rpta.Equals("OK"))
                    {
                        MensajeEspera.CloseForm();
                        //Mensajes.MensajeInformacion("La carrera fue aprobada con el siguiente código: " + id_carrera.ToString(),
                        //    "Entendido");
                        eCarrera.Id_carrera = id_carrera;
                        this.OnCarreraAsignada?.Invoke(eCarrera, e);
                        this.Close();
                    }
                    else
                    {
                        throw new Exception(rpta);
                    }
                }
            }
            else
            {
                Mensajes.MensajeInformacion("Verifique los datos seleccionados", "Entendido");
            }
        }
Ejemplo n.º 10
0
        private async Task LoadAgendamientos(string tipo_busqueda, string texto_busqueda)
        {
            try
            {
                MensajeEspera.ShowWait("Cargando...");
                var(rpta, dtAgendamiento) = await NAgendamiento_cobros.BuscarAgendamientos(tipo_busqueda, texto_busqueda);

                this.panelClientes.clearDataSource();
                this.positionChanged = 1;
                this.DtAgendamientos = dtAgendamiento;

                if (dtAgendamiento != null)
                {
                    List <UserControl> userControls = new List <UserControl>();

                    foreach (DataRow row in dtAgendamiento.Rows)
                    {
                        Agendamiento_cobros ag           = new Agendamiento_cobros(row);
                        ClienteSmall        clienteSmall = new ClienteSmall
                        {
                            Agendamiento = ag,
                        };
                        clienteSmall.OnRefresh += ClienteSmall_OnRefresh;
                        userControls.Add(clienteSmall);
                    }

                    this.panelClientes.PageSize             = 20;
                    this.panelClientes.OnBsPositionChanged += PaneClientes_OnBsPositionChanged;
                    this.panelClientes.SetPagedDataSource(userControls, this.bindingNavigator2);
                }

                MensajeEspera.CloseForm();
                this.Show();
            }
            catch (Exception ex)
            {
                MensajeEspera.CloseForm();
                Mensajes.MensajeErrorCompleto(this.Name, "LoadClientes",
                                              "Hubo un error al cargar los agendamientos", ex.Message);
            }
        }
Ejemplo n.º 11
0
        private async Task LoadClientes(string tipo_busqueda, string texto_busqueda1, string texto_busqueda2)
        {
            try
            {
                MensajeEspera.ShowWait("Cargando...");
                var(dtClientes, rpta) = await NUsuarios.BuscarClientes(tipo_busqueda, texto_busqueda1, texto_busqueda2);

                this.panelClientes.clearDataSource();
                this.positionChanged = 1;

                if (dtClientes != null)
                {
                    List <UserControl> userControls = new List <UserControl>();

                    foreach (DataRow row in dtClientes.Rows)
                    {
                        Ventas       venta        = new Ventas(row);
                        ClienteSmall clienteSmall = new ClienteSmall
                        {
                            Venta = venta,
                        };
                        clienteSmall.OnRefresh += ClienteSmall_OnRefresh;
                        userControls.Add(clienteSmall);
                    }

                    this.panelClientes.PageSize             = 20;
                    this.panelClientes.OnBsPositionChanged += PaneClientes_OnBsPositionChanged;
                    this.panelClientes.SetPagedDataSource(userControls, this.bindingNavigator2);
                }
                MensajeEspera.CloseForm();
            }
            catch (Exception ex)
            {
                MensajeEspera.CloseForm();
                Mensajes.MensajeErrorCompleto(this.Name, "LoadClientes",
                                              "Hubo un error al cargar los clientes", ex.Message);
            }
        }
        private void BtnInformacionPedido_Click(object sender, EventArgs e)
        {
            if (this.IsEditar)
            {
                bool result = this.dgvProductosEditar.Rows.Count > 0 ? true : false;
                if (result)
                {
                    MensajeEspera.ShowWait("Imprimiendo y finalizando");
                    DataTable TablaDetallePedido = this.tablasPedido.dtDetallePedidoEditado();
                    if (this.dgvProductosEditar.Rows.Count > 0)
                    {
                        comandas.Id_pedido = this.Id_pedido;
                        comandas.AsignarTablas(TablaDetallePedido);
                        this.tablasPedido.IsEditar = false;
                        bool   plato    = false;
                        bool   bebida   = false;
                        int    imprimir = 0;
                        string rpta     = "";
                        foreach (DataRow row in TablaDetallePedido.Rows)
                        {
                            if (row["Tipo"].Equals("PLATO"))
                            {
                                rpta = NPedido.ActualizarDetallePedido(new List <string> {
                                    Convert.ToString(this.Id_pedido),
                                    Convert.ToString(row["Id_tipo"]), "PLATO", Convert.ToString(row["Precio"]),
                                    Convert.ToString(row["Cantidad"]), Convert.ToString(row["Observaciones"]), "0", "SUMAR"
                                });
                                plato = true;
                            }
                            else
                            {
                                rpta = NPedido.ActualizarDetallePedido(new List <string> {
                                    Convert.ToString(this.Id_pedido),
                                    Convert.ToString(row["Id_tipo"]), "BEBIDA", Convert.ToString(row["Precio"]),
                                    Convert.ToString(row["Cantidad"]), Convert.ToString(row["Observaciones"]), "0", "SUMAR"
                                });
                                bebida = true;
                            }
                            if (plato && bebida)
                            {
                                break;
                            }
                        }
                        if (this.chkImprimirComandas.Checked)
                        {
                            if (plato && bebida)
                            {
                                imprimir = 2;
                            }
                            else
                            {
                                imprimir = 1;
                            }

                            comandas.ImprimirFactura(imprimir);
                        }
                    }

                    MensajeEspera.CloseForm();
                    this.DialogResult = DialogResult.OK;
                    this.Close();
                }
                else
                {
                    this.DialogResult = DialogResult.OK;
                    this.Close();
                }
            }
            else
            {
                this.contextMenuDatosPedido.IsEditar = false;
                this.SumarPrecios();
                this.containerDatosPedido.Show(btnInformacionPedido);
            }
        }
Ejemplo n.º 13
0
        private void BtnGenerarBackup_Click(object sender, EventArgs e)
        {
            backupFinish = false;
            if (this.txtDestino.Text.Equals("") | this.txtDestino.Text.Equals("Seleccionar destino") |
                this.txtOrigen.Text.Equals("") | this.txtOrigen.Text.Equals("NO DISPONIBLE"))
            {
                Mensajes.MensajeInformacion("Por favor verifique la dirección de destino y la dirección de origen", "Entendido");
                backupFinish = true;
                return;
            }

            if (this.txtNombreArchivo.Text.Equals(""))
            {
                Mensajes.MensajeInformacion("Por favor verifique el nombre del archivo", "Entendido");
                backupFinish = true;
                this.txtNombreArchivo.Focus();
                return;
            }

            MensajeEspera.ShowWait("Cargando...");
            this.timer1.Start();
            string rpta          = "OK";
            string rutaDestino   = this.txtDestino.Text;
            string rutaOrigen    = this.txtOrigen.Text;
            string nombreArchivo = this.txtNombreArchivo.Text;

            try
            {
                bool insert = true;
                if (Path.Combine(rutaDestino, nombreArchivo).Equals(rutaOrigen))
                {
                    insert = false;
                }

                if (insert)
                {
                    string extension         = "";
                    int    posicionExtension =
                        rutaOrigen.LastIndexOf('.', rutaOrigen.Length - 1);
                    if (posicionExtension > 0)
                    {
                        extension     = rutaOrigen.Substring(posicionExtension);
                        nombreArchivo = nombreArchivo + extension;
                        DirectoryInfo DirectoryInfo   = new DirectoryInfo(rutaDestino);
                        DirectoryInfo directoryOrigen = new DirectoryInfo(rutaOrigen);
                        string        destino         = Path.Combine(DirectoryInfo.ToString(), nombreArchivo);
                        string        origen          = Path.Combine("\\", directoryOrigen.ToString());
                        File.Copy(origen, destino, true);
                        this.backupFinish = true;
                    }
                    else
                    {
                        throw new Exception("No se encontró la extensión del archivo de base de datos");
                    }
                }
            }
            catch (Exception ex)
            {
                backupFinish = true;
                Mensajes.MensajeErrorCompleto(this.Name, "BtnGenerarBackup_Click",
                                              "Hubo un error al generar el backup", ex.Message);
                rpta = ex.Message;
            }
        }
Ejemplo n.º 14
0
        private void BtnPrint_Click(object sender, EventArgs e)
        {
            try
            {
                MensajeEspera.ShowWait("Cargando...");

                DataTable dtAgendamiento = new DataTable();
                dtAgendamiento.Columns.Add("Id_agendamiento", typeof(int));
                dtAgendamiento.Columns.Add("Fecha_agendamiento", typeof(string));
                dtAgendamiento.Columns.Add("Nombre_cliente", typeof(string));
                dtAgendamiento.Columns.Add("Celular_cliente", typeof(string));
                dtAgendamiento.Columns.Add("Saldo_restante", typeof(string));
                dtAgendamiento.Columns.Add("Valor_cuota", typeof(string));
                dtAgendamiento.Columns.Add("Valor_pagado", typeof(string));
                dtAgendamiento.Columns.Add("Tipo_cobro", typeof(string));


                if (this.DtAgendamientos != null)
                {
                    decimal total_recaudo = 0;

                    foreach (DataRow row in this.DtAgendamientos.Rows)
                    {
                        Agendamiento_cobros ag = new Agendamiento_cobros(row);

                        int      id_agendamiento    = ag.Id_agendamiento;
                        DateTime fecha_agendamiento = ag.Fecha_cobro;
                        string   nombre_cliente     = ag.Venta.Cliente.NombreCompleto;
                        string   celular_cliente    = ag.Venta.Cliente.Celular;
                        decimal  saldo_restante     = ag.Saldo_restante;
                        decimal  valor_cuota        = ag.Valor_cobro;
                        decimal  valor_pagado       = 0;
                        string   tipo_cobro         = ag.Tipo_cobro;

                        total_recaudo += valor_cuota;

                        DataRow newRow = dtAgendamiento.NewRow();
                        newRow["Id_agendamiento"]    = id_agendamiento;
                        newRow["Fecha_agendamiento"] = fecha_agendamiento.ToString("yyyy-MM-dd");
                        newRow["Nombre_cliente"]     = nombre_cliente;
                        newRow["Celular_cliente"]    = celular_cliente;
                        newRow["Saldo_restante"]     = saldo_restante.ToString("C");
                        newRow["Valor_cuota"]        = valor_cuota.ToString("C");
                        newRow["Valor_pagado"]       = valor_pagado.ToString("C");
                        newRow["Tipo_cobro"]         = tipo_cobro;
                        dtAgendamiento.Rows.Add(newRow);
                    }
                    MensajeEspera.CloseForm();
                    FrmReporteAgendamientos frmReporteAgendamientos = new FrmReporteAgendamientos
                    {
                        DtAgendamientos = dtAgendamiento,
                        Total_recaudo   = "Total a recaudar: " + total_recaudo.ToString("C"),
                    };
                    frmReporteAgendamientos.ShowDialog();
                }
                MensajeEspera.CloseForm();
            }
            catch (Exception ex)
            {
                MensajeEspera.CloseForm();
                Mensajes.MensajeErrorCompleto(this.Name, "",
                                              "Hubo un error al cargar el reporte", ex.Message);
            }
        }
        private void CargarMesas(int numero_mesas)
        {
            MensajeEspera.ShowWait("Cargando mesas");
            try
            {
                this.panelMesas.Controls.Clear();
                string    estado              = "DISPONIBLE";
                int       id_pedido           = 0;
                int       id_mesa             = 0;
                DataTable TablaMesasConPedido =
                    NPedido.BuscarPedidos("MESAS CON PEDIDO", "");
                DataTable TablaMesas =
                    NPedido.BuscarPedidos("MESAS COMPLETAS", "");
                int            positionX = 0;
                int            positionY = 0;
                int            contador  = 1;
                List <Control> controles = new List <Control>();
                while (contador <= numero_mesas)
                {
                    if (TablaMesas != null)
                    {
                        DataRow[] result =
                            TablaMesas.Select("Num_mesa = '" + Convert.ToString(contador) + "'");
                        if (result.Length != 0)
                        {
                            id_mesa = Convert.ToInt32(result[0]["Id_mesa"]);
                        }
                    }

                    if (TablaMesasConPedido != null)
                    {
                        DataRow[] result =
                            TablaMesasConPedido.Select("Num_mesa = '" + Convert.ToString(contador) + "'");
                        if (result.Length != 0)
                        {
                            id_pedido = Convert.ToInt32(result[0]["Id_pedido"]);
                            estado    = Convert.ToString(result[0]["Estado_pedido"]);
                        }
                        else
                        {
                            id_pedido = Convert.ToInt32(0);
                            estado    = Convert.ToString("DISPONIBLE");
                        }
                    }

                    CustomButtonMesa ButtonMesa = new CustomButtonMesa
                    {
                        Estado_mesa = estado,
                        Texto       = "Mesa " + (contador),
                        Tag         = contador,
                        Numero_mesa = contador,
                        Id_mesa     = id_mesa,
                        Id_pedido   = id_pedido
                    };
                    ButtonMesa.ObtenerEstado(estado, id_pedido, false);
                    ButtonMesa.cambioMesaClick += ButtonMesa_cambioMesaClick;
                    if (positionX > this.panelMesas.Width ||
                        this.panelMesas.Width < positionX + ButtonMesa.Width)
                    {
                        positionY += ButtonMesa.Height + 2;
                        positionX  = 0;
                    }
                    ButtonMesa.Location = new Point(positionX, positionY);
                    controles.Add(ButtonMesa);

                    positionX = ButtonMesa.Location.X + ButtonMesa.Width + 2;

                    contador += 1;
                    if (contador == numero_mesas)
                    {
                        break;
                    }
                    else
                    {
                        continue;
                    }
                }
                this.panelMesas.Controls.AddRange(controles.ToArray());
                this.panelMesas.Refresh();
                MensajeEspera.CloseForm();
            }
            catch (Exception ex)
            {
                MensajeEspera.CloseForm();
                Mensajes.MensajeErrorCompleto(this.Name, "CargarMesas",
                                              "Hubo un error al cargar las mesas", ex.Message);
            }
        }
Ejemplo n.º 16
0
        private void BtnTerminar_Click(object sender, EventArgs e)
        {
            MensajeEspera.ShowWait("Facturando y terminando");
            try
            {
                string rpta = "OK";
                int    id_venta;
                if (this.panelSubTotal.Visible)
                {
                    DataTable     detalle_pago;
                    List <string> variables = this.Variables(out detalle_pago);

                    if (detalle_pago.Rows.Count > 0)
                    {
                        if (this.IsPrecuenta)
                        {
                            frmFacturaFinal.Id_pedido = this.Id_pedido;
                            frmFacturaFinal.AsignarTablasPedido(variables);

                            string metodo = this.ObtenerValorPanel(this.panelTipoPedido);
                            if (metodo.Equals("IMPRIMIR"))
                            {
                                frmFacturaFinal.ImprimirFactura(1);
                            }
                            else if (metodo.Equals("CORREO"))
                            {
                                string rpta_email =
                                    EmailFactura.SendEmailFactura(this.Id_pedido, this.Correo_electronico);
                                if (!rpta_email.Equals("OK"))
                                {
                                    Mensajes.MensajeErrorForm("Hubo un error al enviar el correo electrónico");
                                }
                            }
                            else if (metodo.Equals("AMBAS"))
                            {
                                frmFacturaFinal.ImprimirFactura(1);
                                string rpta_email =
                                    EmailFactura.SendEmailFactura(this.Id_pedido, this.Correo_electronico);
                                if (!rpta_email.Equals("OK"))
                                {
                                    Mensajes.MensajeErrorForm("Hubo un error al enviar el correo electrónico");
                                }
                            }

                            FrmObservarMesas frm = FrmObservarMesas.GetInstancia();
                            frm.MesaSaliendo(this.Id_mesa, this.Id_pedido);

                            MensajeEspera.CloseForm();
                            Mensajes.MensajeOkForm("Se realizó la precuenta correctamente");
                            this.Close();
                        }
                        else
                        {
                            MensajeEspera.ShowWait("Facturando y terminando");
                            rpta =
                                NVentas.InsertarVenta(variables, out id_venta, detalle_pago);
                            if (rpta.Equals("OK"))
                            {
                                FrmObservarMesas frm = FrmObservarMesas.GetInstancia();
                                frm.LiberarMesa(this.Id_mesa);

                                frmFacturaFinal.Id_pedido = this.Id_pedido;
                                frmFacturaFinal.AsignarTablas();

                                string metodo = this.ObtenerValorPanel(this.panelTipoPedido);
                                if (metodo.Equals("IMPRIMIR"))
                                {
                                    frmFacturaFinal.ImprimirFactura(1);
                                }
                                else if (metodo.Equals("CORREO"))
                                {
                                    string rpta_email =
                                        EmailFactura.SendEmailFactura(this.Id_pedido, this.Correo_electronico);
                                    if (!rpta_email.Equals("OK"))
                                    {
                                        Mensajes.MensajeErrorForm("Hubo un error al enviar el correo electrónico");
                                    }
                                }
                                else if (metodo.Equals("AMBAS"))
                                {
                                    frmFacturaFinal.ImprimirFactura(1);
                                    string rpta_email =
                                        EmailFactura.SendEmailFactura(this.Id_pedido, this.Correo_electronico);
                                    if (!rpta_email.Equals("OK"))
                                    {
                                        Mensajes.MensajeErrorForm("Hubo un error al enviar el correo electrónico");
                                    }
                                }

                                MensajeEspera.CloseForm();
                                Mensajes.MensajeOkForm("Se realizó la facturación correctamente");
                                this.Close();
                            }
                            else
                            {
                                throw new Exception(rpta);
                            }
                        }
                    }
                    else
                    {
                        Mensajes.MensajeErrorForm("Debe de seleccionar un método de pago");
                    }
                }
                MensajeEspera.CloseForm();
            }
            catch (Exception ex)
            {
                MensajeEspera.CloseForm();
                Mensajes.MensajeErrorCompleto(this.Name, "BtnTerminar_Click",
                                              "Hubo un error al terminar una venta", ex.Message);
            }
        }
        private void BtnImportar_Click(object sender, EventArgs e)
        {
            try
            {
                //Creo un objeto de tipo OpenFileDialog y lo instancio
                OpenFileDialog archivo = new OpenFileDialog();
                //Esta linea es para que solo se puedan visualizar los archivos con esta extension
                archivo.Filter = "Documentos válidos|*.doc;*.xls;*.ppt;*.pdf;*.xlsx";
                //Lo abro como un Dialog
                DialogResult result = archivo.ShowDialog();

                if (result == DialogResult.OK)
                {
                    //Asignamos el nombre del archivo a la caja de texto
                    this.txtArchivo.Text = archivo.SafeFileName;
                    //Asignamos a la propiedad tag del textbox la ruta completa del archivo
                    this.txtArchivo.Tag = archivo.FileName;

                    string hoja = this.txtHoja.Text;

                    if (hoja.Equals("Hoja") || hoja.Equals(""))
                    {
                        Mensajes.MensajeErrorForm("Debe ingresar un nombre de hoja válida, seleccione el archivo de nuevo");
                        this.txtHoja.SelectAll();
                    }
                    else
                    {
                        MensajeEspera.ShowWait("Cargando");
                        DataTable dt       = new DataTable();
                        string    fileName = archivo.FileName;
                        string    query    = "SELECT * FROM [" + hoja + "$]";
                        using (OleDbConnection cn = new OleDbConnection {
                            ConnectionString = ConnectionString(fileName, "Yes")
                        })
                        {
                            using (OleDbCommand cmd = new OleDbCommand {
                                CommandText = query, Connection = cn
                            })
                            {
                                cn.Open();

                                OleDbDataReader dr = cmd.ExecuteReader();
                                dt.Load(dr);
                            }
                        }

                        this.dtClientes = dt;
                        MensajeEspera.CloseForm();
                        if (this.VerificarEsquema())
                        {
                            if (dt != null)
                            {
                                if (dt.Rows.Count > 0)
                                {
                                    this.gbResultados.Text        = "Se cargaron " + dt.Rows.Count + " registros";
                                    this.dgvListaClientes.Enabled = true;
                                }
                                else
                                {
                                    this.dgvListaClientes.Enabled = false;
                                    this.gbResultados.Text        = "No se cargó ningún registro";
                                }
                            }
                            dt.AcceptChanges();
                            this.dgvListaClientes.DataSource = dt;
                            this.gbConfig.Enabled            = true;

                            this.txtArchivo.Focus();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MensajeEspera.CloseForm();
                Mensajes.MensajeErrorCompleto(this.Name, "BtnImportar_Click",
                                              "Hubo un error al importar el archivo", ex.Message);
            }
        }
        private async void LoadReporteDiario(DateTime fecha)
        {
            MensajeEspera.ShowWait("Cargando reporte...");
            StringBuilder info = new StringBuilder();
            //Obtener el turno de esta fecha
            DataTable dtTurnos =
                NTurnos.BuscarTurnos("FECHA INICIO", fecha.ToString("yyyy-MM-dd"), out string rpta);

            if (dtTurnos != null)
            {
                Turnos turno = new Turnos(dtTurnos.Rows[0]);
                info.Append("Valor inicial en caja ").Append(turno.Valor_inicial.ToString("C")).Append(Environment.NewLine);
                info.Append("Se empezó con ").Append(turno.Clientes_iniciales).Append(" clientes y se terminó con ").Append(turno.Clientes_total).Append(Environment.NewLine);

                //Obtener los clientes nuevos
                var(rpta1, dtVentas) =
                    await NVentas.BuscarVentas("FECHA ID COBRO", fecha.ToString("yyyy-MM-dd"));

                if (dtVentas != null)
                {
                    info.Append("Clientes nuevos o renovados ").Append(dtVentas.Rows.Count).Append(Environment.NewLine);
                }
                else
                {
                    info.Append("No hubieron clientes nuevos o renovados ");
                }

                info.Append("Total de ventas y renovaciones ").Append(turno.Recaudo_ventas_nuevas.ToString("C")).Append(Environment.NewLine);
                info.Append("Recaudo pretendido ").Append(turno.Recaudo_pretendido_turno.ToString("C")).Append(Environment.NewLine);

                decimal porcentajeRecaudado = (turno.Recaudo_cuotas * 100) / turno.Recaudo_pretendido_turno;

                info.Append("Total recaudado ").Append(turno.Recaudo_cuotas.ToString("C")).Append(" (" + ((int)porcentajeRecaudado) + "%)").Append(Environment.NewLine);
                info.Append("Otros ingresos ").Append(turno.Recaudo_otros.ToString("C")).Append(Environment.NewLine);

                if (turno.Gastos_total == 0)
                {
                    info.Append("No hubieron gastos").Append(Environment.NewLine);
                }
                else
                {
                    info.Append("Gastos/Egresos ").Append(turno.Gastos_total.ToString("C")).Append(Environment.NewLine);
                }

                info.Append(Environment.NewLine);
                info.Append("CAJA FINAL ").Append(turno.Recaudo_real.ToString("C")).Append(Environment.NewLine);
                info.Append(Environment.NewLine);

                if (dtVentas != null)
                {
                    info.Append("Resumen de clientes nuevos o renovados").Append(Environment.NewLine);
                    foreach (DataRow row in dtVentas.Rows)
                    {
                        Ventas venta = new Ventas(row);
                        info.Append("* Nombre: ").Append(venta.Cliente.NombreCompleto).Append(" - Celular: ").Append(venta.Cliente.Celular).Append(Environment.NewLine);
                        info.Append("- Valor préstamo: ").Append(venta.Valor_venta.ToString("C")).Append(" - Plazo: ").Append(venta.Numero_cuotas).Append(Environment.NewLine);
                    }
                }

                DataTable dtGastos =
                    NGastos.BuscarGastos("FECHA ID COBRO", fecha.ToString("yyyy-MM-dd"), out rpta);
                if (dtGastos != null)
                {
                    info.Append(Environment.NewLine);
                    info.Append("Resumen de gastos o egresos").Append(Environment.NewLine);
                    foreach (DataRow row in dtGastos.Rows)
                    {
                        Gastos gasto = new Gastos(row);
                        info.Append("* " + gasto.Tipo_gasto.Nombre_tipo_gasto + " - ").Append(" - Observaciones: ").Append(gasto.Observaciones_gasto);
                        info.Append(" - Valor: ").Append(gasto.Valor_gasto.ToString("C")).Append(Environment.NewLine);
                    }
                }

                FrmReporteDiario frmReporteDiario = new FrmReporteDiario
                {
                    FormBorderStyle  = FormBorderStyle.None,
                    TopMost          = false,
                    TopLevel         = false,
                    Dock             = DockStyle.Fill,
                    InformacionTurno = info.ToString(),
                    FechaHoraReporte = "Fecha y hora de generación: " + DateTime.Now.ToLongDateString(),
                    FechaHoraTurno   = "Fecha y hora de turno: " + turno.Fecha_inicio_turno.ToLongDateString(),
                };

                if (this.gbResultados.Controls.Count > 0)
                {
                    this.gbResultados.Controls.Clear();
                }

                this.gbResultados.Controls.Add(frmReporteDiario);
                frmReporteDiario.Show();
            }
            else
            {
                MensajeEspera.CloseForm();
                info.Append("No se encontró el turno");
                Mensajes.MensajeInformacion("No se encontró el turno, o bien, se encuentra cerrado en la fecha seleccionada", "Entendido");
            }
            MensajeEspera.CloseForm();
        }
        private async void BtnReporteClientes_Click(object sender, EventArgs e)
        {
            MensajeEspera.ShowWait("Cargando reporte...");
            DataTable dtClientes = new DataTable("Clientes");

            dtClientes.Columns.Add("Id_cliente", typeof(int));
            dtClientes.Columns.Add("Nombre_cliente", typeof(string));
            dtClientes.Columns.Add("Celular_cliente", typeof(string));
            dtClientes.Columns.Add("Referencia_articulo", typeof(string));
            dtClientes.Columns.Add("Saldo_restante", typeof(string));
            dtClientes.Columns.Add("Venta_total", typeof(string));
            dtClientes.Columns.Add("Fecha_venta", typeof(string));
            dtClientes.Columns.Add("Fecha_ultimo_pago", typeof(string));
            dtClientes.Columns.Add("Dias_mora", typeof(int));

            int            id_cliente          = 0;
            string         nombre_cliente      = string.Empty;
            string         celular_cliente     = string.Empty;
            string         referencia_articulo = string.Empty;
            decimal        saldo_restante      = 0;
            decimal        total_venta         = 0;
            DateTime       fecha_venta         = DateTime.Now;
            decimal        suma_ventas         = 0;
            decimal        suma_saldos         = 0;
            DateTime       fecha_ultimo_pago   = DateTime.Now;
            MainController main = MainController.GetInstance();

            var(rpta, dtVentas) =
                await NVentas.BuscarVentas("ID COBRO ACTIVO", main.Id_cobro.ToString());

            if (dtVentas != null)
            {
                foreach (DataRow row in dtVentas.Rows)
                {
                    Ventas venta = new Ventas(row);
                    id_cliente      = venta.Id_cliente;
                    nombre_cliente  = venta.Cliente.NombreCompleto;
                    celular_cliente = venta.Cliente.Celular;
                    total_venta     = venta.Total_venta;
                    fecha_venta     = venta.Fecha_venta;
                    suma_ventas    += venta.Total_venta;

                    //Buscar los agendamientos de cada venta para ver su saldo restante
                    var(rpta1, dtAgendamientos) = await NAgendamiento_cobros.BuscarAgendamientos("ID VENTA", venta.Id_venta.ToString());

                    if (dtAgendamientos != null)
                    {
                        Agendamiento_cobros ag = new Agendamiento_cobros(dtAgendamientos.Rows[0]);
                        saldo_restante    = ag.Saldo_restante;
                        suma_saldos      += ag.Saldo_restante;
                        fecha_ultimo_pago = ag.Fecha_cobro;
                    }

                    TimeSpan timeSpan  = DateTime.Now - fecha_ultimo_pago;
                    double   dias_mora = timeSpan.TotalDays;

                    DataRow newRow = dtClientes.NewRow();
                    newRow["Id_cliente"]          = id_cliente;
                    newRow["Nombre_cliente"]      = nombre_cliente;
                    newRow["Celular_cliente"]     = celular_cliente;
                    newRow["Referencia_articulo"] = referencia_articulo;
                    newRow["Saldo_restante"]      = saldo_restante.ToString("C");
                    newRow["Venta_total"]         = total_venta.ToString("C");
                    newRow["Fecha_venta"]         = fecha_venta.ToString("dd-MM-yyyy");
                    newRow["Fecha_ultimo_pago"]   = fecha_ultimo_pago.ToString("dd-MM-yyyy");
                    newRow["Dias_mora"]           = dias_mora;
                    dtClientes.Rows.Add(newRow);
                }

                if (dtClientes.Rows.Count > 0)
                {
                    MensajeEspera.CloseForm();
                    //Enviar informe
                    FrmReporteClientes frmReporteClientes = new FrmReporteClientes
                    {
                        WindowState  = FormWindowState.Maximized,
                        dtClientes   = dtClientes,
                        Total_saldos = suma_saldos.ToString("C"),
                        Total_ventas = suma_ventas.ToString("C"),
                    };
                    frmReporteClientes.Show();
                }
                else
                {
                    MensajeEspera.CloseForm();
                    Mensajes.MensajeInformacion("No se encontraron clientes", "Entendido");
                }
            }
            else
            {
                MensajeEspera.CloseForm();
                Mensajes.MensajeInformacion("No se encontraron clientes", "Entendido");
            }

            MensajeEspera.CloseForm();
        }
        private async void BtnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.Comprobaciones(out Articulos articulo))
                {
                    MensajeEspera.ShowWait("Guardando...");
                    string rpta = "OK";

                    if (this.IsEditar)
                    {
                        rpta = await NArticulos.EditarArticulos(articulo.Id_articulo, articulo);
                    }
                    else
                    {
                        var(rptaArticulo, id_articulo) = await NArticulos.InsertarArticulo(articulo);

                        rpta = rptaArticulo;
                        articulo.Id_articulo = id_articulo;

                        if (this.chkImprimir.Checked)
                        {
                            DataTable dtFacturaArticulos = new DataTable("dtArticulosFacturas");
                            dtFacturaArticulos.Columns.Add("Id_articulo", typeof(int));
                            dtFacturaArticulos.Columns.Add("Referencia_articulo", typeof(string));
                            dtFacturaArticulos.Columns.Add("Cantidad_articulo", typeof(string));
                            dtFacturaArticulos.Columns.Add("Id_proveedor", typeof(string));
                            dtFacturaArticulos.Columns.Add("Proveedor", typeof(string));
                            dtFacturaArticulos.Columns.Add("Valor_proveedor", typeof(string));
                            dtFacturaArticulos.Columns.Add("Descripcion_articulo", typeof(string));

                            DataRow newRow = dtFacturaArticulos.NewRow();
                            newRow["Id_articulo"]          = articulo.Id_articulo;
                            newRow["Referencia_articulo"]  = articulo.Referencia_articulo;
                            newRow["Cantidad_articulo"]    = articulo.Cantidad_articulo;
                            newRow["Id_proveedor"]         = articulo.Id_proveedor;
                            newRow["Proveedor"]            = articulo.Proveedor.Nombre_proveedor;
                            newRow["Valor_proveedor"]      = articulo.Valor_proveedor;
                            newRow["Descripcion_articulo"] = articulo.Descripcion_articulo;
                            dtFacturaArticulos.Rows.Add(newRow);

                            FrmReporteFactura frmReporte = new FrmReporteFactura
                            {
                                Id_articulo        = articulo.Id_articulo.ToString(),
                                FechaHora          = DateTime.Now.ToLongTimeString() + " " + DateTime.Now.ToLongTimeString(),
                                EstadoFactura      = articulo.Estado_articulo,
                                TotalFactura       = (this.numericCantidad.Value * this.numericValorProveedor.Value).ToString(),
                                WindowState        = FormWindowState.Maximized,
                                dtArticulosFactura = dtFacturaArticulos,
                            };
                            frmReporte.Show();
                        }
                    }

                    MensajeEspera.CloseForm();
                    if (rpta.Equals("OK"))
                    {
                        this.Limpiar();
                        Mensajes.MensajeInformacion("Se guardó correctamente el artículo", "Entendido");
                        this.OnArticuloSuccess?.Invoke(articulo, e);
                        this.Close();
                    }
                    else
                    {
                        throw new Exception(rpta);
                    }
                }
            }
            catch (Exception ex)
            {
                MensajeEspera.CloseForm();
                Mensajes.MensajeErrorCompleto(this.Name, "BtnGuardar_Click",
                                              "Hubo un error con el botón guardar", ex.Message);
            }
        }
        private void BtnTerminarPedido_Click(object sender, EventArgs e)
        {
            MensajeEspera.ShowWait("Facturando y terminando");
            try
            {
                this.containerDatosPedido.Close();
                string rpta = "";
                int    id_pedido;
                if (this.Comprobaciones())
                {
                    DataTable TablaDetallePedido = this.tablasPedido.dtDetallePedido();

                    if (TablaDetallePedido.Rows.Count > 0)
                    {
                        rpta =
                            NPedido.InsertarPedido(this.Variables(), out id_pedido,
                                                   TablaDetallePedido);
                        if (rpta.Equals("OK"))
                        {
                            FrmObservarMesas FrmObservarMesas = FrmObservarMesas.GetInstancia();
                            FrmObservarMesas.ObtenerPedido(id_pedido, this.Numero_mesa, "PENDIENTE");

                            this.comandas.Id_pedido = id_pedido;
                            this.comandas.AsignarTablas();

                            if (this.contextMenuDatosPedido.chkImprimirPedido.Checked)
                            {
                                bool plato    = false;
                                bool bebida   = false;
                                int  imprimir = 0;
                                foreach (DataRow row in TablaDetallePedido.Rows)
                                {
                                    if (row["Tipo"].Equals("PLATO"))
                                    {
                                        plato = true;
                                    }
                                    else
                                    {
                                        bebida = true;
                                    }
                                    if (plato && bebida)
                                    {
                                        break;
                                    }
                                }

                                if (plato && bebida)
                                {
                                    imprimir = 2;
                                }
                                else
                                {
                                    imprimir = 1;
                                }

                                comandas.ImprimirFactura(imprimir);
                            }
                            this.Close();
                        }
                        else
                        {
                            throw new Exception(rpta);
                        }
                    }
                }
                MensajeEspera.CloseForm();
            }
            catch (Exception ex)
            {
                MensajeEspera.CloseForm();
                Mensajes.MensajeErrorCompleto(this.Name, "BtnTerminarPedido_Click",
                                              "Hubo un error al terminar un pedido", ex.Message);
            }
        }
        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);
            }
        }