Ejemplo n.º 1
0
 public static GerenciadorSaidaPagamento GetInstance(SaceEntities context)
 {
     if (gSaidaPagamento == null)
     {
         gSaidaPagamento = new GerenciadorSaidaPagamento();
     }
     if (context == null)
     {
         repSaidaPagamento = new RepositorioGenerico <SaidaFormaPagamentoE>();
     }
     else
     {
         repSaidaPagamento = new RepositorioGenerico <SaidaFormaPagamentoE>(context);
     }
     saceContext = (SaceEntities)repSaidaPagamento.ObterContexto();
     return(gSaidaPagamento);
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Trasnformar Pre-vendas em orçamento quando não há crediários
        /// </summary>
        /// <param name="_listaSaidaPedido"></param>
        public void TransformarOrcamentoPorRecusaDocumentoFiscal(IEnumerable <long> listaCodSaidas)
        {
            Saida saida = GerenciadorSaida.GetInstance(null).Obter(listaCodSaidas.ElementAt(0));

            if (Saida.LISTA_TIPOS_VENDA.Contains(saida.TipoSaida))
            {
                foreach (long codSaida in listaCodSaidas)
                {
                    bool temPagamentoCrediario = GerenciadorSaidaPagamento.GetInstance(null).ObterPorSaidaFormaPagamento(codSaida, FormaPagamento.CREDIARIO).ToList().Count > 0;
                    if (!temPagamentoCrediario)
                    {
                        saida = GerenciadorSaida.GetInstance(null).Obter(codSaida);
                        if ((saida != null) && (saida.TipoSaida != Saida.TIPO_VENDA))
                        {
                            saida.TipoSaida = Saida.TIPO_PRE_VENDA;
                            //GerenciadorSaida.GetInstance(null).PrepararEdicaoSaida(saida);
                        }
                    }
                }
            }
        }
        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++;
            }
        }
Ejemplo n.º 4
0
        public void InserirRespostaCartao(Cartao.ResultadoProcessamento resultado)
        {
            List <tb_solicitacao_saida> listaSolicitacaoSaida;

            if (resultado.Aprovado)
            {
                listaSolicitacaoSaida = ObterSolicitacaoSaida(resultado.CodSolicitacao).ToList();
                // Pode passar mais de um cartão de crédito
                if (listaSolicitacaoSaida.Count == 1)
                {
                    tb_solicitacao_saida           solicitacaoSaida = listaSolicitacaoSaida.FirstOrDefault();
                    IEnumerable <Conta>            listaContas      = GerenciadorConta.GetInstance(null).ObterPorSaida(solicitacaoSaida.codSaida);
                    List <Cartao.RespostaAprovada> listaAprovadas   = resultado.ListaRespostaAprovada;
                    foreach (Cartao.RespostaAprovada aprovada in listaAprovadas)
                    {
                        String        tipoCartaoString = Enum.GetName(typeof(Cartao.TipoCartao), aprovada.TipoCartao);
                        CartaoCredito cartao           = GerenciadorCartaoCredito.GetInstance().ObterPorMapeamentoCappta(aprovada.NomeBandeiraCartao).Where(c => c.TipoCartao.Equals(tipoCartaoString)).ElementAtOrDefault(0);
                        Conta         conta            = listaContas.Where(c => c.ValorPagar == (decimal)aprovada.Valor && String.IsNullOrWhiteSpace(c.NumeroDocumento)).FirstOrDefault();
                        GerenciadorSaidaPagamento.GetInstance(null).AtualizarPorAutorizacaoCartao(conta.CodSaida, cartao.CodCartao, aprovada.NumeroControle);

                        conta.CodPessoa       = cartao.CodPessoa;
                        conta.NumeroDocumento = aprovada.NumeroControle;
                        conta.DataVencimento  = DateTime.Now.AddDays(cartao.DiaBase);
                        GerenciadorConta.GetInstance(null).AtualizarDadosCartaoCredito(conta);
                    }
                }
                //else
                //{
                //    foreach (tb_solicitacao_saida solicitacaoSaida in listaSolicitacaoSaida)
                //    {
                //        IEnumerable<Conta> contas = GerenciadorConta.GetInstance(null).ObterPorSaida(solicitacaoSaida.codSaida);

                //    }
                //}
                InserirAutorizacaoCartao(resultado, listaSolicitacaoSaida);
            }

            AtualizarSolicitacaoDocumentoCartao(resultado);
        }
        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.º 6
