/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.ddns.grupotsergio;

import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;

import java.sql.*;

import com.itextpdf.text.Document;
import com.itextpdf.text.Element;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.ByteArrayOutputStream;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import java.io.Writer;
import java.text.Format;
import af.AceFilial;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Font;
import com.itextpdf.text.Font.FontFamily;
import java.text.DecimalFormat;

/**
 *
 * @author Edson
 */
public class relatReqCompra extends HttpServlet {

    public void doGet(HttpServletRequest req, HttpServletResponse res)
            throws ServletException, IOException{
        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        String acao = req.getParameter("acao");
        PdfWriter wri = null;
        Document doc = null;

        if(acao.equals("Imprimir")){
            try{
                doc = new Document(PageSize.A4);
                wri = PdfWriter.getInstance(doc, baos);
                doc.open();

                Font font = new Font(FontFamily.HELVETICA, 8, Font.NORMAL, BaseColor.BLACK);

                PdfPTable table = new PdfPTable(1);
                table.setWidthPercentage(100f);
                table.getDefaultCell().setUseAscender(true);
                table.getDefaultCell().setUseDescender(true);

                reqcomprasGS reqc = new reqcomprasGS();
                reqc.selImpReqcompImp();
                ResultSet lista = reqc.getResultado();
                if(lista.next()){
                    String pat = "C:/CTSoftWares/web/Imagens/Empresa"+lista.getString("idempresa")+".jpg";
                    Image img = Image.getInstance(pat);
                    doc.add(Image.getInstance(pat));

                    doc.add(new Paragraph(lista.getString("titulopedido")+" Nº "+
                        lista.getString("idreqcompras")));

                    doc.add(new Paragraph(lista.getString("empresa")));

                    doc.add(new Paragraph("Endereço:"+lista.getString("endereco")+
                    ", Nº"+lista.getString("numero")+" - "+lista.getString("complemento"),font));

                    doc.add(new Paragraph("Bairro: "+lista.getString("bairro")+ " CEP: "+
                    lista.getString("cep"),font));

                    doc.add(new Paragraph("Cidade: " +lista.getString("cidade")+
                    "/"+lista.getString("uf") + " - Telefone: "+lista.getString("fone")+
                    " E-mail: "+lista.getString("email"),font));

                    doc.add(new Paragraph("CNPJ:" + lista.getString("cnpj") +
                    " Inscrição Estadual: ISENTO",font));

                    doc.add(new Paragraph("Contrato(Centro de Custo) "+
                        lista.getString("ctto"),font));
              
                    doc.add(new Paragraph(""));

                    PdfContentByte can = wri.getDirectContent();
                    can.saveState();
                    can.setLineWidth(0.05f);
                    can.moveTo(35, 620);
                    can.lineTo(550, 620);
                    can.stroke();
                    can.restoreState();
                
                    doc.add(new Paragraph("Fornecedor"));

                    doc.add(new Paragraph("Nome: "+lista.getString("nome")+ " - "+lista.getString("nomefantasia")));
                    doc.add(new Paragraph("Endereço: "+lista.getString("fendereco")+
                    ", "+lista.getString("fnumero"),font));
                    doc.add(new Paragraph("Bairro: "+lista.getString("fbairro")+
                    " - CEP.: "+lista.getString("fcep"),font));
                    doc.add(new Paragraph("Cidade: "+lista.getString("fcidade")+
                    "/"+lista.getString("fuf") + " - Telefone: " +lista.getString("ffone")+
                    " E-mail: " +lista.getString("femail"),font));
                    doc.add(new Paragraph("CNPJ: "+lista.getString("fcnpj") +
                    " Inscrição Estadual: "+lista.getString("fie") +
                    " Inscrição Municipal: "+lista.getString("fin"),font));
                    doc.add(new Paragraph("Pessoa de Contato: "+lista.getString("contato"),font));

                }
                doc.add(table);

                PdfPTable tab = new PdfPTable(new float[]{1, 5, 1, 1, 1, 1});
                tab.setWidthPercentage(100f);
                tab.getDefaultCell().setUseAscender(true);
                tab.getDefaultCell().setUseDescender(true);

                reqcomprasGS reqci = new reqcomprasGS();
                reqci.selImpReqcompImp();
                ResultSet listai = reqci.getResultado();

                PdfPCell cab11 = new PdfPCell(new Phrase("Item",font));
                cab11.setHorizontalAlignment(Element.ALIGN_LEFT);
                tab.addCell(cab11);

                PdfPCell cab = new PdfPCell(new Phrase("Produto",font));
                cab.setHorizontalAlignment(Element.ALIGN_LEFT);
                tab.addCell(cab);

                PdfPCell cab10 = new PdfPCell(new Phrase("Unid.",font));
                cab10.setHorizontalAlignment(Element.ALIGN_RIGHT);
                tab.addCell(cab10);

                PdfPCell cab1 = new PdfPCell(new Phrase("Qtd.",font));
                cab1.setHorizontalAlignment(Element.ALIGN_RIGHT);
                tab.addCell(cab1);

                PdfPCell cab2 = new PdfPCell(new Phrase("Unit.",font));
                cab2.setHorizontalAlignment(Element.ALIGN_RIGHT);
                tab.addCell(cab2);

  //              tab.addCell(listai.getString("i.vlricms"));
    //            tab.addCell(listai.getString("i.vlripi"));

                PdfPCell cab3 = new PdfPCell(new Phrase("Total",font));
                cab3.setHorizontalAlignment(Element.ALIGN_RIGHT);

                tab.addCell(cab3);

                DecimalFormat df = new DecimalFormat();
                df.applyPattern("###,##0.000");

                DecimalFormat df1 = new DecimalFormat();
                df1.applyPattern("###,##0.00");

                double qitens = 0;
                int nitens = 0;

                while(listai.next()){
                    PdfPCell cl11 = new PdfPCell(new Phrase(listai.getString("idrelreqcompras"),font));
                    cl11.setHorizontalAlignment(Element.ALIGN_CENTER);
                    tab.addCell(cl11);

                    PdfPCell cl = new PdfPCell(new Phrase(listai.getString("produto"),font));
                    cl.setHorizontalAlignment(Element.ALIGN_LEFT);
                    tab.addCell(cl);

                    PdfPCell cel10 = new PdfPCell(new Phrase(listai.getString("unid"),font));
                    cel10.setHorizontalAlignment(Element.ALIGN_CENTER);
                    tab.addCell(cel10);

                    PdfPCell cel = new PdfPCell(new Phrase(df.format(listai.getDouble("qtd")),font));
                    cel.setHorizontalAlignment(Element.ALIGN_RIGHT);
                    tab.addCell(cel);

                    PdfPCell cel1 = new PdfPCell(new Phrase(df1.format(listai.getDouble("unit")),font));
                    cel1.setHorizontalAlignment(Element.ALIGN_RIGHT);
                    tab.addCell(cel1);
                
//                tab.addCell(listai.getString("i.vlricms"));
  //              tab.addCell(listai.getString("i.vlripi"));


                    PdfPCell cel2 = new PdfPCell(new Phrase(df1.format(listai.getDouble("toal")),font));
                    cel2.setHorizontalAlignment(Element.ALIGN_RIGHT);
                    tab.addCell(cel2);
                    qitens = qitens + listai.getDouble("qtd");
                    nitens = nitens + 1;
                }
                doc.add(tab);
                
                DecimalFormat df10 = new DecimalFormat();
                df10.applyPattern("###,###,##0.00");
                doc.add(new Paragraph("Quantidade total de Itens: "+df10.format(qitens),font));
                doc.add(new Paragraph("Número de itens de Itens: "+df10.format(nitens),font));
                             
                reqcomprasGS requ = new reqcomprasGS();
                requ.selImpReqcompImp();
                ResultSet list = requ.getResultado();
                if(list.next()){
                    DecimalFormat df3 = new DecimalFormat();
                    df3.applyPattern("###,###,##0.00");
                    doc.add(new Paragraph("Total dos Produtos: "+df3.format(list.getDouble("baseicm")),font));

//                doc.add(new Paragraph("Total do I.C.M.S.: "+list.getString("r.vlricms")));
  //              doc.add(new Paragraph("Total do I.P.I.: "+list.getString("r.vlripi")));

                    DecimalFormat df4 = new DecimalFormat();
                    df4.applyPattern("###,###,##0.00");
                    doc.add(new Paragraph("Valor do Frete: "+df4.format(list.getDouble("frete")),font));

                    DecimalFormat df5 = new DecimalFormat();
                    df5.applyPattern("###,###,##0.00");
                    doc.add(new Paragraph("Valor do Seguro: "+df5.format(list.getDouble("seg")),font));

                    DecimalFormat df6 = new DecimalFormat();
                    df6.applyPattern("###,###,##0.00");
                    doc.add(new Paragraph("Outras Despesas: "+df6.format(list.getDouble("desp")),font));

                    DecimalFormat df7 = new DecimalFormat();
                    df7.applyPattern("###,###,##0.00");
                    doc.add(new Paragraph("Sub-Total: "+df7.format(list.getDouble("subtt")),font));

                    DecimalFormat df8 = new DecimalFormat();
                    df8.applyPattern("###,###,##0.00");
                    doc.add(new Paragraph("Desconto: "+df8.format(list.getDouble("desconto")),font));

                    DecimalFormat df9 = new DecimalFormat();
                    df9.applyPattern("###,###,##0.00");
                    doc.add(new Paragraph("Total: "+df9.format(list.getDouble("total"))));

                    DataMy_Bra emi = new DataMy_Bra();
                    emi.DataMy_Bra(list.getString("dtemissao"));
                    doc.add(new Paragraph("Data da Emissão: "+emi.bras,font));
                    doc.add(new Paragraph("Condições de Pgto.: "+list.getString("condpgto"),font));
                    doc.add(new Paragraph("Prazo de Enerega: "+list.getString("prazoentre"),font));
                    doc.add(new Paragraph("Local de Enerega: "+list.getString("localentre"),font));
                    doc.add(new Paragraph(" "));
                    doc.add(new Paragraph("Visto do Solicitante: _______________________________________ Data: ___/___/___"));
                    doc.add(new Paragraph(" "));
                    doc.add(new Paragraph("Visto da Diretoria: _______________________________________ Data: ___/___/___"));
                    doc.add(new Paragraph(" "));
                    doc.add(new Paragraph("Observações: "+list.getString("obs"),font));
                }
                doc.close();
            }catch(Exception e){
                e.printStackTrace();
            }
            res.setContentType("application/pdf");
            res.setContentLength(baos.size());
            ServletOutputStream out = res.getOutputStream();
            baos.writeTo(out);
            out.flush();
        }
    }
}
