/// <summary> /// /// </summary> public UtilRetorno pagar(MovimentoOperacaoDTO Transacao) { var RetornoValidacao = this.Validador.validar(Transacao); if (RetornoValidacao.flagError) { return(RetornoValidacao); } var ValidacaoSenha = this.Validador.validaSenha(Transacao); if (ValidacaoSenha.flagError) { return(ValidacaoSenha); } var MovimentoResumo = RetornoValidacao.info as MovimentoResumoVW; var RetornoMovimento = GeradorMovimento.pagar(MovimentoResumo, Transacao); if (RetornoMovimento.flagError) { return(RetornoMovimento); } var listaMovimentos = RetornoMovimento.info as List <Movimento>; var RetornoAtualizador = this.AtualizadorSaldoBL.atualizar(listaMovimentos); return(UtilRetorno.newInstance(false, "Pagamento realizado com sucesso!", listaMovimentos)); }
/// <summary> /// /// </summary> public override UtilRetorno validar(MovimentoOperacaoDTO Transacao) { var ValidacaoDestino = this.validarDestino(Transacao); if (ValidacaoDestino.flagError) { return(ValidacaoDestino); } ValidacaoDestino = this.validarSaldoOrigem(Transacao); if (ValidacaoDestino.flagError) { return(ValidacaoDestino); } var MovimentoResumo = new MovimentoResumoVW(); MovimentoResumo.idTipoTransacao = Transacao.idTipoTransacao ?? (byte)TipoTransacaoEnum.LANCAMENTO_DEBITO; MovimentoResumo.descricaoTipoTransacao = "Lançamento de Débito"; MovimentoResumo.captarDados(Transacao); return(UtilRetorno.newInstance(false, "", MovimentoResumo)); }
/// <summary> /// /// </summary> public UtilRetorno transferir(MovimentoOperacaoDTO Transacao) { var RetornoValidacao = this.Validador.validar(Transacao); if (RetornoValidacao.flagError) { return(RetornoValidacao); } if (Transacao.flagIgnorarSenha != true) { var ValidacaoSenha = this.Validador.validaSenha(Transacao); if (ValidacaoSenha.flagError) { return(ValidacaoSenha); } } var MovimentoResumo = RetornoValidacao.info as MovimentoResumoVW; var RetornoMovimento = GeradorMovimento.transferir(MovimentoResumo); if (RetornoMovimento.flagError) { return(RetornoMovimento); } var listaMovimentos = RetornoMovimento.info as List <Movimento>; var RetornoAtualizador = this.AtualizadorSaldoBL.atualizar(listaMovimentos); return(UtilRetorno.newInstance(false, "Transferência realizada com sucesso!", listaMovimentos)); }
/// <summary> /// /// </summary> public MovimentoOperacaoDTO carregar(MovimentoOperacaoDTO Transacao) { var listaMembros = MembroConsultaBL.queryNoFilter(1) .Where(x => x.nroAssociado == Transacao.nroContaOrigem || x.nroAssociado == Transacao.nroContaDestino ) .Select(x => new { x.id, x.idPessoa, x.nroAssociado, x.idTipoAssociado, x.idTipoCadastro, x.percentualDesconto, x.idIndicador, x.idIndicadorSegundoNivel, x.idIndicadorTerceiroNivel, x.senhaTransacao, Pessoa = new { x.Pessoa.nome, x.Pessoa.nroDocumento }, x.ativo }) .ToListJsonObject <Associado>(); Transacao.MembroOrigem = listaMembros.FirstOrDefault(x => x.nroAssociado == Transacao.nroContaOrigem); Transacao.MembroDestino = listaMembros.FirstOrDefault(x => x.nroAssociado == Transacao.nroContaDestino); return(Transacao); }
/// <summary> /// /// </summary> public override UtilRetorno validar(MovimentoOperacaoDTO Transacao) { var ValidacaoContas = this.validarContas(Transacao); if (ValidacaoContas.flagError) { return(ValidacaoContas); } if (Transacao.MembroDestino.nroAssociado != 1) { return(UtilRetorno.newInstance(true, "As compras devem ser feitas junto ao usuário SINCTEC.")); } var MovimentoResumo = new MovimentoResumoVW(); MovimentoResumo.idTipoTransacao = (byte)TipoTransacaoEnum.PRODUTOS_LINKEY; MovimentoResumo.descricaoTipoTransacao = "Pagamento Produtos SINCTEC"; MovimentoResumo.captarDados(Transacao); return(UtilRetorno.newInstance(false, "", MovimentoResumo)); }
/// <summary> /// /// </summary> public override UtilRetorno validar(MovimentoOperacaoDTO Transacao) { var ValidacaoContas = this.validarContas(Transacao); if (ValidacaoContas.flagError) { return(ValidacaoContas); } if (Transacao.MembroOrigem.idTipoCadastro == (byte)AssociadoTipoCadastroEnum.CONSUMIDOR && Transacao.MembroDestino.idTipoCadastro == (byte)AssociadoTipoCadastroEnum.COMERCIANTE) { return(UtilRetorno.newInstance(true, "A operação de transferência para estabelecimentos não é permitida.")); } var MovimentoResumo = new MovimentoResumoVW(); MovimentoResumo.idTipoTransacao = (byte)TipoTransacaoEnum.TRANSFERÊNCIA; MovimentoResumo.descricaoTipoTransacao = "Transferência"; MovimentoResumo.captarDados(Transacao); return(UtilRetorno.newInstance(false, "", MovimentoResumo)); }
/// <summary> /// /// </summary> public override UtilRetorno validar(MovimentoOperacaoDTO Transacao) { var ValidacaoContas = this.validarContas(Transacao); if (ValidacaoContas.flagError) { return(ValidacaoContas); } if (Transacao.MembroDestino.idTipoCadastro == (byte)AssociadoTipoCadastroEnum.CONSUMIDOR) { return(UtilRetorno.newInstance(true, "A conta destino não pertence à um estabelecimento comercial.")); } var MovimentoResumo = new MovimentoResumoVW(); MovimentoResumo.idTipoTransacao = (byte)TipoTransacaoEnum.PAGAMENTO; MovimentoResumo.descricaoTipoTransacao = "Pagamento"; MovimentoResumo.captarDados(Transacao); return(UtilRetorno.newInstance(false, "", MovimentoResumo)); }
protected virtual UtilRetorno validarOrigem(MovimentoOperacaoDTO Transacao) { if (Transacao.MembroOrigem == null) { return(UtilRetorno.newInstance(true, "Não foi possível identificar a conta de origem da transação.")); } if (Transacao.MembroOrigem.id == Transacao.MembroDestino.id) { return(UtilRetorno.newInstance(true, "Operação inválida! Não é possível realizar uma transferência para a própria conta.")); } if (Transacao.MembroOrigem.id == 0 || Transacao.MembroDestino.id == 0) { return(UtilRetorno.newInstance(true, "Operação inválida! Uma das contas não pôde ser identificada corretamente.")); } if (Transacao.flagIgnorarSaldo == true) { return(UtilRetorno.newInstance(false, "")); } var SaldoOrigem = this.SaldoConsultaBL.query(Transacao.MembroOrigem.id, 1) .Select(x => new { x.id, x.saldoAtual }) .FirstOrDefault() .ToJsonObject <MembroSaldo>() ?? new MembroSaldo(); if (SaldoOrigem.saldoAtual < Transacao.valorOperacao) { return(UtilRetorno.newInstance(true, "Não há saldo suficiente para realizar a operação.")); } return(UtilRetorno.newInstance(false, "")); }
public override MovimentoOperacaoDTO carregarDados(int idPessoaOrigem, int idPessoaDestino, decimal valorTransacao, int idReferencia) { MovimentoOperacaoDTO OMovimentoOperacaoDTO = base.carregarDados(idPessoaOrigem, 1, valorTransacao, idReferencia); OMovimentoOperacaoDTO.idProduto = this.carregarItemPedido(idReferencia).idProduto; return(OMovimentoOperacaoDTO); }
/// <summary> /// /// </summary> public List <Movimento> criarMovimentos(MovimentoResumoVW MovimentoResumo, MovimentoOperacaoDTO Transacao) { var TransacaoProdutoInterno = this.carregarDistribuicaoRede(Transacao); var MovimentoOrigem = gerarMovimentoOrigem(MovimentoResumo, Transacao); var MovimentoDestino = gerarMovimentoDestino(MovimentoResumo, Transacao, TransacaoProdutoInterno); var MovimentoRede = this.gerarMovimentosRede(MovimentoOrigem, TransacaoProdutoInterno); MovimentoDestino.percentualMovimentoPrincipal = decimal.Subtract(new decimal(100), MovimentoRede.carregarPercentualDistribuido()); MovimentoDestino.valor = decimal.Subtract(Transacao.valorOperacao, MovimentoRede.carregarValorDistribuido()); MovimentoDestino.observacao = $"Recebimento de {MovimentoDestino.percentualMovimentoPrincipal:N2} de {Transacao.valorOperacao:N2} produto SINCTEC"; if (!Transacao.flagPagamentoComBitkink) { MovimentoOrigem.valor = new decimal(0); MovimentoOrigem.observacao = $"Compra de Produto SINCTEC sem usar BTK"; MovimentoDestino.valor = new decimal(0); MovimentoDestino.observacao = $"Pagamento de Produto SINCTEC sem receber BTK"; } MovimentoRede.listaMovimentoRede = MovimentoRede.listaMovimentoRede.Where(x => x.idMembroDestino > 0 && x.valor > 0) .ToList(); var listaItens = new List <Movimento>(); listaItens.Add(MovimentoOrigem); listaItens.Add(MovimentoDestino); listaItens.AddRange(MovimentoRede.listaMovimentoRede); foreach (var item in listaItens) { if (item.flagMovimentoOrigem == true) { continue; } item.flagDebito = false; item.flagCredito = true; item.observacao = item.observacao.abreviar(100); item.setDefaultInsertValues(); } return(listaItens); }
public override MovimentoOperacaoDTO carregarDados(int idPessoaOrigem, int idPessoaDestino, decimal valorTransacao, int idReferencia) { MovimentoOperacaoDTO OMovimentoOperacaoDTO = base.carregarDados(idPessoaOrigem, idPessoaDestino, valorTransacao, idReferencia); OMovimentoOperacaoDTO.idTipoTransacao = (byte)TipoTransacaoEnum.SAQUE; OMovimentoOperacaoDTO.flagIgnorarSaldo = true; return(OMovimentoOperacaoDTO); }
/// <summary> /// /// </summary> public virtual UtilRetorno validarContas(MovimentoOperacaoDTO Transacao) { var Retorno = UtilRetorno.newInstance(false, ""); Retorno = this.validarDestino(Transacao); if (Retorno.flagError) { return(Retorno); } return(this.validarOrigem(Transacao)); }
/// <summary> /// /// </summary> private Movimento gerarMovimentoDestino(MovimentoResumoVW MovimentoResumo, MovimentoOperacaoDTO Transacao, TransacaoProdutoInterno TransacaoProdutoInterno) { var MovimentoDestino = new Movimento(); MovimentoDestino.captarDadosDestino(MovimentoResumo); MovimentoDestino.valor = TransacaoProdutoInterno.valorInterno; MovimentoDestino.observacao = $"{TransacaoProdutoInterno.percentualTotalInterno:N4}% de {Transacao.valorOperacao:N4}"; MovimentoDestino.idTipoTransacao = (byte)TipoTransacaoEnum.PRODUTOS_LINKEY; MovimentoDestino.setDefaultInsertValues(); MovimentoDestino.flagMovimentoDestino = true; return(MovimentoDestino); }
protected virtual UtilRetorno validarSaldoOrigem(MovimentoOperacaoDTO Transacao) { var SaldoDesstino = this.SaldoConsultaBL.query(Transacao.MembroDestino.id, 1) .Select(x => new { x.id, x.saldoAtual }) .FirstOrDefault() .ToJsonObject <MembroSaldo>() ?? new MembroSaldo(); if (SaldoDesstino.saldoAtual < Transacao.valorOperacao) { return(UtilRetorno.newInstance(true, "Não há saldo suficiente para realizar a operação.")); } return(UtilRetorno.newInstance(false, "")); }
protected virtual UtilRetorno validarDestino(MovimentoOperacaoDTO Transacao) { if (Transacao.MembroDestino == null) { return(UtilRetorno.newInstance(true, "Não foi possível identificar a conta de destino da transação.")); } if (Transacao.valorOperacao <= 0) { return(UtilRetorno.newInstance(true, "O valor informado para esta operação não é válido.")); } return(UtilRetorno.newInstance(false, "")); }
/// <summary> /// /// </summary> private Movimento gerarMovimentoOrigem(MovimentoResumoVW MovimentoResumo, MovimentoOperacaoDTO Transacao) { var MovimentoOrigem = new Movimento(); MovimentoOrigem.captarDadosOrigem(MovimentoResumo); MovimentoOrigem.idTipoTransacao = (byte)TipoTransacaoEnum.PRODUTOS_LINKEY; MovimentoOrigem.setDefaultInsertValues(); MovimentoOrigem.flagMovimentoOrigem = true; return(MovimentoOrigem); }
/// <summary> /// /// </summary> public virtual MovimentoOperacaoDTO carregarDados(int idPessoaOrigem, int idPessoaDestino, decimal valorTransacao, int idReferencia) { var Movimento = new MovimentoOperacaoDTO(); Movimento.MembroOrigem = this.carregarMembroOrigem(idPessoaOrigem); Movimento.nroContaOrigem = Movimento.MembroOrigem.nroAssociado.toInt(); Movimento.MembroDestino = this.carregarMembroDestino(idPessoaDestino); Movimento.nroContaDestino = Movimento.MembroDestino.nroAssociado.toInt(); Movimento.valorOperacao = valorTransacao; return(Movimento); }
/// <summary> /// /// </summary> private TransacaoProdutoInterno carregarDistribuicaoRede(MovimentoOperacaoDTO Transacao) { var Retorno = new TransacaoProdutoInterno(); Retorno.valorDistribuicao = new decimal(0); Retorno.valorPagamento = Transacao.valorOperacao; Retorno.valorInterno = Transacao.valorOperacao; Retorno.percentualTotalDistribuicao = new decimal(0); Retorno.percentualTotalInterno = new decimal(100); if (Transacao.idProduto.toInt() == 0) { return(Retorno); } var listaConfiguracoes = ProdutoConfiguracao.listar(Transacao.idProduto.toInt()) .Where(x => x.percentualComissao > 0 && x.idProduto > 0) .Select(x => new { x.id, x.idProduto, x.idUsuarioCadastro, x.nivel, x.percentualComissao }) .ToListJsonObject <ProdutoRedeConfiguracao>(); Retorno.percentualTotalDistribuicao = listaConfiguracoes.Select(x => x.percentualComissao).DefaultIfEmpty(0).Sum(); Retorno.percentualTotalInterno = decimal.Subtract(Retorno.percentualTotalInterno, Retorno.percentualTotalDistribuicao); Retorno.valorInterno = Retorno.valorInterno.valorPercentual(Retorno.percentualTotalInterno); Retorno.valorDistribuicao = decimal.Subtract(Transacao.valorOperacao, Retorno.valorInterno); Retorno.listaComissoes = listaConfiguracoes; return(Retorno); }
/// <summary> /// /// </summary> public virtual UtilRetorno validaSenha(MovimentoOperacaoDTO Transacao) { var senhaTransacao = Transacao.MembroOrigem.senhaTransacao; if (senhaTransacao.isEmpty()) { return(UtilRetorno.newInstance(true, "A conta informada não possui senha de transação configurada.")); } if (Transacao.tk.isEmpty()) { return(UtilRetorno.newInstance(true, "A senha de confirmação da transação não foi informada.")); } string senhaEnviada = UtilCrypt.SHA512(Transacao.tk); if (!senhaEnviada.Equals(senhaTransacao)) { return(UtilRetorno.newInstance(true, "A senha de transação informada é inválida.")); } return(UtilRetorno.newInstance(false, "")); }
/// <summary> /// /// </summary> private TransacaoPagamentoDTO carregarValores(MovimentoOperacaoDTO Transacao) { var ConfiguracaoCompra = ConfiguracaoCompraBL.listar(1) .Select(x => new { x.id, x.percentualLucro, x.percentualCashback, x.percentualComissao, x.percentualIndicacaoNivel1, x.percentualIndicacaoNivel2, x.percentualIndicacaoNivel3 }) .FirstOrDefault() .ToJsonObject <ConfiguracaoOperacaoCompra>(); var Dados = new TransacaoPagamentoDTO(); Dados.valorPagamento = Transacao.valorOperacao.toDecimal(); Dados.percentualDescontoEstabelecimento = Transacao.MembroDestino.percentualDesconto.toDecimal(); Dados.valorDesconto = Transacao.valorOperacao.valorPercentual(Dados.percentualDescontoEstabelecimento); Dados.valorEstabelecimento = decimal.Subtract(Transacao.valorOperacao.toDecimal(), Dados.valorDesconto); Dados.valorLinkey = Dados.valorDesconto.valorPercentual(ConfiguracaoCompra.percentualLucro.toDecimal()); Dados.valorCashback = Dados.valorDesconto.valorPercentual(ConfiguracaoCompra.percentualCashback.toDecimal()); Dados.valorComissaoCorretor = Dados.valorDesconto.valorPercentual(ConfiguracaoCompra.percentualComissao.toDecimal()); Dados.valorComissaoIndicador1 = Dados.valorDesconto.valorPercentual(ConfiguracaoCompra.percentualIndicacaoNivel1.toDecimal()); Dados.valorComissaoIndicador2 = Dados.valorDesconto.valorPercentual(ConfiguracaoCompra.percentualIndicacaoNivel2.toDecimal()); Dados.valorComissaoIndicador3 = Dados.valorDesconto.valorPercentual(ConfiguracaoCompra.percentualIndicacaoNivel3.toDecimal()); return(Dados); }
/// <summary> /// /// </summary> public UtilRetorno debitar(MovimentoOperacaoDTO Transacao) { var RetornoValidacao = this.Validador.validar(Transacao); if (RetornoValidacao.flagError) { return(RetornoValidacao); } var MovimentoResumo = RetornoValidacao.info as MovimentoResumoVW; var RetornoMovimento = GeradorMovimento.debitar(MovimentoResumo); if (RetornoMovimento.flagError) { return(RetornoMovimento); } var listaMovimentos = RetornoMovimento.info as List <Movimento>; var RetornoAtualizador = this.AtualizadorSaldoBL.atualizar(listaMovimentos); return(UtilRetorno.newInstance(false, "Lançamento de débito realizado com sucesso!", listaMovimentos.FirstOrDefault())); }
/// <summary> /// /// </summary> public UtilRetorno pagar(MovimentoResumoVW MovimentoResumo, MovimentoOperacaoDTO Transacao) { var MovimentoOrigem = new Movimento(); MovimentoOrigem.captarDadosOrigem(MovimentoResumo); MovimentoOrigem.idTipoTransacao = (byte)TipoTransacaoEnum.PAGAMENTO; MovimentoOrigem.setDefaultInsertValues(); db.Movimento.Add(MovimentoOrigem); db.SaveChanges(); var listaItens = new List <Movimento>(); var ValoresTransacao = this.carregarValores(Transacao); var MovimentoDestino = new Movimento(); MovimentoDestino.captarDadosDestino(MovimentoResumo); MovimentoDestino.valor = ValoresTransacao.valorEstabelecimento; MovimentoDestino.observacao = $"{ValoresTransacao.valorPagamento:N2} com {ValoresTransacao.percentualDescontoEstabelecimento:N2} de desconto."; MovimentoDestino.idTipoTransacao = (byte)TipoTransacaoEnum.PAGAMENTO; MovimentoDestino.setDefaultInsertValues(); listaItens.Add(MovimentoDestino); if (ValoresTransacao.valorCashback > 0) { var MovimentoCashback = new Movimento(); MovimentoCashback.captarDadosOrigem(MovimentoResumo); MovimentoCashback.valor = ValoresTransacao.valorCashback; MovimentoCashback.idTipoTransacao = (byte)TipoTransacaoEnum.CASHBACK; MovimentoCashback.setDefaultInsertValues(); listaItens.Add(MovimentoCashback); } if (ValoresTransacao.valorComissaoCorretor > 0) { var MovimentoCorretor = new Movimento(); MovimentoCorretor.idMembroOrigem = MovimentoDestino.idMembroDestino; MovimentoCorretor.idPessoaOrigem = MovimentoDestino.idPessoaDestino; MovimentoCorretor.idMembroDestino = Transacao.MembroDestino.idIndicador ?? 1; MovimentoCorretor.idPessoaDestino = null; MovimentoCorretor.valor = ValoresTransacao.valorComissaoCorretor; MovimentoCorretor.idTipoTransacao = (byte)TipoTransacaoEnum.COMISSAO_COMPRA_ESTABELECIMENTO; MovimentoCorretor.setDefaultInsertValues(); listaItens.Add(MovimentoCorretor); } if (ValoresTransacao.valorLinkey > 0) { var MovimentoLinkey = new Movimento(); MovimentoLinkey.idMembroOrigem = MovimentoOrigem.idMembroDestino; MovimentoLinkey.idPessoaOrigem = MovimentoOrigem.idPessoaDestino; MovimentoLinkey.idMembroDestino = 1; MovimentoLinkey.idPessoaDestino = null; MovimentoLinkey.valor = ValoresTransacao.valorLinkey; MovimentoLinkey.observacao = "Remuneração da SINCTEC"; MovimentoLinkey.idTipoTransacao = (byte)TipoTransacaoEnum.PAGAMENTO; MovimentoLinkey.setDefaultInsertValues(); listaItens.Add(MovimentoLinkey); } if (ValoresTransacao.valorComissaoIndicador1 > 0) { var MovimentoIndicador1 = new Movimento(); MovimentoIndicador1.idMembroOrigem = MovimentoOrigem.idMembroDestino; MovimentoIndicador1.idPessoaOrigem = MovimentoOrigem.idPessoaDestino; MovimentoIndicador1.idMembroDestino = Transacao.MembroOrigem.idIndicador ?? 1; MovimentoIndicador1.idPessoaDestino = null; MovimentoIndicador1.valor = ValoresTransacao.valorComissaoIndicador1; MovimentoIndicador1.idTipoTransacao = (byte)TipoTransacaoEnum.COMISSAO_COMPRA_USUARIO; MovimentoIndicador1.observacao = "Indicação comprador nível 1"; MovimentoIndicador1.setDefaultInsertValues(); listaItens.Add(MovimentoIndicador1); } if (ValoresTransacao.valorComissaoIndicador2 > 0) { var MovimentoIndicador2 = new Movimento(); MovimentoIndicador2.idMembroOrigem = MovimentoOrigem.idMembroDestino; MovimentoIndicador2.idPessoaOrigem = MovimentoOrigem.idPessoaDestino; MovimentoIndicador2.idMembroDestino = Transacao.MembroOrigem.idIndicadorSegundoNivel ?? 1; MovimentoIndicador2.idPessoaDestino = null; MovimentoIndicador2.valor = ValoresTransacao.valorComissaoIndicador2; MovimentoIndicador2.idTipoTransacao = (byte)TipoTransacaoEnum.COMISSAO_COMPRA_USUARIO; MovimentoIndicador2.observacao = "Indicação comprador nível 2"; MovimentoIndicador2.setDefaultInsertValues(); listaItens.Add(MovimentoIndicador2); } if (ValoresTransacao.valorComissaoIndicador3 > 0) { var MovimentoIndicador3 = new Movimento(); MovimentoIndicador3.idMembroOrigem = MovimentoOrigem.idMembroDestino; MovimentoIndicador3.idPessoaOrigem = MovimentoOrigem.idPessoaDestino; MovimentoIndicador3.idMembroDestino = Transacao.MembroOrigem.idIndicadorTerceiroNivel ?? 1; MovimentoIndicador3.idPessoaDestino = null; MovimentoIndicador3.valor = ValoresTransacao.valorComissaoIndicador3; MovimentoIndicador3.idTipoTransacao = (byte)TipoTransacaoEnum.COMISSAO_COMPRA_USUARIO; MovimentoIndicador3.observacao = "Indicação comprador nível 3"; MovimentoIndicador3.setDefaultInsertValues(); listaItens.Add(MovimentoIndicador3); } listaItens.ForEach(item => { item.flagDebito = false; item.flagCredito = true; item.idOrigem = MovimentoOrigem.idOrigem; item.idMovimentoPrincipal = MovimentoOrigem.id; item.valorMovimentoPrincipal = MovimentoOrigem.valor; item.observacao = item.observacao.abreviar(100); }); db.Movimento.AddRange(listaItens); var Retorno = db.validateAndSave(); if (Retorno.flagError) { return(Retorno); } //Adicionaro primeiro movimento para os próximos processos listaItens.Add(MovimentoOrigem); return(UtilRetorno.newInstance(false, "", listaItens)); }
//Gerar saldo inicial quando houve promoção ativa public UtilRetorno gerarSaldoInicial(int id, int idOrganizacaoParam) { UtilRetorno ORetorno = new UtilRetorno { flagError = false }; ConfiguracaoPromocao OConfiguracaoPromocao = this.OConfiguracaoPromocaoConsultaBL.carregar(); if (OConfiguracaoPromocao.id == 0 || OConfiguracaoPromocao.valorPremioNovoMembro <= 0) { ORetorno.flagError = true; ORetorno.listaErros.Add("Não existem promoções disponíveis!"); return(ORetorno); } if (OConfiguracaoPromocao.dtInicioPremioNovoMembro > DateTime.Now.Date || OConfiguracaoPromocao.dtFimPremioNovoMembro < DateTime.Now.Date) { ORetorno.flagError = true; ORetorno.listaErros.Add("Não existem promoções disponíveis!"); return(ORetorno); } if (id == 0) { ORetorno.flagError = true; ORetorno.listaErros.Add("Não foi possível localizar o membro!"); return(ORetorno); } Associado OMembro = this.OAssociadoConsultaBL.queryNoFilter().FirstOrDefault(x => x.id == id) ?? new Associado(); if (OMembro.id.toInt() == 0) { ORetorno.flagError = true; ORetorno.listaErros.Add("Não foi possível localizar o membro!"); return(ORetorno); } if (OMembro.idTipoCadastro == AssociadoTipoCadastroConst.COMERCIANTE) { ORetorno.flagError = true; ORetorno.listaErros.Add("Tipo de cadastro inválido para aplicação da promoção!"); return(ORetorno); } MembroSaldo OSaldo = this.OMembroSaldoConsultaBL.query(id, idOrganizacaoParam).FirstOrDefault() ?? new MembroSaldo(); if (OSaldo.saldoAtual > 0) { ORetorno.flagError = true; ORetorno.listaErros.Add("O membro já possui saldo no sistema!"); return(ORetorno); } MovimentoOperacaoDTO OTransacao = new MovimentoOperacaoDTO(); OTransacao.nroContaOrigem = 1; OTransacao.nroContaDestino = OMembro.nroAssociado.toInt(); OTransacao.valorOperacao = OConfiguracaoPromocao.valorPremioNovoMembro.toDecimal(); OTransacao.flagIgnorarSenha = true; OTransacao = this.CarregadorDados.carregar(OTransacao); ORetorno = this.OTransferenciaFacade.transferir(OTransacao); return(ORetorno); }
/// <summary> /// /// </summary> public abstract UtilRetorno validar(MovimentoOperacaoDTO Transacao);
// Construtor public DebitoVM() { this.OMovimentoOperacaoDTO = new MovimentoOperacaoDTO(); this.OMovimentoOperacaoDTO.MembroOrigem = new Associado(); this.OMovimentoOperacaoDTO.MembroOrigem.Pessoa = new Pessoa(); }
/// <summary> /// /// </summary> public UtilRetorno pagar(MovimentoResumoVW MovimentoResumo, MovimentoOperacaoDTO Transacao) { var listaMovimentos = this.criarMovimentos(MovimentoResumo, Transacao); var MovimentoOrigem = listaMovimentos.FirstOrDefault(x => x.flagMovimentoOrigem); var MovimentoDestino = listaMovimentos.FirstOrDefault(x => x.flagMovimentoDestino); var listaMovimentoRede = listaMovimentos.Where(x => !x.flagMovimentoDestino && !x.flagMovimentoOrigem).ToList(); if (MovimentoOrigem == null) { return(UtilRetorno.newInstance(true, "O movimento de origem não pôde ser carregado.")); } if (MovimentoDestino == null) { return(UtilRetorno.newInstance(true, "O movimento de destino não pôde ser carregado.")); } using (var context = new DataContext()){ using (var transaction = context.Database.BeginTransaction()){ try{ context.Movimento.Add(MovimentoOrigem); context.SaveChanges(); MovimentoDestino.idMovimentoPrincipal = MovimentoOrigem.id; MovimentoDestino.valorMovimentoPrincipal = MovimentoOrigem.valor; context.Movimento.Add(MovimentoDestino); if (listaMovimentoRede.Any()) { listaMovimentoRede.ForEach(item => { item.idMovimentoPrincipal = MovimentoOrigem.id; item.idOrigem = MovimentoOrigem.idOrigem; item.idMovimentoPrincipal = MovimentoOrigem.id; item.valorMovimentoPrincipal = MovimentoOrigem.valor; }); context.Movimento.AddRange(listaMovimentoRede); } context.SaveChanges(); transaction.Commit(); listaMovimentos.Clear(); listaMovimentos.Add(MovimentoOrigem); listaMovimentos.Add(MovimentoDestino); listaMovimentos.AddRange(listaMovimentoRede); }catch (Exception) { transaction.Rollback(); return(UtilRetorno.newInstance(true, "Houve problemas ao tentar realizar a transação para salvar os movimentos.")); } } } return(UtilRetorno.newInstance(false, "", listaMovimentos)); }
/// <summary> /// /// </summary> public static MovimentoResumoVW captarDados(this MovimentoResumoVW MovimentoResumo, MovimentoOperacaoDTO Transacao) { MovimentoResumo.valorOperacao = Transacao.valorOperacao; MovimentoResumo.valorOperacaoFormatado = Transacao.valorOperacao.ToString("F2"); MovimentoResumo.idMembroOrigem = Transacao.MembroOrigem.id; MovimentoResumo.idPessoaOrigem = Transacao.MembroOrigem.idPessoa; MovimentoResumo.nroMembroOrigem = Transacao.MembroOrigem.nroAssociado; MovimentoResumo.nomeMembroOrigem = (Transacao.MembroOrigem?.Pessoa?.nome); MovimentoResumo.nroDocumentoMembroOrigem = (Transacao.MembroOrigem?.Pessoa?.nroDocumento); MovimentoResumo.idMembroDestino = Transacao.MembroDestino.id; MovimentoResumo.idPessoaDestino = Transacao.MembroDestino.idPessoa; MovimentoResumo.nroMembroDestino = Transacao.MembroDestino.nroAssociado; MovimentoResumo.nomeMembroDestino = Transacao.MembroDestino.Pessoa.nome; MovimentoResumo.nroDocumentoMembroDestino = Transacao.MembroDestino.Pessoa.nroDocumento; MovimentoResumo.idOrigem = Transacao.idOrigem; return(MovimentoResumo); }