

CREATE OR ALTER trigger ttbcor_b9u for tbcor
active before update position 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
begin

end;

CREATE OR ALTER procedure spc_corte_etiqueta (
    remessa_id integer,
    remessa_talao_id integer)
returns (
    etiq blob sub_type 1 segment size 80 character set win1252)
as
declare variable id integer;
declare variable remessa integer;
declare variable remessa_data date;
declare variable remessa_requisicao char(4);
declare variable remessa_tipo char(4);
declare variable controle integer;
declare variable modelo_codigo integer;
declare variable modelo_densidade integer;
declare variable modelo_espessura numeric(18,2);
declare variable matriz_codigo integer;
declare variable matriz_descricao varchar(80);
declare variable matriz_largura numeric(18,5);
declare variable produto_codigo integer;
declare variable produto_descricao varchar(400);
declare variable tamanho integer;
declare variable quantidade numeric(18,5);
declare variable quantidade_sobra numeric(18,4);
declare variable tolerancia numeric(18,4);
declare variable chapas numeric(18,5);
declare variable placas numeric(18,5);
declare variable sobras numeric(18,5);
declare variable placas_ smallint;
declare variable sobras_ smallint;
declare variable lib char(4);
declare variable consumo_medio numeric(18,5);
declare variable placa_altura numeric(18,5);
declare variable placa_comprimento numeric(18,5);
declare variable placa_sobra numeric(18,5);
declare variable placa numeric(18,5);
declare variable observacao varchar(800);
declare variable situacao integer;
declare variable descricao varchar(400);
declare variable grade_codigo integer;
declare variable cor_codigo integer;
declare variable classe varchar(20);
declare variable programacao_boca integer;
declare variable programacao_esteira integer;
declare variable tamanho_grade varchar(40);
declare variable programacao_sequencia integer;
declare variable esteira_descricao varchar(80);
declare variable hora_producao timestamp;
declare variable hora_liberacao timestamp;
declare variable turno char(4);
declare variable cor_descricao varchar(80);
declare variable seq varchar(40);
declare variable perfil char(4);
declare variable perc_sobra numeric(18,1);
declare variable flag char(4);
declare variable aproveitamento numeric(18,4);
declare variable mediapar numeric(18,4);
declare variable talao_origem blob sub_type 1 segment size 100;
declare variable largura_t numeric(15,5);
declare variable comprimento_t numeric(15,5);
declare variable placa_t numeric(15,5);
declare variable sobra_t numeric(15,5);
declare variable up_destino varchar(255);
declare variable cliente varchar(255);
declare variable localizacao varchar(255);
declare variable talao_vinculo_controle varchar(50);
begin

end;

CREATE OR ALTER procedure spi_remessa_consumo_bojo (
    i_remessa_id integer,
    i_mp_familia_id integer)
as
declare variable estabelecimento_id integer;
declare variable remessa_id integer;
declare variable mp_familia_id integer;
declare variable requisicao char(1);
declare variable v_limite numeric(15,4) = 99999;
declare variable aproveitamento_talao_id integer;
declare variable matriz_descricao varchar(320);
declare variable matriz_coeficiente numeric(18,5);
declare variable matriz_largura numeric(18,5);
declare variable matriz_placa numeric(18,5);
declare variable matriz_sobra numeric(18,5);
declare variable matriz_quantidade_por_placa numeric(18,5);
declare variable matriz_quantidade_chapa numeric(18,5);
declare variable calc_chapa numeric(15,5);
declare variable resto numeric(15,5);
declare variable ident_prod_tam_mtz integer;
declare variable talao_id integer;
declare variable remessa_talao_id integer;
declare variable modelo_id integer;
declare variable modelo_densidade numeric(18,4);
declare variable modelo_espessura numeric(18,4);
declare variable matriz_id integer;
declare variable produto_id integer;
declare variable tamanho integer;
declare variable tamanho_descricao varchar(40);
declare variable quantidade numeric(18,5);
declare variable quantidade_sobra numeric(18,4);
declare variable consumo_quantidade numeric(18,4);
declare variable chapas numeric(18,5);
declare variable placas numeric(18,5);
declare variable sobras numeric(18,5);
declare variable grade_id integer;
declare variable aproveitamento numeric(18,4);
declare variable req_sobra numeric(18,5);
BEGIN

end;

ALTER TABLE TBCOR ADD OLD_PERFIL VARCHAR(10) DEFAULT '';
update TBCOR set OLD_PERFIL = PERFIL;
ALTER TABLE TBCOR DROP PERFIL;
ALTER TABLE TBCOR ADD PERFIL VARCHAR(10) DEFAULT '';
update TBCOR set PERFIL = OLD_PERFIL;
ALTER TABLE TBCOR DROP OLD_PERFIL;

CREATE OR ALTER procedure spi_remessa_consumo_bojo (
    i_remessa_id integer,
    i_mp_familia_id integer)
