CREATE OR ALTER PROCEDURE SPC_PARADA_ESTACAO ( i_gp_id integer, i_up_id integer, i_estacao integer, i_data_inicio timestamp, i_data_fim timestamp) returns ( tempo_parado integer, motivo_parada varchar(100), iniciado varchar(20), parado varchar(20), estacao integer, tipo integer, programacao_id integer, requisicao_id integer, tempo_parado_em_talao integer, tempo_parado_extra integer) as begin for select gg.*, (gg.TEMPO_PARADO - gg.TEMPO_PARADO_EM_TALAO) as TEMPO_PARADO_EXTRA from( select jj.*, coalesce((select sum(coalesce(TEMPO_PARADO,0)) as TEMPO_PARADO from( select iif((y.STATUS1 = 1) and (y.STATUS2 = 0) AND (rec = 0), (select sum(cast(PRODUTIVO as integer)) from spc_calendario_estacao(up_id,estacao_id,y.datahora1,y.datahora2)),0) as TEMPO_PARADO from ( SELECT lead(x.status) over (order by x.datahora ascending) STATUS2, lead(x.datahora) over (order by x.datahora ascending) datahora2, iif((lag(X.requisicao_id) over (order by X.datahora ascending) = X.requisicao_id),0,1) AS rec, x.status as status1, x.datahora as datahora1, u.up_id, u.estacao as estacao_id, u.gp_id FROM tbprogramacao_registro x, tbprogramacao u WHERE u.id = jj.PROGRAMACAO_ID and x.requisicao_id = jj.requisicao_id AND x.status in (0,1) and u.id = x.programacao_id order by x.datahora ascending ) y )z),0) AS TEMPO_PARADO_EM_TALAO from( select TEMPO_PARADO, MOTIVO_PARADA, iif(DATAHORA2 is null, null, formatdatetime(DATAHORA2)) as INICIADO, formatdatetime(DATAHORA1) as PARADO, ESTACAO, tipo, coalesce((SELECT first 1 x.programacao_id FROM tbprogramacao_registro x, tbprogramacao s WHERE x.datahora between dateadd(minute,-2,xx.DATAHORA1) and dateadd(minute,2,xx.DATAHORA2) AND x.status = 1 and s.gp_id = xx.gp_id and s.up_id = xx.up and s.estacao = xx.estacao and x.programacao_id = s.id order by x.datahora ascending ),0) AS PROGRAMACAO_ID, coalesce((SELECT first 1 x.requisicao_id FROM tbprogramacao_registro x, tbprogramacao s WHERE x.datahora between dateadd(minute,-2,xx.DATAHORA1) and dateadd(minute,2,xx.DATAHORA2) AND x.status = 1 and s.gp_id = xx.gp_id and s.up_id = xx.up and s.estacao = xx.estacao and x.programacao_id = s.id order by x.datahora ascending ),0) AS requisicao_id from( select iif((y.STATUS1 > 0) and (y.STATUS2 = 0), (select sum(cast(PRODUTIVO as integer)) from spc_calendario_estacao(y.up,y.estacao,y.datahora1,y.datahora2)),0) as TEMPO_PARADO, y.* from( select j.descricao as MOTIVO_PARADA, lead(p.status) over (order by p.tabela_id,p.ID ascending) STATUS2, lead(p.hora_registro) over (order by p.tabela_id,p.ID ascending) datahora2, p.status as status1, p.hora_registro as datahora1, p.subvinculo_id as up, p.tabela_id as estacao, p.vinculo_id as gp_id, p.*, j.tipo from tbregistro_parada p, tbjustificativa j where true and p.tabela = 'ESTACAO' and p.vinculo_id = :I_GP_ID and p.subvinculo_id = :I_UP_ID and p.tabela_id = :I_ESTACAO AND p.hora_registro BETWEEN :i_data_inicio and :i_data_fim and j.id = p.status order by p.tabela_id,p.ID ) y ) xx where xx.STATUS1 > 0 and xx.TEMPO_PARADO > 0 and xx.tipo = '1' ) jj )gg into :TEMPO_PARADO, :MOTIVO_PARADA, :INICIADO, :PARADO, :ESTACAO, :TIPO, :PROGRAMACAO_ID, :REQUISICAO_ID, :TEMPO_PARADO_EM_TALAO, :TEMPO_PARADO_EXTRA do begin suspend; end end; ALTER TABLE TBJUSTIFICATIVA ADD ORDEM INTEGER, ADD MARCAR INTEGER; COMMENT ON COLUMN TBJUSTIFICATIVA.ORDEM IS 'ordem que vai aparecer na tela'; COMMENT ON COLUMN TBJUSTIFICATIVA.MARCAR IS '1 ou 0 para mostra como negrito na tela para dar destaque'; ALTER TABLE TBPROGRAMACAO_REQUISICAO ADD TEMPO_PARADO NUMERIC(15,4), ADD TEMPO_ESTACAO NUMERIC(15,4); COMMENT ON COLUMN TBPROGRAMACAO_REQUISICAO.TEMPO_PARADO IS 'tempo parado do talao'; COMMENT ON COLUMN TBPROGRAMACAO_REQUISICAO.TEMPO_ESTACAO IS 'tempo parado da estacao'; CREATE OR ALTER trigger ttbprogramacao_b5u for tbprogramacao active before update position 5 AS begin IF ( NEW.FERRAMENTA_ID > 0 AND OLD.STATUS IS distinct FROM NEW.status AND NEW.STATUS = '3' ) THEN BEGIN EXECUTE PROCEDURE SPI_EMAIL( 'emersoncoelho@delfa.com.br', 'GC - Talao finalizado', ' Programacao ID :' || new.ID || F_BREAK_LINE(1) || ' GP ID :' || new.GP_ID || F_BREAK_LINE(1) || ' UP ID :' || new.UP_ID || F_BREAK_LINE(1) || ' ESTACAO :' || NEW.ESTACAO ); UPDATE OR INSERT INTO TBPROGRAMACAO_REQUISICAO ( PROGRAMACAO_ID, REQUISICAO_ID, STATUS, FERRAMENTA_ID, TEMPO_PREVISTO, TEMPO_REALIZADO, TEMPO_OPERACIONAL, TEMPO_SETUP_FERRAMENTA, TEMPO_SETUP_AQUECIMENTO, TEMPO_SETUP_COR, TEMPO_SETUP_APROVACAO, DATAHORA_INICIO, DATAHORA_FIM, DATAHORA_REALIZADO_INICIO, DATAHORA_REALIZADO_FIM, QUANTIDADE, tempo_parado, tempo_estacao ) VALUES ( NEW.ID, NEW.REQUISICAO_ID, NEW.STATUS, NEW.FERRAMENTA_ID, NEW.TEMPO, NEW.TEMPO_REALIZADO, NEW.TEMPO_OPERACIONAL, NEW.TEMPO_SETUP_FERRAMENTA, NEW.TEMPO_SETUP_AQUECIMENTO, NEW.TEMPO_SETUP_COR, NEW.TEMPO_SETUP_APROVACAO, NEW.DATAHORA_INICIO, NEW.DATAHORA_FIM, --tempo parado (SELECT FIRST 1 R.DATAHORA FROM TBPROGRAMACAO_REGISTRO R WHERE R.PROGRAMACAO_ID = NEW.ID AND R.REQUISICAO_ID = NEW.REQUISICAO_ID AND R.STATUS = 0 ORDER BY R.DATAHORA), CURRENT_TIMESTAMP, NEW.QUANTIDADE, coalesce((select sum(coalesce(TEMPO_PARADO,0)) as TEMPO_PARADO from( select iif((y.STATUS1 = 1) and (y.STATUS2 = 0) AND (rec = 0), (select sum(cast(PRODUTIVO as integer)) from spc_calendario_estacao(up_id,estacao_id,y.datahora1,y.datahora2)),0) as TEMPO_PARADO from ( SELECT lead(x.status) over (order by x.datahora ascending) STATUS2, lead(x.datahora) over (order by x.datahora ascending) datahora2, iif((lag(X.requisicao_id) over (order by X.datahora ascending) = X.requisicao_id),0,1) AS rec, x.status as status1, x.datahora as datahora1, u.up_id, u.estacao as estacao_id, u.gp_id FROM tbprogramacao_registro x, tbprogramacao u, tbjustificativa l WHERE true and x.programacao_id = new.id AND x.status in (0,1) and x.requisicao_id = new.requisicao_id and u.id = x.programacao_id and l.id = x.justificativa_id and l.tipo = '1' order by x.datahora ascending ) y )z),0), --tempo parado estacao coalesce((select (select sum(TEMPO_PARADO_EXTRA) from SPC_PARADA_ESTACAO(new.gp_id,new.up_id,j.estacao_id,j.ANTERIOR,j.DATAHORA)) as TEMPO_EXTRA FROM (select first 1 r.*, (select first 1 s.datahora from tbprogramacao_registro s, tbprogramacao q where true and s.datahora < r.datahora and s.status = 2 and s.estacao_id = r.estacao_id and q.id = s.programacao_id and q.gp_id = new.gp_id and q.up_id = new.up_id order by s.id descending ) as ANTERIOR from tbprogramacao_registro r where true and r.programacao_id = new.ID and r.requisicao_id = new.REQUISICAO_ID ) j),0) ) MATCHING ( PROGRAMACAO_ID, REQUISICAO_ID ); END end; CREATE OR ALTER PROCEDURE SPC_PRODUCAO_CONFORMACAO_V2 ( i_gp_id integer, i_up_id integer, i_estacao varchar(50), i_data_inicio date, i_data_fim date, i_flag integer) returns ( perdas_perc numeric(15,2), eficiencia numeric(15,2), setup_previsto numeric(15,2), setup_realizado numeric(15,2), cor_efic integer, justificativa varchar(1000), programacao_id integer, requisicao_id integer, gp_id integer, gp_descricao varchar(50), up_id integer, up_descricao varchar(50), estacao integer, estacao_descricao varchar(50), remessa integer, remessa_id integer, remessa_data date, remessa_talao_id integer, talao_id integer, produto_id integer, produto_descricao varchar(50), modelo_id integer, modelo_descricao varchar(50), cor_id integer, cor_descricao varchar(50), tamanho integer, tamanho_descricao varchar(50), quantidade numeric(15,2), um varchar(50), ferramenta_id integer, ferramenta_descicao varchar(50), datahora_realizado_inicio varchar(20), datahora_realizado_fim varchar(20), tempo_previsto numeric(15,2), tempo_realizado numeric(15,2), tempo_previsto_operacional numeric(15,2), tempo_previsto_ferramenta numeric(15,2), tempo_previsto_aquecimento numeric(15,2), tempo_previsto_aprovacao numeric(15,2), tempo_realizado_operacional numeric(15,2), tempo_realizado_ferramenta numeric(15,2), tempo_realizado_aquecimento numeric(15,2), tempo_realizado_aprovacao numeric(15,2), perfil_sku varchar(1), tempo_parado numeric(15,2), perdas numeric(15,2), perfil_sku_descricao varchar(50), perdas_perc1 numeric(15,2), eficiencia_minima numeric(15,2), eficiencia_a numeric(15,2), eficiencia_b numeric(15,2), perdas_a numeric(15,2), perdas_b numeric(15,2), tempo_extra numeric(15,2), tempo_efic numeric(15,2), turno integer, efic numeric(15,2)) as begin for SELECT iif(PERDAS_PERC > 100,100,PERDAS_PERC) as PERDAS_PERC, iif(z.efic > 100,100,z.efic) as eficiencia, (TEMPO_PREVISTO_FERRAMENTA+ TEMPO_PREVISTO_AQUECIMENTO+ TEMPO_PREVISTO_APROVACAO) as SETUP_PREVISTO, (TEMPO_REALIZADO_FERRAMENTA+ TEMPO_REALIZADO_AQUECIMENTO+ TEMPO_REALIZADO_APROVACAO) as SETUP_REALIZADO, iif(z.efic < EFICIENCIA_A,1, iif(z.efic >= EFICIENCIA_A and z.efic <= EFICIENCIA_B,2, iif(z.efic > EFICIENCIA_B,3,0))) as cor_efic, coalesce((SELECT list(j.descricao||': '||coalesce(p.observacao,''),',
') as DESC from TBREGISTRO_PARADA P, tbjustificativa J where true and p.tabela = 'INEFICIENCIA' and p.tabela_id = z.PROGRAMACAO_ID and j.id = p.status) ,'') as JUSTIFICATIVA, z.* from( SELECT PROGRAMACAO_ID, REQUISICAO_ID, GP_ID, GP_DESCRICAO, UP_ID, UP_DESCRICAO, ESTACAO, ESTACAO_DESCRICAO, REMESSA, REMESSA_ID, REMESSA_DATA, REMESSA_TALAO_ID, TALAO_ID, PRODUTO_ID, PRODUTO_DESCRICAO, MODELO_ID, MODELO_DESCRICAO, COR_ID, COR_DESCRICAO, TAMANHO, TAMANHO_DESCRICAO, QUANTIDADE, UM, FERRAMENTA_ID, FERRAMENTA_DESCICAO, formatdatetime(DATAHORA_REALIZADO_INICIO) as DATAHORA_REALIZADO_INICIO, formatdatetime(DATAHORA_REALIZADO_FIM) as DATAHORA_REALIZADO_FIM, TEMPO_PREVISTO, TEMPO_REALIZADO, TEMPO_PREVISTO_OPERACIONAL, TEMPO_PREVISTO_FERRAMENTA, TEMPO_PREVISTO_AQUECIMENTO, TEMPO_PREVISTO_APROVACAO, IIF( TEMPO_REALIZADO_OPERACIONAL < 0, 0, TEMPO_REALIZADO_OPERACIONAL) TEMPO_REALIZADO_OPERACIONAL, TEMPO_REALIZADO_FERRAMENTA, TEMPO_REALIZADO_AQUECIMENTO, TEMPO_REALIZADO_APROVACAO, PERFIL_SKU, TEMPO_PARADO, TEMPO_EXTRA, PERDAS, PERFIL_SKU_DESCRICAO, cast(((PERDAS / iif(QUANTIDADE > 0,QUANTIDADE,1)) * 100) as numeric(15,2)) PERDAS_PERC, EFICIENCIA_MINIMA, EFICIENCIA_A, EFICIENCIA_B, PERDAS_A, PERDAS_B, TEMPO_EFIC, (select first 1 b.codigo from tbturno b where (COMPARE_HORA(b.hora_inicio,b.hora_fim,gethora(DATAHORA_REALIZADO_FIM))) = 1) as turno, (TEMPO_PREVISTO_OPERACIONAL / iif(TEMPO_EFIC>0,TEMPO_EFIC,1) * 100) as efic FROM ( SELECT ((TEMPO_REALIZADO - TEMPO_REALIZADO_FERRAMENTA - TEMPO_REALIZADO_AQUECIMENTO - TEMPO_REALIZADO_APROVACAO) + TEMPO_EXTRA + TEMPO_PARADO) as TEMPO_EFIC, PROGRAMACAO_ID, REQUISICAO_ID, GP_ID, GP_DESCRICAO, UP_ID, UP_DESCRICAO, ESTACAO, ESTACAO_DESCRICAO, REMESSA, REMESSA_ID, REMESSA_DATA, REMESSA_TALAO_ID, TALAO_ID, PRODUTO_ID, PRODUTO_DESCRICAO, MODELO_ID, MODELO_DESCRICAO, COR_ID, COR_DESCRICAO, TAMANHO, TAMANHO_DESCRICAO, QUANTIDADE, UM, FERRAMENTA_ID, FERRAMENTA_DESCICAO, DATAHORA_REALIZADO_INICIO, DATAHORA_REALIZADO_FIM, TEMPO_PREVISTO, TEMPO_REALIZADO, TEMPO_PREVISTO_OPERACIONAL, TEMPO_PREVISTO_FERRAMENTA, TEMPO_PREVISTO_AQUECIMENTO, TEMPO_PREVISTO_APROVACAO, (TEMPO_REALIZADO - TEMPO_REALIZADO_FERRAMENTA - TEMPO_REALIZADO_AQUECIMENTO - TEMPO_REALIZADO_APROVACAO) TEMPO_REALIZADO_OPERACIONAL, TEMPO_REALIZADO_FERRAMENTA, TEMPO_REALIZADO_AQUECIMENTO, TEMPO_REALIZADO_APROVACAO, TEMPO_PARADO, PERFIL_SKU, PERDAS, PF.descricao as PERFIL_SKU_DESCRICAO, PF.efic_minima as EFICIENCIA_MINIMA, PF.efic_a as EFICIENCIA_A, PF.efic_b as EFICIENCIA_B, PF.perda_a as PERDAS_A, PF.perda_b as PERDAS_B, TEMPO_EXTRA FROM ( SELECT P.ID AS PROGRAMACAO_ID, A.REQUISICAO_ID AS REQUISICAO_ID, G.ID AS GP_ID, G.DESCRICAO AS GP_DESCRICAO, U.ID AS UP_ID, U.DESCRICAO AS UP_DESCRICAO, P.ESTACAO AS ESTACAO, SU.DESCRICAO AS ESTACAO_DESCRICAO, R.REMESSA AS REMESSA, T.REMESSA_ID AS REMESSA_ID, R.DATA AS REMESSA_DATA, T.REMESSA_TALAO_ID AS REMESSA_TALAO_ID, T.ID AS TALAO_ID, PR.CODIGO AS PRODUTO_ID, PR.DESCRICAO AS PRODUTO_DESCRICAO, M.CODIGO AS MODELO_ID, M.DESCRICAO AS MODELO_DESCRICAO, C.CODIGO AS COR_ID, C.DESCRICAO AS COR_DESCRICAO, P.TAMANHO AS TAMANHO, TAMANHO_GRADE(GR.CODIGO,P.TAMANHO) AS TAMANHO_DESCRICAO, A.QUANTIDADE AS QUANTIDADE, PR.UNIDADEMEDIDA_SIGLA AS UM, A.datahora_realizado_inicio AS DATAHORA_REALIZADO_INICIO, A.DATAHORA_REALIZADO_FIM AS DATAHORA_REALIZADO_FIM, P.TEMPO AS TEMPO_PREVISTO, A.TEMPO_REALIZADO AS TEMPO_REALIZADO, A.TEMPO_OPERACIONAL AS TEMPO_PREVISTO_OPERACIONAL, A.TEMPO_SETUP_FERRAMENTA AS TEMPO_PREVISTO_FERRAMENTA, (A.TEMPO_SETUP_AQUECIMENTO + A.TEMPO_SETUP_COR) AS TEMPO_PREVISTO_AQUECIMENTO, A.TEMPO_SETUP_APROVACAO AS TEMPO_PREVISTO_APROVACAO, coalesce(a.tempo_parado,0) AS TEMPO_PARADO, coalesce(a.tempo_estacao,0) AS TEMPO_EXTRA, CAST(COALESCE((SELECT FIRST 1 DATEDIFF(MINUTE, S.DATAHORA_INICIO, S.DATAHORA_FIM) FROM TBREGISTRO_SETUP S WHERE S.TALAO_ID = P.TABELA_ID AND S.REQUISICAO_ID = A.REQUISICAO_ID AND S.SETUP_ID = 1),0) AS NUMERIC(15,4)) AS TEMPO_REALIZADO_FERRAMENTA, CAST(COALESCE((SELECT FIRST 1 DATEDIFF(MINUTE, S.DATAHORA_INICIO, S.DATAHORA_FIM) FROM TBREGISTRO_SETUP S WHERE S.TALAO_ID = P.TABELA_ID AND S.REQUISICAO_ID = A.REQUISICAO_ID AND S.SETUP_ID = 2),0) AS NUMERIC(15,4)) AS TEMPO_REALIZADO_AQUECIMENTO, CAST(COALESCE((SELECT FIRST 1 DATEDIFF(MINUTE, S.DATAHORA_INICIO, S.DATAHORA_FIM) FROM TBREGISTRO_SETUP S WHERE S.TALAO_ID = P.TABELA_ID AND S.REQUISICAO_ID = A.REQUISICAO_ID AND S.SETUP_ID = 3),0) AS NUMERIC(15,4)) AS TEMPO_REALIZADO_APROVACAO, (SELECT FIRST 1 SK.PERFIL FROM VWSKU SK WHERE SK.MODELO_ID = M.CODIGO AND SK.COR_ID = C.CODIGO AND SK.TAMANHO = T.TAMANHO) PERFIL_SKU, A.FERRAMENTA_ID, (SELECT FIRST 1 LPAD(F.SERIE,4,'0') || ' - ' || DESCRICAO FROM TBFERRAMENTARIA F WHERE F.ID = A.FERRAMENTA_ID) FERRAMENTA_DESCICAO, coalesce((SELECT SUM(D.quantidade) AS quantidade FROM TbDefeito_Transacao_Item D, tbsac_defeito j WHERE true AND d.remessa = r.remessa_id AND d.remessa_controle = t.remessa_talao_id and d.defeito_id = j.codigo and j.conformacao = 1 ),0) as PERDAS FROM TBPROGRAMACAO_REQUISICAO A, TBPROGRAMACAO P, VWREMESSA_TALAO T, VWREMESSA R, TBGP G, TBUP U, TBSUB_UP SU, TBPRODUTO PR, TBMODELO M, TBCOR C, TBGRADE GR WHERE TRUE AND p.gp_id = :I_GP_ID and p.up_id = :I_UP_ID AND P.ESTACAO in(select * from split(:I_estacao,',')) AND P.ID = A.PROGRAMACAO_ID AND P.FERRAMENTA_ID > 0 AND A.STATUS = 3 AND P.TIPO = 'A' AND P.TABELA_ID = T.ID AND R.REMESSA_ID = T.REMESSA_ID AND G.ID = P.GP_ID AND U.ID = P.UP_ID AND SU.UP_ID = P.UP_ID AND SU.ID = P.ESTACAO AND PR.CODIGO = P.PRODUTO_ID AND M.CODIGO = PR.MODELO_CODIGO AND C.CODIGO = PR.COR_CODIGO AND GR.CODIGO = PR.GRADE_CODIGO and iif(:i_flag = 1, A.DATAHORA_REALIZADO_FIM BETWEEN cast(cast(:i_data_inicio as date) ||' '|| (select first 1 t.hora_inicio from tbturno t) as timestamp) and cast(dateadd(day, 1 ,cast(:i_data_fim as date)) ||' '|| (select first 1 t.hora_inicio - 0.0000001 from tbturno t) as timestamp), A.DATAHORA_REALIZADO_FIM >= cast((select first 2 k.data_producao from tbturno k where k.turno_corrente = 1) ||' '|| (select first 1 t.hora_inicio from tbturno t) as timestamp) ) ) X, TBPERFIL PF where true AND PF.tabela = 'SKU' and PF.id = PERFIL_SKU ) Y )Z order by z.estacao,z.datahora_realizado_fim into :PERDAS_PERC, :EFICIENCIA, :SETUP_PREVISTO, :SETUP_REALIZADO, :COR_EFIC, :JUSTIFICATIVA, :PROGRAMACAO_ID, :REQUISICAO_ID, :GP_ID, :GP_DESCRICAO, :UP_ID, :UP_DESCRICAO, :ESTACAO, :ESTACAO_DESCRICAO, :REMESSA, :REMESSA_ID, :REMESSA_DATA, :REMESSA_TALAO_ID, :TALAO_ID, :PRODUTO_ID, :PRODUTO_DESCRICAO, :MODELO_ID, :MODELO_DESCRICAO, :COR_ID, :COR_DESCRICAO, :TAMANHO, :TAMANHO_DESCRICAO, :QUANTIDADE, :UM, :FERRAMENTA_ID, :FERRAMENTA_DESCICAO, :DATAHORA_REALIZADO_INICIO, :DATAHORA_REALIZADO_FIM, :TEMPO_PREVISTO, :TEMPO_REALIZADO, :TEMPO_PREVISTO_OPERACIONAL, :TEMPO_PREVISTO_FERRAMENTA, :TEMPO_PREVISTO_AQUECIMENTO, :TEMPO_PREVISTO_APROVACAO, :TEMPO_REALIZADO_OPERACIONAL, :TEMPO_REALIZADO_FERRAMENTA, :TEMPO_REALIZADO_AQUECIMENTO, :TEMPO_REALIZADO_APROVACAO, :PERFIL_SKU, :TEMPO_PARADO, :TEMPO_EXTRA, :PERDAS, :PERFIL_SKU_DESCRICAO, :PERDAS_PERC1, :EFICIENCIA_MINIMA, :EFICIENCIA_A, :EFICIENCIA_B, :PERDAS_A, :PERDAS_B, :TEMPO_EFIC, :TURNO, :EFIC do begin suspend; end end; CREATE OR ALTER trigger tbprogramacao_bu0 for tbprogramacao active before update position 0 AS DECLARE VARIABLE CONFLITO varchar(50); declare variable tempo integer; begin IF ( NEW.FERRAMENTA_ID > 0 ) THEN BEGIN if(old.status = 2 AND new.status = 1)then begin DELETE FROM TBREGISTRO_SETUP N WHERE 1=1 AND N.TALAO_ID = new.tabela_id AND N.REQUISICAO = new.status_requisicao AND N.DATAHORA_FIM IS NULL; end --registra parada altomatica da estacao if((old.status = 0 AND new.status = 2) or (old.status = 1 AND new.status = 2) )then begin tempo = coalesce((select first 1 datediff(minute,p.hora_registro,current_timestamp) from tbregistro_parada p where true and p.vinculo_id = new.gp_id and p.subvinculo_id = new.up_id and p.tabela_id = new.estacao order by p.hora_registro desc),0); if(tempo > 0)then begin --adicionar regsitro de parada inicio INSERT INTO TBREGISTRO_PARADA ( TABELA_ID, TABELA, STATUS, VINCULO_ID, SUBVINCULO_ID, DATA_REGISTRO, HORA_REGISTRO, OPERADOR_ID, OBSERVACAO ) VALUES ( new.estacao, 'ESTACAO', 50, new.gp_id, new.up_id, current_date, dateadd(minute,(:tempo * -1),current_date), 216, NULL ); --adicionar regsitro de parada fim INSERT INTO TBREGISTRO_PARADA ( TABELA_ID, TABELA, STATUS, VINCULO_ID, SUBVINCULO_ID, DATA_REGISTRO, HORA_REGISTRO, OPERADOR_ID, OBSERVACAO ) VALUES ( new.estacao, 'ESTACAO', 0, new.gp_id, new.up_id, current_date, current_date, 216, NULL ); end end END end;