Estoque (update) => fórmula direta e inversa

Olá pessoal, preciso da ajuda de vocês

vou usar o código no evento onAfterUpdate na grid itens para atualizar estoque de produtos, neste caso tem que ser formula direta e inversa, como faço?

MEU CÓDIGO:

sc_lookup(dataset, "SELECT estoque FROM produtos WHERE codigo_produto = {codigo_produto} ");

$estoque = {dataset[0][0]};

if ($estoque != 0)

{

$estoque = $estoque - {quantidade_grid_itens};

sc_exec_sql("UPDATE produtos SET estoque = $estoque WHERE codigo_produto = {codigo_produto} ");

}

Entendo o que deseja fazer e digo que é um pouco complicado ainda mais em formulario grid view.

Acredito que se este mesmo procedimento é feito num procedimento armazenado (SP) ou função dentro do banco de dados fica limpo totalmente da influencia externa considerando o mesmo como uma transação atómica. Alias, acho seja a melhor opção.
Eu sempre trato de evitar calculo ou transações que intervém varias tabelas nas aplicações de Scriptcase, assumindo esta função os SP do banco de dados.

2 Curtidas

Sim a trigger no banco facilitaria muito e resolveria seu problema.

Como de alguns anos para cá não uso mais regras de negócio no banco de dados (uso models em classe PHP) parei de sugerir qualquer orientação que use o banco de dados quando se trata de uma regra de negócio.

1 Curtida