0
        public Boolean AtualizarPedidosComDocumentosFiscais(string nomeServidor)
        {
            Boolean       atualizou      = false;
            DirectoryInfo PastaRetorno   = new DirectoryInfo(Global.PASTA_COMUNICACAO_FRENTE_LOJA_RETORNO);
            string        nomeComputador = System.Windows.Forms.SystemInformation.ComputerName;

            if (nomeComputador.Equals(nomeServidor) && PastaRetorno.Exists)
            {
                // Busca automaticamente todos os arquivos em todos os subdiretórios
                FileInfo[] Files = PastaRetorno.GetFiles("*", SearchOption.TopDirectoryOnly);
                if (Files.Length == 0)
                {
                    atualizou = true;
                }
                else
                {
                    foreach (FileInfo file in Files)
                    {
                        try
                        {
                            bool         sucesso  = false;
                            String       numeroCF = null;
                            String       linha    = null;
                            StreamReader reader   = new StreamReader(file.FullName);

                            // sucesso = true quando cupum fiscal foi impresso
                            if ((linha = reader.ReadLine()) != null)
                            {
                                sucesso = linha.Equals("OK");
                                if (sucesso && ((linha = reader.ReadLine()) != null))
                                {
                                    numeroCF = linha;
                                }
                            }
                            reader.Close();

                            // quando cupom fiscal impresso com sucesso atualiza saidas
                            long codPedido = Convert.ToInt64(file.Name.Replace(".TXT", ""));
                            List <SaidaPedido> _listaSaidaPedido = GerenciadorSaidaPedido.GetInstance().ObterPorPedido(codPedido);
                            if (sucesso)
                            {
                                foreach (SaidaPedido saidaPedido in _listaSaidaPedido)
                                {
                                    GerenciadorSaida.GetInstance(null).AtualizarTipoPedidoGeradoPorSaida(Saida.TIPO_VENDA, numeroCF, saidaPedido.TotalAVista, saidaPedido.CodSaida);
                                    RemoverSolicitacaoDocumento(saidaPedido.CodSaida);
                                    atualizou = true;
                                }
                            }
                            else
                            {
                                foreach (SaidaPedido saidaPedido in _listaSaidaPedido)
                                {
                                    bool temPagamentoCrediario = GerenciadorSaidaPagamento.GetInstance(null).ObterPorSaidaFormaPagamento(saidaPedido.CodSaida, FormaPagamento.CREDIARIO).ToList().Count > 0;
                                    if (!temPagamentoCrediario)
                                    {
                                        Saida saida = GerenciadorSaida.GetInstance(null).Obter(saidaPedido.CodSaida);
                                        if ((saida != null) && (saida.TipoSaida != Saida.TIPO_VENDA))
                                        {
                                            saida.TipoSaida = Saida.TIPO_PRE_VENDA;
                                            GerenciadorSaida.GetInstance(null).PrepararEdicaoSaida(saida);
                                        }
                                    }
                                }
                            }
                            GerenciadorSaidaPedido.GetInstance().RemoverPorPedido(codPedido);
                        }
                        catch (Exception)
                        {
                            // Se houver algum impossibilidade de trasnformar o pedido em pré-venda
                            // não tem problema. Pode acontecer quando cliente quita a conta gerada
                            // mas há algum problema na impressora para imprimir o cupom fiscal
                            // Nesses casos é só fazer a reimpressão do cupom.
                        }
                        finally
                        {
                            DirectoryInfo PastaBackup = new DirectoryInfo(Global.PASTA_COMUNICACAO_FRENTE_LOJA_BACKUP);
                            if (PastaBackup.Exists)
                            {
                                file.CopyTo(Global.PASTA_COMUNICACAO_FRENTE_LOJA_BACKUP + file.Name, true);
                            }
                            if (file.Exists)
                            {
                                file.Delete();
                            }
                        }
                    }
                }
            }
            return(atualizou);
        }
        /// <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();
                }
            }
        }