as
declare variable estabelecimento_id integer;
declare variable remessa_id integer;
declare variable mp_familia_id integer;
declare variable requisicao char(1);
declare variable v_limite numeric(15,4) = 99999;
declare variable aproveitamento_talao_id integer;
declare variable matriz_descricao varchar(320);
declare variable matriz_coeficiente numeric(18,5);
declare variable matriz_largura numeric(18,5);
declare variable matriz_placa numeric(18,5);
declare variable matriz_sobra numeric(18,5);
declare variable matriz_quantidade_por_placa numeric(18,5);
declare variable matriz_quantidade_chapa numeric(18,5);
declare variable calc_chapa numeric(15,5);
declare variable resto numeric(15,5);
declare variable ident_prod_tam_mtz integer;
declare variable talao_id integer;
declare variable remessa_talao_id integer;
declare variable modelo_id integer;
declare variable modelo_densidade numeric(18,4);
declare variable modelo_espessura numeric(18,4);
declare variable matriz_id integer;
declare variable produto_id integer;
declare variable tamanho integer;
declare variable tamanho_descricao varchar(40);
declare variable quantidade numeric(18,5);
declare variable quantidade_sobra numeric(18,4);
declare variable consumo_quantidade numeric(18,4);
declare variable chapas numeric(18,5);
declare variable placas numeric(18,5);
declare variable sobras numeric(18,5);
declare variable grade_id integer;
declare variable aproveitamento numeric(18,4);
declare variable req_sobra numeric(18,5);
BEGIN
     
    DELETE FROM TBREMESSA_CONSUMO C WHERE C.REMESSA = :I_REMESSA_ID;

    UPDATE VWREMESSA
       SET FAMILIA_ID_MP = -1--:I_MP_FAMILIA_ID
     WHERE REMESSA_ID    = :I_REMESSA_ID;

    SELECT FIRST 1
        R.ESTABELECIMENTO_ID,
        R.REMESSA_ID,
        R.FAMILIA_ID_MP,
        R.REQUISICAO
    FROM
        VWREMESSA R
    WHERE
        R.REMESSA_ID = :I_REMESSA_ID
    INTO
        :ESTABELECIMENTO_ID,
        :REMESSA_ID,
        :MP_FAMILIA_ID,
        :REQUISICAO;

    IF ( NOT (COALESCE(MP_FAMILIA_ID,0) > 0)  ) THEN
    BEGIN
