/************************************************************************************/
/************************************************************************************/
/** TBMODELO_CONSUMO_COR ************************************************************/

SET TERM ^ ;

CREATE OR ALTER trigger ttbmodelo_consumo_cor_b1iu_01 for tbmodelo_consumo_cor
active before insert or update position 2
AS
DECLARE VARIABLE MODELO_ID           INTEGER;
DECLARE VARIABLE COR_ID              INTEGER;
DECLARE VARIABLE PRODUTO_ID          INTEGER;
DECLARE VARIABLE TAM                 SMALLINT;
DECLARE VARIABLE SETOR_ID            INTEGER;
DECLARE VARIABLE QUANTIDADE          NUMERIC(15,8);
DECLARE VARIABLE OBSERVACAO          VARCHAR(100);
DECLARE VARIABLE FATOR_CONVERSAO     NUMERIC(15,8);
DECLARE VARIABLE PERCENTUAL_CONSUMO  INTEGER;
DECLARE VARIABLE NIVEL               INTEGER;
DECLARE VARIABLE MODELO_DESTINO      INTEGER;
DECLARE VARIABLE PRODUTO_DESTINO     INTEGER;
DECLARE VARIABLE TAM_DESTINO         INTEGER;
Begin
For

SELECT
B.MODELO_ID,
B.COR_ID,
B.PRODUTO_ID,
B.TAM,
B.SETOR_ID,
IIF(NEW.TAM= 1,B.T01,
IIF(NEW.TAM= 2,B.T02,
IIF(NEW.TAM= 3,B.T03,
IIF(NEW.TAM= 4,B.T04,
IIF(NEW.TAM= 5,B.T05,
IIF(NEW.TAM= 6,B.T06,
IIF(NEW.TAM= 7,B.T07,
IIF(NEW.TAM= 8,B.T08,
IIF(NEW.TAM= 9,B.T09,
IIF(NEW.TAM=10,B.T10,
IIF(NEW.TAM=11,B.T11,
IIF(NEW.TAM=12,B.T12,
IIF(NEW.TAM=13,B.T13,
IIF(NEW.TAM=14,B.T14,
IIF(NEW.TAM=15,B.T15,
IIF(NEW.TAM=16,B.T16,
IIF(NEW.TAM=17,B.T17,
IIF(NEW.TAM=18,B.T18,
IIF(NEW.TAM=19,B.T19,
IIF(NEW.TAM=20,B.T20,
               B.QUANTIDADE)))))))))))))))))))),
B.OBSERVACAO,
B.FATOR_CONVERSAO,
B.PERCENTUAL_CONSUMO,
B.NIVEL,
B.MODELO_DESTINO, B.PRODUTO_DESTINO, B.TAM_DESTINO
--DESCOBRIR AS MATERIEAS-PRIMAS DA MANTA (CACHARREL E ESPUMA)
FROM TBMODELO_CONSUMO_COR B,
--DESCOBRIR O MODELO E COR DA MATERIA-PRIMA MANTA
(Select First 1 P.Modelo_Codigo, P.Cor_Codigo From TbProduto P Where P.Codigo = NEW.PRODUTO_ID) P

WHERE B.MODELO_ID = P.MODELO_CODIGO
  AND B.COR_ID = P.COR_CODIGO

