Autor Tópico: Soma, Divisao, Diminuição e Multiplicação no scriptcase  (Lida 1999 vezes)

adrianacombat

  • Avançado
  • ****
  • Mensagens: 307
    • Email
Soma, Divisao, Diminuição e Multiplicação no scriptcase
« Online: Agosto 30, 2013, 10:49:03 am »
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

Haroldo

  • Expert
  • *****
  • Mensagens: 6293
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Soma, Divisao, Diminuição e Multiplicação no scriptcase
« Responder #1 Online: Agosto 30, 2013, 11:24:56 am »
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.

Código: [Selecionar]
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$$

O SC só faz o insert.

adrianacombat

  • Avançado
  • ****
  • Mensagens: 307
    • Email
Re:Soma, Divisao, Diminuição e Multiplicação no scriptcase
« Responder #2 Online: Agosto 30, 2013, 12:04:45 pm »
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?

Haroldo

  • Expert
  • *****
  • Mensagens: 6293
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Soma, Divisao, Diminuição e Multiplicação no scriptcase
« Responder #3 Online: Agosto 30, 2013, 12:37:10 pm »
isso é tudo no banco, não é no sc, faz parte da tabela.

adrianacombat

  • Avançado
  • ****
  • Mensagens: 307
    • Email
Re:Soma, Divisao, Diminuição e Multiplicação no scriptcase
« Responder #4 Online: Agosto 30, 2013, 01:23:34 pm »
Obrigada

Vou fazer um teste com as tabelas q vc me informou para ver o funcionamento.
« Última modificação: Agosto 30, 2013, 01:34:50 pm por acombat »

Maurélio

  • Avançado
  • ****
  • Mensagens: 304
  • O eterno Aprendiz.'.
    • Email
Re:Soma, Divisao, Diminuição e Multiplicação no scriptcase
« Responder #5 Online: Agosto 30, 2013, 02:30:39 pm »
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
Marco Aurélio