Ir para conteúdo
ShadowDLL

Sistema de Vendas com MMN (Marketing de Multinível)

Recommended Posts

Olá pessoas,
Estou desenvolvendo um sistema no qual irei ter que abordar o sistema de Marketing de Multinível (MKT ou MMN),
e durante o processo de desenvolvimento encontrei-me de mãos atadas por não conseguir solucionar um problema, então gostaria de pedir uma ajudinha para vocês se possível...

 

Bem vamos lá!

 

1º - Como o sistema irá funcionar?

Basicamente o sistema é um sistema de "afiliados", onde as pessoas irão poder se cadastrar através de um link de referência, e por consequência irá ocorrer o seguinte:

O afiliado [Raiz] cadastra 2 novos Afiliados [Filhos], e consecutivamente seus dois "filhos" irão cadastrar mais 2 novos afiliados ou mais, dando no final a entender a seguinte situação:

 

 

=> [Pedro (Raiz)]
    => [João 1ª (Filho)] # Pedro Cadastrou seu filho João 1º
        => [Olavo 1º (Neto)] # João 1º Cadastrou seu Filho Olavo 1º
            => [Matheus 1º (Bisneto)] # Olavo 1º Cadastrou seu Filho Matheus 1º
                => [Patricia (Trineto)] # Matheus 1º Cadastrou sua filha Patricia
                    => [Rose (QuadraNeto '-')] # Patricia Cadastrou sua filha Rose

                    ...

            => [Matheus 2º (Bisneto)] # Olavo 1º Cadastrou seu Filho Matheus 2º
                => [Patricio (Trineto)] # Matheus 2º Cadastrou seu filho Patricio (RSRS)

                => [Rosana (Trineto)] # Matheus 2º Cadastrou sua filha Rosana
                    ...

        => [Olavo 2º (Neto)] # João 1º Cadastrou seu Filho Olavo 2º
            => ...

    => [João 2° (Filho)] # Pedro Cadastrou seu filho João 2º
        => [Pedro 1º (Neto)] # João 2º Cadastrou seu Filho Pedro 1º
            ...

        => [Pedro 2º (Neto)] # João 2º Cadastrou seu Filho Pedro 2º
            ...

 

[ OU SEJA ]

 

[Raiz]
|______[Filho 1]
|		|_______[Neto 1]
|		|		|________[BisNeto 1]
|		|		|			|_________[TriNeto 1]
|		|		|			|			|________[QuadraNeto]
|		|		|			|			|			...
|		|		|			|			|			...
|		|		|			|			|________[QuadraNeto]
|		|		|			|						...
|		|		|			|						...
|		|		|			|
|		|		|			|
|		|		|			|_________[TriNeto 2]
|		|		|						|________[QuadraNeto]
|		|		|						|			...
|		|		|						|			...
|		|		|						|________[QuadraNeto]
|		|		|									...
|		|		|									...
|		|		|
|		|		|________[BisNeto 2]
|		|					...
|		|					...
|		|
|		|
|		|______[Neto 2]
|				|________[BisNeto 1]
|				|			|_________[TriNeto 1]
|				|			|			|________[QuadraNeto]
|				|			|			|			...
|				|			|			|			...
|				|			|			|________[QuadraNeto]
|				|			|						...
|				|			|						...
|				|			|
|				|			|_________[TriNeto 2]
|				|			...			|________[QuadraNeto]
|				|			...			|...
|				|						|...
|				|						|________[QuadraNeto]
|				...
|				...
|
|_______[Filho 2]
|
|
|_______[Filho 3]
...
...

 

Citar

Obs: Não existe limites de cadastros, ou seja, o raiz pode cadastrar 30 filhos ou mais, e isso serve ao resto...

 

Enfim!

Reparem que os Níveis são [Raiz], [Filho], [Neto], [Bisneto], [Trineto]
Dando um total de 5 níveis máximos, para o Pedro [Raiz], depois João 1º [Filho] irá se tornar um [Raiz] e por sua vez terá direito também a 5 Níveis e assim sucessivamente!

 