Into
:MODELO_ID,:COR_ID,:PRODUTO_ID,:TAM,:SETOR_ID,
:QUANTIDADE,:OBSERVACAO,:FATOR_CONVERSAO,
:PERCENTUAL_CONSUMO, :NIVEL,
:MODELO_DESTINO, :PRODUTO_DESTINO, :TAM_DESTINO
Do
begin

  if (:PRODUTO_ID > 0 AND NEW.FLAG = '1') then
      BEGIN
        update or insert into TBMODELO_CONSUMO_COR
       (MODELO_ID, COR_ID, PRODUTO_ID, TAM, SETOR_ID,
        T01, T02, T03, T04, T05, T06, T07, T08, T09, T10,
        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20,
        QUANTIDADE, OBSERVACAO, FATOR_CONVERSAO,
        VALOR_BASE,
        VB01,VB02,VB03,VB04,VB05,VB06,VB07,VB08,VB09,VB10,
        VB11,VB12,VB13,VB14,VB15,VB16,VB17,VB18,VB19,VB20,
        PERCENTUAL_CONSUMO, NIVEL,
        MODELO_ORIGEM, PRODUTO_ORIGEM, TAM_ORIGEM,
        MODELO_DESTINO, PRODUTO_DESTINO, TAM_DESTINO, FLAG, PECA_CONJUNTO)
        Values (NEW.MODELO_ID, NEW.COR_ID, :PRODUTO_ID, :TAM, :SETOR_ID,
-- CONVERSÃO ANTIGA
--                Cast(:QUANTIDADE*Cast((NEW.T01/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.T02/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.T03/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.T04/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.T05/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.T06/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.T07/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.T08/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.T09/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.T10/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.T11/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.T12/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.T13/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.T14/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.T15/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.T16/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.T17/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.T18/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.T19/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.T20/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.QUANTIDADE/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
-- CONVERSÃO NOVA
                FN_CALC_PRECISION_V2(:QUANTIDADE,(FN_CALC_PRECISION_V2(NEW.T01       ,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION_V2(:QUANTIDADE,(FN_CALC_PRECISION_V2(NEW.T02       ,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION_V2(:QUANTIDADE,(FN_CALC_PRECISION_V2(NEW.T03       ,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION_V2(:QUANTIDADE,(FN_CALC_PRECISION_V2(NEW.T04       ,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION_V2(:QUANTIDADE,(FN_CALC_PRECISION_V2(NEW.T05       ,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION_V2(:QUANTIDADE,(FN_CALC_PRECISION_V2(NEW.T06       ,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION_V2(:QUANTIDADE,(FN_CALC_PRECISION_V2(NEW.T07       ,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION_V2(:QUANTIDADE,(FN_CALC_PRECISION_V2(NEW.T08       ,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION_V2(:QUANTIDADE,(FN_CALC_PRECISION_V2(NEW.T09       ,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION_V2(:QUANTIDADE,(FN_CALC_PRECISION_V2(NEW.T10       ,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION_V2(:QUANTIDADE,(FN_CALC_PRECISION_V2(NEW.T11       ,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION_V2(:QUANTIDADE,(FN_CALC_PRECISION_V2(NEW.T12       ,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION_V2(:QUANTIDADE,(FN_CALC_PRECISION_V2(NEW.T13       ,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION_V2(:QUANTIDADE,(FN_CALC_PRECISION_V2(NEW.T14       ,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION_V2(:QUANTIDADE,(FN_CALC_PRECISION_V2(NEW.T15       ,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION_V2(:QUANTIDADE,(FN_CALC_PRECISION_V2(NEW.T16       ,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION_V2(:QUANTIDADE,(FN_CALC_PRECISION_V2(NEW.T17       ,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION_V2(:QUANTIDADE,(FN_CALC_PRECISION_V2(NEW.T18       ,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION_V2(:QUANTIDADE,(FN_CALC_PRECISION_V2(NEW.T19       ,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION_V2(:QUANTIDADE,(FN_CALC_PRECISION_V2(NEW.T20       ,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION_V2(:QUANTIDADE,(FN_CALC_PRECISION_V2(NEW.QUANTIDADE,NEW.FATOR_CONVERSAO,'/')),'*'),
                :OBSERVACAO,
                :FATOR_CONVERSAO,
--  CONVERSÃO ANTIGA
--                Cast((NEW.QUANTIDADE/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.T01/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.T02/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.T03/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.T04/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.T05/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.T06/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.T07/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.T08/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.T09/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.T10/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.T11/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.T12/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.T13/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.T14/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.T15/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.T16/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.T17/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.T18/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.T19/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.T20/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--  CONVERSÃO NOVA
                FN_CALC_PRECISION_V2(NEW.QUANTIDADE,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION_V2(NEW.T01        ,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION_V2(NEW.T02        ,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION_V2(NEW.T03        ,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION_V2(NEW.T04        ,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION_V2(NEW.T05        ,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION_V2(NEW.T06        ,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION_V2(NEW.T07        ,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION_V2(NEW.T08        ,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION_V2(NEW.T09        ,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION_V2(NEW.T10        ,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION_V2(NEW.T11        ,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION_V2(NEW.T12        ,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION_V2(NEW.T13        ,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION_V2(NEW.T14        ,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION_V2(NEW.T15        ,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION_V2(NEW.T16        ,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION_V2(NEW.T17        ,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION_V2(NEW.T18        ,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION_V2(NEW.T19        ,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION_V2(NEW.T20        ,NEW.FATOR_CONVERSAO,'/'),
                :PERCENTUAL_CONSUMO, :NIVEL+1,
                :MODELO_ID, NEW.PRODUTO_ID, NEW.TAM,

                IIF(:MODELO_DESTINO>0,:MODELO_DESTINO,:MODELO_ID),
                IIF(:PRODUTO_DESTINO>0,:PRODUTO_DESTINO,NEW.PRODUTO_ID),
                IIF(:PRODUTO_DESTINO>0,:TAM_DESTINO,NEW.TAM),
                '0',

                NEW.PECA_CONJUNTO)

        Matching (MODELO_ID, COR_ID, PRODUTO_ID, TAM, SETOR_ID, MODELO_ORIGEM,
        PRODUTO_ORIGEM, TAM_ORIGEM, MODELO_DESTINO, PRODUTO_DESTINO, TAM_DESTINO);
      END

end

End
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbmodelo_consumo_cor_b2iu_01 for tbmodelo_consumo_cor
active before insert or update position 3
AS
DECLARE VARIABLE MODELO_ID  INTEGER;
DECLARE VARIABLE PRODUTO_ID INTEGER;
DECLARE VARIABLE TAM        SMALLINT;
DECLARE VARIABLE SETOR_ID   INTEGER;
DECLARE VARIABLE QUANTIDADE          NUMERIC(15,8);
DECLARE VARIABLE OBSERVACAO          VARCHAR(100);
DECLARE VARIABLE FATOR_CONVERSAO     NUMERIC(15,8);
DECLARE VARIABLE PERCENTUAL_CONSUMO  INTEGER;
DECLARE VARIABLE NIVEL               INTEGER;
DECLARE VARIABLE MODELO_DESTINO      INTEGER;
DECLARE VARIABLE PRODUTO_DESTINO     INTEGER;
DECLARE VARIABLE TAM_DESTINO         INTEGER;
Begin
For

SELECT
B.MODELO_CODIGO,
B.CONSUMO_PRODUTO_CODIGO,
B.TAM,
B.SETOR_CODIGO,
IIF(NEW.TAM= 1,B.CONSUMO_QUANTIDADE_T01,
IIF(NEW.TAM= 2,B.CONSUMO_QUANTIDADE_T02,
IIF(NEW.TAM= 3,B.CONSUMO_QUANTIDADE_T03,
IIF(NEW.TAM= 4,B.CONSUMO_QUANTIDADE_T04,
IIF(NEW.TAM= 5,B.CONSUMO_QUANTIDADE_T05,
IIF(NEW.TAM= 6,B.CONSUMO_QUANTIDADE_T06,
IIF(NEW.TAM= 7,B.CONSUMO_QUANTIDADE_T07,
IIF(NEW.TAM= 8,B.CONSUMO_QUANTIDADE_T08,
IIF(NEW.TAM= 9,B.CONSUMO_QUANTIDADE_T09,
IIF(NEW.TAM=10,B.CONSUMO_QUANTIDADE_T10,
IIF(NEW.TAM=11,B.CONSUMO_QUANTIDADE_T11,
IIF(NEW.TAM=12,B.CONSUMO_QUANTIDADE_T12,
IIF(NEW.TAM=13,B.CONSUMO_QUANTIDADE_T13,
IIF(NEW.TAM=14,B.CONSUMO_QUANTIDADE_T14,
IIF(NEW.TAM=15,B.CONSUMO_QUANTIDADE_T15,
IIF(NEW.TAM=16,B.CONSUMO_QUANTIDADE_T16,
IIF(NEW.TAM=17,B.CONSUMO_QUANTIDADE_T17,
IIF(NEW.TAM=18,B.CONSUMO_QUANTIDADE_T18,
IIF(NEW.TAM=19,B.CONSUMO_QUANTIDADE_T19,
IIF(NEW.TAM=20,B.CONSUMO_QUANTIDADE_T20,
               B.CONSUMO_QUANTIDADE)))))))))))))))))))),
B.OBSERVACAO,B.FATOR_CONVERSAO,B.PERCENTUAL_CONSUMO,
B.NIVEL,B.MODELO_DESTINO, B.PRODUTO_DESTINO, B.TAM_DESTINO
--DESCOBRIR AS MATERIEAS-PRIMAS DA MANTA (CACHARREL E ESPUMA)
FROM TBMODELO_CONSUMO B,
--DESCOBRIR O MODELO E COR DA MATERIA-PRIMA MANTA
(Select First 1 P.Modelo_Codigo From TbProduto P Where P.Codigo = NEW.PRODUTO_ID) P

WHERE B.MODELO_CODIGO = P.MODELO_CODIGO

Into
:MODELO_ID,:PRODUTO_ID,:TAM,:SETOR_ID,
:QUANTIDADE,:OBSERVACAO,:FATOR_CONVERSAO,
:PERCENTUAL_CONSUMO,:NIVEL,
:MODELO_DESTINO, :PRODUTO_DESTINO, :TAM_DESTINO
Do
begin
  if (:PRODUTO_ID > 0 AND NEW.FLAG = '1') then
      BEGIN
        update or insert into TBMODELO_CONSUMO_COR
       (MODELO_ID, COR_ID, PRODUTO_ID, TAM, SETOR_ID,
        T01, T02, T03, T04, T05, T06, T07, T08, T09, T10,
        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20,
        QUANTIDADE, OBSERVACAO, FATOR_CONVERSAO,
        VALOR_BASE,
        VB01,VB02,VB03,VB04,VB05,VB06,VB07,VB08,VB09,VB10,
        VB11,VB12,VB13,VB14,VB15,VB16,VB17,VB18,VB19,VB20,
        PERCENTUAL_CONSUMO, NIVEL,
        MODELO_ORIGEM, PRODUTO_ORIGEM, TAM_ORIGEM,
        MODELO_DESTINO, PRODUTO_DESTINO, TAM_DESTINO, FLAG, PECA_CONJUNTO)
        values (NEW.MODELO_ID, NEW.COR_ID,
                 :PRODUTO_ID,
                 :TAM,
                 :SETOR_ID,
                FN_CALC_TRUNC(:QUANTIDADE,FN_CALC_TRUNC(NEW.T01,NEW.FATOR_CONVERSAO,'/',8),'*',8),
                FN_CALC_TRUNC(:QUANTIDADE,FN_CALC_TRUNC(NEW.T02,NEW.FATOR_CONVERSAO,'/',8),'*',8),
                FN_CALC_TRUNC(:QUANTIDADE,FN_CALC_TRUNC(NEW.T03,NEW.FATOR_CONVERSAO,'/',8),'*',8),
                FN_CALC_TRUNC(:QUANTIDADE,FN_CALC_TRUNC(NEW.T04,NEW.FATOR_CONVERSAO,'/',8),'*',8),
                FN_CALC_TRUNC(:QUANTIDADE,FN_CALC_TRUNC(NEW.T05,NEW.FATOR_CONVERSAO,'/',8),'*',8),
                FN_CALC_TRUNC(:QUANTIDADE,FN_CALC_TRUNC(NEW.T06,NEW.FATOR_CONVERSAO,'/',8),'*',8),
                FN_CALC_TRUNC(:QUANTIDADE,FN_CALC_TRUNC(NEW.T07,NEW.FATOR_CONVERSAO,'/',8),'*',8),
                FN_CALC_TRUNC(:QUANTIDADE,FN_CALC_TRUNC(NEW.T08,NEW.FATOR_CONVERSAO,'/',8),'*',8),
                FN_CALC_TRUNC(:QUANTIDADE,FN_CALC_TRUNC(NEW.T09,NEW.FATOR_CONVERSAO,'/',8),'*',8),
                FN_CALC_TRUNC(:QUANTIDADE,FN_CALC_TRUNC(NEW.T10,NEW.FATOR_CONVERSAO,'/',8),'*',8),
                FN_CALC_TRUNC(:QUANTIDADE,FN_CALC_TRUNC(NEW.T11,NEW.FATOR_CONVERSAO,'/',8),'*',8),
                FN_CALC_TRUNC(:QUANTIDADE,FN_CALC_TRUNC(NEW.T12,NEW.FATOR_CONVERSAO,'/',8),'*',8),
                FN_CALC_TRUNC(:QUANTIDADE,FN_CALC_TRUNC(NEW.T13,NEW.FATOR_CONVERSAO,'/',8),'*',8),
                FN_CALC_TRUNC(:QUANTIDADE,FN_CALC_TRUNC(NEW.T14,NEW.FATOR_CONVERSAO,'/',8),'*',8),
                FN_CALC_TRUNC(:QUANTIDADE,FN_CALC_TRUNC(NEW.T15,NEW.FATOR_CONVERSAO,'/',8),'*',8),
                FN_CALC_TRUNC(:QUANTIDADE,FN_CALC_TRUNC(NEW.T16,NEW.FATOR_CONVERSAO,'/',8),'*',8),
                FN_CALC_TRUNC(:QUANTIDADE,FN_CALC_TRUNC(NEW.T17,NEW.FATOR_CONVERSAO,'/',8),'*',8),
                FN_CALC_TRUNC(:QUANTIDADE,FN_CALC_TRUNC(NEW.T18,NEW.FATOR_CONVERSAO,'/',8),'*',8),
                FN_CALC_TRUNC(:QUANTIDADE,FN_CALC_TRUNC(NEW.T19,NEW.FATOR_CONVERSAO,'/',8),'*',8),
                FN_CALC_TRUNC(:QUANTIDADE,FN_CALC_TRUNC(NEW.T20,NEW.FATOR_CONVERSAO,'/',8),'*',8),
                FN_CALC_TRUNC(:QUANTIDADE,FN_CALC_TRUNC(NEW.QUANTIDADE,NEW.FATOR_CONVERSAO,'/',8),'*',8),
                :OBSERVACAO,
                :FATOR_CONVERSAO,
                FN_CALC_TRUNC(NEW.QUANTIDADE,NEW.FATOR_CONVERSAO,'/',8) ,
                FN_CALC_TRUNC(NEW.T01,NEW.FATOR_CONVERSAO,'/',8) ,
                FN_CALC_TRUNC(NEW.T02,NEW.FATOR_CONVERSAO,'/',8) ,
                FN_CALC_TRUNC(NEW.T03,NEW.FATOR_CONVERSAO,'/',8) ,
                FN_CALC_TRUNC(NEW.T04,NEW.FATOR_CONVERSAO,'/',8) ,
                FN_CALC_TRUNC(NEW.T05,NEW.FATOR_CONVERSAO,'/',8) ,
                FN_CALC_TRUNC(NEW.T06,NEW.FATOR_CONVERSAO,'/',8) ,
                FN_CALC_TRUNC(NEW.T07,NEW.FATOR_CONVERSAO,'/',8) ,
                FN_CALC_TRUNC(NEW.T08,NEW.FATOR_CONVERSAO,'/',8) ,
                FN_CALC_TRUNC(NEW.T09,NEW.FATOR_CONVERSAO,'/',8) ,
                FN_CALC_TRUNC(NEW.T10,NEW.FATOR_CONVERSAO,'/',8) ,
                FN_CALC_TRUNC(NEW.T11,NEW.FATOR_CONVERSAO,'/',8) ,
                FN_CALC_TRUNC(NEW.T12,NEW.FATOR_CONVERSAO,'/',8) ,
                FN_CALC_TRUNC(NEW.T13,NEW.FATOR_CONVERSAO,'/',8) ,
                FN_CALC_TRUNC(NEW.T14,NEW.FATOR_CONVERSAO,'/',8) ,
                FN_CALC_TRUNC(NEW.T15,NEW.FATOR_CONVERSAO,'/',8) ,
                FN_CALC_TRUNC(NEW.T16,NEW.FATOR_CONVERSAO,'/',8) ,
                FN_CALC_TRUNC(NEW.T17,NEW.FATOR_CONVERSAO,'/',8) ,
                FN_CALC_TRUNC(NEW.T18,NEW.FATOR_CONVERSAO,'/',8) ,
                FN_CALC_TRUNC(NEW.T19,NEW.FATOR_CONVERSAO,'/',8) ,
                FN_CALC_TRUNC(NEW.T20,NEW.FATOR_CONVERSAO,'/',8) ,
                :PERCENTUAL_CONSUMO,
                :NIVEL+1,
                :MODELO_ID,
                NEW.PRODUTO_ID,
                NEW.TAM,
                IIF(:MODELO_DESTINO>0,:MODELO_DESTINO,:MODELO_ID),
                IIF(:PRODUTO_DESTINO>0,:PRODUTO_DESTINO,NEW.PRODUTO_ID),
                IIF(:PRODUTO_DESTINO>0,:TAM_DESTINO,NEW.TAM),
                '0',
                NEW.PECA_CONJUNTO )

          Matching (MODELO_ID,
                    COR_ID,
                    PRODUTO_ID,
                    TAM,
                    SETOR_ID,
                    MODELO_ORIGEM,
                    PRODUTO_ORIGEM,
                    TAM_ORIGEM,
                    MODELO_DESTINO,
                    PRODUTO_DESTINO,
                    TAM_DESTINO);

      END

end

End
^

SET TERM ; ^

/************************************************************************************/
/************************************************************************************/
/** TBMODELO_CONSUMO ****************************************************************/

SET TERM ^ ;

CREATE OR ALTER trigger ttbmodelo_consumo_b1iu_01 for tbmodelo_consumo
active before insert or update position 2
AS
DECLARE VARIABLE MODELO_ID           INTEGER;
DECLARE VARIABLE PRODUTO_ID          INTEGER;
DECLARE VARIABLE TAM                 SMALLINT;
DECLARE VARIABLE SETOR_ID            INTEGER;
DECLARE VARIABLE QUANTIDADE          NUMERIC(15,8);
DECLARE VARIABLE OBSERVACAO          VARCHAR(50);
DECLARE VARIABLE FATOR_CONVERSAO     NUMERIC(15,8);
DECLARE VARIABLE PERCENTUAL_CONSUMO  INTEGER;
DECLARE VARIABLE NIVEL               INTEGER;
DECLARE VARIABLE MODELO_DESTINO      INTEGER;
DECLARE VARIABLE PRODUTO_DESTINO     INTEGER;
DECLARE VARIABLE TAM_DESTINO         INTEGER;
Begin
For

SELECT
B.MODELO_CODIGO,
B.CONSUMO_PRODUTO_CODIGO,
B.TAM,
B.SETOR_CODIGO,
IIF(NEW.TAM= 1,B.CONSUMO_QUANTIDADE_T01,
IIF(NEW.TAM= 2,B.CONSUMO_QUANTIDADE_T02,
IIF(NEW.TAM= 3,B.CONSUMO_QUANTIDADE_T03,
IIF(NEW.TAM= 4,B.CONSUMO_QUANTIDADE_T04,
IIF(NEW.TAM= 5,B.CONSUMO_QUANTIDADE_T05,
IIF(NEW.TAM= 6,B.CONSUMO_QUANTIDADE_T06,
IIF(NEW.TAM= 7,B.CONSUMO_QUANTIDADE_T07,
IIF(NEW.TAM= 8,B.CONSUMO_QUANTIDADE_T08,
IIF(NEW.TAM= 9,B.CONSUMO_QUANTIDADE_T09,
IIF(NEW.TAM=10,B.CONSUMO_QUANTIDADE_T10,
IIF(NEW.TAM=11,B.CONSUMO_QUANTIDADE_T11,
IIF(NEW.TAM=12,B.CONSUMO_QUANTIDADE_T12,
IIF(NEW.TAM=13,B.CONSUMO_QUANTIDADE_T13,
IIF(NEW.TAM=14,B.CONSUMO_QUANTIDADE_T14,
IIF(NEW.TAM=15,B.CONSUMO_QUANTIDADE_T15,
IIF(NEW.TAM=16,B.CONSUMO_QUANTIDADE_T16,
IIF(NEW.TAM=17,B.CONSUMO_QUANTIDADE_T17,
IIF(NEW.TAM=18,B.CONSUMO_QUANTIDADE_T18,
IIF(NEW.TAM=19,B.CONSUMO_QUANTIDADE_T19,
IIF(NEW.TAM=20,B.CONSUMO_QUANTIDADE_T20,
               B.CONSUMO_QUANTIDADE)))))))))))))))))))),
B.OBSERVACAO,B.FATOR_CONVERSAO,B.PERCENTUAL_CONSUMO,
B.NIVEL,B.MODELO_DESTINO, B.PRODUTO_DESTINO, B.TAM_DESTINO
--DESCOBRIR AS MATERIAS-PRIMAS DA MANTA (CACHARREL E ESPUMA)
FROM TBMODELO_CONSUMO B,
--DESCOBRIR O MODELO E COR DA MATERIA-PRIMA MANTA
(Select First 1 P.Modelo_Codigo From TbProduto P Where P.Codigo = NEW.CONSUMO_PRODUTO_CODIGO) P

WHERE B.MODELO_CODIGO = P.MODELO_CODIGO

Into
:MODELO_ID,:PRODUTO_ID,:TAM,:SETOR_ID,
:QUANTIDADE,:OBSERVACAO,:FATOR_CONVERSAO,
:PERCENTUAL_CONSUMO, :NIVEL,
:MODELO_DESTINO, :PRODUTO_DESTINO, :TAM_DESTINO
Do
Begin
      if (:PRODUTO_ID > 0 AND NEW.FLAG = '1') then
          BEGIN
            update or insert into TBMODELO_CONSUMO
           (MODELO_CODIGO, CONSUMO_PRODUTO_CODIGO, TAM, SETOR_CODIGO,
            CONSUMO_QUANTIDADE_T01, CONSUMO_QUANTIDADE_T02,
            CONSUMO_QUANTIDADE_T03, CONSUMO_QUANTIDADE_T04,
            CONSUMO_QUANTIDADE_T05, CONSUMO_QUANTIDADE_T06,
            CONSUMO_QUANTIDADE_T07, CONSUMO_QUANTIDADE_T08,
            CONSUMO_QUANTIDADE_T09, CONSUMO_QUANTIDADE_T10,
            CONSUMO_QUANTIDADE_T11, CONSUMO_QUANTIDADE_T12,
            CONSUMO_QUANTIDADE_T13, CONSUMO_QUANTIDADE_T14,
            CONSUMO_QUANTIDADE_T15, CONSUMO_QUANTIDADE_T16,
            CONSUMO_QUANTIDADE_T17, CONSUMO_QUANTIDADE_T18,
            CONSUMO_QUANTIDADE_T19, CONSUMO_QUANTIDADE_T20,
            CONSUMO_QUANTIDADE, OBSERVACAO, FATOR_CONVERSAO,
            VALOR_BASE,
            VB01,VB02,VB03,VB04,VB05,VB06,VB07,VB08,VB09,VB10,
            VB11,VB12,VB13,VB14,VB15,VB16,VB17,VB18,VB19,VB20,
            PERCENTUAL_CONSUMO, NIVEL,
            MODELO_ORIGEM, PRODUTO_ORIGEM,TAM_ORIGEM,
            MODELO_DESTINO,PRODUTO_DESTINO,TAM_DESTINO, FLAG, PECA_CONJUNTO)
            values (NEW.MODELO_CODIGO,
                    :PRODUTO_ID,
                    :TAM,
                    :SETOR_ID,
                    FN_CALC_PRECISION_V2(:QUANTIDADE, FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T01, NEW.FATOR_CONVERSAO, '/', 8), '*', 8),
                    FN_CALC_PRECISION_V2(:QUANTIDADE, FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T02, NEW.FATOR_CONVERSAO, '/', 8), '*', 8),
                    FN_CALC_PRECISION_V2(:QUANTIDADE, FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T03, NEW.FATOR_CONVERSAO, '/', 8), '*', 8),
                    FN_CALC_PRECISION_V2(:QUANTIDADE, FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T04, NEW.FATOR_CONVERSAO, '/', 8), '*', 8),
                    FN_CALC_PRECISION_V2(:QUANTIDADE, FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T05, NEW.FATOR_CONVERSAO, '/', 8), '*', 8),
                    FN_CALC_PRECISION_V2(:QUANTIDADE, FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T06, NEW.FATOR_CONVERSAO, '/', 8), '*', 8),
                    FN_CALC_PRECISION_V2(:QUANTIDADE, FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T07, NEW.FATOR_CONVERSAO, '/', 8), '*', 8),
                    FN_CALC_PRECISION_V2(:QUANTIDADE, FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T08, NEW.FATOR_CONVERSAO, '/', 8), '*', 8),
                    FN_CALC_PRECISION_V2(:QUANTIDADE, FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T09, NEW.FATOR_CONVERSAO, '/', 8), '*', 8),
                    FN_CALC_PRECISION_V2(:QUANTIDADE, FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T10, NEW.FATOR_CONVERSAO, '/', 8), '*', 8),
                    FN_CALC_PRECISION_V2(:QUANTIDADE, FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T11, NEW.FATOR_CONVERSAO, '/', 8), '*', 8),
                    FN_CALC_PRECISION_V2(:QUANTIDADE, FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T12, NEW.FATOR_CONVERSAO, '/', 8), '*', 8),
                    FN_CALC_PRECISION_V2(:QUANTIDADE, FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T13, NEW.FATOR_CONVERSAO, '/', 8), '*', 8),
                    FN_CALC_PRECISION_V2(:QUANTIDADE, FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T14, NEW.FATOR_CONVERSAO, '/', 8), '*', 8),
                    FN_CALC_PRECISION_V2(:QUANTIDADE, FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T15, NEW.FATOR_CONVERSAO, '/', 8), '*', 8),
                    FN_CALC_PRECISION_V2(:QUANTIDADE, FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T16, NEW.FATOR_CONVERSAO, '/', 8), '*', 8),
                    FN_CALC_PRECISION_V2(:QUANTIDADE, FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T17, NEW.FATOR_CONVERSAO, '/', 8), '*', 8),
                    FN_CALC_PRECISION_V2(:QUANTIDADE, FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T18, NEW.FATOR_CONVERSAO, '/', 8), '*', 8),
                    FN_CALC_PRECISION_V2(:QUANTIDADE, FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T19, NEW.FATOR_CONVERSAO, '/', 8), '*', 8),
                    FN_CALC_PRECISION_V2(:QUANTIDADE, FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T20, NEW.FATOR_CONVERSAO, '/', 8), '*', 8),
                    FN_CALC_PRECISION_V2(:QUANTIDADE, FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE, NEW.FATOR_CONVERSAO, '/', 8), '*', 8),
                    :OBSERVACAO,
                    :FATOR_CONVERSAO,
                    FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE, NEW.FATOR_CONVERSAO, '/', 8),
                    FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T01, NEW.FATOR_CONVERSAO, '/', 8),
                    FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T02, NEW.FATOR_CONVERSAO, '/', 8),
                    FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T03, NEW.FATOR_CONVERSAO, '/', 8),
                    FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T04, NEW.FATOR_CONVERSAO, '/', 8),
                    FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T05, NEW.FATOR_CONVERSAO, '/', 8),
                    FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T06, NEW.FATOR_CONVERSAO, '/', 8),
                    FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T07, NEW.FATOR_CONVERSAO, '/', 8),
                    FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T08, NEW.FATOR_CONVERSAO, '/', 8),
                    FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T09, NEW.FATOR_CONVERSAO, '/', 8),
                    FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T10, NEW.FATOR_CONVERSAO, '/', 8),
                    FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T11, NEW.FATOR_CONVERSAO, '/', 8),
                    FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T12, NEW.FATOR_CONVERSAO, '/', 8),
                    FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T13, NEW.FATOR_CONVERSAO, '/', 8),
                    FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T14, NEW.FATOR_CONVERSAO, '/', 8),
                    FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T15, NEW.FATOR_CONVERSAO, '/', 8),
                    FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T16, NEW.FATOR_CONVERSAO, '/', 8),
                    FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T17, NEW.FATOR_CONVERSAO, '/', 8),
                    FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T18, NEW.FATOR_CONVERSAO, '/', 8),
                    FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T19, NEW.FATOR_CONVERSAO, '/', 8),
                    FN_CALC_PRECISION_V2(NEW.CONSUMO_QUANTIDADE_T20, NEW.FATOR_CONVERSAO, '/', 8),
                    :PERCENTUAL_CONSUMO,
                    :NIVEL+1,
                    :MODELO_ID,
                    NEW.CONSUMO_PRODUTO_CODIGO,
                    NEW.TAM,
                    IIF(:MODELO_DESTINO>0,:MODELO_DESTINO,:MODELO_ID),
                    IIF(:PRODUTO_DESTINO>0,:PRODUTO_DESTINO,NEW.CONSUMO_PRODUTO_CODIGO),
                    IIF(:PRODUTO_DESTINO>0,:TAM_DESTINO,NEW.TAM),
                    '0',
                    NEW.PECA_CONJUNTO )
          Matching (MODELO_CODIGO,
                    CONSUMO_PRODUTO_CODIGO,
                    TAM,
                    SETOR_CODIGO,
                    MODELO_ORIGEM,
                    PRODUTO_ORIGEM,
                    TAM_ORIGEM,
                    MODELO_DESTINO,
                    PRODUTO_DESTINO,
                    TAM_DESTINO);
          END
end

End
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbmodelo_consumo_b2iu_01 for tbmodelo_consumo
active before insert or update position 3
AS
DECLARE VARIABLE MODELO_ID           INTEGER;
DECLARE VARIABLE COR_ID              INTEGER;
DECLARE VARIABLE PRODUTO_ID          INTEGER;
DECLARE VARIABLE TAM                 SMALLINT;
DECLARE VARIABLE SETOR_ID            INTEGER;
DECLARE VARIABLE QUANTIDADE          NUMERIC(15,8);
DECLARE VARIABLE OBSERVACAO          VARCHAR(100);
DECLARE VARIABLE FATOR_CONVERSAO     NUMERIC(15,8);
DECLARE VARIABLE PERCENTUAL_CONSUMO  INTEGER;
DECLARE VARIABLE NIVEL               INTEGER;
DECLARE VARIABLE MODELO_DESTINO      INTEGER;
DECLARE VARIABLE PRODUTO_DESTINO     INTEGER;
DECLARE VARIABLE TAM_DESTINO         INTEGER;
Begin
For

SELECT
B.MODELO_ID,
B.COR_ID,
B.PRODUTO_ID,
B.TAM,
B.SETOR_ID,
IIF(NEW.TAM= 1,B.T01,
IIF(NEW.TAM= 2,B.T02,
IIF(NEW.TAM= 3,B.T03,
IIF(NEW.TAM= 4,B.T04,
IIF(NEW.TAM= 5,B.T05,
IIF(NEW.TAM= 6,B.T06,
IIF(NEW.TAM= 7,B.T07,
IIF(NEW.TAM= 8,B.T08,
IIF(NEW.TAM= 9,B.T09,
IIF(NEW.TAM=10,B.T10,
IIF(NEW.TAM=11,B.T11,
IIF(NEW.TAM=12,B.T12,
IIF(NEW.TAM=13,B.T13,
IIF(NEW.TAM=14,B.T14,
IIF(NEW.TAM=15,B.T15,
IIF(NEW.TAM=16,B.T16,
IIF(NEW.TAM=17,B.T17,
IIF(NEW.TAM=18,B.T18,
IIF(NEW.TAM=19,B.T19,
IIF(NEW.TAM=20,B.T20,
               B.QUANTIDADE)))))))))))))))))))),
B.OBSERVACAO,
B.FATOR_CONVERSAO,
B.PERCENTUAL_CONSUMO,
B.NIVEL,
B.MODELO_DESTINO, B.PRODUTO_DESTINO, B.TAM_DESTINO
--DESCOBRIR AS MATERIEAS-PRIMAS DA MANTA (CACHARREL E ESPUMA)
FROM TBMODELO_CONSUMO_COR B,
--DESCOBRIR O MODELO E COR DA MATERIA-PRIMA MANTA
(Select First 1 P.Modelo_Codigo, P.Cor_Codigo From TbProduto P Where P.Codigo = NEW.CONSUMO_PRODUTO_CODIGO) P

WHERE B.MODELO_ID = P.MODELO_CODIGO
  AND B.COR_ID = P.COR_CODIGO

Into
:MODELO_ID,:COR_ID,:PRODUTO_ID,:TAM,:SETOR_ID,
:QUANTIDADE,:OBSERVACAO,:FATOR_CONVERSAO,
:PERCENTUAL_CONSUMO, :NIVEL,
:MODELO_DESTINO, :PRODUTO_DESTINO, :TAM_DESTINO
Do
begin

    If(:PRODUTO_ID > 0 AND NEW.FLAG = '1') then
        BEGIN

        Update or Insert into TBMODELO_CONSUMO
       (MODELO_CODIGO, CONSUMO_PRODUTO_CODIGO, TAM, SETOR_CODIGO,
        CONSUMO_QUANTIDADE_T01, CONSUMO_QUANTIDADE_T02,
        CONSUMO_QUANTIDADE_T03, CONSUMO_QUANTIDADE_T04,
        CONSUMO_QUANTIDADE_T05, CONSUMO_QUANTIDADE_T06,
        CONSUMO_QUANTIDADE_T07, CONSUMO_QUANTIDADE_T08,
        CONSUMO_QUANTIDADE_T09, CONSUMO_QUANTIDADE_T10,
        CONSUMO_QUANTIDADE_T11, CONSUMO_QUANTIDADE_T12,
        CONSUMO_QUANTIDADE_T13, CONSUMO_QUANTIDADE_T14,
        CONSUMO_QUANTIDADE_T15, CONSUMO_QUANTIDADE_T16,
        CONSUMO_QUANTIDADE_T17, CONSUMO_QUANTIDADE_T18,
        CONSUMO_QUANTIDADE_T19, CONSUMO_QUANTIDADE_T20,
        CONSUMO_QUANTIDADE, OBSERVACAO, FATOR_CONVERSAO,
        VALOR_BASE,
        VB01,VB02,VB03,VB04,VB05,VB06,VB07,VB08,VB09,VB10,
        VB11,VB12,VB13,VB14,VB15,VB16,VB17,VB18,VB19,VB20,
        PERCENTUAL_CONSUMO, NIVEL,
        MODELO_ORIGEM, PRODUTO_ORIGEM, TAM_ORIGEM,
        MODELO_DESTINO, PRODUTO_DESTINO, TAM_DESTINO, FLAG, PECA_CONJUNTO)
        Values (NEW.MODELO_CODIGO, :PRODUTO_ID, :TAM, :SETOR_ID,
-- CONVERSÃO ANTIGA
--                Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T01/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T02/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T03/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T04/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T05/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T06/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T07/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T08/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T09/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T10/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T11/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T12/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T13/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T14/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T15/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T16/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T17/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T18/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T19/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T20/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
--                Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
-- CONVERSÃO NOVA
                FN_CALC_PRECISION(:QUANTIDADE,(FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T01,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION(:QUANTIDADE,(FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T02,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION(:QUANTIDADE,(FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T03,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION(:QUANTIDADE,(FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T04,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION(:QUANTIDADE,(FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T05,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION(:QUANTIDADE,(FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T06,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION(:QUANTIDADE,(FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T07,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION(:QUANTIDADE,(FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T08,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION(:QUANTIDADE,(FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T09,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION(:QUANTIDADE,(FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T10,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION(:QUANTIDADE,(FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T11,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION(:QUANTIDADE,(FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T12,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION(:QUANTIDADE,(FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T13,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION(:QUANTIDADE,(FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T14,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION(:QUANTIDADE,(FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T15,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION(:QUANTIDADE,(FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T16,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION(:QUANTIDADE,(FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T17,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION(:QUANTIDADE,(FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T18,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION(:QUANTIDADE,(FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T19,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION(:QUANTIDADE,(FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T20,NEW.FATOR_CONVERSAO,'/')),'*'),
                FN_CALC_PRECISION(:QUANTIDADE,(FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE    ,NEW.FATOR_CONVERSAO,'/')),'*'),
                :OBSERVACAO,
                :FATOR_CONVERSAO,
-- CONVERSÃO ANTIGA
--                Cast((NEW.CONSUMO_QUANTIDADE/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.CONSUMO_QUANTIDADE_T01/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.CONSUMO_QUANTIDADE_T02/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.CONSUMO_QUANTIDADE_T03/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.CONSUMO_QUANTIDADE_T04/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.CONSUMO_QUANTIDADE_T05/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.CONSUMO_QUANTIDADE_T06/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.CONSUMO_QUANTIDADE_T07/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.CONSUMO_QUANTIDADE_T08/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.CONSUMO_QUANTIDADE_T09/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.CONSUMO_QUANTIDADE_T10/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.CONSUMO_QUANTIDADE_T11/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.CONSUMO_QUANTIDADE_T12/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.CONSUMO_QUANTIDADE_T13/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.CONSUMO_QUANTIDADE_T14/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.CONSUMO_QUANTIDADE_T15/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.CONSUMO_QUANTIDADE_T16/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.CONSUMO_QUANTIDADE_T17/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.CONSUMO_QUANTIDADE_T18/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.CONSUMO_QUANTIDADE_T19/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
--                Cast((NEW.CONSUMO_QUANTIDADE_T20/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
-- CONVERSÃO NOVA
                FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE    ,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T01,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T02,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T03,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T04,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T05,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T06,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T07,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T08,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T09,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T10,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T11,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T12,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T13,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T14,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T15,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T16,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T17,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T18,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T19,NEW.FATOR_CONVERSAO,'/'),
                FN_CALC_PRECISION(NEW.CONSUMO_QUANTIDADE_T20,NEW.FATOR_CONVERSAO,'/'),
                :PERCENTUAL_CONSUMO, :NIVEL+1,
                :MODELO_ID, NEW.CONSUMO_PRODUTO_CODIGO, NEW.TAM,

                IIF(:MODELO_DESTINO>0,:MODELO_DESTINO,:MODELO_ID),
                IIF(:PRODUTO_DESTINO>0,:PRODUTO_DESTINO,NEW.CONSUMO_PRODUTO_CODIGO),
                IIF(:PRODUTO_DESTINO>0,:TAM_DESTINO,NEW.TAM),
                '0',
                NEW.PECA_CONJUNTO )

         Matching (MODELO_CODIGO, CONSUMO_PRODUTO_CODIGO, TAM, SETOR_CODIGO,
                   MODELO_ORIGEM, PRODUTO_ORIGEM, TAM_ORIGEM, MODELO_DESTINO,
                   PRODUTO_DESTINO, TAM_DESTINO);
       END

end

End
^

SET TERM ; ^

