[firebase-br] WHILE EM SP
Pedro Braga
bragaped em gmail.com
Seg Set 8 20:26:19 -03 2008
abaixo a estrutura que uso para esse tipo de situação.
SET TERM ^ ;
CREATE PROCEDURE FATURAR (
pedcod integer,
usecod integer,
troco double precision)
as
declare variable codped integer;
declare variable procod integer;
declare variable qtdeitem float;
declare variable procodcomp integer;
declare variable qtdeitemcomp float;
declare variable numcaixa integer;
declare variable atucaixa integer;
declare variable codmesa integer;
declare variable valdin float;
declare variable valche float;
declare variable valcart float;
declare variable obs varchar(20);
begin
begin
--Selecionar os itens do pedido
for select item_pedido.Ped_Cod, item_pedido.pro_cod,
item_pedido.itped_qtdtotal
from item_pedido
where item_pedido.ped_cod = :pedcod
into :codped, :procod, :qtdeitem
do
begin
--atualizar estoque qundo produto for diferente de composto
update produto set produto.pro_qtd = (produto.pro_qtd - :qtdeitem)
where produto.pro_cod = :procod and produto.pro_tip <> 'C';
--atualizar estoque quando produto for composto
begin
for select composicao.comp_pro_cod, composicao.comp_qtd
from composicao
where composicao.pro_cod = :procod
into :procodcomp, :qtdeitemcomp
do
update produto set produto.pro_qtd =
(produto.pro_qtd - (:qtdeitemcomp * :qtdeitem))
where produto.pro_cod = :procodcomp;
end
end
end
begin
--Atualizar Valores em Caixa com os valores do pedido
select pedido.pgt_din, pedido.pgt_che, pedido.pgt_cart, pedido.cai_num,
pedido.mesa_cod
from pedido
where pedido.ped_cod = :pedcod
into :valdin, :valche, :valcart, :numcaixa, :codmesa;
update pedido set pedido.ped_valtotal = ((:valdin + :valche + :valcart) -
:troco)
where pedido.ped_cod = :pedcod;
--Verificação do caixa
select caixa.cai_num
from caixa
where caixa.cai_datafch is null
into :atucaixa;
if (atucaixa <> numcaixa) then
begin
numcaixa = :atucaixa;
end
--inserir valores no caixa
if (:valdin > 0) then
begin
OBS = 'PEDIDO: '||:pedcod;
insert into movimentacao_caixa(CAI_NUM, USE_COD, MOV_TIP, MOV_TIP_VAL,
MOV_VAL, MOV_MOT)
values(:numcaixa,
:usecod,'E','DIN',:valdin,:OBS);
end
if (:valche > 0) then
begin
OBS = 'PEDIDO: '||:pedcod;
insert into movimentacao_caixa(CAI_NUM, USE_COD, MOV_TIP, MOV_TIP_VAL,
MOV_VAL, MOV_MOT)
values(:numcaixa,
:usecod,'E','CHE',:valche,:OBS);
end
if (:valcart > 0) then
begin
OBS = 'PEDIDO: '||:pedcod;
insert into movimentacao_caixa(CAI_NUM, USE_COD, MOV_TIP, MOV_TIP_VAL,
MOV_VAL, MOV_MOT)
values(:numcaixa,
:usecod,'E','CAR',:valcart,:OBS);
end
if (:troco > 0) then
begin
OBS = 'TROCO PEDIDO: '||:pedcod;
insert into movimentacao_caixa(CAI_NUM, USE_COD, MOV_TIP, MOV_TIP_VAL,
MOV_VAL, MOV_MOT)
values(:numcaixa, :usecod,'T','DIN',:troco,:OBS);
end
end
--MARCAR PEDIDO COMO FATURADO
begin
update pedido set pedido.ped_sit = 'F'
where pedido.ped_cod = :codped and pedido.ped_sit = 'A';
end
--LIBERAR MESAS DO PEDIDO
begin
/*--Selecionar as Mesas Agrupadas
for select junta_mesa.mesa_fil
from junta_mesa
where junta_mesa.mesa_cod = :codmesa
into :codjuntamesa
do
begin
--atualizar mesas Agrupadas Mesas Filho
update mesa set mesa.mesa_sit = 'D'
where mesa.mesa_cod = :codjuntamesa;
end */
delete from junta_mesa where junta_mesa.mesa_cod = :codmesa;
--mesa Pai
update mesa set mesa.mesa_sit = 'D'
where mesa.mesa_cod = :codmesa;
end
END^
SET TERM ; ^
2008/9/8 Anderson Miranda Barrozo <andersonpaduarj em gmail.com>
> Galera,
>
> Criei uma SP para atualizar o STATUS do pedido para C de Cancelado. So
> que esta mesma SP precisa ir na tabela de item
> do pedido e estornar todos os lançamento para estoque (TABELA PRODUTO).
>
> Como montaria a SP para ler todos os ítens de um determinado pedido.
>
> --
>
> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> AS Informática
> Anderson Miranda Barrozo
> (22) 8115-8761
> MSN: andersonpaduarj em hotmail.com
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista