[firebase-br] Loop na SP
Carlos - GMail
krlosgilson em gmail.com
Qua Jul 4 19:15:02 -03 2012
Caro TurboCode, utilizo esta procedure que creio eu que seria
basicamente o vc está precisando, só fazer uns ajustes:
CREATE OR ALTER PROCEDURE SP_ESTOQUE_DIARIO (
idata date)
returns (
oproduto_id integer,
oproduto_nome varchar(70),
osaldo_ant integer,
oentradas integer,
osaidas integer,
osaldo_atual integer)
as
declare variable v_qtde integer;
declare variable v_data date;
begin
/* Retorna o estoque diario dos produtos */
for select -- faz o loop na tabela de produtos
P.ID,
P.DESCRICAO
from PRODUTOS P
into :oproduto_id, :oproduto_nome -- armeza os resultados do loop nos
outputs
do begin
select count(ID) from ESTOQUE where (id_produto = :oproduto_id) and
data =:v_data into :v_qtde; -- Como esta SP é de um Estoque Diário aqui
tenho outra tabela chamada "ESTOQUE" que gravas as qtdes do estoque dos
produtos diariamente, caso queira consultar o estoque de determinada data
if (v_qtde = 1) then -- Se existir o estoque daquele produto e
data, retorna os valores
select SALDO_ANTERIOR, ENTRADAS, SAIDAS, SALDO_ATUAL from
ESTOQUE where (id_produto =:oproduto_id) and data =:v_data into
:osaldo_ant, :oentradas, :osaidas, :osaldo_atual;
else begin -- Senão verifica o último estoque daquele determinado
produto
select count(ID) from ESTOQUE where (id_produto = :oproduto_id)
and data <:v_data into :v_qtde;
if (v_qtde >= 1) then
select SALDO_ATUAL from ESTOQUE where (id_produto =
:oproduto_id) and data = (select max(DATA) from ESTOQUE where
(id_produto = :oproduto_id) and data <:v_data) into :osaldo_ant;
else
osaldo_ant = 0;
oentradas = 0;
osaidas = 0;
end
osaldo_atual = :osaldo_ant + :oentradas - :osaidas;
suspend;
end
end
Em 04/07/2012 12:00, lista-request em firebase.com.br escreveu:
> Boa tarde...
>
> Estou desenvolvendo um controle de estoque em que através de um
> calculo...
> Na tela de saldo atual...
> mostra qtde do saldo atual...
> esse custo médio e o total (qtde*custo_medio).
>
> Só que, quando o usuario altera algum movimento do produto...
> deve-se calcular o custo médio a partir daquela data ate a data atual
> de toda a movimentacao dakele produto...
>
> pensei em montar uma SP para fazer isso... mas não sei como montar o
> loop...
>
> espero ter sido claro para entenderem
>
> Att,
>
> Rafael Voltani
> Firebird 2.5
> Delphi 2010
Mais detalhes sobre a lista de discussão lista