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(); } } }
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(); }
/// <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(); } }