--        EXCEPTION "..." 'REMESSA SEM FAMILIA DE CONSUMO DEFINIDA';
    END

    /**
     * Realiza a verificacao de sobras
     */
    --EXECUTE PROCEDURE SPI_REMESSA_SOBRA(:REMESSA_ID);

    /**
     * Realiza o calculo de consumo
     */
    FOR
        SELECT
            ROW_NUMBER() OVER (PARTITION BY PRODUTO_ID,TAMANHO,MATRIZ_ID ORDER BY PERFIL,MODELO_DENSIDADE,MODELO_ESPESSURA,CLASSE,COR_DESCRICAO,PRODUTO_ID,TAMANHO,MATRIZ_ID,REMESSA_TALAO_ID) IDENT_PROD_TAM_MTZ,
            TALAO_ID,
            REMESSA_TALAO_ID,
            MODELO_ID,
            MODELO_DENSIDADE,
            MODELO_ESPESSURA,
            MATRIZ_ID,
            PRODUTO_ID,
            GRADE_ID,
            TAMANHO,
            TAMANHO_DESCRICAO,
            QUANTIDADE,
            QUANTIDADE_SOBRA
    
        FROM (
            SELECT
                X.TALAO_ID,
                X.REMESSA_TALAO_ID,
                X.MODELO_ID,
                CAST(SUBSTRING(X.DENS_ESPESS FROM 1 FOR 5) AS INTEGER)  MODELO_DENSIDADE,
                CAST(SUBSTRING(X.DENS_ESPESS FROM 6 FOR 5) AS NUMERIC(15,2))  MODELO_ESPESSURA,
                X.MATRIZ_ID,
                X.PRODUTO_ID,
                X.TAMANHO,  
                X.TAMANHO_DESCRICAO,
                X.QUANTIDADE,
                X.QUANTIDADE_SOBRA,

                X.LIB,
                X.GRADE_ID,
                X.CLASSE,
                (SELECT FIRST 1 C.DESCRICAO FROM TBCOR C WHERE C.CODIGO = X.COR_ID) COR_DESCRICAO,
                X.SEQ,
                X.PERFIL

            FROM (
            
                SELECT
                    A.ID TALAO_ID,
                    A.REMESSA REMESSA_ID,
                    A.CONTROLE REMESSA_TALAO_ID,
                    A.MODELO_CODIGO MODELO_ID,
                    P.GRADE_CODIGO GRADE_ID,
                    A.MATRIZ_CODIGO MATRIZ_ID,
                    A.PRODUTO_CODIGO PRODUTO_ID,
                    P.COR_CODIGO COR_ID,
                    A.TAMANHO,
                    A.QUANTIDADE,
                    COALESCE(A.LIB,'0') LIB,
                    A.SEQ,
                    COALESCE((SELECT SUM(S.QUANTIDADE)
                                FROM TBREQUISICAO_SOBRA S
                               WHERE S.REMESSA       = A.REMESSA
                                 AND S.TALAO         = A.CONTROLE
                                 AND S.REQUISICAO_ID = 0),0.0000) QUANTIDADE_SOBRA,
                
                   (SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,A.TAMANHO)) TAMANHO_DESCRICAO,
                
                    IIF(A.ESPESSURA > 0 AND A.DENSIDADE > 0, LPAD(A.DENSIDADE,5,'0')||LPAD(A.ESPESSURA,5,'0'),
                    IIF(M.ESPESSURA > 0 AND M.DENSIDADE > 0, LPAD(M.DENSIDADE,5,'0')||LPAD(M.ESPESSURA,5,'0'),
                    COALESCE(
                    (SELECT FIRST 1
                            COALESCE((SELECT FIRST 1
                                        LPAD(M.DENSIDADE,5,'0')||LPAD(M.ESPESSURA,5,'0')
                                        FROM TBMODELO M
                                       WHERE M.CODIGO = P2.MODELO_CODIGO),'0000000000')
                       FROM TBMODELO_CONSUMO_COR MC, TBFAMILIA F, TBPRODUTO P2
                      WHERE MC.MODELO_ID = A.MODELO_CODIGO
                        AND MC.COR_ID = P.COR_CODIGO
                        AND MC.PRODUTO_ID = P2.CODIGO
                        AND P2.FAMILIA_CODIGO = F.CODIGO
                        AND F.DENSIDADE_ESPESSURA = '1'
                        AND((A.TAMANHO = 1 AND MC.T01 > 0) OR
                            (A.TAMANHO = 2 AND MC.T02 > 0) OR
                            (A.TAMANHO = 3 AND MC.T03 > 0) OR
                            (A.TAMANHO = 4 AND MC.T04 > 0) OR
                            (A.TAMANHO = 5 AND MC.T05 > 0) OR
                            (A.TAMANHO = 6 AND MC.T06 > 0) OR
                            (A.TAMANHO = 7 AND MC.T07 > 0) OR
                            (A.TAMANHO = 8 AND MC.T08 > 0) OR
                            (A.TAMANHO = 9 AND MC.T09 > 0) OR
                            (A.TAMANHO =10 AND MC.T10 > 0) OR
                            (A.TAMANHO =11 AND MC.T11 > 0) OR
                            (A.TAMANHO =12 AND MC.T12 > 0) OR
                            (A.TAMANHO =13 AND MC.T13 > 0) OR
                            (A.TAMANHO =14 AND MC.T14 > 0) OR
                            (A.TAMANHO =15 AND MC.T15 > 0) OR
                            (A.TAMANHO =16 AND MC.T16 > 0) OR
                            (A.TAMANHO =17 AND MC.T17 > 0) OR
                            (A.TAMANHO =18 AND MC.T18 > 0) OR
                            (A.TAMANHO =19 AND MC.T19 > 0) OR
                            (A.TAMANHO =20 AND MC.T20 > 0))),'0000000000'))) DENS_ESPESS,

                    (SELECT FIRST 1 COALESCE(C.CLASSE||'.'||LPAD(C.SUBCLASSE,3,'0'),'0.000') FROM TBCOR C WHERE P.COR_CODIGO = C.CODIGO) CLASSE,
                    (SELECT FIRST 1 COALESCE(C.PERFIL,'') FROM TBCOR C WHERE P.COR_CODIGO = C.CODIGO) PERFIL

                FROM TBREMESSA_ITEM_PROCESSADO A
                LEFT JOIN TBPRODUTO P ON A.PRODUTO_CODIGO = P.CODIGO
                LEFT JOIN TBMODELO M ON A.MODELO_CODIGO = M.CODIGO
                WHERE A.REMESSA = :REMESSA_ID
    
                ) X
    
            ORDER BY PERFIL,MODELO_DENSIDADE,MODELO_ESPESSURA,CLASSE,COR_DESCRICAO,PRODUTO_ID,TAMANHO,MATRIZ_ID,REMESSA_TALAO_ID
            ) Y
            WHERE (QUANTIDADE - QUANTIDADE_SOBRA) > 0
    INTO
        :IDENT_PROD_TAM_MTZ,
        :TALAO_ID,
        :REMESSA_TALAO_ID,
        :MODELO_ID,
        :MODELO_DENSIDADE,
        :MODELO_ESPESSURA,
        :MATRIZ_ID,
        :PRODUTO_ID,
        :GRADE_ID,
        :TAMANHO,
        :TAMANHO_DESCRICAO,
        :QUANTIDADE,
        :QUANTIDADE_SOBRA

        

    DO
    BEGIN

        IF ( NOT (COALESCE(MODELO_DENSIDADE,0) > 0) ) THEN
        BEGIN
            EXCEPTION "..." 'TALAO ' || LPAD(REMESSA_TALAO_ID,4,'0') || ' SEM DENSIDADE DE DEFINIDA';
        END


        IF ( NOT (COALESCE(MODELO_ESPESSURA,0) > 0) ) THEN
        BEGIN
            EXCEPTION "..." 'TALAO ' || LPAD(REMESSA_TALAO_ID,4,'0') || ' SEM ESPESSURA DE DEFINIDA';
        END

        IF ( IDENT_PROD_TAM_MTZ = 1 OR REQUISICAO = '1' ) THEN
        BEGIN
            APROVEITAMENTO = 0;
        END

        APROVEITAMENTO_TALAO_ID =
        (SELECT FIRST 1 P.ID
           FROM TBREMESSA_ITEM_PROCESSADO P
          WHERE P.REMESSA = :REMESSA_ID
            AND P.MATRIZ_CODIGO = :MATRIZ_ID
            AND P.PRODUTO_CODIGO = :PRODUTO_ID
            AND P.TAMANHO = :TAMANHO
          ORDER BY P.CONTROLE DESC);

        FOR
            SELECT
                MATRIZ_DESCRICAO,
                COEFICIENTE     MATRIZ_COEFICIENTE,
                LARGURA         MATRIZ_LARGURA,
                PLACA           MATRIZ_PLACA,
                SOBRA           MATRIZ_SOBRA,
                QUANTIDADE      MATRIZ_QUANTIDADE_POR_PLACA,
                (PLACA * QUANTIDADE + SOBRA) MATRIZ_QUANTIDADE_CHAPA
            FROM
                SPC_REMESSA_CONSUMO_MATRIZ(:MATRIZ_ID,:GRADE_ID,:TAMANHO)

        INTO
            :MATRIZ_DESCRICAO,
            :MATRIZ_COEFICIENTE,
            :MATRIZ_LARGURA,
            :MATRIZ_PLACA,
            :MATRIZ_SOBRA,
            :MATRIZ_QUANTIDADE_POR_PLACA,
            :MATRIZ_QUANTIDADE_CHAPA
        DO
        BEGIN
            
            IF ( NOT (MATRIZ_QUANTIDADE_POR_PLACA > 0)  ) THEN
            BEGIN
                EXCEPTION "..." 'TALAO ' || LPAD(REMESSA_TALAO_ID,4,'0') || ' - MATRIZ: ' || LPAD(MATRIZ_ID,5,'0') || ' - ' || MATRIZ_DESCRICAO || ' NO TAMANHO: [' || TAMANHO_DESCRICAO || '] ESTA SEM FATOR DE CONVERSAO OU QUANTIDADE DEFINIDA.';
            END

            CHAPAS = 0;
            PLACAS = 0;
            SOBRAS = 0;

            REQ_SOBRA = IIF( QUANTIDADE_SOBRA > 0, TRUNC(QUANTIDADE_SOBRA / MATRIZ_QUANTIDADE_CHAPA) * MATRIZ_QUANTIDADE_CHAPA, 0);

            CONSUMO_QUANTIDADE = QUANTIDADE - REQ_SOBRA - IIF(REMESSA_TALAO_ID < 8000, IIF(APROVEITAMENTO_TALAO_ID = TALAO_ID, APROVEITAMENTO,0), 0);

            IF ( QUANTIDADE <> QUANTIDADE_SOBRA AND CONSUMO_QUANTIDADE > 0 AND MATRIZ_COEFICIENTE > 0 ) THEN
            BEGIN
                CALC_CHAPA = (MATRIZ_PLACA * MATRIZ_QUANTIDADE_POR_PLACA) + MATRIZ_SOBRA;

                IF ( TRUNC( CONSUMO_QUANTIDADE / CALC_CHAPA ) = (CONSUMO_QUANTIDADE / CALC_CHAPA) ) THEN
                BEGIN
                    CALC_CHAPA = CONSUMO_QUANTIDADE / CALC_CHAPA;
                    CHAPAS = CALC_CHAPA;
                    PLACAS = MATRIZ_PLACA * CALC_CHAPA;
                    SOBRAS = IIF( MATRIZ_SOBRA > 0, CALC_CHAPA, 0);
                END
                ELSE
                BEGIN
                    CHAPAS = TRUNC(CONSUMO_QUANTIDADE/CALC_CHAPA) + IIF(QUANTIDADE - REQ_SOBRA <= V_LIMITE, 1,0);
                    PLACAS = MATRIZ_PLACA * TRUNC(CONSUMO_QUANTIDADE/CALC_CHAPA);
                    SOBRAS = IIF( MATRIZ_SOBRA > 0, TRUNC(CONSUMO_QUANTIDADE/CALC_CHAPA),0 );

                    IF ( QUANTIDADE - REQ_SOBRA <= V_LIMITE ) THEN
                    BEGIN
                        RESTO = CONSUMO_QUANTIDADE - ( PLACAS * MATRIZ_QUANTIDADE_POR_PLACA ) - ( SOBRAS * MATRIZ_SOBRA );

                        IF ( TRUNC( RESTO / MATRIZ_QUANTIDADE_POR_PLACA ) = ( RESTO / MATRIZ_QUANTIDADE_POR_PLACA ) ) THEN
                        BEGIN
                            PLACAS = PLACAS + ( RESTO / MATRIZ_QUANTIDADE_POR_PLACA );
                        END
                        ELSE
                        BEGIN
                            IF ( SOBRAS > 0 ) THEN
                            BEGIN
                                PLACAS = PLACAS + (TRUNC(RESTO / MATRIZ_QUANTIDADE_POR_PLACA));
                                SOBRAS = CHAPAS;

                            END
                            ELSE
                            BEGIN
                                PLACAS = PLACAS + (TRUNC(RESTO / MATRIZ_QUANTIDADE_POR_PLACA)+1);
                            END

                        END
                        

                    END
                END

                

            END



