public void Modificar(BajaArticuloDto baja)
        {
            using (var context = new ModeloXCommerceContainer())
            {
                var BajaModificar = context.BajaArticulos.Include(x => x.Articulo)
                                    .FirstOrDefault(x => x.Id == baja.Id);
                BajaModificar.Id           = baja.Id;
                BajaModificar.ArticuloId   = baja.ArticuloId;
                BajaModificar.Fecha        = baja.Fecha;
                BajaModificar.MotivoBajaId = baja.MotivoBajaId;
                BajaModificar.Observacion  = baja.Observacion;
                var art = context.Articulos.FirstOrDefault(x => x.Id == BajaModificar.ArticuloId);
                if (art.DescuentaStock)
                {
                    if (baja.Cantidad > BajaModificar.Cantidad)
                    {
                        art.Stock -= (baja.Cantidad - BajaModificar.Cantidad);
                    }
                    else
                    {
                        art.Stock += (BajaModificar.Cantidad - baja.Cantidad);
                    }
                }

                BajaModificar.Cantidad = baja.Cantidad;
                context.SaveChanges();
            }
        }
        public override bool EjecutarComandoModificar()
        {
            if (!VerificarDatosObligatorios())
            {
                MessageBox.Show(@"Por favor ingrese los campos Obligatorios.", @"Atención", MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
                return(false);
            }

            var baja = new BajaArticuloDto
            {
                Id           = EntidadId.Value,
                ArticuloId   = ((ArticuloDto)cmbArticulo.SelectedItem).Id,
                MotivoBajaId = ((MotivoBajaDto)cmbMotivo.SelectedItem).Id,
                Cantidad     = nudCantidad.Value,
                Fecha        = dtpFecha.Value,
                Observacion  = txtObservacion.Text
            };

            var art = _articuloServicio.ObtenerPorId(((ArticuloDto)cmbArticulo.SelectedItem).Id);

            if (art.Stock >= nudCantidad.Value || art.PermiteStockNegativo)
            {
                _bajaArticuloServicio.Modificar(baja);
                return(true);
            }
            else
            {
                MessageBox.Show(@"No se puede realizar la baja de articulos por stock mas bajo a la baja", "Atencion",
                                MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return(false);
            }
        }
        public override void EjecutarComandoModificar()
        {
            var modificarBaja = new BajaArticuloDto
            {
                Id           = EntidadId.Value,
                ArticuloId   = int.Parse(txtArticulo.Text),
                MotivoBajaId = (long)cmbMotivoBaja.SelectedValue,
                Cantidad     = nudCantidadBaja.Value,
                Observacion  = txtObservacion.Text,
                Eliminado    = false
            };


            _bajaArticuloServicio.Modificar(modificarBaja);
        }
        public long Insertar(BajaArticuloDto dto)
        {
            using (var context = new ModeloXCommerceContainer())
            {
                var nuevoBajaArticulo = new AccesoDatos.BajaArticulo
                {
                    Fecha        = dto.Fecha,
                    Cantidad     = dto.Cantidad,
                    Observacion  = dto.Observacion,
                    MotivoBajaId = dto.MotivoBajaId,
                    ArticuloId   = dto.ArticuloId
                };

                context.BajaArticulos.Add(nuevoBajaArticulo);

                context.SaveChanges();

                return(nuevoBajaArticulo.Id);
            }
        }
        public long?Agregar(BajaArticuloDto baja)
        {
            using (var context = new ModeloXCommerceContainer())
            {
                var BajaAgregar = new AccesoDatos.BajaArticulo();
                BajaAgregar.Id           = baja.Id;
                BajaAgregar.ArticuloId   = baja.ArticuloId;
                BajaAgregar.Cantidad     = baja.Cantidad;
                BajaAgregar.Fecha        = baja.Fecha;
                BajaAgregar.MotivoBajaId = baja.MotivoBajaId;
                BajaAgregar.Observacion  = baja.Observacion;

                context.BajaArticulos.Add(BajaAgregar);
                var art = context.Articulos.FirstOrDefault(x => x.Id == BajaAgregar.ArticuloId);
                if (art.DescuentaStock)
                {
                    art.Stock -= BajaAgregar.Cantidad;
                }
                context.SaveChanges();
                return(BajaAgregar.Id);
            }
        }
        public override void EjecutarComandoNuevo()
        {
            if (VerificarDatosObligatorios())
            {
                if (nudStockActual.Value >= nudCantidadBaja.Value)
                {
                    var nuevaBaja = new BajaArticuloDto
                    {
                        ArticuloId   = int.Parse(txtArticulo.Text),
                        MotivoBajaId = (long)cmbMotivoBaja.SelectedValue,
                        Cantidad     = nudCantidadBaja.Value,
                        Fecha        = DateTime.Now,
                        Observacion  = txtObservacion.Text,
                        Eliminado    = false
                    };

                    _bajaArticuloServicio.Insertar(nuevaBaja);
                }
                else
                {
                    MessageBox.Show("La cantidad de articulos a dar de baja debe ser menor o igual al stock actual");
                }
            }
        }
        public override bool EjecutarComandoNuevo()
        {
            if (!VerificarDatosObligatorios())
            {
                MessageBox.Show(@"Por favor ingrese los campos Obligatorios.",
                                @"Atención",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
                return(false);
            }

            var nuevaBajaArticulo = new BajaArticuloDto
            {
                Fecha        = dtpFecha.Value,
                Observacion  = txtObservacion.Text,
                Cantidad     = nudCantidad.Value,
                MotivoBajaId = ((MotivoBajaDto)cmbMotivoBaja.SelectedItem).Id,
                ArticuloId   = _articuloId
            };

            _bajaArticuloServicio.Insertar(nuevaBajaArticulo);

            return(true);
        }