[Resolvido] Falha do envio em lote de e-mails de notificação + módulo gerencianet

Este tópico contém respostas, possui 4 vozes e foi atualizado pela última vez por  Gofas 2 anos, 5 meses atrás.

  • Autor
    Posts
  • #8457

    Luis Augusto
    Participante

    Boa tarde,

    durante o uso do módulo percebi um comportamento estranho no processo de envio de e-mails em lote. Primeiramente ao tentar enviar lembretes de fatura manualmente para mais de uma fatura em aberto por exemplo, percebi que é retornado erro 500. Ao verificar o log do apache/php me deparei com o seguinte código de erro:

    
    Warning: Invalid argument supplied for foreach() in /var/www/vhosts/gamazonhost.com/httpdocs/vendor/whmcs/whmcs-foundation/lib/View/Formatter/Price.php on line 0
    
    Warning: Invalid argument supplied for foreach() in /var/www/vhosts/gamazonhost.com/httpdocs/vendor/whmcs/whmcs-foundation/lib/View/Formatter/Price.php on line 0
    
    Warning: Invalid argument supplied for foreach() in /var/www/vhosts/gamazonhost.com/httpdocs/vendor/whmcs/whmcs-foundation/lib/View/Formatter/Price.php on line 0
    
    Warning: Invalid argument supplied for foreach() in /var/www/vhosts/gamazonhost.com/httpdocs/vendor/whmcs/whmcs-foundation/lib/View/Formatter/Price.php on line 0
    
    Fatal error: Cannot redeclare ggnb_calculate_fine_interest() (previously declared in /var/www/vhosts/gamazonhost.com/httpdocs/modules/gateways/gofasgerencianetboleto/params.php:598) in /var/www/vhosts/gamazonhost.com/httpdocs/modules/gateways/gofasgerencianetboleto/params.php on line 598

    Logo fui a fundo verificar e vi que apenas 1 e-mail do grupo que selecionado para ser disparado esta sendo enviado ao cliente. Esse problema também ocorre com o Cron diário que processa as rotinas de disparos de e-mails aos clientes.

    Para te certeza que não se tratava de um erro do WHMCS, desativei o módulo do Gerencianet e setei outro módulo de pagamentos. Para minha surpresa, funcionou perfeitamente o envio. Já quebrei a cabeça para entender o que pode estar causando esse erro mas não consegui.

    Gofas ou alguém com bom conhecimento no módulo, podem ajudar?

  • #8458

    Luis Augusto
    Participante

    Para constar refiz todo o processo de instalação para ter certeza que o problema não esta relacionado com alguma inconsistência na transferência de arquivos. Infelizmente o problema persiste.

  • #8460

    Gofas
    Mestre

    Gratidão Luis!

    Um usuário havia me reportado esse erro antes, mas como não tinha mais informações eu não pude simular o erro,
    agora com o log do servidor eu sei a causa e a solução, acontece apenas se configurar juros e multa e no caso de Faturas com mais de um item no descritivo. Vou corrigir e explico melhor assim que atualizar e testar.

  • #8463

    Luis Augusto
    Participante

    Obrigado Maurício,

    acredito que vai ajudar outros usuários. Alguns talvez não tenha percebido ainda este comportamento por não acompanharem os logs do Cron. Fico aguardando ansioso novidades 🙂

  • #8487

    Luis Augusto
    Participante

    Bom dia,

    vi que lançou a versão 0.25 do módulo aparentemente para corrigir essa questão anterior. Mas mesmo fazendo a atualização o erro persiste. Continua retornando:

    Warning: Invalid argument supplied for foreach() in /var/www/vhosts/gamazonhost.com/httpdocs/vendor/whmcs/whmcs-foundation/lib/View/Formatter/Price.php on line 0
    
    Warning: Invalid argument supplied for foreach() in /var/www/vhosts/gamazonhost.com/httpdocs/vendor/whmcs/whmcs-foundation/lib/View/Formatter/Price.php on line 0
    
    Warning: Invalid argument supplied for foreach() in /var/www/vhosts/gamazonhost.com/httpdocs/vendor/whmcs/whmcs-foundation/lib/View/Formatter/Price.php on line 0
    
    Warning: Invalid argument supplied for foreach() in /var/www/vhosts/gamazonhost.com/httpdocs/vendor/whmcs/whmcs-foundation/lib/View/Formatter/Price.php on line 0
    
    Warning: Invalid argument supplied for foreach() in /var/www/vhosts/gamazonhost.com/httpdocs/vendor/whmcs/whmcs-foundation/lib/View/Formatter/Price.php on line 0
    
    Warning: Invalid argument supplied for foreach() in /var/www/vhosts/gamazonhost.com/httpdocs/vendor/whmcs/whmcs-foundation/lib/View/Formatter/Price.php on line 0
    
    Warning: Invalid argument supplied for foreach() in /var/www/vhosts/gamazonhost.com/httpdocs/vendor/whmcs/whmcs-foundation/lib/View/Formatter/Price.php on line 0
    
    Fatal error: Cannot redeclare ggnb_calculate_fine_interest() (previously declared in /var/www/vhosts/gamazonhost.com/httpdocs/modules/gateways/gofasgerencianetboleto/params.php:680) in /var/www/vhosts/gamazonhost.com/httpdocs/modules/gateways/gofasgerencianetboleto/params.php on line 680

    Alguma sugestão do que posso fazer para corrigir o problema? Pois meu CRON quando roda está enviando apenas o primeiro e-mail “programado” e os demais não são enviados. Isso esta ocorrendo tbm quando tento mandar um lote de vários lembretes manualmente.

  • #8508

    Luis Augusto
    Participante

    Bom dia Gofas,

    alguma novidade sobre essa questão? Vi em uma outra resposta que houveram ajustes na versão 0.25. Fiz novamente a atualização do módulo mas o problema que relatei persiste.

    Como esta afetando o envio de e-mails, esta comprometendo muito o uso do WHMCS. Fiz novamente testes com um módulo anterior de boletos sem registro que usava e o problema não ocorreu.

    Poderia dar uma força para esta situação?

  • #8510

    Gofas
    Mestre

    Boa tarde Luis,
    durante a última atualização tentamos simular o erro de várias formas, realizamos testes com diversas configurações diferentes, faturas com valores, descontos, taxas, juros, multa variados, cadastros de clientes com informações diferentes, como por ex pessoa física e jurídica, etc, etc, etc… corrigimos bugs que foram reportados e que não foram reportados, incompatibilidades e optimizamos várias trechos dos códigos, mas em nenhuma situação ocorreu esse erro.

    Traduzindo o erro de forma humanamente entendível:
    Erro: "Fatal error: Cannot redeclare ggnb_calculate_fine_interest() (previously declared in /modules/gateways/gofasgerencianetboleto/params.php:680"
    Tradução: "Você não pode declarar uma nova função com o nome ggnb_calculate_fine_interest pois ela já foi declarada na linha 680 do arquivo params.php"

    O que está acontecendo com o seu whmcs é que uma ou mais faturas possui(em) alguma configuração específica, que relacionadas às configurações do módulo e às do WHMCS forçam o módulo definir dois cálculos de juros e multa diferentes para a mesma fatura.

    Para diagnosticar e corrigir, por favor, desative todos os seus outros módulos, addons e hooks, rode o cron e nos envie:
    1) captura de tela mostrando todas as configurações do módulo;
    2) captura de tela mostrando as configurações de campos personalizados do cliente;
    3) captura de tela da(s) fatura com erro, acesse uma a uma das faturas geradas, nesse ponto, provavelmente você irá se deparar com a fatura “defeituosa”;
    4) O log de erros do servidor novamente, pois devido às últimas atualizações provavelmente o erro não está mais na linha 680;
    5) qualquer outra informação que possa ajudar e o máximo de detalhes possíveis.

    Dicas adicionais:
    1) uma forma simples e prática de rodar todas as tarefas cron do whmcs é acessar o url https://meuwhmcs.com/crons/cron.php?command=all&options=force;
    2) mantenha e exibição de erros ativa conforme explicado aqui;

    Agradeço muito pelo feedback e ajuda nos testes, ultrapassando esse pequeno desafio estaremos prontos para partir para novas ideias e gerar mais valor para todos!

  • #8514

    Luis Augusto
    Participante

    Boa tarde Gofas,

    primeiramente obrigado pela atenção ao meu problema. Vamos lá:

    Pasta com os prints: https://www.dropbox.com/sh/e1c0xbju7zdohl1/AADPRQqiaOA7qCqB52FmyeS6a?dl=0

    1. Tela 01 – Configuração do módulo
    2. Tela 02 – Configuração campos personalizados
    3. Tela 03 – Erro na fatura após Debug do WHMCS ativado
    4. Tela 04 – Erro ao tentar enviar mais de 1 lembrete de fatura
    5. Tela 05 – Log do WHMCS mostrando que apenas o primeiro e-mail da lista dos lembretes foi enviado

    Algumas observações importantes:

    1. Esse comportamento de erro só acontece quando preciso fazer algum envio de e-mail em lote. seja lembretes de fatura manuais, seja o CRON que roda e tem que gerar faturas ou notificações de atraso. Nos logs consta sempre que apenas 1 dos clientes foi notificado. Ou seja, numa lista de 10 notificações apenas a primeira é realizada. Este “único” e-mail enviado chega normalmente e consigo fazer a emissão normal da fatura. Se for enviando o lembrete cliente por cliente (e-mail por e-mail), funciona perfeitamente. Este comportamento só ocorre em e-mails que usam valores financeiros. Meus e-mails e suporte estão funcionamento normalmente.

    2. Estou usando modelos de e-mail personalizados para auto-login, inclusive com a solução proposta aqui mesmo no site.

    3. O debug do WHMCS esta ativo para eventuais análises.

    Aguardo ajuda

  • #8529

    Luis Augusto
    Participante

    Boa tarde,

    alguem poderia me dar uma luz sobre a questão?

  • #8531

    Gofas
    Mestre

    Boas notícias, corrigimos isso na versão 0.2.6.
    Os módulos PayPal Plus e Gerencianet Cartão também foram atualizados para evitar a mesma falha.

  • #8544

    Nicolas
    Participante

    Olá,

    Estou usando a versão mais atual do WHMCS e também do módulo dos boletos, o erro ainda aparece no arquivo “error_log” que fica na raiz do WHMCS….

    [19-Jan-2017 12:08:06 America/Sao_Paulo] PHP Warning:  Invalid argument supplied for foreach() in /path/public_html/vendor/whmcs/whmcs-foundation/lib/View/Formatter/Price.php on line 0
    [19-Jan-2017 12:08:06 America/Sao_Paulo] PHP Warning:  Invalid argument supplied for foreach() in /path/public_html/vendor/whmcs/whmcs-foundation/lib/View/Formatter/Price.php on line 0
    [19-Jan-2017 12:23:59 America/Sao_Paulo] PHP Warning:  Invalid argument supplied for foreach() in /path/public_html/vendor/whmcs/whmcs-foundation/lib/View/Formatter/Price.php on line 0
    [19-Jan-2017 12:23:59 America/Sao_Paulo] PHP Warning:  Invalid argument supplied for foreach() in /path/public_html/vendor/whmcs/whmcs-foundation/lib/View/Formatter/Price.php on line 0
    [19-Jan-2017 12:23:59 America/Sao_Paulo] PHP Warning:  Invalid argument supplied for foreach() in /path/public_html/vendor/whmcs/whmcs-foundation/lib/View/Formatter/Price.php on line 0
    [19-Jan-2017 12:23:59 America/Sao_Paulo] PHP Warning:  Invalid argument supplied for foreach() in /path/public_html/vendor/whmcs/whmcs-foundation/lib/View/Formatter/Price.php on line 0
    [19-Jan-2017 12:23:59 America/Sao_Paulo] PHP Warning:  Invalid argument supplied for foreach() in /path/public_html/vendor/whmcs/whmcs-foundation/lib/View/Formatter/Price.php on line 0
    [19-Jan-2017 12:23:59 America/Sao_Paulo] PHP Warning:  Invalid argument supplied for foreach() in /path/public_html/vendor/whmcs/whmcs-foundation/lib/View/Formatter/Price.php on line 0

    Será que este erro ainda tem a ver com o módulo ou seria outra coisa?

    • #8546

      Gofas
      Mestre

      Aparentemente não está relacionado a nenhum módulo específico, podem ser as configurações de moeda do WHMCS que estão causando algum conflito.
      A pesquisa sobre esse erro mostra muitas possibilidades, como nesse post do portal do host.

      Se você usa os nossos Módulos PayPal Plus e Gerencianet Cartão (beta) eles também foram atualizados para impedir o mesmo erro, atualize-os se eles estiverem instalados.

  • #8548

    Eu estava com o mesmo problema. Depois que fui nas configurações gerais / outros e desmarquei os checkbox abaixo, ficou tudo ok!
    Exibir erros Tick to enable PHP Error Reporting (Do not leave enabled in live use)
    Modo de depuração de SQL Tick to enable logging of SQL Errors (Enable only if instructed)

    • #8591

      Gofas
      Mestre

      Pode crer! Descobrimos que é um bug do WHMCS, o suporte do software não disse que é nem que não é, apenas instruíram a fazer o mesmo, desativar os avisos de erro.

Você deve fazer login para responder a este tópico.