Beispiel #1
0
        public async Task <ActionResult> AnularOrdenCompra(DTOOrdenVenta orden)
        {
            string _id = null;

            try
            {
                _id = User.Claims.First(x => x.Type == "Idusuario").Value;
            }
            catch (Exception)
            {
                return(await Task.FromResult(StatusCode(401, "Acceso restringido")));
            }

            var ordenVenta = await _context.OrdenVenta.FirstOrDefaultAsync(x => x.IdordenVenta == orden.IdordenVenta);

            if (ordenVenta.IdestadoOrdenVenta == (int)EnumVentas.Entregada || ordenVenta.IdestadoOrdenVenta == (int)EnumVentas.Anulada)
            {
                return(Ok("Esta orden se encuentra entregada/anulada no es posible anularla"));
            }

            ordenVenta.IdestadoOrdenVenta = (int)EnumVentas.Anulada;

            //foreach (var detalle in orden.DetalleOrdenCompra)
            //{
            //    var producto = await _context.Inventario.FirstOrDefaultAsync(x => x.Idproducto == detalle.Idproducto);

            //    producto.Cantidad -= detalle.Cantidad;

            //}

            await _context.SaveChangesAsync();

            return(Ok("Orden de venta anulada"));
        }
Beispiel #2
0
        public async Task <ActionResult> UpdateOrdenVenta(DTOOrdenVenta orden)
        {
            string _id = null;

            try
            {
                _id = User.Claims.First(x => x.Type == "Idusuario").Value;
            }
            catch (Exception)
            {
                return(await Task.FromResult(StatusCode(401, "Acceso restringido")));
            }

            var ordenVenta = await _context.OrdenVenta.FirstOrDefaultAsync(x => x.IdordenVenta == orden.IdordenVenta);

            var nextEstado = await Estados(ordenVenta.IdordenVenta);

            ordenVenta.IdestadoOrdenVenta = nextEstado;

            if (ordenVenta.IdestadoOrdenVenta == (int)EnumVentas.Entregada)
            {
                foreach (var detalle in orden.DetalleOrdenVenta)
                {
                    var producto = await _context.Inventario.FirstOrDefaultAsync(x => x.Idproducto == detalle.Idproducto);

                    producto.Cantidad -= detalle.Cantidad;
                }
            }

            await _context.SaveChangesAsync();

            return(Ok("Orden de venta actualizada"));
        }
Beispiel #3
0
        public async Task <ActionResult> PostOrdenCompra(DTOOrdenVenta orden)
        {
            string _id = null;

            try
            {
                _id = User.Claims.First(x => x.Type == "Idusuario").Value;
            }
            catch (Exception)
            {
                return(await Task.FromResult(StatusCode(401, "Acceso restringido")));
            }

            OrdenVenta item = new OrdenVenta()
            {
                FechaCreacion      = DateTime.Now,
                FechaSalida        = orden.FechaSalida,
                UserCreatedId      = Int32.Parse(_id),
                Idcliente          = orden.Idcliente,
                IdestadoOrdenVenta = (int)EnumVentas.Proceso,
                Tipo           = orden.Tipo,
                SubTotal       = orden.SubTotal,
                IdDescuento    = orden.IdDescuento,
                MontoDescuento = orden.MontoDescuento,
                Impuesto       = orden.Impuesto,
                Total          = orden.Total
            };

            _context.OrdenVenta.Add(item);
            await _context.SaveChangesAsync();

            foreach (var detalle in orden.DetalleOrdenVenta)
            {
                DetalleOrdenVenta itemDetalle = new DetalleOrdenVenta()
                {
                    IdordenVenta     = item.IdordenVenta,
                    Idproducto       = detalle.Idproducto,
                    IdunidadMedida   = detalle.IdunidadMedida,
                    Cantidad         = detalle.Cantidad,
                    TotalUnidadVenta = detalle.TotalUnidadVenta
                };

                _context.DetalleOrdenVenta.Add(itemDetalle);

                //var producto = await _context.Inventario.FirstOrDefaultAsync(x => x.Idproducto == detalle.Idproducto);

                //producto.Cantidad += detalle.Cantidad;

                await _context.SaveChangesAsync();
            }

            return(Ok("Orden de venta realizada"));
        }