CREATE OR ALTER trigger ttbmodelo_linha_b9u for tbmodelo_linha
active before update position 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);

DECLARE VARIABLE DESCRICAO_REFERENCIA_ANTIGA VARCHAR(500);
DECLARE VARIABLE DESCRICAO_REFERENCIA_NOVA VARCHAR(500);
begin

   HISTORICO = '';

   if (OLD.DESCRICAO <> NEW.DESCRICAO) then
       BEGIN
       HISTORICO = HISTORICO||' Desc. '||OLD.DESCRICAO||' -> '||NEW.DESCRICAO;
       END
   if (OLD.MAGENTO_ID <> NEW.MAGENTO_ID) then
       BEGIN
       HISTORICO = HISTORICO||' Id e-comerce '||OLD.MAGENTO_ID||' -> '||NEW.MAGENTO_ID;
       END

   IF (OLD.FAMILIA_ALTERNATIVA IS DISTINCT FROM NEW.FAMILIA_ALTERNATIVA) THEN
       BEGIN
       HISTORICO = HISTORICO||' FAM.COM: '||COALESCE(OLD.FAMILIA_ALTERNATIVA, 0)||' -> '||COALESCE(NEW.FAMILIA_ALTERNATIVA, 0);
       END

   if (OLD.FAMILIA_CODIGO <> NEW.FAMILIA_CODIGO) then
       BEGIN
       HISTORICO = HISTORICO||' FAM.PROD: '||OLD.FAMILIA_CODIGO||' -> '||NEW.FAMILIA_CODIGO;
       END
--   if (OLD.TIPOPRODUTO_CODIGO <> NEW.TIPOPRODUTO_CODIGO) then
--       BEGIN
--       HISTORICO = HISTORICO||' Tip. '||OLD.TIPOPRODUTO_CODIGO||'->'||NEW.TIPOPRODUTO_CODIGO;
--       END
   if (OLD.GRADE_CODIGO <> NEW.GRADE_CODIGO) then
       BEGIN
       HISTORICO = HISTORICO||' Grd. '||OLD.GRADE_CODIGO||' -> '||NEW.GRADE_CODIGO;
       END
   if (OLD.PRAZO_PRODUCAO <> NEW.PRAZO_PRODUCAO) then
       BEGIN
       HISTORICO = HISTORICO||' Pzo. '||OLD.PRAZO_PRODUCAO||' -> '||NEW.PRAZO_PRODUCAO;
       END
   if (OLD.PECAS_CONJUNTO <> NEW.PECAS_CONJUNTO) then
       BEGIN
       HISTORICO = HISTORICO||' Peças Conj. '||OLD.PECAS_CONJUNTO||' -> '||NEW.PECAS_CONJUNTO;
       END
   if (OLD.REFERENCIA_ID <> NEW.REFERENCIA_ID) then
       BEGIN
       HISTORICO = HISTORICO||' Ref. '||OLD.referencia_id||' -> '||NEW.referencia_id;
       END
   if (OLD.OBSERVACAO <> NEW.OBSERVACAO) then
       BEGIN
       HISTORICO = HISTORICO||' Obs. '||OLD.OBSERVACAO||' -> '||NEW.OBSERVACAO;
       END

   IF(OLD.MD_DATA IS NULL AND NEW.MD_DATA IS NOT NULL) THEN
    BEGIN
        HISTORICO = HISTORICO||' Data Lanc. '||''||' -> '||FN_DATE(NEW.MD_DATA, 'DD/MM/YYYY');
    END

   IF(NEW.MD_DATA IS NULL AND OLD.MD_DATA IS NOT NULL) THEN
    BEGIN
        HISTORICO = HISTORICO||' Data Lanc. '||FN_DATE(OLD.MD_DATA, 'DD/MM/YYYY')||' -> '||'';
    END

   IF(NEW.MD_DATA IS NOT NULL AND OLD.MD_DATA IS NOT NULL AND NEW.MD_DATA <> OLD.MD_DATA) THEN
    BEGIN
        HISTORICO = HISTORICO||' Data Lanc. '||FN_DATE(OLD.MD_DATA, 'DD/MM/YYYY')||' -> '||FN_DATE(NEW.MD_DATA, 'DD/MM/YYYY');
    END
   if (OLD.MD <> NEW.MD) then
       BEGIN
       HISTORICO = HISTORICO||' MD. '||OLD.MD||' -> '||NEW.MD;
       END

   if (OLD.STATUS <> NEW.STATUS) then
       BEGIN
       if (NEW.STATUS = '0') then
           begin
           HISTORICO = HISTORICO||' Status Inativado';
           new.data_inativacao = CURRENT_DATE;
           end
       if (NEW.STATUS = '1') then
           begin
           HISTORICO = HISTORICO||' Status Ativado';
           new.data_ativacao = CURRENT_DATE;
           end
       END


   if (HISTORICO <> '') Then
       Begin
       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
      'TBLINHA', OLD.CODIGO,
      (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),
       :Historico);
       EXECUTE PROCEDURE SPI_HISTORICO('TBMODELO_LINHA', NEW.CODIGO, HISTORICO);
       End
End;

