CREATE TABLE TBPRODUTO_LACLOFIT (
    ID INTEGER NOT NULL,
    PRODUTO_ID INTEGER,
    SKU VARCHAR(50),
    ID_INTEGRACAO INTEGER);

ALTER TABLE TBPRODUTO_LACLOFIT
ADD CONSTRAINT PK_TBPRODUTO_LACLOFIT
PRIMARY KEY (ID);

CREATE SEQUENCE GTBPRODUTO_LACLOFIT;

create trigger ttbproduto_laclofit_b01i for tbproduto_laclofit
active before insert position 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gtbproduto_laclofit,1);
end;

ALTER TABLE TBINTEGRACAO_LACLOFIT
    ADD API_KEY VARCHAR(300);

ALTER TABLE TBMODELO ADD DESCRICAO_COMERCIAL VARCHAR(100);
ALTER TABLE TBCOR ADD DESCRICAO_COMERCIAL VARCHAR(100);

ALTER TABLE TBMODELO
    ADD HABILITA_ECOMMERCE INTEGER DEFAULT 0;

CREATE TABLE TBCATEGORIA_LACLOFIT (
    ID INTEGER NOT NULL,
    DESCRICAO VARCHAR(100),
    ID_ECOMMERCE INTEGER);

ALTER TABLE TBCATEGORIA_LACLOFIT
ADD CONSTRAINT PK_TBCATEGORIA_LACLOFIT
PRIMARY KEY (ID);

CREATE SEQUENCE GTBCATEGORIA_LACLOFIT;

create trigger ttbcategoria_laclofit_b01i for tbcategoria_laclofit
active before insert position 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gtbcategoria_laclofit,1);
end;

ALTER TABLE TBPRODUTO
    ADD CATEGORIA_ID INTEGER;

CREATE OR ALTER trigger ttbestoque_saldo_999 for tbestoque_saldo
active before insert or update or delete position 999
AS
declare variable produto integer;
begin

  update tbreplica_tabela set Status = '0'
  Where tabela = 'TBESTOQUE_SALDO'
    and Status = '1';

  update tbreplica_tabela set Status = '0'
  Where tabela = 'TBREPOSICAO_CONSUMO'
    and Status = '1';

  --se vende no ecommerce
  produto = coalesce((select first 1 k.produto_id from SPC_SKUS_ECOMMERCE2(0,new.produto_codigo) k),0);
  if(produto > 0)then
  begin
      UPDATE OR INSERT INTO TBUPDATE_ECOMMERCE (TABELA, TABELA_ID, SUB_ID)
            VALUES ('TBESTOQUE_SALDO', new.produto_codigo, new.estabelecimento_codigo)
          MATCHING (TABELA, TABELA_ID, SUB_ID);
  end

  --se he lacloft
  produto = coalesce((
            select first 1
                p.codigo
            from tbproduto p, tbmodelo m
            where p.codigo = new.produto_codigo
            and p.status = '1'
            and m.codigo = p.modelo_codigo
            and m.habilita_ecommerce = 1
            and m.status = '1'
  ),0);

  if(produto > 0)then
  begin
      UPDATE OR INSERT INTO TBUPDATE_ECOM_LACLOFIT (TABELA, TABELA_ID, SUB_ID)
            VALUES ('TBESTOQUE_SALDO', new.produto_codigo, 0)
          MATCHING (TABELA, TABELA_ID, SUB_ID);
  end

end;

COMMENT ON TRIGGER TTBESTOQUE_SALDO_999 IS 'se produto for de integracao (lacloft outer bojo colante) deve marcar para atualizar';

CREATE INDEX TTBUPDATE_ECOM_LACLOFIT_01
ON TBUPDATE_ECOM_LACLOFIT (TABELA_ID,TABELA);

