示例#1
0
        public ActionResult Create()
        {
            VentaEditViewModel ventaVm = new VentaEditViewModel
            {
                Clientes = CombosHelper.GetClientes()
            };
            List <DetalleVentaTmp> detallesTmp = _dbContext
                                                 .DetalleVentasTmp.Include(dvt => dvt.Producto)
                                                 .ToList();

            ventaVm.DetallesVenta = Mapper
                                    .Map <List <DetalleVentaTmp>, List <DetalleVentaListViewModel> >(detallesTmp);
            //return View(ventaVm);
            return(View("Create2", ventaVm));
        }
示例#2
0
        public ActionResult Up(int id)
        {
            var detalleTmp = _dbContext.DetalleVentasTmp
                             .SingleOrDefault(dvt => dvt.DetalleVentaTmpId == id);
            var producto = _dbContext.Productos
                           .SingleOrDefault(p => p.ProductoId == detalleTmp.ProductoId);
            VentaEditViewModel ventaVm = new VentaEditViewModel
            {
                Clientes = CombosHelper.GetClientes()
            };

            if (producto.UnidadesEnExistencia < detalleTmp.Cantidad + 1)
            {
                var detalles = _dbContext.DetalleVentasTmp
                               .Include(dvt => dvt.Producto)
                               .ToList();
                ventaVm.DetallesVenta = Mapper
                                        .Map <List <DetalleVentaTmp>, List <DetalleVentaListViewModel> >(detalles);
                ModelState.AddModelError(string.Empty, "Stock insuficiente");

                return(RedirectToAction("Create", ventaVm));
            }

            try
            {
                detalleTmp.Cantidad++;
                _dbContext.Entry(detalleTmp).State = EntityState.Modified;
                _dbContext.SaveChanges();
                var detalles = _dbContext.DetalleVentasTmp
                               .Include(dvt => dvt.Producto)
                               .ToList();
                ventaVm.DetallesVenta = Mapper
                                        .Map <List <DetalleVentaTmp>, List <DetalleVentaListViewModel> >(detalles);

                return(RedirectToAction("Create"));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(string.Empty, "Error al intentar guardar un item de vta");
                var detalles = _dbContext.DetalleVentasTmp
                               .Include(dvt => dvt.Producto)
                               .ToList();
                ventaVm.DetallesVenta = Mapper
                                        .Map <List <DetalleVentaTmp>, List <DetalleVentaListViewModel> >(detalles);

                return(RedirectToAction("Create"));
            }
        }
示例#3
0
        public ActionResult Down(int id)
        {
            var detalleTmp = _dbContext.DetalleVentasTmp
                             .SingleOrDefault(dvt => dvt.DetalleVentaTmpId == id);
            VentaEditViewModel ventaVm = new VentaEditViewModel
            {
                Clientes = CombosHelper.GetClientes()
            };

            if (detalleTmp.Cantidad - 1 < 0)
            {
                var detalles = _dbContext.DetalleVentasTmp
                               .Include(dvt => dvt.Producto)
                               .ToList();
                ventaVm.DetallesVenta = Mapper
                                        .Map <List <DetalleVentaTmp>, List <DetalleVentaListViewModel> >(detalles);
                ModelState.AddModelError(string.Empty, "La cantidad ya está en 0");

                return(RedirectToAction("Create", ventaVm));
            }

            try
            {
                detalleTmp.Cantidad--;
                _dbContext.Entry(detalleTmp).State = EntityState.Modified;
                _dbContext.SaveChanges();
                var detalles = _dbContext.DetalleVentasTmp
                               .Include(dvt => dvt.Producto)
                               .ToList();
                ventaVm.DetallesVenta = Mapper
                                        .Map <List <DetalleVentaTmp>, List <DetalleVentaListViewModel> >(detalles);

                return(RedirectToAction("Create"));
            }
            catch (Exception ex)
            {
                var detalles = _dbContext.DetalleVentasTmp
                               .Include(dvt => dvt.Producto)
                               .ToList();
                ventaVm.DetallesVenta = Mapper
                                        .Map <List <DetalleVentaTmp>, List <DetalleVentaListViewModel> >(detalles);
                ModelState.AddModelError(string.Empty, "Error al intentar guardar un item de vta");

                return(RedirectToAction("Create"));
            }
        }
示例#4
0
        public ActionResult Create(VentaEditViewModel ventaVm)
        {
            if (!ModelState.IsValid)
            {
                ventaVm.Clientes = CombosHelper.GetClientes();
                List <DetalleVentaTmp> detallesTmp = _dbContext
                                                     .DetalleVentasTmp.Include(dvt => dvt.Producto)
                                                     .ToList();
                ventaVm.DetallesVenta = Mapper
                                        .Map <List <DetalleVentaTmp>, List <DetalleVentaListViewModel> >(detallesTmp);

                //return View(ventaVm);
                return(View("Create2", ventaVm));
            }

            var cantidadItems = _dbContext.DetalleVentasTmp.Count(dvt => dvt.Cantidad > 0);

            if (cantidadItems == 0)
            {
                ModelState.AddModelError(string.Empty, "Debe contener al menos un item o items con cantidades superiores a 0");
                ventaVm.Clientes = CombosHelper.GetClientes();
                List <DetalleVentaTmp> detallesTmp = _dbContext
                                                     .DetalleVentasTmp.Include(dvt => dvt.Producto)
                                                     .ToList();
                ventaVm.DetallesVenta = Mapper
                                        .Map <List <DetalleVentaTmp>, List <DetalleVentaListViewModel> >(detallesTmp);

                //return View(ventaVm);
                return(View("Create2", ventaVm));
            }

            LimpiarListaDeItemsTemporales();
            Venta venta = Mapper.Map <VentaEditViewModel, Venta>(ventaVm);

            using (var tran = _dbContext.Database.BeginTransaction())
            {
                try
                {
                    venta.EstadoId = CombosHelper.GetEstado("Facturado");
                    _dbContext.Ventas.Add(venta);
                    _dbContext.SaveChanges();

                    var detalles = _dbContext.DetalleVentasTmp.ToList();
                    foreach (var detalleVentaTmp in detalles)
                    {
                        //Creo el detalle venta
                        DetalleVenta detalle = Mapper
                                               .Map <DetalleVentaTmp, DetalleVenta>(detalleVentaTmp);
                        detalle.VentaId = venta.VentaId;       //le asigno el nro de venta
                        _dbContext.DetalleVentas.Add(detalle); //guardo el detalle
                        //Busco el producto para modificar su stock
                        var productoInDb = _dbContext
                                           .Productos.SingleOrDefault(p => p.ProductoId == detalle.ProductoId);
                        productoInDb.UnidadesEnExistencia   -= detalle.Cantidad;
                        _dbContext.Entry(productoInDb).State = EntityState.Modified; //cambio el estado de la entidad
                        _dbContext.DetalleVentasTmp.Remove(detalleVentaTmp);         //borro el detalle temporal
                    }

                    _dbContext.SaveChanges();
                    tran.Commit();
                    //TempData["Msg"] = "Venta guardada";
                    //return RedirectToAction("Index");
                    ViewBag.VentaId = venta.VentaId;
                    return(View("SuccessfullySave"));
                }
                catch (Exception e)
                {
                    ModelState.AddModelError(string.Empty, "Error al intentar guardar la venta");
                    //return View(ventaVm);
                    return(View("Create2", ventaVm));
                }
            }
        }