--            IF ( :REMESSA_ID = 45655 AND :REMESSA_TALAO_ID = 224 ) THEN
--            BEGIN
--                EXCEPTION "..." CHAPAS || ' ' || MATRIZ_LARGURA || ' ' || CHAPAS || ' ' || 0.001;
--            END


            EXECUTE PROCEDURE SPU_REMESSA_PEDIDO_TALAO6(
                ESTABELECIMENTO_ID,
                REMESSA_ID, 
                REMESSA_TALAO_ID, 
                CHAPAS,
                PLACAS,
                SOBRAS,
                IIF( TRUNC((MATRIZ_PLACA * CHAPAS) - PLACAS) > 0 , TRUNC((MATRIZ_PLACA * CHAPAS)-PLACAS), 0),
                IIF( MATRIZ_SOBRA > 0 , (TRUNC(CHAPAS) - SOBRAS), 0),
                CONSUMO_QUANTIDADE,
                IIF(REMESSA_TALAO_ID < 8000, IIF( TALAO_ID = APROVEITAMENTO_TALAO_ID, APROVEITAMENTO / MATRIZ_QUANTIDADE_POR_PLACA, 0),0),
                ((CHAPAS * MATRIZ_LARGURA)+(CHAPAS*0.001)),
                MODELO_ESPESSURA,
                MODELO_DENSIDADE
            );

            EXECUTE PROCEDURE SPI_REMESSA_CONSUMO_MATRIZ_V7(
                :REMESSA_ID,
                :REMESSA_TALAO_ID
            );

            APROVEITAMENTO = APROVEITAMENTO + ((TRUNC((MATRIZ_PLACA * CHAPAS ) - PLACAS) ) * MATRIZ_QUANTIDADE_POR_PLACA);

        END





    END

    EXECUTE PROCEDURE SPI_HISTORICO('TBREMESSA',:REMESSA_ID,'CALCULO DE CONSUMO / CALCULO DE APROVEITAMENTO PROCESSADO');
                
END;

CREATE OR ALTER procedure spc_corte_etiqueta (
    remessa_id integer,
    remessa_talao_id integer)
returns (
    etiq blob sub_type 1 segment size 80 character set win1252)
