[RESOLVIDO] - Erro Resumo - Division by zero

Tenho um resumo por centro de custo com as colunas:
Vendedor - Quantidade (Pedidos c/ Produtos) - Faturamento (Pedidos c/ Produtos) - Valor Médio (Pedidos c/ Produtos) - Total (Serviços) - Faturamento (Serviços) - Valor Médio (Serviços)
Total Geral =>

Tem centro de custo em que algum mês não realiza venda de serviços, com isso apresenta a mensagem " Fatal error : Uncaught DivisionByZeroError: Division by zero" ao gerar o Resumo.

Tentei tratar a coluna que consta o total zerado em vários eventos e todos dão erro
if({TOTAL_SERVICO_sum} = 0)
{TOTAL_SERVICO} = 1;
}

Existe uma forma alternativa de tratar esse campo zerado?

Coloca em
Modo debug.

Analisa a query executada.

Está ok, se tem 15 vendedores e somente 1 realizou venda de serviço não tem problema.
O problema está no campo que calcula a média (informo em Peso Médio Ponderado a coluna TOTAL_SERVICO), como tem mês que está zerado dá erro na divisão. Por isso tentei contornar em eventos para colocar o valor como 1 e não dar erro.

Teste se q coluna é null , se for devolva 0

Deu mesmo erro, está pegando 0 e na query já trato

IFNULL((SELECT COUNT(IDSERVICO) FROM xxxxx),0) AS TOTAL_SERVICO

Você está fazendo essa calculo pelo PHP ou direto no banco de dados?

Em algum momento dessa sua conta, está dando o valor 0 e uma divisão por 0 está sendo realizada. Como é um caso isolado, você precisa pegar essa esses valores e verificar o motivo. Tem que debugar. Muito provavelmente é erro de lógica.

No postgres, por exemplo, você consegue evitar esse erro usando NULLIF onde ele ao identificara uma divisão por 0, faz a divisão por NULL e não quebra a aplicação.

O cálculo é no próprio Scriptcase, se o campo estiver zerado em todos registros que dá erro

image

Acredito que o problema não é no VALOR TOTAL e sim na QTDSERVICO que está com 0 (zero) para divisão …
pode criar um outro campo calculado (com a quantidade) na query e se for zero colocar 1
e usar esse para usar como peso médio ponderado

Verifique se vem do banco um campo null e se está sendo usado na fórmula.

O problema é ao calcular a média total quando o total de serviços foi 0, não tem evento que verifico se o {TOTAL_SERVICO_sum} = 0 e forçar para o dividendo ser 1 e não der erro.

Resolvi editando o arquivo resumo.class já que o problema era no cálculo do Total Geral
Estava:
$this->array_total_geral[5] /= $this->array_total_geral[6];
E alterei para:
if ($this->array_total_geral[5] != 0) {$this->array_total_geral[5] /= $this->array_total_geral[6];}

Estranho que na quebra o Scriptcase trata o cálculo da média:
if ($this->array_total_idatendente[$campo_idatendente][6] != 0)

Mas se gerar a app o arquivo é recriado…

Sim, coloquei na minha documentação essa observação.
Como em nenhum evento consegui manipular esse total geral tive que fazer dessa forma. Para não depender desse cálculo do Scriptcase estarei refazendo minha query para ter um registro de total geral.