ALTER TABLE TBMODELO_COR
    ADD IMPORTACAO_FRANQUEADOR INTEGER DEFAULT 0 NOT NULL;

COMMENT ON COLUMN TBMODELO_COR.IMPORTACAO_FRANQUEADOR IS
'INDICA SE O MODELO/COR E IMPORTADO DO FRANQUEADOR
0 - NAO;
1 - SIM;';


SET TERM ^ ;

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 DCOR2 VARCHAR(100);
DECLARE VARIABLE PRD INTEGER;

BEGIN
    IF(COALESCE(NEW.IMPORTACAO_FRANQUEADOR, 0) = 0) THEN
    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),
                (SELECT FIRST 1 UPPER(C.DESCRICAO_COMERCIAL) 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, :DCOR2, :PRD
        DO
        BEGIN
            IF (:PRD = 0) THEN
            BEGIN
                MASK = REPLACE(:MASK, '#FAMILIA_ID',                            FN_LPAD(COALESCE(:FAM_ALT, 0), 4, '0'));
                MASK = REPLACE(:MASK, '#FAMILIA_DESCRICAO',                     COALESCE(:DFAM, ''));
                MASK = REPLACE(:MASK, '#MODELO_ID',                             FN_LPAD(COALESCE(NEW.MODELO_ID, 0), 4, '0'));
                MASK = REPLACE(:MASK, '#MODELO_DESCRICAO',                      COALESCE(:DMOD, ''));
                MASK = REPLACE(:MASK, '#COR_ID',                                FN_LPAD(COALESCE(NEW.COR_ID, 0), 4, '0'));
                MASK = REPLACE(:MASK, '#COR_DESCRICAO',                         COALESCE(:DCOR, ''));
                MASK = REPLACE(:MASK, '#COR_DESCRICAO_COMERCIAL',               COALESCE(:DCOR2, ''));
    
                COD = (SELECT GEN_ID(GTBPRODUTO, 1) FROM RDB$DATABASE);
                
    			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
    			);
                
                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
END
^

SET TERM ; ^

