Salve pessoal!
Possuo uma aplicação que estava funcionando corretamente há meses e começou a apresentar agora a mensagem: "Fatal error: Uncaught Error: Call to a member function mensagem() on null "
Nada foi atualizado ou alterado tanto no desenvolvimento quanto na produção.
O código inteiro que está no evento OnApplicationInit é:
sc_exec_sql("truncate embaixada");
sc_exec_sql("insert into embaixada
(apol, endo, parc, clie, comi, ciax)
select apol, endo, parc, clie, sum(comi) as tcomi, ciax from embaixa group by apol, endo, parc, clie, ciax order by apol");
sc_exec_sql("update embaixada set endo = NULL where endo = '0'");
sc_exec_sql("update embaixada set endo = NULL where endo = '-000'");
sc_exec_sql("update embaixada set endo = NULL where endo = ' '");
sc_exec_sql("update embaixada set parc = (left(trim(parc), 2)) where ciax = 'TOKIO'");
sc_exec_sql("update embaixada set parc = (left(trim(parc), 2)) where ciax = 'ALLIANZ'");
sc_exec_sql("update embaixada set parc = (left(trim(parc), 2)) where ciax = 'LIBERTY'");
sc_exec_sql("update embaixada set parc = (left(trim(parc), 2)) where ciax = 'AZUL'");
$sql = "UPDATE embaixada
SET propo = (SELECT proposta FROM documentos
WHERE embaixada.apol = documentos.apolice
AND (embaixada.endo = documentos.endosso OR (embaixada.endo IS NULL AND documentos.endosso = '') OR (embaixada.endo IS NULL AND documentos.endosso IS NULL)))
WHERE EXISTS (
SELECT 1 FROM documentos
WHERE embaixada.apol = documentos.apolice
AND (embaixada.endo = documentos.endosso OR (embaixada.endo IS NULL AND documentos.endosso = '') OR (embaixada.endo IS NULL AND documentos.endosso IS NULL)))";
sc_exec_sql($sql);
sc_exec_sql("update embaixada set p1 = (select prod1 from documentos where embaixada.propo = documentos.proposta)");
sc_exec_sql("update embaixada set p2 = (select prod2 from documentos where embaixada.propo = documentos.proposta)");
sc_exec_sql("update embaixada set p3 = (select prod3 from documentos where embaixada.propo = documentos.proposta)");
sc_exec_sql("truncate embaixa");
Observando o código php, o ponto onde o erro acontece é:
$sql = "UPDATE embaixada
SET propo = (SELECT proposta FROM documentos
WHERE embaixada.apol = documentos.apolice
AND (embaixada.endo = documentos.endosso OR (embaixada.endo IS NULL AND documentos.endosso = '') OR (embaixada.endo IS NULL AND documentos.endosso IS NULL)))
WHERE EXISTS (
SELECT 1 FROM documentos
WHERE embaixada.apol = documentos.apolice
AND (embaixada.endo = documentos.endosso OR (embaixada.endo IS NULL AND documentos.endosso = '') OR (embaixada.endo IS NULL AND documentos.endosso IS NULL)))";
sc_exec_sql($sql);
Onde pode estar o erro, sabendo-se que o metodo “mensagem” aparece em outros pontos anteriores e não gera erro?