/// <summary>
        /// Busca el registro que contiene el ID pasado por parametro y lo elimina.
        /// </summary>
        /// <param name="_ID_PedidoXMesaEliminar">Registro que se eliminará.</param>
        /// <param name="_InformacionDelError">Devuelve una cadena de texto con informacion para el usuario en caso de que el
        /// metodo devuelva null (debido a que ocurrio un error).</param>
        public int Borrar(int _ID_PedidoXMesaEliminar, ref string _InformacionDelError)
        {
            using (BDRestauranteEntities BBDD = new BDRestauranteEntities())
            {
                try
                {
                    PedidoXMesa ObjetoAEliminar = BBDD.PedidoXMesa.SingleOrDefault(Identificador => Identificador.ID_PedidoXMesa == _ID_PedidoXMesaEliminar);

                    if (ObjetoAEliminar != null)
                    {
                        BBDD.PedidoXMesa.Remove(ObjetoAEliminar);
                        return(BBDD.SaveChanges());
                    }
                    else
                    {
                        return(0);
                    }
                }
                catch (Exception Error)
                {
                    _InformacionDelError = $"OCURRIO UN ERROR INESPERADO AL INTENTAR LISTAR LA INFORMACIÓN: {Error.Message}\r\n\r\n" +
                                           $"ORIGEN DEL ERROR: {Error.StackTrace}\r\n\r\n" +
                                           $"OBJETO QUE GENERÓ EL ERROR: {Error.Data}\r\n\r\n\r\n" +
                                           $"ENVIE AL PROGRAMADOR UNA FOTO DE ESTE MENSAJE CON UNA DESCRIPCION DE LO QUE HIZO ANTES DE QUE SE GENERARÁ " +
                                           $"ESTE ERROR PARA QUE SEA ARREGLADO.";
                    return(0);
                }
            }
        }
        /// <summary>
        /// Actualiza el registro mediente el ID que contiene el objeto proporcionado como parametro.
        /// </summary>
        /// <param name="_PedidoXMesa">Objeto que contiene los datos del registro al que se le van a actualizar los datos.</param>
        ///<param name="_InformacionDelError">Devuelve una cadena de texto con informacion para el usuario en caso de que el
        /// metodo devuelva null (debido a que ocurrio un error).</param>
        public int Actualizar(PedidoXMesa _PedidoXMesa, ref string _InformacionDelError)
        {
            using (BDRestauranteEntities BBDD = new BDRestauranteEntities())
            {
                try
                {
                    PedidoXMesa ObjetoActualizado = BBDD.PedidoXMesa.SingleOrDefault(Identificador => Identificador.ID_PedidoXMesa == _PedidoXMesa.ID_PedidoXMesa);

                    if (ObjetoActualizado != null)
                    {
                        ObjetoActualizado.ID_PedidoXMesa = _PedidoXMesa.ID_PedidoXMesa;
                        //ObjetoActualizado.Nombre = cliente.Nombre;
                        //ObjetoActualizado.Direccion = cliente.Direccion;
                        //ObjetoActualizado.Id_Localidad = cliente.Id_Localidad;
                        return(BBDD.SaveChanges());
                    }
                    else
                    {
                        return(0);
                    }
                }
                catch (Exception Error)
                {
                    _InformacionDelError = $"OCURRIO UN ERROR INESPERADO AL INTENTAR LISTAR LA INFORMACIÓN: {Error.Message}\r\n\r\n" +
                                           $"ORIGEN DEL ERROR: {Error.StackTrace}\r\n\r\n" +
                                           $"OBJETO QUE GENERÓ EL ERROR: {Error.Data}\r\n\r\n\r\n" +
                                           $"ENVIE AL PROGRAMADOR UNA FOTO DE ESTE MENSAJE CON UNA DESCRIPCION DE LO QUE HIZO ANTES DE QUE SE GENERARÁ " +
                                           $"ESTE ERROR PARA QUE SEA ARREGLADO.";
                    return(0);
                }
            }
        }
 /// <summary>
 /// Crea un nuevo registro a partir de los datos que contiene el objeto pasado por parametro.
 /// </summary>
 /// <param name="_PedidoXMesa">Objeto que contiene los datos del nuevo registro que se creará.</param>
 ///<param name="_InformacionDelError">Devuelve una cadena de texto con informacion para el usuario en caso de que el
 /// metodo devuelva null (debido a que ocurrio un error).</param>
 public int Crear(PedidoXMesa _PedidoXMesa, ref string _InformacionDelError)
 {
     using (BDRestauranteEntities BBDD = new BDRestauranteEntities())
     {
         try
         {
             BBDD.PedidoXMesa.Add(_PedidoXMesa);
             return(BBDD.SaveChanges());
         }
         catch (Exception Error)
         {
             _InformacionDelError = $"OCURRIO UN ERROR INESPERADO AL INTENTAR LISTAR LA INFORMACIÓN: {Error.Message}\r\n\r\n" +
                                    $"ORIGEN DEL ERROR: {Error.StackTrace}\r\n\r\n" +
                                    $"OBJETO QUE GENERÓ EL ERROR: {Error.Data}\r\n\r\n\r\n" +
                                    $"ENVIE AL PROGRAMADOR UNA FOTO DE ESTE MENSAJE CON UNA DESCRIPCION DE LO QUE HIZO ANTES DE QUE SE GENERARÁ " +
                                    $"ESTE ERROR PARA QUE SEA ARREGLADO.";
             return(0);
         }
     }
 }
