[firebase-br] WHILE EM SP
Anderson Miranda Barrozo
andersonpaduarj em gmail.com
Seg Set 8 20:34:10 -03 2008
Valeu Pedro Brago. Show de bola. Não sou nenhum expert mas fique a
disposição quando precisar. Meu MSN é andersonpaduarj em hotmail.com. Se quiser
adcionar para trocarmos
alguma idéia !
Obrigado mesmo.
Anderson
2008/9/8 Pedro Braga <bragaped em gmail.com>
> 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
> >
> ______________________________________________
> 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
>
--
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AS Informática
Anderson Miranda Barrozo
(22) 8115-8761
MSN: andersonpaduarj em hotmail.com
Mais detalhes sobre a lista de discussão lista