internal void Atualizar(SaidaPagamento saidaPagamento) { try { var query = from saidaPagamentoE in saceContext.SaidaFormaPagamentoSet where saidaPagamentoE.codSaida == saidaPagamento.CodSaida select saidaPagamentoE; foreach (SaidaFormaPagamentoE _saidaPagamentoE in query) { _saidaPagamentoE.codCartao = saidaPagamento.CodCartaoCredito; _saidaPagamentoE.numeroControle = saidaPagamento.NumeroControle; _saidaPagamentoE.codContaBanco = saidaPagamento.CodContaBanco; _saidaPagamentoE.codFormaPagamento = saidaPagamento.CodFormaPagamento; _saidaPagamentoE.codSaida = saidaPagamento.CodSaida; _saidaPagamentoE.data = saidaPagamento.Data; _saidaPagamentoE.intervaloDias = saidaPagamento.IntervaloDias; _saidaPagamentoE.numeroControle = saidaPagamento.NumeroControle; _saidaPagamentoE.parcelas = saidaPagamento.Parcelas; _saidaPagamentoE.valor = saidaPagamento.Valor; } saceContext.SaveChanges(); } catch (Exception e) { throw new DadosException("Saida", e.Message, e); } }
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(); } } }
/// <summary> /// Salva uma forma de pagamento /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSalvar_Click(object sender, EventArgs e) { if (Math.Abs(saida.TotalAVista) <= Math.Abs(saida.TotalPago)) { EncerrarLancamentosPagamentos(sender, e); } else { SaidaPagamento saidaPagamento = new SaidaPagamento(); saidaPagamento.CodContaBanco = int.Parse(codContaBancoComboBox.SelectedValue.ToString()); saidaPagamento.CodFormaPagamento = int.Parse(codFormaPagamentoComboBox.SelectedValue.ToString()); saidaPagamento.CodCartaoCredito = int.Parse(codCartaoComboBox.SelectedValue.ToString()); if (saidaPagamento.CodFormaPagamento.Equals(FormaPagamento.CREDIARIO)) { saidaPagamento.Data = saida.DataSaida; } else { saidaPagamento.Data = DateTime.Now; } saidaPagamento.Valor = decimal.Parse(valorRecebidoTextBox.Text); saidaPagamento.CodSaida = saida.CodSaida; saidaPagamento.IntervaloDias = Convert.ToInt32(intervaloDiasTextBox.Text); saidaPagamento.Parcelas = Convert.ToInt32(parcelasTextBox.Text); saida.CodCliente = long.Parse(codClienteComboBox.SelectedValue.ToString()); saida.CodProfissional = Global.PROFISSIONAL_PADRAO;// long.Parse(codProfissionalComboBox.SelectedValue.ToString()); saida.CodEmpresaFrete = saida.CodCliente; saida.Desconto = decimal.Parse(descontoTextBox.Text); saida.CpfCnpj = cpf_CnpjTextBox.Text; saida.Total = decimal.Parse(totalTextBox.Text); codFormaPagamentoComboBox.Focus(); GerenciadorSaidaPagamento.GetInstance(null).Inserir(saidaPagamento, saida); AtualizaValores(); saidaPagamentoBindingSource.DataSource = GerenciadorSaidaPagamento.GetInstance(null).ObterPorSaida(long.Parse(codSaidaTextBox.Text)); if (Math.Round(saida.TotalAVista, 2) <= Math.Round(saida.TotalPago, 2)) { EncerrarLancamentosPagamentos(sender, e); } else { codFormaPagamentoComboBox.Focus(); } } valorRecebidoTextBox.Enabled = true; }
private void AtualizaFormaPagamentoMultipla(tb_autorizacao_cartao autorizacaoAprovada, CartaoCredito cartao, IEnumerable <SaidaPagamento> pagamentos, IEnumerable <Conta> listaContas) { SaidaPagamento saidaPagamento = pagamentos.Where(p => p.CodFormaPagamento == FormaPagamento.CARTAO).FirstOrDefault(); if (saidaPagamento == null) { saidaPagamento = new SaidaPagamento(); } saidaPagamento.CodCartaoCredito = cartao.CodCartao; saidaPagamento.CodFormaPagamento = FormaPagamento.CARTAO; saidaPagamento.Data = (DateTime)autorizacaoAprovada.dataHoraAutorizacao; saidaPagamento.NumeroControle = autorizacaoAprovada.nsuTransacao.ToString(); saidaPagamento.Parcelas = (int)autorizacaoAprovada.quantidadeParcelas; saidaPagamento.Valor = autorizacaoAprovada.valor; if (pagamentos.Where(p => p.CodFormaPagamento == FormaPagamento.CARTAO).Count() == 1) { GerenciadorSaidaPagamento.GetInstance(null).Atualizar(saidaPagamento); } foreach (Conta conta in listaContas) { GerenciadorConta.GetInstance(null).Remover(conta.CodConta); } List <SaidaPagamento> listaPagamentos = new List <SaidaPagamento>() { saidaPagamento }; List <SaidaPesquisa> listaSaidas = GerenciadorSaida.GetInstance(null).ObterPorCupomFiscal(autorizacaoAprovada.cupomFiscal); foreach (SaidaPesquisa saidaPesquisa in listaSaidas) { Saida saida = GerenciadorSaida.GetInstance(null).Obter(saidaPesquisa.CodSaida); GerenciadorSaidaPagamento.GetInstance(null).RemoverPorSaida(saida); GerenciadorSaida.GetInstance(null).RegistrarPagamentosSaida(listaPagamentos, saida); } }
private void btnSalvar_Click(object sender, EventArgs e) { decimal total = decimal.Parse(totalTextBox.Text); if (saida != null) { SaidaPagamento saidaPagamento = GerenciadorSaidaPagamento.GetInstance(null).ObterPorSaida(saida.CodSaida).FirstOrDefault(); Conta conta = new Conta(); conta.CF = saida.CupomFiscal; conta.CodEntrada = Global.ENTRADA_PADRAO; if (saidaPagamento != null) { conta.CodPagamento = saidaPagamento.CodSaidaPagamento; } conta.CodPessoa = saida.CodCliente; conta.CodPlanoConta = PlanoConta.SAIDA_PRODUTOS; conta.CodSaida = saida.CodSaida; conta.CodSituacao = SituacaoConta.SITUACAO_ABERTA; conta.DescricaoSituacao = "ABERTA"; conta.DataVencimento = dataVencimentoDateTimePicker.Value; conta.Desconto = 0; conta.FormatoConta = Conta.FORMATO_CONTA_BOLETO; conta.NumeroDocumento = numeroDocumentoTextBox.Text; conta.Valor = Decimal.Parse(valorPagarTextBox.Text); listaContaBoletos.Add(conta); contaBindingSource.DataSource = listaContaBoletos; } if (listaContaBoletos.Sum(b => b.Valor) >= total) { if (MessageBox.Show("Confirma Substitução por Boletos?", "Confirmar Substituição por Boletos", MessageBoxButtons.YesNo) == DialogResult.Yes) { GerenciadorConta.GetInstance(null).Substituir(saida.CupomFiscal, listaContaBoletos); } } }
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> /// Insere um novo pagamento na saída /// </summary> /// <param name="saidaPagamento"></param> /// <param name="saida"></param> /// <returns></returns> public long Inserir(SaidaPagamento saidaPagamento, Saida saida) { DbTransaction transaction = null; try { if (saceContext.Connection.State == System.Data.ConnectionState.Closed) { saceContext.Connection.Open(); } transaction = saceContext.Connection.BeginTransaction(); if ((saidaPagamento.Valor == 0) && ((saida.TotalAVista - saida.TotalPago) != 0)) { throw new NegocioException("O valor recebido não pode ser igual a zero."); } else if ((saida.TotalAVista < 0) && (Math.Abs(saidaPagamento.Valor) > Math.Abs(saida.TotalAVista - saida.TotalPago))) { throw new NegocioException("O valor da devolução não pode ser maior que o valor dos produtos."); } else if (Math.Abs(saida.TotalAVista) < Math.Abs(saida.TotalPago)) { throw new NegocioException("Não é necessário registrar mais outro pagamento."); } else if ((saidaPagamento.CodFormaPagamento != FormaPagamento.DINHEIRO) && (saidaPagamento.CodFormaPagamento != FormaPagamento.CARTAO) && (saida.CodCliente == Util.Global.CLIENTE_PADRAO)) { throw new NegocioException("É necessário informar um cliente para utilizar essa forma de pagamento."); } else if ((saidaPagamento.CodFormaPagamento == FormaPagamento.CARTAO) && (saidaPagamento.CodCartaoCredito == Util.Global.CARTAO_LOJA)) { throw new NegocioException("Esse cartão de crédito não pode ser utilizado como forma de pagamento. Favor selecionar um novo cartão."); } //decimal total = totalPagamentos(saida.CodSaida); if (Math.Abs(saida.TotalAVista - saida.TotalPago) > 0) { SaidaFormaPagamentoE _saidaPagamentoE = new SaidaFormaPagamentoE(); _saidaPagamentoE.codCartao = saidaPagamento.CodCartaoCredito; _saidaPagamentoE.codContaBanco = saidaPagamento.CodContaBanco; _saidaPagamentoE.codFormaPagamento = saidaPagamento.CodFormaPagamento; _saidaPagamentoE.codSaida = saidaPagamento.CodSaida; _saidaPagamentoE.data = saidaPagamento.Data; _saidaPagamentoE.intervaloDias = saidaPagamento.IntervaloDias; _saidaPagamentoE.parcelas = saidaPagamento.Parcelas; _saidaPagamentoE.valor = saidaPagamento.Valor; _saidaPagamentoE.numeroControle = String.IsNullOrEmpty(saidaPagamento.NumeroControle) ? "" : saidaPagamento.NumeroControle; repSaidaPagamento.Inserir(_saidaPagamentoE); repSaidaPagamento.SaveChanges(); var query = from saidaPagamentoSet in saceContext.SaidaFormaPagamentoSet where saidaPagamentoSet.codSaida == saida.CodSaida select saidaPagamentoSet; saida.TotalPago = query.ToList().Sum(sp => (decimal)sp.valor); saida.Troco = saida.TotalPago - saida.TotalAVista; saida.Desconto = 100 - ((saida.TotalAVista / saida.Total) * 100); } GerenciadorSaida.GetInstance(saceContext).Atualizar(saida); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new DadosException("Pagamentos", e.Message, e); } finally { saceContext.Connection.Close(); } return(0); }
private void AtualizaFormaPagamentoUnica(tb_autorizacao_cartao autorizacaoAprovada, CartaoCredito cartao, SaidaPagamento saidaPagamento, IEnumerable <Conta> listaContas) { saidaPagamento.CodCartaoCredito = cartao.CodCartao; saidaPagamento.CodFormaPagamento = FormaPagamento.CARTAO; saidaPagamento.Data = (DateTime)autorizacaoAprovada.dataHoraAutorizacao; saidaPagamento.NumeroControle = autorizacaoAprovada.nsuTransacao.ToString(); saidaPagamento.Parcelas = (int)autorizacaoAprovada.quantidadeParcelas; saidaPagamento.Valor = autorizacaoAprovada.valor; GerenciadorSaidaPagamento.GetInstance(null).Atualizar(saidaPagamento); int parcela = 1; foreach (Conta conta in listaContas) { GerenciadorConta.GetInstance(null).Atualizar(cartao.CodPessoa, autorizacaoAprovada.dataHoraAutorizacao.Value.AddDays(cartao.DiaBase * parcela), Conta.FORMATO_CONTA_CARTAO, autorizacaoAprovada.nsuTransacao.ToString(), autorizacaoAprovada.valor, conta.CodConta); parcela++; } }
/// <summary> /// /// </summary> /// <param name="resultado"></param> public void AtualizarPedidosComAutorizacaoCartao() { var repAutorizacao = new RepositorioGenerico <tb_autorizacao_cartao>(); var saceEntities = (SaceEntities)repAutorizacao.ObterContexto(); var query = from autorizacao in saceEntities.tb_autorizacao_cartao where autorizacao.processado.Equals(false) select autorizacao; List <tb_autorizacao_cartao> listaAutorizacoes = query.ToList(); if (listaAutorizacoes.Count > 0) { var repConta = new RepositorioGenerico <ContaE>(); var repSaidaPagamento = new RepositorioGenerico <SaidaFormaPagamentoE>(); List <CartaoCredito> listaCartoes = GerenciadorCartaoCredito.GetInstance().ObterTodos().ToList(); // Varre todas as transações ainda não processadas foreach (tb_autorizacao_cartao autorizacaoCartaoE in listaAutorizacoes) { if (!autorizacaoCartaoE.processado) { IEnumerable <tb_autorizacao_cartao> listaAprovadas = listaAutorizacoes.Where(aut => aut.statusTransacao.Equals("0") && aut.cupomFiscal.Equals(autorizacaoCartaoE.cupomFiscal)); IEnumerable <tb_autorizacao_cartao> listaNegadas = listaAutorizacoes.Where(aut => !aut.statusTransacao.Equals("0") && aut.cupomFiscal.Equals(autorizacaoCartaoE.cupomFiscal)); if (listaAprovadas.Count() > 0) { foreach (tb_autorizacao_cartao autorizacaoAprovada in listaAprovadas) { autorizacaoAprovada.processado = true; List <tb_saida> listaSaidas = null; if (autorizacaoAprovada.tb_saida.Count() == 0) { var query2 = from saida in saceEntities.tb_saida where saida.pedidoGerado.Equals(autorizacaoAprovada.cupomFiscal) select saida; listaSaidas = query2.ToList(); if (listaSaidas.Count == 0) { autorizacaoAprovada.processado = false; } else { foreach (tb_saida saidaE in listaSaidas) { autorizacaoAprovada.tb_saida.Add(saidaE); } } } repAutorizacao.SaveChanges(); foreach (tb_saida saidaE in autorizacaoAprovada.tb_saida) { String tipoCartaoString = "CREDITO"; if (autorizacaoAprovada.tipoTransacao.Equals(20)) { tipoCartaoString = "DEBITO"; } if (autorizacaoAprovada.nomeBandeiraCartao == null) { autorizacaoAprovada.nomeBandeiraCartao = "BANESE"; } CartaoCredito cartao = listaCartoes.Where(c => c.TipoCartao.Equals(tipoCartaoString) && autorizacaoAprovada.nomeBandeiraCartao.Equals(c.MapeamentoCappta)).ElementAtOrDefault(0); if (cartao == null) { // ajustes nos nomes dos cartões recuperados para que possa ser associado a um cartão cadastrado if (autorizacaoAprovada.nomeBandeiraCartao.ToUpper().Equals("HIPER")) { autorizacaoAprovada.nomeBandeiraCartao = "HIPERCARD"; } else if (autorizacaoAprovada.nomeBandeiraCartao.ToUpper().Equals("BANESE")) { autorizacaoAprovada.nomeBandeiraCartao = "BANESECARD"; } else if (autorizacaoAprovada.nomeBandeiraCartao.ToUpper().Equals("MASTER")) { autorizacaoAprovada.nomeBandeiraCartao = "MASTERCARD"; } if (autorizacaoAprovada.nomeBandeiraCartao.ToUpper().Equals("HIPERCARD") && tipoCartaoString.Equals("DEBITO")) { autorizacaoAprovada.nomeBandeiraCartao = "MASTERCARD"; } cartao = listaCartoes.Where(c => c.TipoCartao.Equals(tipoCartaoString) && autorizacaoAprovada.nomeBandeiraCartao.Equals(c.MapeamentoCappta)).ElementAtOrDefault(0); // cartões autorizados não cadastro são processados pela mastercard if (cartao == null) { cartao = listaCartoes.Where(c => c.TipoCartao.Equals(tipoCartaoString) && c.MapeamentoCappta.Equals("MASTERCARD")).ElementAtOrDefault(0); } } IEnumerable <SaidaPagamento> listaSaidaPagamento = GerenciadorSaidaPagamento.GetInstance(null).ObterPorSaida(saidaE.codSaida).Where(sp => sp.CodFormaPagamento.Equals(FormaPagamento.CARTAO)); IEnumerable <Conta> listaConta = GerenciadorConta.GetInstance(null).ObterPorSaida(saidaE.codSaida).Where(c => c.FormatoConta.Equals(Conta.FORMATO_CONTA_CARTAO)); if ((listaAprovadas.Count() == 1) && (listaSaidaPagamento.Count() == 1) && (listaConta.Count() == autorizacaoAprovada.quantidadeParcelas)) { AtualizaFormaPagamentoUnica(autorizacaoAprovada, cartao, listaSaidaPagamento.First(), listaConta); } else if (listaAprovadas.Count() == 1) { // quando existe mais de uma forma de pagamento associada na saida AtualizaFormaPagamentoMultipla(autorizacaoAprovada, cartao, listaSaidaPagamento, listaConta); } } autorizacaoAprovada.processado = true; } } else { if (listaNegadas.Count() > 0) { String cupomFiscal = listaNegadas.First().cupomFiscal; IEnumerable <SaidaPesquisa> listaSaidas = GerenciadorSaida.GetInstance(null).ObterPorCupomFiscal(cupomFiscal); // Cupom Fiscal foi emitido com venda em dinheiro if (listaSaidas.Count() > 0) { foreach (SaidaPesquisa saidaPesquisa in listaSaidas) { Saida saida = GerenciadorSaida.GetInstance(null).Obter(saidaPesquisa.CodSaida); GerenciadorSaidaPagamento.GetInstance(null).RemoverPorSaida(saida); SaidaPagamento saidaPagamento = new SaidaPagamento(); saidaPagamento.CodCartaoCredito = Global.CARTAO_LOJA; saidaPagamento.CodFormaPagamento = FormaPagamento.DINHEIRO; saidaPagamento.CodSaida = saida.CodSaida; saidaPagamento.Data = saida.DataSaida; saidaPagamento.Valor = saida.TotalAVista; saidaPagamento.CodContaBanco = Global.CAIXA_PADRAO; saidaPagamento.Parcelas = 1; List <SaidaPagamento> listaPagamentos = new List <SaidaPagamento>() { saidaPagamento }; GerenciadorSaida.GetInstance(null).RegistrarPagamentosSaida(listaPagamentos, saida); } } // Cupom Fiscal não foi emitido else { foreach (SaidaPesquisa saidaPesquisa in listaSaidas) { Saida saida = GerenciadorSaida.GetInstance(null).Obter(saidaPesquisa.CodSaida); if (!saida.TipoSaida.Equals(Saida.TIPO_ORCAMENTO)) { GerenciadorSaidaPagamento.GetInstance(null).RemoverPorSaida(saida); GerenciadorSaida.GetInstance(null).RegistrarEstornoEstoque(saida, null); saida.TipoSaida = Saida.TIPO_ORCAMENTO; saida.CodSituacaoPagamentos = SituacaoPagamentos.ABERTA; saida.CupomFiscal = ""; saida.TotalPago = 0; GerenciadorSaida.GetInstance(null).Atualizar(saida); } } } } } foreach (tb_autorizacao_cartao negada in listaNegadas) { negada.processado = true; } } repAutorizacao.SaveChanges(); } } }
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(); } }