Ejemplo n.º 1
0
        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());
            }
        }