Exemple #1
0
        private void btnCFNfe_Click(object sender, EventArgs e)
        {
            string             pedidoGerado     = contasPessoaDataGridView.SelectedRows[0].Cells[4].Value.ToString().Trim();
            List <SaidaPedido> listaSaidaPedido = new List <SaidaPedido>();

            for (int i = contasPessoaDataGridView.SelectedRows.Count - 1; i >= 0; i--)
            {
                long        codSaidaTemp    = Convert.ToInt64(contasPessoaDataGridView.SelectedRows[i].Cells[1].Value.ToString());   //pre-venda
                decimal     totalAVistaTemp = Convert.ToDecimal(contasPessoaDataGridView.SelectedRows[i].Cells[9].Value.ToString()); //total a vista
                SaidaPedido saidaPedido     = new SaidaPedido()
                {
                    CodSaida = codSaidaTemp, TotalAVista = totalAVistaTemp
                };
                listaSaidaPedido.Add(saidaPedido);
            }


            decimal total       = Convert.ToDecimal(totalContasTextBox.Text);
            decimal totalAVista = Convert.ToDecimal(totalAVistaTextBox.Text);

            SaidaPagamento saidaPagamento = new SaidaPagamento();
            FormaPagamento dinheiro       = GerenciadorFormaPagamento.GetInstance().Obter(FormaPagamento.DINHEIRO).ElementAt(0);

            saidaPagamento.CodFormaPagamento        = FormaPagamento.DINHEIRO;
            saidaPagamento.CodCartaoCredito         = Global.CARTAO_LOJA;
            saidaPagamento.MapeamentoFormaPagamento = dinheiro.Mapeamento;
            saidaPagamento.DescricaoFormaPagamento  = dinheiro.Descricao;
            saidaPagamento.Valor = Convert.ToDecimal(valorPagamentoTextBox.Text) + Convert.ToDecimal(totalPagamentosTextBox.Text);
            List <SaidaPagamento> listaSaidaPagamento = new List <SaidaPagamento>()
            {
                saidaPagamento
            };

            if (!pedidoGerado.Trim().Equals("") || (pessoa.ImprimirCF))
            {
                long  codSaida = Convert.ToInt64(contasPessoaDataGridView.SelectedRows[0].Cells[1].Value.ToString());
                Saida saida    = GerenciadorSaida.GetInstance(null).Obter(codSaida);
                AtualizarValoresDescontosContas();
                //decimal totalAVista = Convert.ToDecimal(totalAVistaTextBox.Text);
                FrmSaidaNFe frmSaidaNF = new FrmSaidaNFe(saida.CodSaida, listaSaidaPedido, listaSaidaPagamento);
                frmSaidaNF.ShowDialog();
                frmSaidaNF.Dispose();
            }
            else
            {
                if (MessageBox.Show("Confirma emisssão da NFce das Contas Selecionadas?", "Confirmar Impressão NFe/NFCe", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    AtualizarValoresDescontosContas();
                    long codSolicitacao = GerenciadorSolicitacaoDocumento.GetInstance().InserirSolicitacaoDocumento(listaSaidaPedido, listaSaidaPagamento, DocumentoFiscal.TipoSolicitacao.NFCE, false, false);
                    FrmSaidaAutorizacao frmSaidaAutorizacao = new FrmSaidaAutorizacao(listaSaidaPedido.FirstOrDefault().CodSaida, pessoa.CodPessoa, DocumentoFiscal.TipoSolicitacao.NFCE);
                    frmSaidaAutorizacao.ShowDialog();
                    frmSaidaAutorizacao.Dispose();
                }
            }
        }
Exemple #2
0
        private void btnSalvar_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Confirma registro de pagamento?", "Confirmar Pagamento", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                Cursor.Current = Cursors.WaitCursor;
                int     formaPagamento = int.Parse(codFormaPagamentoComboBox.SelectedValue.ToString());
                decimal valorPagamento = Convert.ToDecimal(valorPagamentoTextBox.Text);
                decimal totalPago      = Convert.ToDecimal(totalPagamentosTextBox.Text);
                decimal faltaReceber   = Convert.ToDecimal(faltaReceberTextBox.Text);

                if (valorPagamento > faltaReceber)
                {
                    codFormaPagamentoComboBox.Focus();
                    Cursor.Current = Cursors.Default;
                    throw new TelaException("O valor do pagamento não pode ser maior que o valor a receber.");
                }

                // Adicionar todas as saídas e totais para impressão do documento fiscal
                List <SaidaPedido> listaSaidaPedido = new List <SaidaPedido>();
                List <long>        listaContas      = new List <long>();

                for (int i = contasPessoaDataGridView.SelectedRows.Count - 1; i >= 0; i--)
                {
                    listaContas.Add(Convert.ToInt64(contasPessoaDataGridView.SelectedRows[i].Cells[0].Value.ToString()));            //codConta
                    long    codSaidaTemp    = Convert.ToInt64(contasPessoaDataGridView.SelectedRows[i].Cells[1].Value.ToString());   //codSaida
                    decimal valorAVistaTemp = Convert.ToDecimal(contasPessoaDataGridView.SelectedRows[i].Cells[9].Value.ToString()); //totalAVista
                    if (listaSaidaPedido.Where(sp => sp.CodSaida.Equals(codSaidaTemp)).Count() == 0)
                    {
                        listaSaidaPedido.Add(new SaidaPedido()
                        {
                            CodSaida = codSaidaTemp, TotalAVista = valorAVistaTemp
                        });
                    }
                }


                // cupom fiscal pode ser impresso quando todas as contas associadas a uma saída estiverem selecionadas
                bool podeImprimirCF = (valorPagamento == faltaReceber);
                if (podeImprimirCF)
                {
                    foreach (SaidaPedido saidaPedido in listaSaidaPedido)
                    {
                        List <Conta> contas = (List <Conta>)GerenciadorConta.GetInstance(null).ObterPorSaida(saidaPedido.CodSaida);
                        foreach (Conta conta in contas)
                        {
                            if ((!listaContas.Contains(conta.CodConta)) || ((conta.CF != null) && !conta.CF.Trim().Equals("")))
                            {
                                podeImprimirCF = false;
                                break;
                            }
                        }
                        if (!podeImprimirCF)
                        {
                            break;
                        }
                    }
                }

                //if (formaPagamento.Equals(FormaPagamento.CARTAO) && !podeImprimirCF)
                //{
                //    Cursor.Current = Cursors.Default;
                //    throw new TelaException("Não é possível realizar o pagamento com cartão de crédito. Verifique se alguma NFe referente às contas selecionadas já foi impresso OU se todas as contas referente às saídas escolhidas estão selecionadas.");
                //}

                if (formaPagamento.Equals(FormaPagamento.DINHEIRO) || formaPagamento.Equals(FormaPagamento.DEPOSITO) || formaPagamento.Equals(FormaPagamento.CARTAO)) //&& podeImprimirCF))
                {
                    AtualizarValoresDescontosContas();

                    if (formaPagamento.Equals(FormaPagamento.DINHEIRO) || formaPagamento.Equals(FormaPagamento.DEPOSITO))
                    {
                        MovimentacaoConta movimentacao = new MovimentacaoConta();
                        movimentacao.CodConta = listaContas.ElementAt(0); // valor é irrelevante
                        if (formaPagamento.Equals(FormaPagamento.DINHEIRO))
                        {
                            movimentacao.CodContaBanco = Global.CAIXA_PADRAO;
                        }
                        else
                        {
                            movimentacao.CodContaBanco = (int)codContaBancoComboBox.SelectedValue;
                        }

                        movimentacao.CodResponsavel      = pessoa.CodPessoa;
                        movimentacao.CodTipoMovimentacao = TipoMovimentacaoConta.RECEBIMENTO_CREDIARIO;
                        movimentacao.DataHora            = DateTime.Now;
                        movimentacao.Valor = valorPagamento;

                        List <MovimentacaoConta> listaMovimentacaoConta = (List <MovimentacaoConta>)movimentacaoContaBindingSource.DataSource;
                        GerenciadorMovimentacaoConta.GetInstance(null).Inserir(movimentacao, listaContas, listaMovimentacaoConta);
                        Cursor.Current = Cursors.Default;
                        if (podeImprimirCF && MessageBox.Show("Deseja imprimir NFe/NFCe das contas selecionadas?", "Confirmar Impressão", MessageBoxButtons.YesNo) == DialogResult.Yes)
                        {
                            SaidaPagamento saidaPagamento         = new SaidaPagamento();
                            FormaPagamento formaPagamentoDinheiro = GerenciadorFormaPagamento.GetInstance().Obter(FormaPagamento.DINHEIRO).ElementAt(0);
                            saidaPagamento.CodFormaPagamento        = formaPagamentoDinheiro.CodFormaPagamento;
                            saidaPagamento.MapeamentoFormaPagamento = formaPagamentoDinheiro.Mapeamento;
                            saidaPagamento.DescricaoFormaPagamento  = formaPagamentoDinheiro.Descricao;
                            saidaPagamento.Valor            = valorPagamento;
                            saidaPagamento.CodCartaoCredito = Global.CARTAO_LOJA;
                            //saidaPagamento.CodContaBanco


                            long codSolicitacao = GerenciadorSolicitacaoDocumento.GetInstance().InserirSolicitacaoDocumento(listaSaidaPedido, new List <SaidaPagamento>()
                            {
                                saidaPagamento
                            }, DocumentoFiscal.TipoSolicitacao.NFCE, false, false);
                            FrmSaidaAutorizacao frmSaidaAutorizacao = new FrmSaidaAutorizacao(listaSaidaPedido.FirstOrDefault().CodSaida, pessoa.CodPessoa, DocumentoFiscal.TipoSolicitacao.NFCE);
                            frmSaidaAutorizacao.ShowDialog();
                            frmSaidaAutorizacao.Dispose();
                        }
                        else if (!podeImprimirCF && MessageBox.Show("Deseja imprimir CRÉDITO para o cliente?", "Confirmar Impressão", MessageBoxButtons.YesNo) == DialogResult.Yes)
                        {
                            movimentacao.Valor = valorPagamento;
                            GerenciadorSaida.GetInstance(null).ImprimirCreditoPagamento(movimentacao);
                        }
                    }
                    else if (formaPagamento.Equals(FormaPagamento.CARTAO))
                    {
                        List <SaidaPagamento> listaSaidaPagamento = new List <SaidaPagamento>();
                        //if (totalPago > 0)
                        //{
                        //    SaidaPagamento saidaPagamentoDinheiro = new SaidaPagamento();
                        //    FormaPagamento formaPagamentoDinheiro = GerenciadorFormaPagamento.GetInstance().Obter(FormaPagamento.DINHEIRO).ElementAt(0);
                        //    saidaPagamentoDinheiro.CodFormaPagamento = FormaPagamento.DINHEIRO;
                        //    saidaPagamentoDinheiro.MapeamentoFormaPagamento = formaPagamentoDinheiro.Mapeamento;
                        //    saidaPagamentoDinheiro.DescricaoFormaPagamento = formaPagamentoDinheiro.Descricao;
                        //    saidaPagamentoDinheiro.Valor = totalPago;
                        //    listaSaidaPagamento.Add(saidaPagamentoDinheiro);
                        //}

                        SaidaPagamento saidaPagamentoCartao = new SaidaPagamento();

                        int           codCartao     = Convert.ToInt32(codCartaoComboBox.SelectedValue.ToString());
                        int           parcelas      = Convert.ToInt32(parcelasTextBox.Text);
                        CartaoCredito cartaoCredito = GerenciadorCartaoCredito.GetInstance().Obter(codCartao).ElementAt(0);
                        saidaPagamentoCartao.CodFormaPagamento        = FormaPagamento.CARTAO;
                        saidaPagamentoCartao.MapeamentoFormaPagamento = cartaoCredito.Mapeamento;
                        saidaPagamentoCartao.MapeamentoCartao         = cartaoCredito.Mapeamento;
                        saidaPagamentoCartao.NomeCartaoCredito        = cartaoCredito.Nome;
                        saidaPagamentoCartao.DescricaoFormaPagamento  = cartaoCredito.Nome;
                        saidaPagamentoCartao.Valor            = valorPagamento;
                        saidaPagamentoCartao.Parcelas         = parcelas;
                        saidaPagamentoCartao.CodCartaoCredito = codCartao;
                        listaSaidaPagamento.Add(saidaPagamentoCartao);

                        if (podeImprimirCF)
                        {
                            long codSolicitacao = GerenciadorSolicitacaoDocumento.GetInstance().InserirSolicitacaoDocumento(listaSaidaPedido, listaSaidaPagamento, DocumentoFiscal.TipoSolicitacao.NFCE, false, false);
                            FrmSaidaAutorizacao frmSaidaAutorizacao = new FrmSaidaAutorizacao(listaSaidaPedido.FirstOrDefault().CodSaida, pessoa.CodPessoa, DocumentoFiscal.TipoSolicitacao.NFCE);
                            frmSaidaAutorizacao.ShowDialog();
                            frmSaidaAutorizacao.Dispose();
                        }


                        if (MessageBox.Show("A compra foi confirmada pela administradora do cartão selecionado?", "Confirma Cartão de Crédito", MessageBoxButtons.YesNo) == DialogResult.Yes)
                        {
                            GerenciadorConta.GetInstance(null).QuitarContasCartaoCredito(listaContas, valorPagamento, cartaoCredito, parcelas);
                        }
                    }
                    codClienteComboBox_Leave(sender, e);
                }
            }
            habilitaBotoes(true);
            btnNovo.Focus();
        }