as
declare variable id integer;
declare variable remessa integer;
declare variable remessa_data date;
declare variable remessa_requisicao char(4);
declare variable remessa_tipo char(4);
declare variable controle integer;
declare variable modelo_codigo integer;
declare variable modelo_densidade integer;
declare variable modelo_espessura numeric(18,2);
declare variable matriz_codigo integer;
declare variable matriz_descricao varchar(80);
declare variable matriz_largura numeric(18,5);
declare variable produto_codigo integer;
declare variable produto_descricao varchar(400);
declare variable tamanho integer;
declare variable quantidade numeric(18,5);
declare variable quantidade_sobra numeric(18,4);
declare variable tolerancia numeric(18,4);
declare variable chapas numeric(18,5);
declare variable placas numeric(18,5);
declare variable sobras numeric(18,5);
declare variable placas_ smallint;
declare variable sobras_ smallint;
declare variable lib char(4);
declare variable consumo_medio numeric(18,5);
declare variable placa_altura numeric(18,5);
declare variable placa_comprimento numeric(18,5);
declare variable placa_sobra numeric(18,5);
declare variable placa numeric(18,5);
declare variable observacao varchar(800);
declare variable situacao integer;
declare variable descricao varchar(400);
declare variable grade_codigo integer;
declare variable cor_codigo integer;
declare variable classe varchar(20);
declare variable programacao_boca integer;
declare variable programacao_esteira integer;
declare variable tamanho_grade varchar(40);
declare variable programacao_sequencia integer;
declare variable esteira_descricao varchar(80);
declare variable hora_producao timestamp;
declare variable hora_liberacao timestamp;
declare variable turno char(4);
declare variable cor_descricao varchar(80);
declare variable seq varchar(40);
declare variable perfil varchar(10);
declare variable perc_sobra numeric(18,1);
declare variable flag char(4);
declare variable aproveitamento numeric(18,4);
declare variable mediapar numeric(18,4);
declare variable talao_origem blob sub_type 1 segment size 100;
declare variable largura_t numeric(15,5);
declare variable comprimento_t numeric(15,5);
declare variable placa_t numeric(15,5);
declare variable sobra_t numeric(15,5);
declare variable up_destino varchar(255);
declare variable cliente varchar(255);
declare variable localizacao varchar(255);
declare variable talao_vinculo_controle varchar(50);
begin

SELECT FIRST 1
    ID,
    REMESSA,
    REMESSA_DATA,
    REMESSA_REQUISICAO,
    REMESSA_TIPO,
    CONTROLE,
    MODELO_CODIGO,
    MODELO_DENSIDADE,
    MODELO_ESPESSURA,
    MATRIZ_CODIGO,
    MATRIZ_DESCRICAO,
    MATRIZ_LARGURA,
    PRODUTO_CODIGO,
    PRODUTO_DESCRICAO,
    TAMANHO,
    QUANTIDADE,
    QUANTIDADE_SOBRA,
    TOLERANCIA,
    CHAPAS,
    PLACAS,
    SOBRAS,
    PLACAS_,
    SOBRAS_,
    LIB,
    CONSUMO_MEDIO,
    PLACA_ALTURA,
    PLACA_COMPRIMENTO,
    PLACA_SOBRA,
    PLACA,
    OBSERVACAO,
    SITUACAO,
    DESCRICAO,
    GRADE_CODIGO,
    COR_CODIGO,
    CLASSE,
    PROGRAMACAO_BOCA,
    PROGRAMACAO_ESTEIRA,
    TAMANHO_GRADE,
    PROGRAMACAO_SEQUENCIA,
    ESTEIRA_DESCRICAO,
    HORA_PRODUCAO,
    HORA_LIBERACAO,
    TURNO,
    COR_DESCRICAO,
    SEQ,
    PERFIL,
    PERC_SOBRA,
    FLAG,
    APROVEITAMENTO,
    MEDIAPAR,
    CLIENTE,
    LOCALIZACAO,
    TALAO_VINCULO_CONTROLE
