/// <summary>Actualiza el estado del articulo a activo/inactivo.</summary>
        /// <param name="_EstadoElemento">Enum que contrendra el numero del tipo de estado.</param>
        private void ActualizarEstadoArticulo(ClsEstadosArticulos.EEstadosArticulos _EstadoElemento)
        {
            ClsArticulos Articulo           = new ClsArticulos();
            Articulo     ActualizarArticulo = new Articulo();

            int TotalDeFilas = dgvEstadoArticulo.Rows.Count;

            for (int Indice = 0; Indice < TotalDeFilas; Indice++)
            {
                //Pregunto si la celda es diferente a null
                if (dgvEstadoArticulo.Rows[Indice].Cells[(int)ENumColDGVEstadoArticulo.Seleccionar].Value != null)
                {
                    //Casteo el check del objeto a booleano y pregunto si es true
                    if ((bool)dgvEstadoArticulo.Rows[Indice].Cells[(int)ENumColDGVEstadoArticulo.Seleccionar].Value)
                    {
                        string InformacionDelError = string.Empty;

                        ActualizarArticulo = Articulo.LeerPorNumero((int)dgvEstadoArticulo.Rows[Indice].Cells[(int)ENumColDGVEstadoArticulo.ID_Articulo].Value, ref InformacionDelError);

                        if (ActualizarArticulo != null)
                        {
                            ActualizarArticulo.ID_EstadoArticulo = (int)_EstadoElemento;

                            if (ActualizarArticulo.CategoriaArticulo.ID_EstadoCategoriaArticulo != (int)ClsEstadosCategoriasArticulos.EEstadosCategoriasArticulos.inactivo)
                            {
                                if (Articulo.Actualizar(ActualizarArticulo, ref InformacionDelError) != 0)
                                {
                                    dgvEstadoArticulo.Rows.Remove(dgvEstadoArticulo.Rows[Indice]);

                                    Indice       -= 1;
                                    TotalDeFilas -= 1;

                                    UltimaFilaSeleccionada = -1;
                                }
                                else if (InformacionDelError != string.Empty)
                                {
                                    MessageBox.Show($"{InformacionDelError}", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                                }
                            }
                            else
                            {
                                using (FrmInformacion FormInformacion = new FrmInformacion($"El articulo '{ActualizarArticulo.Nombre}' (categoria '{ActualizarArticulo.CategoriaArticulo.Nombre}') " +
                                                                                           $"no se puede activar debido a que su categoria fue eliminada.", ClsColores.Blanco, 150, 350))
                                {
                                    FormInformacion.ShowDialog();
                                }
                            }
                        }
                        else if (InformacionDelError == string.Empty)
                        {
                            MessageBox.Show($"Error al intentar actualizar el articulo", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                        else
                        {
                            MessageBox.Show($"{InformacionDelError}", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                    }
                }
            }
        }
        private void BtnAplicarAumentoDescuento_Click(object sender, EventArgs e)
        {
            if (txtCantidad.Text == string.Empty)
            {
                txtCantidad.Text = "0";
            }

            CargarDGVCarta(ClsArticulos.ETipoListado.ArticulosActivos);

            ClsArticulos Articulos        = new ClsArticulos();
            Articulo     ActualizarPrecio = new Articulo();

            // Entrar solo si al menos el usuario marco un check para aplicarle aumento
            if (chkAplicarADelivery.Checked || chkAplicarACarta.Checked)
            {
                // TODO - Realizar un aumento/descuento a los articulos seleccionados en funcion del porcentaje y el RBN seleccioando
                for (int Indice = 0; Indice < dgvCarta.Rows.Count; Indice++)
                {
                    //Pregunto si la celda es diferente a null
                    if (dgvCarta.Rows[Indice].Cells[(int)ENumColDGVCarta.Seleccionar].Value != null)
                    {
                        //Casteo el check del objeto a booleano y pregunto si es true
                        if ((bool)dgvCarta.Rows[Indice].Cells[(int)ENumColDGVCarta.Seleccionar].Value)
                        {
                            string InformacionDelError = string.Empty;

                            ActualizarPrecio = Articulos.LeerPorNumero((int)dgvCarta.Rows[Indice].Cells[(int)ENumColDGVCarta.ID_Articulo].Value, ref InformacionDelError);

                            if (rbnAumento.Checked)
                            {
                                if (chkAplicarADelivery.Checked && !chkAplicarACarta.Checked)
                                {
                                    if (ActualizarPrecio.PrecioDelivery != null)
                                    {
                                        if (RbnPorcentaje.Checked)
                                        {
                                            ActualizarPrecio.PrecioDelivery += ActualizarPrecio.PrecioDelivery * (int)nudPorcentaje.Value / 100;
                                        }
                                        else
                                        {
                                            ActualizarPrecio.PrecioDelivery += Convert.ToInt32(txtCantidad.Text);
                                        }
                                    }
                                }
                                else if (!chkAplicarADelivery.Checked && chkAplicarACarta.Checked)
                                {
                                    if (ActualizarPrecio.Precio != null)
                                    {
                                        if (RbnPorcentaje.Checked)
                                        {
                                            ActualizarPrecio.Precio += ActualizarPrecio.Precio * (int)nudPorcentaje.Value / 100;
                                        }
                                        else
                                        {
                                            ActualizarPrecio.Precio += Convert.ToInt32(txtCantidad.Text);
                                        }
                                    }
                                }
                                else
                                {
                                    if (ActualizarPrecio.Precio != null)
                                    {
                                        if (RbnPorcentaje.Checked)
                                        {
                                            ActualizarPrecio.Precio += ActualizarPrecio.Precio * (int)nudPorcentaje.Value / 100;
                                        }
                                        else
                                        {
                                            ActualizarPrecio.Precio += Convert.ToInt32(txtCantidad.Text);
                                        }
                                    }

                                    if (ActualizarPrecio.PrecioDelivery != null)
                                    {
                                        if (RbnPorcentaje.Checked)
                                        {
                                            ActualizarPrecio.PrecioDelivery += ActualizarPrecio.PrecioDelivery * (int)nudPorcentaje.Value / 100;
                                        }
                                        else
                                        {
                                            ActualizarPrecio.PrecioDelivery += Convert.ToInt32(txtCantidad.Text);
                                        }
                                    }
                                }
                            }
                            else
                            {
                                if (chkAplicarADelivery.Checked && !chkAplicarACarta.Checked)
                                {
                                    if (ActualizarPrecio.PrecioDelivery != null)
                                    {
                                        if (RbnPorcentaje.Checked)
                                        {
                                            ActualizarPrecio.PrecioDelivery -= ActualizarPrecio.PrecioDelivery * (int)nudPorcentaje.Value / 100;
                                        }
                                        else
                                        {
                                            ActualizarPrecio.PrecioDelivery -= Convert.ToInt32(txtCantidad.Text);
                                        }
                                    }
                                }
                                else if (!chkAplicarADelivery.Checked && chkAplicarACarta.Checked)
                                {
                                    if (ActualizarPrecio.Precio != null)
                                    {
                                        if (RbnPorcentaje.Checked)
                                        {
                                            ActualizarPrecio.Precio -= ActualizarPrecio.Precio * (int)nudPorcentaje.Value / 100;
                                        }
                                        else
                                        {
                                            ActualizarPrecio.Precio -= Convert.ToInt32(txtCantidad.Text);
                                        }
                                    }
                                }
                                else
                                {
                                    if (ActualizarPrecio.Precio != null)
                                    {
                                        if (RbnPorcentaje.Checked)
                                        {
                                            ActualizarPrecio.Precio -= ActualizarPrecio.Precio * (int)nudPorcentaje.Value / 100;
                                        }
                                        else
                                        {
                                            ActualizarPrecio.Precio -= Convert.ToInt32(txtCantidad.Text);
                                        }
                                    }

                                    if (ActualizarPrecio.PrecioDelivery != null)
                                    {
                                        if (RbnPorcentaje.Checked)
                                        {
                                            ActualizarPrecio.PrecioDelivery -= ActualizarPrecio.PrecioDelivery * (int)nudPorcentaje.Value / 100;
                                        }
                                        else
                                        {
                                            ActualizarPrecio.PrecioDelivery -= Convert.ToInt32(txtCantidad.Text);
                                        }
                                    }
                                }
                            }

                            if (chkAplicarADelivery.Checked && !chkAplicarACarta.Checked && chkRedondearPrecio.Checked)
                            {
                                if (ActualizarPrecio.PrecioDelivery != null)
                                {
                                    ActualizarPrecio.PrecioDelivery = Math.Floor((double)ActualizarPrecio.PrecioDelivery);

                                    if (ActualizarPrecio.PrecioDelivery % 5 != 0)
                                    {
                                        ActualizarPrecio.PrecioDelivery = ActualizarPrecio.PrecioDelivery + (5 - (ActualizarPrecio.PrecioDelivery % 5));
                                    }
                                }
                            }
                            else if (!chkAplicarADelivery.Checked && chkAplicarACarta.Checked && chkRedondearPrecio.Checked)
                            {
                                if (ActualizarPrecio.Precio != null)
                                {
                                    ActualizarPrecio.Precio = Math.Floor((double)ActualizarPrecio.Precio);

                                    if (ActualizarPrecio.Precio % 5 != 0)
                                    {
                                        ActualizarPrecio.Precio = ActualizarPrecio.Precio + (5 - (ActualizarPrecio.Precio % 5));
                                    }
                                }
                            }
                            else if (chkRedondearPrecio.Checked)
                            {
                                if (ActualizarPrecio.Precio != null)
                                {
                                    ActualizarPrecio.Precio = Math.Floor((double)ActualizarPrecio.Precio);

                                    if (ActualizarPrecio.Precio % 5 != 0)
                                    {
                                        ActualizarPrecio.Precio = ActualizarPrecio.Precio + (5 - (ActualizarPrecio.Precio % 5));
                                    }
                                }

                                if (ActualizarPrecio.PrecioDelivery != null)
                                {
                                    ActualizarPrecio.PrecioDelivery = Math.Floor((double)ActualizarPrecio.PrecioDelivery);

                                    if (ActualizarPrecio.PrecioDelivery % 5 != 0)
                                    {
                                        ActualizarPrecio.PrecioDelivery = ActualizarPrecio.PrecioDelivery + (5 - (ActualizarPrecio.PrecioDelivery % 5));
                                    }
                                }
                            }

                            bool PrecioPermitido = false;
                            bool PrecioMinimo    = false;

                            if (ActualizarPrecio.Precio == null)
                            {
                                PrecioPermitido = true;
                            }
                            else
                            {
                                if (ActualizarPrecio.Precio >= 10 && ActualizarPrecio.Precio <= 999999)
                                {
                                    PrecioPermitido = true;
                                }
                                else if (ActualizarPrecio.Precio < 10)
                                {
                                    PrecioPermitido = false;
                                    PrecioMinimo    = true;
                                }
                                else
                                {
                                    PrecioPermitido = false;
                                }
                            }

                            if (ActualizarPrecio.PrecioDelivery == null)
                            {
                                PrecioPermitido = true;
                            }
                            else
                            {
                                if (ActualizarPrecio.PrecioDelivery >= 10 && ActualizarPrecio.PrecioDelivery <= 999999)
                                {
                                    PrecioPermitido = true;
                                }
                                else if (ActualizarPrecio.PrecioDelivery < 10)
                                {
                                    PrecioPermitido = false;
                                    PrecioMinimo    = true;
                                }
                                else
                                {
                                    PrecioPermitido = false;
                                }
                            }

                            if (PrecioPermitido)
                            {
                                if (ActualizarPrecio.Precio != null)
                                {
                                    ActualizarPrecio.Precio = Math.Round((double)ActualizarPrecio.Precio, 2);
                                }
                                if (ActualizarPrecio.PrecioDelivery != null)
                                {
                                    ActualizarPrecio.PrecioDelivery = Math.Round((double)ActualizarPrecio.PrecioDelivery, 2);
                                }

                                if (Articulos.Actualizar(ActualizarPrecio, ref InformacionDelError) != 0)
                                {
                                    if (ActualizarPrecio.Precio == null)
                                    {
                                        dgvCarta.Rows[Indice].Cells[(int)ENumColDGVCarta.PrecioCarta].Value = "NO TIENE";
                                    }
                                    else
                                    {
                                        dgvCarta.Rows[Indice].Cells[(int)ENumColDGVCarta.PrecioCarta].Value = ActualizarPrecio.Precio;
                                    }

                                    if (ActualizarPrecio.PrecioDelivery == null)
                                    {
                                        dgvCarta.Rows[Indice].Cells[(int)ENumColDGVCarta.PrecioDelivery].Value = "NO TIENE";
                                    }
                                    else
                                    {
                                        dgvCarta.Rows[Indice].Cells[(int)ENumColDGVCarta.PrecioDelivery].Value = ActualizarPrecio.PrecioDelivery;
                                    }
                                }
                                else if (InformacionDelError != string.Empty)
                                {
                                    FrmPrincipal.ObtenerInstancia().MensajeAdvertencia("Error al intentar actualizar los precios");
                                    MessageBox.Show($"{InformacionDelError}", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                                }
                            }
                            else if (PrecioMinimo)
                            {
                                using (FrmInformacion FormInformacion = new FrmInformacion($"El articulo '{dgvCarta.Rows[Indice].Cells[(int)ENumColDGVCarta.Nombre].Value.ToString()}' (categoria '{dgvCarta.Rows[Indice].Cells[(int)ENumColDGVCarta.Categoria].Value.ToString()}') " +
                                                                                           $"no se puede actualizar debido a que su precio seria inferior al minimo ($10 pesos).", ClsColores.Blanco, 350, 150))
                                {
                                    FormInformacion.ShowDialog();
                                }
                            }
                            else
                            {
                                using (FrmInformacion FormInformacion = new FrmInformacion($"El articulo '{dgvCarta.Rows[Indice].Cells[(int)ENumColDGVCarta.Nombre].Value.ToString()}' (categoria '{dgvCarta.Rows[Indice].Cells[(int)ENumColDGVCarta.Categoria].Value.ToString()}') " +
                                                                                           $"no se puede actualizar debido a que su precio seria superior al maximo permitido (999999).", ClsColores.Blanco, 350, 150))
                                {
                                    FormInformacion.ShowDialog();
                                }
                            }
                            dgvCarta.Rows[Indice].Cells[(int)ENumColDGVCarta.Seleccionar].Value = false;
                        }
                    }
                }
                CambiarCheckboxSeleccion(false);
            }
        }
Esempio n. 3
0
        private void BtnGuardarCambios_Click(object sender, EventArgs e)
        {
            bool   DatosValidos         = true;
            string RegistroDeErrores    = string.Empty;
            int    AnchoFormInformacion = 100;

            CategoriaArticulo CategoriaArticulo = null;

            txtNombreArticulo.Text = txtNombreArticulo.Text.Trim();
            txtDescripcion.Text    = txtDescripcion.Text.Trim();
            txtPrecio.Text         = txtPrecio.Text.Trim();

            if (txtNombreArticulo.Text.Length < 3)
            {
                DatosValidos          = false;
                RegistroDeErrores    += "El campo 'Nombre' debe tener como minimo 3 caracteres.\r\n\r\n";
                AnchoFormInformacion += 50;
            }

            if (txtPrecio.Text != string.Empty)
            {
                if (txtPrecio.Text.Substring(0, 1) == "," || txtPrecio.Text.Substring(txtPrecio.Text.Length - 1, 1) == "," || Convert.ToDouble(txtPrecio.Text) < 10)
                {
                    DatosValidos       = false;
                    RegistroDeErrores += "El campo 'Precio' debe ser mayor a $10 (verifique tambien que no tenga la " +
                                         "coma del centavo al principio o al final).\r\n\r\n";
                    AnchoFormInformacion += 50;
                }
            }

            if (txtPrecioDelivery.Text != string.Empty)
            {
                if (txtPrecioDelivery.Text.Substring(0, 1) == "," || txtPrecioDelivery.Text.Substring(txtPrecioDelivery.Text.Length - 1, 1) == "," || Convert.ToDouble(txtPrecioDelivery.Text) < 10)
                {
                    DatosValidos       = false;
                    RegistroDeErrores += "El campo 'Precio delivery' debe ser mayor a $10 (verifique tambien que no tenga la " +
                                         "coma del centavo al principio o al final).\r\n\r\n";
                    AnchoFormInformacion += 50;
                }
            }

            if (cmbCategoria.SelectedItem != null)
            {
                CategoriaArticulo = (CategoriaArticulo)cmbCategoria.SelectedItem;
            }
            else
            {
                DatosValidos          = false;
                RegistroDeErrores    += "Seleccione una categoria.\r\n\r\n";
                AnchoFormInformacion += 50;
            }

            if (VerificarArticuloRepetido(txtNombreArticulo.Text, ID_Articulo))
            {
                DatosValidos          = false;
                RegistroDeErrores    += "El nombre del articulo ya se encuentra en uso.\r\n\r\n";
                AnchoFormInformacion += 50;
            }

            if (txtPrecio.Text == string.Empty && txtPrecioDelivery.Text == string.Empty)
            {
                DatosValidos          = false;
                RegistroDeErrores    += "El articulo debe tener un precio para carta o delivery.\r\n\r\n";
                AnchoFormInformacion += 50;
            }

            if (DatosValidos)
            {
                txtNombreArticulo.Text = txtNombreArticulo.Text.Substring(0, 1).ToUpper() + txtNombreArticulo.Text.Remove(0, 1).ToLower();

                if (txtDescripcion.Text != string.Empty)
                {
                    txtDescripcion.Text = txtDescripcion.Text.Substring(0, 1).ToUpper() + txtDescripcion.Text.Remove(0, 1).ToLower();
                }

                string InformacionDelError = string.Empty;

                ClsArticulos Articulo           = new ClsArticulos();
                Articulo     ActualizarArticulo = new Articulo();

                ActualizarArticulo.ID_Articulo = ID_Articulo;
                ActualizarArticulo.Nombre      = txtNombreArticulo.Text;
                ActualizarArticulo.Descripcion = txtDescripcion.Text;

                if (txtPrecio.Text == string.Empty)
                {
                    ActualizarArticulo.Precio = null;
                }
                else
                {
                    ActualizarArticulo.Precio = Math.Round(Convert.ToDouble(txtPrecio.Text), 2);
                }

                if (txtPrecioDelivery.Text == string.Empty)
                {
                    ActualizarArticulo.PrecioDelivery = null;
                }
                else
                {
                    ActualizarArticulo.PrecioDelivery = Math.Round(Convert.ToDouble(txtPrecioDelivery.Text), 2);
                }

                ActualizarArticulo.ID_EstadoArticulo    = (int)ClsEstadosArticulos.EEstadosArticulos.Activo;
                ActualizarArticulo.ID_CategoriaArticulo = CategoriaArticulo.ID_CategoriaArticulo;

                if (Articulo.Actualizar(ActualizarArticulo, ref InformacionDelError) != 0)
                {
                    DialogResult = DialogResult.OK;
                    Close();
                }
                else if (InformacionDelError != string.Empty)
                {
                    MessageBox.Show($"{InformacionDelError}", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            else
            {
                using (FrmInformacion FormInformacion = new FrmInformacion(RegistroDeErrores, ClsColores.Blanco, AnchoFormInformacion, 400))
                {
                    FormInformacion.ShowDialog();
                }
            }
        }