[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