Exemplo n.º 1
0
        /// <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));
        }
Exemplo n.º 2
0
        /// <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));
        }
Exemplo n.º 3
0
        /// <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));
        }
Exemplo n.º 7
0
        /// <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));
        }
Exemplo n.º 8
0
        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, ""));
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        /// <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);
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        /// <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));
        }
Exemplo n.º 13
0
        /// <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);
        }
Exemplo n.º 14
0
        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, ""));
        }
Exemplo n.º 15
0
        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, ""));
        }
Exemplo n.º 16
0
        /// <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);
        }
Exemplo n.º 17
0
        /// <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);
        }
Exemplo n.º 18
0
        /// <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);
        }
Exemplo n.º 19
0
        /// <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);
        }
Exemplo n.º 21
0
        /// <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));
        }
Exemplo n.º 23
0
        //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);
        }
Exemplo n.º 24
0
 /// <summary>
 ///
 /// </summary>
 public abstract UtilRetorno validar(MovimentoOperacaoDTO Transacao);
Exemplo n.º 25
0
 // Construtor
 public DebitoVM()
 {
     this.OMovimentoOperacaoDTO = new MovimentoOperacaoDTO();
     this.OMovimentoOperacaoDTO.MembroOrigem        = new Associado();
     this.OMovimentoOperacaoDTO.MembroOrigem.Pessoa = new Pessoa();
 }
Exemplo n.º 26
0
        /// <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));
        }
Exemplo n.º 27
0
        /// <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);
        }