Abertura de Ticket – Listagem dos Produtos/Serviços

8

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…

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!

8 COMENTÁRIOS

  1. 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á!

      • 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á!

DEIXE UMA RESPOSTA

Please enter your comment!
Please enter your name here