Oi Pessoal,
Gostaria de fazer somatorios e multiplicar valores para um sistema de estoque bem simples, como faço isso no SC?
Desculpe a ignorancia mais nao sei bem programar.
att
Oi Pessoal,
Gostaria de fazer somatorios e multiplicar valores para um sistema de estoque bem simples, como faço isso no SC?
Desculpe a ignorancia mais nao sei bem programar.
att
Eu tenho a seguinte estrutura:
Tabela de Produtos
Tabela de Estoques (Locais de Estoque x Produto) <- saldos
Tabela de Movimentos (Data, Hora, Local Estoque, Produto, quantidade, saldo)
Com uma trigger em Movimentos ao fazer um insert nessa tabela, eu leio o local, e atualizo o saldo.
[code]DELIMITER $$
USE iwerp_cinco
$$
CREATE
DEFINER=iwroot
@%
TRIGGER iwerp_cinco
.estoqmov_bef_ins
BEFORE INSERT ON iwerp_cinco
.estoqmov
FOR EACH ROW
BEGIN
DECLARE varProdutoId integer;
DECLARE varLocalId integer;
DECLARE varEstoquesId integer;
DECLARE varSaldo decimal(14,4);
DECLARE varQuantidade decimal(14,4);
DECLARE varCodigoTrans varchar(15);
DECLARE varEntradaSaida char(1);
SELECT Parametros INTO varEntradaSaida FROM geraltab WHERE Grupo=‘ESTOQUETRANSAC’ AND Codigo=NEW.GTEstoqTransCod;
IF (NEW.Estorno)
THEN
SELECT codigo INTO varCodigoTrans FROM geraltab WHERE grupo=‘ESTOQUETRANSAC’ AND Parametros=CONCAT(‘ESTORNO:’,NEW.GTEstoqTransCod);
Set NEW.GTEstoqTransCod=varCodigoTrans;
IF varEntradaSaida = ‘E’ THEN SET varEntradaSaida =‘S’; ELSE SET varEntradaSaida=‘E’; END IF;
END IF;
Set NEW.Transacao=varEntradaSaida;
set varQuantidade=(CASE WHEN new.Transacao = ‘E’ THEN new.Quantidade ELSE new.Quantidade*-1 END);
Set varProdutoId=(select Id from produtos where Codigo = new.ProdutoCodigo);
Set varLocalId=(SELECT Id FROM geraltab WHERE grupo = ‘EstoqueLocal’ and Codigo = new.GTLocalCodigo);
SELECT ID, Saldo+varQuantidade
INTO varEstoquesId, varSaldo
FROM estoques
WHERE GTEstoqueLocalId = varLocalId and ProdutoId = varProdutoId;
IF (varEstoquesId > 0)
THEN UPDATE estoques SET Saldo = varSaldo WHERE id = varEstoquesId;
ELSE INSERT INTO estoques (GTEstoqueLocalId,ProdutoId,Saldo)
VALUE (varLocalId,varProdutoId,varQuantidade);
END IF;
SET NEW.Saldo = (CASE WHEN varSaldo IS NULL THEN varQuantidade ELSE varSaldo END);
SET NEW.DTUpdate= Now();
END$$
[/code]
O SC só faz o insert.
Estou perdida Haroldo,
Queria fazer este exemplo q vc me deu para ter a noção de como fica.
Aonde eu coloco este código?
Estou fazendo um form com os seguintes dados: Tenho dado sde Entrada e Saida e o valor final
Arquivo em anexo
Como posso fazer este cálculo?
isso é tudo no banco, não é no sc, faz parte da tabela.
Obrigada
Vou fazer um teste com as tabelas q vc me informou para ver o funcionamento.
Olá,
Eu já tive uma situação simples e no ScriptCase fiz da seguinte forma:
Criei Eventos Ajax onchange nos campos, que no seu caso seriam o Saldo Início, Entrada e Tranfer para que colocassem o valor calculado no campo Total.
Seria mais ou menos assim:
{Campo_Total}={Valor_Campo_Inicio}+{Valor_Campo_Entrada}-{Valor_Campo_Transfer};
Desta forma, se for alterado qualquer um dos campos o Campo Total é atualizado.
A forma que o Mestre Haroldo explicou, com um trigger no Banco de Dados é a melhor e mais segura, sem precisar criar os Eventos Ajax nos campos, mas dá para fazer no ScriptCase da forma acima.
[]'s