Esempio n. 1
0
        // GET: Facturas
        public ActionResult NuevaFactura()
        {
            var facturaView = new FacturaView();
            facturaView.Cliente = new Cliente();
            facturaView.Inventarios = new List<InventarioOrden>();
            Session["facturaView"] = facturaView;

            var lista = (db.Clientes.ToList());
            lista.Add(new Cliente { cl_cedula = 0, cl_nombre = "[Seleccione un Cliente]" });
            lista = lista.OrderBy(c => c.cl_nombre).ToList();
            ViewBag.cl_cedula = new SelectList(lista, "cl_cedula", "cl_nombre");

            return View(facturaView);
        }
Esempio n. 2
0
        public ActionResult NuevaFactura(FacturaView facturaView)
        {
            facturaView = Session["facturaView"] as FacturaView;

            var cl_cedula = int.Parse(Request["cl_cedula"]);
            if (cl_cedula == 0)
            {
                var lista = (db.Clientes.ToList());
                lista.Add(new Cliente { cl_cedula = 0, cl_nombre = "[Seleccione un Cliente]" });
                lista = lista.OrderBy(c => c.cl_nombre).ToList();
                ViewBag.cl_cedula = new SelectList(lista, "cl_cedula", "cl_nombre");
                ViewBag.Error = "Debe seleccionar un cliente";
                return View(facturaView);

            }
            //verificar si existe
            var cliente = db.Clientes.Find(cl_cedula);
            if (cliente == null)
            {
                 var lista = (db.Clientes.ToList());
                lista.Add(new Cliente { cl_cedula = 0, cl_nombre = "[Seleccione un Cliente]" });
                lista = lista.OrderBy(c => c.cl_nombre).ToList();
                ViewBag.cl_cedula = new SelectList(lista, "cl_cedula", "cl_nombre");
                ViewBag.Error = "Debe seleccionar un cliente";
                return View(facturaView);
            }
            //si hay productos
            if (facturaView.Inventarios.Count == 0)
            {
                var lista = (db.Clientes.ToList());
                lista.Add(new Cliente { cl_cedula = 0, cl_nombre = "[Seleccione un Cliente]" });
                lista = lista.OrderBy(c => c.cl_nombre).ToList();
                ViewBag.cl_cedula = new SelectList(lista, "cl_cedula", "cl_nombre");
                ViewBag.Error = "Debe seleccionar un Producto";
                return View(facturaView);
            }

            int facturaID = 0;

            using (var transaction = db.Database.BeginTransaction())
            {
                try
                {
                    //grabar orden
                    var factura = new Factura
                    {
                        ft_Cliente = cl_cedula,
                        ft_fecha = DateTime.Now.Date,
                        ft_estampa = DateTime.Now.TimeOfDay,
                        FacturaEstados = FacturaEstados.Pendiente
                    };
                    db.Facturas.Add(factura);
                    db.SaveChanges();
                    var i = 1;

                    //recuperar el ultimo consecutivo para generar la orden
                    facturaID = db.Facturas.ToList().Select(o => o.ft_numero).Max();

                    foreach (var item in facturaView.Inventarios)
                    {
                        var DetalleFactura = new DetalleFactura
                        {
                            df_numeroLinea = i++,
                            df_codArticulo = item.in_codArticulo,
                            df_descripcion = item.in_descripcion,
                            df_precio = item.in_precio,
                            df_cantidad = item.Cantidad,
                            df_subtotal = item.SubTotal,
                            df_descuento = item.Descuento,
                            df_total = item.Total,
                            df_factura = facturaID
                        };
                        db.DetalleFacturas.Add(DetalleFactura);
                        db.SaveChanges();
                    }
                    transaction.Commit();

                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    ViewBag.Error = "Error: " + ex.Message;
                    var listaC = (db.Clientes.ToList());
                    listaC.Add(new Cliente { cl_cedula = 0, cl_nombre = "[Seleccione un Cliente]" });
                    listaC = listaC.OrderBy(c => c.cl_nombre).ToList();
                    ViewBag.cl_cedula = new SelectList(listaC, "cl_cedula", "cl_nombre");
                    return View(facturaView);
                }

            }

            ViewBag.Message = string.Format("La orden: {0}, grabada ok", facturaID);

            var listaCU = (db.Clientes.ToList());
            listaCU.Add(new Cliente { cl_cedula = 0, cl_nombre = "[Seleccione un Cliente]" });
            listaCU = listaCU.OrderBy(c => c.cl_nombre).ToList();
            ViewBag.cl_cedula = new SelectList(listaCU, "cl_cedula", "cl_nombre");

            facturaView = new FacturaView();
            facturaView.Cliente = new Cliente();
            facturaView.Inventarios = new List<InventarioOrden>();
            Session["facturaView"] = facturaView;

            return View(facturaView);
        }