--------

 

Pois bem, como é um sistema de vendas, então iremos trabalhar vendendo cartões, e suponhamos que
Rose filha de Patricia e Quadraneto de Pedro faça uma venda de um cartão no valor de 100 reais, então o seguinte deverá ocorrer:

 

>> Direito na venda <<

[Pedro (Raiz)] => Possui direito a 3% em cida da venda de Rose
[João 1º (Filho)] => Possui direito a 2.9% em cida da venda de Rose
[Olavo 1º (Neto)] => Possui direito a 2.4% em cida da venda de Rose
[Matheus 1º (Bisneto)] => Possui direito a 2.2% em cida da venda de Rose
[Patricia (Trineto)] => Possui direito a 2% em cida da venda de Rose

Ou seja, Pedro por ser o (Raiz) irá receber uma porcentagem sobre cada venda realizada por seus parentes até a quinta camada, ou seja, somente até as vendas de seus quadranetos...

Agora suponhamos que a filha de Rose faça uma venda no valor de 200 reais, então por sua vez, João 1º irá se tornar o raiz e irá ter o direito ao mesmo de acordo com os níveis (e sim Pedro não irá ter mais direitos de Receber...).

E assim por diante...

 

--------


Digo desculpas pelo longo texto... infelizmente não consegui achar um modo de encurtar o mesmo :S,
mas gostaria de saber se algum de vocês podem me ajudar ou dar um "ponta pé inicial" no modo de programar o mesmo...

Estou usando o framework CodeIgniter para desenvolver o mesmo, e creio eu que só falta está parte para o sistema ficar pronto e entragar ao meu cliente pois o mesmo já vem me dando dores de cabeça faz alguns dias...

 

 

--------

 

Por fim, gostaria de agradecer as pessoas que me ajudarem...

Já faz alguns meses que estou desenvolvendo o mesmo e creio que muitos de vocês irão um dia talvez encontrar um cliente que deseja o mesmo (ou algo próximo), então como forma de recompensar vocês irei postar o código fonte do mesmo depois de pronto e poderão fazer o destino desejado com o mesmo...

Atenciosamente, Matheus!

 

--------

 

Abaixo encontram-se fragmentos da DB para análise!

 

