Jump to content

Criando um sistema de pontos para seus clientes


 Share

Recommended Posts

  • Team

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.

Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Baixei o arquivo que está em TPL, onde devo colocar ele e como abrir ele? é só enviar para a pasta do tema do whmcs(portal ou default)?

Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...