CREATE OR ALTER trigger ttbmodelo_999 for tbmodelo
active before insert or update or delete position 999
AS
begin

 -- NEW.STATUS = '0';

  update tbreplica_tabela set Status = '0'
  Where tabela = 'TBMODELO'
    and Status = '1';

  --se for do lacloft e mudar um dos parametros deve atualizar
  if(new.habilita_ecommerce = 1 and (
    new.descricao_comercial <> old.descricao_comercial or
    new.descricao <> old.descricao or
    new.classificacao <> old.classificacao
  ))then
  begin

      UPDATE OR INSERT INTO TBUPDATE_ECOM_LACLOFIT (TABELA, TABELA_ID, SUB_ID)
            VALUES ('TBMODELO', new.codigo, 0)
          MATCHING (TABELA, TABELA_ID, SUB_ID);

  end

end;

CREATE trigger ttbmodelo_observacao_b01u for tbmodelo_observacao
active before update position 1
AS
declare variable produto integer;
begin

--se he lacloft
  produto = coalesce((
            select first 1
                p.codigo
            from tbproduto p, tbmodelo m
            where p.status = '1'
            and m.codigo = p.modelo_codigo
            and m.habilita_ecommerce = 1
            and m.status = '1'
            and m.codigo = new.modelo_codigo
  ),0);

  if(produto > 0 and new.observacao <> old.observacao)then
  begin
      UPDATE OR INSERT INTO TBUPDATE_ECOM_LACLOFIT (TABELA, TABELA_ID, SUB_ID)
            VALUES ('TBMODELO', new.modelo_codigo, 0)
          MATCHING (TABELA, TABELA_ID, SUB_ID);
  end

end;

COMMENT ON TRIGGER TTBMODELO_OBSERVACAO_B01U IS 'se for observacao de um modelo laclofit deve ir para o site';

CREATE trigger ttbmodelo_preco_b01i for tbmodelo_preco
active before insert position 1
AS
declare variable produto integer;
begin

  if(new.estabelecimento_codigo = 8)then
  begin
    --se he lacloft
      produto = coalesce((
                select first 1
                    p.codigo
                from tbproduto p, tbmodelo m
                where p.status = '1'
                and m.codigo = p.modelo_codigo
                and m.habilita_ecommerce = 1
                and m.status = '1'
                and m.codigo = new.modelo_codigo
      ),0);
    
      if(produto > 0)then
      begin
          UPDATE OR INSERT INTO TBUPDATE_ECOM_LACLOFIT (TABELA, TABELA_ID, SUB_ID)
                VALUES ('TBMODELO', new.modelo_codigo, 0)
              MATCHING (TABELA, TABELA_ID, SUB_ID);
      end
  end

end;

COMMENT ON TRIGGER TTBMODELO_PRECO_B01I IS 'se for preco do laclofit';

CREATE OR ALTER trigger ttbmodelo_preco_b02u for tbmodelo_preco
active before update position 2
AS
declare variable produto integer;
begin

  if(new.estabelecimento_codigo = 8)then
  begin
    --se he lacloft
      produto = coalesce((
                select first 1
                    p.codigo
                from tbproduto p, tbmodelo m
                where p.status = '1'
                and m.codigo = p.modelo_codigo
                and m.habilita_ecommerce = 1
                and m.status = '1'
                and m.codigo = new.modelo_codigo
      ),0);
    
      if(produto > 0 and new.preco_venda <> new.preco_venda)then
      begin
          UPDATE OR INSERT INTO TBUPDATE_ECOM_LACLOFIT (TABELA, TABELA_ID, SUB_ID)
                VALUES ('TBMODELO', new.modelo_codigo, 0)
              MATCHING (TABELA, TABELA_ID, SUB_ID);
      end
  end

end;

CREATE trigger ttbcor_b10u for tbcor
active before update position 10
AS
declare variable produto integer;
begin

  if(new.descricao_comercial <> old.descricao_comercial)then
  begin

      for
        select
            p.codigo
        from tbproduto p, tbmodelo m
        where p.status = '1'
        and m.codigo = p.modelo_codigo
        and m.habilita_ecommerce = 1
        and m.status = '1'
        and p.cor_codigo = new.codigo
      into
        :produto
      do begin
        UPDATE OR INSERT INTO TBUPDATE_ECOM_LACLOFIT (TABELA, TABELA_ID, SUB_ID, TIPO)
                VALUES ('TBPRODUTO', :produto, 0, 10)
              MATCHING (TABELA, TABELA_ID, SUB_ID);
      end
  end
end;
