SET TERM ^ ;

CREATE OR ALTER procedure SPU_PRODUTO_CONSUMO1 (
    PRD1 integer,
    PRD2 integer,
    LIN1 integer,
    LIN2 integer,
    USUARIO integer,
    IP varchar(30),
    VERSAO varchar(20))
returns (
    MODELO_ID integer,
    PRODUTO_ID1 integer,
    PRODUTO_ID2 integer)
as
BEGIN
FOR Select A.CODIGO,
Coalesce((Select First 1 B.Consumo_produto_codigo from TbModelo_Consumo B
  Where B.Modelo_Codigo = A.Codigo and B.Consumo_produto_codigo = :Prd1),0),
Coalesce((Select First 1 B.Consumo_produto_codigo from TbModelo_Consumo B
  Where B.Modelo_Codigo = A.Codigo and B.Consumo_produto_codigo = :Prd2),0)
From TbModelo A
Where A.linha_codigo between :Lin1 and :Lin2 and A.Status = 1
Group By 1
having
Coalesce((Select First 1 B.Consumo_produto_codigo from TbModelo_Consumo B
  Where B.Modelo_Codigo = A.Codigo and B.Consumo_produto_codigo = :Prd1),0) > 0
and
Coalesce((Select First 1 B.Consumo_produto_codigo from TbModelo_Consumo B
  Where B.Modelo_Codigo = A.Codigo and B.Consumo_produto_codigo = :Prd2),0) = 0

INTO :Modelo_Id, :Produto_Id1, :Produto_Id2
DO
     if (:Modelo_Id > 0) then
          Begin
            UPDATE tbmodelo_consumo Set Consumo_produto_codigo = :Prd2
            Where Modelo_Codigo = :Modelo_Id and Consumo_produto_codigo = :Prd1;

            INSERT INTO TBHISTORICO (TABELA, TABELA_ID,USUARIO_CODIGO, IP, VERSAO, HISTORICO) VALUES (
            'TBMODELO',:Modelo_Id,:USUARIO,:IP,:VERSAO,'(Ficha 2) Prod.Cons.alterado: '||:prd1||'->'||:prd2);
          End
SUSPEND;
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPU_PRODUTO_CONSUMO2 (
    PRD1 integer,
    PRD2 integer,
    LIN1 integer,
    LIN2 integer,
    USUARIO integer,
    IP varchar(30),
    VERSAO varchar(20))
returns (
    MODELO_ID integer,
    PRODUTO_ID1 integer,
    PRODUTO_ID2 integer)
as
BEGIN
FOR Select A.CODIGO,
Coalesce((Select First 1 B.produto_id from TbModelo_Consumo_Cor B
  Where B.Modelo_id = A.Codigo and B.produto_id = :Prd1),0),
Coalesce((Select First 1 B.produto_id from TbModelo_Consumo_Cor B
  Where B.Modelo_id = A.Codigo and B.produto_id = :Prd2),0)
From TbModelo A
Where A.Linha_codigo between :Lin1 and :Lin2 and A.Status = 1
Group By 1
having
Coalesce((Select First 1 B.produto_id from TbModelo_Consumo_Cor B
  Where B.Modelo_id = A.Codigo and B.produto_id = :Prd1),0) > 0
and
Coalesce((Select First 1 B.produto_id from TbModelo_Consumo_Cor B
  Where B.Modelo_id = A.Codigo and B.produto_id = :Prd2),0) = 0

INTO :Modelo_Id, :Produto_Id1, :Produto_Id2
DO
     if (:Modelo_Id > 0) then
          Begin
            UPDATE tbmodelo_consumo_Cor Set produto_id = :Prd2
            Where Modelo_id = :Modelo_Id and produto_id = :Prd1;

            INSERT INTO TBHISTORICO (TABELA, TABELA_ID,USUARIO_CODIGO, IP, VERSAO, HISTORICO) VALUES (
            'TBMODELO',:Modelo_Id,:USUARIO,:IP,:VERSAO,'(Ficha 3) Prod.Cons.alterado: '||:prd1||'->'||:prd2);
          End

SUSPEND;
END
^

SET TERM ; ^