Esempio n. 4
0
        private void CargarDGVListarPedidos()
        {
            dgvListaPedidos.Rows.Clear();

            string InformacionDelError = string.Empty;

            ClsPedidos    Pedidos          = new ClsPedidos();
            List <Pedido> PedidosEnProceso = Pedidos.LeerListado(ClsPedidos.ETipoDeListado.PedidosEnProceso, ref InformacionDelError);

            if (PedidosEnProceso != null)
            {
                foreach (Pedido Elemento in PedidosEnProceso)
                {
                    int NumeroDeFila = dgvListaPedidos.Rows.Add();

                    dgvListaPedidos.Columns[(int)ENumColDGVListaPedidos.ID_Pedido].SortMode    = DataGridViewColumnSortMode.NotSortable;
                    dgvListaPedidos.Columns[(int)ENumColDGVListaPedidos.TiempoEspera].SortMode = DataGridViewColumnSortMode.NotSortable;
                    dgvListaPedidos.Columns[(int)ENumColDGVListaPedidos.EsDelivery].SortMode   = DataGridViewColumnSortMode.NotSortable;
                    dgvListaPedidos.Columns[(int)ENumColDGVListaPedidos.Mozos].SortMode        = DataGridViewColumnSortMode.NotSortable;
                    dgvListaPedidos.Columns[(int)ENumColDGVListaPedidos.Mesas].SortMode        = DataGridViewColumnSortMode.NotSortable;
                    dgvListaPedidos.Columns[(int)ENumColDGVListaPedidos.Seleccionar].SortMode  = DataGridViewColumnSortMode.NotSortable;

                    dgvListaPedidos.Rows[NumeroDeFila].Cells[(int)ENumColDGVListaPedidos.ID_Pedido].Value = Elemento.ID_Pedido;

                    string[] Tiempo;
                    int      Horas   = 0;
                    int      Minutos = 0;

                    if (Elemento.TiempoEspera.Value.Date == DateTime.Now.Date && (Horas < 24 && Minutos < 60))
                    {
                        Tiempo = (DateTime.Now.TimeOfDay - Elemento.TiempoEspera.Value.TimeOfDay).ToString(@"hh\:mm").Split(':');

                        Horas   = Convert.ToInt32(Tiempo[0]);
                        Minutos = Convert.ToInt32(Tiempo[1]);

                        dgvListaPedidos.Rows[NumeroDeFila].Cells[(int)ENumColDGVListaPedidos.TiempoEspera].Value = (DateTime.Now.TimeOfDay - Elemento.TiempoEspera.Value.TimeOfDay).ToString(@"hh\:mm");
                    }
                    else
                    {
                        // Hay un dia de diferencia solamente
                        if (Elemento.TiempoEspera.Value.Day == DateTime.Now.AddDays(-1).Day)
                        {
                            Tiempo = (new TimeSpan(24, 0, 0) - Elemento.TiempoEspera.Value.TimeOfDay).ToString(@"hh\:mm").Split(':');

                            Horas   = Convert.ToInt32(Tiempo[0]) + DateTime.Now.Hour;
                            Minutos = Convert.ToInt32(Tiempo[1]) + DateTime.Now.Minute;

                            // Calcular aumento de hora
                            if (Minutos >= 60)
                            {
                                Horas   += 1;
                                Minutos += (60 - Minutos);
                            }

                            // Este if evitara mostrar una hora mayor a 24 en caso de problemas con la sincronizacion del
                            // reloj de la computadora
                            if (Horas < 24)
                            {
                                if (Minutos < 10)
                                {
                                    if (Horas < 10)
                                    {
                                        dgvListaPedidos.Rows[NumeroDeFila].Cells[(int)ENumColDGVListaPedidos.TiempoEspera].Value = $"0{Horas}:0{Minutos}";
                                    }
                                    else
                                    {
                                        dgvListaPedidos.Rows[NumeroDeFila].Cells[(int)ENumColDGVListaPedidos.TiempoEspera].Value = $"{Horas}:0{Minutos}";
                                    }
                                }
                                else
                                {
                                    if (Horas < 10)
                                    {
                                        dgvListaPedidos.Rows[NumeroDeFila].Cells[(int)ENumColDGVListaPedidos.TiempoEspera].Value = $"0{Horas}:{Minutos}";
                                    }
                                    else
                                    {
                                        dgvListaPedidos.Rows[NumeroDeFila].Cells[(int)ENumColDGVListaPedidos.TiempoEspera].Value = $"{Horas}:{Minutos}";
                                    }
                                }
                            }
                            else
                            {
                                dgvListaPedidos.Rows[NumeroDeFila].Cells[(int)ENumColDGVListaPedidos.TiempoEspera].Value = "--:--";
                            }
                        }
                        else
                        {
                            dgvListaPedidos.Rows[NumeroDeFila].Cells[(int)ENumColDGVListaPedidos.TiempoEspera].Value = "--:--";
                        }
                    }

                    if (Horas > 0 || Minutos > 40)
                    {
                        dgvListaPedidos.Rows[NumeroDeFila].DefaultCellStyle.BackColor = ClsColores.Rojo;
                    }
                    else if (Minutos >= 20)
                    {
                        dgvListaPedidos.Rows[NumeroDeFila].DefaultCellStyle.BackColor = ClsColores.NaranjaClaro;
                    }

                    string NombreMozo = string.Empty;

                    if (Elemento.ID_Delivery == null)
                    {
                        dgvListaPedidos.Rows[NumeroDeFila].Cells[(int)ENumColDGVListaPedidos.EsDelivery].Value = "NO";

                        ClsPedidosXMesas PedidosXMesas = new ClsPedidosXMesas();
                        PedidoXMesa      BuscarDatos   = PedidosXMesas.LeerPorNumero(Elemento.ID_Pedido, ref InformacionDelError);

                        if (BuscarDatos != null)
                        {
                            NombreMozo = $"{BuscarDatos.Mesa.Usuario.Nombre} {BuscarDatos.Mesa.Usuario.Apellido}";
                        }
                    }
                    else
                    {
                        dgvListaPedidos.Rows[NumeroDeFila].Cells[(int)ENumColDGVListaPedidos.EsDelivery].Value = "SI";
                    }

                    dgvListaPedidos.Rows[NumeroDeFila].Cells[(int)ENumColDGVListaPedidos.Mozos].Value       = NombreMozo;
                    dgvListaPedidos.Rows[NumeroDeFila].Cells[(int)ENumColDGVListaPedidos.Mesas].Value       = "Ver";
                    dgvListaPedidos.Rows[NumeroDeFila].Cells[(int)ENumColDGVListaPedidos.Seleccionar].Value = false;

                    dgvListaPedidos.Rows[NumeroDeFila].Cells[(int)ENumColDGVListaPedidos.Mesas].Style.SelectionBackColor       = ClsColores.Transparente;
                    dgvListaPedidos.Rows[NumeroDeFila].Cells[(int)ENumColDGVListaPedidos.Seleccionar].Style.SelectionBackColor = ClsColores.Transparente;

                    // Quitarle el color de toda la fila a estas casillas
                    dgvListaPedidos.Rows[NumeroDeFila].Cells[(int)ENumColDGVListaPedidos.Mesas].Style.BackColor       = ClsColores.GrisOscuroFondo;
                    dgvListaPedidos.Rows[NumeroDeFila].Cells[(int)ENumColDGVListaPedidos.Seleccionar].Style.BackColor = ClsColores.GrisOscuroFondo;

                    UltimaFilaSeleccionada = -1;

                    dgvListaPedidos.ClearSelection();
                }
            }
            else if (InformacionDelError == string.Empty)
            {
                FrmPrincipal.ObtenerInstancia().MensajeAdvertencia("Fallo al cargar el pedido");
            }
            else
            {
                FrmPrincipal.ObtenerInstancia().MensajeAdvertencia("Fallo al cargar el pedido");
                MessageBox.Show($"{InformacionDelError}", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

            // Comprobar si el pedido que estaba en pantalla sigue disponible al actualizar
            if (dgvPlatosPorMesa.Rows.Count > 0)
            {
                int  PedidoCargado      = (int)dgvPlatosPorMesa.Rows[0].Cells[(int)ENumColDGVPlatosPorMesa.ID_Pedido].Value;
                int  TotalDeFilas       = dgvListaPedidos.Rows.Count;
                bool PedidoNoEncontrado = true;

                for (int Indice = 0; Indice < TotalDeFilas; Indice++)
                {
                    if (PedidoCargado == (int)dgvListaPedidos.Rows[Indice].Cells[(int)ENumColDGVPlatosPorMesa.ID_Pedido].Value)
                    {
                        PedidoNoEncontrado = false;
                    }
                }

                if (PedidoNoEncontrado)
                {
                    dgvPlatosPorMesa.Rows.Clear();
                    lblDetallesDelPedido.Text = string.Empty;
                }
                else
                {
                    // Encontro el pedido, lo actualizo
                    ActualizaInformacionPedido(PedidoCargado);
                }
            }

            PedidosCancelados();
        }
        private void BtnRegistrarPago_Click(object sender, EventArgs e)
        {
            bool HuboError = false;

            string InformacionDelError = string.Empty;

            ClsCajas Cajas            = new ClsCajas();
            Caja     CrearRegistro    = new Caja();
            Caja     CrearSubRegistro = new Caja();

            // Creo el registro de la mesa
            CrearRegistro.Fecha     = DateTime.Today.Date;
            CrearRegistro.Hora      = TimeSpan.Parse(DateTime.Now.ToString(@"HH\:mm\:ss"));
            CrearRegistro.Monto     = Convert.ToDouble(lblMostratTotal.Text);
            CrearRegistro.Detalle   = string.Empty;
            CrearRegistro.ID_Pedido = ID_Pedido;

            if (EsDelivery)
            {
                CrearRegistro.ID_TipoDeMonto = (int)ClsTiposDeMontos.ETiposDeMontos.IngresoDelivery;
            }
            else
            {
                CrearRegistro.ID_TipoDeMonto = rbnIngreso.Checked ? (int)ClsTiposDeMontos.ETiposDeMontos.IngresoCierreDeMesa : (int)ClsTiposDeMontos.ETiposDeMontos.EgresoCierreDeMesa;
            }

            CrearRegistro.ID_EstadoCaja = (int)ClsEstadosCajas.EEstadosCajas.Activo;

            //buscar el usuario
            ClsPedidosXMesas PedidosXMesas = new ClsPedidosXMesas();
            PedidoXMesa      BuscarMozo    = new PedidoXMesa();

            BuscarMozo = PedidosXMesas.LeerPorNumero(ID_Pedido, ref InformacionDelError);

            if (BuscarMozo != null || ID_UsuarioQueConfirmaDelivery != -1)
            {
                if (ID_UsuarioQueConfirmaDelivery != -1)
                {
                    CrearRegistro.ID_Usuario    = ID_UsuarioQueConfirmaDelivery;
                    CrearSubRegistro.ID_Usuario = ID_UsuarioQueConfirmaDelivery;
                }
                else
                {
                    CrearRegistro.ID_Usuario    = BuscarMozo.Mesa.ID_Usuario;
                    CrearSubRegistro.ID_Usuario = BuscarMozo.Mesa.ID_Usuario;
                }

                // creo un registro de aumento/descuento si lo selecciono
                if (rbnDescuento.Checked)
                {
                    CrearSubRegistro.Fecha = DateTime.Today.Date;
                    CrearSubRegistro.Hora  = TimeSpan.Parse(DateTime.Now.ToString(@"HH\:mm\:ss"));
                    CrearSubRegistro.Monto = Convert.ToDouble(lblMostrarTotalDescuento.Text);

                    if (EsDelivery)
                    {
                        CrearSubRegistro.Detalle = $"{nudPorcentaje.Value}% con " +
                                                   $"fecha {DateTime.Today.ToShortDateString()} a las " +
                                                   $"{TimeSpan.Parse(DateTime.Now.ToString(@"HH\:mm\:ss"))}";
                        CrearSubRegistro.ID_TipoDeMonto = (int)ClsTiposDeMontos.ETiposDeMontos.DescuentoDelivery;
                    }
                    else
                    {
                        CrearSubRegistro.Detalle = $"{nudPorcentaje.Value}% a la mesa con " +
                                                   $"fecha {DateTime.Today.ToShortDateString()} a las " +
                                                   $"{TimeSpan.Parse(DateTime.Now.ToString(@"HH\:mm\:ss"))}";
                        CrearSubRegistro.ID_TipoDeMonto = (int)ClsTiposDeMontos.ETiposDeMontos.DescuentoCierreDeMesa;
                    }

                    CrearSubRegistro.ID_Pedido     = ID_Pedido;
                    CrearSubRegistro.ID_EstadoCaja = (int)ClsEstadosCajas.EEstadosCajas.Activo;
                }
                else if (rbnAumento.Checked)
                {
                    CrearSubRegistro.Fecha   = DateTime.Today.Date;
                    CrearSubRegistro.Hora    = TimeSpan.Parse(DateTime.Now.ToString(@"HH\:mm\:ss"));
                    CrearSubRegistro.Monto   = Convert.ToDouble(lblMostrarTotalAumento.Text);
                    CrearSubRegistro.Detalle = $"{nudPorcentaje.Value}% a la mesa con " +
                                               $"fecha {DateTime.Today.ToShortDateString()} a las " +
                                               $"{TimeSpan.Parse(DateTime.Now.ToString(@"HH\:mm\:ss"))}";
                    CrearSubRegistro.ID_Pedido      = ID_Pedido;
                    CrearSubRegistro.ID_TipoDeMonto = (int)ClsTiposDeMontos.ETiposDeMontos.AumentoCierreDeMesa;
                    CrearSubRegistro.ID_EstadoCaja  = (int)ClsEstadosCajas.EEstadosCajas.Activo;
                }

                if (Cajas.Crear(CrearRegistro, ref InformacionDelError) != 0)
                {
                    if (rbnDescuento.Checked || rbnAumento.Checked)
                    {
                        if (Cajas.Crear(CrearSubRegistro, ref InformacionDelError) != 0)
                        {
                            HuboError = false;
                        }
                        else if (InformacionDelError == string.Empty)
                        {
                            MessageBox.Show($"Fallo al crear el registro de aumento/descuento en caja", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            Cajas.Borrar(CrearRegistro.ID_Caja, ref InformacionDelError);
                            HuboError = true;
                        }
                        else
                        {
                            MessageBox.Show($"{InformacionDelError}", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            Cajas.Borrar(CrearRegistro.ID_Caja, ref InformacionDelError);
                            HuboError = true;
                        }
                    }

                    if (!HuboError)
                    {
                        DialogResult = DialogResult.OK;
                        Close();
                    }
                }
                else if (InformacionDelError == string.Empty)
                {
                    MessageBox.Show($"Fallo al crear el registro en caja", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else
                {
                    MessageBox.Show($"{InformacionDelError}", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            else if (InformacionDelError == string.Empty)
            {
                MessageBox.Show($"Fallo al buscar el mozo para crear el registro en caja", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else
            {
                MessageBox.Show($"{InformacionDelError}", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }