CREATE OR ALTER trigger tbmodelo_cor_ai0_01 for tbmodelo_cor
active after insert position 0
AS
DECLARE VARIABLE Cod  Integer;
DECLARE VARIABLE Mask VarChar(200);
DECLARE VARIABLE UM   VarChar(10);
DECLARE VARIABLE Fam  Integer;
DECLARE VARIABLE Fam_Alt Integer;
DECLARE VARIABLE Grd  Integer;
DECLARE VARIABLE Loc  Integer;
DECLARE VARIABLE Tip  Integer;
DECLARE VARIABLE Ncm  VarChar(10);
DECLARE VARIABLE Lin  Integer;
DECLARE VARIABLE HCom Char(1);
DECLARE VARIABLE HVen Char(1);
DECLARE VARIABLE dMod VarChar(50);
DECLARE VARIABLE dFam VarChar(20);
DECLARE VARIABLE dCor VarChar(20);
DECLARE VARIABLE Prd  Integer;
Begin
For
Select M.tipoproduto_codigo, M.familia_codigo, m.familia_alternativa, M.linha_codigo, M.grade_codigo, F.localizacao_codigo,
       IIF(char_length(Coalesce(M.UNIDADEMEDIDA_SIGLA,''))>0,M.UNIDADEMEDIDA_SIGLA,F.UNIDADEMEDIDA_SIGLA),
       COALESCE(M.ncm_codigo, F.ncm_codigo), F.habilita_compra, F.habilita_venda, F.mascara_produto,
       M.Descricao, F.Descricao,
      (Select First 1 C.Descricao From TbCor C Where C.Codigo = New.Cor_Id),
       Coalesce((Select First 1 P.Codigo From TbProduto P
                  Where P.Modelo_Codigo = New.Modelo_Id
                    and P.Cor_Codigo = New.Cor_Id),0)
From TbModelo M, TbFamilia F
Where M.Codigo = New.Modelo_Id
  and M.Familia_Alternativa = F.Codigo

Into :Tip,:Fam,:Fam_Alt,:Lin,:Grd,:Loc,:UM,:Ncm,:HCom,:HVen,:Mask,:dMod, :dFam, :dCor, :Prd
Do
    begin
     if (:Prd = 0) then
          Begin
          MASK = Replace(:MASK,'#FAMILIA_ID',fn_lPad(:FAM_ALT,4,'0'));
          MASK = Replace(:MASK,'#FAMILIA_DESCRICAO',:DFAM);
          MASK = Replace(:MASK,'#MODELO_ID',fn_lPad(NEW.MODELO_ID,4,'0'));
          MASK = Replace(:MASK,'#MODELO_DESCRICAO',:DMOD);
          MASK = Replace(:MASK,'#COR_ID',fn_lPad(NEW.COR_ID,4,'0'));
          MASK = Replace(:MASK,'#COR_DESCRICAO',dCor);
          COD  = (Select GEN_ID(gtbproduto,1) FROM RDB$DATABASE);
    
    --      IF ( FN_CURRENT_USER_ID() <> 293 ) THEN
    --      BEGIN
              INSERT INTO TBPRODUTO (
              CODIGO,DESCRICAO,CODIGOANTIGO,UNIDADEMEDIDA_SIGLA,FAMILIA_CODIGO,FAMILIA_ALTERNATIVA,GRADE_CODIGO,
              LOCALIZACAO_CODIGO,TIPOPRODUTO_CODIGO,NCM_CODIGO,EAN,MODELO_CODIGO,COR_CODIGO,
              LINHA_CODIGO,STATUS,USUARIO_CODIGO,DATA,HABILITA_COMPRA,HABILITA_VENDA)
              VALUES (:COD,:MASK,0,:UM,:FAM,:FAM_ALT,:GRD,:LOC,:TIP,:NCM,'',
              NEW.MODELO_ID,NEW.COR_ID,:LIN,COALESCE(NEW.STATUS_PRODUTO,'1'),0,Current_Date,:HCOM,:HVEN);
    --      END
    
           INSERT INTO TBHISTORICO (
           TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES ('TBPRODUTO', :COD,
          (Select First 1 MON$USER from mon$attachments where mon$attachment_id = current_connection),
          (Select First 1 MON$REMOTE_ADDRESS from mon$attachments where mon$attachment_id = current_connection),
           'Produto incluido via inclusao de Modelo/Cor (Mod.'||NEW.MODELO_ID||'/Cor '||NEW.COR_ID||')');
    
           INSERT INTO TBHISTORICO (
           TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES ('TBMODELO', NEW.MODELO_ID,
          (Select First 1 MON$USER from mon$attachments where mon$attachment_id = current_connection),
          (Select First 1 MON$REMOTE_ADDRESS from mon$attachments where mon$attachment_id = current_connection),
           'Cor incluida: '||NEW.COR_ID||' - '||:dCor);
          End
      end
End;