FROM
    (SELECT
        X.ID,
        X.REMESSA,
        X.REMESSA_DATA,
        X.REMESSA_REQUISICAO,
        X.REMESSA_TIPO,
        X.CONTROLE,
        X.MODELO_CODIGO,

        CAST(SUBSTRING(X.DENS_ESPESS FROM 1 FOR 5) AS INTEGER)  MODELO_DENSIDADE,

        CAST(SUBSTRING(X.DENS_ESPESS FROM 6 FOR 5) AS NUMERIC(15,2))  MODELO_ESPESSURA,
        
        X.MATRIZ_CODIGO,
        X.MATRIZ_DESCRICAO,
        X.MATRIZ_LARGURA,
        X.PRODUTO_CODIGO,
        X.PRODUTO_DESCRICAO,
        X.TAMANHO,
        X.QUANTIDADE,
        X.QUANTIDADE_SOBRA,
        X.TOLERANCIA,
        X.CHAPAS,
        X.PLACAS,
        X.SOBRAS,
        X.PLACAS_,
        X.SOBRAS_,
        X.LIB,
        X.CONSUMO_MEDIO,
        X.OBSERVACAO,
        X.SITUACAO,
        X.DESCRICAO,
        X.GRADE_CODIGO,
        X.COR_CODIGO,
        X.CLASSE,
        X.PROGRAMACAO_BOCA,
        X.PROGRAMACAO_ESTEIRA,
        X.TAMANHO_GRADE,
        X.PROGRAMACAO_SEQUENCIA,
        X.ESTEIRA_DESCRICAO,
        X.HORA_PRODUCAO,
        X.HORA_LIBERACAO,
        X.TURNO,
        (SELECT FIRST 1 DESCRICAO FROM TBCOR WHERE CODIGO = X.COR_CODIGO) COR_DESCRICAO,
        X.SEQ,
        X.PERFIL,
        X.PERC_SOBRA,
        '0' FLAG,
        X.APROVEITAMENTO,

        (SELECT FIRST 1 LARGURA
          FROM SPC_REMESSA_CONSUMO_MATRIZ(X.MATRIZ_CODIGO,X.GRADE_CODIGO,X.TAMANHO)) PLACA_ALTURA,
        (SELECT FIRST 1 COMPRIMENTO
          FROM SPC_REMESSA_CONSUMO_MATRIZ(X.MATRIZ_CODIGO,X.GRADE_CODIGO,X.TAMANHO)) PLACA_COMPRIMENTO,  
        (SELECT FIRST 1 SOBRA
          FROM SPC_REMESSA_CONSUMO_MATRIZ(X.MATRIZ_CODIGO,X.GRADE_CODIGO,X.TAMANHO)) PLACA_SOBRA,    
        (SELECT FIRST 1 PLACA
          FROM SPC_REMESSA_CONSUMO_MATRIZ(X.MATRIZ_CODIGO,X.GRADE_CODIGO,X.TAMANHO)) PLACA,

        CAST(IIF(X.CONSUMO_MEDIO>0,(X.QUANTIDADE-X.QUANTIDADE_SOBRA)/X.CONSUMO_MEDIO,0) AS NUMERIC(15,4)) MEDIAPAR,
        CLIENTE,
        LOCALIZACAO,
        TALAO_VINCULO_CONTROLE
    FROM
       (SELECT
            A.ID,
            A.REMESSA,
            R.DATA REMESSA_DATA,
            R.REQUISICAO REMESSA_REQUISICAO,
            R.TIPO REMESSA_TIPO,
            A.CONTROLE,
            A.MODELO_CODIGO,
            P.GRADE_CODIGO,
            A.MATRIZ_CODIGO,
            A.PRODUTO_CODIGO,
            P.DESCRICAO PRODUTO_DESCRICAO,
            A.TAMANHO,
            A.QUANTIDADE,
            A.TOLERANCIA,
            A.CHAPAS,
            A.PLACAS,
            A.SOBRAS,
            A.PLACAS_,
            A.SOBRAS_,
            A.CONSUMO_MEDIO,
            A.OBSERVACAO,
            A.SITUACAO,
            P.DESCRICAO,
            P.COR_CODIGO,
            A.PROGRAMACAO_BOCA,
            A.PROGRAMACAO_ESTEIRA,
            A.PROGRAMACAO_SEQUENCIA,
            A.HORA_PRODUCAO,
            A.HORA_LIBERACAO,
            A.TURNO,
            A.SEQ,
                         
            COALESCE(A.LIB,'0') LIB,

            COALESCE((SELECT SUM(S.QUANTIDADE) FROM TBREQUISICAO_SOBRA S
                       WHERE S.REMESSA = A.REMESSA AND S.TALAO = A.CONTROLE
                         AND S.REQUISICAO_ID = 0),0.0000) QUANTIDADE_SOBRA,

           (SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,A.TAMANHO)) TAMANHO_GRADE,

            IIF(A.ESPESSURA > 0 AND A.DENSIDADE > 0, LPAD(A.DENSIDADE,5,'0')||LPAD(A.ESPESSURA,5,'0'),
            IIF(M.ESPESSURA > 0 AND M.DENSIDADE > 0, LPAD(M.DENSIDADE,5,'0')||LPAD(M.ESPESSURA,5,'0'),
            COALESCE(
            (SELECT FIRST 1
              COALESCE((SELECT FIRST 1 LPAD(M.DENSIDADE,5,'0')||LPAD(M.ESPESSURA,5,'0')
                 FROM TBMODELO M WHERE M.CODIGO = P2.MODELO_CODIGO),'0000000000')
              FROM TBMODELO_CONSUMO_COR MC, TBFAMILIA F, TBPRODUTO P2
             WHERE MC.MODELO_ID = A.MODELO_CODIGO
               AND MC.COR_ID = P.COR_CODIGO
               AND MC.PRODUTO_ID = P2.CODIGO
               AND P2.FAMILIA_CODIGO = F.CODIGO
               AND F.DENSIDADE_ESPESSURA = '1'),'0000000000'))) DENS_ESPESS,
        
            (SELECT FIRST 1 E.DESCRICAO FROM TBESTEIRA E WHERE A.PROGRAMACAO_ESTEIRA = E.CODIGO) ESTEIRA_DESCRICAO,

            (SELECT FIRST 1 G.DESCRICAO FROM TBMATRIZ G WHERE A.MATRIZ_CODIGO = G.CODIGO) MATRIZ_DESCRICAO,

            (SELECT FIRST 1 H.LARGURA   FROM TBMATRIZ H WHERE A.MATRIZ_CODIGO = H.CODIGO) MATRIZ_LARGURA,

            (SELECT FIRST 1 COALESCE(CLASSE||'.'||LPAD(SUBCLASSE,3,'0'),'0.000') FROM TBCOR WHERE P.COR_CODIGO = CODIGO) CLASSE,

            (SELECT FIRST 1 COALESCE(PERFIL,'') FROM TBCOR WHERE P.COR_CODIGO = CODIGO) PERFIL, A.PERC_SOBRA, A.APROVEITAMENTO,

            COALESCE((SELECT
                X.TABELA_ID ||' - '||
               (SELECT FIRST 1 (SELECT FIRST 1 LEFT(E.RAZAOSOCIAL,20) FROM TBEMPRESA E WHERE E.CODIGO = P.CLIENTE_CODIGO)
                  FROM TBPEDIDO P
                 WHERE P.PEDIDO = X.TABELA_ID) CLIENTE
            FROM (
                SELECT FIRST 1 B.TABELA_ID
                FROM TBPEDIDO_ITEM_PROCESSADO A, TBREMESSA_ITEM_ALOCACAO B
                WHERE A.REMESSA = C.REMESSA_ID
                  AND A.REMESSA_ACUMULADO_CONTROLE = C.REMESSA_TALAO_ID
                  AND A.ESTABELECIMENTO_CODIGO = B.ESTABELECIMENTO_ID
                  AND A.REMESSA = B.REMESSA
                  AND A.CONTROLE = B.TALAO
                  AND TIPO = 'P'
                  AND B.STATUS = 1) X
            ),'PRONTA ENTREGA')CLIENTE,
            COALESCE((SELECT FIRST 1 LPAD(L.CODIGO,3,0)||' - '||L.DESCRICAO AS LOCALIZACAO FROM TBLOCALIZACAO L WHERE L.CODIGO = A.LOCALIZACAO_ID),'') AS LOCALIZACAO,
            COALESCE((SELECT FIRST 1 ' T.' ||FN_LPAD(T1.REMESSA_TALAO_ID,4,0) || ' '
               FROM VWREMESSA_TALAO T1
              WHERE T1.ID = A.TALAO_VINCULO),'') TALAO_VINCULO_CONTROLE
    
        
        FROM
            TBPRODUTO P,
            TBMODELO M,
            TBREMESSA R,
            TBREMESSA_ITEM_PROCESSADO A
            left join VWREMESSA_CONSUMO C on A.REMESSA = C.REMESSA_ID and a.CONTROLE = C.REMESSA_TALAO_ID
        WHERE          
            A.PRODUTO_CODIGO = P.CODIGO
        AND A.MODELO_CODIGO  = M.CODIGO
        AND A.REMESSA        = R.NUMERO
        AND A.REMESSA        = :REMESSA_ID
        AND A.CONTROLE       = :REMESSA_TALAO_ID
        ORDER BY A.CONTROLE
        ) X
    ) Y
    ORDER BY MODELO_DENSIDADE DESC, MODELO_ESPESSURA DESC, CLASSE DESC, COR_DESCRICAO, PLACA_ALTURA, PLACA_COMPRIMENTO, ESTEIRA_DESCRICAO DESC, PRODUTO_DESCRICAO DESC
