Método dentro do switch

Tenho um evento ajax no onclik com código abaixo, mais o método não funciona dentro do switch, isso e normal?, fora dele funciona perfeito, Esse botão ajax e em uma grid.

switch ({status}) {
case ‘P’:
sc_exec_sql("
UPDATE
pedidos
SET
status = ‘A’
WHERE
idpedidos LIKE [keypedidosp]
");
sc_ajax_refresh();
guia(); <----MÉTODO

  break;
case 'A':

sc_exec_sql("
UPDATE
pedidos
SET
status = ‘E’
WHERE
idpedidos LIKE [keypedidosp]
");
sc_ajax_refresh();

     break;

}

**CODIGO DO MÉTODO guia() **

[var_nome] = {nome};
[var_fone] = {Fone};
[var_mensagem_app] = “Pedido aceito!, e em preparo! “.” - “. {fone} .” - “. [var_nome] . " - " . “R$ " .number_format({total}, 2, ‘,’, ‘.’);
[var_site] = “https://api.whatsapp.com/send?phone=+55".trim([var_fone])."&text=”.trim([var_mensagem_app]);
sc_redir([var_site],””,”_blank");

coloca seu método antes do refresh

1 Curtida

Funcionou não!, ele executa como se não existisse o método la. Faz toda alteração no banco e passa direto pelo método!.

Sugestão: Ao invés de usar o sc_exec_sql no primeiro UPDATE, use o sc_select para executar o UPDATE e pegue o retorno. Se estiver tudo ok, aí você chama o teu método, como está descrito no exemplo do sc_select. É uma forma inclusive de se testar se o comando SQL executou certo ou não, já que o sc_exec_sql não dá retorno nenhum.

Espero que ajude.

1 Curtida

é por causa do seu redir … usa o commit trans

2 Curtidas

Sugestão de código:

$_status = ['P'=> 'A', 'A'=>'E'];
if (array_key_exists({status}, $_status)) {
    $_update = "UPDATE pedidos SET status='{$_status[ {status} ]}' WHERE idpedidos LIKE [keypedidosp]"; 
    sc_exec_sql($_update);
    sc_commit_trans();
    sc_ajax_refresh();
}
if ({status}=='P') guia();

Nota: Códigos usar entre [code] e [/code] para que o mesmo seja apresentado de forma mais legível.

Como segunda sugestão no caso da observação do @Kleyber, comente a linha:

if ({status}=='P') guia(); e as linhas com sc_ajax_refresh(); coloque a aplicação em modo debug.

3 Curtidas

Realmente ficou muito mais limpo esse seu código, mudei para ele , ficou show mais ainda sim o método guia() não e executado!.. To batendo cabeça aqui, tem como debugar o php no scriptcase, os so os comandos sql?

O php é debugado somente se houver erro.
É uma grid correto?
Acho que vai ter que copiar o codigo no evento no click dentro do IF que criei mas comente a linha do refresh e teste.

Sim e uma grid, testei comentando a linha refresh e não funciona, somente funciona colocando o código dentro e não o método. Como mostrado abaixo, mais api do whatsapp passou a dizer numero invalido para qualquer numero que eu teste!, acho q e bug deles pq nada foi mudado.


[keypedidosp] = {idpedidos};
		

$_status = ['P'=> 'A', 'A'=>'E', 'E'=>'F'];
if (array_key_exists({status}, $_status)) {
    $_update = "UPDATE pedidos SET status='{$_status[ {status} ]}' WHERE idpedidos LIKE [keypedidosp]"; 
    sc_exec_sql($_update);
    sc_commit_trans();
    sc_ajax_refresh();
}
if ({status}=='P') {

[var_nome] = {nome};
[var_fone] = {Fone};
[var_mensagem_app] = "Pedido aceito!, e em preparo! "." - ". {fone} ." - ". [var_nome] . " - " . "R$ " .number_format({total}, 2, ',', '.');
[var_site] = "https://api.whatsapp.com/send?phone=+55".trim([var_fone])."&text=".trim([var_mensagem_app]);
sc_redir([var_site],"","_blank");
}