Ir para conteúdo
  • Cadastre-se

Criando um sistema de pontos para seus clientes


Posts Recomendados

  • Administração

Sempre fui fã de serviços que oferecem coisas extras, do tipo "quanto mais você usar, mais coisas você ganha". E qual brasileiro não gosta? Eu já retirei um celular na Oi, bônus no Hiper/Walmart e outras coisas apenas por usar determinados serviços. Você poderia então fazer parecido. Eu criei um sistema de pontos para whmcs, mas eu vou ensinar a lógica de modo que você consiga reproduzir mesmo usando outro gerenciador.

Identificando o item a ser levado em consideração

Vamos presumir que você queira dar bônus de acordo com os pagamentos efetuados ao longo da "vida ativa" do cliente no seu host. Então, aqui vamos usar como base as cobranças pagas. Você poderia também dar descontos com base no número de serviços contratados, como domínios ou conta de hospedagens. Aliás, nada impede que você faça dois sistemas de pontos com critérios distintos. É interessante que você já use banco de dados para que possa "puxar" da base cada item necessário - no nosso caso, cobranças pagas.

No PHPMyAdmin

É hora de descobrir onde estão os dados que queremos. Por exemplo, no whmcs, vamos usar a tabela tblinvoices, que é onde estão contidos os pagamentos (pagos, cancelados, em aberto, etc.). Desta tabela, vão nos interessar os seguintes campos:

  • Status - Define o estado atual da cobrança. Queremos todas as cobranças pagas, logo, só desejo listar itens com status=paid;
  • Userid - Como a pontuação é diferente para cada usuário, precisamos recuperar apenas as cobranças de um determinado cliente.
  • Subtotal - Campo que diz quanto o cliente pagou em cada cobrança

A lógica

Agora precisamos definir o cálculo para montar o código. É bem simples:

  1. Selecionar o usuário - pegando a id do usuário podemos deixar o sistema único para cada cliente;
  2. Filtrar cobranças - já que sabemos quem é o cliente, vamos selecionar as cobranças dele;
  3. Somente as pagas - precisamos apenas da soma total da cobranças pagas.

O código

No whmcs, fica assim:

    	{php}        $link = mysql_connect($db_host,$db_username,$db_password);        mysql_select_db($db_name);        $usuario = $_SESSION['uid'];        $result = mysql_query("SELECT sum(subtotal) as total FROM tblinvoices WHERE status='Paid' AND userid='$usuario'");        while ($row = mysql_fetch_array($result)) {			$ponto = explode(".",$row['total']);            $pontos = $ponto['0'];        	echo "Voce tem atualmente: ". $pontos. " pontos";        }        {/php}

Explicando o código acima: $link = mysql_connect($db_host,$db_username,$db_password); - Conectando ao servidor de banco de dados com respectivamente: servidor (normalmente localhost), login do usuário, senha do usuário. Se não usar whmcs, substitua pelos seus dados. Por exemplo: $link = mysql_connect ('localhost','admin','123456'); mysql_select_db($db_name); - Escolhendo o banco de dados a ser trabalhado. Ex: mysql_select_db ('meu-banco-de-dados'); $usuario = $_SESSION['uid']; - Daqui vamos conseguir a variável correspondente ao id do usuário que está definida em sessão. Para ver quais são as variáveis disponíveis no seu sistema: $result = mysql_query("SELECT sum(subtotal) as total FROM tblinvoices WHERE status='Paid' AND userid='$usuario'"); - Estamos selecionando a soma (sum) e apelidando os resultados de total. Dizemos também que só queremos resultados da tabela tblinvoices ONDE o status seja pago (PAID) e que pertençam ao nosso cliente $usuario. while ($row = mysql_fetch_array($result)) { - Chamamos os resultados. $ponto = explode(".",$row['total']); - Pedimos que ignore tudo depois do ponto - o whmcs não usa vígula para separar decimais (sim, eu sei que existe uma função para arredondar, mas eu queria apenas ignorar os centavos. $pontos = $ponto['0']; - Me retorna a primeira parte da minha array, ou seja, a pontuação com um valor inteiro. O resultado da pontuação do cliente está na variável $pontos.

Onde ele está?

Pronto. Agora basta criar uma tabela mostrando as suas faixas de pontuação. Veja aqui o nosso exemplo para situar um cliente dentro de uma faixa de pontos, bem como o programa pronto.

https://netmundocom.br/ - Soluções Web

Link para o comentário
Compartilhar em outros sites

Nossa, como dizem: show de boa. Muito bom Angélica, e pela explicação do funcionamento também. Só entregar pronto não tem graça. E com a explicação você já abre a mente de muita gente pra fazer outras coisas com o WHMCS. Meus parabéns.

Link para o comentário
Compartilhar em outros sites

@César, No meu caso, eu queria apenas acumular pontos, como não há resgate, não há necessidade. Mas você poderia criar uma nova tabela, com os valores resgatados. Daí, você pegaria da tabela tblinvoices os valores acumulados no TOTAL e subtrairia os valores dos resgates... assim restariam apenas o saldo atual.
Link para o comentário
Compartilhar em outros sites

@Alisson O arquivo já foi enviado ao servidor, está pronto para download. @Flavio Se for usar em uma página extra do seu whmcs, tem que usar o template system deles, dê uma olhada no site do ed sobre como fazer isso: http://whmcs.blog.br/ Se for usar em alguma página já existente, basta colar.

Link para o comentário
Compartilhar em outros sites

@Flavio Creio que ainda funciona na nova versão (se você usar a 4), mas aí vai o link para criação de páginas: http://whmcs.blog.br/principal/criando-uma-pagina-no-whmcs/

Link para o comentário
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Infelizmente, seu conteúdo contém termos que não são permitimos. Edite seu conteúdo para remover as palavras destacadas abaixo.
Responder

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

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...

Informação Importante

Concorda com os nossos termos?