Ejemplo n.º 1
0
 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);
     }
 }
Ejemplo n.º 2
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();
                }
            }
        }
        /// <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);
            }
        }
Ejemplo n.º 5
0
        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);
                }
            }
        }
Ejemplo n.º 6
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();
        }
Ejemplo n.º 7
0
        /// <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();
                }
            }
        }
Ejemplo n.º 10
0
        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();
            }
        }