public ActionResult GenerarNotaPedido(int Id) { var venta = ventaMayoristaBL.GetVentaMayoristaById(Id); VentaMayoristaViewModel viewModel = new VentaMayoristaViewModel(venta) { // Clientes = clienteBL.GetClienteById(venta.ClienteID), //ProductoXVenta = productoxVentaBL.GetProductoXVentaByIdVenta(venta.ID) }; ViewBag.ProductoXVenta = productoxVentaBL.GetProductoXVentaByIdVenta(venta.ID); return(View("NotaDePedidoForm", viewModel)); }
public void CrearPdf(int id) { using (StringWriter sw = new StringWriter()) { using (HtmlTextWriter hw = new HtmlTextWriter(sw)) { StringBuilder sb = new StringBuilder(); var venta = ventaMayoristaBL.GetVentaMayoristaById(id); VentaMayoristaViewModel viewModel = new VentaMayoristaViewModel(venta) { // Clientes = clienteBL.GetClienteById(venta.ClienteID), ProductoXVenta = productoxVentaBL.GetProductoXVentaByIdVenta(venta.ID) }; sb.Append("<br />"); sb.Append("<br />"); sb.Append("<br />"); sb.Append("<br />"); sb.Append("<br />"); sb.Append("<br />"); sb.Append("<br />"); sb.Append("<br />"); //Generar contenido del body de la tabla sb.Append("<table style='font-size:9px;' border = '0' ;>"); double sumaParcial = 0; double sumaSinDescuentos = 0; bool fondoColor = true; foreach (var prod in viewModel.ProductoXVenta) { if (fondoColor) { sb.Append("<tr bgcolor='#e1e3e8'>"); fondoColor = false; } else { sb.Append("<tr>"); fondoColor = true; } if (prod.Producto.MarcaId != null) { sb.Append("<td width='24%' style='font-size:10px;'>" + prod.Producto.Nombre + " (" + prod.Producto.Marca.Nombre + ")" + "</td>"); } if (prod.Producto.CategoriaId != null) { sb.Append("<td width='24%' style='font-size:10px;'>" + prod.Producto.Nombre + " (" + prod.Producto.Categoria.Nombre + ")" + "</td>"); } sb.Append("<td width='5%' align = 'center'>" + prod.Cantidad + "</td>"); sb.Append("<td width='4%' align = 'center'>" + prod.TipoDeUnidad.Nombre + "</td>"); sb.Append("<td width='6%' align = 'center'>" + prod.Importe + "</td>"); sb.Append("<td width='5%' align = 'left'>" + Math.Round((double)prod.Descuento, 2) + "</td>"); sb.Append("<td width='6%' align = 'left'>" + prod.Total + "</td>"); if (prod.Producto.MarcaId != null) { sb.Append("<td width='24%' style='font-size:10px;'>" + prod.Producto.Nombre + " (" + prod.Producto.Marca.Nombre + ")" + "</td>"); } if (prod.Producto.CategoriaId != null) { sb.Append("<td width='24%' style='font-size:10px;'>" + prod.Producto.Nombre + " (" + prod.Producto.Categoria.Nombre + ")" + "</td>"); } sb.Append("<td width='5%' align = 'center'>" + prod.Cantidad + "</td>"); sb.Append("<td width='4%' align = 'center'>" + prod.TipoDeUnidad.Nombre + "</td>"); sb.Append("<td width='6%' align = 'center'>" + prod.Importe + "</td>"); sb.Append("<td width='5%' align = 'left'>" + Math.Round((double)prod.Descuento, 2) + "</td>"); sb.Append("<td width='6%' align = 'left'>" + prod.Total + "</td>"); sb.Append("</tr>"); sumaParcial += prod.Total; if (prod.Descuento == 0) { sumaSinDescuentos += prod.Total; } } //Calculamos importe del descuento aplicado double?descuentoFinal = 0; double?ivaFinal = 0; double?total = 0; double?nuevoTotal = 0; double?precioSinIVA = 0; double?precioTotalSinDesc = 0; if (venta.IVA != 0) { total = venta.IVA / 100; nuevoTotal = 1 + total; precioSinIVA = venta.SumaTotal / nuevoTotal; ivaFinal = Math.Round((venta.SumaTotal - precioSinIVA).Value, 2); } if (venta.TipoDescuentoTotal == 1) { descuentoFinal = venta.Descuento; } else { if (venta.Descuento == null) { venta.Descuento = 0; } if (venta.IVA != 0) { precioTotalSinDesc = (precioSinIVA * 100) / (100 - venta.Descuento); descuentoFinal = Math.Round(((venta.Descuento * precioTotalSinDesc) / 100).Value, 2); } else { descuentoFinal = (venta.Descuento * sumaSinDescuentos) / 100; } } //Calculamos Anterior double?saldoAnterior = (venta.EntregaEfectivo == 0) ? venta.Debe - venta.SumaTotal : (venta.EntregaEfectivo - venta.SumaTotal) + venta.Debe; sb.Append("<tr><td colspan='2' ></td><td align = 'right' colspan = '2' >Suma de Venta: </td>"); sb.Append("<td align = 'left' colspan = '2'>$" + sumaParcial + "</td>"); sb.Append("</tr>"); sb.Append("<tr><td colspan='2' ></td><td align = 'right' colspan = '2' >Suma de Venta: </td>"); sb.Append("<td align = 'left' colspan = '2'>$" + sumaParcial + "</td>"); sb.Append("</tr>"); sb.Append("<tr><td colspan='2' ></td><td align = 'right' colspan = '2' >Descuento: </td>"); sb.Append("<td align = 'left' colspan = '2'>$" + descuentoFinal + "</td>"); sb.Append("</tr>"); sb.Append("<tr><td colspan='2' ></td><td align = 'right' colspan = '2' >Descuento: </td>"); sb.Append("<td align = 'left' colspan = '2'>$" + descuentoFinal + "</td>"); sb.Append("</tr>"); sb.Append("<tr><td colspan='2' ></td><td align = 'right' colspan = '2' >IVA: </td>"); sb.Append("<td align = 'left' colspan = '2'>$" + ivaFinal + "</td>"); sb.Append("</tr>"); sb.Append("<tr><td colspan='2' ></td><td align = 'right' colspan = '2' >IVA: </td>"); sb.Append("<td align = 'left' colspan = '2'>$" + ivaFinal + "</td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td colspan='2' rowspan='3'>"); sb.Append("<table width='90%' align='center'><tr><td border='1' align='center' style='font-size:8px;'>"); sb.Append("No se aceptan devoluciones pasadas las 72hs de entregado el pedido." + " Los cambios, devoluciones y omisiones se realizarán en la siguiente compra. Revisar el pedido en el momento de la entrega."); sb.Append("</td></tr></table>"); sb.Append("</td>"); sb.Append("<td align = 'right' colspan = '2'>Total: </td>"); sb.Append("<td align = 'left' colspan = '2'>$" + venta.SumaTotal + "</td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td colspan='2' rowspan='3' >"); sb.Append("<table width='90%' align='center'><tr><td border='1' align='center' style='font-size:8px;'>"); sb.Append("No se aceptan devoluciones pasadas las 72hs de entregado el pedido." + " Los cambios, devoluciones y omisiones se realizarán en la siguiente compra. Revisar el pedido en el momento de la entrega."); sb.Append("</td></tr></table>"); sb.Append("</td>"); sb.Append("<td align = 'right' colspan = '2'>Total: </td>"); sb.Append("<td align = 'left' colspan = '2'>$" + venta.SumaTotal + "</td>"); sb.Append("</tr>"); sb.Append("<tr><td align = 'right' colspan = '2' >Anterior: </td>"); sb.Append("<td align = 'left' colspan = '2'>$" + saldoAnterior + "</td>"); sb.Append("</tr>"); sb.Append("<tr><td align = 'right' colspan = '2' >Anterior: </td>"); sb.Append("<td align = 'left' colspan = '2'>$" + saldoAnterior + "</td>"); sb.Append("</tr>"); sb.Append("<tr><td align = 'right' colspan = '2' >Saldo: </td>"); sb.Append("<td align = 'left' colspan = '2'>$" + venta.Debe + "</td>"); sb.Append("</tr>"); sb.Append("<tr><td align = 'right' colspan = '2' >Saldo: </td>"); sb.Append("<td align = 'left' colspan = '2'>$" + venta.Debe + "</td>"); sb.Append("</tr>"); sb.Append("</table>"); //Export HTML String as PDF. StringReader sr = new StringReader(sb.ToString()); Document pdfDoc = new Document(PageSize.A4.Rotate(), 25, 25, 30, 25); //Instanciamos Componentes para el Header PDFHeader pageHeader = new PDFHeader(); pageHeader.VentaMayorista = viewModel; PDFFooter pagefooter = new PDFFooter(); pagefooter.VentaMayorista = viewModel; HTMLWorker htmlparser = new HTMLWorker(pdfDoc); PdfWriter writer = PdfWriter.GetInstance(pdfDoc, HttpContext.Current.Response.OutputStream); writer.PageEvent = pageHeader; writer.PageEvent = pagefooter; //Donde la magia sucede pdfDoc.Open(); htmlparser.Parse(sr); pdfDoc.Close(); HttpContext.Current.Response.ContentType = "application/pdf"; HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=NotaPedido_" + venta.NumeroVenta + ".pdf"); HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache); HttpContext.Current.Response.Write(pdfDoc); HttpContext.Current.Response.End(); } } }