Ir para conteúdo

Featured Replies

Postado

Bom dia senhores, estou com uma dúvida, no WHMCS tem como adicionar um lembrete antes do vencimento e três depois do vencimento, certo?

Teria como eu adicionar um lembrete extra no dia exato do vencimento?


Postado

Por padrão não é possível. Mas você pode criar este Hook que possuem esta função:

<?php

use WHMCS\Database\Capsule;

add_hook('DailyCronJob', 1, function() {

$hoje = date('Y-m-d');

// Buscar faturas vencendo hoje e ainda não pagas

$faturas = Capsule::table('tblinvoices')

->where('duedate', $hoje)

->where('status', 'Unpaid')

->get();

foreach ($faturas as $fatura) {

$cliente = Capsule::table('tblclients')->where('id', $fatura->userid)->first();

// Enviar o e-mail com base no template “Invoice Payment Reminder”

localAPI('SendEmail', [

'messagename' => 'Invoice Payment Reminder',

'id' => $fatura->id

]);

}

});

 Hospedagem de Sites, Revenda de Hospedagem, Servidores Virtuais, Registro de Domínios

Postado
  • Autor

Top amigo, mas no caso ele só vai disparar no dia do vencimento, certo?



Postado
Em 09/07/2025 em 16:03, Jefferson disse:

Por padrão não é possível. Mas você pode criar este Hook que possuem esta função:

Que bacana, dei uma melhorada no seu codigo. Adicionei o envio para dias diferentes com templates de email diferentes para cada dia.

OBS: Em $template defina o dia e o template de acordo com sua necessidade, -3 = 3 dias antes do vencimento. Invoice - 3 Dias antes referente ao template de email que seja enviado.

$templates = [
	-3 => 'Invoice - 3 Dias antes',
	-2 => 'Invoice - 2 Dias antes',
	-1 => 'Invoice - 1 Dia antes',
	0 => 'Invoice - Vence Hoje',
	1 => 'Invoice - 1 Dia Vencida',
	2 => 'Invoice - 2 Dias Vencida',
];
<?php

use WHMCS\Database\Capsule;

add_hook('DailyCronJob', 1, function () {

	$hoje = date('Y-m-d');
	
	$dataHoje = new DateTime($hoje);
	
	$templates = [
		-3 => 'Invoice - 3 Dias antes',		
		-2 => 'Invoice - 2 Dias antes',
		-1 => 'Invoice - 1 Dia antes',		
		0 => 'Invoice - Vence Hoje',		
		1 => 'Invoice - 1 Dia Vencida',		
		2 => 'Invoice - 2 Dias Vencida',	
	];
	
	$faturas = Capsule::table('tblinvoices')->where('status', 'Unpaid')->get();
	
	foreach ($faturas as $fatura) {
		
		$dataVencimento = new DateTime($fatura->duedate);		
		$intervalo = $dataHoje->diff($dataVencimento);
		$diasDiferenca = (int)$intervalo->format('%r%a');
		
		if (isset($templates[$diasDiferenca])) {
		
			localAPI('SendEmail', [
				'messagename' => $templates[$diasDiferenca],
				'id' => $fatura->id
			]);
		
		}
	}

});


Postado
Em 09/07/2025 em 17:58, MMHospedagem disse:

Que bacana, dei uma melhorada no seu codigo. Adicionei o envio para dias diferentes com templates de email diferentes para cada dia.

OBS: Em $template defina o dia e o template de acordo com sua necessidade, -3 = 3 dias antes do vencimento. Invoice - 3 Dias antes referente ao template de email que seja enviado.

$templates = [
	-3 => 'Invoice - 3 Dias antes',
	-2 => 'Invoice - 2 Dias antes',
	-1 => 'Invoice - 1 Dia antes',
	0 => 'Invoice - Vence Hoje',
	1 => 'Invoice - 1 Dia Vencida',
	2 => 'Invoice - 2 Dias Vencida',
];
<?php

use WHMCS\Database\Capsule;

add_hook('DailyCronJob', 1, function () {

	$hoje = date('Y-m-d');
	
	$dataHoje = new DateTime($hoje);
	
	$templates = [
		-3 => 'Invoice - 3 Dias antes',		
		-2 => 'Invoice - 2 Dias antes',
		-1 => 'Invoice - 1 Dia antes',		
		0 => 'Invoice - Vence Hoje',		
		1 => 'Invoice - 1 Dia Vencida',		
		2 => 'Invoice - 2 Dias Vencida',	
	];
	
	$faturas = Capsule::table('tblinvoices')->where('status', 'Unpaid')->get();
	
	foreach ($faturas as $fatura) {
		
		$dataVencimento = new DateTime($fatura->duedate);		
		$intervalo = $dataHoje->diff($dataVencimento);
		$diasDiferenca = (int)$intervalo->format('%r%a');
		
		if (isset($templates[$diasDiferenca])) {
		
			localAPI('SendEmail', [
				'messagename' => $templates[$diasDiferenca],
				'id' => $fatura->id
			]);
		
		}
	}

});

Legal. Um ajudando o outro 👍

 Hospedagem de Sites, Revenda de Hospedagem, Servidores Virtuais, Registro de Domínios

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.
Nota: Sua postagem exigirá aprovação do moderador antes de ficar visível.

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Informação Importante

Concorda com os nossos termos?