Esempio n. 1
0
        public void Makepdf(int cotiid, string ruta)
        {
            //funciones
            Funciones f = new Funciones();
            //traemos datos de la tabla cotizaciones para llenar documento pdf
            CotizaBD         ctzBD    = new CotizaBD();
            CotizaCab        cCab     = ctzBD.ConsultarCab(cotiid);
            List <CotizaDet> listcDet = ctzBD.ConsultarDet(cotiid);

            //creacion de documento
            Document       document = new Document();
            PdfWriter      pdfw     = default(PdfWriter);
            PdfContentByte cb       = default(PdfContentByte);

            iTextSharp.text.pdf.BaseFont fuente = default(iTextSharp.text.pdf.BaseFont);
            //para que el pdf se cree en la carpeta debe asegurarse que se tienen todos los pemisos en el servidor
            pdfw = PdfWriter.GetInstance(document, new FileStream(ruta + cotiid.ToString() + ".pdf", FileMode.Create, FileAccess.Write, FileShare.None));
            //apertura para iniciar incercion de datos
            document.Open();
            cb = pdfw.DirectContent;
            //Nueva pagina
            document.NewPage();
            cb.BeginText();
            fuente = FontFactory.GetFont(FontFactory.TIMES_ROMAN, iTextSharp.text.Font.DEFAULTSIZE, iTextSharp.text.Font.NORMAL).BaseFont;
            cb.SetFontAndSize(fuente, 20);
            cb.SetColorFill(iTextSharp.text.Color.BLACK);
            cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, "Cotización # " + cotiid.ToString(), 300, PageSize.LEDGER.Height - 75, 0);
            cb.EndText();
            pdfw.Flush();

            //creacion de la tabla detalle
            Table oTblDet = new Table(5, listcDet.Count - 1);

            oTblDet.DefaultHorizontalAlignment = 1;

            //Instancia de clienteBD para accder medoto consultarC para obetener datos del Cliente
            ClienteBD cliBD = new ClienteBD();
            Cliente   cli   = cliBD.ConsultarC(cCab.Cliid);

            //Incersion del logo al documento
            try
            {
                Image png = Image.GetInstance(new Uri("http://viveromarket.com/images/logo.png"));
                png.SetAbsolutePosition(350, 753);
                png.ScalePercent(85);
                document.Add(png);
            }
            catch
            {
            }

            //parrafos cabecera de documento datos de ViveroMarket
            Paragraph p0  = new Paragraph(new Chunk("ViveroMarket.com / Vivero Cia. Ltd. ", FontFactory.GetFont(FontFactory.HELVETICA, 12)));
            Paragraph p01 = new Paragraph(new Chunk("Acuerelas del Rio Mz. 225 V. 1 - Fono: 042236212", FontFactory.GetFont(FontFactory.HELVETICA, 12)));
            Paragraph p02 = new Paragraph(new Chunk("email: [email protected]", FontFactory.GetFont(FontFactory.HELVETICA, 12)));

            //parrafos cabecera de Cotizacion
            Paragraph p1 = new Paragraph(new Chunk("Cliente:       " + f.Mayus(cli.Nombre.ToLower())
                                                   + tabulador1(cli.Nombre.Length) +
                                                   "Fecha:       " + cCab.Fecha.ToShortDateString().ToString(),
                                                   FontFactory.GetFont(FontFactory.HELVETICA, 12)));
            Paragraph p2 = new Paragraph(new Chunk("Ci/Ruc:       " + cli.Ciruc
                                                   + tabulador2(cli.Nombre.Length, cli.Ciruc.Length) +
                                                   "Teléfono:   " + cli.Fono1, FontFactory.GetFont(FontFactory.HELVETICA, 12)));
            Paragraph p3 = new Paragraph(new Chunk("Dirección:   " + f.Mayus(cli.Dir.ToLower()), FontFactory.GetFont(FontFactory.HELVETICA, 12)));
            Paragraph p4 = new Paragraph(new Chunk("Detalle:", FontFactory.GetFont(FontFactory.HELVETICA, 12)));

            //espacios entre parrafos 1 y parrafo4
            p1.SpacingBefore = 50;
            p4.SpacingBefore = 15;

            //incersion parrafos de cabecera al documento
            document.Add(p0);
            document.Add(p01);
            document.Add(p02);
            document.Add(p1);
            document.Add(p2);
            document.Add(p3);
            document.Add(p4);

            //header del detalle
            Cell cell1 = new Cell("Codigo");
            Cell cell2 = new Cell("Producto");
            Cell cell3 = new Cell("Cantidad");
            Cell cell4 = new Cell("P. Unitario");
            Cell cell5 = new Cell("Total");

            //sombras en los headers
            cell1.BackgroundColor = iTextSharp.text.Color.LIGHT_GRAY;
            cell2.BackgroundColor = iTextSharp.text.Color.LIGHT_GRAY;
            cell3.BackgroundColor = iTextSharp.text.Color.LIGHT_GRAY;
            cell4.BackgroundColor = iTextSharp.text.Color.LIGHT_GRAY;
            cell5.BackgroundColor = iTextSharp.text.Color.LIGHT_GRAY;
            //add  header a la taabla detalle
            oTblDet.AddCell(cell1);
            oTblDet.AddCell(cell2);
            oTblDet.AddCell(cell3);
            oTblDet.AddCell(cell4);
            oTblDet.AddCell(cell5);

            //instaciamos productoBD para acceder a metodo consultar producto para obtener nombre
            ProductoBD pBD = new ProductoBD();

            //rrecorremos la lista detalle y llenamos tabla del pdf
            for (int i = 0; i <= listcDet.Count - 1; i++)
            {
                Producto p = pBD.Consultar(listcDet[i].Prodid, listcDet[i].Cateid, listcDet[i].Prov);

                oTblDet.AddCell("P" + listcDet[i].Prodid.ToString() + "C" + listcDet[i].Cateid.ToString() + "V" + listcDet[i].Prov.ToString());
                oTblDet.AddCell(p.Nombre);
                oTblDet.AddCell(listcDet[i].Cantidad.ToString());
                oTblDet.AddCell(Math.Round(listcDet[i].Precio, 2).ToString());
                oTblDet.AddCell(Math.Round(listcDet[i].Subtotal, 2).ToString());
            }


            //separador
            Cell cell6 = new Cell("");

            cell6.Leading = 30;
            //cell6.Rowspan = 3;
            cell6.Colspan         = 5;
            cell6.BackgroundColor = new Color(0xC0, 0xC0, 0xC0);
            oTblDet.AddCell(cell6);

            //separador colspan 3
            Cell cell60 = new Cell("");

            cell60.HorizontalAlignment = Element.ALIGN_RIGHT;
            cell60.Rowspan             = 3;
            cell60.Colspan             = 3;
            oTblDet.AddCell(cell60);

            //subtotal etiqueta
            Cell cell61 = new Cell("SubTotal:");

            cell61.HorizontalAlignment = Element.ALIGN_RIGHT;
            oTblDet.AddCell(cell61);
            //subtotal valor
            decimal st     = cCab.Total / decimal.Parse("1,12");
            Cell    cell62 = new Cell(Math.Round(st, 2).ToString());

            oTblDet.AddCell(cell62);

            //iva etiqueta
            Cell cell71 = new Cell("Iva:");

            cell71.HorizontalAlignment = Element.ALIGN_RIGHT;
            oTblDet.AddCell(cell71);
            //iva valor
            decimal iva    = st * decimal.Parse("0,12");
            Cell    cell72 = new Cell(Math.Round(iva, 2).ToString());

            oTblDet.AddCell(cell72);

            //total etiqueta
            Cell cell81 = new Cell("Total:");

            cell81.HorizontalAlignment = Element.ALIGN_RIGHT;
            oTblDet.AddCell(cell81);
            //total valor
            Cell cell82 = new Cell(Math.Round(cCab.Total, 2).ToString());

            oTblDet.AddCell(cell82);
            //incersion de tabla detalle al documento
            oTblDet.Cellpadding = 1;
            oTblDet.Offset      = 15;
            document.Add(oTblDet);

            //parrafo final
            string    msgfinal = "ViveroMarket.com                                 Tiempo de Valides 15 días desde su emisión";
            Paragraph pfinal   = new Paragraph(new Chunk(msgfinal, FontFactory.GetFont(FontFactory.HELVETICA, 12)));

            pfinal.SpacingBefore = 20;
            //insercion parrafo final
            document.Add(pfinal);

            document.Close();
        }