Entrada e saida de mercadorias ( no estoque)

Bom dia todos,

Estou desenvolvendo uma solução de entrada e saida de mercadorias, entretanto não estou conseguindo dá entrada no estoque e tb não consigo fazer a saida do estoque,
Alguém tem alguma rotina para exemplificar a situação.

Grato
Paulo
Click informática.

Se mostrar oque ja tentou fazer talvez possamos lhe ajudar.

Bom dia, a minha situação é a seguinte:
Tenho um form mestre x detalhe
E quero que quando for lançando os itens da nota, vá atualizado o estoque no cadastro de produtos.

O pessoal do suporte me passou isso aqui:

sc_lookup(estoque, "
SELECT pro_estoque FROM produtos WHERE (pro_id = ‘sai_produto’)");
$aux={estoque[0][0]}-{sai_qtde};
sc_exec_sql("UPDATE produtos SET pro_estoque = ($aux) WHERE pro_id = sai_produto ");
Para ser colocado no Evento OnBeforeInsert
Só que depois que coloquei isso, não chega nem a gravar o registro.
Agradeço a ajuda de todos.

Cordialmente.

Paulo José

Primeiro esse código esta estranho:
´sai_produto’ --> isto é o id do produto? deveria ser uma váiável e campo entre chaves.

Segundo: Provavelmente ta dando erro no select o que causa o travamento pois vc nao testa o retorno da sc_lookup (veja webhelp da macro sc_lookup).

Terceiro: Você quer uma aplicação para dar entrada manual no estoque do produto?
Suas tabelas estãomodeladas adequadamente para tal desenvolvimento?

Sim, quero fazer uma aplicação para dar entrada manual no estoque
Segue as tabelas em questão
TABELA PRODUTOS
pro_id
pro_descricao
pro_marca
pro_setor
pro_referencia
pro_estoque
pro_est_fixo
pro_vlr
SAIDA MERCADORIA (MESTRE)
sai_id
sai_data
sai_fornecedor
sai_obs
ITENS SAIDA(DETALHE)
itsai_id (RELACIONADO COM SAIDA MERCADORIA)
sai_id
sai_produto ( RELACIONADO COM PRODUTOS)
sai_qtde
sai_unit
sai_vlrtotal
sai_vlr

O formulario esta funcionando perfeitamente,
fiz a correção do codigo conforme abaixo, porém ainda não faz a atualização do estoque.
Preciso de ajuda.

No evento Onbeforeinsert
sc_lookup(estoque, "
SELECT pro_estoque FROM produtos WHERE (pro_id = ‘{sai_produto}’)");
$aux={estoque[0][0]}-{sai_qtde};
sc_exec_sql("UPDATE produtos SET pro_estoque = ($aux) WHERE pro_id = {sai_produto} ");

Consigo adicionar os itens da nota normalmente, calcular o valor total da nota, mas não consigo atualizar o estoque disponivel.

Agradeço a ajuda e atenção.

É, O SEU SC_LOOKUP NÃO ESTA SENDO TESTADO, PODE ESTAR DANDO ERRO E VC NÃO SABE.
MAS EU FARIA A SUBTRAÇÃO DIRETO NA UPDATE:

$SAIDA={sai_qtde};
sc_exec_sql("UPDATE produtos SET pro_estoque =(pro_estoque-$SAIDA) WHERE pro_id = {sai_produto} ");

Olá a todos,
Harold
é estranho pois depois que você disse que estava faltando { } eu os coloquei e funcionou,
agora estou conseguindo dá entrada e saida no estoque.

Obrigado pela ajuda.

Vou agora verificar, pois quando estou excluindo os itens, não esta recalculando o estoque.

Forte abraço a todos.

Então problema resolvi, que bom.

Abraços.

Ola amigo, estou tendo o mesmo problema que vc apresentou teria como me enviar o codigo, ou me explicar a solução não estou conseguindo resolver…

já tentei o código abaixo e não deu certo.

sc_lookup(prod,“select esto_produto, esto_descricaoproduto from tb_estoque where (esto_produto = ‘{nota_itens_cod_produto}’)”);

$produto = {prod[0][0]};
$quantidade_entrada = {nota_itens_quantidade};

sc_exec_sql(‘update tb_estoque set esto_saldo = (esto_saldo + $quantidade_entrada) where esto_produto = $produto’);

Grato.

Luis Gustavo M L Leal

lgmlleal@gmail.com
msn: lgmlleal@hotmail.com.br
cel: +55 (12) 9155 1718
cel: +55 (12) 3632 4025

Gustavo,

o SC está develvendo erro?

Não amigo, ele simplesmente não faz o update na outra tabela,

já aplicou esta solução? pode em ajudar?

Tenta fazer a soma fora da macro sc_exec_sql.

[code]sc_lookup(prod,“select esto_produto, esto_saldo, esto_descricaoproduto from tb_estoque where esto_produto = ‘{nota_itens_cod_produto}’”);

$produto = {prod[0][0]};
$salto_atual = {prod[0][1]};
$quantidade_entrada = {nota_itens_quantidade};

$novo_saldo = $saldo_atual + $quantidade_entrada

sc_exec_sql(“update tb_estoque set esto_saldo = ($novo_saldo) where esto_produto = $produto”);[/code]

Você pode fazer isso no evento para ver se a macro está atualizando a tabela estoque, vai atualizar o saldo do produto 1 para 2:
sc_exec_sql(“update tb_estoque set esto_saldo = 2 where esto_produto = 1”);

[code]/* Macro sc_lookup */

sc_lookup(prod, "
SELECT
esto_produto,
esto_saldo
FROM
tb_estoque
WHERE
(esto_produto = ‘1’) // to usando um valor estático para testar
");

/* Erro no lookup /
if (FALSE === {prod}) {
sc_error_message(“Ocorreu um erro no acesso ao banco de dados.
”);
}
elseif (empty({prod})) { /
EOF */
sc_error_message(“Nenhum valor foi retornado pelo banco.
”);
}
else {

$produto = {prod[0][0]};
$saldo_atual = {prod[0][1]};

// $novo_s = $saldo_atual + {novosaldo}; // campo criado para digitar a entrada do estoque

sc_exec_sql(“update tb_estoque set esto_saldo = $saldo_atual + {novosaldo} where esto_produto = $produto”);

}[/code]

Testei aqui e funcionou.

coloque a aplicação em modo debug, e analise as querys geradas, e execute direto no banco para avaliar.

Ola Cleyton, estou me sentindo um inutil, refiz tudo em php e sql (mysql) o negocio funciona.

coloquei o codigo acima para testar e ele fala Ocorreu um erro no acesso ao banco de dados!
Alterei o código para ver se ele me mostrava o esto_produto que ele estava tentando alterar, e ele imprime certinho na tela de erro, tanto com o código estático ‘2’ ou {item_cod_produto}
se utilizo o sql normal tanto no phpmyadmin quanto com php puro o negocio funciona.

Esse script case não tem um modo de depuração mais concreto onde eu posso ver o erro do mysql que ele esta retornando?
Pois não esta mais fazendo sentido. toda a logica esta funcional.

/* Erro no lookup /
if (FALSE === {prod}) {
sc_error_message("Ocorreu um erro no acesso ao banco de dados.
.Cod para alteracao = {item_cod_produto} ");
}
elseif (empty({prod})) { /
EOF */
sc_error_message(“Nenhum valor foi retornado pelo banco.
”);

Obrigado Por enquanto.

Srs, problema resolvido! graças a nosso amigo Clayton, foi extremamente atencioso, até a conclusao do problema.

Pessoal, segue o código final

/* Macro sc_lookup */

sc_lookup(produto, "
SELECT
esto_id,
esto_saldo
FROM
tb_estoque
WHERE
(esto_id = ‘{nota_itens_cod_produto}’)
");

/* Erro no lookup /
if (FALSE === {produto}) {
sc_error_message(“Ocorreu um erro no acesso ao banco de dados.
”);
}
elseif (empty({produto})) { /
EOF */
sc_error_message(“Nenhum valor foi retornado pelo banco.
”);
}
else {

/* Inclua aqui sua rotina de processamento */

$id={produto[0][0]};
$saldo_atual = {produto[0][1]};
$novo = $saldo_atual + {nota_itens_quantidade};

/* Macro sc_exec_sql */

sc_exec_sql("
UPDATE
tb_estoque
SET
esto_saldo = $novo
WHERE
esto_id = {nota_itens_cod_produto}
");

}

Só como informação,

tenho 2 tabelas, os da tb_itensnota e tb_estoque.

Abraço a todos e obrigado.