Atualizar estoque, ao alterar valor do campo (Resolvido)

Atualizar estoque, ao alterar valor do campo Status

Tela Pedido: campo status (orçamento/venda) campo do tipo select

ao alterar o campo status para venda => atualizar o estoque, baseada na quantidade no grid itens

grid itens: produto, quantidade

lembrando que os itens já estarão cadastrados na grid itens

Forma estranha de pedir uma dúvida.
Parece mais uma determinação.

Formulário mestre, evento onafterupdate

Ler todos os itens do pedido com sc_select (veja como usar a macro no webhelp).
Dentro do loop através da macro sc_exec_sql realizar update nos estoques baseados no dados lidos pelo select.
Ao final sc_comiit_trans();

1 Curtida

oi Haroldo, obrigado pela dica

fiz assim, mas ainda não deu baixa no estoque de produtos:

sc_lookup(dataset1,“select status FROM pedido WHERE codigo_pedido = {codigo_pedido }”);
sc_lookup(dataset2,“select quantidade FROM itens WHERE codigo_pedido = {codigo_pedido }”);

if(!empty({dataset1[0][0]}))
if(!empty({dataset2[0][0]}))
{

$status = {dataset1[0][0]};
$quantidade = {dataset2[0][0]};
}
if ($status == “venda”)
{
sc_exec_sql(“UPDATE produtos SET estoque = estoque - $quantidade WHERE codigo_produto = {codigo_produto}”);
sc_comiit_trans();
}

if ({status} == 'venda')  {
    sc_select(rs, "SELECT codigo_produto, quantidade FROM itens_do_pedido WHERE 
    codigo_do_pedido = {codigo_pedido}");
    if ( {rs} === false ) {
       echo 'Erro de acesso. Mensagem = ' . {rs_erro};
    } else {
        while ( !{rs}->EOF ) {
            $codigoProduto = {rs}->fields[1];
            $quantidade    = {rs}->fields[2];
            sc_exec_sql("UPDATE produtos SET estoque = estoque - $quantidade WHERE 
            codigo_produto = '$codigoProduto");
            {rs}->MoveNext();
       }
       {rs}->Close();
    }
    sc_commit_trans();
}
2 Curtidas

if ({status} == “venda”)
{
sc_select(rs, “SELECT codigo_produto, quantidade FROM itens WHERE codigo_pedido = {codigo_pedido}”);
if ( {rs} === false )
{
echo 'Erro de acesso. Mensagem = ’ . {rs_erro};
}

else {
    while ( !{rs}->EOF ) {
        $codigoProduto = {rs}->fields[0];
        $quantidade    = {rs}->fields[1];
        sc_exec_sql("UPDATE produtos SET estoque = estoque - $quantidade WHERE codigo_produto = '$codigoProduto");
        {rs}->MoveNext();
   }
   {rs}->Close();
}
sc_commit_trans();

}

erro:

Erro ao acessar o banco de dados
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '‘1’ at line 1
{SC_DB_ERROR_INI}View SQL{SC_DB_ERROR_MID}UPDATE produtos SET estoque = estoque - 10 WHERE codigo_produto = '1{SC_DB_ERROR_CLS}Close{SC_DB_ERROR_END}

Boa tarde Haroldo

Deu certo :grinning:

if ({status} == “venda”)
{
sc_select(rs, “SELECT codigo_produto, quantidade FROM itens WHERE codigo_pedido = {codigo_pedido}”);

if ( {rs} === false )
	{
   echo 'Erro de acesso. Mensagem = ' . {rs_erro};
} 

else {
    while ( !{rs}->EOF ) {
        $codigoProduto = {rs}->fields[0];
        $quantidade    = {rs}->fields[1];
		
        sc_exec_sql("UPDATE produtos SET estoque = estoque - $quantidade WHERE codigo_produto = $codigoProduto");
        {rs}->MoveNext();
   }
   {rs}->Close();
}
sc_commit_trans();

}

Boa tarde Haroldo

Muito Obrigado pela sua contribuição

Deu certo :grinning:

1 Curtida