// controle das teclas digitadas na Grid
        public void GridValoresKeyDown(object sender, KeyEventArgs e)
        {
            DataRow Registro = DTValores.Rows[GridValores.CurrentRow.Index];

            if (e.KeyCode == Keys.Delete)
            {
                if (MessageBox.Show("Deseja remover o valor selecionado?", "Remover ", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    TotalRecebido = Biblioteca.TruncaValor(TotalRecebido - Convert.ToDecimal(DTValores.Columns["VALOR"].ToString()), Constantes.DECIMAIS_VALOR);
                    Troco         = Biblioteca.TruncaValor(TotalRecebido - TotalReceber, Constantes.DECIMAIS_VALOR);
                    if (Troco < 0)
                    {
                        Troco = 0;
                    }

                    ListaTotalTipoPagamento.RemoveAt(Convert.ToInt32(Registro["INDICE_LISTA"]));

                    DTValores.Rows.RemoveAt(GridValores.CurrentRow.Index);
                    VerificaSaldoRestante();
                    if (SaldoRestante > 0)
                    {
                        editValorPago.Text = SaldoRestante.ToString("###,###,##0.00");
                    }
                    else
                    {
                        editValorPago.Text = "0.00";
                    }
                }
                ComboTipoPagamento.Focus();
            }
            if (e.KeyCode == Keys.Enter)
            {
                ComboTipoPagamento.Focus();
            }
        }
        private void btnAdicionar_Click(object sender, EventArgs e)
        {
            if (ComboTipoPagamento.Text.Trim() == "")
            {
                MessageBox.Show("Informe uma forma de Pagamento valida!", "Informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
                ComboTipoPagamento.Focus();
                return;
            }

            if (Convert.ToDecimal(edtValor.Text) <= 0)
            {
                MessageBox.Show("Informe um Valor valido!", "Informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
                edtValor.Focus();
                return;
            }

            try
            {
                EcfFechamentoDTO Fechamento = new EcfFechamentoDTO();
                Fechamento.IdEcfMovimento = Sessao.Instance.Movimento.Id;
                Fechamento.TipoPagamento  = ComboTipoPagamento.Text;
                Fechamento.Valor          = Convert.ToDecimal(edtValor.Text);

                EcfFechamentoController.GravaEcfFechamento(Fechamento);

                TotalizaFechamento();
            }
            catch (Exception eError)
            {
                Log.write(eError.ToString());
            }
            edtValor.Clear();
            ComboTipoPagamento.Focus();
        }
        private void editValorPago_Leave(object sender, EventArgs e)
        {
            decimal ValorInformado;

            if (decimal.TryParse(editValorPago.Text, out ValorInformado))
            {
                if (ValorInformado > 0)
                {
                    VerificaSaldoRestante();
                    // se ainda tem saldo no ECF para pagamento
                    if (SaldoRestante > 0)
                    {
                        PanelConfirmaValores.Visible = true;
                        PanelConfirmaValores.BringToFront();
                        LabelConfirmaValores.Text = "Confirma forma de pagamento e valor?";
                        botaoSim.Focus();
                    }
                    else
                    {
                        MessageBox.Show("Todos os valores Ja foram recebidos. Finalize a venda.", "Informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else
                {
                    MessageBox.Show("Valor não pode ser menor ou igual a zero.", "Informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    editValorPago.Clear();
                    ComboTipoPagamento.Focus();
                }
            }
            else
            {
                MessageBox.Show("Valor inválido.", "Informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
        private void TelaPadrao()
        {
            for (int i = 0; i <= Sessao.Instance.ListaTipoPagamento.Count - 1; i++)
            {
                ComboTipoPagamento.Items.Add(Sessao.Instance.ListaTipoPagamento[i].Descricao);
            }
            ComboTipoPagamento.SelectedIndex = 0;

            // Configura Grid
            DTValores = new DataTable("VALORES");
            DTValores.Columns.Add("DESCRICAO", typeof(string)); //0
            DTValores.Columns.Add("VALOR", typeof(decimal));    //1
            DTValores.Columns.Add("ID", typeof(int));           //2
            DTValores.Columns.Add("INDICE_LISTA", typeof(int)); //8

            dataSet.Tables.Add(DTValores);

            GridValores.DataSource = dataSet;
            GridValores.DataMember = dataSet.Tables[0].ToString();

            //definimos os cabeçalhos da Grid
            GridValores.Columns[0].HeaderText = "Descrição";
            GridValores.Columns[0].ReadOnly   = true;
            GridValores.Columns[1].HeaderText = "Valor";
            GridValores.Columns[1].ReadOnly   = true;
            GridValores.Columns[1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            //nao exibe as colunas abaixo
            GridValores.Columns[2].Visible = false;
            GridValores.Columns[3].Visible = false;

            ComboTipoPagamento.Focus();
        }
 private void botaoConfirma_Click(object sender, EventArgs e)
 {
     VerificaSaldoRestante();
     // se não houver mais saldo no ECF é porque Ja devemos finalizar a venda
     if (SaldoRestante <= 0)
     {
         if (MessageBox.Show("Deseja finalizar a venda?", "Finalizar venda", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
         {
             FinalizaVenda();
         }
         else
         {
             if (TransacaoComTef)
             {
                 ACBrTEFD.CancelarTransacoesPendentes();
                 Sessao.Instance.VendaAtual.CupomCancelado = "S";
                 Sessao.Instance.StatusCaixa = Tipos.StatusCaixa.scAberto;
                 FechaVendaComProblemas();
                 PodeFechar = true;
                 this.Close();
             }
         }
     }
     else
     {
         MessageBox.Show("Valores informados não são suficientes para finalizar a venda.", "Informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
         ComboTipoPagamento.Focus();
     }
 }
 public EncerraMovimento()
 {
     // Required for Windows Form Designer support
     InitializeComponent();
     ConfiguraDataSet();
     FormCreate();
     ComboTipoPagamento.Focus();
 }
Esempio n. 7
0
        private void FEfetuaPagamento_Shown(object sender, EventArgs e)
        {
            TipoPagamentoController      = new TipoPagamentoController();
            TotalTipoPagamentoController = new TotalTipoPagamentoController();
            //
            TotalVenda       = 0;
            Desconto         = 0;
            Acrescimo        = 0;
            TotalReceber     = 0;
            TotalRecebido    = 0;
            Troco            = 0;
            QuantidadeCartao = 0;

            if (FCaixa.VendaCabecalho.TaxaAcrescimo > 0)
            {
                FCaixa.VendaCabecalho.Acrescimo = Biblioteca.TruncaValor(FCaixa.VendaCabecalho.TaxaAcrescimo / 100 * FCaixa.VendaCabecalho.ValorVenda, Constantes.DECIMAIS_VALOR);
            }
            if (FCaixa.VendaCabecalho.TaxaDesconto > 0)
            {
                FCaixa.VendaCabecalho.Desconto = Biblioteca.TruncaValor(FCaixa.VendaCabecalho.TaxaDesconto / 100 * FCaixa.VendaCabecalho.ValorVenda, Constantes.DECIMAIS_VALOR);
            }

            // preenche valores nas variaveis
            TotalVenda    = FCaixa.VendaCabecalho.ValorVenda.Value;
            Acrescimo     = FCaixa.VendaCabecalho.Acrescimo.Value;
            Desconto      = FCaixa.VendaCabecalho.Desconto.Value;
            TotalReceber  = Biblioteca.TruncaValor(TotalVenda + Acrescimo - Desconto, Constantes.DECIMAIS_VALOR);
            SaldoRestante = TotalReceber;

            SegundoCartaoCancelado = false;
            TransacaoComTef        = false;
            CupomCancelado         = false;
            PodeFechar             = true;
            IndiceTransacaoTef     = -1;

            AtualizaLabelsValores();

            if (SaldoRestante > 0)
            {
                editValorPago.Text = SaldoRestante.ToString("0.00");
            }
            else
            {
                editValorPago.Text = "0.00";
            }

            IdVenda = FCaixa.VendaCabecalho.Id;

            // lista que vai acumular os meios de pagamento
            ListaTotalTipoPagamento = new List <TotalTipoPagamentoVO>();

            // tela padrão
            TelaPadrao();
            ComboTipoPagamento.Focus();
        }
 private void btnRemover_Click(object sender, EventArgs e)
 {
     if (DTFechamento.Rows.Count > 0)
     {
         DataRow          Registro = DTFechamento.Rows[GridValores.CurrentRow.Index];
         EcfFechamentoDTO EcfFechamentoParaExclusao = new EcfFechamentoDTO();
         EcfFechamentoParaExclusao.Id = Convert.ToInt32(Registro["ID"]);
         EcfFechamentoController.ExcluiEcfFechamento(EcfFechamentoParaExclusao);
         TotalizaFechamento();
     }
     ComboTipoPagamento.Focus();
 }
Esempio n. 9
0
 private void btnRemover_Click(object sender, EventArgs e)
 {
     if (DTFechamento.Rows.Count > 0)
     {
         DataRow Registro = DTFechamento.Rows[GridValores.CurrentRow.Index];
         if (FechamentoController.ExcluiFechamento(Convert.ToInt32(Registro["ID"])))
         {
             DTFechamento.Rows.RemoveAt(GridValores.CurrentRow.Index);
             TotalizaFechamento();
         }
     }
     ComboTipoPagamento.Focus();
 }
Esempio n. 10
0
        public FEncerraMovimento()
        {
            // Required for Windows Form Designer support
            InitializeComponent();
            ConfiguraDataSet();
            TipoPagamentoController      = new TipoPagamentoController();
            TotalTipoPagamentoController = new TotalTipoPagamentoController();
            MovimentoController          = new MovimentoController();
            FechamentoController         = new FechamentoController();
            OperadorController           = new OperadorController();
            FormCreate();
            ComboTipoPagamento.Focus();

            //TODO:  Carregue os valores de fechamento já gravados no banco
        }
 private void botaoConfirma_Click(object sender, EventArgs e)
 {
     VerificaSaldoRestante();
     // se não houver mais saldo no ECF é porque Ja devemos finalizar a venda
     if (SaldoRestante <= 0)
     {
         if (MessageBox.Show("Deseja finalizar a venda?", "Finalizar venda", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
         {
             FinalizaVenda();
         }
     }
     else
     {
         MessageBox.Show("Valores informados não são suficientes para finalizar a venda.", "Informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
         ComboTipoPagamento.Focus();
     }
 }
Esempio n. 12
0
        private void TelaPadrao()
        {
            for (int i = 0; i <= Sessao.Instance.ListaTipoPagamento.Count - 1; i++)
            {
                ComboTipoPagamento.Items.Add(Sessao.Instance.ListaTipoPagamento[i].Descricao);
            }
            ComboTipoPagamento.SelectedIndex = 0;

            // Configura Grid
            DTValores = new DataTable("VALORES");
            DTValores.Columns.Add("DESCRICAO", typeof(string));           //0
            DTValores.Columns.Add("VALOR", typeof(decimal));              //1
            DTValores.Columns.Add("ID", typeof(int));                     //2
            //os campos abaixo serão utilizados caso seja necessario cancelar uma transacao TEF
            DTValores.Columns.Add("TEF", typeof(string));                 //3
            DTValores.Columns.Add("NSU", typeof(string));                 //4
            DTValores.Columns.Add("REDE", typeof(string));                //5
            DTValores.Columns.Add("DATA_HORA_TRANSACAO", typeof(string)); //6
            DTValores.Columns.Add("INDICE_TRANSACAO", typeof(int));       //7
            DTValores.Columns.Add("INDICE_LISTA", typeof(int));           //8
            DTValores.Columns.Add("FINALIZACAO", typeof(string));         //9

            dataSet.Tables.Add(DTValores);

            GridValores.DataSource = dataSet;
            GridValores.DataMember = dataSet.Tables[0].ToString();

            //definimos os cabeçalhos da Grid
            GridValores.Columns[0].HeaderText = "Descrição";
            GridValores.Columns[0].ReadOnly   = true;
            GridValores.Columns[1].HeaderText = "Valor";
            GridValores.Columns[1].ReadOnly   = true;
            GridValores.Columns[1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            //nao exibe as colunas abaixo
            GridValores.Columns[2].Visible = false;
            GridValores.Columns[3].Visible = false;
            GridValores.Columns[4].Visible = false;
            GridValores.Columns[5].Visible = false;
            GridValores.Columns[6].Visible = false;
            GridValores.Columns[7].Visible = false;
            GridValores.Columns[8].Visible = false;
            GridValores.Columns[9].Visible = false;

            ComboTipoPagamento.Focus();
        }
Esempio n. 13
0
        private void btnAdicionar_Click(object sender, EventArgs e)
        {
            if (ComboTipoPagamento.Text.Trim() == "")
            {
                MessageBox.Show("Informe uma forma de Pagamento valida!", "Informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
                ComboTipoPagamento.Focus();
                return;
            }

            if (Convert.ToDecimal(edtValor.Text) <= 0)
            {
                MessageBox.Show("Informe um Valor valido!", "Informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
                edtValor.Focus();
                return;
            }

            try
            {
                FechamentoVO Fechamento = new FechamentoVO();
                Fechamento.IdMovimento   = Movimento.Id;
                Fechamento.TipoPagamento = ComboTipoPagamento.Text;
                Fechamento.Valor         = Convert.ToDecimal(edtValor.Text);

                DataRow Registro = DTFechamento.NewRow();
                Registro["TIPO_PAGAMENTO"] = Fechamento.TipoPagamento;
                Registro["VALOR"]          = Convert.ToDecimal(Fechamento.Valor.ToString("0.00"));

                Fechamento = FechamentoController.GravaFechamento(Fechamento);
                if (Fechamento != null)
                {
                    Registro["ID"] = Fechamento.Id;
                    DTFechamento.Rows.Add(Registro);
                    TotalizaFechamento();
                }
            }
            catch (Exception eError)
            {
                Log.write(eError.ToString());
            }
            edtValor.Clear();
            ComboTipoPagamento.Focus();
        }
Esempio n. 14
0
        private void FEfetuaPagamento_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F2)
            {
                if (GridValores.RowCount == 0)
                {
                    if (MessageBox.Show("Confirma valores e encerra venda por fechamento rapido?", "Finalizar venda", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        FechamentoRapido();
                    }
                }
                else
                {
                    MessageBox.Show("Ja existem valores informados. Impossivel utilizar Fechamento Rapido.", "Informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    ComboTipoPagamento.Focus();
                }
            }

            if (e.KeyCode == Keys.F12)
            {
                botaoConfirma.PerformClick();
            }

            if (e.KeyCode == Keys.Escape)
            {
                botaoCancela.PerformClick();
            }

            if (e.KeyCode == Keys.F5)
            {
                if (GridValores.RowCount > 0)
                {
                    GridValores.Focus();
                }
                else
                {
                    MessageBox.Show("Não existem valores informados para serem removidos.", "Informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    ComboTipoPagamento.Focus();
                }
            }
        }
Esempio n. 15
0
        private void botaoSim_Click(object sender, EventArgs e)
        {
            decimal             ValorInformado;
            string              Mensagem;
            EcfTipoPagamentoDTO TipoPagamento = Sessao.Instance.ListaTipoPagamento[ComboTipoPagamento.SelectedIndex];

            ValorInformado = Biblioteca.TruncaValor(Convert.ToDecimal(editValorPago.Text), Constantes.DECIMAIS_VALOR);

            if (((TipoPagamento.Descricao == "CONSULTA CHEQUE") || (TipoPagamento.Descricao == "CONSULTA CHQ TECBAN")) && (TransacaoComTef))
            {
                MessageBox.Show("Compra com Cartao e Cheque não permitida.", "Informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
                ComboTipoPagamento.Focus();
                PanelConfirmaValores.Visible = false;
                PanelConfirmaValores.SendToBack();
            }
            else
            {
                EcfTotalTipoPagamentoDTO TotalTipoPagamento = new EcfTotalTipoPagamentoDTO();

                if (((TransacaoComTef) || (TipoPagamento.Tef == "S")) && (ValorInformado > SaldoRestante))
                {
                    MessageBox.Show("Compra não permite troco.", "Informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    ComboTipoPagamento.Focus();
                    PanelConfirmaValores.Visible = false;
                    PanelConfirmaValores.SendToBack();
                }
                else if ((TipoPagamento.Tef == "S") && (QuantidadeCartao >= Sessao.Instance.Configuracao.QuantidadeMaximaCartoes))
                {
                    MessageBox.Show("Ja foi utilizada a quantidade maxima de cartoes para efetuar pagamento.", "Informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    ComboTipoPagamento.Focus();
                    PanelConfirmaValores.Visible = false;
                    PanelConfirmaValores.SendToBack();
                }
                else if ((TipoPagamento.Tef == "S") && (QuantidadeCartao >= Sessao.Instance.Configuracao.QuantidadeMaximaCartoes - 1) && (ValorInformado != SaldoRestante))
                {
                    Mensagem = "Multiplos Cartoes. Transacao suporta ate " + Convert.ToString(Sessao.Instance.Configuracao.QuantidadeMaximaCartoes) + " cartoes. Informe o valor exato para fechar a venda.";
                    MessageBox.Show(Mensagem, "Informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    ComboTipoPagamento.Focus();
                    PanelConfirmaValores.Visible = false;
                    PanelConfirmaValores.SendToBack();
                }
                else
                {
                    GroupBox3.Enabled = false;
                    StatusTransacao   = true;
                    if (TipoPagamento.Tef == "S")
                    {
                        try
                        {
                            try
                            {
                                ACBrTEFD.Initializar((ACBrFramework.TEFD.TefTipo) int.Parse(TipoPagamento.TefTipoGp));
                            }
                            catch (Exception eError)
                            {
                                Log.write(eError.ToString());
                                MessageBox.Show("GP para tipo de pagamento solicitado não instalado.", "Informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                StatusTransacao = false;
                            }
                            if ((TipoPagamento.Descricao == "CONSULTA CHEQUE") || (TipoPagamento.Descricao == "CONSULTA CHQ TECBAN"))
                            {
                                StatusTransacao = ACBrTEFD.CHQ(ValorInformado, TipoPagamento.Codigo);
                            }
                            else
                            {
                                StatusTransacao = ACBrTEFD.CRT(ValorInformado, TipoPagamento.Codigo, DataModule.ACBrECF.NumCOO);
                            }

                            if (StatusTransacao)
                            {
                                IndiceTransacaoTef++;

                                TotalTipoPagamento.Nsu  = ACBrTEFD.RespostasPendentes[IndiceTransacaoTef].NSU;
                                TotalTipoPagamento.Rede = ACBrTEFD.RespostasPendentes[IndiceTransacaoTef].Rede;

                                if ((ACBrTEFD.RespostasPendentes[IndiceTransacaoTef].TipoTransacao >= 10) && (ACBrTEFD.RespostasPendentes[IndiceTransacaoTef].TipoTransacao <= 12))
                                {
                                    TotalTipoPagamento.CartaoDc = "C";
                                }
                                if ((ACBrTEFD.RespostasPendentes[IndiceTransacaoTef].TipoTransacao >= 20) && (ACBrTEFD.RespostasPendentes[IndiceTransacaoTef].TipoTransacao <= 25))
                                {
                                    TotalTipoPagamento.CartaoDc = "D";
                                }

                                QuantidadeCartao++;
                                TransacaoComTef = true;
                                PodeFechar      = false;
                            }
                        }
                        catch (Exception eError)
                        {
                            Log.write(eError.ToString());
                        }
                    }

                    if (StatusTransacao)
                    {
                        DataRow Registro = DTValores.NewRow();
                        Registro["DESCRICAO"] = ComboTipoPagamento.Text;
                        decimal valor = Convert.ToDecimal(editValorPago.Text);
                        Registro["VALOR"] = Convert.ToDecimal(valor.ToString("0.00"));
                        if (TipoPagamento.Tef == "S")
                        {
                            Registro["TEF"]              = "S";
                            Registro["NSU"]              = TotalTipoPagamento.Nsu;
                            Registro["REDE"]             = TotalTipoPagamento.Rede;
                            Registro["INDICE_TRANSACAO"] = IndiceTransacaoTef;
                        }

                        TotalRecebido = Biblioteca.TruncaValor(TotalRecebido + Convert.ToDecimal(editValorPago.Text), Constantes.DECIMAIS_VALOR);
                        Troco         = Biblioteca.TruncaValor(TotalRecebido - TotalReceber, Constantes.DECIMAIS_VALOR);
                        if (Troco < 0)
                        {
                            Troco = 0;
                        }

                        VerificaSaldoRestante();

                        TotalTipoPagamento.IdEcfVendaCabecalho = Sessao.Instance.VendaAtual.Id;
                        TotalTipoPagamento.Valor    = Biblioteca.TruncaValor(Convert.ToDecimal(editValorPago.Text), Constantes.DECIMAIS_VALOR);
                        TotalTipoPagamento.Estorno  = "N";
                        TotalTipoPagamento.SerieEcf = Sessao.Instance.Configuracao.EcfImpressora.Serie;
                        TotalTipoPagamento.Coo      = int.Parse(DataModule.ACBrECF.NumCOO);
                        TotalTipoPagamento.Ccf      = int.Parse(DataModule.ACBrECF.NumCCF);
                        TotalTipoPagamento.Gnf      = int.Parse(DataModule.ACBrECF.NumGNF);

                        TotalTipoPagamento.EcfTipoPagamento = TipoPagamento;

                        ListaTotalTipoPagamento.Add(TotalTipoPagamento);

                        // guarda o índice da lista
                        Registro["INDICE_LISTA"] = ListaTotalTipoPagamento.Count - 1;
                        DTValores.Rows.Add(Registro);
                    }
                    PanelConfirmaValores.Visible = false;
                    PanelConfirmaValores.SendToBack();
                    if (SaldoRestante > 0)
                    {
                        editValorPago.Text = SaldoRestante.ToString("0.00");
                    }
                    else
                    {
                        editValorPago.Text = "0.00";
                    }

                    GroupBox3.Enabled = true;
                    ComboTipoPagamento.Focus();
                }

                VerificaSaldoRestante();
                if (SaldoRestante <= 0)
                {
                    FinalizaVenda();
                }

                if (SegundoCartaoCancelado)
                {
                    MessageBox.Show("Cupom fiscal cancelado. será aberto noDTO cupom e deve-se informar novamente os pagamentos.", "Informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    Sessao.Instance.VendaAtual.CupomCancelado = "S";
                    Sessao.Instance.StatusCaixa = Tipos.StatusCaixa.scAberto;
                    FechaVendaComProblemas();
                    PodeFechar = true;
                    this.Close();
                }
            }
        }
Esempio n. 16
0
 private void botaoNao_Click(object sender, EventArgs e)
 {
     PanelConfirmaValores.Visible = false;
     ComboTipoPagamento.Focus();
 }
        private void botaoSim_Click(object sender, EventArgs e)
        {
            decimal ValorInformado;
            NfceTipoPagamentoDTO TipoPagamento = Sessao.Instance.ListaTipoPagamento[ComboTipoPagamento.SelectedIndex];

            ValorInformado = Biblioteca.TruncaValor(Convert.ToDecimal(editValorPago.Text), Constantes.DECIMAIS_VALOR);

            NfeFormaPagamentoDTO TotalTipoPagamento = new NfeFormaPagamentoDTO();

            GroupBox3.Enabled = false;

            DataRow Registro = DTValores.NewRow();

            Registro["DESCRICAO"] = ComboTipoPagamento.Text;
            decimal valor = Convert.ToDecimal(editValorPago.Text);

            Registro["VALOR"] = Convert.ToDecimal(valor.ToString("0.00"));

            TotalRecebido = Biblioteca.TruncaValor(TotalRecebido + Convert.ToDecimal(editValorPago.Text), Constantes.DECIMAIS_VALOR);
            Troco         = Biblioteca.TruncaValor(TotalRecebido - TotalReceber, Constantes.DECIMAIS_VALOR);
            if (Troco < 0)
            {
                Troco = 0;
            }

            VerificaSaldoRestante();

            TotalTipoPagamento.IdNfeCabecalho = Sessao.Instance.VendaAtual.Id;
            //TotalTipoPagamento.IdNfceTipoPagamento = TipoPagamento.Id;
            TotalTipoPagamento.Valor             = Biblioteca.TruncaValor(Convert.ToDecimal(editValorPago.Text), Constantes.DECIMAIS_VALOR);
            TotalTipoPagamento.Forma             = TipoPagamento.Codigo;
            TotalTipoPagamento.Estorno           = "N";
            TotalTipoPagamento.NfceTipoPagamento = TipoPagamento;

            if (TipoPagamento.GeraParcelas == "N")
            {
                Sessao.Instance.VendaAtual.IndicadorFormaPagamento = 0;  //a vista
            }
            else
            {
                Sessao.Instance.VendaAtual.IndicadorFormaPagamento = 1; //a prazo
            }
            ListaTotalTipoPagamento.Add(TotalTipoPagamento);

            // guarda o índice da lista
            Registro["INDICE_LISTA"] = ListaTotalTipoPagamento.Count - 1;
            DTValores.Rows.Add(Registro);

            PanelConfirmaValores.Visible = false;
            PanelConfirmaValores.SendToBack();
            if (SaldoRestante > 0)
            {
                editValorPago.Text = SaldoRestante.ToString("0.00");
            }
            else
            {
                editValorPago.Text = "0.00";
            }

            GroupBox3.Enabled = true;
            ComboTipoPagamento.Focus();

            VerificaSaldoRestante();
            if (SaldoRestante <= 0)
            {
                FinalizaVenda();
            }
        }
Esempio n. 18
0
        private void botaoSim_Click(object sender, EventArgs e)
        {
            decimal         ValorInformado;
            string          Mensagem;
            TipoPagamentoVO TipoPagamento = ListaTipoPagamento[ComboTipoPagamento.SelectedIndex];

            ValorInformado = Biblioteca.TruncaValor(Convert.ToDecimal(editValorPago.Text), Constantes.DECIMAIS_VALOR);

            if (((TipoPagamento.Descricao == "CONSULTA CHEQUE") || (TipoPagamento.Descricao == "CONSULTA CHQ TECBAN")) && (TransacaoComTef))
            {
                MessageBox.Show("Compra com Cartao e Cheque não permitida.", "Informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
                ComboTipoPagamento.Focus();
                PanelConfirmaValores.Visible = false;
                PanelConfirmaValores.SendToBack();
            }
            else
            {
                TotalTipoPagamentoVO TotalTipoPagamento = new TotalTipoPagamentoVO();

                if (((TransacaoComTef) || (TipoPagamento.TEF == "S")) && (ValorInformado > SaldoRestante))
                {
                    MessageBox.Show("Compra não permite troco.", "Informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    ComboTipoPagamento.Focus();
                    PanelConfirmaValores.Visible = false;
                    PanelConfirmaValores.SendToBack();
                }
                else if ((TipoPagamento.TEF == "S") && (QuantidadeCartao >= FCaixa.Configuracao.QuantidadeMaximaCartoes))
                {
                    MessageBox.Show("Ja foi utilizada a quantidade maxima de cartoes para efetuar pagamento.", "Informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    ComboTipoPagamento.Focus();
                    PanelConfirmaValores.Visible = false;
                    PanelConfirmaValores.SendToBack();
                }
                else if ((TipoPagamento.TEF == "S") && (QuantidadeCartao >= FCaixa.Configuracao.QuantidadeMaximaCartoes - 1) && (ValorInformado != SaldoRestante))
                {
                    Mensagem = "Multiplos Cartoes. Transacao suporta ate " + Convert.ToString(FCaixa.Configuracao.QuantidadeMaximaCartoes) + " cartoes. Informe o valor exato para fechar a venda.";
                    MessageBox.Show(Mensagem, "Informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    ComboTipoPagamento.Focus();
                    PanelConfirmaValores.Visible = false;
                    PanelConfirmaValores.SendToBack();
                }
                else
                {
                    GroupBox3.Enabled = false;
                    StatusTransacao   = true;
                    if (TipoPagamento.TEF == "S")
                    {
                        try
                        {
                            try
                            {
                                //TODO:  inicialize o TEF a partir de TipoPagamento.TipoGP
                                ACBrTEFD.Initializar(ACBrFramework.TEFD.TefTipo.TefDial);
                            }
                            catch (Exception eError)
                            {
                                Log.write(eError.ToString());
                                MessageBox.Show("GP para tipo de pagamento solicitado não instalado.", "Informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                StatusTransacao = false;
                            }
                            if ((TipoPagamento.Descricao == "CONSULTA CHEQUE") || (TipoPagamento.Descricao == "CONSULTA CHQ TECBAN"))
                            {
                                StatusTransacao = ACBrTEFD.CHQ(ValorInformado, TipoPagamento.Codigo);
                            }
                            else
                            {
                                StatusTransacao = ACBrTEFD.CRT(ValorInformado, TipoPagamento.Codigo, FDataModule.ACBrECF.NumCOO);
                            }

                            if (StatusTransacao)
                            {
                                IndiceTransacaoTef++;

                                //TODO:  Verifique se esta é a forma correta de pegar essas informações - Analise o "RespostasPendentes"
                                TotalTipoPagamento.NSU  = ACBrTEFD.Req.NSU;
                                TotalTipoPagamento.Rede = ACBrTEFD.Req.Rede;
                                TotalTipoPagamento.DataHoraTransacao = ACBrTEFD.Req.DataHoraTransacaoComprovante;
                                TotalTipoPagamento.Finalizacao       = ACBrTEFD.Req.Finalizacao;

                                //TODO:  Verifique se tem como saber se o cartão usado foi de credito ou debito e armazene essa informação do banco de dados
                                TotalTipoPagamento.CartaoDebitoOuCredito = "C";

                                QuantidadeCartao++;
                                TransacaoComTef = true;
                                PodeFechar      = false;
                            }
                        }
                        catch (Exception eError)
                        {
                            Log.write(eError.ToString());
                        }
                    }

                    if (StatusTransacao)
                    {
                        DataRow Registro = DTValores.NewRow();
                        Registro["DESCRICAO"] = ComboTipoPagamento.Text;
                        decimal valor = Convert.ToDecimal(editValorPago.Text);
                        Registro["VALOR"] = Convert.ToDecimal(valor.ToString("0.00"));
                        if (TipoPagamento.TEF == "S")
                        {
                            Registro["TEF"]  = "S";
                            Registro["NSU"]  = TotalTipoPagamento.NSU;
                            Registro["REDE"] = TotalTipoPagamento.Rede;
                            Registro["DATA_HORA_TRANSACAO"] = TotalTipoPagamento.DataHoraTransacao.ToString();
                            Registro["INDICE_TRANSACAO"]    = IndiceTransacaoTef;
                            Registro["FINALIZACAO"]         = TotalTipoPagamento.Finalizacao;
                        }

                        TotalRecebido = Biblioteca.TruncaValor(TotalRecebido + Convert.ToDecimal(editValorPago.Text), Constantes.DECIMAIS_VALOR);
                        Troco         = Biblioteca.TruncaValor(TotalRecebido - TotalReceber, Constantes.DECIMAIS_VALOR);
                        if (Troco < 0)
                        {
                            Troco = 0;
                        }

                        VerificaSaldoRestante();

                        TotalTipoPagamento.IdVenda         = IdVenda;
                        TotalTipoPagamento.IdTipoPagamento = TipoPagamento.Id;
                        TotalTipoPagamento.Valor           = Biblioteca.TruncaValor(Convert.ToDecimal(editValorPago.Text), Constantes.DECIMAIS_VALOR);
                        TotalTipoPagamento.CodigoPagamento = TipoPagamento.Codigo.Trim();
                        TotalTipoPagamento.Estorno         = "N";
                        TotalTipoPagamento.TemTEF          = TipoPagamento.TEF;

                        ListaTotalTipoPagamento.Add(TotalTipoPagamento);

                        // guarda o índice da lista
                        Registro["INDICE_LISTA"] = ListaTotalTipoPagamento.Count - 1;
                        DTValores.Rows.Add(Registro);
                    }
                    PanelConfirmaValores.Visible = false;
                    PanelConfirmaValores.SendToBack();
                    if (SaldoRestante > 0)
                    {
                        editValorPago.Text = SaldoRestante.ToString("0.00");
                    }
                    else
                    {
                        editValorPago.Text = "0.00";
                    }

                    GroupBox3.Enabled = true;
                    ComboTipoPagamento.Focus();
                }

                VerificaSaldoRestante();
                if (SaldoRestante <= 0)
                {
                    FinalizaVenda();
                }

                if (SegundoCartaoCancelado)
                {
                    MessageBox.Show("Cupom fiscal cancelado. será aberto novo cupom e deve-se informar novamente os pagamentos.", "Informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    FCaixa.ProblemaNoPagamento = true;
                    FCaixa.VendaCabecalho.CupomFoiCancelado = "S";
                    FCaixa.StatusCaixa = 0;
                    FechaVendaComProblemas();
                    PodeFechar = true;
                    this.Close();
                }
            }
        }