Exemple #1
0
        private void button1_Click(object sender, EventArgs e)
        {
            string s = textBox1.Text;
            //Instância da classe PrintDialog para enviar a impressão ao Windows
            PrintDialog pd = new PrintDialog();

            pd.PrinterSettings = new PrinterSettings();
            if (DialogResult.OK == pd.ShowDialog(this))
            {
                RawPrinterHelper.SendStringToPrinter(pd.PrinterSettings.PrinterName, s);
            }
        }
        /* =====================================================================*/
        private void BtnPrint_Click(object sender, EventArgs e)
        {
            if (txtEAN.Text == "" && txtIpPDV.Text == "")
            {
                MessageBox.Show("Um ou mais campos obrigatórios não foram informados.\n\n*IP DO PDV\n*CÓDIGO EAN", "Campo obigatório não informado", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else if (txtIpPDV.Text == "")
            {
                MessageBox.Show("Um ou mais campos obrigatórios não foram informados.\n\n*IP DO PDV", "Campo obigatório não informado", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else if (txtEAN.Text == "")
            {
                MessageBox.Show("Um ou mais campos obrigatórios não foram informados.\n\n*CÓDIGO EAN", "Campo obigatório não informado", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                continua  = true; //Reinicia o controle do fluxo de impressão
                isMinhaLe = 99;   // reinicia o controle do Minha LE
                DESCR     = null; // Limpa a descrição do Minha LE
                lblPrecoMinhaLe.Visible = false;

                //Conexão com o banco Firebird do PDV
                FbConnection fbConn  = new FbConnection("DataSource=" + txtIpPDV.Text + "; Database=" + "C:\\proton\\pdv-client\\dat\\DBECF.gdb" + "; User=SYSDBA; Password=masterkey");
                FbCommand    comando = new FbCommand();

                // Consulta Minha Le antes para verificar se o produto consultado tem promoção

                try
                {
                    fbConn.Open();
                    comando.Connection  = fbConn;
                    comando.CommandType = CommandType.Text;

                    comando.CommandText = "select distinct m.tmer_codigo_barras_ukn as codsap, " +
                                          "m.tmer_nome as DESCR, " +
                                          "p.tfid_tipo_preco as tp, " +
                                          "p.tfid_preco_venda as prc_promo, " +
                                          "e.tmer_preco_venda as prc_ori, " +
                                          "p.tfid_data_inicio as inicio, " +
                                          "p.tfid_data_fim " +
                                          "from tmer_mercadoria m inner join tfid_promocao p on p.tfid_codigo_pri_fk_pk = m.tmer_codigo_pri_pk and " +
                                          "p.tfid_codigo_sec_fk_pk = m.tmer_codigo_sec_pk " +
                                          "inner join tmer_estoque e on e.tmer_unidade_fk_pk = p.tfid_unidade_fk_pk and " +
                                          "e.tmer_codigo_pri_fk_pk = p.tfid_codigo_pri_fk_pk and " +
                                          "e.tmer_codigo_sec_fk_pk = p.tfid_codigo_sec_fk_pk " +
                                          "where p.tfid_tipo_preco = 1 " +
                                          "and m.tmer_codigo_barras_ukn = (select cod.tmer_codigo_barras_ean_fkn from tmer_codigo_barras cod where cod.tmer_codigo_barras_alter_pk = @COD_BARRALE)" +
                                          "or m.tmer_codigo_barras_ukn = @COD_BARRALE" +
                                          " and p.tfid_preco_venda <> e.tmer_preco_venda ";
                    //"and p.tfid_data_inicio <= 'now' " +
                    //"and p.tfid_data_fim >= 'now' ";
                    //comando.Parameters["@COD_BARRA"].Value = txtEAN.Text;
                    comando.Parameters.AddWithValue("@COD_BARRALE", txtEAN.Text);
                    //comando.Parameters.AddWithValue("@PO_DESCRICAO", descricao);

                    FbDataReader ler = comando.ExecuteReader();
                    while (ler.Read())
                    {
                        CODSAP        = ler.GetValue(0).ToString();
                        DESCR         = ler.GetValue(1).ToString();
                        TP            = ler.GetValue(2).ToString();
                        PRC_PROMO     = ler.GetValue(3).ToString();
                        PRC_ORI       = ler.GetValue(4).ToString();
                        INICIO        = ler.GetValue(5).ToString();
                        TFID_DATA_FIM = ler.GetValue(6).ToString();
                    }
                    fbConn.Close();
                    //fbConn.Dispose();

                    //Define as labels como visíveis
                    lblCodigoMercadoria.Visible = true;
                    lblDescricao.Visible        = true;
                    lblPrecoRegular.Visible     = true;
                    lblPrecoMinhaLe.Visible     = true;
                    lblMinhaLe.Visible          = true;
                    lblRegular.Visible          = true;

                    //Define o texto das labels para imprimir os retornos da consulta
                    lblCodigoMercadoria.Text = txtEAN.Text;
                    lblDescricao.Text        = DESCR;
                    lblPrecoRegular.Text     = PRC_ORI;
                    lblPrecoMinhaLe.Text     = PRC_PROMO;

                    if (DESCR == null)
                    {
                        isMinhaLe = 0;
                        lblPrecoMinhaLe.Visible = false;
                        lblMinhaLe.Visible      = false;
                    }

                    // Consulta Não Minha LE
                    if (isMinhaLe == 0)
                    {
                        FbConnection fbConn2  = new FbConnection("DataSource=" + txtIpPDV.Text + "; Database=" + "C:\\proton\\pdv-client\\dat\\DBECF.gdb" + "; User=SYSDBA; Password=masterkey");
                        FbCommand    comando2 = new FbCommand();
                        fbConn2.Open();
                        comando2.Connection  = fbConn2;
                        comando2.CommandType = CommandType.StoredProcedure;

                        comando2.CommandText = "CONSULTA_MERC";
                        comando2.Parameters.AddWithValue("@COD_BARRA", txtEAN.Text);

                        FbDataReader ler2 = comando2.ExecuteReader();
                        while (ler2.Read())
                        {
                            preco     = ler2.GetValue(0).ToString();
                            descricao = ler2.GetValue(1).ToString();
                        }
                        fbConn2.Close();

                        //Define as labels como visíveis
                        lblCodigoMercadoria.Visible = true;
                        lblDescricao.Visible        = true;
                        lblPrecoRegular.Visible     = true;

                        //Define o texto das labels para imprimir os retornos da procedure
                        lblCodigoMercadoria.Text = txtEAN.Text;
                        lblDescricao.Text        = descricao;
                        lblPrecoRegular.Text     = preco;

                        if (descricao == "") //Caso a descrição volte vazia exibir "Mercadoria não localizada"
                        {
                            lblDescricao.Text    = "Mercadoria Não Localizada";
                            lblDescricao.Visible = true;
                            continua             = false; // Não seguir para o fluxo de impressão
                        }

                        //Caso a variável descrição retorne preenchida da procedure
                        //deve seguir para o fluxo de impressão abaixo

                        //Tratamento do tamanho da descrição
                        if (descricao.Length >= 19)
                        {                                           // Divide em duas subsstrings para pular a linha
                            desc1     = descricao.Substring(0, 20); // 20 primeiros caracteres na primeira linha
                            desc2     = descricao.Substring(21);    // 21° caractere em diante na segunda linha
                            maisQue20 = true;                       // Ativa variável de controle da substring
                        }
                    }
                }
                catch (Exception ex) // Tratamento da exceção de conexão com o banco do PDV.
                {
                    if (ex.Message.Contains("Unable to complete network request to host"))
                    {
                        MessageBox.Show("Não foi possível conectar no PDV informado.\nInforme o IP de outro PDV.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    continua = false; // Desativa a variável de controle do fluxo de impressão
                }
                fbConn.Dispose();


                /*==================  F L U X O  D E  I M P R E S S Ã O  D A  E T I Q U E T A  Z E B R A  ====================*/


                //Impressão anulada pelo valor NULL
                if (continua == null)                                          // Caso a variável de controle do fluxo de impressão esteja ativada
                {
                    if (isMinhaLe == 0 && maisQue20 == true)                   // Caso a variável de controle das substrings esteja ativada
                    {                                                          // Dividir a descrição da mercadoria em duas linhas
                        s = "^XA" +
                            "^FO40,25^A0N,36,36^FD" + txtEAN.Text + "^FS" +    // Código do produto
                            "^FO350,25^A0N,36,36^FD" + desc1 + "^FS" +         // Primeira linha da descrição do produto
                            "^FO350,55^A0N,36,36^FD" + desc2 + "^FS" +         // Segunda linha da descrição do produto
                            "^FO40,90^BEN,70,70Y,N^FD" + txtEAN.Text + "^FS" + // Código de barras gerado pela impressora
                            "^FO300,90^A0N,116,116^FDR$^FS" +                  // Campo contendo o indicador monetário (R$) na etiqueta
                            "^FO500,100^A0N,90^FD" + preco + "^FS" +           // Preço da mercadoria
                            "^PQ001,,,N" +                                     // Salto de linha
                            "^XZ";
                    }
                    else if (isMinhaLe == 0 && maisQue20 == false) // Caso a variável de controle do fluxo de impressão esteja desativada
                    {
                        s = "^XA" +
                            "^FO40,25^A0N,36,36^FD" + txtEAN.Text + "^FS" +    // Código do produto
                            "^FO350,25^A0N,36,36^FD" + descricao + "^FS" +     // Descrição da mercadoria em apenas uma linha
                            "^FO40,90^BEN,70,70Y,N^FD" + txtEAN.Text + "^FS" + // Código de barras gerado pela impressora
                            "^FO300,90^A0N,116,116^FDR$^FS" +                  // Campo contendo o indicador monetário (R$) na etiqueta
                            "^FO500,100^A0N,90^FD" + preco + "^FS" +           // Preço da mercadoria
                            "^PQ001,,,N" +                                     // Salto de linha
                            "^XZ";
                    }

                    else if (isMinhaLe == 99) // Caso seja Minha Le
                    {
                        s = "^XA" +
                            "^PR1" +
                            "^FO30,25^A0N,35,35^FD" + DESCR + "^FS" +
                            "^FO50,80^A0B,30,30^FDRegular^FS" +
                            "^FO380,70^GB280,110,100,,1^FS" +
                            "^FO390,80^CF0,30,30^FR^FDClube Minha Le^FS" +
                            "^FO15,80^A0B,30,30^FD" + CODSAP + "^FS" +
                            "^FO90,80^A0N,26,26^FR^FDR$^FS" +
                            "^FO90,105^A0N,26,26^FDUN^FS" +
                            "^FO130,80^A0N,75,75^FD" + PRC_ORI + "^FS" +
                            "^FO390,115^CF0,26,26^FR^FDR$^FS" +
                            "^FO390,140^CF0,26,26^FR^FDUN^FS" +
                            "^FO430,110^CF0,75,75^FR^FD" + PRC_PROMO + "^FS" +
                            "^FO390,195^CF0,25,20^FDVANTAGENS E DESCONTOS EXCLUSIVOS^FS" +
                            "^FO120,150^BEN,45,45Y,N^FD" + txtEAN.Text + "^FS" +
                            "^PQ001,,,N" +
                            "^XZ";
                    }

                    //Instância da classe PrintDialog para enviar a impressão ao Windows
                    PrintDialog pd = new PrintDialog();
                    pd.PrinterSettings = new PrinterSettings();
                    pd.AllowSomePages  = true;
                    if (DialogResult.OK == pd.ShowDialog(this))
                    {
                        RawPrinterHelper.SendStringToPrinter(pd.PrinterSettings.PrinterName, s);
                    }
                }
                txtEAN.Text = ""; // Limpar o campo do EAN após a execução do fluxo
            }
        }