Exemple #3
0
        /// <summary>
        /// Encerra o lançamento de pagamentos
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void EncerrarLancamentosPagamentos(object sender, EventArgs e)
        {
            try
            {
                if (String.IsNullOrWhiteSpace(saida.CupomFiscal))
                {
                    var frmSaidaConfirma = new FrmSaidaConfirma(saida);
                    frmSaidaConfirma.ShowDialog();
                    Cursor.Current = Cursors.WaitCursor;

                    if (frmSaidaConfirma.Opcao != 0)  // Opção 0 é quando pressiona o botão Cancelar
                    {
                        List <SaidaPagamento> listaPagamentosSaida = (List <SaidaPagamento>)saidaPagamentoBindingSource.DataSource;
                        bool   limiteCompraLiberado = true;
                        Pessoa cliente = (Pessoa)clienteBindingSource.Current;
                        // limite de compra é verificado quando cadastrado um valor maior do que zero no cliente
                        if ((cliente.LimiteCompra > 0) && (frmSaidaConfirma.Opcao == Saida.TIPO_PRE_VENDA))
                        {
                            decimal limiteCompraDisponivel = GerenciadorPessoa.GetInstance().ObterLimiteCompraDisponivel(cliente);
                            if (limiteCompraDisponivel <= saida.TotalAVista)
                            {
                                if (MessageBox.Show("Cliente NÃO POSSUI LIMITE DISPONÍVEL para essa compra! O limite disponível é R$ " + limiteCompraDisponivel.ToString("N2") + ". Você possui permissão para liberar essa SAÍDA?", "Limite de Compra Ultrapassado", MessageBoxButtons.YesNo) == DialogResult.No)
                                {
                                    limiteCompraLiberado = false;
                                }
                            }
                        }
                        if (limiteCompraLiberado)
                        {
                            GerenciadorSaida.GetInstance(null).Encerrar(saida, frmSaidaConfirma.Opcao, listaPagamentosSaida, cliente);
                            if (frmSaidaConfirma.Opcao.Equals(Saida.TIPO_PRE_VENDA) || frmSaidaConfirma.Opcao.Equals(Saida.TIPO_PRE_VENDA_NFCE))
                            {
                                // quando tem pagamento crediário imprime o DAV
                                bool temPagamentoCrediario = listaPagamentosSaida.Where(sp => sp.CodFormaPagamento.Equals(FormaPagamento.CREDIARIO)).ToList().Count > 0;
                                if (temPagamentoCrediario && cliente.ImprimirDAV)
                                {
                                    if (!GerenciadorSaida.GetInstance(null).ImprimirDAV(new List <Saida>()
                                    {
                                        saida
                                    }, saida.Total, saida.TotalAVista, saida.Desconto, Global.Impressora.BEMATECH))
                                    {
                                        MessageBox.Show("Não foi possível realizar a impressão. Por Favor Verifique se a impressora REDUZIDA está LIGADA.", "Problema na Impressão", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                                    }
                                }
                                // imprimir cupom fiscal
                                if ((!temPagamentoCrediario) && (saida.TotalAVista > 0))
                                {
                                    bool haPagamentoCartao = listaPagamentosSaida.Where(sp => sp.CodFormaPagamento == FormaPagamento.CARTAO).Count() > 0;
                                    List <SaidaPedido> listaSaidaPedido = new List <SaidaPedido>()
                                    {
                                        new SaidaPedido()
                                        {
                                            CodSaida = saida.CodSaida, TotalAVista = saida.TotalAVista
                                        }
                                    };

                                    if (frmSaidaConfirma.Opcao.Equals(Saida.TIPO_PRE_VENDA_NFCE))
                                    {
                                        long codSolicitacao = GerenciadorSolicitacaoDocumento.GetInstance().InserirSolicitacaoDocumento(listaSaidaPedido, listaPagamentosSaida, DocumentoFiscal.TipoSolicitacao.NFCE, false, false);
                                        FrmSaidaAutorizacao frmSaidaAutorizacao = new FrmSaidaAutorizacao(codSolicitacao);
                                        frmSaidaAutorizacao.ShowDialog();
                                        frmSaidaAutorizacao.Dispose();
                                    }
                                    else
                                    {
                                        GerenciadorSolicitacaoDocumento.GetInstance().InserirSolicitacaoDocumento(listaSaidaPedido, listaPagamentosSaida, DocumentoFiscal.TipoSolicitacao.ECF, false, false);
                                    }
                                }
                            }
                        }
                    }
                    frmSaidaConfirma.Close();
                    frmSaidaConfirma.Dispose();
                }
                Cursor.Current = Cursors.Default;
                this.Close();
            }
            catch (NegocioException ne)
            {
                throw ne;
            }
            catch (Exception)
            {
                MessageBox.Show("Problemas no Encerramento da Venda. Favor tentar novamente.", "Erro da Aplicação", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                btnSalvar_Click(sender, e);
            }
        }
        private void btnEnviar_Click(object sender, EventArgs e)
        {
            // o evento foi disparo do butão que emite Nf-
            bool ehNfeComplementar = (sender is Button) && ((Button)sender).Name.Equals("btnComplementar");

            if (Saida.TipoSaida.Equals(Saida.TIPO_DEVOLUCAO_FORNECEDOR) || Saida.TipoSaida.Equals(Saida.TIPO_REMESSA_CONSERTO))
            {
                if (MessageBox.Show("Deseja gerar espelho da NF-e para Validação?", "Criar Espelho da NF-e", MessageBoxButtons.OKCancel) == DialogResult.OK)
                {
                    // Atualiza os dados da saída
                    Saida.Observacao = observacaoTextBox.Text.Trim();
                    if (Saida.CupomFiscal.Trim().Equals(""))
                    {
                        GerenciadorSaida.GetInstance(null).AtualizarNfePorCodSaida(Saida.Nfe, Saida.Observacao, Saida.CodSaida);
                    }
                    //List<SaidaPedido> listaSaidaPedido = new List<SaidaPedido>() { new SaidaPedido() { CodSaida = Saida.CodSaida, TotalAVista = Saida.TotalAVista } };
                    //List<SaidaPagamento> listaSaidaPagamento = GerenciadorSaidaPagamento.GetInstance(null).ObterPorSaida(Saida.CodSaida);
                    GerenciadorSolicitacaoDocumento.GetInstance().InserirSolicitacaoDocumento(listaSaidaPedido, listaSaidaPagamento, DocumentoFiscal.TipoSolicitacao.NFE, ehNfeComplementar, true);
                }
            }

            if (MessageBox.Show("Confirma envio da NF-e?", "Enviar NF-e", MessageBoxButtons.OKCancel) == DialogResult.OK)
            {
                Cursor.Current = Cursors.WaitCursor;
                // Atualiza os dados da saída
                if ((Cliente == null) || Cliente.CodPessoa.Equals(Global.CLIENTE_PADRAO))
                {
                    throw new TelaException("Para emissão de uma NF-e deve-se selecionar um Cliente.");
                }
                if (Cliente.CodPessoa != Saida.CodCliente)
                {
                    Saida.CodCliente = Cliente.CodPessoa;
                    GerenciadorSaida.GetInstance(null).Atualizar(Saida);
                }
                Saida.Observacao = observacaoTextBox.Text;
                if (Saida.CupomFiscal.Trim().Equals(""))
                {
                    foreach (SaidaPedido saidaPedido in listaSaidaPedido)
                    {
                        GerenciadorSaida.GetInstance(null).AtualizarNfePorCodSaida(Saida.Nfe, Saida.Observacao, saidaPedido.CodSaida);
                    }
                }
                else
                {
                    GerenciadorSaida.GetInstance(null).AtualizarPorPedido(Saida.Nfe, Saida.Observacao, Cliente.CodPessoa, Saida.CupomFiscal);
                }
                NfeControle nfe = (NfeControle)nfeControleBindingSource.Current;
                if (nfe != null)
                {
                    GerenciadorNFe.GetInstance().Atualizar(nfe);
                }

                // envia nota fiscal
                //List<SaidaPedido> listaSaidaPedido = new List<SaidaPedido>();
                //Saida saida = GerenciadorSaida.GetInstance(null).Obter(Saida.CodSaida);
                List <SaidaPesquisa> listaSaidas            = GerenciadorSaida.GetInstance(null).ObterPorCodSaidas(listaSaidaPedido.Select(s => s.CodSaida).ToList());
                List <string>        listaDocumentosFiscais = listaSaidas.Select(s => s.CupomFiscal).Distinct().ToList();
                if (listaSaidas.Where(s => !string.IsNullOrEmpty(s.CupomFiscal)).Count() > 0)
                {
                    listaSaidas = listaSaidas.Where(s => string.IsNullOrEmpty(s.CupomFiscal)).ToList();
                    foreach (string docFiscal in listaDocumentosFiscais)
                    {
                        if (!string.IsNullOrEmpty(docFiscal))
                        {
                            listaSaidas.AddRange(GerenciadorSaida.GetInstance(null).ObterPorCupomFiscal(Saida.CupomFiscal));
                        }
                    }


                    listaSaidaPedido = new List <SaidaPedido>();
                    foreach (SaidaPesquisa s in listaSaidas)
                    {
                        listaSaidaPedido.Add(new SaidaPedido()
                        {
                            CodSaida = s.CodSaida, TotalAVista = s.TotalAVista
                        });
                    }
                    List <Conta> listaContas = GerenciadorConta.GetInstance(null).ObterPorNfe(Saida.CupomFiscal).ToList();

                    decimal        valorTotalPagamento = listaContas.Sum(c => c.Valor) - listaContas.Sum(c => c.Desconto);
                    SaidaPagamento saidaPagamento      = new SaidaPagamento();
                    FormaPagamento dinheiro            = GerenciadorFormaPagamento.GetInstance().Obter(FormaPagamento.DINHEIRO).ElementAt(0);
                    saidaPagamento.CodFormaPagamento        = FormaPagamento.DINHEIRO;
                    saidaPagamento.CodCartaoCredito         = Global.CARTAO_LOJA;
                    saidaPagamento.MapeamentoFormaPagamento = dinheiro.Mapeamento;
                    saidaPagamento.DescricaoFormaPagamento  = dinheiro.Descricao;
                    saidaPagamento.Valor = valorTotalPagamento;
                    listaSaidaPagamento.Add(saidaPagamento);
                }

                Cursor.Current = Cursors.Default;

                long codSolicitacao = GerenciadorSolicitacaoDocumento.GetInstance().InserirSolicitacaoDocumento(listaSaidaPedido, listaSaidaPagamento, DocumentoFiscal.TipoSolicitacao.NFE, ehNfeComplementar, false);
                FrmSaidaAutorizacao frmSaidaAutorizacao = new FrmSaidaAutorizacao(Saida.CodSaida, Saida.CodCliente, DocumentoFiscal.TipoSolicitacao.NFE);
                frmSaidaAutorizacao.ShowDialog();
                frmSaidaAutorizacao.Dispose();
            }
        }