public QuantidadeItem(int cod_venda, Completa p)
 {
     InitializeComponent();
     produto = p;
     numQuantidade.Maximum = decimal.Parse(  p.quantidade.ToString().Replace(',','.') );
     this.cod_venda = cod_venda;
 }
 public void setCompleta(Completa[] conjunto)
 {
     Completos = conjunto;
     produto.AddRange(conjunto);
     for (int i = 0; i < conjunto.Length; i++)
         this.valorTotal += (conjunto[i].valorUnitario * conjunto[i].quantidade);
 }
        public void gerarComandaCozinha(Completa[] produto, string[] mesa, bool reimpresso)
        {
            try
            {
                this.printDocument1.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("comanda", 304, 2000);
                printDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.printDocument1_PrintPage);
                Reporter mr = new Reporter();
                if (File.Exists(endereco))
                    File.Delete(endereco);

                mr.Output = endereco;
                mr.StartJob();
                //tamanho Interno 23

                Comanda cc = new Comanda(venda.cod_venda, true);
                string pont = "|---------------------|";
                int line = 1;
                //

                string cozinha = new Banco().carregaComandaCozinha();
                mr.PrintText(line++, 01, "|----" + cozinha + "----|");//13

                mr.PrintText(line, 01, "| Data : " + DateTime.Now.ToShortDateString()); mr.PrintText(line++, 23, "|");
                mr.PrintText(line, 01, "| Hora : " + DateTime.Now.ToShortTimeString()); mr.PrintText(line++, 23, "|");
                mr.PrintText(line++, 01, pont);
                mr.PrintText(line, 01, "|"); mr.PrintText(line++, 23, "|");
                //produto
                int ii = produto.Length;

                while (ii-- > 0)
                {
                    if (reimpresso)
                    {
                        mr.PrintText(line, 1, "| - REIMPRESSAO "); mr.PrintText(line++, 23, "|");
                    }
                    mr.PrintText(line, 1, "| - " + produto[ii].segmentoImprimir); mr.PrintText(line++, 23, "|");

                    string tam = new BancoInformacao().tamanhoDescricaoByCodigo(produto[ii].produto[0].cod_tamanho);
                    if (tam.Length > 14) tam = tam.Substring(0, 14);
                    mr.PrintText(line, 1, "| Especif. - " + tam); mr.PrintText(line++, 23, "|");
                    for (int j = 0; j < produto[ii].produto.Length; j++)
                    {
                        string prod = "Item - " + new Banco().preencherNomeProdctAll(produto[ii].produto[j].cod_produto);
                        if (prod.Length > 16) prod = prod.Substring(0, 16);
                        mr.PrintText(line, 01, "| " + prod); mr.PrintText(line++, 23, "|");
                        mr.PrintText(line, 1, "| PRECO UNITARIO - " + produto[ii].valorUnitario); mr.PrintText(line++, 23, "|");
                        if (produto[ii].produto[j].porcentagem != 1)
                        {
                            mr.PrintText(line, 01, "|");
                            mr.PrintText(line, 6, " -- " + (produto[ii].produto[j].porcentagem * 100) + " %");
                            mr.PrintText(line++, 23, "|");
                        }
                    }
                    mr.PrintText(line, 1, "|Quantidade - " + produto[ii].quantidade.ToString("0.000")); mr.PrintText(line++, 23, "|");
                    mr.PrintText(line, 1, "|Valor Item - " + (produto[ii].valorUnitario * produto[ii].quantidade).ToString("0.00")); mr.PrintText(line++, 23, "|");
                    //   mr.PrintText(line, 01, "|"); mr.PrintText(line++, 17, "|");
                    string noticia = "";
                    int u = 0;
                    string nota = produto[ii].getNoticia(); string obs = "obs. "; int limite = 16;
                    while (u < nota.Length)
                    {
                        if (noticia.Length % limite == 0 && u >= limite)
                        {
                            mr.PrintText(line, 01, obs + noticia); mr.PrintText(line++, 23, "|"); noticia = ""; obs = ""; limite = 22;
                        }
                        noticia += produto[ii].getNoticia().Substring(u++, 1);
                    }
                    mr.PrintText(line, 01, "|" + noticia); mr.PrintText(line++, 23, "|"); noticia = "";
                    mr.PrintText(line++, 01, "| --  -   --   -  --  |");
                }
                //produto
                mr.PrintText(line++, 01, pont);
                if (produto[0].garconImprimir.Length > 12) produto[0].garconImprimir = produto[0].garconImprimir.Substring(0, 12);
                string garc = "| GARCOM -" + produto[0].garconImprimir;
                mr.PrintText(line, 01, garc); mr.PrintText(line++, 23, "|");

                mr.PrintText(line, 01, "| " + mesa[mesa.Length - 1]); mr.PrintText(line++, 23, "|");
                mr.PrintText(line++, 01, pont);

                mr.PrintJob();
                mr.EndJob();
                lerArquivo(new Banco().getCodImpressoraByTipo(new BancoConsulta().cod_tipoPeloNome(new Banco().segmentoDoProduto(produto[0].produto[0].cod_produto))));
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message+ "info add:  "+ ee.Data);
            }
        }
        public void novoMetodo(Completa[] produto, string[] mesa)
        {
            try
            {
                Reporter mr = new Reporter();
                EpsonCodes mer = new EpsonCodes();

                if (File.Exists(endereco))
                    File.Delete(endereco);

                mr.Output = endereco;
                mr.StartJob();
                Comanda cc = new Comanda(venda.cod_venda, true);
                string pont = "|---------------------------|";
                int line = 1;
                int limite = 29;
                mr.PrintText(line++, 01, "|----------COZINHA----------|");

                mr.PrintText(line, 01, "|Data:" + DateTime.Now.ToShortDateString()); mr.PrintText(line++, limite, "|");
                mr.PrintText(line, 01, "|Hora:" + DateTime.Now.ToShortTimeString()); mr.PrintText(line++, limite, "|");
                mr.PrintText(line++, 01, pont);
                mr.PrintText(line, 01, "|"); mr.PrintText(line++, limite, "|");
                //produto
                int ii = produto.Length;

                while (ii-- > 0)
                {
                    mr.PrintText(line, 1, "| - " + produto[ii].segmentoImprimir); mr.PrintText(line++, limite, "|");
                    string tam = new BancoInformacao().tamanhoDescricaoByCodigo(produto[ii].produto[0].cod_tamanho);
                    if (tam.Length > 18) tam = tam.Substring(0, 18);
                    mr.PrintText(line, 1, "|Tamanho- " + tam); mr.PrintText(line++, limite, "|");
                    for (int j = 0; j < produto[ii].produto.Length; j++)
                    {
                        string prod = new Banco().preencherNomeProdctAll(produto[ii].produto[j].cod_produto);
                        if (prod.Length > 27) prod = prod.Substring(0, 27);
                        mr.PrintText(line, 01, "|" + prod); mr.PrintText(line++, limite, "|");
                        mr.PrintText(line, 01, "|"); mr.PrintText(line, 6, "--" + (produto[ii].produto[j].porcentagem * 100) + " %"); mr.PrintText(line++, limite, "|");
                    }

                    mr.PrintText(line, 1, "|Quantidade - " + produto[ii].quantidade); mr.PrintText(line++, limite, "|");
                    string noticia = "";
                    int u = 0;
                    string nota = produto[ii].getNoticia(); string obs = "obs. "; int limit = limite -7;
                    while (u < nota.Length)
                    {
                        if (noticia.Length % limit == 0 && u >= limit)
                        {
                            mr.PrintText(line, 01, obs + noticia); mr.PrintText(line++, limite, "|"); noticia = ""; obs = ""; limit = limite-1;
                        }
                        noticia += produto[ii].getNoticia().Substring(u++, 1);
                    }
                    mr.PrintText(line, 01, "|" + noticia); mr.PrintText(line++, limite, "|"); noticia = "";
                    mr.PrintText(line++, 01, "| -- - -- - --  |");
                }
                //produto
                mr.PrintText(line++, 01, pont);
                if (produto[0].garconImprimir.Length > 15) produto[0].garconImprimir = produto[0].garconImprimir.Substring(0, 15);
                string garc = "|GARCON -" + produto[0].garconImprimir;
                mr.PrintText(line, 01, garc); mr.PrintText(line++, limite, "|");

                mr.PrintText(line, 01, "| " + mesa[mesa.Length - 1]); mr.PrintText(line++, limite, "|");
                mr.PrintText(line++, 01, pont);

                mr.PrintJob();
                mr.EndJob();

                ImprimirBematech(endereco, new Banco().getCodImpressoraByTipo(new BancoConsulta().cod_tipoPeloNome(new Banco().segmentoDoProduto(produto[0].produto[0].cod_produto))));

            }
            catch { }
        }
        public VendaFull carregaVenda(int cod_venda)
        {
            Completa[] conjCompleto;

            DataTable dttVenda = new DataTable();
            //--------CARREGAR MESA ------------------
            DataTable dttMesa = new DataTable();
            NpgsqlDataAdapter a = new NpgsqlDataAdapter
                    (" select m.descricao from mesa m " +
                    " inner join vendaMesa vm on (m.cod_mesa = vm.cod_mesa) " +
                    " inner join venda v on (v.cod_venda = vm.cod_venda) " +
                    " where  v.aberta = true and m.status = false and v.cod_venda = " + cod_venda, Conectar());
            a.Fill(dttMesa);
            string[] mesa = new string[dttMesa.Rows.Count];
            for (int j = 0; j < dttMesa.Rows.Count; j++)
                mesa[j] = dttMesa.Rows[j].ItemArray.GetValue(0).ToString();

            //-------------------------------------------------------------------------------------
            DataTable numero = new DataTable();
            string queryC = "select count(vc.cod_completo) from vendacompleta vc inner join completo c on (c.cod_completo = vc.cod_completo)"
                +" where cod_venda =" + cod_venda+" and c.cancelado  = false ";
            new NpgsqlDataAdapter(queryC, Conectar()).Fill(numero);

            conjCompleto = new Completa[Convert.ToInt32(numero.Rows[0].ItemArray.GetValue(0))];
            string queryComplet = "select c.cod_completo from completo c inner join vendaCompleta vc on (vc.cod_completo = c.cod_completo)" +
                                  " inner join venda v on (v.cod_venda = vc.cod_venda)" +
                                  " where v.cod_venda = " + cod_venda+ " and c.cancelado = false";
            numero = new DataTable();
            new NpgsqlDataAdapter(queryComplet, Conectar()).Fill(numero);

            for (int j = 0; j < conjCompleto.Length; j++)
            {
                //-----------GARCON DO PRODUTO ---------------------------------------------------------

                string garconA = "select g.cod_garcon,sum(quantidade) from garcon g inner join garconCompleto gc on(g.cod_garcon = gc.cod_garcon) " +
                    "inner join completo c on(c.cod_completo = gc.cod_completo) where c.cod_completo = "
                    + (int)numero.Rows[j].ItemArray.GetValue(0) +" and cancelado = false "
                    + " group by g.cod_garcon";
                DataTable garc = new DataTable();

                new NpgsqlDataAdapter(garconA, Conectar()).Fill(garc);

                string querySubProduto = "select p.cod_produto,cp.porcentagem , c.valorUnitarioCompleto ,cp.cod_tamanho  " +
            " from completo c inner join completoProduto cp on (c.cod_completo = cp.cod_completo)" +
            " inner join produto p on( p.cod_produto = cp.cod_produto) where c.cod_completo = " + (int)numero.Rows[j].ItemArray.GetValue(0)
            + " and c.cancelado = false ";
                DataTable sub = new DataTable();
                new NpgsqlDataAdapter(querySubProduto, Conectar()).Fill(sub);
                GarconFisico[] gf = new GarconFisico[garc.Rows.Count];
                for (int k = 0; k < garc.Rows.Count; k++)
                {
                    gf[k] = new GarconFisico();
                    gf[k].setGarcon(Convert.ToInt16(garc.Rows[k].ItemArray.GetValue(0)), Convert.ToInt16(garc.Rows[k].ItemArray.GetValue(1)));
                }

                Produto[] subProdutos = new Produto[sub.Rows.Count];
                for (int k = 0; k < sub.Rows.Count; k++)
                {
                    double teste = new BancoInformacao().quantidadeCompletaByCodigo
                        ( Convert.ToInt32( numero.Rows[j].ItemArray.GetValue(0).ToString()));
                    subProdutos[k] = new Produto();
                    subProdutos[k].setLoad(
                        Convert.ToInt32(sub.Rows[k].ItemArray.GetValue(0)),
                        Convert.ToDouble(sub.Rows[k].ItemArray.GetValue(1)),
                        Convert.ToDouble(sub.Rows[k].ItemArray.GetValue(2)),
                        Convert.ToInt32(sub.Rows[k].ItemArray.GetValue(3)),
                        //preciso fazer saber a quantidade de produtos

                        new Banco().isImpressoProduto(Convert.ToInt16(sub.Rows[k].ItemArray.GetValue(0)))
                        );

                }
                conjCompleto[j] = new Completa(subProdutos,
                    (int)numero.Rows[j].ItemArray.GetValue(0),gf, valorItemCompleto((int)numero.Rows[j].ItemArray.GetValue(0)));
            }
            //---------------------------------------------------------------
            string query = "select subValor, dataVenda,to_char(horario, 'HH24:MI'), cod_caixa, aberta,impressao, cod_pagamento,  valorReal from venda where cod_venda =" + cod_venda;
            numero = new DataTable();
            new NpgsqlDataAdapter(query, Conectar()).Fill(numero);

            double valor = 0;
            for (int i = 0; i < conjCompleto.Length; i++)
            {
                string vlr = "select valorUnitarioCompleto from completo where cod_completo = "
                    + (conjCompleto[i].cod_completo);
                DataTable vl = new DataTable();
                new NpgsqlDataAdapter(vlr, Conectar()).Fill(vl);
                double info = Convert.ToDouble(vl.Rows[0].ItemArray.GetValue(0));
                double quantidade = new BancoInformacao().quantidadeCompletaByCodigo( conjCompleto[i].cod_completo);
                valor += (info * quantidade);

            }

            try
            {
                VendaFull saida =
                    new VendaFull(
                        conjCompleto,
                        cod_venda,
                        (int)numero.Rows[0].ItemArray.GetValue(3),
                        valor,
                    numero.Rows[0].ItemArray.GetValue(2).ToString(),
                    numero.Rows[0].ItemArray.GetValue(1).ToString(),
                    mesa,new Banco().comissaoIsPct(),
                    new Banco().getValorComissao(),
                    (double)numero.Rows[0].ItemArray.GetValue(7));

                saida.super = retornoSuper(cod_venda);
                return saida;
            }
            catch
            {
                VendaFull saida = new VendaFull(conjCompleto, cod_venda, 1, 0, null, null, mesa
                    , new Banco().comissaoIsPct(), new Banco().getValorComissao(), (double)numero.Rows[0].ItemArray.GetValue(7));
                saida.super = retornoSuper(cod_venda);
                return saida;
            }
        }