SET TERM ^ ;

ALTER TABLE TBCOR
ADD COR_SORTIDA INTEGER
DEFAULT 0^

CREATE OR ALTER TRIGGER TTBCOR_B9U FOR TBCOR
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

   HISTORICO = '';

   IF (OLD.DESCRICAO <> NEW.DESCRICAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' DESC.'||OLD.DESCRICAO||'->'||NEW.DESCRICAO;
       END
       
   IF (OLD.DESCRICAO_COMERCIAL <> NEW.DESCRICAO_COMERCIAL) THEN
       BEGIN
       HISTORICO = HISTORICO||' DESC.COM.'||OLD.DESCRICAO_COMERCIAL||'->'||NEW.DESCRICAO_COMERCIAL;
       END

   IF (OLD.TONALIDADE <> NEW.TONALIDADE) THEN
       BEGIN
       HISTORICO = HISTORICO||' TON.:'||OLD.TONALIDADE||'->'||NEW.TONALIDADE;
       END
   IF (OLD.TON_FORNECEDOR <> NEW.TON_FORNECEDOR) THEN
       BEGIN
       HISTORICO = HISTORICO||' TON.FORN.'||OLD.TON_FORNECEDOR||'->'||NEW.TON_FORNECEDOR;
       END
   IF (OLD.ABREVIADO <> NEW.ABREVIADO) THEN
       BEGIN
       HISTORICO = HISTORICO||' DESC.ABV.'||OLD.ABREVIADO||'->'||NEW.ABREVIADO;
       END
   IF (OLD.CLASSE||OLD.SUBCLASSE <> NEW.CLASSE||NEW.SUBCLASSE) THEN
       BEGIN
       HISTORICO = HISTORICO||' CLASS/SUB.'||OLD.CLASSE||'.'||OLD.SUBCLASSE||'->'||NEW.CLASSE||'.'||NEW.SUBCLASSE;
       END
   IF (OLD.PERFIL <> NEW.PERFIL) THEN
       BEGIN
       HISTORICO = HISTORICO||' PERF.'||OLD.PERFIL||'->'||NEW.PERFIL;
       END
   IF (OLD.PANTONE <> NEW.PANTONE) THEN
       BEGIN
       HISTORICO = HISTORICO||' PANTONE '||OLD.PANTONE||'->'||NEW.PANTONE;
       END
   IF (OLD.OBSERVACAO <> NEW.OBSERVACAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' OBS.'||OLD.OBSERVACAO||'->'||NEW.OBSERVACAO;
       END
   IF (OLD.AMOSTRA <> NEW.AMOSTRA) THEN
       BEGIN
       HISTORICO = HISTORICO||' AMOSTRA:'||OLD.AMOSTRA||'->'||NEW.AMOSTRA;
       END
   IF (OLD.AMOSTRA_IMAGEM <> NEW.AMOSTRA_IMAGEM) THEN
       BEGIN
       HISTORICO = HISTORICO||' IMG. AMOSTRA: IMAGEM DE AMOSTRA ALTERADA';
       END
   IF (OLD.QTD_CORES <> NEW.QTD_CORES) THEN
       BEGIN
       HISTORICO = HISTORICO||' QTD.CORES:'||OLD.QTD_CORES||'->'||NEW.QTD_CORES;
       END
   IF (OLD.TEMPO_SETUP <> NEW.TEMPO_SETUP) THEN
       BEGIN
       HISTORICO = HISTORICO||' TMP.SET.'||OLD.TEMPO_SETUP||'->'||NEW.TEMPO_SETUP;
       END
   IF (OLD.TEMPO_SETUP_APROVACAO <> NEW.TEMPO_SETUP_APROVACAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' TMP.SET.APRV.'||OLD.TEMPO_SETUP_APROVACAO||'->'||NEW.TEMPO_SETUP_APROVACAO;
       END
   
   IF (OLD.NIVEL_CONTAMINACAO <> NEW.NIVEL_CONTAMINACAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' NIV.CONTAM.'||OLD.NIVEL_CONTAMINACAO||'->'||NEW.NIVEL_CONTAMINACAO;
       END

   IF (COALESCE(OLD.COR_SORTIDA,0) <> COALESCE(NEW.COR_SORTIDA,0)) THEN
       BEGIN
       HISTORICO = HISTORICO||'COR SORT.'||COALESCE(OLD.COR_SORTIDA,0)||'->'||COALESCE(NEW.COR_SORTIDA,0);
       END

   IF (OLD.STATUS <> NEW.STATUS) THEN
       BEGIN
       HISTORICO = HISTORICO||' STATUS'||OLD.STATUS||'->'||NEW.STATUS;
       END

   IF (HISTORICO <> '') THEN
       BEGIN
       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
      'TBCOR', 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);
       END
END^

CREATE INDEX ITBCOR_08
ON TBCOR (COR_SORTIDA)^

COMMENT ON COLUMN TBCOR.COR_SORTIDA IS
'INDICA SE OS PRODUTOS DESTA COR PODEM SER UTILIZADAS NA DISTRIBUICAO DE CORES SORTIDAS DOS PEDIDOS (TELA 12201)
SE 1 = SIM
SE 0 = NAO'^

ALTER TABLE TBPERFIL_PEDIDO_USUARIOS
ADD PERMITE_ALTERAR_CORES_SORT VARCHAR(1) CHARACTER SET UTF8 
DEFAULT 0 
COLLATE UTF8^

ALTER TABLE TBPEDIDO
ADD HISTORICO_DISTRIBUICAO_ITENS BLOB SUB_TYPE 1 SEGMENT SIZE 16384 CHARACTER SET UTF8^

ALTER TABLE TBPEDIDO_ITEM
ADD COR_SORTIDA INTEGER
DEFAULT 0^

CREATE INDEX ITBPEDIDO_ITEM_20
ON TBPEDIDO_ITEM (COR_SORTIDA)^

CREATE OR ALTER trigger ttbpedido_item00iu for tbpedido_item
active before insert or update position 0
AS
declare variable PRODUTO_ID INTEGER;
declare variable HISTORICO VARCHAR(500);
BEGIN
  IF(NEW.PERFIL <> ' ')THEN
  BEGIN
     NEW.PERFIL = TRIM(NEW.PERFIL);
  END

  IF(NEW.PERFIL_COR <> ' ')THEN
  BEGIN
     NEW.PERFIL_COR = TRIM(NEW.PERFIL_COR);
  END 

  IF(NEW.VALOR_DESCONTO IS NULL) THEN
  BEGIN
     NEW.VALOR_DESCONTO = 0;
  END
--  IF(NEW.PEDIDO <> OLD.PEDIDO)THEN
--  BEGIN
--     EXCEPTION "..." 'NUMERO DO PEDIDO DO ITEM NAO PODE SER TROCADO, OPERACAO CANCELADA!';
--  END

  --PEDIDOS DIGITADOS NA TELA 12200 TEM VALOR ORIGINAL
  IF(COALESCE(NEW.VALOR_ORIGINAL,0) = 0)THEN
  BEGIN
    NEW.VALOR_ORIGINAL = NEW.VALOR;
  END

  IF(INSERTING)THEN
  BEGIN
     :PRODUTO_ID = COALESCE((SELECT FIRST 1 P.CODIGO FROM TBPRODUTO P WHERE P.MODELO_CODIGO = NEW.MODELO_CODIGO AND p.COR_CODIGO = new.COR_ID and p.status = '1'),0);

     IF(:PRODUTO_ID = 0)THEN
     BEGIN
         EXCEPTION "..." ' ITEM SEQ.'||FN_LPAD(NEW.SEQUENCIA,3,0)||' <BR>MODELO: '||COALESCE((SELECT FIRST 1 FN_LPAD(B.CODIGO,6,0)||' - '||B.DESCRICAO FROM TBMODELO B WHERE B.CODIGO = NEW.MODELO_CODIGO),'')
         ||' <BR>COR: '||COALESCE((SELECT FIRST 1 FN_LPAD(C.CODIGO,6,0)||' - '||C.DESCRICAO FROM TBCOR C WHERE C.CODIGO = NEW.COR_ID),'')||' <BR><BR>NAO POSSUI PRODUTO ATIVO NO CADASTRO!';
     END

     IF(:PRODUTO_ID <> NEW.PRODUTO_CODIGO)THEN
     BEGIN

         HISTORICO = ' ITEM SEQ.'||FN_LPAD(NEW.SEQUENCIA,3,0)||' TEVE PRODUTO AJUSTADO. PROD.'||NEW.PRODUTO_CODIGO||' -> '||:PRODUTO_ID;

         EXECUTE PROCEDURE SPI_HISTORICO('TBPEDIDO',NEW.PEDIDO,:HISTORICO);

         NEW.PRODUTO_CODIGO = :PRODUTO_ID;
     END

     NEW.COR_SORTIDA = COALESCE((SELECT FIRST 1 COR.COR_SORTIDA FROM TBCOR COR WHERE COR.CODIGO = NEW.COR_ID AND COR.COR_SORTIDA = 1),0);
  END

  IF(UPDATING)THEN
  BEGIN
     IF(OLD.PRODUTO_CODIGO <> NEW.PRODUTO_CODIGO)THEN
     BEGIN

         :PRODUTO_ID = COALESCE((SELECT FIRST 1 P.CODIGO FROM TBPRODUTO P WHERE P.MODELO_CODIGO = NEW.MODELO_CODIGO AND p.COR_CODIGO = new.COR_ID and p.status = '1'),0);
    
         IF(:PRODUTO_ID = 0)THEN
         BEGIN
             EXCEPTION "..." ' ITEM SEQ.'||FN_LPAD(NEW.SEQUENCIA,3,0)||' <BR>MODELO: '||COALESCE((SELECT FIRST 1 FN_LPAD(B.CODIGO,6,0)||' - '||B.DESCRICAO FROM TBMODELO B WHERE B.CODIGO = NEW.MODELO_CODIGO),'')
             ||' <BR>COR: '||COALESCE((SELECT FIRST 1 FN_LPAD(C.CODIGO,6,0)||' - '||C.DESCRICAO FROM TBCOR C WHERE C.CODIGO = NEW.COR_ID),'')||' <BR><BR>NAO POSSUI PRODUTO ATIVO NO CADASTRO!';
         END 

         IF(:PRODUTO_ID <> NEW.PRODUTO_CODIGO)THEN
         BEGIN
    
             HISTORICO = ' ITEM SEQ.'||FN_LPAD(NEW.SEQUENCIA,3,0)||' TEVE PRODUTO AJUSTADO. PROD.'||NEW.PRODUTO_CODIGO||' -> '||:PRODUTO_ID;
    
             EXECUTE PROCEDURE SPI_HISTORICO('TBPEDIDO',NEW.PEDIDO,:HISTORICO);
    
             NEW.PRODUTO_CODIGO = :PRODUTO_ID;
         END

     END
  END

END^

^ SET TERM ; ^