示例#1
0
        /// <summary>
        ///
        /// </summary>
        private MovimentoRedeDTO gerarMovimentosRede(Movimento MovimentoOrigem, TransacaoProdutoInterno TransacaoProdutoInterno)
        {
            var Retorno = new MovimentoRedeDTO();

            Retorno.listaMovimentoRede = new List <Movimento>();

            if (TransacaoProdutoInterno.percentualTotalDistribuicao <= 0)
            {
                return(Retorno);
            }

            var RedeLinearMembro = this.RedeConsulta.query(MovimentoOrigem.idMembroDestino.toInt()).FirstOrDefault();

            if (RedeLinearMembro == null)
            {
                return(Retorno);
            }


            for (byte i = 1; i <= 15; i++)
            {
                var Comissao = TransacaoProdutoInterno.listaComissoes.FirstOrDefault(x => x.nivel == i);

                if (Comissao == null || Comissao.percentualComissao.toDecimal() <= 0)
                {
                    continue;
                }

                decimal valorComissao = TransacaoProdutoInterno.valorPagamento.valorPercentual(Comissao.percentualComissao);

                var idIndicadorObj = RedeLinearMembro.getValueByString($"idIndicador{i.ToString().PadLeft(2, '0')}");

                int idIndicador = idIndicadorObj.toInt();

                var MovimentoRede = new Movimento();
                MovimentoRede.idMembroOrigem  = MovimentoOrigem.idMembroDestino;
                MovimentoRede.idPessoaOrigem  = MovimentoOrigem.idPessoaDestino;
                MovimentoRede.idPessoaDestino = null;
                MovimentoRede.valor           = valorComissao;
                MovimentoRede.observacao      = $"Comissão de {Comissao.percentualComissao:N2}% em compra de produto SINCTEC de {TransacaoProdutoInterno.valorPagamento:N2}  no nível {i}";
                MovimentoRede.idTipoTransacao = (byte)TipoTransacaoEnum.PRODUTOS_LINKEY;
                MovimentoRede.percentualMovimentoPrincipal = Comissao.percentualComissao;
                MovimentoRede.setDefaultInsertValues();

                if (idIndicador > 0)
                {
                    MovimentoRede.idMembroDestino = idIndicador;
                }

                Retorno.listaMovimentoRede.Add(MovimentoRede);
            }


            return(Retorno);
        }
示例#2
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);
        }
示例#3
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);
        }