Quando um cliente está logado no painel WHMCS e deseja abrir uma solicitação de suporte técnico existe um campo chamado “Serviço Relacionado” que lista todos os produtos/serviços que o cliente tenha adquirido. Essa listagem é obtida a partir da data de contratação do produto/serviço não sendo possível classificar por Nome, Status e etc…
Personalização
Exemplo de uma listagem aonde é possível ver que não existe classificação de ordem alfabética por nome do produto/serviço contratado.
Garimpando no fórum oficial encontrei uma publicação que permite de forma prática e sem alterações no template classificar todos os produtos/serviços em ordem alfabética.
A customização (hook) é bem simples de instalar e você só precisa fazer isso uma única vez, abra a pasta /includes/hooks/ e crie um arquivo chamado listagem_servicos.php insira o conteúdo abaixo:
<?php /** * Sort RelatedServices To Show Active Domains/Services First * @author brian! */ function sort_ticket_relatedservices_hook($vars) { if ($vars['templatefile']=='supportticketsubmit-steptwo'){ $relatedservices = $vars['relatedservices']; array_multisort(array_column($relatedservices, 'status'), SORT_ASC, array_column($relatedservices, 'name'), SORT_ASC, $relatedservices); return array("relatedservices" => $relatedservices); } } add_hook("ClientAreaPageSubmitTicket", 1, "sort_ticket_relatedservices_hook");
Resultado após instalação do hook:
Se você percebeu a imagem acima tem 2 produtos (1 cancelado e 1 terminado) que estão no final da lista por uma classificação do WHMCS.
E se eu puder retirar da lista os itens cancelados ou terminados? Sim, também é possível… em uma outra publicação do mesmo autor ele desenvolveu uma customização que adaptei para nosso país.
<?php # Filter & Sort Ticket Related Services Hook # Written by brian! function filter_related_services_hook($vars){ if ($vars['templatefile']=='supportticketsubmit-steptwo'){ $relatedservices = $vars['relatedservices']; $cancelled = array('Cancelado','Terminado'); // Tradução para Brasil por Edvan foreach($relatedservices as $key => $service) { if (in_array($service['status'],$cancelled)) { unset($relatedservices[$key]); } } array_multisort(array_column($relatedservices, 'status'), SORT_ASC, array_column($relatedservices, 'name'), SORT_ASC, $relatedservices); return array("relatedservices" => $relatedservices); } } add_hook("ClientAreaPageSubmitTicket", 1, "filter_related_services_hook");
Veja como ficou:
Pronto, agora é possível listar em ordem alfabética apenas os produtos/serviços ativos.
Gostou? Comente!
Muito bom Edvan, tem cliente que sempre escolhe os serviços cancelado mesmo a gente informando para selecionar o correto…
Verdade!
Instalado muito bom, será que o WHMCS atualizando não quebra ele ja tive isso com outros hook.
Isso é incomum.
Acredito que o hook que você estava utilizando possuía alguma falha.
Olá pessoal,
Alguém sabe me informar se existe algum modulo ou ajuste, que permita bloquear a abertura de tickets de suporte para determinados produtos? Busquei em vários sites e fóruns e não encontrei nada.
Tenho um produto específico, que gostaria de não permitir a abertura de tickets de suporte para quem tem este produto contratado. Porém, para os demais produtos a abertura de tickets deve permanecer normal.
Obrigado desde já!
Você quer remover o nome do produto da lista de “Produto Relacionado” https://take.ms/2iaqw
Em partes sim. Deixe-me explicar melhor…
Preciso bloquear a abertura de tickets para clientes que possuem um determinado produto ativo.
Ex:
“Produto A” -> Sem suporte
“Produto B” -> Com suporte
Caso o cliente possua apenas o “Produto A”, ele não poderá abrir nenhum tipo de ticket de suporte técnico.
Agora se ele possuir ambos os produtos “A e B”, somente o produto “B” poderá ser um “Produto Relacionado”.
Obrigado desde já!
Entendi, por padrão isso não é possível.
Talvez contratando um desenvolvedor o que você precise seja possível.