INTO
    ID,
    REMESSA,
    REMESSA_DATA,
    REMESSA_REQUISICAO,
    REMESSA_TIPO,
    CONTROLE,
    MODELO_CODIGO,
    MODELO_DENSIDADE,
    MODELO_ESPESSURA,
    MATRIZ_CODIGO,
    MATRIZ_DESCRICAO,
    MATRIZ_LARGURA,
    PRODUTO_CODIGO,
    PRODUTO_DESCRICAO,
    TAMANHO,
    QUANTIDADE,
    QUANTIDADE_SOBRA,
    TOLERANCIA,
    CHAPAS,
    PLACAS,
    SOBRAS,
    PLACAS_,
    SOBRAS_,
    LIB,
    CONSUMO_MEDIO,
    PLACA_ALTURA,
    PLACA_COMPRIMENTO,
    PLACA_SOBRA,
    PLACA,
    OBSERVACAO,
    SITUACAO,
    DESCRICAO,
    GRADE_CODIGO,
    COR_CODIGO,
    CLASSE,
    PROGRAMACAO_BOCA,
    PROGRAMACAO_ESTEIRA,
    TAMANHO_GRADE,
    PROGRAMACAO_SEQUENCIA,
    ESTEIRA_DESCRICAO,
    HORA_PRODUCAO,
    HORA_LIBERACAO,
    TURNO,
    COR_DESCRICAO,
    SEQ,
    PERFIL,
    PERC_SOBRA,
    FLAG,
    APROVEITAMENTO,
    MEDIAPAR,
    CLIENTE,
    LOCALIZACAO,
    TALAO_VINCULO_CONTROLE;


    ETIQ = '';
    IF ( ID > 0) THEN
    BEGIN
    
        ETIQ = COALESCE((
        SELECT FIRST 1 E.SCRIPT
          FROM TBETIQUETAS E
         WHERE E.ID = 136),'');
        
        SELECT FIRST 1
               FN_LPAD(T2.REMESSA_TALAO_ID,4,0) TALAO_ORIGEM,
               FN_DESCRICAO('TBUP',T2.UP_ID)UP_DESCRICAO
          FROM VWREMESSA_CONSUMO C,
               TBREMESSA_CONSUMO_VINCULO V,
               VWREMESSA_TALAO T2
         WHERE C.REMESSA_ID        = :REMESSA
           AND C.REMESSA_TALAO_ID  = :CONTROLE
           AND V.CONSUMO_ID        = C.ID
           AND T2.REMESSA_ID       = V.REMESSA_ID
           AND T2.REMESSA_TALAO_ID = V.REMESSA_TALAO_ID
          INTO TALAO_ORIGEM,
               UP_DESTINO;

        TALAO_ORIGEM = COALESCE(TALAO_ORIGEM,'');
        UP_DESTINO   = COALESCE(UP_DESTINO,'');




        ETIQ = REPLACE(ETIQ,':)'                   ,'#2');
        ETIQ = REPLACE(ETIQ,'#MTZ#'                ,MATRIZ_DESCRICAO);
        ETIQ = REPLACE(ETIQ,'#CONSUMO#'            ,FN_FORMAT_NUMBER(CONSUMO_MEDIO,2)||' MTS '||FN_FORMAT_NUMBER(MEDIAPAR,2)||' PRS/MT');
        ETIQ = REPLACE(ETIQ,'#ESPESSURA#'          ,FN_FORMAT_NUMBER(MODELO_ESPESSURA,2));
        ETIQ = REPLACE(ETIQ,'#DENSIDADE#'          ,FN_LPAD(MODELO_DENSIDADE,2,0));
        ETIQ = REPLACE(ETIQ,'#CODIGOLIBERACAO1#'   ,FN_LPAD(REMESSA,6,0)||FN_LPAD(CONTROLE,4,0)||'03');
        ETIQ = REPLACE(ETIQ,'#CODIGOLIBERACAO2#'   ,FN_LPAD(REMESSA,6,0)||FN_LPAD(CONTROLE,4,0)||'04');
        ETIQ = REPLACE(ETIQ,'#NUMERO_TALAO#'       ,FN_LPAD(CONTROLE,3,0));
        ETIQ = REPLACE(ETIQ,'#TAMANHO#'            ,TAMANHO_GRADE);
        ETIQ = REPLACE(ETIQ,'#DATA_HORA_IMPRESSAO#',FN_DATE('NOW','DT HRS'));
        ETIQ = REPLACE(ETIQ,'#QUANTIDADELIBERACAO#',FN_FORMAT_NUMBER(QUANTIDADE-QUANTIDADE_SOBRA));
        ETIQ = REPLACE(ETIQ,'#QUANTIDADE_SOBRA#'   ,FN_FORMAT_NUMBER(QUANTIDADE_SOBRA));
        ETIQ = REPLACE(ETIQ,'#FABRICA#'            ,ESTEIRA_DESCRICAO);
        ETIQ = REPLACE(ETIQ,'#DATA#'               ,FN_DATE(REMESSA_DATA,'DT'));
        ETIQ = REPLACE(ETIQ,'#CHAPAS#'             ,FN_LPAD(FN_FORMAT_NUMBER(CHAPAS),2,0));
        ETIQ = REPLACE(ETIQ,'#PLACAS#'             ,FN_LPAD(FN_FORMAT_NUMBER(PLACAS),2,0));
        ETIQ = REPLACE(ETIQ,'#SOBRAS#'             ,FN_LPAD(FN_FORMAT_NUMBER(SOBRAS),2,0));
        ETIQ = REPLACE(ETIQ,'#SUB_PLACAS#'         ,FN_LPAD(FN_FORMAT_NUMBER(PLACAS_),2,0));
        ETIQ = REPLACE(ETIQ,'#SUB_SOBRAS#'         ,FN_LPAD(FN_FORMAT_NUMBER(SOBRAS_),2,0));
        ETIQ = REPLACE(ETIQ,'#REMESSA#'            ,FN_LPAD(REMESSA,5,0));
        ETIQ = REPLACE(ETIQ,'#TURNO#'              ,TURNO);
        ETIQ = REPLACE(ETIQ,'#OB#'                 ,'');
        ETIQ = REPLACE(ETIQ,'#SUBUP#'              ,FN_LPAD(PROGRAMACAO_BOCA,2,0));
        ETIQ = REPLACE(ETIQ,'#CLASSE#'             ,'('||FN_FORMAT_NUMBER(CLASSE)||')');
        ETIQ = REPLACE(ETIQ,'#PRODUTO_ID#'         ,FN_LPAD(PRODUTO_CODIGO,5,0));
        ETIQ = REPLACE(ETIQ,'#PRODUTO#'            ,FN_REMOVE_ACENTOS(PRODUTO_DESCRICAO));
        ETIQ = REPLACE(ETIQ,'#PRODUTO2#'           ,TRIM(REPLACE(PRODUTO_DESCRICAO,'BOJO','')));
        ETIQ = REPLACE(ETIQ,'#COMPOSICAO#'         ,'');
        ETIQ = REPLACE(ETIQ,'#VIP#'                ,IIF(REMESSA_TIPO = '2','VIP',''));
        ETIQ = REPLACE(ETIQ,'#CLIENTE#'            ,CLIENTE );
        ETIQ = REPLACE(ETIQ,'#APROVEITAMENTO#'     ,IIF(APROVEITAMENTO > 0,'+'||FN_FORMAT_NUMBER(APROVEITAMENTO),''));
        ETIQ = REPLACE(ETIQ,'#TALAO_ORIGEM#'       ,TALAO_ORIGEM);
        ETIQ = REPLACE(ETIQ,'#UP_DESTINO#'         ,UP_DESTINO);
    
        IF ( MATRIZ_CODIGO > 0 ) THEN
        BEGIN
            ETIQ = REPLACE(ETIQ,'#TAMANHOPLACAS#',FN_FORMAT_NUMBER(PLACA_ALTURA,2)||' X '|| FN_FORMAT_NUMBER(PLACA_COMPRIMENTO,2));
            
            IF (PLACA_SOBRA > 0) THEN
            BEGIN
                ETIQ = REPLACE(ETIQ,'#TAMANHOSOBRAS#',FN_FORMAT_NUMBER(PLACA_ALTURA,2)||' X '|| FN_FORMAT_NUMBER(MATRIZ_LARGURA - (PLACA * PLACA_COMPRIMENTO),2));
            END
            ELSE
            BEGIN
                ETIQ = REPLACE(ETIQ,'#TAMANHOSOBRAS#','');
            END
        END
        ELSE
        BEGIN
            ETIQ = REPLACE(ETIQ,'#TAMANHOPLACAS#','');
            ETIQ = REPLACE(ETIQ,'#TAMANHOSOBRAS#','');
        END
    
                                            
        ETIQ = REPLACE(ETIQ,'#SEQUENCIAL2#',TALAO_VINCULO_CONTROLE);
