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