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, iif(TEMPO_EFIC > 0, TEMPO_EFIC,0) as TEMPO_EFIC, (select first 1 b.codigo from tbturno_producao b where (COMPARE_HORA(b.hora_inicio,b.hora_fim,gethora(DATAHORA_REALIZADO_FIM))) = 1 and b.dia_semana = extract(weekday from DATAHORA_REALIZADO_FIM)) 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 tt.hora_inicio from tbturno_producao tt where tt.dia_semana = extract(weekday from cast(:i_data_inicio as date))) as timestamp) and cast(dateadd(day, 1 ,cast(:i_data_fim as date)) ||' '|| (select first 1 tt.hora_inicio - 0.0000001 from tbturno_producao tt where tt.dia_semana = extract(weekday from cast(:i_data_inicio as date))) as timestamp), A.DATAHORA_REALIZADO_FIM >= cast((select first 2 k.data_producao from tbturno_producao k where k.turno_corrente = 1) ||' '|| (select first 1 tt.hora_inicio from tbturno_producao tt where tt.dia_semana = extract(weekday from cast(:i_data_inicio as date))) 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; DROP PROCEDURE SPC_PRODUCAO_CONFORMACAO;