/* Tentativa de "Facilitar" a criação da rede MMN */
CREATE TABLE IF NOT EXISTS `bit_rede_mkt` (
    `idRede` INT(11) NOT NULL AUTO_INCREMENT,
    `idPai` INT(11) NOT NULL DEFAULT '1', /* Referencia */
    `idFilho` INT(11) NOT NULL, /* id do novo Afiliado */
    `data_cadastro` DATE NOT NULL DEFAULT '0000-00-00',
    `status` TINYINT(1) NOT NULL DEFAULT '0',
    PRIMARY KEY(`idRede`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

 

/* Tabela de Afiliados */
CREATE TABLE IF NOT EXISTS `bit_afiliados` (
    `idAfiliado` INT(11) NOT NULL AUTO_INCREMENT,
    `nome` TEXT(30) NOT NULL,
    `sobrenome` TEXT(30) NOT NULL,
    `cpf` VARCHAR(50) NOT NULL,
    `rg` VARCHAR(50) NOT NULL,
    `email` VARCHAR(255) NOT NULL,
    `password` VARCHAR(255) NOT NULL,
    `data_cadastro` DATE NOT NULL DEFAULT '0000-00-00',
    `ativo` TINYINT(1) NOT NULL DEFAULT '0',
    `status` TINYINT(1) NOT NULL DEFAULT '0',
    PRIMARY KEY(`idAfiliado`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
13 horas atrás, Izabelle disse:

Olá, você já deu uma olhada  nesse post?

 

 

Obrigado pela ajuda,

Não cheguei a utilizar o código no sistema pois eu fiz uma limitação até o segmento (Neto), mas desde  já agradeço pela ajuda e paciência...

 

Se possível fechar o tópico ou se preferir deixar aberto para depois eu postar o link para o código fonte fica a critério...

Agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 31/01/2018 at 05:53, Izabelle disse:

Amei seu artigo, alias os artigos, é ótimo quando encontramos artigos de qualidade, assim nos prende atenção e podemos recomendar, parabéns

https://vejamaissobre.com/recrutador-24-horas-joao-lima-e-confiavel-funciona-mesmo-vale-a-pena/

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por asacap1000
      Olá galera estou quebrando a cabeça aqui e não sei mais o que fazer. Estamos migrando nossa intranet que estava desatualizada demais e estamos colocando toda ela em php7.3.
      Dentro desse sistema temos varias consultas que são realizadas no Oracle. As consultas estão ocorrendo 100% mas ao chegar na plataforma de relatórios travou tudo. Não consegui acertar o meio de consultar por período, já utilizei "to_date, to_char, trunc" e nada. Interessante que no PLSQL o to_date funciona certo
      SELECT DISTINCT TO_DATE(IO.TIME_ARRIVAL)
        FROM IN_OUT IO
       WHERE TO_DATE(IO.TIME_ARRIVAL) BETWEEN '01/11/2021' AND '23/11/2021'
       
      1    04/11/2021
      2    18/11/2021
      3    17/11/2021
      4    14/11/2021
      5    22/11/2021
      6    08/11/2021
      7    11/11/2021
      8    13/11/2021
      9    09/11/2021
      10    10/11/2021
      11    05/11/2021
      12    19/11/2021
      13    15/11/2021
      14    03/11/2021
      15    06/11/2021
      16    23/11/2021
      17    01/11/2021
      18    02/11/2021
      19    16/11/2021
      20    20/11/2021
      21    12/11/2021
      22    21/11/2021
       
      Se eu utilizar ele ignora a data que estabeleci para a consulta
       TO_CHAR(IO.TIME_ARRIVAL,'DD/MM/YYYY') BETWEEN '01/11/2021' AND '23/11/2021'
       
      1    03/07/2013
      2    05/07/2013
      3    18/06/2013
      4    21/05/2013
      5    20/05/2013
      6    12/08/2013
      7    21/08/2013
      8    23/08/2013
      9    02/09/2013
      10    12/09/2013
       
      Isso no PLSQL, no caso do PHP o to_date não funciona nem gera o relatório, e no to_char funciona mas ignorando as datas apontadas.
       
      O que dá pra  fazer pra resolver isso, tenho que finalizar essa migração até final de Dezembro e estou começando a ficar preocupado com o tempo
       
      Agradeço qualquer ajuda que vier
    • Por leticiiaa
      Estou tentando fazer a seguinte inserção de dados no Banco utilizando uma procedure e o erro é:
      #1064 - Você tem um erro de sintaxe no seu SQL próximo a 'VALUES ('Funcionário', 'Luciana', 'Soares', '1', '1900-01-1', 'casa tal', 'DF',' na linha 1
      use db_studiotopfit; call create_user(type_user,nome, sobrenome, sexo, data_nascimento,endereco, uf, cidade, bairro, cpf, rg, email, username, senha, cargo, salario)VALUES ('Funcionário', 'Luciana', 'Soares', '1', '1900-01-1', 'casa tal', 'DF', 'Brasília', 'jnidas', '89076543', '94984984', 'teste@hotmail.com', 'Letícia de', '123', 'dibsadh', '1000') Esta é a definição da minha procedure:
      -- ----------------------------------------------------- -- Procedure `db_studiotopfit`.`create_user` -- ----------------------------------------------------- DELIMITER $$ CREATE PROCEDURE create_user( IN type_user VARCHAR(25), IN cpf BIGINT(11), IN nome VARCHAR(15), IN sobrenome VARCHAR(45), IN sexo TINYINT(1), IN data_nascimento DATE, IN endereco VARCHAR(80), IN uf VARCHAR(2), IN cidade VARCHAR(15), IN bairro VARCHAR(25), IN rg VARCHAR(20), IN email VARCHAR(100), IN username VARCHAR(15), IN password VARCHAR(45), IN cargo VARCHAR(30), IN salario DECIMAL(7, 2)) BEGIN DECLARE user_type INT(4) DEFAULT 0; DECLARE id_matricula INT(4) DEFAULT 0; DECLARE errno INT; DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN GET CURRENT DIAGNOSTICS CONDITION 1 @P1 = MYSQL_ERRNO, @P2 = MESSAGE_TEXT; SELECT @P1 AS 'Código', @P2 AS 'Mensagem'; ROLLBACK; END; START TRANSACTION; SELECT idperfil INTO user_type FROM `perfil` WHERE perfil=type_user ORDER BY idperfil DESC LIMIT 1; INSERT INTO `tb_pessoa` (cpf, nome, sobrenome, sexo, data_nascimento, endereco, uf, cidade, bairro, rg, email) VALUES (cpf, nome, sobrenome, sexo, data_nascimento, endereco, uf, cidade, bairro, rg, email); INSERT INTO `usuario` (id_pessoa_cpf, perfil_idperfil, senha, usuario) VALUES (cpf, user_type, MD5(password), username); CASE type_user WHEN 'Aluno' THEN INSERT INTO `tb_aluno` (id_pessoa_cpf) VALUES (cpf); WHEN 'Funcionário' THEN BEGIN INSERT INTO `tb_funcionario` (id_pessoa_cpf, cargo, salario) VALUES (cpf, cargo, salario); SELECT LAST_INSERT_ID() INTO id_matricula; CASE cargo WHEN 'Professor' THEN INSERT INTO tb_professor (tb_funcionario_id_matricula) VALUES (id_matricula); ELSE BEGIN END; END CASE; END; ELSE BEGIN END; END CASE; COMMIT; END $$ DELIMITER ;  
    • Por Lonn
      Hi
      I need help creating some .exe or .bat that would completely delete some specific files from my computer.
      An app that scans and deletes all files and traces by name + format
      example:
      delete.cfg
      As the specific directory would vary from computer to computer, I would like help to create one that excludes only using the file name and format
      Hope to get answers, thanks!
    • Por TkCode
      Estou tentando desenvolver um código para calcular o valor final de custas de imoveis.
      Exemplo: Entro com um valor de R$50.000,00. Tem o ITBI que é 2% sob os R$50.000,00 + o valor de custas que é o valor de uma tabela (essa tabela tem valores que de R$0,01 até R$17.800,90 é uma valor, e assim sucessivamente)
       
      Então teria que calcular os 2% (do valor informado) + o valor da tabela, dando um resultado final com o valor total (2%+ValorTabela).
       
      Alguem teria como me dar uma dica de como resolver isso?
      Desde já agradeço!
    • Por Sapinn
      Opa galera tudo firmesa? Então, tenho um codigo que faz uma barra aparecer toda vez que eu role a pagina até um certo ponto e tudo funciona normal. Eu gostaria de saber se tem como fazer uma transição nessa barra para ele ir aparecendo devagarzinho com a opacidade em 0 e vai subindo até chegar a 1 coisa de um 0.8s. Não sei como fazer ou se tem como fazer preciso de ajuda.
       
      Codigo js 
       
      window.onscroll = function(){
          var top = window.pageXOffset || document.documentElement.scrollTop
          var barra = document.querySelector(".barra");
          if(top > 900){
              barra.style.display = 'flex';
      //aqui tentei adicionar uma class direto do css para fazer o efeito transition mas sem sucesso.
              barra.classList.add('transition');
          }else{
             barra.style.display = 'none';
          }
      }
       
       
      Codigo css
      .barra{
          width: 100%;
          height: 70px;
          background-color: #090b13;
          display: none;
          justify-content: space-between;
          position: fixed;
          opacity: 0;
      }
      .transition{
          transition: 1s;
          opacity: 0.7;
          
      }
       
      codigo HTML
       
      <div class="barra" >
              <img src="assets/images/logo-nopad.svg" alt="">
              <button class="botao-assinatura-header">Assine Agora</button>
        </div>
       
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.