Ir para conteúdo
Fórum Script Brasil
  • 0

Procedure para calcular pontos de MMN binário


Salles PATAMO

Pergunta

Olá, depois de apanhar muito dentro do scriptcase e também em php com estouro de memória, decidi que o melhor lugar para calcular todas aquelas regras de MMN Binário, é dentro do próprio banco de dados. Assim, a aplicação fica mais leve, e limpa.

Então , como marinheiro de primeira viagem em PL Sql, estou tendo algumas dificuldades, como trabalhar com cursores, extruturas de repetição, e chamar uma procedure dentro da outra...

neste primeiro exemplo, quero apenas somar os pontos de todos os downlines a partir de uma determinada franquia, porém, está com um erro que não consigo achar.

Alguém pode me ajudar?

Segue a procedure:

-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$

CREATE PROCEDURE `lkp_diretos_de` (IN upline int,IN market int, IN ciclo int, IN secao varchar(45),OUT total_pontos float)
BEGIN

DECLARE done_arr_rede1,done_arr_rede2,diretos1,diretos2,fra_id,fra_derramado_em_id,fra_upline_id ,fra_id2,fra_derramado_em_id2,fra_upline_id2 INTEGER DEFAULT 0;
DECLARE fra_dat_cadasto,fra_dat_cadasto2 DATETIME;
DECLARE fra_lado_equipe_upline,fra_lado_equipe_upline2 char(1);
DECLARE fra_saldo_pontos,fra_saldo_pontos2 float DEFAULT 0;


DEClARE arr_rede1 CURSOR FOR

SELECT
mmn_franquias.fra_id,
mmn_franquias.fra_dat_cadasto,
mmn_franquias.fra_derramado_em_id,
mmn_franquias.fra_upline_id,
mmn_franquias.fra_lado_equipe_upline,
mmn_franquias.fra_saldo_pontos

FROM
mmn_franquias


ORDER BY
mmn_franquias.fra_dat_cadasto;


DEClARE arr_rede2 CURSOR FOR

SELECT
mmn_franquias.fra_id,
mmn_franquias.fra_dat_cadasto,
mmn_franquias.fra_derramado_em_id,
mmn_franquias.fra_upline_id,
mmn_franquias.fra_lado_equipe_upline,
mmn_franquias.fra_saldo_pontos

FROM
mmn_franquias


ORDER BY
mmn_franquias.fra_dat_cadasto;


-- declare NOT FOUND handler
DECLARE CONTINUE HANDLER
FOR NOT FOUND SET done_arr_rede1 = 1;

-- declare NOT FOUND handler
DECLARE CONTINUE HANDLER
FOR NOT FOUND SET done_arr_rede2 = 1;

OPEN arr_rede1;



REPEAT
FETCH arr_rede1 INTO fra_id, fra_dat_cadasto, fra_derramado_em_id, fra_upline_id, fra_lado_equipe_upline, fra_saldo_pontos;
IF NOT done_arr_rede1 THEN
if locate(fra_upline,upline)>0 then
OPEN arr_rede2;
while done_arr_rede2 = 1 do
FETCH arr_rede2 INTO fra_id2, fra_dat_cadasto2, fra_derramado_em_id2, fra_upline_id2, fra_lado_equipe_upline2, fra_saldo_pontos2;
if fra_upline_id2 = fra_upline_id1 then
set done_arr_rede2 = 1;
set upline = concat (upline,',',fra_upline_id2);
set total_pontos = total_pontos + fra_saldo_pontos2;
end if;
end while;
CLOSE arr_rede2;
end if;
END IF;
UNTIL done END REPEAT;

CLOSE arr_rede1;



END

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

O que são regras de MMN Binário?

...neste primeiro exemplo, quero apenas somar os pontos de todos os downlines a partir de uma determinada franquia, porém, está com um erro que não consigo achar.

Que erro aparece?
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...