public ActionResult Imprimir(FormCollection Col) { if (Col.Count > 0) { using (var DB = new LibreriaDB()) { var Usu = DB.Usuario.SingleOrDefault(P => P.Login == User.Identity.Name); var Suc = DB.Sucursal.SingleOrDefault(P => P.IdSucursal == 1); var Nro = DB.PROObtenerNroFactura(Suc.NroAutorizacion).SingleOrDefault(); //Se crea la Factura Factura Fac = new Factura(); Fac.Numero = int.Parse(Nro.ToString()); Fac.IdSucursal = Suc.IdSucursal; Fac.Nombre = Col["txtNombre"]; Fac.NIT = Col["txtNIT"]; Fac.Fecha = DateTime.Now; Fac.FechaREG = DateTime.Now; Fac.IdUsuario = (short)Usu.IdSujeto; Fac.Activo = true; //Se obtienen los detalles de la Factura. var Cars = DB.Carrito.Where(P => P.SessionID == Session.SessionID & P.Transaccion == true & P.Activo == true).ToList(); decimal Totales = 0; foreach (var Item in Cars) { Detalle Det = new Detalle(); Det.IdProducto = Item.IdProducto; Det.Cantidad = Item.Cantidad; Det.Monto = Math.Round(Item.CostoTotal, 2, MidpointRounding.AwayFromZero); Totales += Det.Monto; Fac.Detalle.Add(Det); DB.PROActualizarStock(Item.IdProducto, Item.Cantidad); Item.Activo = false; } //Se crea el codigo de control. CCodigoControl Cod = new CCodigoControl(); Fac.CodigoControl = Cod.GetCodigoControl(Suc.NroAutorizacion, Fac.Numero.ToString(), Fac.NIT, DateTime.Now.ToString("yyyyMMdd"), Math.Round(Totales, 0, MidpointRounding.AwayFromZero).ToString(), Suc.Llave); DB.Factura.Add(Fac); DB.SaveChanges(); //Se pasan los datos a mostrar para la impresion de factura. Factura Fact = DB.Factura.Include("Sucursal").SingleOrDefault(P => P.Numero == (int)Nro & P.CodigoControl == Fac.CodigoControl); var Dets = DB.Detalle.Include("Producto").Where(P => P.IdFactura == Fact.IdFactura).ToList(); ViewData["Detalle"] = Dets; Num2Letras Lit = new Num2Letras(); ViewData["Literal"] = Lit.Convertir(Math.Round(Totales, 2, MidpointRounding.AwayFromZero).ToString()); ViewData["Total"] = Math.Round(Totales, 2, MidpointRounding.AwayFromZero).ToString(); ViewData["FecLimite"] = ((DateTime)Fact.Sucursal.LimiteEmision).ToString("dd/MM/yyyy"); var lista = (from cc in DB.Carrito where cc.Activo == true select cc); foreach (Carrito carrito in lista.ToList()) { carrito.SessionID = "0"; carrito.Activo = false; DB.SaveChanges(); } //return View(Fact); return(new Rotativa.ViewAsPdf(Fact)); } } else { return(HttpNotFound()); } }