--        IF (SUBSTRING(SEQ FROM 1 FOR 3) = 'ULT') THEN
--        BEGIN
--            ETIQ = REPLACE(ETIQ,'#SEQUENCIAL1#','');
--            ETIQ = REPLACE(ETIQ,'#SEQUENCIAL2#',SEQ);
--        END ELSE
--        BEGIN
--            ETIQ = REPLACE(ETIQ,'#SEQUENCIAL1#',SEQ);
--            ETIQ = REPLACE(ETIQ,'#SEQUENCIAL2#','');
--        END
    
        IF ((PERC_SOBRA > 0) AND (REMESSA_REQUISICAO = '0')) THEN --SOBRAS
        BEGIN
            ETIQ = REPLACE(ETIQ,'#TIPO#','R');
            ETIQ = REPLACE(ETIQ,'#COMENTARIO#',FN_FORMAT_NUMBER(PERC_SOBRA,1)||'%');
        END
        ELSE
        IF ((CONTROLE > 9000) AND (REMESSA_REQUISICAO = '1')) THEN --REQUISIÇÃO
        BEGIN
            ETIQ = REPLACE(ETIQ,'#TIPO#','R');
            ETIQ = REPLACE(ETIQ,'#COMENTARIO#',' REQ ');
        END
        ELSE
        BEGIN                                         --NORMAL
            ETIQ = REPLACE(ETIQ,'#TIPO#','N');
            ETIQ = REPLACE(ETIQ,'#COMENTARIO#','');
        END
    END

    SUSPEND;

end;

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.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.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.STATUS <> NEW.STATUS) then
       BEGIN
       if (NEW.STATUS = '0') then
           HISTORICO = HISTORICO||' Status Inativado';
       if (NEW.STATUS = '1') then
           HISTORICO = HISTORICO||' Status Ativado';
       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;
