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