Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SET TERM ^ ;
- CREATE OR ALTER PROCEDURE PEPS_SAIDA (
- CODVENDA INTEGER,
- ITEM INTEGER,
- PRO_CODIGO INTEGER,
- QTDE_A_BAIXAR NUMERICO_15_4)
- AS
- DECLARE variable QTDE_BAIXA NUMERICO_15_4;
- DECLARE variable QTDE NUMERICO_15_4;
- DECLARE variable CUSTO NUMERICO_15_4;
- DECLARE variable ID_PEPS INTEGER;
- DECLARE variable VALIDA_QTDE CHAR(1);
- BEGIN
- qtde_baixa = :qtde_a_baixar;
- while (qtde_baixa >0) do
- BEGIN
- qtde = 0;
- custo = 0;
- id_peps = 0;
- IF (EXISTS(SELECT saldo_qtde_movi, saldo_valor,id_peps FROM prod_estoque_peps
- WHERE saldo_qtde_movi > 0 AND pro_codigo =:pro_codigo)) THEN
- BEGIN
- valida_qtde = 'S';
- SELECT FIRST 1 saldo_qtde_movi, saldo_valor,id_peps FROM prod_estoque_peps
- WHERE saldo_qtde_movi > 0 AND pro_codigo =:pro_codigo
- ORDER BY DATA INTO :qtde, :custo, :id_peps;
- END ELSE IF (EXISTS( SELECT FIRST 1 saldo_qtde_movi, saldo_valor,id_peps
- FROM prod_estoque_peps
- WHERE entrada_valor > 0 AND pro_codigo =:pro_codigo)) THEN
- BEGIN
- valida_qtde = 'N';
- SELECT FIRST 1 saldo_qtde_movi, saldo_valor,id_peps
- FROM prod_estoque_peps
- WHERE entrada_valor > 0 AND pro_codigo =:pro_codigo
- ORDER BY id_peps DESC INTO :qtde, :custo, :id_peps;
- END ELSE
- BEGIN
- valida_qtde = 'N';
- SELECT FIRST 1 saldo_qtde_movi, saldo_valor,id_peps
- FROM prod_estoque_peps
- WHERE saldo_valor > 0 AND pro_codigo =:pro_codigo AND id_peps_movi IS NULL
- ORDER BY id_peps DESC INTO :qtde, :custo, :id_peps;
- END
- IF ((:qtde < qtde_baixa) AND (valida_qtde = 'S')) THEN
- BEGIN
- INSERT INTO prod_estoque_peps (
- id_peps,
- codvenda,
- codvenda_item,
- pro_codigo,
- DATA,
- saida_qtde,
- saida_valor,
- saida_total,
- id_peps_movi,
- saldo_qtde,
- saldo_valor,
- saldo_total)
- VALUES (
- gen_id(gen_id_peps,1),
- :codvenda,
- :item,
- :pro_codigo,
- CURRENT_DATE,
- :qtde,
- :custo,
- CAST(:qtde * :custo AS NUMERIC(15,2)),
- :id_peps,
- 0,
- :custo,
- 0
- );
- UPDATE prod_estoque_peps SET saldo_qtde_movi= saldo_qtde_movi-:qtde
- WHERE id_peps=:id_peps;
- qtde_baixa = :qtde_baixa - :qtde;
- END ELSE
- BEGIN
- INSERT INTO prod_estoque_peps (
- id_peps,
- pro_codigo,
- codvenda,
- codvenda_item,
- DATA,
- saida_qtde,
- saida_valor,
- saida_total,
- saldo_qtde,
- saldo_valor,
- saldo_total,
- id_peps_movi)
- VALUES (
- gen_id(gen_id_peps,1),
- :pro_codigo,
- :codvenda,
- :item,
- CURRENT_DATE,
- :qtde_baixa,
- :custo,
- CAST(:qtde_baixa * :custo AS NUMERIC(15,2)),
- :qtde - :qtde_baixa,
- :custo,
- CAST((:qtde - :qtde_baixa) * :custo AS NUMERIC(15,2)),
- :id_peps
- );
- /* if (valida_qtde = 'S') then*/
- UPDATE prod_estoque_peps SET
- saldo_qtde_movi= saldo_qtde_movi-:qtde_baixa
- WHERE id_peps=:id_peps;
- qtde_baixa = 0;
- END
- END
- END^
- SET TERM ; ^
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement