Em várias partes do código é usada a função exit() mas acredito que esteja sendo usada de forma errada. Parece que a intenção é sair da função, mas isso interrompe o script todo. Ou seja, tudo que deveria acontecer após a chamada do exit() não acontece.
Um exemplo: Crie uma fatura com forma de recebimento Boleto PagHiper de um plano com recorrência e adicione um pagamento com outra forma de pagamento (transferencia bancária ou dinheiro). O comportamento normal do WHMCS seria marcar a fatura como paga, enviar o email de recebimento e atualizar o proximo vencimento. E o módulo deveria apenas cancelar o boleto (pois foi recebido por outra forma).
Mas ao usar exit(), o WHMCS só executa o primeiro passo, q é marcar a fatura como paga, ou seja, o email não é enviado e o proximo vencimento não é atualizado.
Esses exit() espalhados pelo código atrapalha quase tudo, inclusive a baixa automatica no retorno do PagHiper, que também não envia o email de recebimento e não atualiza o proximo vencimento.
Analisando o trecho abaixo, dá pra perceber bem o uso errado da função exit().
// Process status screens accordingly to invoice status
switch($this->invoiceData['status']) {
case "Paid":
// Mostrar tela de boleto pago
$ico = ($this->isPIX) ? 'pix-ok.png' : 'billet-ok.png';
$title = 'Fatura paga!';
$message = 'Este '.(($this->isPIX) ? 'PIX' : 'boleto').' ja foi compensado no sistema e consta como pago.';
echo paghiper_print_screen($ico, $title, $message);
exit();
break;
case "Draft":
// Mostrar tela de boleto indisponível
$ico = ($this->isPIX) ? 'pix-cancelled.png' : 'billet-cancelled.png';
$title = 'Esta fatura ainda não está disponível!';
$message = 'Este '.(($this->isPIX) ? 'PIX' : 'boleto').' ainda não está disponível. Caso acredite que seja um erro, por favor acione o suporte.';
echo paghiper_print_screen($ico, $title, $message);
exit();
break;
case "Unpaid":
return true;
break;
case "Overdue":
return true;
break;
case "Cancelled":
// Mostrar tela de boleto indisponível
$ico = ($this->isPIX) ? 'pix-cancelled.png' : 'billet-cancelled.png';
$title = 'Esta fatura foi cancelada!';
$message = 'Por consequencia, esse '.(($this->isPIX) ? 'PIX' : 'boleto').' também foi cancelado. Caso acredite que seja um erro, por favor acione o suporte.';
echo paghiper_print_screen($ico, $title, $message);
exit();
break;
case "Refunded":
// Mostrar tela de boleto indisponível
$ico = ($this->isPIX) ? 'pix-cancelled.png' : 'billet-cancelled.png';
$title = 'Este fatura foi estornada.';
$message = 'Seu '.(($this->isPIX) ? 'PIX' : 'boleto').' foi estornado. Caso acredite que seja um erro, por favor acione o suporte.';
echo paghiper_print_screen($ico, $title, $message);
exit();
break;
case "Collections":
break;
}
}`
Em várias partes do código é usada a função exit() mas acredito que esteja sendo usada de forma errada. Parece que a intenção é sair da função, mas isso interrompe o script todo. Ou seja, tudo que deveria acontecer após a chamada do exit() não acontece.
Um exemplo: Crie uma fatura com forma de recebimento Boleto PagHiper de um plano com recorrência e adicione um pagamento com outra forma de pagamento (transferencia bancária ou dinheiro). O comportamento normal do WHMCS seria marcar a fatura como paga, enviar o email de recebimento e atualizar o proximo vencimento. E o módulo deveria apenas cancelar o boleto (pois foi recebido por outra forma).
Mas ao usar exit(), o WHMCS só executa o primeiro passo, q é marcar a fatura como paga, ou seja, o email não é enviado e o proximo vencimento não é atualizado.
Esses exit() espalhados pelo código atrapalha quase tudo, inclusive a baixa automatica no retorno do PagHiper, que também não envia o email de recebimento e não atualiza o proximo vencimento.
Analisando o trecho abaixo, dá pra perceber bem o uso errado da função exit().
`public function process() {
`private function hasPayableStatus() {