            BEGIN
    
                IF(GERAR = 1)THEN
                BEGIN
                    /**
                     * Codigo que ira referenciar pares de insumo
                     */
                    IF ((OLD_TALAO_DETALHE_ID   <> :REMESSA_TALAO_DETALHE_ID) OR
                        (OLD_DESTINO_FAMILIA_ID <> :DESTINO_FAMILIA_ID))
                    THEN
                    BEGIN
                        CONTROLE2 = COALESCE(CONTROLE2,0)+1;
                    END
    
                    /**
                     * Inicio do loop que forma os pares de insumo caso FATOR_MULT for maior que 1
                     */
                    INCREMENTO = 1;
                    WHILE (INCREMENTO <= :FATOR_MULT) DO
                    BEGIN
    
                        /**
                         * Verifica se houve alguma projecao gerada
                         */
                        IF (:PROJECAO_QUANTIDADE > 0) THEN
                        BEGIN
                            /* Calcula as projecaes de consumo */
                            CONSUMO_QUANTIDADE2  = :PROJECAO_QUANTIDADE / :FATOR_DIV / :FATOR_MULT;
                            CONSUMO_ALTERNATIVO2 = IIF((TRIM(UM_ALTERNATIVA)='') OR UM_ALTERNATIVA IS NULL,0,:PROJECAO_QUANTIDADE / :FATOR_MULT);
        
                            IF (ACUMULA_PROJECAO = '1') THEN
                            BEGIN
    
                                OLD_VALORES =
                                (SELECT FIRST 1
                                       (LPAD(COALESCE(QUANTIDADE_ORIGINAL   ,0),20)||
                                        LPAD(COALESCE(QUANTIDADE            ,0),20)||
                                        LPAD(COALESCE(QUANTIDADE_ALTERNATIVA,0),20))
                                FROM  VWREMESSA_CONSUMO
                                WHERE ESTABELECIMENTO_ID = :ESTABELECIMENTO_ID
                                  AND REMESSA_ID         = :REMESSA_ID
                                  AND REMESSA_TALAO_ID   = :REMESSA_TALAO_ID
                                  AND PRODUTO_ID         = :PROJECAO_PRODUTO_ID
                                  AND TAMANHO            = :PROJECAO_TAMANHO
                                );
        
                                OLD_QUANTIDADE_ORIGINAL    = CAST(COALESCE(SUBSTRING(OLD_VALORES FROM  1 FOR 20),0) AS NUMERIC(15,4));
                                OLD_QUANTIDADE             = CAST(COALESCE(SUBSTRING(OLD_VALORES FROM 21 FOR 20),0) AS NUMERIC(15,4));
                                OLD_QUANTIDADE_ALTERNATIVA = CAST(COALESCE(SUBSTRING(OLD_VALORES FROM 41 FOR 20),0) AS NUMERIC(15,4));
                                                    
    --                            QUANTIDADE           = TALAO_QUANTIDADE;
                                --QUANTIDADE           = QUANTIDADE           + OLD_QUANTIDADE_ORIGINAL;
                                CONSUMO_QUANTIDADE2  = CONSUMO_QUANTIDADE2  + OLD_QUANTIDADE;
                                CONSUMO_ALTERNATIVO2 = CONSUMO_ALTERNATIVO2 + OLD_QUANTIDADE_ALTERNATIVA;
    
                                /* Atualiza ou insere o consumo na tabela (PROJECAO ACUMULADA) */
                                UPDATE OR INSERT INTO
                                VWREMESSA_CONSUMO (
                                    ESTABELECIMENTO_ID,
                                    REMESSA_ID,
                                    REMESSA_TALAO_ID,
                                    CONTROLE,
                                    LOCALIZACAO_ID,
                                    PRODUTO_ID,
                                    TAMANHO,
                                    DENSIDADE,
                                    ESPESSURA,
                                    QUANTIDADE_ORIGINAL,
                                    QUANTIDADE_NECES,
                                    QUANTIDADE_NECES_ALTERN,
                                    QUANTIDADE,
                                    QUANTIDADE_ALTERNATIVA,
                                    SALDO_BAIXAR,
                                    COMPONENTE
                                ) VALUES (
                                    :ESTABELECIMENTO_ID,
                                    :REMESSA_ID,
                                    :REMESSA_TALAO_ID,
                                    :CONTROLE2,
                                    :PROJECAO_LOCALIZACAO_ID,
                                    :PROJECAO_PRODUTO_ID,
                                    :PROJECAO_TAMANHO,
                                    :DENSIDADE,
                                    :ESPESSURA,
                                    :TALAO_QUANTIDADE,
                                    :CONSUMO_QUANTIDADE2,
                                    :CONSUMO_ALTERNATIVO2, 
                                    :CONSUMO_QUANTIDADE2,
                                    :CONSUMO_ALTERNATIVO2, 
                                    :CONSUMO_QUANTIDADE2,
                                    '0'
                                ) MATCHING (
                                    ESTABELECIMENTO_ID,
                                    REMESSA_ID,
                                    REMESSA_TALAO_ID,
                                    PRODUTO_ID,
                                    TAMANHO
                                );
                            END
                            ELSE
                            BEGIN
                                /* Insere o consumo na tabela (PROJECAO NAO ACUMULADA) */
                                INSERT INTO
                                VWREMESSA_CONSUMO (
                                    ESTABELECIMENTO_ID,
                                    REMESSA_ID,
                                    REMESSA_TALAO_ID,
                                    REMESSA_TALAO_DETALHE_ID,      
                                    CONTROLE,
                                    LOCALIZACAO_ID,
                                    PRODUTO_ID,
                                    TAMANHO,
                                    DENSIDADE,
                                    ESPESSURA,
                                    QUANTIDADE_ORIGINAL,  
                                    QUANTIDADE_NECES,
                                    QUANTIDADE_NECES_ALTERN,
                                    QUANTIDADE,
                                    QUANTIDADE_ALTERNATIVA,   
                                    SALDO_BAIXAR,
                                    COMPONENTE
                                ) VALUES (
                                    :ESTABELECIMENTO_ID,
                                    :REMESSA_ID,
                                    :REMESSA_TALAO_ID,
                                    :REMESSA_TALAO_DETALHE_ID,  
                                    :CONTROLE2,
                                    :PROJECAO_LOCALIZACAO_ID,
                                    :PROJECAO_PRODUTO_ID,
                                    :PROJECAO_TAMANHO,
                                    :DENSIDADE,
                                    :ESPESSURA,
                                    :QUANTIDADE,     
                                    :CONSUMO_QUANTIDADE2,
                                    :CONSUMO_ALTERNATIVO2, 
                                    :CONSUMO_QUANTIDADE2,
                                    :CONSUMO_ALTERNATIVO2, 
                                    :CONSUMO_QUANTIDADE2,
                                    '0'
                                );
                            END
                        END
        
                        INCREMENTO = INCREMENTO+1;
                    END
            
                    OLD_TALAO_DETALHE_ID   = :REMESSA_TALAO_DETALHE_ID;
                    OLD_DESTINO_FAMILIA_ID = :DESTINO_FAMILIA_ID;
                      
                    O_ESTABELECIMENTO_ID            = :ESTABELECIMENTO_ID      ;
                    O_REMESSA_ID                    = :REMESSA_ID              ;
                    O_REMESSA_TALAO_ID              = :REMESSA_TALAO_ID        ;
                    O_CONTROLE                      = :CONTROLE2               ;
                    O_LOCALIZACAO_ID                = :PROJECAO_LOCALIZACAO_ID ;
                    O_PRODUTO_ID                    = :PROJECAO_PRODUTO_ID     ;
                    O_TAMANHO                       = :PROJECAO_TAMANHO        ;
                    O_DENSIDADE                     = :DENSIDADE               ;
                    O_ESPESSURA                     = :ESPESSURA               ;
                    O_QUANTIDADE                    = :CONSUMO_QUANTIDADE2     ;
                    O_QUANTIDADE_ALTERNATIVA        = :CONSUMO_ALTERNATIVO2    ;
                END
            END
        END
    END

END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPI_REM_CONSUMO_INSUMO_GP_V2 (
    ESTABELECIMENTO_ID integer,
    REMESSA_ID integer)
as
declare variable O_ESTABELECIMENTO_ID integer;
declare variable O_REMESSA_ID integer;
declare variable O_REMESSA_TALAO_ID integer;
declare variable O_CONTROLE integer;
declare variable O_LOCALIZACAO_ID integer;
declare variable O_PRODUTO_ID integer;
declare variable O_TAMANHO integer;
declare variable O_DENSIDADE numeric(15,2);
declare variable O_ESPESSURA numeric(15,2);
declare variable O_QUANTIDADE numeric(15,4);
declare variable O_QUANTIDADE_ALTERNATIVA numeric(15,4);
declare variable REMESSA_TALAO_ID integer;
declare variable REMESSA_TALAO_DETALHE_ID integer;
declare variable MODELO_ID integer;
declare variable COR_ID integer;
declare variable TAMANHO integer;
declare variable DENSIDADE smallint;
declare variable ESPESSURA numeric(15,4);
declare variable TALAO_QUANTIDADE numeric(15,4);
declare variable QUANTIDADE numeric(15,4);
declare variable QUANTIDADE_ALTERNATIVA numeric(15,4);
declare variable PROJECAO_PRODUTO_ID integer;
declare variable PROJECAO_TAMANHO integer;
declare variable PROJECAO_LOCALIZACAO_ID integer;
declare variable PROJECAO_QUANTIDADE numeric(15,4);
declare variable FATOR_MULT numeric(10,1);
declare variable FATOR_DIV numeric(15,4);
declare variable DESTINO_FAMILIA_ID integer;
declare variable UM_ALTERNATIVA varchar(10);
declare variable INCREMENTO integer;
declare variable CONTROLE2 integer;
declare variable OLD_TALAO_DETALHE_ID integer;
declare variable OLD_DESTINO_FAMILIA_ID integer;
declare variable CONSUMO_QUANTIDADE2 numeric(15,4);
declare variable CONSUMO_ALTERNATIVO2 numeric(15,4);
declare variable ACUMULA_PROJECAO char(1);
declare variable OLD_VALORES varchar(500);
declare variable OLD_QUANTIDADE_ORIGINAL numeric(15,4);
declare variable OLD_QUANTIDADE numeric(15,4);
declare variable OLD_QUANTIDADE_ALTERNATIVA numeric(15,4);
declare variable PROJECAO_DIRETA integer;
declare variable PROJECAO_GP integer;
declare variable FAMILIA_ID integer;
declare variable PRODUTO_ID integer;
declare variable CONSUMO_QUANTIDADE1 numeric(15,4);
declare variable CONSUMO_ALTERNATIVO1 numeric(15,4);
declare variable CONTROLE1 integer;
declare variable LOCALIZACAO_ID integer;
declare variable GP_ID integer;
declare variable UM varchar(10);
declare variable CONSUMO_PERMITE_FRACAO varchar(10);
declare variable FAMILIA_MODELO_ID integer;
declare variable GERAR integer;
declare variable SETOR_ID integer;
BEGIN
    /**
     * Limpa os registros atuais para poder recalcular
     */
    DELETE FROM VWREMESSA_CONSUMO A WHERE A.ESTABELECIMENTO_ID = :ESTABELECIMENTO_ID AND A.REMESSA_ID = :REMESSA_ID;

    CONTROLE1 = 0;
    CONTROLE2 = 1;

    /**
     * Inicio do loop que carrega todos os taloes detalhados da remessa que foi parametrizada
     */
    FOR
        SELECT
            M.FAMILIA_CODIGO,
            D.REMESSA_TALAO_ID,
            D.ID REMESSA_TALAO_DETALHE_ID,
            D.MODELO_ID,
            D.COR_ID,
            D.TAMANHO,
            T.DENSIDADE,
            T.ESPESSURA,
            T.QUANTIDADE TALAO_QUANTIDADE,
            D.QUANTIDADE,
            D.QUANTIDADE_ALTERN,
            P.FAMILIA_CODIGO,
            D.PRODUTO_ID,
            D.LOCALIZACAO_ID,
            T.GP_ID

        FROM
            VWREMESSA_TALAO_DETALHE D,
            VWREMESSA_TALAO T,
            TBPRODUTO P,
            TBMODELO M

        WHERE
            D.REMESSA_ID         = T.REMESSA_ID
        AND D.REMESSA_TALAO_ID   = T.REMESSA_TALAO_ID
        AND P.CODIGO             = D.PRODUTO_ID
        AND D.ESTABELECIMENTO_ID = :Estabelecimento_Id
        AND D.REMESSA_ID         = :REMESSA_ID
        AND M.CODIGO             = P.MODELO_CODIGO
        AND T.REMESSA_TALAO_ID < 9000 /* Remove os taloes de sobra da remessa */

    INTO
        :FAMILIA_MODELO_ID,
        :REMESSA_TALAO_ID,
        :REMESSA_TALAO_DETALHE_ID,
        :MODELO_ID,
        :COR_ID,
        :TAMANHO,
        :DENSIDADE,
        :ESPESSURA,
        :TALAO_QUANTIDADE,
        :QUANTIDADE,
        :QUANTIDADE_ALTERNATIVA,
        :FAMILIA_ID,
        :PRODUTO_ID,
        :LOCALIZACAO_ID,
        :GP_ID
    DO
    BEGIN
        /**
         * Variavel que vai verificar se sera gerada projecao de consumo direto do proprio talao (FAMILIA PROJECAO = FAMILIA TALAO)
         */
        PROJECAO_DIRETA = (SELECT FIRST 1 ACUMULA_PROJECAO
                           FROM TBFAMILIA_MODELO_ALOCACAO A
                           WHERE A.FAMILIA_ID        = :FAMILIA_ID
                             AND A.FAMILIA_MODELO_ID = :FAMILIA_ID  
                             AND A.GP_ORIGEM         = :GP_ID
                             );

        /* Verifica se o item tem projecao de si mesmo (CACHARREL / EDC DIV. ESPUMAS) */
        IF (PROJECAO_DIRETA IS NOT NULL) THEN
        BEGIN

            /**
             * Codigo que ira referenciar pares de insumo
             */
            CONTROLE1            = COALESCE(CONTROLE1,0)+1;
            CONSUMO_QUANTIDADE1  = :QUANTIDADE;
            CONSUMO_ALTERNATIVO1 = :QUANTIDADE_ALTERNATIVA;

            /**
             * Verifica se ACUMULA PROJECAO
             */
            IF (PROJECAO_DIRETA = '1') THEN
            BEGIN

                OLD_VALORES =
                (SELECT FIRST 1
                       (LPAD(COALESCE(QUANTIDADE_ORIGINAL   ,0),20)||
                        LPAD(COALESCE(QUANTIDADE            ,0),20)||
                        LPAD(COALESCE(QUANTIDADE_ALTERNATIVA,0),20))
                FROM  VWREMESSA_CONSUMO
                WHERE ESTABELECIMENTO_ID = :ESTABELECIMENTO_ID
                  AND REMESSA_ID         = :REMESSA_ID
                  AND REMESSA_TALAO_ID   = :REMESSA_TALAO_ID
                  AND PRODUTO_ID         = :PRODUTO_ID
                  AND TAMANHO            = :TAMANHO
                );

                OLD_QUANTIDADE_ORIGINAL    = CAST(COALESCE(SUBSTRING(OLD_VALORES FROM  1 FOR 20),0) AS NUMERIC(15,4));
                OLD_QUANTIDADE             = CAST(COALESCE(SUBSTRING(OLD_VALORES FROM 21 FOR 20),0) AS NUMERIC(15,4));
                OLD_QUANTIDADE_ALTERNATIVA = CAST(COALESCE(SUBSTRING(OLD_VALORES FROM 41 FOR 20),0) AS NUMERIC(15,4));
                                    
--                QUANTIDADE           = QUANTIDADE           + OLD_QUANTIDADE_ORIGINAL;
--                CONSUMO_QUANTIDADE1  = CONSUMO_QUANTIDADE1  + OLD_QUANTIDADE;
--                CONSUMO_ALTERNATIVO1 = CONSUMO_ALTERNATIVO1 + OLD_QUANTIDADE_ALTERNATIVA;

--                QUANTIDADE           = TALAO_QUANTIDADE;
                --QUANTIDADE           = QUANTIDADE           + OLD_QUANTIDADE_ORIGINAL;
                CONSUMO_QUANTIDADE1  = CONSUMO_QUANTIDADE1  + OLD_QUANTIDADE;
                CONSUMO_ALTERNATIVO1 = CONSUMO_ALTERNATIVO1 + OLD_QUANTIDADE_ALTERNATIVA;
    
                /* Atualiza ou insere o consumo na tabela (PROJECAO ACUMULADA) */
                UPDATE OR INSERT INTO
                VWREMESSA_CONSUMO (
                    ESTABELECIMENTO_ID,
                    REMESSA_ID,
                    REMESSA_TALAO_ID,
                    CONTROLE,
                    LOCALIZACAO_ID,
                    PRODUTO_ID,
                    TAMANHO,
                    DENSIDADE,
                    ESPESSURA,
                    QUANTIDADE_ORIGINAL,
                    QUANTIDADE_NECES,
                    QUANTIDADE_NECES_ALTERN,
                    QUANTIDADE,
                    QUANTIDADE_ALTERNATIVA,
                    SALDO_BAIXAR,
                    COMPONENTE
                ) VALUES (
                    :ESTABELECIMENTO_ID,
                    :REMESSA_ID,
                    :REMESSA_TALAO_ID,
                    :CONTROLE1,
                    :LOCALIZACAO_ID,
                    :PRODUTO_ID,
                    :TAMANHO,
                    :DENSIDADE,
                    :ESPESSURA,  
                    :TALAO_QUANTIDADE,
                    :CONSUMO_QUANTIDADE1,
                    :CONSUMO_ALTERNATIVO1,
                    :CONSUMO_QUANTIDADE1,
                    :CONSUMO_ALTERNATIVO1,
                    :CONSUMO_QUANTIDADE1,
                    '0'
                ) MATCHING (
                    ESTABELECIMENTO_ID,
                    REMESSA_ID,
                    REMESSA_TALAO_ID,
                    PRODUTO_ID,
                    TAMANHO
                );
            END
            ELSE
            BEGIN

                /* Insere o consumo na tabela (PROJECAO NAO ACUMULADA) */
                INSERT INTO
                VWREMESSA_CONSUMO (
                    ESTABELECIMENTO_ID,
                    REMESSA_ID,
                    REMESSA_TALAO_ID,
                    REMESSA_TALAO_DETALHE_ID,      
                    CONTROLE,
                    LOCALIZACAO_ID,
                    PRODUTO_ID,
                    TAMANHO,
                    DENSIDADE,
                    ESPESSURA,
                    QUANTIDADE_ORIGINAL,
                    QUANTIDADE_NECES,
                    QUANTIDADE_NECES_ALTERN,
                    QUANTIDADE,
                    QUANTIDADE_ALTERNATIVA,
                    SALDO_BAIXAR,
                    COMPONENTE
                ) VALUES (
                    :ESTABELECIMENTO_ID,
                    :REMESSA_ID,
                    :REMESSA_TALAO_ID,
                    :REMESSA_TALAO_DETALHE_ID,  
                    :CONTROLE1,
                    :LOCALIZACAO_ID,
                    :PRODUTO_ID,
                    :TAMANHO,
                    :DENSIDADE,
                    :ESPESSURA,    
                    :QUANTIDADE,
                    :CONSUMO_QUANTIDADE1,
                    :CONSUMO_ALTERNATIVO1, 
                    :CONSUMO_QUANTIDADE1,
                    :CONSUMO_ALTERNATIVO1, 
                    :CONSUMO_QUANTIDADE1,
                    '0'
                );
            END

        END
        ELSE
        BEGIN
    
            /**
             * Inicializa o loop que carrega e calcula a projecao de consumo do talao detalhado
             */
            FOR
                /* Consulta de Insumos Independente de Cor */
                SELECT
                    B.CONSUMO_PRODUTO_CODIGO PRODUTO_ID,
                    B.Tam TAMANHO,
                    P.Localizacao_Codigo LOCALIZACAO_ID,
                    Cast((
                    (Case When (Cast(:Tamanho as integer)= 0) and (B.CONSUMO_QUANTIDADE     > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE     AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 1) and (B.CONSUMO_QUANTIDADE_T01 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T01 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 2) and (B.CONSUMO_QUANTIDADE_T02 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T02 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 3) and (B.CONSUMO_QUANTIDADE_T03 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T03 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 4) and (B.CONSUMO_QUANTIDADE_T04 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T04 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 5) and (B.CONSUMO_QUANTIDADE_T05 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T05 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 6) and (B.CONSUMO_QUANTIDADE_T06 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T06 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 7) and (B.CONSUMO_QUANTIDADE_T07 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T07 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 8) and (B.CONSUMO_QUANTIDADE_T08 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T08 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 9) and (B.CONSUMO_QUANTIDADE_T09 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T09 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=10) and (B.CONSUMO_QUANTIDADE_T10 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T10 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=11) and (B.CONSUMO_QUANTIDADE_T11 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T11 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=12) and (B.CONSUMO_QUANTIDADE_T12 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T12 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=13) and (B.CONSUMO_QUANTIDADE_T13 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T13 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=14) and (B.CONSUMO_QUANTIDADE_T14 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T14 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=15) and (B.CONSUMO_QUANTIDADE_T15 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T15 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=16) and (B.CONSUMO_QUANTIDADE_T16 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T16 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=17) and (B.CONSUMO_QUANTIDADE_T17 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T17 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=18) and (B.CONSUMO_QUANTIDADE_T18 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T18 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=19) and (B.CONSUMO_QUANTIDADE_T19 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T19 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=20) and (B.CONSUMO_QUANTIDADE_T20 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T20 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end)) as Numeric(15,4))  Projecao,
                    1 FATOR_MATRIZ,
                    B.FATOR_CONVERSAO,
                    FMA.FAMILIA_MODELO_ID,
                    (SELECT FIRST 1 UNIDADEMEDIDA_ALTERNATIVO FROM TBFAMILIA WHERE CODIGO = P.FAMILIA_CODIGO)UM_ALTERNATIVA,
                    FMA.ACUMULA_PROJECAO,

                    coalesce((SELECT FIRST 1 1
                           FROM TBFAMILIA_MODELO_ALOCACAO A
                           WHERE A.FAMILIA_ID        = :FAMILIA_MODELO_ID
                             AND A.FAMILIA_MODELO_ID = P.familia_codigo
                             AND (A.GP_ORIGEM         = :GP_ID or coalesce(A.GP_ORIGEM,0) = 0)
                             ),0) AS GERAR,

                    b.setor_codigo as SETOR_ID
    
                FROM
                    TBMODELO_CONSUMO B,
                    TBMODELO M,
                    TBPRODUTO P,
                    TBFAMILIA_MODELO_ALOCACAO FMA
    
                WHERE
                    B.MODELO_CODIGO          = :MODELO_ID
                AND B.CONSUMO_PRODUTO_CODIGO = P.CODIGO
                AND B.MODELO_CODIGO          = M.CODIGO
                AND B.HABILITA_GERAR_CONSUMO = '1'
                AND M.FAMILIA_CODIGO         = FMA.FAMILIA_ID
                AND P.FAMILIA_CODIGO         = FMA.FAMILIA_MODELO_ID
                AND FMA.CONSUMO              = '1' /* Carrega somente familias que geram consumo */
                
                UNION
                /* Consulta de Insumos por Cor */
                SELECT
                    B.PRODUTO_ID,
                    B.Tam TAMANHO,
                    P.Localizacao_Codigo LOCALIZACAO_ID,
                    Cast((
                    (Case When (Cast(:Tamanho as integer)= 0) and (B.QUANTIDADE > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.QUANTIDADE AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 1) and (B.T01 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T01 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 2) and (B.T02 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T02 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 3) and (B.T03 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T03 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 4) and (B.T04 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T04 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 5) and (B.T05 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T05 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 6) and (B.T06 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T06 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 7) and (B.T07 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T07 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 8) and (B.T08 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T08 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 9) and (B.T09 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T09 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=10) and (B.T10 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T10 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=11) and (B.T11 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T11 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=12) and (B.T12 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T12 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=13) and (B.T13 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T13 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=14) and (B.T14 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T14 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=15) and (B.T15 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T15 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=16) and (B.T16 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T16 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=17) and (B.T17 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T17 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=18) and (B.T18 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T18 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=19) and (B.T19 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T19 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=20) and (B.T20 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T20 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end)) as Numeric(15,4)) Projecao,
                    B.FATOR_MATRIZ,
                    B.FATOR_CONVERSAO,
                    FMA.FAMILIA_MODELO_ID,
                    (SELECT FIRST 1 UNIDADEMEDIDA_ALTERNATIVO FROM TBFAMILIA WHERE CODIGO = P.FAMILIA_CODIGO)UM_ALTERNATIVA,
                    FMA.ACUMULA_PROJECAO,

                    coalesce((SELECT FIRST 1 1
                           FROM TBFAMILIA_MODELO_ALOCACAO A
                           WHERE A.FAMILIA_ID        = :FAMILIA_MODELO_ID
                             AND A.FAMILIA_MODELO_ID = P.familia_codigo
                             AND (A.GP_ORIGEM         = :GP_ID or coalesce(A.GP_ORIGEM,0) = 0)
                             ),0) AS GERAR,
    
                   b.SETOR_ID as SETOR_ID
                FROM
                    TBMODELO_CONSUMO_COR B,
                    TBMODELO M,
                    TBPRODUTO P,
                    TBFAMILIA_MODELO_ALOCACAO FMA
    
                WHERE
                    B.MODELO_ID      = :MODELO_ID
                AND B.COR_ID         = :COR_ID
                AND B.PRODUTO_ID     = P.CODIGO
                AND B.MODELO_ID      = M.CODIGO      
                AND B.HABILITA_GERAR_CONSUMO = '1'
                AND M.FAMILIA_CODIGO = FMA.FAMILIA_ID
                AND P.FAMILIA_CODIGO = FMA.FAMILIA_MODELO_ID
                AND FMA.CONSUMO      = '1' /* Carrega somente familias que geram consumo */
            
            INTO
                :PROJECAO_PRODUTO_ID,
                :PROJECAO_TAMANHO,
                :PROJECAO_LOCALIZACAO_ID,
                :PROJECAO_QUANTIDADE,
                :FATOR_MULT,
                :FATOR_DIV,
                :DESTINO_FAMILIA_ID,
                :UM_ALTERNATIVA,
                :ACUMULA_PROJECAO,
                :GERAR,
                :SETOR_ID
        
            DO
            BEGIN
    
                IF(GERAR = 1)THEN
                BEGIN
                    /**
                     * Codigo que ira referenciar pares de insumo
                     */
                    IF ((OLD_TALAO_DETALHE_ID   <> :REMESSA_TALAO_DETALHE_ID) OR
                        (OLD_DESTINO_FAMILIA_ID <> :DESTINO_FAMILIA_ID))
                    THEN
                    BEGIN
                        CONTROLE2 = COALESCE(CONTROLE2,0)+1;
                    END
    
                    /**
                     * Inicio do loop que forma os pares de insumo caso FATOR_MULT for maior que 1
                     */
                    INCREMENTO = 1;
                    WHILE (INCREMENTO <= :FATOR_MULT) DO
                    BEGIN
    
                        /**
                         * Verifica se houve alguma projecao gerada
                         */
                        IF (:PROJECAO_QUANTIDADE > 0) THEN
                        BEGIN
                            /* Calcula as projecaes de consumo */
                            CONSUMO_QUANTIDADE2  = :PROJECAO_QUANTIDADE / :FATOR_DIV / :FATOR_MULT;
                            CONSUMO_ALTERNATIVO2 = IIF((TRIM(UM_ALTERNATIVA)='') OR UM_ALTERNATIVA IS NULL,0,:PROJECAO_QUANTIDADE / :FATOR_MULT);
        
                            IF (ACUMULA_PROJECAO = '1') THEN
                            BEGIN
    
                                OLD_VALORES =
                                (SELECT FIRST 1
                                       (LPAD(COALESCE(QUANTIDADE_ORIGINAL   ,0),20)||
                                        LPAD(COALESCE(QUANTIDADE            ,0),20)||
                                        LPAD(COALESCE(QUANTIDADE_ALTERNATIVA,0),20))
                                FROM  VWREMESSA_CONSUMO
                                WHERE ESTABELECIMENTO_ID = :ESTABELECIMENTO_ID
                                  AND REMESSA_ID         = :REMESSA_ID
                                  AND REMESSA_TALAO_ID   = :REMESSA_TALAO_ID
                                  AND PRODUTO_ID         = :PROJECAO_PRODUTO_ID
                                  AND TAMANHO            = :PROJECAO_TAMANHO
                                );
        
                                OLD_QUANTIDADE_ORIGINAL    = CAST(COALESCE(SUBSTRING(OLD_VALORES FROM  1 FOR 20),0) AS NUMERIC(15,4));
                                OLD_QUANTIDADE             = CAST(COALESCE(SUBSTRING(OLD_VALORES FROM 21 FOR 20),0) AS NUMERIC(15,4));
                                OLD_QUANTIDADE_ALTERNATIVA = CAST(COALESCE(SUBSTRING(OLD_VALORES FROM 41 FOR 20),0) AS NUMERIC(15,4));
                                                    
    --                            QUANTIDADE           = TALAO_QUANTIDADE;
                                --QUANTIDADE           = QUANTIDADE           + OLD_QUANTIDADE_ORIGINAL;
                                CONSUMO_QUANTIDADE2  = CONSUMO_QUANTIDADE2  + OLD_QUANTIDADE;
                                CONSUMO_ALTERNATIVO2 = CONSUMO_ALTERNATIVO2 + OLD_QUANTIDADE_ALTERNATIVA;
    
                                /* Atualiza ou insere o consumo na tabela (PROJECAO ACUMULADA) */
                                UPDATE OR INSERT INTO
                                VWREMESSA_CONSUMO_V2 (
                                    ESTABELECIMENTO_ID,
                                    REMESSA_ID,
                                    REMESSA_TALAO_ID,
                                    CONTROLE,
                                    LOCALIZACAO_ID,
                                    PRODUTO_ID,
                                    TAMANHO,
                                    DENSIDADE,
                                    ESPESSURA,
                                    QUANTIDADE_ORIGINAL,
                                    QUANTIDADE_NECES,
                                    QUANTIDADE_NECES_ALTERN,
                                    QUANTIDADE,
                                    QUANTIDADE_ALTERNATIVA,
                                    SALDO_BAIXAR,
                                    COMPONENTE,
                                    SETOR_ID
                                ) VALUES (
                                    :ESTABELECIMENTO_ID,
                                    :REMESSA_ID,
                                    :REMESSA_TALAO_ID,
                                    :CONTROLE2,
                                    :PROJECAO_LOCALIZACAO_ID,
                                    :PROJECAO_PRODUTO_ID,
                                    :PROJECAO_TAMANHO,
                                    :DENSIDADE,
                                    :ESPESSURA,
                                    :TALAO_QUANTIDADE,
                                    :CONSUMO_QUANTIDADE2,
                                    :CONSUMO_ALTERNATIVO2, 
                                    :CONSUMO_QUANTIDADE2,
                                    :CONSUMO_ALTERNATIVO2, 
                                    :CONSUMO_QUANTIDADE2,
                                    '0',
                                    :SETOR_ID
                                ) MATCHING (
                                    ESTABELECIMENTO_ID,
                                    REMESSA_ID,
                                    REMESSA_TALAO_ID,
                                    PRODUTO_ID,
                                    TAMANHO
                                );
                            END
                            ELSE
                            BEGIN
                                /* Insere o consumo na tabela (PROJECAO NAO ACUMULADA) */
                                INSERT INTO
                                VWREMESSA_CONSUMO_V2 (
                                    ESTABELECIMENTO_ID,
                                    REMESSA_ID,
                                    REMESSA_TALAO_ID,
                                    REMESSA_TALAO_DETALHE_ID,      
                                    CONTROLE,
                                    LOCALIZACAO_ID,
                                    PRODUTO_ID,
                                    TAMANHO,
                                    DENSIDADE,
                                    ESPESSURA,
                                    QUANTIDADE_ORIGINAL,  
                                    QUANTIDADE_NECES,
                                    QUANTIDADE_NECES_ALTERN,
                                    QUANTIDADE,
                                    QUANTIDADE_ALTERNATIVA,   
                                    SALDO_BAIXAR,
                                    COMPONENTE,
                                    SETOR_ID
                                ) VALUES (
                                    :ESTABELECIMENTO_ID,
                                    :REMESSA_ID,
                                    :REMESSA_TALAO_ID,
                                    :REMESSA_TALAO_DETALHE_ID,  
                                    :CONTROLE2,
                                    :PROJECAO_LOCALIZACAO_ID,
                                    :PROJECAO_PRODUTO_ID,
                                    :PROJECAO_TAMANHO,
                                    :DENSIDADE,
                                    :ESPESSURA,
                                    :QUANTIDADE,     
                                    :CONSUMO_QUANTIDADE2,
                                    :CONSUMO_ALTERNATIVO2, 
                                    :CONSUMO_QUANTIDADE2,
                                    :CONSUMO_ALTERNATIVO2, 
                                    :CONSUMO_QUANTIDADE2,
                                    '0',
                                    :SETOR_ID
                                );
                            END
                        END
        
                        INCREMENTO = INCREMENTO+1;
                    END
            
                    OLD_TALAO_DETALHE_ID   = :REMESSA_TALAO_DETALHE_ID;
                    OLD_DESTINO_FAMILIA_ID = :DESTINO_FAMILIA_ID;
                      
                    O_ESTABELECIMENTO_ID            = :ESTABELECIMENTO_ID      ;
                    O_REMESSA_ID                    = :REMESSA_ID              ;
                    O_REMESSA_TALAO_ID              = :REMESSA_TALAO_ID        ;
                    O_CONTROLE                      = :CONTROLE2               ;
                    O_LOCALIZACAO_ID                = :PROJECAO_LOCALIZACAO_ID ;
                    O_PRODUTO_ID                    = :PROJECAO_PRODUTO_ID     ;
                    O_TAMANHO                       = :PROJECAO_TAMANHO        ;
                    O_DENSIDADE                     = :DENSIDADE               ;
                    O_ESPESSURA                     = :ESPESSURA               ;
                    O_QUANTIDADE                    = :CONSUMO_QUANTIDADE2     ;
                    O_QUANTIDADE_ALTERNATIVA        = :CONSUMO_ALTERNATIVO2    ;
                END
            END
        END
    END

END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPI_REM_CONSUMO_INSUMO_TALAO (
    ESTABELECIMENTO_ID integer,
    REMESSA_ID integer,
    I_REMESSA_TALAO_ID integer)
as
declare variable O_ESTABELECIMENTO_ID integer;
declare variable O_REMESSA_ID integer;
declare variable O_REMESSA_TALAO_ID integer;
declare variable O_CONTROLE integer;
declare variable O_LOCALIZACAO_ID integer;
declare variable O_PRODUTO_ID integer;
declare variable O_TAMANHO integer;
declare variable O_DENSIDADE numeric(15,2);
declare variable O_ESPESSURA numeric(15,2);
declare variable O_QUANTIDADE numeric(15,4);
declare variable O_QUANTIDADE_ALTERNATIVA numeric(15,4);
declare variable REMESSA_TALAO_ID integer;
declare variable REMESSA_TALAO_DETALHE_ID integer;
declare variable MODELO_ID integer;
declare variable COR_ID integer;
declare variable TAMANHO integer;
declare variable DENSIDADE smallint;
declare variable ESPESSURA numeric(15,4);
declare variable QUANTIDADE numeric(15,4);
declare variable QUANTIDADE_ALTERNATIVA numeric(15,4);
declare variable PROJECAO_PRODUTO_ID integer;
declare variable PROJECAO_TAMANHO integer;
declare variable PROJECAO_LOCALIZACAO_ID integer;
declare variable PROJECAO_QUANTIDADE numeric(15,4);
declare variable FATOR_MULT numeric(10,1);
declare variable FATOR_DIV numeric(15,4);
declare variable DESTINO_FAMILIA_ID integer;
declare variable UM_ALTERNATIVA varchar(10);
declare variable INCREMENTO integer;
declare variable CONTROLE2 integer;
declare variable OLD_TALAO_DETALHE_ID integer;
declare variable OLD_DESTINO_FAMILIA_ID integer;
declare variable CONSUMO_QUANTIDADE2 numeric(15,4);
declare variable CONSUMO_ALTERNATIVO2 numeric(15,4);
declare variable ACUMULA_PROJECAO char(1);
declare variable OLD_VALORES varchar(500);
declare variable OLD_QUANTIDADE_ORIGINAL numeric(15,4);
declare variable OLD_QUANTIDADE numeric(15,4);
declare variable OLD_QUANTIDADE_ALTERNATIVA numeric(15,4);
declare variable PROJECAO_DIRETA integer;
declare variable FAMILIA_ID integer;
declare variable PRODUTO_ID integer;
declare variable CONSUMO_QUANTIDADE1 numeric(15,4);
declare variable CONSUMO_ALTERNATIVO1 numeric(15,4);
declare variable CONTROLE1 integer;
declare variable LOCALIZACAO_ID integer;
declare variable GP_ID integer;
BEGIN
    /**
     * Limpa os registros atuais para poder recalcular
     */
    --DELETE FROM VWREMESSA_CONSUMO A WHERE A.ESTABELECIMENTO_ID = :ESTABELECIMENTO_ID AND A.REMESSA_ID = :REMESSA_ID;

    CONTROLE1 = 0;
    CONTROLE2 = 1;

    /**
     * Inicio do loop que carrega todos os taloes detalhados da remessa que foi parametrizada
     */
    FOR
        SELECT
            D.REMESSA_TALAO_ID,
            D.ID REMESSA_TALAO_DETALHE_ID,
            D.MODELO_ID,
            D.COR_ID,
            D.TAMANHO,
            T.DENSIDADE,
            T.ESPESSURA,
            D.QUANTIDADE,
            D.QUANTIDADE_ALTERN,
            P.FAMILIA_CODIGO,
            D.PRODUTO_ID,
            D.LOCALIZACAO_ID,
            T.GP_ID

        FROM
            VWREMESSA_TALAO_DETALHE D,
            VWREMESSA_TALAO T,
            TBPRODUTO P

        WHERE
            D.REMESSA_ID         = T.REMESSA_ID
        AND D.REMESSA_TALAO_ID   = T.REMESSA_TALAO_ID
        AND P.CODIGO             = D.PRODUTO_ID
        AND D.ESTABELECIMENTO_ID = :Estabelecimento_Id
        AND D.REMESSA_ID         = :REMESSA_ID
        AND D.REMESSA_TALAO_ID   = :I_REMESSA_TALAO_ID
        AND T.REMESSA_TALAO_ID < 9000 /* Remove os taloes de sobra da remessa */

    INTO
        :REMESSA_TALAO_ID,
        :REMESSA_TALAO_DETALHE_ID,
        :MODELO_ID,
        :COR_ID,
        :TAMANHO,
        :DENSIDADE,
        :ESPESSURA,
        :QUANTIDADE,
        :QUANTIDADE_ALTERNATIVA,
        :FAMILIA_ID,
        :PRODUTO_ID,
        :LOCALIZACAO_ID,
        :GP_ID
    DO
    BEGIN
        /**
         * Variavel que vai verificar se sera gerada projecao de consumo direto do proprio talao (FAMILIA PROJECAO = FAMILIA TALAO)
         */
        PROJECAO_DIRETA = (SELECT FIRST 1 ACUMULA_PROJECAO
                           FROM TBFAMILIA_MODELO_ALOCACAO A
                           WHERE A.FAMILIA_ID        = :FAMILIA_ID
                             AND A.FAMILIA_MODELO_ID = :FAMILIA_ID  
                             AND A.GP_ORIGEM         = :GP_ID
                             );

        /* Verifica se o item tem projecao de si mesmo (CACHARREL / EDC DIV. ESPUMAS) */
        IF (PROJECAO_DIRETA IS NOT NULL) THEN
        BEGIN

            /**
             * Codigo que ira referenciar pares de insumo
             */
            CONTROLE1            = COALESCE(CONTROLE1,0)+1;
            CONSUMO_QUANTIDADE1  = :QUANTIDADE;
            CONSUMO_ALTERNATIVO1 = :QUANTIDADE_ALTERNATIVA;

            /**
             * Verifica se ACUMULA PROJECAO
             */
            IF (PROJECAO_DIRETA = '1') THEN
            BEGIN

                OLD_VALORES =
                (SELECT FIRST 1
                       (LPAD(COALESCE(QUANTIDADE_ORIGINAL   ,0),20)||
                        LPAD(COALESCE(QUANTIDADE            ,0),20)||
                        LPAD(COALESCE(QUANTIDADE_ALTERNATIVA,0),20))
                FROM  VWREMESSA_CONSUMO
                WHERE ESTABELECIMENTO_ID = :ESTABELECIMENTO_ID
                  AND REMESSA_ID         = :REMESSA_ID
                  AND REMESSA_TALAO_ID   = :REMESSA_TALAO_ID
                  AND PRODUTO_ID         = :PROJECAO_PRODUTO_ID
                  AND TAMANHO            = :PROJECAO_TAMANHO
                );

                OLD_QUANTIDADE_ORIGINAL    = CAST(COALESCE(SUBSTRING(OLD_VALORES FROM  1 FOR 20),0) AS NUMERIC(15,4));
                OLD_QUANTIDADE             = CAST(COALESCE(SUBSTRING(OLD_VALORES FROM 21 FOR 20),0) AS NUMERIC(15,4));
                OLD_QUANTIDADE_ALTERNATIVA = CAST(COALESCE(SUBSTRING(OLD_VALORES FROM 41 FOR 20),0) AS NUMERIC(15,4));
                                    
                QUANTIDADE           = QUANTIDADE           + OLD_QUANTIDADE_ORIGINAL;
                CONSUMO_QUANTIDADE1  = CONSUMO_QUANTIDADE1  + OLD_QUANTIDADE;
                CONSUMO_ALTERNATIVO1 = CONSUMO_ALTERNATIVO1 + OLD_QUANTIDADE_ALTERNATIVA;

    
                /* Atualiza ou insere o consumo na tabela (PROJECAO ACUMULADA) */
                UPDATE OR INSERT INTO
                VWREMESSA_CONSUMO (
                    ESTABELECIMENTO_ID,
                    REMESSA_ID,
                    REMESSA_TALAO_ID,
                    CONTROLE,
                    LOCALIZACAO_ID,
                    PRODUTO_ID,
                    TAMANHO,
                    DENSIDADE,
                    ESPESSURA,
                    QUANTIDADE_ORIGINAL,
                    QUANTIDADE_NECES,
                    QUANTIDADE_NECES_ALTERN,
                    QUANTIDADE,
                    QUANTIDADE_ALTERNATIVA,
                    SALDO_BAIXAR,
                    COMPONENTE
                ) VALUES (
                    :ESTABELECIMENTO_ID,
                    :REMESSA_ID,
                    :REMESSA_TALAO_ID,
                    :CONTROLE1,
                    :LOCALIZACAO_ID,
                    :PRODUTO_ID,
                    :TAMANHO,
                    :DENSIDADE,
                    :ESPESSURA,  
                    :QUANTIDADE,
                    :CONSUMO_QUANTIDADE1,
                    :CONSUMO_ALTERNATIVO1,
                    :CONSUMO_QUANTIDADE1,
                    :CONSUMO_ALTERNATIVO1,
                    :CONSUMO_QUANTIDADE1,
                    '0'
                ) MATCHING (
                    ESTABELECIMENTO_ID,
                    REMESSA_ID,
                    REMESSA_TALAO_ID,
                    PRODUTO_ID,
                    TAMANHO
                );
            END
            ELSE
            BEGIN

                /* Insere o consumo na tabela (PROJECAO NAO ACUMULADA) */
                INSERT INTO
                VWREMESSA_CONSUMO (
                    ESTABELECIMENTO_ID,
                    REMESSA_ID,
                    REMESSA_TALAO_ID,
                    REMESSA_TALAO_DETALHE_ID,      
                    CONTROLE,
                    LOCALIZACAO_ID,
                    PRODUTO_ID,
                    TAMANHO,
                    DENSIDADE,
                    ESPESSURA,
                    QUANTIDADE_ORIGINAL,
                    QUANTIDADE_NECES,
                    QUANTIDADE_NECES_ALTERN,
                    QUANTIDADE,
                    QUANTIDADE_ALTERNATIVA,
                    SALDO_BAIXAR,
                    COMPONENTE
                ) VALUES (
                    :ESTABELECIMENTO_ID,
                    :REMESSA_ID,
                    :REMESSA_TALAO_ID,
                    :REMESSA_TALAO_DETALHE_ID,  
                    :CONTROLE1,
                    :LOCALIZACAO_ID,
                    :PRODUTO_ID,
                    :TAMANHO,
                    :DENSIDADE,
                    :ESPESSURA,    
                    :QUANTIDADE,
                    :CONSUMO_QUANTIDADE1,
                    :CONSUMO_ALTERNATIVO1, 
                    :CONSUMO_QUANTIDADE1,
                    :CONSUMO_ALTERNATIVO1, 
                    :CONSUMO_QUANTIDADE1,
                    '0'
                );
            END

        END
        ELSE
        BEGIN
    
            /**
             * Inicializa o loop que carrega e calcula a projecao de consumo do talao detalhado
             */
            FOR
                /* Consulta de Insumos Independente de Cor */
                SELECT
                    B.CONSUMO_PRODUTO_CODIGO PRODUTO_ID,
                    B.Tam TAMANHO,
                    P.Localizacao_Codigo LOCALIZACAO_ID,
                    Cast((
                    (Case When (Cast(:Tamanho as integer)= 0) and (B.CONSUMO_QUANTIDADE     > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE     AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 1) and (B.CONSUMO_QUANTIDADE_T01 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T01 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 2) and (B.CONSUMO_QUANTIDADE_T02 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T02 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 3) and (B.CONSUMO_QUANTIDADE_T03 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T03 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 4) and (B.CONSUMO_QUANTIDADE_T04 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T04 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 5) and (B.CONSUMO_QUANTIDADE_T05 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T05 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 6) and (B.CONSUMO_QUANTIDADE_T06 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T06 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 7) and (B.CONSUMO_QUANTIDADE_T07 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T07 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 8) and (B.CONSUMO_QUANTIDADE_T08 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T08 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 9) and (B.CONSUMO_QUANTIDADE_T09 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T09 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=10) and (B.CONSUMO_QUANTIDADE_T10 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T10 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=11) and (B.CONSUMO_QUANTIDADE_T11 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T11 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=12) and (B.CONSUMO_QUANTIDADE_T12 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T12 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=13) and (B.CONSUMO_QUANTIDADE_T13 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T13 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=14) and (B.CONSUMO_QUANTIDADE_T14 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T14 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=15) and (B.CONSUMO_QUANTIDADE_T15 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T15 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=16) and (B.CONSUMO_QUANTIDADE_T16 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T16 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=17) and (B.CONSUMO_QUANTIDADE_T17 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T17 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=18) and (B.CONSUMO_QUANTIDADE_T18 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T18 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=19) and (B.CONSUMO_QUANTIDADE_T19 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T19 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=20) and (B.CONSUMO_QUANTIDADE_T20 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T20 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end)) as Numeric(15,4))  Projecao,
                    1 FATOR_MATRIZ,
                    B.FATOR_CONVERSAO,
                    FMA.FAMILIA_MODELO_ID,
                    (SELECT FIRST 1 UNIDADEMEDIDA_ALTERNATIVO FROM TBFAMILIA WHERE CODIGO = P.FAMILIA_CODIGO)UM_ALTERNATIVA,
                    FMA.ACUMULA_PROJECAO
    
                FROM
                    TBMODELO_CONSUMO B,
                    TBMODELO M,
                    TBPRODUTO P,
                    TBFAMILIA_MODELO_ALOCACAO FMA
    
                WHERE
                    B.MODELO_CODIGO          = :MODELO_ID
                AND B.CONSUMO_PRODUTO_CODIGO = P.CODIGO
                AND B.MODELO_CODIGO          = M.CODIGO
                AND M.FAMILIA_CODIGO         = FMA.FAMILIA_ID
                AND P.FAMILIA_CODIGO         = FMA.FAMILIA_MODELO_ID
                AND FMA.CONSUMO              = '1' /* Carrega somente familias que geram consumo */
                
                UNION
                /* Consulta de Insumos por Cor */
                SELECT
                    B.PRODUTO_ID,
                    B.Tam TAMANHO,
                    P.Localizacao_Codigo LOCALIZACAO_ID,
                    Cast((
                    (Case When (Cast(:Tamanho as integer)= 0) and (B.QUANTIDADE > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.QUANTIDADE AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 1) and (B.T01 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T01 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 2) and (B.T02 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T02 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 3) and (B.T03 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T03 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 4) and (B.T04 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T04 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 5) and (B.T05 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T05 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 6) and (B.T06 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T06 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 7) and (B.T07 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T07 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 8) and (B.T08 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T08 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)= 9) and (B.T09 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T09 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=10) and (B.T10 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T10 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=11) and (B.T11 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T11 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=12) and (B.T12 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T12 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=13) and (B.T13 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T13 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=14) and (B.T14 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T14 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=15) and (B.T15 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T15 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=16) and (B.T16 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T16 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=17) and (B.T17 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T17 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=18) and (B.T18 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T18 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=19) and (B.T19 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T19 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
                    (Case When (Cast(:Tamanho as integer)=20) and (B.T20 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T20 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end)) as Numeric(15,4)) Projecao,
                    B.FATOR_MATRIZ,
                    B.FATOR_CONVERSAO,
                    FMA.FAMILIA_MODELO_ID,
                    (SELECT FIRST 1 UNIDADEMEDIDA_ALTERNATIVO FROM TBFAMILIA WHERE CODIGO = P.FAMILIA_CODIGO)UM_ALTERNATIVA,
                    FMA.ACUMULA_PROJECAO
    
                
                FROM
                    TBMODELO_CONSUMO_COR B,
                    TBMODELO M,
                    TBPRODUTO P,
                    TBFAMILIA_MODELO_ALOCACAO FMA
    
                WHERE
                    B.MODELO_ID      = :MODELO_ID
                AND B.COR_ID         = :COR_ID
                AND B.PRODUTO_ID     = P.CODIGO
                AND B.MODELO_ID      = M.CODIGO
                AND M.FAMILIA_CODIGO = FMA.FAMILIA_ID
                AND P.FAMILIA_CODIGO = FMA.FAMILIA_MODELO_ID
                AND FMA.CONSUMO      = '1' /* Carrega somente familias que geram consumo */
            
            INTO
                :PROJECAO_PRODUTO_ID,
                :PROJECAO_TAMANHO,
                :PROJECAO_LOCALIZACAO_ID,
                :PROJECAO_QUANTIDADE,
                :FATOR_MULT,
                :FATOR_DIV,
                :DESTINO_FAMILIA_ID,
                :UM_ALTERNATIVA,
                :ACUMULA_PROJECAO
        
            DO
            BEGIN
    
                /**
                 * Codigo que ira referenciar pares de insumo
                 */
                IF ((OLD_TALAO_DETALHE_ID   <> :REMESSA_TALAO_DETALHE_ID) OR
                    (OLD_DESTINO_FAMILIA_ID <> :DESTINO_FAMILIA_ID))
                THEN
                BEGIN
                    CONTROLE2 = COALESCE(CONTROLE2,0)+1;
                END

                /**
                 * Inicio do loop que forma os pares de insumo caso FATOR_MULT for maior que 1
                 */
                INCREMENTO = 1;
                WHILE (INCREMENTO <= :FATOR_MULT) DO
                BEGIN

                    /**
                     * Verifica se houve alguma projecao gerada
                     */
                    IF (:PROJECAO_QUANTIDADE > 0) THEN
                    BEGIN
                        /* Calcula as projecaes de consumo */
                        CONSUMO_QUANTIDADE2  = :PROJECAO_QUANTIDADE / :FATOR_DIV / :FATOR_MULT;
                        CONSUMO_ALTERNATIVO2 = IIF((TRIM(UM_ALTERNATIVA)='') OR UM_ALTERNATIVA IS NULL,0,:PROJECAO_QUANTIDADE / :FATOR_MULT);
    
                        IF (ACUMULA_PROJECAO = '1') THEN
                        BEGIN

                            OLD_VALORES =
                            (SELECT FIRST 1
                                   (LPAD(COALESCE(QUANTIDADE_ORIGINAL   ,0),20)||
                                    LPAD(COALESCE(QUANTIDADE            ,0),20)||
                                    LPAD(COALESCE(QUANTIDADE_ALTERNATIVA,0),20))
                            FROM  VWREMESSA_CONSUMO
                            WHERE ESTABELECIMENTO_ID = :ESTABELECIMENTO_ID
                              AND REMESSA_ID         = :REMESSA_ID
                              AND REMESSA_TALAO_ID   = :REMESSA_TALAO_ID
                              AND PRODUTO_ID         = :PROJECAO_PRODUTO_ID
                              AND TAMANHO            = :PROJECAO_TAMANHO
                            );
    
                            OLD_QUANTIDADE_ORIGINAL    = CAST(COALESCE(SUBSTRING(OLD_VALORES FROM  1 FOR 20),0) AS NUMERIC(15,4));
                            OLD_QUANTIDADE             = CAST(COALESCE(SUBSTRING(OLD_VALORES FROM 21 FOR 20),0) AS NUMERIC(15,4));
                            OLD_QUANTIDADE_ALTERNATIVA = CAST(COALESCE(SUBSTRING(OLD_VALORES FROM 41 FOR 20),0) AS NUMERIC(15,4));
                                                
                            QUANTIDADE           = QUANTIDADE           + OLD_QUANTIDADE_ORIGINAL;
                            CONSUMO_QUANTIDADE2  = CONSUMO_QUANTIDADE2  + OLD_QUANTIDADE;
                            CONSUMO_ALTERNATIVO2 = CONSUMO_ALTERNATIVO2 + OLD_QUANTIDADE_ALTERNATIVA;

                            /* Atualiza ou insere o consumo na tabela (PROJECAO ACUMULADA) */
                            UPDATE OR INSERT INTO
                            VWREMESSA_CONSUMO (
                                ESTABELECIMENTO_ID,
                                REMESSA_ID,
                                REMESSA_TALAO_ID,
                                CONTROLE,
                                LOCALIZACAO_ID,
                                PRODUTO_ID,
                                TAMANHO,
                                DENSIDADE,
                                ESPESSURA,
                                QUANTIDADE_ORIGINAL,
                                QUANTIDADE_NECES,
                                QUANTIDADE_NECES_ALTERN,
                                QUANTIDADE,
                                QUANTIDADE_ALTERNATIVA,
                                SALDO_BAIXAR,
                                COMPONENTE
                            ) VALUES (
                                :ESTABELECIMENTO_ID,
                                :REMESSA_ID,
                                :REMESSA_TALAO_ID,
                                :CONTROLE2,
                                :PROJECAO_LOCALIZACAO_ID,
                                :PROJECAO_PRODUTO_ID,
                                :PROJECAO_TAMANHO,
                                :DENSIDADE,
                                :ESPESSURA,
                                :QUANTIDADE,      
                                :CONSUMO_QUANTIDADE2,
                                :CONSUMO_ALTERNATIVO2, 
                                :CONSUMO_QUANTIDADE2,
                                :CONSUMO_ALTERNATIVO2, 
                                :CONSUMO_QUANTIDADE2,
                                '0'
                            ) MATCHING (
                                ESTABELECIMENTO_ID,
                                REMESSA_ID,
                                REMESSA_TALAO_ID,
                                PRODUTO_ID,
                                TAMANHO
                            );
                        END
                        ELSE
                        BEGIN
                            /* Insere o consumo na tabela (PROJECAO NAO ACUMULADA) */
                            INSERT INTO
                            VWREMESSA_CONSUMO (
                                ESTABELECIMENTO_ID,
                                REMESSA_ID,
                                REMESSA_TALAO_ID,
                                REMESSA_TALAO_DETALHE_ID,      
                                CONTROLE,
                                LOCALIZACAO_ID,
                                PRODUTO_ID,
                                TAMANHO,
                                DENSIDADE,
                                ESPESSURA,
                                QUANTIDADE_ORIGINAL,  
                                QUANTIDADE_NECES,
                                QUANTIDADE_NECES_ALTERN,
                                QUANTIDADE,
                                QUANTIDADE_ALTERNATIVA,   
                                SALDO_BAIXAR,
                                COMPONENTE
                            ) VALUES (
                                :ESTABELECIMENTO_ID,
                                :REMESSA_ID,
                                :REMESSA_TALAO_ID,
                                :REMESSA_TALAO_DETALHE_ID,  
                                :CONTROLE2,
                                :PROJECAO_LOCALIZACAO_ID,
                                :PROJECAO_PRODUTO_ID,
                                :PROJECAO_TAMANHO,
                                :DENSIDADE,
                                :ESPESSURA,
                                :QUANTIDADE,     
                                :CONSUMO_QUANTIDADE2,
                                :CONSUMO_ALTERNATIVO2, 
                                :CONSUMO_QUANTIDADE2,
                                :CONSUMO_ALTERNATIVO2, 
                                :CONSUMO_QUANTIDADE2,
                                '0'
                            );
                        END
                    END
    
                    INCREMENTO = INCREMENTO+1;
                END
        
                OLD_TALAO_DETALHE_ID   = :REMESSA_TALAO_DETALHE_ID;
                OLD_DESTINO_FAMILIA_ID = :DESTINO_FAMILIA_ID;
                  
                O_ESTABELECIMENTO_ID            = :ESTABELECIMENTO_ID      ;
                O_REMESSA_ID                    = :REMESSA_ID              ;
                O_REMESSA_TALAO_ID              = :REMESSA_TALAO_ID        ;
                O_CONTROLE                      = :CONTROLE2               ;
                O_LOCALIZACAO_ID                = :PROJECAO_LOCALIZACAO_ID ;
                O_PRODUTO_ID                    = :PROJECAO_PRODUTO_ID     ;
                O_TAMANHO                       = :PROJECAO_TAMANHO        ;
                O_DENSIDADE                     = :DENSIDADE               ;
                O_ESPESSURA                     = :ESPESSURA               ;
                O_QUANTIDADE                    = :CONSUMO_QUANTIDADE2     ;
                O_QUANTIDADE_ALTERNATIVA        = :CONSUMO_ALTERNATIVO2    ;
               -- SUSPEND;
            END
        END
    END
END
^

SET TERM ; ^

/****************************************************************************/
/****************************************************************************/
/**** PRODUTO_UNIDADEMEDIDA *************************************************/

SET TERM ^ ;

CREATE OR ALTER procedure SPC_ENTRADA_FAMILIA_PRODUTO2 (
    ESTABELECIMENTO_T integer,
    ESTABELECIMENTO_1 integer,
    PRODUTO_1 integer,
    PRODUTO_2 integer,
    ANO integer,
    MES integer,
    FAM_T integer,
    FAM_1 integer,
    FAM_2 integer,
    FAM_3 integer,
    FAM_4 integer,
    FAM_5 integer,
    FAM_6 integer,
    FAM_7 integer,
    FAM_8 integer,
    FAM_9 integer,
    FAM_10 integer,
    OPER_T varchar(3),
    OPER_1 varchar(3),
    OPER_2 varchar(3),
    OPER_3 varchar(3),
    OPER_4 varchar(3),
    OPER_5 varchar(3),
    OPER_6 varchar(3),
    OPER_7 varchar(3),
    OPER_8 varchar(3),
    OPER_9 varchar(3),
    OPER_10 varchar(3),
    CFOP_T varchar(5),
    CFOP_1 varchar(5),
    CFOP_2 varchar(5),
    CFOP_3 varchar(5),
    CFOP_4 varchar(5),
    CFOP_5 varchar(5),
    CFOP_6 varchar(5),
    CFOP_7 varchar(5),
    CFOP_8 varchar(5),
    CFOP_9 varchar(5),
    CFOP_10 varchar(5),
    CFOP_11 varchar(5),
    CFOP_12 varchar(5),
    CFOP_13 varchar(5),
    CFOP_14 varchar(5),
    CFOP_15 varchar(5))
returns (
    FAMILIA_CODIGO integer,
    VALOR_TOTAL numeric(10,5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    QUANTIDADE numeric(10,5))
as
BEGIN

FOR Select Distinct(A.Familia_Codigo), Sum(B.Valor_Total),
A.Codigo, A.Descricao, A.UNIDADEMEDIDA_SIGLA, Sum(B.Quantidade)
From TbProduto A, TbNfe_Item B
Where  A.Codigo = B.Produto_Codigo
and   (B.Produto_Codigo > 0)
and   (B.Situacao < 3)

and   (extract(year  from B.Data_Entrada) = :ANO)
and   (extract(month from B.Data_Entrada) = :MES)
and   (B.Estabelecimento_Codigo > :ESTABELECIMENTO_T or
       B.Estabelecimento_Codigo = :ESTABELECIMENTO_1)
and   (B.Produto_Codigo BetWeen   :PRODUTO_1 and :PRODUTO_2)
and   (B.OPERACAO_CODIGO <> :OPER_T or
       B.OPERACAO_CODIGO = :OPER_1 or
       B.OPERACAO_CODIGO = :OPER_2 or
       B.OPERACAO_CODIGO = :OPER_3 or
       B.OPERACAO_CODIGO = :OPER_4 or
       B.OPERACAO_CODIGO = :OPER_5 or
       B.OPERACAO_CODIGO = :OPER_6 or
       B.OPERACAO_CODIGO = :OPER_7 or
       B.OPERACAO_CODIGO = :OPER_8 or
       B.OPERACAO_CODIGO = :OPER_9 or
       B.OPERACAO_CODIGO = :OPER_10)

and   (B.CFOP_CODIGO <> :CFOP_T or
       B.CFOP_CODIGO = :CFOP_1 or
       B.CFOP_CODIGO = :CFOP_2 or
       B.CFOP_CODIGO = :CFOP_3 or
       B.CFOP_CODIGO = :CFOP_4 or
       B.CFOP_CODIGO = :CFOP_5 or
       B.CFOP_CODIGO = :CFOP_6 or
       B.CFOP_CODIGO = :CFOP_7 or
       B.CFOP_CODIGO = :CFOP_8 or
       B.CFOP_CODIGO = :CFOP_9 or
       B.CFOP_CODIGO = :CFOP_10 or
       B.CFOP_CODIGO = :CFOP_11 or
       B.CFOP_CODIGO = :CFOP_12 or
       B.CFOP_CODIGO = :CFOP_13 or
       B.CFOP_CODIGO = :CFOP_14 or
       B.CFOP_CODIGO = :CFOP_15)

and   (A.FAMILIA_CODIGO > :FAM_T or
       A.FAMILIA_CODIGO = :FAM_1 or
       A.FAMILIA_CODIGO = :FAM_2 or
       A.FAMILIA_CODIGO = :FAM_3 or
       A.FAMILIA_CODIGO = :FAM_4 or
       A.FAMILIA_CODIGO = :FAM_5 or
       A.FAMILIA_CODIGO = :FAM_6 or
       A.FAMILIA_CODIGO = :FAM_7 or
       A.FAMILIA_CODIGO = :FAM_8 or
       A.FAMILIA_CODIGO = :FAM_9 or
       A.FAMILIA_CODIGO = :FAM_10)

Group By A.Familia_Codigo, A.Codigo, A.Descricao, A.UNIDADEMEDIDA_SIGLA
Order By A.Descricao

INTO
  :Familia_Codigo,
  :Valor_Total,
  :Produto_Codigo,
  :Produto_Descricao,
  :Produto_UnidadeMedida,
  :Quantidade
DO SUSPEND;
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPC_NFE_ITEM10 (
    CONTROLE_1 integer)
returns (
    NFE_CONTROLE integer,
    SEQUENCIA integer,
    OPERACAO_CODIGO varchar(3),
    CFOP_CODIGO varchar(5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    GRADE_CODIGO integer,
    NCM_CODIGO varchar(10),
    TRIBUTACAO_ICMS integer,
    TRIBUTACAO_IPI varchar(2),
    TRIBUTACAO_ORIGEM integer,
    LOCALIZACAO_CODIGO integer,
    LOCALIZACAO_DESCRICAO varchar(20),
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    BASECALCULO_ICMS numeric(10,5),
    PERCENTUAL_ICMS numeric(10,5),
    PERCENTUAL_IPI numeric(10,5),
    VALOR_IPI numeric(10,5),
    PERCENTUAL_PIS numeric(10,5),
    VALOR_PIS numeric(10,5),
    PERCENTUAL_COFINS numeric(10,5),
    VALOR_COFINS numeric(10,5),
    VALOR_FRETE numeric(10,2),
    VALOR_SEGURO numeric(10,2),
    NFS integer,
    NFS_ITEM_CONTROLE integer,
    NF_EXTERNO integer,
    NF_EXTERNO_ITEM_CONTROLE integer,
    OC integer,
    OC_ITEM_CONTROLE integer,
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    ESTABELECIMENTO_CODIGO integer,
    EMPRESA_CODIGO integer,
    NUMERO_NOTAFISCAL integer,
    DATA_ENTRADA date,
    SITUACAO integer,
    CONTROLE integer,
    VALOR_CUSTO numeric(10,5),
    PRODUTO_GRADE_CODIGO integer,
    TRIBUTACAO_PIS varchar(2),
    TRIBUTACAO_COFINS varchar(2),
    DI varchar(12),
    DI_DATA_REGISTRO date,
    DI_DATA_DESEMBARACO date,
    DI_LOCAL_DESEMBARACO varchar(60),
    DI_UF_DESEMBARACO char(2),
    DI_CODIGO_EXPORTADOR varchar(60),
    DI_ADICAO integer,
    DI_SEQUENCIAL integer,
    DI_CODIGO_FABRICANTE varchar(60),
    DI_DESCONTO_ADICAO numeric(10,2),
    DI_BASE_CALCULO numeric(10,2),
    DI_DESPESAS_ADUANEIRAS numeric(10,2),
    DI_VALOR_II numeric(10,2),
    DI_VALOR_IOF numeric(10,2),
    VALOR_ICMS numeric(10,2),
    BASECALCULO_IPI numeric(10,2),
    BASECALCULO_PIS numeric(10,2),
    BASECALCULO_COFINS numeric(10,2),
    VALOR_ACRESCIMO numeric(10,2),
    VALOR_DESCONTO numeric(10,2),
    FISCAL_ISENTAS_IPI numeric(10,2),
    FISCAL_ISENTAS_ICMS numeric(10,2),
    FISCAL_OUTRAS_IPI numeric(10,2),
    FISCAL_OUTRAS_ICMS numeric(10,2),
    FISCAL_VALOR_ICMS numeric(10,2),
    FISCAL_VALOR_IPI numeric(10,2),
    FISCAL_VALOR_PIS numeric(10,2),
    FISCAL_VALOR_COFINS numeric(10,2),
    FISCAL_PERCENTUAL_ICMS numeric(10,2),
    FISCAL_PERCENTUAL_IPI numeric(10,2),
    FISCAL_PERCENTUAL_PIS numeric(10,2),
    FISCAL_PERCENTUAL_COFINS numeric(10,2),
    FISCAL_BASECALCULO_ICMS numeric(10,5),
    FISCAL_BASECALCULO_IPI numeric(10,2),
    FISCAL_BASECALCULO_PIS numeric(10,2),
    FISCAL_BASECALCULO_COFINS numeric(10,2),
    VALOR_CONTABIL numeric(10,2),
    VALOR_BASECALCULO_ICMS numeric(10,2),
    VALOR_PEDAGIO numeric(10,2),
    FISCAL_CFOP_CODIGO varchar(5),
    FISCAL_TRIBUTACAO_ORIGEM integer,
    FISCAL_TRIBUTACAO_ICMS integer,
    FISCAL_TRIBUTACAO_IPI char(2),
    FISCAL_TRIBUTACAO_PIS char(2),
    FISCAL_TRIBUTACAO_COFINS char(2),
    DESCONTO_BASECALCULO_ICMS numeric(10,2),
    BASECALCULO_FCI numeric(15,4),
    CODIGO_FCI varchar(50),
    MODALIDADE_ICMS char(1),
    MODALIDADE_ICMS_ST char(1),
    MARGEM_ICMS_ST numeric(15,4),
    REDUCAO_ICMS_ST numeric(15,4),
    BASECALCULO_ICMS_ST numeric(15,4),
    ALIQUOTA_ICMS_ST numeric(15,4),
    VALOR_ICMS_ST numeric(15,4),
    FISCAL_REDUCAO_ICMS_ST numeric(10,2),
    FISCAL_BASECALCULO_ICMS_ST numeric(10,2),
    FISCAL_ALIQUOTA_ICMS_ST numeric(10,2),
    FISCAL_VALOR_ICMS_ST numeric(10,2),
    INFORMACOES_COMPLEMENTARES varchar(200),
    DI_NVE varchar(60),
    DI_TIPO_VIA_TRANSP integer,
    DI_TIPO_VIA_TRANSP_DESCRICAO varchar(30),
    DI_VALOR_AFRMM numeric(15,2),
    DI_TIPO_INTERMEDIO varchar(1),
    DI_TIPO_INTERMEDIO_DESCRICAO varchar(30),
    DI_CNPJ_INTERMEDIO varchar(14),
    DI_UF_INTERMEDIO varchar(2),
    DI_NUMERO_DRAWBACK varchar(11),
    CONTA_CONTABIL varchar(11),
    CCUSTO varchar(8),
    CCUSTO_DESCRICAO varchar(130),
    ENQUADRAMENTO_IPI varchar(3),
    QUANTIDADE_ALTERNATIVA numeric(18,4),
    UM_ALTERNATIVA varchar(10),
    VALOR_ALTERNATIVO numeric(18,10),
    REDUCAO_BASE_PISCOF char(1))
as
begin
for select
A.NFe_CONTROLE      ,A.SEQUENCIA        ,A.OPERACAO_CODIGO      ,A.CFOP_CODIGO ,
A.PRODUTO_CODIGO    ,A.PRODUTO_DESCRICAO,A.PRODUTO_UNIDADEMEDIDA,A.GRADE_CODIGO,
A.NCM_CODIGO        ,A.TRIBUTACAO_ICMS  ,A.TRIBUTACAO_IPI       ,A.TRIBUTACAO_ORIGEM,
A.LOCALIZACAO_CODIGO,(Select First 1 L.Descricao From TbLocalizacao L Where A.Localizacao_Codigo = L.Codigo),
A.QUANTIDADE        ,A.VALOR_UNITARIO       ,A.VALOR_TOTAL      ,
A.BASECALCULO_ICMS  ,A.PERCENTUAL_ICMS  ,A.PERCENTUAL_IPI       ,A.VALOR_IPI   ,
A.PERCENTUAL_PIS    ,A.VALOR_PIS        ,A.PERCENTUAL_COFINS    ,A.VALOR_COFINS,
A.VALOR_FRETE, A.VALOR_SEGURO, A.NFs, A.NFs_ITEM_CONTROLE,A.NF_EXTERNO ,
A.NF_EXTERNO_ITEM_CONTROLE, A.OC,A.OC_ITEM_CONTROLE,
A.T01,A.T02,A.T03,A.T04,A.T05,A.T06,A.T07,A.T08,A.T09,A.T10,
A.T11,A.T12,A.T13,A.T14,A.T15,A.T16,A.T17,A.T18,A.T19,A.T20,
A.ESTABELECIMENTO_CODIGO,A.EMPRESA_CODIGO,A.NUMERO_NOTAFISCAL,A.DATA_ENTRADA,
A.SITUACAO,A.CONTROLE,A.VALOR_CUSTO,
(Select First 1 B.GRADE_CODIGO From TbProduto B Where A.Produto_Codigo = B.Codigo),
A.tributacao_PIS, A.tributacao_cofins,A.DI,A.DI_DATA_REGISTRO,A.DI_DATA_DESEMBARACO,
A.DI_LOCAL_DESEMBARACO,A.DI_UF_DESEMBARACO,A.DI_CODIGO_EXPORTADOR,A.DI_ADICAO,
A.DI_SEQUENCIAL,A.DI_CODIGO_FABRICANTE,A.DI_DESCONTO_ADICAO,
A.di_base_calculo,A.di_despesas_aduaneiras,A.di_valor_ii,A.di_valor_iof,
A.VALOR_ICMS,A.BASECALCULO_IPI,A.BASECALCULO_PIS,A.BASECALCULO_COFINS,
A.VALOR_ACRESCIMO,A.VALOR_DESCONTO,A.FISCAL_ISENTAS_IPI,A.FISCAL_ISENTAS_ICMS,
A.FISCAL_OUTRAS_IPI,A.FISCAL_OUTRAS_ICMS,A.FISCAL_VALOR_ICMS,A.FISCAL_VALOR_IPI,
A.FISCAL_VALOR_PIS,A.FISCAL_VALOR_COFINS,A.FISCAL_PERCENTUAL_ICMS,A.FISCAL_PERCENTUAL_IPI,
A.FISCAL_PERCENTUAL_PIS,A.FISCAL_PERCENTUAL_COFINS,A.FISCAL_BASECALCULO_ICMS,
A.FISCAL_BASECALCULO_IPI,A.FISCAL_BASECALCULO_PIS,A.FISCAL_BASECALCULO_COFINS,
A.VALOR_CONTABIL, A.valor_basecalculo_icms, A.VALOR_PEDAGIO, A.FISCAL_CFOP_CODIGO,A.FISCAL_TRIBUTACAO_ORIGEM,
A.FISCAL_TRIBUTACAO_ICMS,A.FISCAL_TRIBUTACAO_IPI,A.FISCAL_TRIBUTACAO_PIS,
A.FISCAL_TRIBUTACAO_COFINS, A.DESCONTO_BASECALCULO_ICMS, A.BASECALCULO_FCI, A.Codigo_Fci,

A.MODALIDADE_ICMS, A.MODALIDADE_ICMS_ST, A.MARGEM_ICMS_ST, A.REDUCAO_ICMS_ST,
A.BASECALCULO_ICMS_ST, A.ALIQUOTA_ICMS_ST, A.VALOR_ICMS_ST,A.FISCAL_REDUCAO_ICMS_ST,
A.FISCAL_BASECALCULO_ICMS_ST, A.FISCAL_ALIQUOTA_ICMS_ST, A.FISCAL_VALOR_ICMS_ST,

A.INFORMACOES_COMPLEMENTARES, A.DI_NVE,
A.DI_TIPO_VIA_TRANSP, IIF(A.DI_TIPO_VIA_TRANSP=1,'Maritima',
                      IIF(A.DI_TIPO_VIA_TRANSP=2,'Fluvial',
                      IIF(A.DI_TIPO_VIA_TRANSP=3,'Lacustre',
                      IIF(A.DI_TIPO_VIA_TRANSP=4,'Aerea',
                      IIF(A.DI_TIPO_VIA_TRANSP=5,'Postal',
                      IIF(A.DI_TIPO_VIA_TRANSP=6,'Ferroviaria',
                      IIF(A.DI_TIPO_VIA_TRANSP=7,'Rodoviaria',
                      IIF(A.DI_TIPO_VIA_TRANSP=8,'Conduto/Rd.Trnsm',
                      IIF(A.DI_TIPO_VIA_TRANSP=9,'Meios Proprios',
                      IIF(A.DI_TIPO_VIA_TRANSP=10,'Entr/Saida ficta','')))))))))),
A.DI_VALOR_AFRMM,
A.DI_TIPO_INTERMEDIO, IIF(A.DI_TIPO_INTERMEDIO='1','Imp.Conta Propria',
                      IIF(A.DI_TIPO_INTERMEDIO='2','Imp.Conta e Ordem',
                      IIF(A.DI_TIPO_INTERMEDIO='3','Imp.por Encomenda',''))),
A.DI_CNPJ_INTERMEDIO, A.DI_UF_INTERMEDIO, A.DI_NUMERO_DRAWBACK, A.Conta_Contabil, A.CCusto,

IIF(char_length(A.CCusto)=2,
(Select First 1 C.Descricao From TbCentro_de_Custo C Where C.CODIGO = SUBSTRING(A.CCusto FROM 1 FOR 2)),
IIF(char_length(A.CCusto)=5,
(Select First 1 C.Descricao From TbCentro_de_Custo C Where C.CODIGO = SUBSTRING(A.CCusto FROM 1 FOR 2))||' - '||
(Select First 1 C.Descricao From TbCentro_de_Custo C Where C.CODIGO = SUBSTRING(A.CCusto FROM 1 FOR 5)),
IIF(char_length(A.CCusto)=8,
(Select First 1 C.Descricao From TbCentro_de_Custo C Where C.CODIGO = SUBSTRING(A.CCusto FROM 1 FOR 5))||' - '||
(Select First 1 C.Descricao From TbCentro_de_Custo C Where C.CODIGO = SUBSTRING(A.CCusto FROM 1 FOR 8)),''))) CCUSTO_DESCRICAO,

A.ENQUADRAMENTO_IPI,
A.QUANTIDADE_ALTERNATIVA, A.UM_ALTERNATIVA, A.VALOR_ALTERNATIVO, A.REDUCAO_BASE_PISCOF

From TbNfE_Item A
Where (A.NFE_CONTROLE = :CONTROLE_1)
order by A.SEQUENCIA
into
    :NFE_CONTROLE      ,:SEQUENCIA        , :OPERACAO_CODIGO, :CFOP_CODIGO,
    :PRODUTO_CODIGO    ,:PRODUTO_DESCRICAO, :PRODUTO_UNIDADEMEDIDA,:GRADE_CODIGO,
    :NCM_CODIGO        ,:TRIBUTACAO_ICMS  , :TRIBUTACAO_IPI, :TRIBUTACAO_ORIGEM,
    :LOCALIZACAO_CODIGO,:LOCALIZACAO_DESCRICAO,
    :QUANTIDADE       , :VALOR_UNITARIO, :VALOR_TOTAL,
    :BASECALCULO_ICMS, :PERCENTUAL_ICMS   , :PERCENTUAL_IPI, :VALOR_IPI,
    :PERCENTUAL_PIS, :VALOR_PIS, :PERCENTUAL_COFINS ,:VALOR_COFINS,
    :VALOR_FRETE, :VALOR_SEGURO, :NFS,
    :NFS_ITEM_CONTROLE,:NF_EXTERNO, :NF_EXTERNO_ITEM_CONTROLE, :OC,:OC_ITEM_CONTROLE,
    :T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
    :T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,
    :ESTABELECIMENTO_CODIGO,:EMPRESA_CODIGO,:NUMERO_NOTAFISCAL,:DATA_ENTRADA,
    :SITUACAO,:CONTROLE,:VALOR_CUSTO,:PRODUTO_GRADE_CODIGO,:tributacao_PIS,
    :tributacao_cofins, :DI, :DI_DATA_REGISTRO, :DI_DATA_DESEMBARACO,
    :DI_LOCAL_DESEMBARACO, :DI_UF_DESEMBARACO, :DI_CODIGO_EXPORTADOR,
    :DI_ADICAO, :DI_SEQUENCIAL, :DI_CODIGO_FABRICANTE, :DI_DESCONTO_ADICAO,
    :di_base_calculo,:di_despesas_aduaneiras,:di_valor_ii,:Di_valor_iof,
    :VALOR_ICMS,:BASECALCULO_IPI,:BASECALCULO_PIS,:BASECALCULO_COFINS,
    :VALOR_ACRESCIMO,:VALOR_DESCONTO,:FISCAL_ISENTAS_IPI,:FISCAL_ISENTAS_ICMS,
    :FISCAL_OUTRAS_IPI,:FISCAL_OUTRAS_ICMS,:FISCAL_VALOR_ICMS,:FISCAL_VALOR_IPI,
    :FISCAL_VALOR_PIS,:FISCAL_VALOR_COFINS,:FISCAL_PERCENTUAL_ICMS,:FISCAL_PERCENTUAL_IPI,
    :FISCAL_PERCENTUAL_PIS,:FISCAL_PERCENTUAL_COFINS,:FISCAL_BASECALCULO_ICMS,
    :FISCAL_BASECALCULO_IPI,:FISCAL_BASECALCULO_PIS,:FISCAL_BASECALCULO_COFINS,
    :VALOR_CONTABIL,:valor_basecalculo_icms, :VALOR_PEDAGIO,:FISCAL_CFOP_CODIGO,
    :FISCAL_TRIBUTACAO_ORIGEM, :FISCAL_TRIBUTACAO_ICMS,:FISCAL_TRIBUTACAO_IPI,
    :FISCAL_TRIBUTACAO_PIS, :FISCAL_TRIBUTACAO_COFINS , :DESCONTO_BASECALCULO_ICMS,
    :BASECALCULO_FCI, :Codigo_Fci,

    :MODALIDADE_ICMS, :MODALIDADE_ICMS_ST, :MARGEM_ICMS_ST, :REDUCAO_ICMS_ST,
    :BASECALCULO_ICMS_ST, :ALIQUOTA_ICMS_ST, :VALOR_ICMS_ST,:FISCAL_REDUCAO_ICMS_ST,
    :FISCAL_BASECALCULO_ICMS_ST, :FISCAL_ALIQUOTA_ICMS_ST, :FISCAL_VALOR_ICMS_ST,
    :INFORMACOES_COMPLEMENTARES, :DI_NVE, :DI_TIPO_VIA_TRANSP,
    :DI_TIPO_VIA_TRANSP_DESCRICAO, :DI_VALOR_AFRMM, :DI_TIPO_INTERMEDIO,
    :DI_TIPO_INTERMEDIO_DESCRICAO, :DI_CNPJ_INTERMEDIO, :DI_UF_INTERMEDIO,
    :DI_NUMERO_DRAWBACK, :Conta_Contabil, :CCusto, :CCUSTO_DESCRICAO, :ENQUADRAMENTO_IPI,
    :QUANTIDADE_ALTERNATIVA, :UM_ALTERNATIVA, :VALOR_ALTERNATIVO,:REDUCAO_BASE_PISCOF


do suspend;
end
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPC_NFE_ITEM11 (
    CONTROLE_1 integer)
returns (
    NFE_CONTROLE integer,
    SEQUENCIA integer,
    OPERACAO_CODIGO varchar(3),
    CFOP_CODIGO varchar(5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    GRADE_CODIGO integer,
    NCM_CODIGO varchar(10),
    TRIBUTACAO_ICMS integer,
    TRIBUTACAO_IPI varchar(2),
    TRIBUTACAO_ORIGEM integer,
    LOCALIZACAO_CODIGO integer,
    LOCALIZACAO_DESCRICAO varchar(20),
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    BASECALCULO_ICMS numeric(10,5),
    PERCENTUAL_ICMS numeric(10,5),
    PERCENTUAL_IPI numeric(10,5),
    VALOR_IPI numeric(10,5),
    PERCENTUAL_PIS numeric(10,5),
    VALOR_PIS numeric(10,5),
    PERCENTUAL_COFINS numeric(10,5),
    VALOR_COFINS numeric(10,5),
    VALOR_FRETE numeric(10,2),
    VALOR_SEGURO numeric(10,2),
    NFS integer,
    NFS_ITEM_CONTROLE integer,
    NF_EXTERNO integer,
    NF_EXTERNO_ITEM_CONTROLE integer,
    OC integer,
    OC_ITEM_CONTROLE integer,
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    ESTABELECIMENTO_CODIGO integer,
    EMPRESA_CODIGO integer,
    NUMERO_NOTAFISCAL integer,
    DATA_ENTRADA date,
    SITUACAO integer,
    CONTROLE integer,
    VALOR_CUSTO numeric(10,5),
    PRODUTO_GRADE_CODIGO integer,
    TRIBUTACAO_PIS varchar(2),
    TRIBUTACAO_COFINS varchar(2),
    DI varchar(12),
    DI_DATA_REGISTRO date,
    DI_DATA_DESEMBARACO date,
    DI_LOCAL_DESEMBARACO varchar(60),
    DI_UF_DESEMBARACO char(2),
    DI_CODIGO_EXPORTADOR varchar(60),
    DI_ADICAO integer,
    DI_SEQUENCIAL integer,
    DI_CODIGO_FABRICANTE varchar(60),
    DI_DESCONTO_ADICAO numeric(10,2),
    DI_BASE_CALCULO numeric(10,2),
    DI_DESPESAS_ADUANEIRAS numeric(10,2),
    DI_VALOR_II numeric(10,2),
    DI_VALOR_IOF numeric(10,2),
    VALOR_ICMS numeric(10,2),
    BASECALCULO_IPI numeric(10,2),
    BASECALCULO_PIS numeric(10,2),
    BASECALCULO_COFINS numeric(10,2),
    VALOR_ACRESCIMO numeric(10,2),
    VALOR_DESCONTO numeric(10,2),
    FISCAL_ISENTAS_IPI numeric(10,2),
    FISCAL_ISENTAS_ICMS numeric(10,2),
    FISCAL_OUTRAS_IPI numeric(10,2),
    FISCAL_OUTRAS_ICMS numeric(10,2),
    FISCAL_VALOR_ICMS numeric(10,2),
    FISCAL_VALOR_IPI numeric(10,2),
    FISCAL_VALOR_PIS numeric(10,2),
    FISCAL_VALOR_COFINS numeric(10,2),
    FISCAL_PERCENTUAL_ICMS numeric(10,2),
    FISCAL_PERCENTUAL_IPI numeric(10,2),
    FISCAL_PERCENTUAL_PIS numeric(10,2),
    FISCAL_PERCENTUAL_COFINS numeric(10,2),
    FISCAL_BASECALCULO_ICMS numeric(10,5),
    FISCAL_BASECALCULO_IPI numeric(10,2),
    FISCAL_BASECALCULO_PIS numeric(10,2),
    FISCAL_BASECALCULO_COFINS numeric(10,2),
    VALOR_CONTABIL numeric(10,2),
    VALOR_BASECALCULO_ICMS numeric(10,2),
    VALOR_PEDAGIO numeric(10,2),
    FISCAL_CFOP_CODIGO varchar(5),
    FISCAL_TRIBUTACAO_ORIGEM integer,
    FISCAL_TRIBUTACAO_ICMS integer,
    FISCAL_TRIBUTACAO_IPI char(2),
    FISCAL_TRIBUTACAO_PIS char(2),
    FISCAL_TRIBUTACAO_COFINS char(2),
    DESCONTO_BASECALCULO_ICMS numeric(10,2),
    BASECALCULO_FCI numeric(15,4),
    CODIGO_FCI varchar(50),
    MODALIDADE_ICMS char(1),
    MODALIDADE_ICMS_ST char(1),
    MARGEM_ICMS_ST numeric(15,4),
    REDUCAO_ICMS_ST numeric(15,4),
    BASECALCULO_ICMS_ST numeric(15,4),
    ALIQUOTA_ICMS_ST numeric(15,4),
    VALOR_ICMS_ST numeric(15,4),
    FISCAL_REDUCAO_ICMS_ST numeric(10,2),
    FISCAL_BASECALCULO_ICMS_ST numeric(10,2),
    FISCAL_ALIQUOTA_ICMS_ST numeric(10,2),
    FISCAL_VALOR_ICMS_ST numeric(10,2),
    INFORMACOES_COMPLEMENTARES varchar(500),
    DI_NVE varchar(60),
    DI_TIPO_VIA_TRANSP integer,
    DI_TIPO_VIA_TRANSP_DESCRICAO varchar(30),
    DI_VALOR_AFRMM numeric(15,2),
    DI_TIPO_INTERMEDIO varchar(1),
    DI_TIPO_INTERMEDIO_DESCRICAO varchar(30),
    DI_CNPJ_INTERMEDIO varchar(14),
    DI_UF_INTERMEDIO varchar(2),
    DI_NUMERO_DRAWBACK varchar(11),
    CONTA_CONTABIL varchar(11),
    CCUSTO varchar(8),
    CCUSTO_DESCRICAO varchar(130),
    ENQUADRAMENTO_IPI varchar(3),
    QUANTIDADE_ALTERNATIVA numeric(18,4),
    UM_ALTERNATIVA varchar(10),
    VALOR_ALTERNATIVO numeric(18,10),
    REDUCAO_BASE_PISCOF char(1))
as
begin
for select
A.NFe_CONTROLE      ,A.SEQUENCIA        ,A.OPERACAO_CODIGO      ,A.CFOP_CODIGO ,
A.PRODUTO_CODIGO    ,A.PRODUTO_DESCRICAO,A.PRODUTO_UNIDADEMEDIDA,A.GRADE_CODIGO,
A.NCM_CODIGO        ,A.TRIBUTACAO_ICMS  ,A.TRIBUTACAO_IPI       ,A.TRIBUTACAO_ORIGEM,
A.LOCALIZACAO_CODIGO,(Select First 1 L.Descricao From TbLocalizacao L Where A.Localizacao_Codigo = L.Codigo),
A.QUANTIDADE        ,A.VALOR_UNITARIO       ,A.VALOR_TOTAL      ,
A.BASECALCULO_ICMS  ,A.PERCENTUAL_ICMS  ,A.PERCENTUAL_IPI       ,A.VALOR_IPI   ,
A.PERCENTUAL_PIS    ,A.VALOR_PIS        ,A.PERCENTUAL_COFINS    ,A.VALOR_COFINS,
A.VALOR_FRETE, A.VALOR_SEGURO, A.NFs, A.NFs_ITEM_CONTROLE,A.NF_EXTERNO ,
A.NF_EXTERNO_ITEM_CONTROLE, A.OC,A.OC_ITEM_CONTROLE,
A.T01,A.T02,A.T03,A.T04,A.T05,A.T06,A.T07,A.T08,A.T09,A.T10,
A.T11,A.T12,A.T13,A.T14,A.T15,A.T16,A.T17,A.T18,A.T19,A.T20,
A.ESTABELECIMENTO_CODIGO,A.EMPRESA_CODIGO,A.NUMERO_NOTAFISCAL,A.DATA_ENTRADA,
A.SITUACAO,A.CONTROLE,A.VALOR_CUSTO,
(Select First 1 B.GRADE_CODIGO From TbProduto B Where A.Produto_Codigo = B.Codigo),
A.tributacao_PIS, A.tributacao_cofins,A.DI,A.DI_DATA_REGISTRO,A.DI_DATA_DESEMBARACO,
A.DI_LOCAL_DESEMBARACO,A.DI_UF_DESEMBARACO,A.DI_CODIGO_EXPORTADOR,A.DI_ADICAO,
A.DI_SEQUENCIAL,A.DI_CODIGO_FABRICANTE,A.DI_DESCONTO_ADICAO,
A.di_base_calculo,A.di_despesas_aduaneiras,A.di_valor_ii,A.di_valor_iof,
A.VALOR_ICMS,A.BASECALCULO_IPI,A.BASECALCULO_PIS,A.BASECALCULO_COFINS,
A.VALOR_ACRESCIMO,A.VALOR_DESCONTO,A.FISCAL_ISENTAS_IPI,A.FISCAL_ISENTAS_ICMS,
A.FISCAL_OUTRAS_IPI,A.FISCAL_OUTRAS_ICMS,A.FISCAL_VALOR_ICMS,A.FISCAL_VALOR_IPI,
A.FISCAL_VALOR_PIS,A.FISCAL_VALOR_COFINS,A.FISCAL_PERCENTUAL_ICMS,A.FISCAL_PERCENTUAL_IPI,
A.FISCAL_PERCENTUAL_PIS,A.FISCAL_PERCENTUAL_COFINS,A.FISCAL_BASECALCULO_ICMS,
A.FISCAL_BASECALCULO_IPI,A.FISCAL_BASECALCULO_PIS,A.FISCAL_BASECALCULO_COFINS,
A.VALOR_CONTABIL, A.valor_basecalculo_icms, A.VALOR_PEDAGIO, A.FISCAL_CFOP_CODIGO,A.FISCAL_TRIBUTACAO_ORIGEM,
A.FISCAL_TRIBUTACAO_ICMS,A.FISCAL_TRIBUTACAO_IPI,A.FISCAL_TRIBUTACAO_PIS,
A.FISCAL_TRIBUTACAO_COFINS, A.DESCONTO_BASECALCULO_ICMS, A.BASECALCULO_FCI, A.Codigo_Fci,

A.MODALIDADE_ICMS, A.MODALIDADE_ICMS_ST, A.MARGEM_ICMS_ST, A.REDUCAO_ICMS_ST,
A.BASECALCULO_ICMS_ST, A.ALIQUOTA_ICMS_ST, A.VALOR_ICMS_ST,A.FISCAL_REDUCAO_ICMS_ST,
A.FISCAL_BASECALCULO_ICMS_ST, A.FISCAL_ALIQUOTA_ICMS_ST, A.FISCAL_VALOR_ICMS_ST,

A.INFORMACOES_COMPLEMENTARES, A.DI_NVE,
A.DI_TIPO_VIA_TRANSP, IIF(A.DI_TIPO_VIA_TRANSP=1,'Maritima',
                      IIF(A.DI_TIPO_VIA_TRANSP=2,'Fluvial',
                      IIF(A.DI_TIPO_VIA_TRANSP=3,'Lacustre',
                      IIF(A.DI_TIPO_VIA_TRANSP=4,'Aerea',
                      IIF(A.DI_TIPO_VIA_TRANSP=5,'Postal',
                      IIF(A.DI_TIPO_VIA_TRANSP=6,'Ferroviaria',
                      IIF(A.DI_TIPO_VIA_TRANSP=7,'Rodoviaria',
                      IIF(A.DI_TIPO_VIA_TRANSP=8,'Conduto/Rd.Trnsm',
                      IIF(A.DI_TIPO_VIA_TRANSP=9,'Meios Proprios',
                      IIF(A.DI_TIPO_VIA_TRANSP=10,'Entr/Saida ficta','')))))))))),
A.DI_VALOR_AFRMM,
A.DI_TIPO_INTERMEDIO, IIF(A.DI_TIPO_INTERMEDIO='1','Imp.Conta Propria',
                      IIF(A.DI_TIPO_INTERMEDIO='2','Imp.Conta e Ordem',
                      IIF(A.DI_TIPO_INTERMEDIO='3','Imp.por Encomenda',''))),
A.DI_CNPJ_INTERMEDIO, A.DI_UF_INTERMEDIO, A.DI_NUMERO_DRAWBACK, A.Conta_Contabil, A.CCusto,

IIF(char_length(A.CCusto)=2,
(Select First 1 C.Descricao From TbCentro_de_Custo C Where C.CODIGO = SUBSTRING(A.CCusto FROM 1 FOR 2)),
IIF(char_length(A.CCusto)=5,
(Select First 1 C.Descricao From TbCentro_de_Custo C Where C.CODIGO = SUBSTRING(A.CCusto FROM 1 FOR 2))||' - '||
(Select First 1 C.Descricao From TbCentro_de_Custo C Where C.CODIGO = SUBSTRING(A.CCusto FROM 1 FOR 5)),
IIF(char_length(A.CCusto)=8,
(Select First 1 C.Descricao From TbCentro_de_Custo C Where C.CODIGO = SUBSTRING(A.CCusto FROM 1 FOR 5))||' - '||
(Select First 1 C.Descricao From TbCentro_de_Custo C Where C.CODIGO = SUBSTRING(A.CCusto FROM 1 FOR 8)),''))) CCUSTO_DESCRICAO,

A.ENQUADRAMENTO_IPI,
A.QUANTIDADE_ALTERNATIVA, A.UM_ALTERNATIVA, A.VALOR_ALTERNATIVO, A.REDUCAO_BASE_PISCOF

From TbNfE_Item A
Where (A.NFE_CONTROLE = :CONTROLE_1)
order by A.SEQUENCIA
into
    :NFE_CONTROLE      ,:SEQUENCIA        , :OPERACAO_CODIGO, :CFOP_CODIGO,
    :PRODUTO_CODIGO    ,:PRODUTO_DESCRICAO, :PRODUTO_UNIDADEMEDIDA,:GRADE_CODIGO,
    :NCM_CODIGO        ,:TRIBUTACAO_ICMS  , :TRIBUTACAO_IPI, :TRIBUTACAO_ORIGEM,
    :LOCALIZACAO_CODIGO,:LOCALIZACAO_DESCRICAO,
    :QUANTIDADE       , :VALOR_UNITARIO, :VALOR_TOTAL,
    :BASECALCULO_ICMS, :PERCENTUAL_ICMS   , :PERCENTUAL_IPI, :VALOR_IPI,
    :PERCENTUAL_PIS, :VALOR_PIS, :PERCENTUAL_COFINS ,:VALOR_COFINS,
    :VALOR_FRETE, :VALOR_SEGURO, :NFS,
    :NFS_ITEM_CONTROLE,:NF_EXTERNO, :NF_EXTERNO_ITEM_CONTROLE, :OC,:OC_ITEM_CONTROLE,
    :T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
    :T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,
    :ESTABELECIMENTO_CODIGO,:EMPRESA_CODIGO,:NUMERO_NOTAFISCAL,:DATA_ENTRADA,
    :SITUACAO,:CONTROLE,:VALOR_CUSTO,:PRODUTO_GRADE_CODIGO,:tributacao_PIS,
    :tributacao_cofins, :DI, :DI_DATA_REGISTRO, :DI_DATA_DESEMBARACO,
    :DI_LOCAL_DESEMBARACO, :DI_UF_DESEMBARACO, :DI_CODIGO_EXPORTADOR,
    :DI_ADICAO, :DI_SEQUENCIAL, :DI_CODIGO_FABRICANTE, :DI_DESCONTO_ADICAO,
    :di_base_calculo,:di_despesas_aduaneiras,:di_valor_ii,:Di_valor_iof,
    :VALOR_ICMS,:BASECALCULO_IPI,:BASECALCULO_PIS,:BASECALCULO_COFINS,
    :VALOR_ACRESCIMO,:VALOR_DESCONTO,:FISCAL_ISENTAS_IPI,:FISCAL_ISENTAS_ICMS,
    :FISCAL_OUTRAS_IPI,:FISCAL_OUTRAS_ICMS,:FISCAL_VALOR_ICMS,:FISCAL_VALOR_IPI,
    :FISCAL_VALOR_PIS,:FISCAL_VALOR_COFINS,:FISCAL_PERCENTUAL_ICMS,:FISCAL_PERCENTUAL_IPI,
    :FISCAL_PERCENTUAL_PIS,:FISCAL_PERCENTUAL_COFINS,:FISCAL_BASECALCULO_ICMS,
    :FISCAL_BASECALCULO_IPI,:FISCAL_BASECALCULO_PIS,:FISCAL_BASECALCULO_COFINS,
    :VALOR_CONTABIL,:valor_basecalculo_icms, :VALOR_PEDAGIO,:FISCAL_CFOP_CODIGO,
    :FISCAL_TRIBUTACAO_ORIGEM, :FISCAL_TRIBUTACAO_ICMS,:FISCAL_TRIBUTACAO_IPI,
    :FISCAL_TRIBUTACAO_PIS, :FISCAL_TRIBUTACAO_COFINS , :DESCONTO_BASECALCULO_ICMS,
    :BASECALCULO_FCI, :Codigo_Fci,

    :MODALIDADE_ICMS, :MODALIDADE_ICMS_ST, :MARGEM_ICMS_ST, :REDUCAO_ICMS_ST,
    :BASECALCULO_ICMS_ST, :ALIQUOTA_ICMS_ST, :VALOR_ICMS_ST,:FISCAL_REDUCAO_ICMS_ST,
    :FISCAL_BASECALCULO_ICMS_ST, :FISCAL_ALIQUOTA_ICMS_ST, :FISCAL_VALOR_ICMS_ST,
    :INFORMACOES_COMPLEMENTARES, :DI_NVE, :DI_TIPO_VIA_TRANSP,
    :DI_TIPO_VIA_TRANSP_DESCRICAO, :DI_VALOR_AFRMM, :DI_TIPO_INTERMEDIO,
    :DI_TIPO_INTERMEDIO_DESCRICAO, :DI_CNPJ_INTERMEDIO, :DI_UF_INTERMEDIO,
    :DI_NUMERO_DRAWBACK, :Conta_Contabil, :CCusto, :CCUSTO_DESCRICAO, :ENQUADRAMENTO_IPI,
    :QUANTIDADE_ALTERNATIVA, :UM_ALTERNATIVA, :VALOR_ALTERNATIVO,:REDUCAO_BASE_PISCOF


do suspend;
end
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPC_NFE_ITEM7 (
    CONTROLE_1 integer)
returns (
    NFE_CONTROLE integer,
    SEQUENCIA integer,
    OPERACAO_CODIGO varchar(3),
    CFOP_CODIGO varchar(5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    GRADE_CODIGO integer,
    NCM_CODIGO varchar(10),
    TRIBUTACAO_ICMS integer,
    TRIBUTACAO_IPI varchar(2),
    TRIBUTACAO_ORIGEM integer,
    LOCALIZACAO_CODIGO integer,
    LOCALIZACAO_DESCRICAO varchar(20),
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    BASECALCULO_ICMS numeric(10,5),
    PERCENTUAL_ICMS numeric(10,5),
    PERCENTUAL_IPI numeric(10,5),
    VALOR_IPI numeric(10,5),
    PERCENTUAL_PIS numeric(10,5),
    VALOR_PIS numeric(10,5),
    PERCENTUAL_COFINS numeric(10,5),
    VALOR_COFINS numeric(10,5),
    VALOR_FRETE numeric(10,2),
    VALOR_SEGURO numeric(10,2),
    NFS integer,
    NFS_ITEM_CONTROLE integer,
    NF_EXTERNO integer,
    NF_EXTERNO_ITEM_CONTROLE integer,
    OC integer,
    OC_ITEM_CONTROLE integer,
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    ESTABELECIMENTO_CODIGO integer,
    EMPRESA_CODIGO integer,
    NUMERO_NOTAFISCAL integer,
    DATA_ENTRADA date,
    SITUACAO integer,
    CONTROLE integer,
    VALOR_CUSTO numeric(10,5),
    PRODUTO_GRADE_CODIGO integer,
    TRIBUTACAO_PIS varchar(2),
    TRIBUTACAO_COFINS varchar(2),
    DI varchar(12),
    DI_DATA_REGISTRO date,
    DI_DATA_DESEMBARACO date,
    DI_LOCAL_DESEMBARACO varchar(60),
    DI_UF_DESEMBARACO char(2),
    DI_CODIGO_EXPORTADOR varchar(60),
    DI_ADICAO integer,
    DI_SEQUENCIAL integer,
    DI_CODIGO_FABRICANTE varchar(60),
    DI_DESCONTO_ADICAO numeric(10,2),
    DI_BASE_CALCULO numeric(10,2),
    DI_DESPESAS_ADUANEIRAS numeric(10,2),
    DI_VALOR_II numeric(10,2),
    DI_VALOR_IOF numeric(10,2),
    VALOR_ICMS numeric(10,2),
    BASECALCULO_IPI numeric(10,2),
    BASECALCULO_PIS numeric(10,2),
    BASECALCULO_COFINS numeric(10,2),
    VALOR_ACRESCIMO numeric(10,2),
    VALOR_DESCONTO numeric(10,2),
    FISCAL_ISENTAS_IPI numeric(10,2),
    FISCAL_ISENTAS_ICMS numeric(10,2),
    FISCAL_OUTRAS_IPI numeric(10,2),
    FISCAL_OUTRAS_ICMS numeric(10,2),
    FISCAL_VALOR_ICMS numeric(10,2),
    FISCAL_VALOR_IPI numeric(10,2),
    FISCAL_VALOR_PIS numeric(10,2),
    FISCAL_VALOR_COFINS numeric(10,2),
    FISCAL_PERCENTUAL_ICMS numeric(10,2),
    FISCAL_PERCENTUAL_IPI numeric(10,2),
    FISCAL_PERCENTUAL_PIS numeric(10,2),
    FISCAL_PERCENTUAL_COFINS numeric(10,2),
    FISCAL_BASECALCULO_ICMS numeric(10,5),
    FISCAL_BASECALCULO_IPI numeric(10,2),
    FISCAL_BASECALCULO_PIS numeric(10,2),
    FISCAL_BASECALCULO_COFINS numeric(10,2),
    VALOR_CONTABIL numeric(10,2),
    VALOR_BASECALCULO_ICMS numeric(10,2),
    VALOR_PEDAGIO numeric(10,2),
    FISCAL_CFOP_CODIGO varchar(5),
    FISCAL_TRIBUTACAO_ORIGEM integer,
    FISCAL_TRIBUTACAO_ICMS integer,
    FISCAL_TRIBUTACAO_IPI char(2),
    FISCAL_TRIBUTACAO_PIS char(2),
    FISCAL_TRIBUTACAO_COFINS char(2),
    DESCONTO_BASECALCULO_ICMS numeric(10,2),
    BASECALCULO_FCI numeric(15,4),
    CODIGO_FCI varchar(50),
    MODALIDADE_ICMS char(1),
    MODALIDADE_ICMS_ST char(1),
    MARGEM_ICMS_ST numeric(15,4),
    REDUCAO_ICMS_ST numeric(15,4),
    BASECALCULO_ICMS_ST numeric(15,4),
    ALIQUOTA_ICMS_ST numeric(15,4),
    VALOR_ICMS_ST numeric(15,4),
    FISCAL_REDUCAO_ICMS_ST numeric(10,2),
    FISCAL_BASECALCULO_ICMS_ST numeric(10,2),
    FISCAL_ALIQUOTA_ICMS_ST numeric(10,2),
    FISCAL_VALOR_ICMS_ST numeric(10,2),
    INFORMACOES_COMPLEMENTARES varchar(200),
    DI_NVE varchar(60),
    DI_TIPO_VIA_TRANSP integer,
    DI_TIPO_VIA_TRANSP_DESCRICAO varchar(30),
    DI_VALOR_AFRMM numeric(15,2),
    DI_TIPO_INTERMEDIO varchar(1),
    DI_TIPO_INTERMEDIO_DESCRICAO varchar(30),
    DI_CNPJ_INTERMEDIO varchar(14),
    DI_UF_INTERMEDIO varchar(2),
    DI_NUMERO_DRAWBACK varchar(11))
as
begin
for select
A.NFe_CONTROLE      ,A.SEQUENCIA        ,A.OPERACAO_CODIGO      ,A.CFOP_CODIGO ,
A.PRODUTO_CODIGO    ,A.PRODUTO_DESCRICAO,A.PRODUTO_UNIDADEMEDIDA,A.GRADE_CODIGO,
A.NCM_CODIGO        ,A.TRIBUTACAO_ICMS  ,A.TRIBUTACAO_IPI       ,A.TRIBUTACAO_ORIGEM,
A.LOCALIZACAO_CODIGO,(Select First 1 L.Descricao From TbLocalizacao L Where A.Localizacao_Codigo = L.Codigo),
A.QUANTIDADE        ,A.VALOR_UNITARIO       ,A.VALOR_TOTAL      ,
A.BASECALCULO_ICMS  ,A.PERCENTUAL_ICMS  ,A.PERCENTUAL_IPI       ,A.VALOR_IPI   ,
A.PERCENTUAL_PIS    ,A.VALOR_PIS        ,A.PERCENTUAL_COFINS    ,A.VALOR_COFINS,
A.VALOR_FRETE, A.VALOR_SEGURO, A.NFs, A.NFs_ITEM_CONTROLE,A.NF_EXTERNO ,
A.NF_EXTERNO_ITEM_CONTROLE, A.OC,A.OC_ITEM_CONTROLE,
A.T01,A.T02,A.T03,A.T04,A.T05,A.T06,A.T07,A.T08,A.T09,A.T10,
A.T11,A.T12,A.T13,A.T14,A.T15,A.T16,A.T17,A.T18,A.T19,A.T20,
A.ESTABELECIMENTO_CODIGO,A.EMPRESA_CODIGO,A.NUMERO_NOTAFISCAL,A.DATA_ENTRADA,
A.SITUACAO,A.CONTROLE,A.VALOR_CUSTO,
(Select First 1 B.GRADE_CODIGO From TbProduto B Where A.Produto_Codigo = B.Codigo),
A.tributacao_PIS, A.tributacao_cofins,A.DI,A.DI_DATA_REGISTRO,A.DI_DATA_DESEMBARACO,
A.DI_LOCAL_DESEMBARACO,A.DI_UF_DESEMBARACO,A.DI_CODIGO_EXPORTADOR,A.DI_ADICAO,
A.DI_SEQUENCIAL,A.DI_CODIGO_FABRICANTE,A.DI_DESCONTO_ADICAO,
A.di_base_calculo,A.di_despesas_aduaneiras,A.di_valor_ii,A.di_valor_iof,
A.VALOR_ICMS,A.BASECALCULO_IPI,A.BASECALCULO_PIS,A.BASECALCULO_COFINS,
A.VALOR_ACRESCIMO,A.VALOR_DESCONTO,A.FISCAL_ISENTAS_IPI,A.FISCAL_ISENTAS_ICMS,
A.FISCAL_OUTRAS_IPI,A.FISCAL_OUTRAS_ICMS,A.FISCAL_VALOR_ICMS,A.FISCAL_VALOR_IPI,
A.FISCAL_VALOR_PIS,A.FISCAL_VALOR_COFINS,A.FISCAL_PERCENTUAL_ICMS,A.FISCAL_PERCENTUAL_IPI,
A.FISCAL_PERCENTUAL_PIS,A.FISCAL_PERCENTUAL_COFINS,A.FISCAL_BASECALCULO_ICMS,
A.FISCAL_BASECALCULO_IPI,A.FISCAL_BASECALCULO_PIS,A.FISCAL_BASECALCULO_COFINS,
A.VALOR_CONTABIL, A.valor_basecalculo_icms, A.VALOR_PEDAGIO, A.FISCAL_CFOP_CODIGO,A.FISCAL_TRIBUTACAO_ORIGEM,
A.FISCAL_TRIBUTACAO_ICMS,A.FISCAL_TRIBUTACAO_IPI,A.FISCAL_TRIBUTACAO_PIS,
A.FISCAL_TRIBUTACAO_COFINS, A.DESCONTO_BASECALCULO_ICMS, A.BASECALCULO_FCI, A.Codigo_Fci,

A.MODALIDADE_ICMS, A.MODALIDADE_ICMS_ST, A.MARGEM_ICMS_ST, A.REDUCAO_ICMS_ST,
A.BASECALCULO_ICMS_ST, A.ALIQUOTA_ICMS_ST, A.VALOR_ICMS_ST,A.FISCAL_REDUCAO_ICMS_ST,
A.FISCAL_BASECALCULO_ICMS_ST, A.FISCAL_ALIQUOTA_ICMS_ST, A.FISCAL_VALOR_ICMS_ST,

A.INFORMACOES_COMPLEMENTARES, A.DI_NVE,
A.DI_TIPO_VIA_TRANSP, IIF(A.DI_TIPO_VIA_TRANSP=1,'Marítima',
                      IIF(A.DI_TIPO_VIA_TRANSP=2,'Fluvial',
                      IIF(A.DI_TIPO_VIA_TRANSP=3,'Lacustre',
                      IIF(A.DI_TIPO_VIA_TRANSP=4,'Aérea',
                      IIF(A.DI_TIPO_VIA_TRANSP=5,'Postal',
                      IIF(A.DI_TIPO_VIA_TRANSP=6,'Ferroviária',
                      IIF(A.DI_TIPO_VIA_TRANSP=7,'Rodoviária',
                      IIF(A.DI_TIPO_VIA_TRANSP=8,'Conduto/Rd.Trnsm',
                      IIF(A.DI_TIPO_VIA_TRANSP=9,'Meios Próprios',
                      IIF(A.DI_TIPO_VIA_TRANSP=10,'Entr/Saída ficta','')))))))))),
A.DI_VALOR_AFRMM,
A.DI_TIPO_INTERMEDIO, IIF(A.DI_TIPO_INTERMEDIO='1','Imp.Conta Própria',
                      IIF(A.DI_TIPO_INTERMEDIO='2','Imp.Conta e Ordem',
                      IIF(A.DI_TIPO_INTERMEDIO='3','Imp.por Encomenda',''))),
A.DI_CNPJ_INTERMEDIO, A.DI_UF_INTERMEDIO, A.DI_NUMERO_DRAWBACK

From TbNfE_Item A
Where (A.NFE_CONTROLE = :CONTROLE_1)
order by A.SEQUENCIA
into
    :NFE_CONTROLE      ,:SEQUENCIA        , :OPERACAO_CODIGO, :CFOP_CODIGO,
    :PRODUTO_CODIGO    ,:PRODUTO_DESCRICAO, :PRODUTO_UNIDADEMEDIDA,:GRADE_CODIGO,
    :NCM_CODIGO        ,:TRIBUTACAO_ICMS  , :TRIBUTACAO_IPI, :TRIBUTACAO_ORIGEM,
    :LOCALIZACAO_CODIGO,:LOCALIZACAO_DESCRICAO,
    :QUANTIDADE       , :VALOR_UNITARIO, :VALOR_TOTAL,
    :BASECALCULO_ICMS, :PERCENTUAL_ICMS   , :PERCENTUAL_IPI, :VALOR_IPI,
    :PERCENTUAL_PIS, :VALOR_PIS, :PERCENTUAL_COFINS ,:VALOR_COFINS,
    :VALOR_FRETE, :VALOR_SEGURO, :NFS,
    :NFS_ITEM_CONTROLE,:NF_EXTERNO, :NF_EXTERNO_ITEM_CONTROLE, :OC,:OC_ITEM_CONTROLE,
    :T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
    :T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,
    :ESTABELECIMENTO_CODIGO,:EMPRESA_CODIGO,:NUMERO_NOTAFISCAL,:DATA_ENTRADA,
    :SITUACAO,:CONTROLE,:VALOR_CUSTO,:PRODUTO_GRADE_CODIGO,:tributacao_PIS,
    :tributacao_cofins, :DI, :DI_DATA_REGISTRO, :DI_DATA_DESEMBARACO,
    :DI_LOCAL_DESEMBARACO, :DI_UF_DESEMBARACO, :DI_CODIGO_EXPORTADOR,
    :DI_ADICAO, :DI_SEQUENCIAL, :DI_CODIGO_FABRICANTE, :DI_DESCONTO_ADICAO,
    :di_base_calculo,:di_despesas_aduaneiras,:di_valor_ii,:Di_valor_iof,
    :VALOR_ICMS,:BASECALCULO_IPI,:BASECALCULO_PIS,:BASECALCULO_COFINS,
    :VALOR_ACRESCIMO,:VALOR_DESCONTO,:FISCAL_ISENTAS_IPI,:FISCAL_ISENTAS_ICMS,
    :FISCAL_OUTRAS_IPI,:FISCAL_OUTRAS_ICMS,:FISCAL_VALOR_ICMS,:FISCAL_VALOR_IPI,
    :FISCAL_VALOR_PIS,:FISCAL_VALOR_COFINS,:FISCAL_PERCENTUAL_ICMS,:FISCAL_PERCENTUAL_IPI,
    :FISCAL_PERCENTUAL_PIS,:FISCAL_PERCENTUAL_COFINS,:FISCAL_BASECALCULO_ICMS,
    :FISCAL_BASECALCULO_IPI,:FISCAL_BASECALCULO_PIS,:FISCAL_BASECALCULO_COFINS,
    :VALOR_CONTABIL,:valor_basecalculo_icms, :VALOR_PEDAGIO,:FISCAL_CFOP_CODIGO,
    :FISCAL_TRIBUTACAO_ORIGEM, :FISCAL_TRIBUTACAO_ICMS,:FISCAL_TRIBUTACAO_IPI,
    :FISCAL_TRIBUTACAO_PIS, :FISCAL_TRIBUTACAO_COFINS , :DESCONTO_BASECALCULO_ICMS,
    :BASECALCULO_FCI, :Codigo_Fci,

    :MODALIDADE_ICMS, :MODALIDADE_ICMS_ST, :MARGEM_ICMS_ST, :REDUCAO_ICMS_ST,
    :BASECALCULO_ICMS_ST, :ALIQUOTA_ICMS_ST, :VALOR_ICMS_ST,:FISCAL_REDUCAO_ICMS_ST,
    :FISCAL_BASECALCULO_ICMS_ST, :FISCAL_ALIQUOTA_ICMS_ST, :FISCAL_VALOR_ICMS_ST,
    :INFORMACOES_COMPLEMENTARES, :DI_NVE, :DI_TIPO_VIA_TRANSP,
    :DI_TIPO_VIA_TRANSP_DESCRICAO, :DI_VALOR_AFRMM, :DI_TIPO_INTERMEDIO,
    :DI_TIPO_INTERMEDIO_DESCRICAO, :DI_CNPJ_INTERMEDIO, :DI_UF_INTERMEDIO, :DI_NUMERO_DRAWBACK

do suspend;
end
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPC_NFE_ITEM8 (
    CONTROLE_1 integer)
returns (
    NFE_CONTROLE integer,
    SEQUENCIA integer,
    OPERACAO_CODIGO varchar(3),
    CFOP_CODIGO varchar(5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    GRADE_CODIGO integer,
    NCM_CODIGO varchar(10),
    TRIBUTACAO_ICMS integer,
    TRIBUTACAO_IPI varchar(2),
    TRIBUTACAO_ORIGEM integer,
    LOCALIZACAO_CODIGO integer,
    LOCALIZACAO_DESCRICAO varchar(20),
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    BASECALCULO_ICMS numeric(10,5),
    PERCENTUAL_ICMS numeric(10,5),
    PERCENTUAL_IPI numeric(10,5),
    VALOR_IPI numeric(10,5),
    PERCENTUAL_PIS numeric(10,5),
    VALOR_PIS numeric(10,5),
    PERCENTUAL_COFINS numeric(10,5),
    VALOR_COFINS numeric(10,5),
    VALOR_FRETE numeric(10,2),
    VALOR_SEGURO numeric(10,2),
    NFS integer,
    NFS_ITEM_CONTROLE integer,
    NF_EXTERNO integer,
    NF_EXTERNO_ITEM_CONTROLE integer,
    OC integer,
    OC_ITEM_CONTROLE integer,
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    ESTABELECIMENTO_CODIGO integer,
    EMPRESA_CODIGO integer,
    NUMERO_NOTAFISCAL integer,
    DATA_ENTRADA date,
    SITUACAO integer,
    CONTROLE integer,
    VALOR_CUSTO numeric(10,5),
    PRODUTO_GRADE_CODIGO integer,
    TRIBUTACAO_PIS varchar(2),
    TRIBUTACAO_COFINS varchar(2),
    DI varchar(12),
    DI_DATA_REGISTRO date,
    DI_DATA_DESEMBARACO date,
    DI_LOCAL_DESEMBARACO varchar(60),
    DI_UF_DESEMBARACO char(2),
    DI_CODIGO_EXPORTADOR varchar(60),
    DI_ADICAO integer,
    DI_SEQUENCIAL integer,
    DI_CODIGO_FABRICANTE varchar(60),
    DI_DESCONTO_ADICAO numeric(10,2),
    DI_BASE_CALCULO numeric(10,2),
    DI_DESPESAS_ADUANEIRAS numeric(10,2),
    DI_VALOR_II numeric(10,2),
    DI_VALOR_IOF numeric(10,2),
    VALOR_ICMS numeric(10,2),
    BASECALCULO_IPI numeric(10,2),
    BASECALCULO_PIS numeric(10,2),
    BASECALCULO_COFINS numeric(10,2),
    VALOR_ACRESCIMO numeric(10,2),
    VALOR_DESCONTO numeric(10,2),
    FISCAL_ISENTAS_IPI numeric(10,2),
    FISCAL_ISENTAS_ICMS numeric(10,2),
    FISCAL_OUTRAS_IPI numeric(10,2),
    FISCAL_OUTRAS_ICMS numeric(10,2),
    FISCAL_VALOR_ICMS numeric(10,2),
    FISCAL_VALOR_IPI numeric(10,2),
    FISCAL_VALOR_PIS numeric(10,2),
    FISCAL_VALOR_COFINS numeric(10,2),
    FISCAL_PERCENTUAL_ICMS numeric(10,2),
    FISCAL_PERCENTUAL_IPI numeric(10,2),
    FISCAL_PERCENTUAL_PIS numeric(10,2),
    FISCAL_PERCENTUAL_COFINS numeric(10,2),
    FISCAL_BASECALCULO_ICMS numeric(10,5),
    FISCAL_BASECALCULO_IPI numeric(10,2),
    FISCAL_BASECALCULO_PIS numeric(10,2),
    FISCAL_BASECALCULO_COFINS numeric(10,2),
    VALOR_CONTABIL numeric(10,2),
    VALOR_BASECALCULO_ICMS numeric(10,2),
    VALOR_PEDAGIO numeric(10,2),
    FISCAL_CFOP_CODIGO varchar(5),
    FISCAL_TRIBUTACAO_ORIGEM integer,
    FISCAL_TRIBUTACAO_ICMS integer,
    FISCAL_TRIBUTACAO_IPI char(2),
    FISCAL_TRIBUTACAO_PIS char(2),
    FISCAL_TRIBUTACAO_COFINS char(2),
    DESCONTO_BASECALCULO_ICMS numeric(10,2),
    BASECALCULO_FCI numeric(15,4),
    CODIGO_FCI varchar(50),
    MODALIDADE_ICMS char(1),
    MODALIDADE_ICMS_ST char(1),
    MARGEM_ICMS_ST numeric(15,4),
    REDUCAO_ICMS_ST numeric(15,4),
    BASECALCULO_ICMS_ST numeric(15,4),
    ALIQUOTA_ICMS_ST numeric(15,4),
    VALOR_ICMS_ST numeric(15,4),
    FISCAL_REDUCAO_ICMS_ST numeric(10,2),
    FISCAL_BASECALCULO_ICMS_ST numeric(10,2),
    FISCAL_ALIQUOTA_ICMS_ST numeric(10,2),
    FISCAL_VALOR_ICMS_ST numeric(10,2),
    INFORMACOES_COMPLEMENTARES varchar(200),
    DI_NVE varchar(60),
    DI_TIPO_VIA_TRANSP integer,
    DI_TIPO_VIA_TRANSP_DESCRICAO varchar(30),
    DI_VALOR_AFRMM numeric(15,2),
    DI_TIPO_INTERMEDIO varchar(1),
    DI_TIPO_INTERMEDIO_DESCRICAO varchar(30),
    DI_CNPJ_INTERMEDIO varchar(14),
    DI_UF_INTERMEDIO varchar(2),
    DI_NUMERO_DRAWBACK varchar(11),
    CONTA_CONTABIL varchar(11),
    CCUSTO varchar(8),
    CCUSTO_DESCRICAO varchar(130),
    ENQUADRAMENTO_IPI varchar(3))
as
begin
for select
A.NFe_CONTROLE      ,A.SEQUENCIA        ,A.OPERACAO_CODIGO      ,A.CFOP_CODIGO ,
A.PRODUTO_CODIGO    ,A.PRODUTO_DESCRICAO,A.PRODUTO_UNIDADEMEDIDA,A.GRADE_CODIGO,
A.NCM_CODIGO        ,A.TRIBUTACAO_ICMS  ,A.TRIBUTACAO_IPI       ,A.TRIBUTACAO_ORIGEM,
A.LOCALIZACAO_CODIGO,(Select First 1 L.Descricao From TbLocalizacao L Where A.Localizacao_Codigo = L.Codigo),
A.QUANTIDADE        ,A.VALOR_UNITARIO       ,A.VALOR_TOTAL      ,
A.BASECALCULO_ICMS  ,A.PERCENTUAL_ICMS  ,A.PERCENTUAL_IPI       ,A.VALOR_IPI   ,
A.PERCENTUAL_PIS    ,A.VALOR_PIS        ,A.PERCENTUAL_COFINS    ,A.VALOR_COFINS,
A.VALOR_FRETE, A.VALOR_SEGURO, A.NFs, A.NFs_ITEM_CONTROLE,A.NF_EXTERNO ,
A.NF_EXTERNO_ITEM_CONTROLE, A.OC,A.OC_ITEM_CONTROLE,
A.T01,A.T02,A.T03,A.T04,A.T05,A.T06,A.T07,A.T08,A.T09,A.T10,
A.T11,A.T12,A.T13,A.T14,A.T15,A.T16,A.T17,A.T18,A.T19,A.T20,
A.ESTABELECIMENTO_CODIGO,A.EMPRESA_CODIGO,A.NUMERO_NOTAFISCAL,A.DATA_ENTRADA,
A.SITUACAO,A.CONTROLE,A.VALOR_CUSTO,
(Select First 1 B.GRADE_CODIGO From TbProduto B Where A.Produto_Codigo = B.Codigo),
A.tributacao_PIS, A.tributacao_cofins,A.DI,A.DI_DATA_REGISTRO,A.DI_DATA_DESEMBARACO,
A.DI_LOCAL_DESEMBARACO,A.DI_UF_DESEMBARACO,A.DI_CODIGO_EXPORTADOR,A.DI_ADICAO,
A.DI_SEQUENCIAL,A.DI_CODIGO_FABRICANTE,A.DI_DESCONTO_ADICAO,
A.di_base_calculo,A.di_despesas_aduaneiras,A.di_valor_ii,A.di_valor_iof,
A.VALOR_ICMS,A.BASECALCULO_IPI,A.BASECALCULO_PIS,A.BASECALCULO_COFINS,
A.VALOR_ACRESCIMO,A.VALOR_DESCONTO,A.FISCAL_ISENTAS_IPI,A.FISCAL_ISENTAS_ICMS,
A.FISCAL_OUTRAS_IPI,A.FISCAL_OUTRAS_ICMS,A.FISCAL_VALOR_ICMS,A.FISCAL_VALOR_IPI,
A.FISCAL_VALOR_PIS,A.FISCAL_VALOR_COFINS,A.FISCAL_PERCENTUAL_ICMS,A.FISCAL_PERCENTUAL_IPI,
A.FISCAL_PERCENTUAL_PIS,A.FISCAL_PERCENTUAL_COFINS,A.FISCAL_BASECALCULO_ICMS,
A.FISCAL_BASECALCULO_IPI,A.FISCAL_BASECALCULO_PIS,A.FISCAL_BASECALCULO_COFINS,
A.VALOR_CONTABIL, A.valor_basecalculo_icms, A.VALOR_PEDAGIO, A.FISCAL_CFOP_CODIGO,A.FISCAL_TRIBUTACAO_ORIGEM,
A.FISCAL_TRIBUTACAO_ICMS,A.FISCAL_TRIBUTACAO_IPI,A.FISCAL_TRIBUTACAO_PIS,
A.FISCAL_TRIBUTACAO_COFINS, A.DESCONTO_BASECALCULO_ICMS, A.BASECALCULO_FCI, A.Codigo_Fci,

A.MODALIDADE_ICMS, A.MODALIDADE_ICMS_ST, A.MARGEM_ICMS_ST, A.REDUCAO_ICMS_ST,
A.BASECALCULO_ICMS_ST, A.ALIQUOTA_ICMS_ST, A.VALOR_ICMS_ST,A.FISCAL_REDUCAO_ICMS_ST,
A.FISCAL_BASECALCULO_ICMS_ST, A.FISCAL_ALIQUOTA_ICMS_ST, A.FISCAL_VALOR_ICMS_ST,

A.INFORMACOES_COMPLEMENTARES, A.DI_NVE,
A.DI_TIPO_VIA_TRANSP, IIF(A.DI_TIPO_VIA_TRANSP=1,'Marítima',
                      IIF(A.DI_TIPO_VIA_TRANSP=2,'Fluvial',
                      IIF(A.DI_TIPO_VIA_TRANSP=3,'Lacustre',
                      IIF(A.DI_TIPO_VIA_TRANSP=4,'Aérea',
                      IIF(A.DI_TIPO_VIA_TRANSP=5,'Postal',
                      IIF(A.DI_TIPO_VIA_TRANSP=6,'Ferroviária',
                      IIF(A.DI_TIPO_VIA_TRANSP=7,'Rodoviária',
                      IIF(A.DI_TIPO_VIA_TRANSP=8,'Conduto/Rd.Trnsm',
                      IIF(A.DI_TIPO_VIA_TRANSP=9,'Meios Próprios',
                      IIF(A.DI_TIPO_VIA_TRANSP=10,'Entr/Saída ficta','')))))))))),
A.DI_VALOR_AFRMM,
A.DI_TIPO_INTERMEDIO, IIF(A.DI_TIPO_INTERMEDIO='1','Imp.Conta Própria',
                      IIF(A.DI_TIPO_INTERMEDIO='2','Imp.Conta e Ordem',
                      IIF(A.DI_TIPO_INTERMEDIO='3','Imp.por Encomenda',''))),
A.DI_CNPJ_INTERMEDIO, A.DI_UF_INTERMEDIO, A.DI_NUMERO_DRAWBACK, A.Conta_Contabil, A.CCusto,

       IIF(char_length(A.CCusto)=2,
      (Select First 1 C.Descricao From TbCentro_de_Custo C Where C.CODIGO = SUBSTRING(A.CCusto FROM 1 FOR 2)),
       IIF(char_length(A.CCusto)=5,
      (Select First 1 C.Descricao From TbCentro_de_Custo C Where C.CODIGO = SUBSTRING(A.CCusto FROM 1 FOR 2))||' - '||
      (Select First 1 C.Descricao From TbCentro_de_Custo C Where C.CODIGO = SUBSTRING(A.CCusto FROM 1 FOR 5)),
       IIF(char_length(A.CCusto)=8,
      (Select First 1 C.Descricao From TbCentro_de_Custo C Where C.CODIGO = SUBSTRING(A.CCusto FROM 1 FOR 5))||' - '||
      (Select First 1 C.Descricao From TbCentro_de_Custo C Where C.CODIGO = SUBSTRING(A.CCusto FROM 1 FOR 8)),''))) CCUSTO_DESCRICAO,

       A.ENQUADRAMENTO_IPI


From TbNfE_Item A
Where (A.NFE_CONTROLE = :CONTROLE_1)
order by A.SEQUENCIA
into
    :NFE_CONTROLE      ,:SEQUENCIA        , :OPERACAO_CODIGO, :CFOP_CODIGO,
    :PRODUTO_CODIGO    ,:PRODUTO_DESCRICAO, :PRODUTO_UNIDADEMEDIDA,:GRADE_CODIGO,
    :NCM_CODIGO        ,:TRIBUTACAO_ICMS  , :TRIBUTACAO_IPI, :TRIBUTACAO_ORIGEM,
    :LOCALIZACAO_CODIGO,:LOCALIZACAO_DESCRICAO,
    :QUANTIDADE       , :VALOR_UNITARIO, :VALOR_TOTAL,
    :BASECALCULO_ICMS, :PERCENTUAL_ICMS   , :PERCENTUAL_IPI, :VALOR_IPI,
    :PERCENTUAL_PIS, :VALOR_PIS, :PERCENTUAL_COFINS ,:VALOR_COFINS,
    :VALOR_FRETE, :VALOR_SEGURO, :NFS,
    :NFS_ITEM_CONTROLE,:NF_EXTERNO, :NF_EXTERNO_ITEM_CONTROLE, :OC,:OC_ITEM_CONTROLE,
    :T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
    :T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,
    :ESTABELECIMENTO_CODIGO,:EMPRESA_CODIGO,:NUMERO_NOTAFISCAL,:DATA_ENTRADA,
    :SITUACAO,:CONTROLE,:VALOR_CUSTO,:PRODUTO_GRADE_CODIGO,:tributacao_PIS,
    :tributacao_cofins, :DI, :DI_DATA_REGISTRO, :DI_DATA_DESEMBARACO,
    :DI_LOCAL_DESEMBARACO, :DI_UF_DESEMBARACO, :DI_CODIGO_EXPORTADOR,
    :DI_ADICAO, :DI_SEQUENCIAL, :DI_CODIGO_FABRICANTE, :DI_DESCONTO_ADICAO,
    :di_base_calculo,:di_despesas_aduaneiras,:di_valor_ii,:Di_valor_iof,
    :VALOR_ICMS,:BASECALCULO_IPI,:BASECALCULO_PIS,:BASECALCULO_COFINS,
    :VALOR_ACRESCIMO,:VALOR_DESCONTO,:FISCAL_ISENTAS_IPI,:FISCAL_ISENTAS_ICMS,
    :FISCAL_OUTRAS_IPI,:FISCAL_OUTRAS_ICMS,:FISCAL_VALOR_ICMS,:FISCAL_VALOR_IPI,
    :FISCAL_VALOR_PIS,:FISCAL_VALOR_COFINS,:FISCAL_PERCENTUAL_ICMS,:FISCAL_PERCENTUAL_IPI,
    :FISCAL_PERCENTUAL_PIS,:FISCAL_PERCENTUAL_COFINS,:FISCAL_BASECALCULO_ICMS,
    :FISCAL_BASECALCULO_IPI,:FISCAL_BASECALCULO_PIS,:FISCAL_BASECALCULO_COFINS,
    :VALOR_CONTABIL,:valor_basecalculo_icms, :VALOR_PEDAGIO,:FISCAL_CFOP_CODIGO,
    :FISCAL_TRIBUTACAO_ORIGEM, :FISCAL_TRIBUTACAO_ICMS,:FISCAL_TRIBUTACAO_IPI,
    :FISCAL_TRIBUTACAO_PIS, :FISCAL_TRIBUTACAO_COFINS , :DESCONTO_BASECALCULO_ICMS,
    :BASECALCULO_FCI, :Codigo_Fci,

    :MODALIDADE_ICMS, :MODALIDADE_ICMS_ST, :MARGEM_ICMS_ST, :REDUCAO_ICMS_ST,
    :BASECALCULO_ICMS_ST, :ALIQUOTA_ICMS_ST, :VALOR_ICMS_ST,:FISCAL_REDUCAO_ICMS_ST,
    :FISCAL_BASECALCULO_ICMS_ST, :FISCAL_ALIQUOTA_ICMS_ST, :FISCAL_VALOR_ICMS_ST,
    :INFORMACOES_COMPLEMENTARES, :DI_NVE, :DI_TIPO_VIA_TRANSP,
    :DI_TIPO_VIA_TRANSP_DESCRICAO, :DI_VALOR_AFRMM, :DI_TIPO_INTERMEDIO,
    :DI_TIPO_INTERMEDIO_DESCRICAO, :DI_CNPJ_INTERMEDIO, :DI_UF_INTERMEDIO,
    :DI_NUMERO_DRAWBACK, :Conta_Contabil, :CCusto, :CCUSTO_DESCRICAO, :ENQUADRAMENTO_IPI

do suspend;
end
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPC_NFE_ITEM9 (
    CONTROLE_1 integer)
returns (
    NFE_CONTROLE integer,
    SEQUENCIA integer,
    OPERACAO_CODIGO varchar(3),
    CFOP_CODIGO varchar(5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    GRADE_CODIGO integer,
    NCM_CODIGO varchar(10),
    TRIBUTACAO_ICMS integer,
    TRIBUTACAO_IPI varchar(2),
    TRIBUTACAO_ORIGEM integer,
    LOCALIZACAO_CODIGO integer,
    LOCALIZACAO_DESCRICAO varchar(20),
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    BASECALCULO_ICMS numeric(10,5),
    PERCENTUAL_ICMS numeric(10,5),
    PERCENTUAL_IPI numeric(10,5),
    VALOR_IPI numeric(10,5),
    PERCENTUAL_PIS numeric(10,5),
    VALOR_PIS numeric(10,5),
    PERCENTUAL_COFINS numeric(10,5),
    VALOR_COFINS numeric(10,5),
    VALOR_FRETE numeric(10,2),
    VALOR_SEGURO numeric(10,2),
    NFS integer,
    NFS_ITEM_CONTROLE integer,
    NF_EXTERNO integer,
    NF_EXTERNO_ITEM_CONTROLE integer,
    OC integer,
    OC_ITEM_CONTROLE integer,
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    ESTABELECIMENTO_CODIGO integer,
    EMPRESA_CODIGO integer,
    NUMERO_NOTAFISCAL integer,
    DATA_ENTRADA date,
    SITUACAO integer,
    CONTROLE integer,
    VALOR_CUSTO numeric(10,5),
    PRODUTO_GRADE_CODIGO integer,
    TRIBUTACAO_PIS varchar(2),
    TRIBUTACAO_COFINS varchar(2),
    DI varchar(12),
    DI_DATA_REGISTRO date,
    DI_DATA_DESEMBARACO date,
    DI_LOCAL_DESEMBARACO varchar(60),
    DI_UF_DESEMBARACO char(2),
    DI_CODIGO_EXPORTADOR varchar(60),
    DI_ADICAO integer,
    DI_SEQUENCIAL integer,
    DI_CODIGO_FABRICANTE varchar(60),
    DI_DESCONTO_ADICAO numeric(10,2),
    DI_BASE_CALCULO numeric(10,2),
    DI_DESPESAS_ADUANEIRAS numeric(10,2),
    DI_VALOR_II numeric(10,2),
    DI_VALOR_IOF numeric(10,2),
    VALOR_ICMS numeric(10,2),
    BASECALCULO_IPI numeric(10,2),
    BASECALCULO_PIS numeric(10,2),
    BASECALCULO_COFINS numeric(10,2),
    VALOR_ACRESCIMO numeric(10,2),
    VALOR_DESCONTO numeric(10,2),
    FISCAL_ISENTAS_IPI numeric(10,2),
    FISCAL_ISENTAS_ICMS numeric(10,2),
    FISCAL_OUTRAS_IPI numeric(10,2),
    FISCAL_OUTRAS_ICMS numeric(10,2),
    FISCAL_VALOR_ICMS numeric(10,2),
    FISCAL_VALOR_IPI numeric(10,2),
    FISCAL_VALOR_PIS numeric(10,2),
    FISCAL_VALOR_COFINS numeric(10,2),
    FISCAL_PERCENTUAL_ICMS numeric(10,2),
    FISCAL_PERCENTUAL_IPI numeric(10,2),
    FISCAL_PERCENTUAL_PIS numeric(10,2),
    FISCAL_PERCENTUAL_COFINS numeric(10,2),
    FISCAL_BASECALCULO_ICMS numeric(10,5),
    FISCAL_BASECALCULO_IPI numeric(10,2),
    FISCAL_BASECALCULO_PIS numeric(10,2),
    FISCAL_BASECALCULO_COFINS numeric(10,2),
    VALOR_CONTABIL numeric(10,2),
    VALOR_BASECALCULO_ICMS numeric(10,2),
    VALOR_PEDAGIO numeric(10,2),
    FISCAL_CFOP_CODIGO varchar(5),
    FISCAL_TRIBUTACAO_ORIGEM integer,
    FISCAL_TRIBUTACAO_ICMS integer,
    FISCAL_TRIBUTACAO_IPI char(2),
    FISCAL_TRIBUTACAO_PIS char(2),
    FISCAL_TRIBUTACAO_COFINS char(2),
    DESCONTO_BASECALCULO_ICMS numeric(10,2),
    BASECALCULO_FCI numeric(15,4),
    CODIGO_FCI varchar(50),
    MODALIDADE_ICMS char(1),
    MODALIDADE_ICMS_ST char(1),
    MARGEM_ICMS_ST numeric(15,4),
    REDUCAO_ICMS_ST numeric(15,4),
    BASECALCULO_ICMS_ST numeric(15,4),
    ALIQUOTA_ICMS_ST numeric(15,4),
    VALOR_ICMS_ST numeric(15,4),
    FISCAL_REDUCAO_ICMS_ST numeric(10,2),
    FISCAL_BASECALCULO_ICMS_ST numeric(10,2),
    FISCAL_ALIQUOTA_ICMS_ST numeric(10,2),
    FISCAL_VALOR_ICMS_ST numeric(10,2),
    INFORMACOES_COMPLEMENTARES varchar(200),
    DI_NVE varchar(60),
    DI_TIPO_VIA_TRANSP integer,
    DI_TIPO_VIA_TRANSP_DESCRICAO varchar(30),
    DI_VALOR_AFRMM numeric(15,2),
    DI_TIPO_INTERMEDIO varchar(1),
    DI_TIPO_INTERMEDIO_DESCRICAO varchar(30),
    DI_CNPJ_INTERMEDIO varchar(14),
    DI_UF_INTERMEDIO varchar(2),
    DI_NUMERO_DRAWBACK varchar(11),
    CONTA_CONTABIL varchar(11),
    CCUSTO varchar(8),
    CCUSTO_DESCRICAO varchar(130),
    ENQUADRAMENTO_IPI varchar(3),
    QUANTIDADE_ALTERNATIVA numeric(18,4),
    UM_ALTERNATIVA varchar(10),
    VALOR_ALTERNATIVO numeric(18,10))
as
begin
for select
A.NFe_CONTROLE      ,A.SEQUENCIA        ,A.OPERACAO_CODIGO      ,A.CFOP_CODIGO ,
A.PRODUTO_CODIGO    ,A.PRODUTO_DESCRICAO,A.PRODUTO_UNIDADEMEDIDA,A.GRADE_CODIGO,
A.NCM_CODIGO        ,A.TRIBUTACAO_ICMS  ,A.TRIBUTACAO_IPI       ,A.TRIBUTACAO_ORIGEM,
A.LOCALIZACAO_CODIGO,(Select First 1 L.Descricao From TbLocalizacao L Where A.Localizacao_Codigo = L.Codigo),
A.QUANTIDADE        ,A.VALOR_UNITARIO       ,A.VALOR_TOTAL      ,
A.BASECALCULO_ICMS  ,A.PERCENTUAL_ICMS  ,A.PERCENTUAL_IPI       ,A.VALOR_IPI   ,
A.PERCENTUAL_PIS    ,A.VALOR_PIS        ,A.PERCENTUAL_COFINS    ,A.VALOR_COFINS,
A.VALOR_FRETE, A.VALOR_SEGURO, A.NFs, A.NFs_ITEM_CONTROLE,A.NF_EXTERNO ,
A.NF_EXTERNO_ITEM_CONTROLE, A.OC,A.OC_ITEM_CONTROLE,
A.T01,A.T02,A.T03,A.T04,A.T05,A.T06,A.T07,A.T08,A.T09,A.T10,
A.T11,A.T12,A.T13,A.T14,A.T15,A.T16,A.T17,A.T18,A.T19,A.T20,
A.ESTABELECIMENTO_CODIGO,A.EMPRESA_CODIGO,A.NUMERO_NOTAFISCAL,A.DATA_ENTRADA,
A.SITUACAO,A.CONTROLE,A.VALOR_CUSTO,
(Select First 1 B.GRADE_CODIGO From TbProduto B Where A.Produto_Codigo = B.Codigo),
A.tributacao_PIS, A.tributacao_cofins,A.DI,A.DI_DATA_REGISTRO,A.DI_DATA_DESEMBARACO,
A.DI_LOCAL_DESEMBARACO,A.DI_UF_DESEMBARACO,A.DI_CODIGO_EXPORTADOR,A.DI_ADICAO,
A.DI_SEQUENCIAL,A.DI_CODIGO_FABRICANTE,A.DI_DESCONTO_ADICAO,
A.di_base_calculo,A.di_despesas_aduaneiras,A.di_valor_ii,A.di_valor_iof,
A.VALOR_ICMS,A.BASECALCULO_IPI,A.BASECALCULO_PIS,A.BASECALCULO_COFINS,
A.VALOR_ACRESCIMO,A.VALOR_DESCONTO,A.FISCAL_ISENTAS_IPI,A.FISCAL_ISENTAS_ICMS,
A.FISCAL_OUTRAS_IPI,A.FISCAL_OUTRAS_ICMS,A.FISCAL_VALOR_ICMS,A.FISCAL_VALOR_IPI,
A.FISCAL_VALOR_PIS,A.FISCAL_VALOR_COFINS,A.FISCAL_PERCENTUAL_ICMS,A.FISCAL_PERCENTUAL_IPI,
A.FISCAL_PERCENTUAL_PIS,A.FISCAL_PERCENTUAL_COFINS,A.FISCAL_BASECALCULO_ICMS,
A.FISCAL_BASECALCULO_IPI,A.FISCAL_BASECALCULO_PIS,A.FISCAL_BASECALCULO_COFINS,
A.VALOR_CONTABIL, A.valor_basecalculo_icms, A.VALOR_PEDAGIO, A.FISCAL_CFOP_CODIGO,A.FISCAL_TRIBUTACAO_ORIGEM,
A.FISCAL_TRIBUTACAO_ICMS,A.FISCAL_TRIBUTACAO_IPI,A.FISCAL_TRIBUTACAO_PIS,
A.FISCAL_TRIBUTACAO_COFINS, A.DESCONTO_BASECALCULO_ICMS, A.BASECALCULO_FCI, A.Codigo_Fci,

A.MODALIDADE_ICMS, A.MODALIDADE_ICMS_ST, A.MARGEM_ICMS_ST, A.REDUCAO_ICMS_ST,
A.BASECALCULO_ICMS_ST, A.ALIQUOTA_ICMS_ST, A.VALOR_ICMS_ST,A.FISCAL_REDUCAO_ICMS_ST,
A.FISCAL_BASECALCULO_ICMS_ST, A.FISCAL_ALIQUOTA_ICMS_ST, A.FISCAL_VALOR_ICMS_ST,

A.INFORMACOES_COMPLEMENTARES, A.DI_NVE,
A.DI_TIPO_VIA_TRANSP, IIF(A.DI_TIPO_VIA_TRANSP=1,'Maritima',
                      IIF(A.DI_TIPO_VIA_TRANSP=2,'Fluvial',
                      IIF(A.DI_TIPO_VIA_TRANSP=3,'Lacustre',
                      IIF(A.DI_TIPO_VIA_TRANSP=4,'Aerea',
                      IIF(A.DI_TIPO_VIA_TRANSP=5,'Postal',
                      IIF(A.DI_TIPO_VIA_TRANSP=6,'Ferroviaria',
                      IIF(A.DI_TIPO_VIA_TRANSP=7,'Rodoviaria',
                      IIF(A.DI_TIPO_VIA_TRANSP=8,'Conduto/Rd.Trnsm',
                      IIF(A.DI_TIPO_VIA_TRANSP=9,'Meios Proprios',
                      IIF(A.DI_TIPO_VIA_TRANSP=10,'Entr/Saida ficta','')))))))))),
A.DI_VALOR_AFRMM,
A.DI_TIPO_INTERMEDIO, IIF(A.DI_TIPO_INTERMEDIO='1','Imp.Conta Propria',
                      IIF(A.DI_TIPO_INTERMEDIO='2','Imp.Conta e Ordem',
                      IIF(A.DI_TIPO_INTERMEDIO='3','Imp.por Encomenda',''))),
A.DI_CNPJ_INTERMEDIO, A.DI_UF_INTERMEDIO, A.DI_NUMERO_DRAWBACK, A.Conta_Contabil, A.CCusto,

IIF(char_length(A.CCusto)=2,
(Select First 1 C.Descricao From TbCentro_de_Custo C Where C.CODIGO = SUBSTRING(A.CCusto FROM 1 FOR 2)),
IIF(char_length(A.CCusto)=5,
(Select First 1 C.Descricao From TbCentro_de_Custo C Where C.CODIGO = SUBSTRING(A.CCusto FROM 1 FOR 2))||' - '||
(Select First 1 C.Descricao From TbCentro_de_Custo C Where C.CODIGO = SUBSTRING(A.CCusto FROM 1 FOR 5)),
IIF(char_length(A.CCusto)=8,
(Select First 1 C.Descricao From TbCentro_de_Custo C Where C.CODIGO = SUBSTRING(A.CCusto FROM 1 FOR 5))||' - '||
(Select First 1 C.Descricao From TbCentro_de_Custo C Where C.CODIGO = SUBSTRING(A.CCusto FROM 1 FOR 8)),''))) CCUSTO_DESCRICAO,

A.ENQUADRAMENTO_IPI,
A.QUANTIDADE_ALTERNATIVA, A.UM_ALTERNATIVA, A.VALOR_ALTERNATIVO

From TbNfE_Item A
Where (A.NFE_CONTROLE = :CONTROLE_1)
order by A.SEQUENCIA
into
    :NFE_CONTROLE      ,:SEQUENCIA        , :OPERACAO_CODIGO, :CFOP_CODIGO,
    :PRODUTO_CODIGO    ,:PRODUTO_DESCRICAO, :PRODUTO_UNIDADEMEDIDA,:GRADE_CODIGO,
    :NCM_CODIGO        ,:TRIBUTACAO_ICMS  , :TRIBUTACAO_IPI, :TRIBUTACAO_ORIGEM,
    :LOCALIZACAO_CODIGO,:LOCALIZACAO_DESCRICAO,
    :QUANTIDADE       , :VALOR_UNITARIO, :VALOR_TOTAL,
    :BASECALCULO_ICMS, :PERCENTUAL_ICMS   , :PERCENTUAL_IPI, :VALOR_IPI,
    :PERCENTUAL_PIS, :VALOR_PIS, :PERCENTUAL_COFINS ,:VALOR_COFINS,
    :VALOR_FRETE, :VALOR_SEGURO, :NFS,
    :NFS_ITEM_CONTROLE,:NF_EXTERNO, :NF_EXTERNO_ITEM_CONTROLE, :OC,:OC_ITEM_CONTROLE,
    :T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
    :T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,
    :ESTABELECIMENTO_CODIGO,:EMPRESA_CODIGO,:NUMERO_NOTAFISCAL,:DATA_ENTRADA,
    :SITUACAO,:CONTROLE,:VALOR_CUSTO,:PRODUTO_GRADE_CODIGO,:tributacao_PIS,
    :tributacao_cofins, :DI, :DI_DATA_REGISTRO, :DI_DATA_DESEMBARACO,
    :DI_LOCAL_DESEMBARACO, :DI_UF_DESEMBARACO, :DI_CODIGO_EXPORTADOR,
    :DI_ADICAO, :DI_SEQUENCIAL, :DI_CODIGO_FABRICANTE, :DI_DESCONTO_ADICAO,
    :di_base_calculo,:di_despesas_aduaneiras,:di_valor_ii,:Di_valor_iof,
    :VALOR_ICMS,:BASECALCULO_IPI,:BASECALCULO_PIS,:BASECALCULO_COFINS,
    :VALOR_ACRESCIMO,:VALOR_DESCONTO,:FISCAL_ISENTAS_IPI,:FISCAL_ISENTAS_ICMS,
    :FISCAL_OUTRAS_IPI,:FISCAL_OUTRAS_ICMS,:FISCAL_VALOR_ICMS,:FISCAL_VALOR_IPI,
    :FISCAL_VALOR_PIS,:FISCAL_VALOR_COFINS,:FISCAL_PERCENTUAL_ICMS,:FISCAL_PERCENTUAL_IPI,
    :FISCAL_PERCENTUAL_PIS,:FISCAL_PERCENTUAL_COFINS,:FISCAL_BASECALCULO_ICMS,
    :FISCAL_BASECALCULO_IPI,:FISCAL_BASECALCULO_PIS,:FISCAL_BASECALCULO_COFINS,
    :VALOR_CONTABIL,:valor_basecalculo_icms, :VALOR_PEDAGIO,:FISCAL_CFOP_CODIGO,
    :FISCAL_TRIBUTACAO_ORIGEM, :FISCAL_TRIBUTACAO_ICMS,:FISCAL_TRIBUTACAO_IPI,
    :FISCAL_TRIBUTACAO_PIS, :FISCAL_TRIBUTACAO_COFINS , :DESCONTO_BASECALCULO_ICMS,
    :BASECALCULO_FCI, :Codigo_Fci,

    :MODALIDADE_ICMS, :MODALIDADE_ICMS_ST, :MARGEM_ICMS_ST, :REDUCAO_ICMS_ST,
    :BASECALCULO_ICMS_ST, :ALIQUOTA_ICMS_ST, :VALOR_ICMS_ST,:FISCAL_REDUCAO_ICMS_ST,
    :FISCAL_BASECALCULO_ICMS_ST, :FISCAL_ALIQUOTA_ICMS_ST, :FISCAL_VALOR_ICMS_ST,
    :INFORMACOES_COMPLEMENTARES, :DI_NVE, :DI_TIPO_VIA_TRANSP,
    :DI_TIPO_VIA_TRANSP_DESCRICAO, :DI_VALOR_AFRMM, :DI_TIPO_INTERMEDIO,
    :DI_TIPO_INTERMEDIO_DESCRICAO, :DI_CNPJ_INTERMEDIO, :DI_UF_INTERMEDIO,
    :DI_NUMERO_DRAWBACK, :Conta_Contabil, :CCusto, :CCUSTO_DESCRICAO, :ENQUADRAMENTO_IPI,
    :QUANTIDADE_ALTERNATIVA, :UM_ALTERNATIVA, :VALOR_ALTERNATIVO


do suspend;
end
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPC_NFE_ITEM_VINCULO (
    ESTABELECIMENTO_CODIGO_1 integer,
    EMPRESA_CODIGO_1 integer,
    NUMERO_NOTAFISCAL_T integer,
    NUMERO_NOTAFISCAL_1 integer,
    NUMERO_NOTAFISCAL_2 integer,
    NUMERO_NOTAFISCAL_3 integer,
    NUMERO_NOTAFISCAL_4 integer,
    NUMERO_NOTAFISCAL_5 integer,
    NUMERO_NOTAFISCAL_6 integer,
    NUMERO_NOTAFISCAL_7 integer,
    NUMERO_NOTAFISCAL_8 integer)
returns (
    NUMERO_NOTAFISCAL integer,
    SEQUENCIA integer,
    CONTROLE integer,
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    VALOR_CUSTO numeric(10,5),
    OPERACAO_CODIGO varchar(3))
as
BEGIN
For Select Numero_NotaFiscal,Sequencia,Controle,Produto_Codigo,
Produto_Descricao,PRODUTO_UNIDADEMEDIDA,
Quantidade,Valor_Unitario,Valor_Total,Valor_Custo,Operacao_Codigo
From TbNfe_Item

Where  Estabelecimento_Codigo = :ESTABELECIMENTO_CODIGO_1
  and  Empresa_Codigo         = :EMPRESA_CODIGO_1

  and (Numero_NotaFiscal  <>:Numero_NotaFiscal_T or
       Numero_NotaFiscal  = :Numero_NotaFiscal_1 or
       Numero_NotaFiscal  = :Numero_NotaFiscal_2 or
       Numero_NotaFiscal  = :Numero_NotaFiscal_3 or
       Numero_NotaFiscal  = :Numero_NotaFiscal_4 or
       Numero_NotaFiscal  = :Numero_NotaFiscal_5 or
       Numero_NotaFiscal  = :Numero_NotaFiscal_6 or
       Numero_NotaFiscal  = :Numero_NotaFiscal_7 or
       Numero_NotaFiscal  = :Numero_NotaFiscal_8)

Order By Numero_NotaFiscal,Sequencia

INTO
   :Numero_NotaFiscal,
   :Sequencia,
   :Controle,
   :Produto_Codigo,
   :Produto_Descricao,
   :Produto_UnidadeMedida,
   :Quantidade,
   :Valor_Unitario,
   :Valor_Total,
   :Valor_Custo,
   :Operacao_Codigo
DO SUSPEND;
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPC_NFS_ITEM10 (
    CONTROLE_1 integer)
returns (
    NFS_CONTROLE integer,
    SEQUENCIA integer,
    OPERACAO_CODIGO varchar(3),
    CFOP_CODIGO varchar(5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    GRADE_CODIGO integer,
    NCM_CODIGO varchar(10),
    TRIBUTACAO_ICMS integer,
    TRIBUTACAO_IPI varchar(2),
    TRIBUTACAO_ORIGEM integer,
    LOCALIZACAO_CODIGO integer,
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    BASECALCULO_ICMS numeric(10,5),
    PERCENTUAL_ICMS numeric(10,5),
    PERCENTUAL_IPI numeric(10,5),
    VALOR_IPI numeric(10,5),
    PERCENTUAL_PIS numeric(10,5),
    VALOR_PIS numeric(10,5),
    PERCENTUAL_COFINS numeric(10,5),
    VALOR_COFINS numeric(10,5),
    NFE integer,
    NFE_ITEM_CONTROLE integer,
    NF_EXTERNO integer,
    NF_EXTERNO_ITEM_CONTROLE integer,
    PEDIDO integer,
    PEDIDO_ITEM_PE_CONTROLE integer,
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    ESTABELECIMENTO_CODIGO integer,
    EMPRESA_CODIGO integer,
    NUMERO_NOTAFISCAL integer,
    DATA_EMISSAO date,
    SITUACAO integer,
    CONTROLE integer,
    VALOR_CUSTO numeric(10,5),
    PRODUTO_GRADE_CODIGO integer,
    MODELO_CODIGO integer,
    TECELAGEM integer,
    TRIBUTACAO_PIS varchar(2),
    TRIBUTACAO_COFINS varchar(2),
    VALOR_ICMS numeric(10,2),
    BASECALCULO_IPI numeric(10,2),
    BASECALCULO_PIS numeric(10,2),
    BASECALCULO_COFINS numeric(10,2),
    LOCALIZACAO_DESCRICAO varchar(20),
    VALOR_FRETE numeric(10,2),
    VALOR_SEGURO numeric(10,2),
    PESO_LIQUIDO numeric(10,4),
    PESO_BRUTO numeric(10,4),
    VOLUMES integer,
    CUBAGEM numeric(10,4),
    VALOR_ACRESCIMO numeric(10,2),
    VALOR_DESCONTO numeric(10,2),
    FISCAL_ISENTAS_IPI numeric(10,2),
    FISCAL_ISENTAS_ICMS numeric(10,2),
    FISCAL_OUTRAS_IPI numeric(10,2),
    FISCAL_OUTRAS_ICMS numeric(10,2),
    FISCAL_VALOR_ICMS numeric(10,2),
    FISCAL_VALOR_IPI numeric(10,2),
    FISCAL_VALOR_PIS numeric(10,2),
    FISCAL_VALOR_COFINS numeric(10,2),
    FISCAL_PERCENTUAL_ICMS numeric(10,2),
    FISCAL_PERCENTUAL_IPI numeric(10,2),
    FISCAL_PERCENTUAL_PIS numeric(10,2),
    FISCAL_PERCENTUAL_COFINS numeric(10,2),
    FISCAL_BASECALCULO_ICMS numeric(10,5),
    FISCAL_BASECALCULO_IPI numeric(10,2),
    FISCAL_BASECALCULO_PIS numeric(10,2),
    FISCAL_BASECALCULO_COFINS numeric(10,2),
    VALOR_CONTABIL numeric(10,2),
    VALOR_BASECALCULO_ICMS numeric(10,2),
    FISCAL_CFOP_CODIGO varchar(5),
    FISCAL_TRIBUTACAO_ORIGEM integer,
    FISCAL_TRIBUTACAO_ICMS integer,
    FISCAL_TRIBUTACAO_IPI char(2),
    FISCAL_TRIBUTACAO_PIS char(2),
    FISCAL_TRIBUTACAO_COFINS char(2),
    MODALIDADE_ICMS char(1),
    MODALIDADE_ICMS_ST char(1),
    MARGEM_ICMS_ST numeric(15,4),
    REDUCAO_ICMS_ST numeric(15,4),
    BASECALCULO_ICMS_ST numeric(15,4),
    ALIQUOTA_ICMS_ST numeric(15,4),
    VALOR_ICMS_ST numeric(15,4),
    FISCAL_REDUCAO_ICMS_ST numeric(10,2),
    FISCAL_BASECALCULO_ICMS_ST numeric(10,2),
    FISCAL_ALIQUOTA_ICMS_ST numeric(10,2),
    FISCAL_VALOR_ICMS_ST numeric(10,2),
    PEDIDO_CLIENTE varchar(15),
    INFORMACOES_COMPLEMENTARES varchar(500),
    NF_CONSIGNACAO integer,
    NF_CONSIGNACAO_ITEM integer,
    FCI_MENSAGEM varchar(255),
    FCI_PARCELA_IMPORTACAO numeric(15,2),
    FCI_CONTEUDO_IMPORTACAO numeric(15,2),
    FCI_NUMERO varchar(40),
    ENQUADRAMENTO_IPI varchar(3),
    CCUSTO varchar(8),
    CONTA_CONTABIL varchar(11),
    VBCUFDEST numeric(15,2),
    PFCPUFDEST numeric(15,2),
    PICMSUFDEST numeric(15,2),
    PICMSINTER numeric(15,2),
    VFCPUFDEST numeric(15,2),
    VICMSUFDEST numeric(15,2),
    VICMSUFREMET numeric(15,2),
    PICMSINTERPART numeric(15,2),
    QUANTIDADE_ALTERNATIVA numeric(18,4),
    UM_ALTERNATIVA varchar(10),
    VALOR_ALTERNATIVO numeric(18,10),
    REDUCAO_BASE_PISCOF char(1))
as
begin
for select
A.NFS_CONTROLE      ,A.SEQUENCIA        ,A.OPERACAO_CODIGO      ,A.CFOP_CODIGO      ,
A.PRODUTO_CODIGO    ,A.PRODUTO_DESCRICAO,A.PRODUTO_UNIDADEMEDIDA,A.GRADE_CODIGO     ,
A.NCM_CODIGO        ,A.TRIBUTACAO_ICMS  ,A.TRIBUTACAO_IPI       ,A.TRIBUTACAO_ORIGEM,
A.LOCALIZACAO_CODIGO,A.QUANTIDADE       ,A.VALOR_UNITARIO       ,A.VALOR_TOTAL      ,
A.BASECALCULO_ICMS  ,A.PERCENTUAL_ICMS  ,A.PERCENTUAL_IPI       ,A.VALOR_IPI        ,
A.PERCENTUAL_PIS    ,A.VALOR_PIS        ,A.PERCENTUAL_COFINS    ,A.VALOR_COFINS     ,
A.NFE, A.NFE_ITEM_CONTROLE, A.NF_EXTERNO, A.NF_EXTERNO_ITEM_CONTROLE,
A.PEDIDO,A.PEDIDO_ITEM_PE_CONTROLE,
A.T01,A.T02,A.T03,A.T04,A.T05,A.T06,A.T07,A.T08,A.T09,A.T10,
A.T11,A.T12,A.T13,A.T14,A.T15,A.T16,A.T17,A.T18,A.T19,A.T20,
A.ESTABELECIMENTO_CODIGO,A.EMPRESA_CODIGO,A.NUMERO_NOTAFISCAL,A.DATA_EMISSAO,
A.SITUACAO,A.CONTROLE,A.VALOR_CUSTO,
(Select First 1 E.grade_codigo  From TbProduto E Where A.Produto_Codigo = E.Codigo),
(Select First 1 E.modelo_codigo From TbProduto E Where A.Produto_Codigo = E.Codigo),
A.Tecelagem,A.tributacao_PIS, A.tributacao_cofins,
A.VALOR_ICMS,A.BASECALCULO_IPI,A.BASECALCULO_PIS,A.BASECALCULO_COFINS,

(Select First 1 L.Descricao From TbLocalizacao L Where A.Localizacao_Codigo = L.Codigo),
A.VALOR_FRETE, A.VALOR_SEGURO, A.PESO_LIQUIDO, A.PESO_BRUTO, A.VOLUMES, A.CUBAGEM,

A.VALOR_ACRESCIMO,A.VALOR_DESCONTO,A.FISCAL_ISENTAS_IPI,A.FISCAL_ISENTAS_ICMS,
A.FISCAL_OUTRAS_IPI,A.FISCAL_OUTRAS_ICMS,A.FISCAL_VALOR_ICMS,A.FISCAL_VALOR_IPI,
A.FISCAL_VALOR_PIS,A.FISCAL_VALOR_COFINS,A.FISCAL_PERCENTUAL_ICMS,A.FISCAL_PERCENTUAL_IPI,
A.FISCAL_PERCENTUAL_PIS,A.FISCAL_PERCENTUAL_COFINS,A.FISCAL_BASECALCULO_ICMS,
A.FISCAL_BASECALCULO_IPI,A.FISCAL_BASECALCULO_PIS,A.FISCAL_BASECALCULO_COFINS,
A.VALOR_CONTABIL, A.Valor_BaseCalculo_Icms, A.FISCAL_CFOP_CODIGO,
A.FISCAL_TRIBUTACAO_ORIGEM,A.FISCAL_TRIBUTACAO_ICMS,A.FISCAL_TRIBUTACAO_IPI,
A.FISCAL_TRIBUTACAO_PIS,A.FISCAL_TRIBUTACAO_COFINS,

A.MODALIDADE_ICMS, A.MODALIDADE_ICMS_ST, A.MARGEM_ICMS_ST, A.REDUCAO_ICMS_ST,
A.BASECALCULO_ICMS_ST, A.ALIQUOTA_ICMS_ST, A.VALOR_ICMS_ST, A.FISCAL_REDUCAO_ICMS_ST,
A.FISCAL_BASECALCULO_ICMS_ST, A.FISCAL_ALIQUOTA_ICMS_ST, A.FISCAL_VALOR_ICMS_ST,
A.PEDIDO_CLIENTE,
A.INFORMACOES_COMPLEMENTARES, A.Nf_Consignacao, A.Nf_Consignacao_Item,
A.FCI_MENSAGEM, A.FCI_PARCELA_IMPORTACAO, A.FCI_CONTEUDO_IMPORTACAO, A.FCI_NUMERO,
A.enquadramento_ipi, A.ccusto, A.conta_contabil,

A.VBCUFDEST,
A.pFCPUFDest,
A.pICMSUFDest,
A.pICMSInter,
A.vFCPUFDest,
A.vICMSUFDest,
A.vICMSUFRemet,
A.pICMSInterPart,

QUANTIDADE_ALTERNATIVA,
UM_ALTERNATIVA,
VALOR_ALTERNATIVO,
A.REDUCAO_BASE_PISCOF

From TbNfs_Item A
where (A.NFS_CONTROLE = :CONTROLE_1)
order by A.SEQUENCIA
into
    :NFS_CONTROLE      ,:SEQUENCIA        ,:OPERACAO_CODIGO      ,:CFOP_CODIGO      ,
    :PRODUTO_CODIGO    ,:PRODUTO_DESCRICAO,:PRODUTO_UNIDADEMEDIDA,:GRADE_CODIGO     ,
    :NCM_CODIGO        ,:TRIBUTACAO_ICMS  ,:TRIBUTACAO_IPI       ,:TRIBUTACAO_ORIGEM,
    :LOCALIZACAO_CODIGO,:QUANTIDADE       ,:VALOR_UNITARIO       ,:VALOR_TOTAL      ,
    :BASECALCULO_ICMS  ,:PERCENTUAL_ICMS  ,:PERCENTUAL_IPI       ,:VALOR_IPI        ,
    :PERCENTUAL_PIS    ,:VALOR_PIS        ,:PERCENTUAL_COFINS ,:VALOR_COFINS        ,
    :NFE   ,:NFE_ITEM_CONTROLE,:NF_EXTERNO        ,:NF_EXTERNO_ITEM_CONTROLE        ,
    :PEDIDO,:PEDIDO_ITEM_PE_CONTROLE,
    :T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
    :T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,
    :ESTABELECIMENTO_CODIGO,:EMPRESA_CODIGO,:NUMERO_NOTAFISCAL,:DATA_EMISSAO,
    :SITUACAO,:CONTROLE,:VALOR_CUSTO,:PRODUTO_GRADE_CODIGO,:MODELO_CODIGO,
    :TECELAGEM,:tributacao_PIS, :tributacao_cofins,
    :VALOR_ICMS,:BASECALCULO_IPI,:BASECALCULO_PIS,:BASECALCULO_COFINS,

    :LOCALIZACAO_DESCRICAO,
    :VALOR_FRETE, :VALOR_SEGURO, :PESO_LIQUIDO, :PESO_BRUTO, :VOLUMES, :CUBAGEM,

    :VALOR_ACRESCIMO,:VALOR_DESCONTO,:FISCAL_ISENTAS_IPI,:FISCAL_ISENTAS_ICMS,
    :FISCAL_OUTRAS_IPI,:FISCAL_OUTRAS_ICMS,:FISCAL_VALOR_ICMS,:FISCAL_VALOR_IPI,
    :FISCAL_VALOR_PIS,:FISCAL_VALOR_COFINS,:FISCAL_PERCENTUAL_ICMS,:FISCAL_PERCENTUAL_IPI,
    :FISCAL_PERCENTUAL_PIS,:FISCAL_PERCENTUAL_COFINS,:FISCAL_BASECALCULO_ICMS,
    :FISCAL_BASECALCULO_IPI,:FISCAL_BASECALCULO_PIS,:FISCAL_BASECALCULO_COFINS,
    :VALOR_CONTABIL,:Valor_BaseCalculo_Icms,:FISCAL_CFOP_CODIGO,:FISCAL_TRIBUTACAO_ORIGEM,:FISCAL_TRIBUTACAO_ICMS,
    :FISCAL_TRIBUTACAO_IPI,:FISCAL_TRIBUTACAO_PIS,:FISCAL_TRIBUTACAO_COFINS,
    :MODALIDADE_ICMS, :MODALIDADE_ICMS_ST, :MARGEM_ICMS_ST, :REDUCAO_ICMS_ST,
    :BASECALCULO_ICMS_ST, :ALIQUOTA_ICMS_ST, :VALOR_ICMS_ST, :FISCAL_REDUCAO_ICMS_ST,
    :FISCAL_BASECALCULO_ICMS_ST, :FISCAL_ALIQUOTA_ICMS_ST, :FISCAL_VALOR_ICMS_ST,
    :PEDIDO_CLIENTE,
    :INFORMACOES_COMPLEMENTARES, :Nf_Consignacao, :Nf_Consignacao_Item,
    :FCI_MENSAGEM, :FCI_PARCELA_IMPORTACAO, :FCI_CONTEUDO_IMPORTACAO, :FCI_NUMERO,
    :enquadramento_ipi, :ccusto, :conta_contabil,
    :VBCUFDEST,:pFCPUFDest,:pICMSUFDest,:pICMSInter,:vFCPUFDest,:vICMSUFDest,:vICMSUFRemet,:pICMSInterPart,
    :QUANTIDADE_ALTERNATIVA, :UM_ALTERNATIVA, :VALOR_ALTERNATIVO, :REDUCAO_BASE_PISCOF

do suspend;
end
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPC_NFS_ITEM5 (
    CONTROLE_1 integer)
returns (
    NFS_CONTROLE integer,
    SEQUENCIA integer,
    OPERACAO_CODIGO varchar(3),
    CFOP_CODIGO varchar(5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    GRADE_CODIGO integer,
    NCM_CODIGO varchar(10),
    TRIBUTACAO_ICMS integer,
    TRIBUTACAO_IPI varchar(2),
    TRIBUTACAO_ORIGEM integer,
    LOCALIZACAO_CODIGO integer,
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    BASECALCULO_ICMS numeric(10,5),
    PERCENTUAL_ICMS numeric(10,5),
    PERCENTUAL_IPI numeric(10,5),
    VALOR_IPI numeric(10,5),
    PERCENTUAL_PIS numeric(10,5),
    VALOR_PIS numeric(10,5),
    PERCENTUAL_COFINS numeric(10,5),
    VALOR_COFINS numeric(10,5),
    NFE integer,
    NFE_ITEM_CONTROLE integer,
    NF_EXTERNO integer,
    NF_EXTERNO_ITEM_CONTROLE integer,
    PEDIDO integer,
    PEDIDO_ITEM_PE_CONTROLE integer,
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    ESTABELECIMENTO_CODIGO integer,
    EMPRESA_CODIGO integer,
    NUMERO_NOTAFISCAL integer,
    DATA_EMISSAO date,
    SITUACAO integer,
    CONTROLE integer,
    VALOR_CUSTO numeric(10,5),
    PRODUTO_GRADE_CODIGO integer,
    MODELO_CODIGO integer,
    TECELAGEM integer,
    TRIBUTACAO_PIS varchar(2),
    TRIBUTACAO_COFINS varchar(2),
    VALOR_ICMS numeric(10,2),
    BASECALCULO_IPI numeric(10,2),
    BASECALCULO_PIS numeric(10,2),
    BASECALCULO_COFINS numeric(10,2),
    LOCALIZACAO_DESCRICAO varchar(20),
    VALOR_FRETE numeric(10,2),
    VALOR_SEGURO numeric(10,2),
    PESO_LIQUIDO numeric(10,4),
    PESO_BRUTO numeric(10,4),
    VOLUMES integer,
    CUBAGEM numeric(10,4),
    VALOR_ACRESCIMO numeric(10,2),
    VALOR_DESCONTO numeric(10,2),
    FISCAL_ISENTAS_IPI numeric(10,2),
    FISCAL_ISENTAS_ICMS numeric(10,2),
    FISCAL_OUTRAS_IPI numeric(10,2),
    FISCAL_OUTRAS_ICMS numeric(10,2),
    FISCAL_VALOR_ICMS numeric(10,2),
    FISCAL_VALOR_IPI numeric(10,2),
    FISCAL_VALOR_PIS numeric(10,2),
    FISCAL_VALOR_COFINS numeric(10,2),
    FISCAL_PERCENTUAL_ICMS numeric(10,2),
    FISCAL_PERCENTUAL_IPI numeric(10,2),
    FISCAL_PERCENTUAL_PIS numeric(10,2),
    FISCAL_PERCENTUAL_COFINS numeric(10,2),
    FISCAL_BASECALCULO_ICMS numeric(10,5),
    FISCAL_BASECALCULO_IPI numeric(10,2),
    FISCAL_BASECALCULO_PIS numeric(10,2),
    FISCAL_BASECALCULO_COFINS numeric(10,2),
    VALOR_CONTABIL numeric(10,2),
    VALOR_BASECALCULO_ICMS numeric(10,2),
    FISCAL_CFOP_CODIGO varchar(5),
    FISCAL_TRIBUTACAO_ORIGEM integer,
    FISCAL_TRIBUTACAO_ICMS integer,
    FISCAL_TRIBUTACAO_IPI char(2),
    FISCAL_TRIBUTACAO_PIS char(2),
    FISCAL_TRIBUTACAO_COFINS char(2),
    MODALIDADE_ICMS char(1),
    MODALIDADE_ICMS_ST char(1),
    MARGEM_ICMS_ST numeric(15,4),
    REDUCAO_ICMS_ST numeric(15,4),
    BASECALCULO_ICMS_ST numeric(15,4),
    ALIQUOTA_ICMS_ST numeric(15,4),
    VALOR_ICMS_ST numeric(15,4),
    FISCAL_REDUCAO_ICMS_ST numeric(10,2),
    FISCAL_BASECALCULO_ICMS_ST numeric(10,2),
    FISCAL_ALIQUOTA_ICMS_ST numeric(10,2),
    FISCAL_VALOR_ICMS_ST numeric(10,2),
    PEDIDO_CLIENTE varchar(15),
    INFORMACOES_COMPLEMENTARES varchar(200),
    NF_CONSIGNACAO integer,
    NF_CONSIGNACAO_ITEM integer,
    FCI_MENSAGEM varchar(255),
    FCI_PARCELA_IMPORTACAO numeric(15,2),
    FCI_CONTEUDO_IMPORTACAO numeric(15,2),
    FCI_NUMERO varchar(40))
as
begin
for select
A.NFS_CONTROLE      ,A.SEQUENCIA        ,A.OPERACAO_CODIGO      ,A.CFOP_CODIGO      ,
A.PRODUTO_CODIGO    ,A.PRODUTO_DESCRICAO,A.PRODUTO_UNIDADEMEDIDA,A.GRADE_CODIGO     ,
A.NCM_CODIGO        ,A.TRIBUTACAO_ICMS  ,A.TRIBUTACAO_IPI       ,A.TRIBUTACAO_ORIGEM,
A.LOCALIZACAO_CODIGO,A.QUANTIDADE       ,A.VALOR_UNITARIO       ,A.VALOR_TOTAL      ,
A.BASECALCULO_ICMS  ,A.PERCENTUAL_ICMS  ,A.PERCENTUAL_IPI       ,A.VALOR_IPI        ,
A.PERCENTUAL_PIS    ,A.VALOR_PIS        ,A.PERCENTUAL_COFINS    ,A.VALOR_COFINS     ,
A.NFE, A.NFE_ITEM_CONTROLE, A.NF_EXTERNO, A.NF_EXTERNO_ITEM_CONTROLE,
A.PEDIDO,A.PEDIDO_ITEM_PE_CONTROLE,
A.T01,A.T02,A.T03,A.T04,A.T05,A.T06,A.T07,A.T08,A.T09,A.T10,
A.T11,A.T12,A.T13,A.T14,A.T15,A.T16,A.T17,A.T18,A.T19,A.T20,
A.ESTABELECIMENTO_CODIGO,A.EMPRESA_CODIGO,A.NUMERO_NOTAFISCAL,A.DATA_EMISSAO,
A.SITUACAO,A.CONTROLE,A.VALOR_CUSTO,
(Select First 1 E.grade_codigo  From TbProduto E Where A.Produto_Codigo = E.Codigo),
(Select First 1 E.modelo_codigo From TbProduto E Where A.Produto_Codigo = E.Codigo),
A.Tecelagem,A.tributacao_PIS, A.tributacao_cofins,
A.VALOR_ICMS,A.BASECALCULO_IPI,A.BASECALCULO_PIS,A.BASECALCULO_COFINS,

(Select First 1 L.Descricao From TbLocalizacao L Where A.Localizacao_Codigo = L.Codigo),
A.VALOR_FRETE, A.VALOR_SEGURO, A.PESO_LIQUIDO, A.PESO_BRUTO, A.VOLUMES, A.CUBAGEM,

A.VALOR_ACRESCIMO,A.VALOR_DESCONTO,A.FISCAL_ISENTAS_IPI,A.FISCAL_ISENTAS_ICMS,
A.FISCAL_OUTRAS_IPI,A.FISCAL_OUTRAS_ICMS,A.FISCAL_VALOR_ICMS,A.FISCAL_VALOR_IPI,
A.FISCAL_VALOR_PIS,A.FISCAL_VALOR_COFINS,A.FISCAL_PERCENTUAL_ICMS,A.FISCAL_PERCENTUAL_IPI,
A.FISCAL_PERCENTUAL_PIS,A.FISCAL_PERCENTUAL_COFINS,A.FISCAL_BASECALCULO_ICMS,
A.FISCAL_BASECALCULO_IPI,A.FISCAL_BASECALCULO_PIS,A.FISCAL_BASECALCULO_COFINS,
A.VALOR_CONTABIL, A.Valor_BaseCalculo_Icms, A.FISCAL_CFOP_CODIGO,
A.FISCAL_TRIBUTACAO_ORIGEM,A.FISCAL_TRIBUTACAO_ICMS,A.FISCAL_TRIBUTACAO_IPI,
A.FISCAL_TRIBUTACAO_PIS,A.FISCAL_TRIBUTACAO_COFINS,

A.MODALIDADE_ICMS, A.MODALIDADE_ICMS_ST, A.MARGEM_ICMS_ST, A.REDUCAO_ICMS_ST,
A.BASECALCULO_ICMS_ST, A.ALIQUOTA_ICMS_ST, A.VALOR_ICMS_ST, A.FISCAL_REDUCAO_ICMS_ST,
A.FISCAL_BASECALCULO_ICMS_ST, A.FISCAL_ALIQUOTA_ICMS_ST, A.FISCAL_VALOR_ICMS_ST,
A.PEDIDO_CLIENTE,
A.INFORMACOES_COMPLEMENTARES, A.Nf_Consignacao, A.Nf_Consignacao_Item,
A.FCI_MENSAGEM, A.FCI_PARCELA_IMPORTACAO, A.FCI_CONTEUDO_IMPORTACAO, A.FCI_NUMERO

From TbNfs_Item A
where (A.NFS_CONTROLE = :CONTROLE_1)
order by A.SEQUENCIA
into
    :NFS_CONTROLE      ,:SEQUENCIA        ,:OPERACAO_CODIGO      ,:CFOP_CODIGO      ,
    :PRODUTO_CODIGO    ,:PRODUTO_DESCRICAO,:PRODUTO_UNIDADEMEDIDA,:GRADE_CODIGO     ,
    :NCM_CODIGO        ,:TRIBUTACAO_ICMS  ,:TRIBUTACAO_IPI       ,:TRIBUTACAO_ORIGEM,
    :LOCALIZACAO_CODIGO,:QUANTIDADE       ,:VALOR_UNITARIO       ,:VALOR_TOTAL      ,
    :BASECALCULO_ICMS  ,:PERCENTUAL_ICMS  ,:PERCENTUAL_IPI       ,:VALOR_IPI        ,
    :PERCENTUAL_PIS    ,:VALOR_PIS        ,:PERCENTUAL_COFINS ,:VALOR_COFINS        ,
    :NFE   ,:NFE_ITEM_CONTROLE,:NF_EXTERNO        ,:NF_EXTERNO_ITEM_CONTROLE        ,
    :PEDIDO,:PEDIDO_ITEM_PE_CONTROLE,
    :T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
    :T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,
    :ESTABELECIMENTO_CODIGO,:EMPRESA_CODIGO,:NUMERO_NOTAFISCAL,:DATA_EMISSAO,
    :SITUACAO,:CONTROLE,:VALOR_CUSTO,:PRODUTO_GRADE_CODIGO,:MODELO_CODIGO,
    :TECELAGEM,:tributacao_PIS, :tributacao_cofins,
    :VALOR_ICMS,:BASECALCULO_IPI,:BASECALCULO_PIS,:BASECALCULO_COFINS,

    :LOCALIZACAO_DESCRICAO,
    :VALOR_FRETE, :VALOR_SEGURO, :PESO_LIQUIDO, :PESO_BRUTO, :VOLUMES, :CUBAGEM,

    :VALOR_ACRESCIMO,:VALOR_DESCONTO,:FISCAL_ISENTAS_IPI,:FISCAL_ISENTAS_ICMS,
    :FISCAL_OUTRAS_IPI,:FISCAL_OUTRAS_ICMS,:FISCAL_VALOR_ICMS,:FISCAL_VALOR_IPI,
    :FISCAL_VALOR_PIS,:FISCAL_VALOR_COFINS,:FISCAL_PERCENTUAL_ICMS,:FISCAL_PERCENTUAL_IPI,
    :FISCAL_PERCENTUAL_PIS,:FISCAL_PERCENTUAL_COFINS,:FISCAL_BASECALCULO_ICMS,
    :FISCAL_BASECALCULO_IPI,:FISCAL_BASECALCULO_PIS,:FISCAL_BASECALCULO_COFINS,
    :VALOR_CONTABIL,:Valor_BaseCalculo_Icms,:FISCAL_CFOP_CODIGO,:FISCAL_TRIBUTACAO_ORIGEM,:FISCAL_TRIBUTACAO_ICMS,
    :FISCAL_TRIBUTACAO_IPI,:FISCAL_TRIBUTACAO_PIS,:FISCAL_TRIBUTACAO_COFINS,
    :MODALIDADE_ICMS, :MODALIDADE_ICMS_ST, :MARGEM_ICMS_ST, :REDUCAO_ICMS_ST,
    :BASECALCULO_ICMS_ST, :ALIQUOTA_ICMS_ST, :VALOR_ICMS_ST, :FISCAL_REDUCAO_ICMS_ST,
    :FISCAL_BASECALCULO_ICMS_ST, :FISCAL_ALIQUOTA_ICMS_ST, :FISCAL_VALOR_ICMS_ST,
    :PEDIDO_CLIENTE,
    :INFORMACOES_COMPLEMENTARES, :Nf_Consignacao, :Nf_Consignacao_Item,
    :FCI_MENSAGEM, :FCI_PARCELA_IMPORTACAO, :FCI_CONTEUDO_IMPORTACAO, :FCI_NUMERO

do suspend;
end
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPC_NFS_ITEM6 (
    CONTROLE_1 integer)
returns (
    NFS_CONTROLE integer,
    SEQUENCIA integer,
    OPERACAO_CODIGO varchar(3),
    CFOP_CODIGO varchar(5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    GRADE_CODIGO integer,
    NCM_CODIGO varchar(10),
    TRIBUTACAO_ICMS integer,
    TRIBUTACAO_IPI varchar(2),
    TRIBUTACAO_ORIGEM integer,
    LOCALIZACAO_CODIGO integer,
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    BASECALCULO_ICMS numeric(10,5),
    PERCENTUAL_ICMS numeric(10,5),
    PERCENTUAL_IPI numeric(10,5),
    VALOR_IPI numeric(10,5),
    PERCENTUAL_PIS numeric(10,5),
    VALOR_PIS numeric(10,5),
    PERCENTUAL_COFINS numeric(10,5),
    VALOR_COFINS numeric(10,5),
    NFE integer,
    NFE_ITEM_CONTROLE integer,
    NF_EXTERNO integer,
    NF_EXTERNO_ITEM_CONTROLE integer,
    PEDIDO integer,
    PEDIDO_ITEM_PE_CONTROLE integer,
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    ESTABELECIMENTO_CODIGO integer,
    EMPRESA_CODIGO integer,
    NUMERO_NOTAFISCAL integer,
    DATA_EMISSAO date,
    SITUACAO integer,
    CONTROLE integer,
    VALOR_CUSTO numeric(10,5),
    PRODUTO_GRADE_CODIGO integer,
    MODELO_CODIGO integer,
    TECELAGEM integer,
    TRIBUTACAO_PIS varchar(2),
    TRIBUTACAO_COFINS varchar(2),
    VALOR_ICMS numeric(10,2),
    BASECALCULO_IPI numeric(10,2),
    BASECALCULO_PIS numeric(10,2),
    BASECALCULO_COFINS numeric(10,2),
    LOCALIZACAO_DESCRICAO varchar(20),
    VALOR_FRETE numeric(10,2),
    VALOR_SEGURO numeric(10,2),
    PESO_LIQUIDO numeric(10,4),
    PESO_BRUTO numeric(10,4),
    VOLUMES integer,
    CUBAGEM numeric(10,4),
    VALOR_ACRESCIMO numeric(10,2),
    VALOR_DESCONTO numeric(10,2),
    FISCAL_ISENTAS_IPI numeric(10,2),
    FISCAL_ISENTAS_ICMS numeric(10,2),
    FISCAL_OUTRAS_IPI numeric(10,2),
    FISCAL_OUTRAS_ICMS numeric(10,2),
    FISCAL_VALOR_ICMS numeric(10,2),
    FISCAL_VALOR_IPI numeric(10,2),
    FISCAL_VALOR_PIS numeric(10,2),
    FISCAL_VALOR_COFINS numeric(10,2),
    FISCAL_PERCENTUAL_ICMS numeric(10,2),
    FISCAL_PERCENTUAL_IPI numeric(10,2),
    FISCAL_PERCENTUAL_PIS numeric(10,2),
    FISCAL_PERCENTUAL_COFINS numeric(10,2),
    FISCAL_BASECALCULO_ICMS numeric(10,5),
    FISCAL_BASECALCULO_IPI numeric(10,2),
    FISCAL_BASECALCULO_PIS numeric(10,2),
    FISCAL_BASECALCULO_COFINS numeric(10,2),
    VALOR_CONTABIL numeric(10,2),
    VALOR_BASECALCULO_ICMS numeric(10,2),
    FISCAL_CFOP_CODIGO varchar(5),
    FISCAL_TRIBUTACAO_ORIGEM integer,
    FISCAL_TRIBUTACAO_ICMS integer,
    FISCAL_TRIBUTACAO_IPI char(2),
    FISCAL_TRIBUTACAO_PIS char(2),
    FISCAL_TRIBUTACAO_COFINS char(2),
    MODALIDADE_ICMS char(1),
    MODALIDADE_ICMS_ST char(1),
    MARGEM_ICMS_ST numeric(15,4),
    REDUCAO_ICMS_ST numeric(15,4),
    BASECALCULO_ICMS_ST numeric(15,4),
    ALIQUOTA_ICMS_ST numeric(15,4),
    VALOR_ICMS_ST numeric(15,4),
    FISCAL_REDUCAO_ICMS_ST numeric(10,2),
    FISCAL_BASECALCULO_ICMS_ST numeric(10,2),
    FISCAL_ALIQUOTA_ICMS_ST numeric(10,2),
    FISCAL_VALOR_ICMS_ST numeric(10,2),
    PEDIDO_CLIENTE varchar(15),
    INFORMACOES_COMPLEMENTARES varchar(200),
    NF_CONSIGNACAO integer,
    NF_CONSIGNACAO_ITEM integer,
    FCI_MENSAGEM varchar(255),
    FCI_PARCELA_IMPORTACAO numeric(15,2),
    FCI_CONTEUDO_IMPORTACAO numeric(15,2),
    FCI_NUMERO varchar(40),
    ENQUADRAMENTO_IPI varchar(3),
    CCUSTO varchar(8),
    CONTA_CONTABIL varchar(11))
as
begin
for select
A.NFS_CONTROLE      ,A.SEQUENCIA        ,A.OPERACAO_CODIGO      ,A.CFOP_CODIGO      ,
A.PRODUTO_CODIGO    ,A.PRODUTO_DESCRICAO,A.PRODUTO_UNIDADEMEDIDA,A.GRADE_CODIGO     ,
A.NCM_CODIGO        ,A.TRIBUTACAO_ICMS  ,A.TRIBUTACAO_IPI       ,A.TRIBUTACAO_ORIGEM,
A.LOCALIZACAO_CODIGO,A.QUANTIDADE       ,A.VALOR_UNITARIO       ,A.VALOR_TOTAL      ,
A.BASECALCULO_ICMS  ,A.PERCENTUAL_ICMS  ,A.PERCENTUAL_IPI       ,A.VALOR_IPI        ,
A.PERCENTUAL_PIS    ,A.VALOR_PIS        ,A.PERCENTUAL_COFINS    ,A.VALOR_COFINS     ,
A.NFE, A.NFE_ITEM_CONTROLE, A.NF_EXTERNO, A.NF_EXTERNO_ITEM_CONTROLE,
A.PEDIDO,A.PEDIDO_ITEM_PE_CONTROLE,
A.T01,A.T02,A.T03,A.T04,A.T05,A.T06,A.T07,A.T08,A.T09,A.T10,
A.T11,A.T12,A.T13,A.T14,A.T15,A.T16,A.T17,A.T18,A.T19,A.T20,
A.ESTABELECIMENTO_CODIGO,A.EMPRESA_CODIGO,A.NUMERO_NOTAFISCAL,A.DATA_EMISSAO,
A.SITUACAO,A.CONTROLE,A.VALOR_CUSTO,
(Select First 1 E.grade_codigo  From TbProduto E Where A.Produto_Codigo = E.Codigo),
(Select First 1 E.modelo_codigo From TbProduto E Where A.Produto_Codigo = E.Codigo),
A.Tecelagem,A.tributacao_PIS, A.tributacao_cofins,
A.VALOR_ICMS,A.BASECALCULO_IPI,A.BASECALCULO_PIS,A.BASECALCULO_COFINS,

(Select First 1 L.Descricao From TbLocalizacao L Where A.Localizacao_Codigo = L.Codigo),
A.VALOR_FRETE, A.VALOR_SEGURO, A.PESO_LIQUIDO, A.PESO_BRUTO, A.VOLUMES, A.CUBAGEM,

A.VALOR_ACRESCIMO,A.VALOR_DESCONTO,A.FISCAL_ISENTAS_IPI,A.FISCAL_ISENTAS_ICMS,
A.FISCAL_OUTRAS_IPI,A.FISCAL_OUTRAS_ICMS,A.FISCAL_VALOR_ICMS,A.FISCAL_VALOR_IPI,
A.FISCAL_VALOR_PIS,A.FISCAL_VALOR_COFINS,A.FISCAL_PERCENTUAL_ICMS,A.FISCAL_PERCENTUAL_IPI,
A.FISCAL_PERCENTUAL_PIS,A.FISCAL_PERCENTUAL_COFINS,A.FISCAL_BASECALCULO_ICMS,
A.FISCAL_BASECALCULO_IPI,A.FISCAL_BASECALCULO_PIS,A.FISCAL_BASECALCULO_COFINS,
A.VALOR_CONTABIL, A.Valor_BaseCalculo_Icms, A.FISCAL_CFOP_CODIGO,
A.FISCAL_TRIBUTACAO_ORIGEM,A.FISCAL_TRIBUTACAO_ICMS,A.FISCAL_TRIBUTACAO_IPI,
A.FISCAL_TRIBUTACAO_PIS,A.FISCAL_TRIBUTACAO_COFINS,

A.MODALIDADE_ICMS, A.MODALIDADE_ICMS_ST, A.MARGEM_ICMS_ST, A.REDUCAO_ICMS_ST,
A.BASECALCULO_ICMS_ST, A.ALIQUOTA_ICMS_ST, A.VALOR_ICMS_ST, A.FISCAL_REDUCAO_ICMS_ST,
A.FISCAL_BASECALCULO_ICMS_ST, A.FISCAL_ALIQUOTA_ICMS_ST, A.FISCAL_VALOR_ICMS_ST,
A.PEDIDO_CLIENTE,
A.INFORMACOES_COMPLEMENTARES, A.Nf_Consignacao, A.Nf_Consignacao_Item,
A.FCI_MENSAGEM, A.FCI_PARCELA_IMPORTACAO, A.FCI_CONTEUDO_IMPORTACAO, A.FCI_NUMERO,
A.enquadramento_ipi, A.ccusto, A.conta_contabil

From TbNfs_Item A
where (A.NFS_CONTROLE = :CONTROLE_1)
order by A.SEQUENCIA
into
    :NFS_CONTROLE      ,:SEQUENCIA        ,:OPERACAO_CODIGO      ,:CFOP_CODIGO      ,
    :PRODUTO_CODIGO    ,:PRODUTO_DESCRICAO,:PRODUTO_UNIDADEMEDIDA,:GRADE_CODIGO     ,
    :NCM_CODIGO        ,:TRIBUTACAO_ICMS  ,:TRIBUTACAO_IPI       ,:TRIBUTACAO_ORIGEM,
    :LOCALIZACAO_CODIGO,:QUANTIDADE       ,:VALOR_UNITARIO       ,:VALOR_TOTAL      ,
    :BASECALCULO_ICMS  ,:PERCENTUAL_ICMS  ,:PERCENTUAL_IPI       ,:VALOR_IPI        ,
    :PERCENTUAL_PIS    ,:VALOR_PIS        ,:PERCENTUAL_COFINS ,:VALOR_COFINS        ,
    :NFE   ,:NFE_ITEM_CONTROLE,:NF_EXTERNO        ,:NF_EXTERNO_ITEM_CONTROLE        ,
    :PEDIDO,:PEDIDO_ITEM_PE_CONTROLE,
    :T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
    :T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,
    :ESTABELECIMENTO_CODIGO,:EMPRESA_CODIGO,:NUMERO_NOTAFISCAL,:DATA_EMISSAO,
    :SITUACAO,:CONTROLE,:VALOR_CUSTO,:PRODUTO_GRADE_CODIGO,:MODELO_CODIGO,
    :TECELAGEM,:tributacao_PIS, :tributacao_cofins,
    :VALOR_ICMS,:BASECALCULO_IPI,:BASECALCULO_PIS,:BASECALCULO_COFINS,

    :LOCALIZACAO_DESCRICAO,
    :VALOR_FRETE, :VALOR_SEGURO, :PESO_LIQUIDO, :PESO_BRUTO, :VOLUMES, :CUBAGEM,

    :VALOR_ACRESCIMO,:VALOR_DESCONTO,:FISCAL_ISENTAS_IPI,:FISCAL_ISENTAS_ICMS,
    :FISCAL_OUTRAS_IPI,:FISCAL_OUTRAS_ICMS,:FISCAL_VALOR_ICMS,:FISCAL_VALOR_IPI,
    :FISCAL_VALOR_PIS,:FISCAL_VALOR_COFINS,:FISCAL_PERCENTUAL_ICMS,:FISCAL_PERCENTUAL_IPI,
    :FISCAL_PERCENTUAL_PIS,:FISCAL_PERCENTUAL_COFINS,:FISCAL_BASECALCULO_ICMS,
    :FISCAL_BASECALCULO_IPI,:FISCAL_BASECALCULO_PIS,:FISCAL_BASECALCULO_COFINS,
    :VALOR_CONTABIL,:Valor_BaseCalculo_Icms,:FISCAL_CFOP_CODIGO,:FISCAL_TRIBUTACAO_ORIGEM,:FISCAL_TRIBUTACAO_ICMS,
    :FISCAL_TRIBUTACAO_IPI,:FISCAL_TRIBUTACAO_PIS,:FISCAL_TRIBUTACAO_COFINS,
    :MODALIDADE_ICMS, :MODALIDADE_ICMS_ST, :MARGEM_ICMS_ST, :REDUCAO_ICMS_ST,
    :BASECALCULO_ICMS_ST, :ALIQUOTA_ICMS_ST, :VALOR_ICMS_ST, :FISCAL_REDUCAO_ICMS_ST,
    :FISCAL_BASECALCULO_ICMS_ST, :FISCAL_ALIQUOTA_ICMS_ST, :FISCAL_VALOR_ICMS_ST,
    :PEDIDO_CLIENTE,
    :INFORMACOES_COMPLEMENTARES, :Nf_Consignacao, :Nf_Consignacao_Item,
    :FCI_MENSAGEM, :FCI_PARCELA_IMPORTACAO, :FCI_CONTEUDO_IMPORTACAO, :FCI_NUMERO,
    :enquadramento_ipi, :ccusto, :conta_contabil

do suspend;
end
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPC_NFS_ITEM7 (
    CONTROLE_1 integer)
returns (
    NFS_CONTROLE integer,
    SEQUENCIA integer,
    OPERACAO_CODIGO varchar(3),
    CFOP_CODIGO varchar(5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    GRADE_CODIGO integer,
    NCM_CODIGO varchar(10),
    TRIBUTACAO_ICMS integer,
    TRIBUTACAO_IPI varchar(2),
    TRIBUTACAO_ORIGEM integer,
    LOCALIZACAO_CODIGO integer,
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    BASECALCULO_ICMS numeric(10,5),
    PERCENTUAL_ICMS numeric(10,5),
    PERCENTUAL_IPI numeric(10,5),
    VALOR_IPI numeric(10,5),
    PERCENTUAL_PIS numeric(10,5),
    VALOR_PIS numeric(10,5),
    PERCENTUAL_COFINS numeric(10,5),
    VALOR_COFINS numeric(10,5),
    NFE integer,
    NFE_ITEM_CONTROLE integer,
    NF_EXTERNO integer,
    NF_EXTERNO_ITEM_CONTROLE integer,
    PEDIDO integer,
    PEDIDO_ITEM_PE_CONTROLE integer,
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    ESTABELECIMENTO_CODIGO integer,
    EMPRESA_CODIGO integer,
    NUMERO_NOTAFISCAL integer,
    DATA_EMISSAO date,
    SITUACAO integer,
    CONTROLE integer,
    VALOR_CUSTO numeric(10,5),
    PRODUTO_GRADE_CODIGO integer,
    MODELO_CODIGO integer,
    TECELAGEM integer,
    TRIBUTACAO_PIS varchar(2),
    TRIBUTACAO_COFINS varchar(2),
    VALOR_ICMS numeric(10,2),
    BASECALCULO_IPI numeric(10,2),
    BASECALCULO_PIS numeric(10,2),
    BASECALCULO_COFINS numeric(10,2),
    LOCALIZACAO_DESCRICAO varchar(20),
    VALOR_FRETE numeric(10,2),
    VALOR_SEGURO numeric(10,2),
    PESO_LIQUIDO numeric(10,4),
    PESO_BRUTO numeric(10,4),
    VOLUMES integer,
    CUBAGEM numeric(10,4),
    VALOR_ACRESCIMO numeric(10,2),
    VALOR_DESCONTO numeric(10,2),
    FISCAL_ISENTAS_IPI numeric(10,2),
    FISCAL_ISENTAS_ICMS numeric(10,2),
    FISCAL_OUTRAS_IPI numeric(10,2),
    FISCAL_OUTRAS_ICMS numeric(10,2),
    FISCAL_VALOR_ICMS numeric(10,2),
    FISCAL_VALOR_IPI numeric(10,2),
    FISCAL_VALOR_PIS numeric(10,2),
    FISCAL_VALOR_COFINS numeric(10,2),
    FISCAL_PERCENTUAL_ICMS numeric(10,2),
    FISCAL_PERCENTUAL_IPI numeric(10,2),
    FISCAL_PERCENTUAL_PIS numeric(10,2),
    FISCAL_PERCENTUAL_COFINS numeric(10,2),
    FISCAL_BASECALCULO_ICMS numeric(10,5),
    FISCAL_BASECALCULO_IPI numeric(10,2),
    FISCAL_BASECALCULO_PIS numeric(10,2),
    FISCAL_BASECALCULO_COFINS numeric(10,2),
    VALOR_CONTABIL numeric(10,2),
    VALOR_BASECALCULO_ICMS numeric(10,2),
    FISCAL_CFOP_CODIGO varchar(5),
    FISCAL_TRIBUTACAO_ORIGEM integer,
    FISCAL_TRIBUTACAO_ICMS integer,
    FISCAL_TRIBUTACAO_IPI char(2),
    FISCAL_TRIBUTACAO_PIS char(2),
    FISCAL_TRIBUTACAO_COFINS char(2),
    MODALIDADE_ICMS char(1),
    MODALIDADE_ICMS_ST char(1),
    MARGEM_ICMS_ST numeric(15,4),
    REDUCAO_ICMS_ST numeric(15,4),
    BASECALCULO_ICMS_ST numeric(15,4),
    ALIQUOTA_ICMS_ST numeric(15,4),
    VALOR_ICMS_ST numeric(15,4),
    FISCAL_REDUCAO_ICMS_ST numeric(10,2),
    FISCAL_BASECALCULO_ICMS_ST numeric(10,2),
    FISCAL_ALIQUOTA_ICMS_ST numeric(10,2),
    FISCAL_VALOR_ICMS_ST numeric(10,2),
    PEDIDO_CLIENTE varchar(15),
    INFORMACOES_COMPLEMENTARES varchar(200),
    NF_CONSIGNACAO integer,
    NF_CONSIGNACAO_ITEM integer,
    FCI_MENSAGEM varchar(255),
    FCI_PARCELA_IMPORTACAO numeric(15,2),
    FCI_CONTEUDO_IMPORTACAO numeric(15,2),
    FCI_NUMERO varchar(40),
    ENQUADRAMENTO_IPI varchar(3),
    CCUSTO varchar(8),
    CONTA_CONTABIL varchar(11),
    VBCUFDEST numeric(15,2),
    PFCPUFDEST numeric(15,2),
    PICMSUFDEST numeric(15,2),
    PICMSINTER numeric(15,2),
    VFCPUFDEST numeric(15,2),
    VICMSUFDEST numeric(15,2),
    VICMSUFREMET numeric(15,2),
    PICMSINTERPART numeric(15,2))
as
begin
for select
A.NFS_CONTROLE      ,A.SEQUENCIA        ,A.OPERACAO_CODIGO      ,A.CFOP_CODIGO      ,
A.PRODUTO_CODIGO    ,A.PRODUTO_DESCRICAO,A.PRODUTO_UNIDADEMEDIDA,A.GRADE_CODIGO     ,
A.NCM_CODIGO        ,A.TRIBUTACAO_ICMS  ,A.TRIBUTACAO_IPI       ,A.TRIBUTACAO_ORIGEM,
A.LOCALIZACAO_CODIGO,A.QUANTIDADE       ,A.VALOR_UNITARIO       ,A.VALOR_TOTAL      ,
A.BASECALCULO_ICMS  ,A.PERCENTUAL_ICMS  ,A.PERCENTUAL_IPI       ,A.VALOR_IPI        ,
A.PERCENTUAL_PIS    ,A.VALOR_PIS        ,A.PERCENTUAL_COFINS    ,A.VALOR_COFINS     ,
A.NFE, A.NFE_ITEM_CONTROLE, A.NF_EXTERNO, A.NF_EXTERNO_ITEM_CONTROLE,
A.PEDIDO,A.PEDIDO_ITEM_PE_CONTROLE,
A.T01,A.T02,A.T03,A.T04,A.T05,A.T06,A.T07,A.T08,A.T09,A.T10,
A.T11,A.T12,A.T13,A.T14,A.T15,A.T16,A.T17,A.T18,A.T19,A.T20,
A.ESTABELECIMENTO_CODIGO,A.EMPRESA_CODIGO,A.NUMERO_NOTAFISCAL,A.DATA_EMISSAO,
A.SITUACAO,A.CONTROLE,A.VALOR_CUSTO,
(Select First 1 E.grade_codigo  From TbProduto E Where A.Produto_Codigo = E.Codigo),
(Select First 1 E.modelo_codigo From TbProduto E Where A.Produto_Codigo = E.Codigo),
A.Tecelagem,A.tributacao_PIS, A.tributacao_cofins,
A.VALOR_ICMS,A.BASECALCULO_IPI,A.BASECALCULO_PIS,A.BASECALCULO_COFINS,

(Select First 1 L.Descricao From TbLocalizacao L Where A.Localizacao_Codigo = L.Codigo),
A.VALOR_FRETE, A.VALOR_SEGURO, A.PESO_LIQUIDO, A.PESO_BRUTO, A.VOLUMES, A.CUBAGEM,

A.VALOR_ACRESCIMO,A.VALOR_DESCONTO,A.FISCAL_ISENTAS_IPI,A.FISCAL_ISENTAS_ICMS,
A.FISCAL_OUTRAS_IPI,A.FISCAL_OUTRAS_ICMS,A.FISCAL_VALOR_ICMS,A.FISCAL_VALOR_IPI,
A.FISCAL_VALOR_PIS,A.FISCAL_VALOR_COFINS,A.FISCAL_PERCENTUAL_ICMS,A.FISCAL_PERCENTUAL_IPI,
A.FISCAL_PERCENTUAL_PIS,A.FISCAL_PERCENTUAL_COFINS,A.FISCAL_BASECALCULO_ICMS,
A.FISCAL_BASECALCULO_IPI,A.FISCAL_BASECALCULO_PIS,A.FISCAL_BASECALCULO_COFINS,
A.VALOR_CONTABIL, A.Valor_BaseCalculo_Icms, A.FISCAL_CFOP_CODIGO,
A.FISCAL_TRIBUTACAO_ORIGEM,A.FISCAL_TRIBUTACAO_ICMS,A.FISCAL_TRIBUTACAO_IPI,
A.FISCAL_TRIBUTACAO_PIS,A.FISCAL_TRIBUTACAO_COFINS,

A.MODALIDADE_ICMS, A.MODALIDADE_ICMS_ST, A.MARGEM_ICMS_ST, A.REDUCAO_ICMS_ST,
A.BASECALCULO_ICMS_ST, A.ALIQUOTA_ICMS_ST, A.VALOR_ICMS_ST, A.FISCAL_REDUCAO_ICMS_ST,
A.FISCAL_BASECALCULO_ICMS_ST, A.FISCAL_ALIQUOTA_ICMS_ST, A.FISCAL_VALOR_ICMS_ST,
A.PEDIDO_CLIENTE,
A.INFORMACOES_COMPLEMENTARES, A.Nf_Consignacao, A.Nf_Consignacao_Item,
A.FCI_MENSAGEM, A.FCI_PARCELA_IMPORTACAO, A.FCI_CONTEUDO_IMPORTACAO, A.FCI_NUMERO,
A.enquadramento_ipi, A.ccusto, A.conta_contabil,

A.VBCUFDEST,
A.pFCPUFDest,
A.pICMSUFDest,
A.pICMSInter,
A.vFCPUFDest,
A.vICMSUFDest,
A.vICMSUFRemet,
A.pICMSInterPart

From TbNfs_Item A
where (A.NFS_CONTROLE = :CONTROLE_1)
order by A.SEQUENCIA
into
    :NFS_CONTROLE      ,:SEQUENCIA        ,:OPERACAO_CODIGO      ,:CFOP_CODIGO      ,
    :PRODUTO_CODIGO    ,:PRODUTO_DESCRICAO,:PRODUTO_UNIDADEMEDIDA,:GRADE_CODIGO     ,
    :NCM_CODIGO        ,:TRIBUTACAO_ICMS  ,:TRIBUTACAO_IPI       ,:TRIBUTACAO_ORIGEM,
    :LOCALIZACAO_CODIGO,:QUANTIDADE       ,:VALOR_UNITARIO       ,:VALOR_TOTAL      ,
    :BASECALCULO_ICMS  ,:PERCENTUAL_ICMS  ,:PERCENTUAL_IPI       ,:VALOR_IPI        ,
    :PERCENTUAL_PIS    ,:VALOR_PIS        ,:PERCENTUAL_COFINS ,:VALOR_COFINS        ,
    :NFE   ,:NFE_ITEM_CONTROLE,:NF_EXTERNO        ,:NF_EXTERNO_ITEM_CONTROLE        ,
    :PEDIDO,:PEDIDO_ITEM_PE_CONTROLE,
    :T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
    :T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,
    :ESTABELECIMENTO_CODIGO,:EMPRESA_CODIGO,:NUMERO_NOTAFISCAL,:DATA_EMISSAO,
    :SITUACAO,:CONTROLE,:VALOR_CUSTO,:PRODUTO_GRADE_CODIGO,:MODELO_CODIGO,
    :TECELAGEM,:tributacao_PIS, :tributacao_cofins,
    :VALOR_ICMS,:BASECALCULO_IPI,:BASECALCULO_PIS,:BASECALCULO_COFINS,

    :LOCALIZACAO_DESCRICAO,
    :VALOR_FRETE, :VALOR_SEGURO, :PESO_LIQUIDO, :PESO_BRUTO, :VOLUMES, :CUBAGEM,

    :VALOR_ACRESCIMO,:VALOR_DESCONTO,:FISCAL_ISENTAS_IPI,:FISCAL_ISENTAS_ICMS,
    :FISCAL_OUTRAS_IPI,:FISCAL_OUTRAS_ICMS,:FISCAL_VALOR_ICMS,:FISCAL_VALOR_IPI,
    :FISCAL_VALOR_PIS,:FISCAL_VALOR_COFINS,:FISCAL_PERCENTUAL_ICMS,:FISCAL_PERCENTUAL_IPI,
    :FISCAL_PERCENTUAL_PIS,:FISCAL_PERCENTUAL_COFINS,:FISCAL_BASECALCULO_ICMS,
    :FISCAL_BASECALCULO_IPI,:FISCAL_BASECALCULO_PIS,:FISCAL_BASECALCULO_COFINS,
    :VALOR_CONTABIL,:Valor_BaseCalculo_Icms,:FISCAL_CFOP_CODIGO,:FISCAL_TRIBUTACAO_ORIGEM,:FISCAL_TRIBUTACAO_ICMS,
    :FISCAL_TRIBUTACAO_IPI,:FISCAL_TRIBUTACAO_PIS,:FISCAL_TRIBUTACAO_COFINS,
    :MODALIDADE_ICMS, :MODALIDADE_ICMS_ST, :MARGEM_ICMS_ST, :REDUCAO_ICMS_ST,
    :BASECALCULO_ICMS_ST, :ALIQUOTA_ICMS_ST, :VALOR_ICMS_ST, :FISCAL_REDUCAO_ICMS_ST,
    :FISCAL_BASECALCULO_ICMS_ST, :FISCAL_ALIQUOTA_ICMS_ST, :FISCAL_VALOR_ICMS_ST,
    :PEDIDO_CLIENTE,
    :INFORMACOES_COMPLEMENTARES, :Nf_Consignacao, :Nf_Consignacao_Item,
    :FCI_MENSAGEM, :FCI_PARCELA_IMPORTACAO, :FCI_CONTEUDO_IMPORTACAO, :FCI_NUMERO,
    :enquadramento_ipi, :ccusto, :conta_contabil,
    :VBCUFDEST,:pFCPUFDest,:pICMSUFDest,:pICMSInter,:vFCPUFDest,:vICMSUFDest,:vICMSUFRemet,:pICMSInterPart


do suspend;
end
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPC_NFS_ITEM8 (
    CONTROLE_1 integer)
returns (
    NFS_CONTROLE integer,
    SEQUENCIA integer,
    OPERACAO_CODIGO varchar(3),
    CFOP_CODIGO varchar(5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    GRADE_CODIGO integer,
    NCM_CODIGO varchar(10),
    TRIBUTACAO_ICMS integer,
    TRIBUTACAO_IPI varchar(2),
    TRIBUTACAO_ORIGEM integer,
    LOCALIZACAO_CODIGO integer,
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    BASECALCULO_ICMS numeric(10,5),
    PERCENTUAL_ICMS numeric(10,5),
    PERCENTUAL_IPI numeric(10,5),
    VALOR_IPI numeric(10,5),
    PERCENTUAL_PIS numeric(10,5),
    VALOR_PIS numeric(10,5),
    PERCENTUAL_COFINS numeric(10,5),
    VALOR_COFINS numeric(10,5),
    NFE integer,
    NFE_ITEM_CONTROLE integer,
    NF_EXTERNO integer,
    NF_EXTERNO_ITEM_CONTROLE integer,
    PEDIDO integer,
    PEDIDO_ITEM_PE_CONTROLE integer,
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    ESTABELECIMENTO_CODIGO integer,
    EMPRESA_CODIGO integer,
    NUMERO_NOTAFISCAL integer,
    DATA_EMISSAO date,
    SITUACAO integer,
    CONTROLE integer,
    VALOR_CUSTO numeric(10,5),
    PRODUTO_GRADE_CODIGO integer,
    MODELO_CODIGO integer,
    TECELAGEM integer,
    TRIBUTACAO_PIS varchar(2),
    TRIBUTACAO_COFINS varchar(2),
    VALOR_ICMS numeric(10,2),
    BASECALCULO_IPI numeric(10,2),
    BASECALCULO_PIS numeric(10,2),
    BASECALCULO_COFINS numeric(10,2),
    LOCALIZACAO_DESCRICAO varchar(20),
    VALOR_FRETE numeric(10,2),
    VALOR_SEGURO numeric(10,2),
    PESO_LIQUIDO numeric(10,4),
    PESO_BRUTO numeric(10,4),
    VOLUMES integer,
    CUBAGEM numeric(10,4),
    VALOR_ACRESCIMO numeric(10,2),
    VALOR_DESCONTO numeric(10,2),
    FISCAL_ISENTAS_IPI numeric(10,2),
    FISCAL_ISENTAS_ICMS numeric(10,2),
    FISCAL_OUTRAS_IPI numeric(10,2),
    FISCAL_OUTRAS_ICMS numeric(10,2),
    FISCAL_VALOR_ICMS numeric(10,2),
    FISCAL_VALOR_IPI numeric(10,2),
    FISCAL_VALOR_PIS numeric(10,2),
    FISCAL_VALOR_COFINS numeric(10,2),
    FISCAL_PERCENTUAL_ICMS numeric(10,2),
    FISCAL_PERCENTUAL_IPI numeric(10,2),
    FISCAL_PERCENTUAL_PIS numeric(10,2),
    FISCAL_PERCENTUAL_COFINS numeric(10,2),
    FISCAL_BASECALCULO_ICMS numeric(10,5),
    FISCAL_BASECALCULO_IPI numeric(10,2),
    FISCAL_BASECALCULO_PIS numeric(10,2),
    FISCAL_BASECALCULO_COFINS numeric(10,2),
    VALOR_CONTABIL numeric(10,2),
    VALOR_BASECALCULO_ICMS numeric(10,2),
    FISCAL_CFOP_CODIGO varchar(5),
    FISCAL_TRIBUTACAO_ORIGEM integer,
    FISCAL_TRIBUTACAO_ICMS integer,
    FISCAL_TRIBUTACAO_IPI char(2),
    FISCAL_TRIBUTACAO_PIS char(2),
    FISCAL_TRIBUTACAO_COFINS char(2),
    MODALIDADE_ICMS char(1),
    MODALIDADE_ICMS_ST char(1),
    MARGEM_ICMS_ST numeric(15,4),
    REDUCAO_ICMS_ST numeric(15,4),
    BASECALCULO_ICMS_ST numeric(15,4),
    ALIQUOTA_ICMS_ST numeric(15,4),
    VALOR_ICMS_ST numeric(15,4),
    FISCAL_REDUCAO_ICMS_ST numeric(10,2),
    FISCAL_BASECALCULO_ICMS_ST numeric(10,2),
    FISCAL_ALIQUOTA_ICMS_ST numeric(10,2),
    FISCAL_VALOR_ICMS_ST numeric(10,2),
    PEDIDO_CLIENTE varchar(15),
    INFORMACOES_COMPLEMENTARES varchar(200),
    NF_CONSIGNACAO integer,
    NF_CONSIGNACAO_ITEM integer,
    FCI_MENSAGEM varchar(255),
    FCI_PARCELA_IMPORTACAO numeric(15,2),
    FCI_CONTEUDO_IMPORTACAO numeric(15,2),
    FCI_NUMERO varchar(40),
    ENQUADRAMENTO_IPI varchar(3),
    CCUSTO varchar(8),
    CONTA_CONTABIL varchar(11),
    VBCUFDEST numeric(15,2),
    PFCPUFDEST numeric(15,2),
    PICMSUFDEST numeric(15,2),
    PICMSINTER numeric(15,2),
    VFCPUFDEST numeric(15,2),
    VICMSUFDEST numeric(15,2),
    VICMSUFREMET numeric(15,2),
    PICMSINTERPART numeric(15,2),
    QUANTIDADE_ALTERNATIVA numeric(18,4),
    UM_ALTERNATIVA varchar(10),
    VALOR_ALTERNATIVO numeric(18,10))
as
begin
for select
A.NFS_CONTROLE      ,A.SEQUENCIA        ,A.OPERACAO_CODIGO      ,A.CFOP_CODIGO      ,
A.PRODUTO_CODIGO    ,A.PRODUTO_DESCRICAO,A.PRODUTO_UNIDADEMEDIDA,A.GRADE_CODIGO     ,
A.NCM_CODIGO        ,A.TRIBUTACAO_ICMS  ,A.TRIBUTACAO_IPI       ,A.TRIBUTACAO_ORIGEM,
A.LOCALIZACAO_CODIGO,A.QUANTIDADE       ,A.VALOR_UNITARIO       ,A.VALOR_TOTAL      ,
A.BASECALCULO_ICMS  ,A.PERCENTUAL_ICMS  ,A.PERCENTUAL_IPI       ,A.VALOR_IPI        ,
A.PERCENTUAL_PIS    ,A.VALOR_PIS        ,A.PERCENTUAL_COFINS    ,A.VALOR_COFINS     ,
A.NFE, A.NFE_ITEM_CONTROLE, A.NF_EXTERNO, A.NF_EXTERNO_ITEM_CONTROLE,
A.PEDIDO,A.PEDIDO_ITEM_PE_CONTROLE,
A.T01,A.T02,A.T03,A.T04,A.T05,A.T06,A.T07,A.T08,A.T09,A.T10,
A.T11,A.T12,A.T13,A.T14,A.T15,A.T16,A.T17,A.T18,A.T19,A.T20,
A.ESTABELECIMENTO_CODIGO,A.EMPRESA_CODIGO,A.NUMERO_NOTAFISCAL,A.DATA_EMISSAO,
A.SITUACAO,A.CONTROLE,A.VALOR_CUSTO,
(Select First 1 E.grade_codigo  From TbProduto E Where A.Produto_Codigo = E.Codigo),
(Select First 1 E.modelo_codigo From TbProduto E Where A.Produto_Codigo = E.Codigo),
A.Tecelagem,A.tributacao_PIS, A.tributacao_cofins,
A.VALOR_ICMS,A.BASECALCULO_IPI,A.BASECALCULO_PIS,A.BASECALCULO_COFINS,

(Select First 1 L.Descricao From TbLocalizacao L Where A.Localizacao_Codigo = L.Codigo),
A.VALOR_FRETE, A.VALOR_SEGURO, A.PESO_LIQUIDO, A.PESO_BRUTO, A.VOLUMES, A.CUBAGEM,

A.VALOR_ACRESCIMO,A.VALOR_DESCONTO,A.FISCAL_ISENTAS_IPI,A.FISCAL_ISENTAS_ICMS,
A.FISCAL_OUTRAS_IPI,A.FISCAL_OUTRAS_ICMS,A.FISCAL_VALOR_ICMS,A.FISCAL_VALOR_IPI,
A.FISCAL_VALOR_PIS,A.FISCAL_VALOR_COFINS,A.FISCAL_PERCENTUAL_ICMS,A.FISCAL_PERCENTUAL_IPI,
A.FISCAL_PERCENTUAL_PIS,A.FISCAL_PERCENTUAL_COFINS,A.FISCAL_BASECALCULO_ICMS,
A.FISCAL_BASECALCULO_IPI,A.FISCAL_BASECALCULO_PIS,A.FISCAL_BASECALCULO_COFINS,
A.VALOR_CONTABIL, A.Valor_BaseCalculo_Icms, A.FISCAL_CFOP_CODIGO,
A.FISCAL_TRIBUTACAO_ORIGEM,A.FISCAL_TRIBUTACAO_ICMS,A.FISCAL_TRIBUTACAO_IPI,
A.FISCAL_TRIBUTACAO_PIS,A.FISCAL_TRIBUTACAO_COFINS,

A.MODALIDADE_ICMS, A.MODALIDADE_ICMS_ST, A.MARGEM_ICMS_ST, A.REDUCAO_ICMS_ST,
A.BASECALCULO_ICMS_ST, A.ALIQUOTA_ICMS_ST, A.VALOR_ICMS_ST, A.FISCAL_REDUCAO_ICMS_ST,
A.FISCAL_BASECALCULO_ICMS_ST, A.FISCAL_ALIQUOTA_ICMS_ST, A.FISCAL_VALOR_ICMS_ST,
A.PEDIDO_CLIENTE,
A.INFORMACOES_COMPLEMENTARES, A.Nf_Consignacao, A.Nf_Consignacao_Item,
A.FCI_MENSAGEM, A.FCI_PARCELA_IMPORTACAO, A.FCI_CONTEUDO_IMPORTACAO, A.FCI_NUMERO,
A.enquadramento_ipi, A.ccusto, A.conta_contabil,

A.VBCUFDEST,
A.pFCPUFDest,
A.pICMSUFDest,
A.pICMSInter,
A.vFCPUFDest,
A.vICMSUFDest,
A.vICMSUFRemet,
A.pICMSInterPart,

QUANTIDADE_ALTERNATIVA,
UM_ALTERNATIVA,
VALOR_ALTERNATIVO

From TbNfs_Item A
where (A.NFS_CONTROLE = :CONTROLE_1)
order by A.SEQUENCIA
into
    :NFS_CONTROLE      ,:SEQUENCIA        ,:OPERACAO_CODIGO      ,:CFOP_CODIGO      ,
    :PRODUTO_CODIGO    ,:PRODUTO_DESCRICAO,:PRODUTO_UNIDADEMEDIDA,:GRADE_CODIGO     ,
    :NCM_CODIGO        ,:TRIBUTACAO_ICMS  ,:TRIBUTACAO_IPI       ,:TRIBUTACAO_ORIGEM,
    :LOCALIZACAO_CODIGO,:QUANTIDADE       ,:VALOR_UNITARIO       ,:VALOR_TOTAL      ,
    :BASECALCULO_ICMS  ,:PERCENTUAL_ICMS  ,:PERCENTUAL_IPI       ,:VALOR_IPI        ,
    :PERCENTUAL_PIS    ,:VALOR_PIS        ,:PERCENTUAL_COFINS ,:VALOR_COFINS        ,
    :NFE   ,:NFE_ITEM_CONTROLE,:NF_EXTERNO        ,:NF_EXTERNO_ITEM_CONTROLE        ,
    :PEDIDO,:PEDIDO_ITEM_PE_CONTROLE,
    :T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
    :T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,
    :ESTABELECIMENTO_CODIGO,:EMPRESA_CODIGO,:NUMERO_NOTAFISCAL,:DATA_EMISSAO,
    :SITUACAO,:CONTROLE,:VALOR_CUSTO,:PRODUTO_GRADE_CODIGO,:MODELO_CODIGO,
    :TECELAGEM,:tributacao_PIS, :tributacao_cofins,
    :VALOR_ICMS,:BASECALCULO_IPI,:BASECALCULO_PIS,:BASECALCULO_COFINS,

    :LOCALIZACAO_DESCRICAO,
    :VALOR_FRETE, :VALOR_SEGURO, :PESO_LIQUIDO, :PESO_BRUTO, :VOLUMES, :CUBAGEM,

    :VALOR_ACRESCIMO,:VALOR_DESCONTO,:FISCAL_ISENTAS_IPI,:FISCAL_ISENTAS_ICMS,
    :FISCAL_OUTRAS_IPI,:FISCAL_OUTRAS_ICMS,:FISCAL_VALOR_ICMS,:FISCAL_VALOR_IPI,
    :FISCAL_VALOR_PIS,:FISCAL_VALOR_COFINS,:FISCAL_PERCENTUAL_ICMS,:FISCAL_PERCENTUAL_IPI,
    :FISCAL_PERCENTUAL_PIS,:FISCAL_PERCENTUAL_COFINS,:FISCAL_BASECALCULO_ICMS,
    :FISCAL_BASECALCULO_IPI,:FISCAL_BASECALCULO_PIS,:FISCAL_BASECALCULO_COFINS,
    :VALOR_CONTABIL,:Valor_BaseCalculo_Icms,:FISCAL_CFOP_CODIGO,:FISCAL_TRIBUTACAO_ORIGEM,:FISCAL_TRIBUTACAO_ICMS,
    :FISCAL_TRIBUTACAO_IPI,:FISCAL_TRIBUTACAO_PIS,:FISCAL_TRIBUTACAO_COFINS,
    :MODALIDADE_ICMS, :MODALIDADE_ICMS_ST, :MARGEM_ICMS_ST, :REDUCAO_ICMS_ST,
    :BASECALCULO_ICMS_ST, :ALIQUOTA_ICMS_ST, :VALOR_ICMS_ST, :FISCAL_REDUCAO_ICMS_ST,
    :FISCAL_BASECALCULO_ICMS_ST, :FISCAL_ALIQUOTA_ICMS_ST, :FISCAL_VALOR_ICMS_ST,
    :PEDIDO_CLIENTE,
    :INFORMACOES_COMPLEMENTARES, :Nf_Consignacao, :Nf_Consignacao_Item,
    :FCI_MENSAGEM, :FCI_PARCELA_IMPORTACAO, :FCI_CONTEUDO_IMPORTACAO, :FCI_NUMERO,
    :enquadramento_ipi, :ccusto, :conta_contabil,
    :VBCUFDEST,:pFCPUFDest,:pICMSUFDest,:pICMSInter,:vFCPUFDest,:vICMSUFDest,:vICMSUFRemet,:pICMSInterPart,
    :QUANTIDADE_ALTERNATIVA, :UM_ALTERNATIVA, :VALOR_ALTERNATIVO

do suspend;
end
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPC_NFS_ITEM9 (
    CONTROLE_1 integer)
returns (
    NFS_CONTROLE integer,
    SEQUENCIA integer,
    OPERACAO_CODIGO varchar(3),
    CFOP_CODIGO varchar(5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    GRADE_CODIGO integer,
    NCM_CODIGO varchar(10),
    TRIBUTACAO_ICMS integer,
    TRIBUTACAO_IPI varchar(2),
    TRIBUTACAO_ORIGEM integer,
    LOCALIZACAO_CODIGO integer,
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    BASECALCULO_ICMS numeric(10,5),
    PERCENTUAL_ICMS numeric(10,5),
    PERCENTUAL_IPI numeric(10,5),
    VALOR_IPI numeric(10,5),
    PERCENTUAL_PIS numeric(10,5),
    VALOR_PIS numeric(10,5),
    PERCENTUAL_COFINS numeric(10,5),
    VALOR_COFINS numeric(10,5),
    NFE integer,
    NFE_ITEM_CONTROLE integer,
    NF_EXTERNO integer,
    NF_EXTERNO_ITEM_CONTROLE integer,
    PEDIDO integer,
    PEDIDO_ITEM_PE_CONTROLE integer,
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    ESTABELECIMENTO_CODIGO integer,
    EMPRESA_CODIGO integer,
    NUMERO_NOTAFISCAL integer,
    DATA_EMISSAO date,
    SITUACAO integer,
    CONTROLE integer,
    VALOR_CUSTO numeric(10,5),
    PRODUTO_GRADE_CODIGO integer,
    MODELO_CODIGO integer,
    TECELAGEM integer,
    TRIBUTACAO_PIS varchar(2),
    TRIBUTACAO_COFINS varchar(2),
    VALOR_ICMS numeric(10,2),
    BASECALCULO_IPI numeric(10,2),
    BASECALCULO_PIS numeric(10,2),
    BASECALCULO_COFINS numeric(10,2),
    LOCALIZACAO_DESCRICAO varchar(20),
    VALOR_FRETE numeric(10,2),
    VALOR_SEGURO numeric(10,2),
    PESO_LIQUIDO numeric(10,4),
    PESO_BRUTO numeric(10,4),
    VOLUMES integer,
    CUBAGEM numeric(10,4),
    VALOR_ACRESCIMO numeric(10,2),
    VALOR_DESCONTO numeric(10,2),
    FISCAL_ISENTAS_IPI numeric(10,2),
    FISCAL_ISENTAS_ICMS numeric(10,2),
    FISCAL_OUTRAS_IPI numeric(10,2),
    FISCAL_OUTRAS_ICMS numeric(10,2),
    FISCAL_VALOR_ICMS numeric(10,2),
    FISCAL_VALOR_IPI numeric(10,2),
    FISCAL_VALOR_PIS numeric(10,2),
    FISCAL_VALOR_COFINS numeric(10,2),
    FISCAL_PERCENTUAL_ICMS numeric(10,2),
    FISCAL_PERCENTUAL_IPI numeric(10,2),
    FISCAL_PERCENTUAL_PIS numeric(10,2),
    FISCAL_PERCENTUAL_COFINS numeric(10,2),
    FISCAL_BASECALCULO_ICMS numeric(10,5),
    FISCAL_BASECALCULO_IPI numeric(10,2),
    FISCAL_BASECALCULO_PIS numeric(10,2),
    FISCAL_BASECALCULO_COFINS numeric(10,2),
    VALOR_CONTABIL numeric(10,2),
    VALOR_BASECALCULO_ICMS numeric(10,2),
    FISCAL_CFOP_CODIGO varchar(5),
    FISCAL_TRIBUTACAO_ORIGEM integer,
    FISCAL_TRIBUTACAO_ICMS integer,
    FISCAL_TRIBUTACAO_IPI char(2),
    FISCAL_TRIBUTACAO_PIS char(2),
    FISCAL_TRIBUTACAO_COFINS char(2),
    MODALIDADE_ICMS char(1),
    MODALIDADE_ICMS_ST char(1),
    MARGEM_ICMS_ST numeric(15,4),
    REDUCAO_ICMS_ST numeric(15,4),
    BASECALCULO_ICMS_ST numeric(15,4),
    ALIQUOTA_ICMS_ST numeric(15,4),
    VALOR_ICMS_ST numeric(15,4),
    FISCAL_REDUCAO_ICMS_ST numeric(10,2),
    FISCAL_BASECALCULO_ICMS_ST numeric(10,2),
    FISCAL_ALIQUOTA_ICMS_ST numeric(10,2),
    FISCAL_VALOR_ICMS_ST numeric(10,2),
    PEDIDO_CLIENTE varchar(15),
    INFORMACOES_COMPLEMENTARES varchar(200),
    NF_CONSIGNACAO integer,
    NF_CONSIGNACAO_ITEM integer,
    FCI_MENSAGEM varchar(255),
    FCI_PARCELA_IMPORTACAO numeric(15,2),
    FCI_CONTEUDO_IMPORTACAO numeric(15,2),
    FCI_NUMERO varchar(40),
    ENQUADRAMENTO_IPI varchar(3),
    CCUSTO varchar(8),
    CONTA_CONTABIL varchar(11),
    VBCUFDEST numeric(15,2),
    PFCPUFDEST numeric(15,2),
    PICMSUFDEST numeric(15,2),
    PICMSINTER numeric(15,2),
    VFCPUFDEST numeric(15,2),
    VICMSUFDEST numeric(15,2),
    VICMSUFREMET numeric(15,2),
    PICMSINTERPART numeric(15,2),
    QUANTIDADE_ALTERNATIVA numeric(18,4),
    UM_ALTERNATIVA varchar(10),
    VALOR_ALTERNATIVO numeric(18,10),
    REDUCAO_BASE_PISCOF char(1))
as
begin
for select
A.NFS_CONTROLE      ,A.SEQUENCIA        ,A.OPERACAO_CODIGO      ,A.CFOP_CODIGO      ,
A.PRODUTO_CODIGO    ,A.PRODUTO_DESCRICAO,A.PRODUTO_UNIDADEMEDIDA,A.GRADE_CODIGO     ,
A.NCM_CODIGO        ,A.TRIBUTACAO_ICMS  ,A.TRIBUTACAO_IPI       ,A.TRIBUTACAO_ORIGEM,
A.LOCALIZACAO_CODIGO,A.QUANTIDADE       ,A.VALOR_UNITARIO       ,A.VALOR_TOTAL      ,
A.BASECALCULO_ICMS  ,A.PERCENTUAL_ICMS  ,A.PERCENTUAL_IPI       ,A.VALOR_IPI        ,
A.PERCENTUAL_PIS    ,A.VALOR_PIS        ,A.PERCENTUAL_COFINS    ,A.VALOR_COFINS     ,
A.NFE, A.NFE_ITEM_CONTROLE, A.NF_EXTERNO, A.NF_EXTERNO_ITEM_CONTROLE,
A.PEDIDO,A.PEDIDO_ITEM_PE_CONTROLE,
A.T01,A.T02,A.T03,A.T04,A.T05,A.T06,A.T07,A.T08,A.T09,A.T10,
A.T11,A.T12,A.T13,A.T14,A.T15,A.T16,A.T17,A.T18,A.T19,A.T20,
A.ESTABELECIMENTO_CODIGO,A.EMPRESA_CODIGO,A.NUMERO_NOTAFISCAL,A.DATA_EMISSAO,
A.SITUACAO,A.CONTROLE,A.VALOR_CUSTO,
(Select First 1 E.grade_codigo  From TbProduto E Where A.Produto_Codigo = E.Codigo),
(Select First 1 E.modelo_codigo From TbProduto E Where A.Produto_Codigo = E.Codigo),
A.Tecelagem,A.tributacao_PIS, A.tributacao_cofins,
A.VALOR_ICMS,A.BASECALCULO_IPI,A.BASECALCULO_PIS,A.BASECALCULO_COFINS,

(Select First 1 L.Descricao From TbLocalizacao L Where A.Localizacao_Codigo = L.Codigo),
A.VALOR_FRETE, A.VALOR_SEGURO, A.PESO_LIQUIDO, A.PESO_BRUTO, A.VOLUMES, A.CUBAGEM,

A.VALOR_ACRESCIMO,A.VALOR_DESCONTO,A.FISCAL_ISENTAS_IPI,A.FISCAL_ISENTAS_ICMS,
A.FISCAL_OUTRAS_IPI,A.FISCAL_OUTRAS_ICMS,A.FISCAL_VALOR_ICMS,A.FISCAL_VALOR_IPI,
A.FISCAL_VALOR_PIS,A.FISCAL_VALOR_COFINS,A.FISCAL_PERCENTUAL_ICMS,A.FISCAL_PERCENTUAL_IPI,
A.FISCAL_PERCENTUAL_PIS,A.FISCAL_PERCENTUAL_COFINS,A.FISCAL_BASECALCULO_ICMS,
A.FISCAL_BASECALCULO_IPI,A.FISCAL_BASECALCULO_PIS,A.FISCAL_BASECALCULO_COFINS,
A.VALOR_CONTABIL, A.Valor_BaseCalculo_Icms, A.FISCAL_CFOP_CODIGO,
A.FISCAL_TRIBUTACAO_ORIGEM,A.FISCAL_TRIBUTACAO_ICMS,A.FISCAL_TRIBUTACAO_IPI,
A.FISCAL_TRIBUTACAO_PIS,A.FISCAL_TRIBUTACAO_COFINS,

A.MODALIDADE_ICMS, A.MODALIDADE_ICMS_ST, A.MARGEM_ICMS_ST, A.REDUCAO_ICMS_ST,
A.BASECALCULO_ICMS_ST, A.ALIQUOTA_ICMS_ST, A.VALOR_ICMS_ST, A.FISCAL_REDUCAO_ICMS_ST,
A.FISCAL_BASECALCULO_ICMS_ST, A.FISCAL_ALIQUOTA_ICMS_ST, A.FISCAL_VALOR_ICMS_ST,
A.PEDIDO_CLIENTE,
A.INFORMACOES_COMPLEMENTARES, A.Nf_Consignacao, A.Nf_Consignacao_Item,
A.FCI_MENSAGEM, A.FCI_PARCELA_IMPORTACAO, A.FCI_CONTEUDO_IMPORTACAO, A.FCI_NUMERO,
A.enquadramento_ipi, A.ccusto, A.conta_contabil,

A.VBCUFDEST,
A.pFCPUFDest,
A.pICMSUFDest,
A.pICMSInter,
A.vFCPUFDest,
A.vICMSUFDest,
A.vICMSUFRemet,
A.pICMSInterPart,

QUANTIDADE_ALTERNATIVA,
UM_ALTERNATIVA,
VALOR_ALTERNATIVO,
A.REDUCAO_BASE_PISCOF

From TbNfs_Item A
where (A.NFS_CONTROLE = :CONTROLE_1)
order by A.SEQUENCIA
into
    :NFS_CONTROLE      ,:SEQUENCIA        ,:OPERACAO_CODIGO      ,:CFOP_CODIGO      ,
    :PRODUTO_CODIGO    ,:PRODUTO_DESCRICAO,:PRODUTO_UNIDADEMEDIDA,:GRADE_CODIGO     ,
    :NCM_CODIGO        ,:TRIBUTACAO_ICMS  ,:TRIBUTACAO_IPI       ,:TRIBUTACAO_ORIGEM,
    :LOCALIZACAO_CODIGO,:QUANTIDADE       ,:VALOR_UNITARIO       ,:VALOR_TOTAL      ,
    :BASECALCULO_ICMS  ,:PERCENTUAL_ICMS  ,:PERCENTUAL_IPI       ,:VALOR_IPI        ,
    :PERCENTUAL_PIS    ,:VALOR_PIS        ,:PERCENTUAL_COFINS ,:VALOR_COFINS        ,
    :NFE   ,:NFE_ITEM_CONTROLE,:NF_EXTERNO        ,:NF_EXTERNO_ITEM_CONTROLE        ,
    :PEDIDO,:PEDIDO_ITEM_PE_CONTROLE,
    :T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
    :T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,
    :ESTABELECIMENTO_CODIGO,:EMPRESA_CODIGO,:NUMERO_NOTAFISCAL,:DATA_EMISSAO,
    :SITUACAO,:CONTROLE,:VALOR_CUSTO,:PRODUTO_GRADE_CODIGO,:MODELO_CODIGO,
    :TECELAGEM,:tributacao_PIS, :tributacao_cofins,
    :VALOR_ICMS,:BASECALCULO_IPI,:BASECALCULO_PIS,:BASECALCULO_COFINS,

    :LOCALIZACAO_DESCRICAO,
    :VALOR_FRETE, :VALOR_SEGURO, :PESO_LIQUIDO, :PESO_BRUTO, :VOLUMES, :CUBAGEM,

    :VALOR_ACRESCIMO,:VALOR_DESCONTO,:FISCAL_ISENTAS_IPI,:FISCAL_ISENTAS_ICMS,
    :FISCAL_OUTRAS_IPI,:FISCAL_OUTRAS_ICMS,:FISCAL_VALOR_ICMS,:FISCAL_VALOR_IPI,
    :FISCAL_VALOR_PIS,:FISCAL_VALOR_COFINS,:FISCAL_PERCENTUAL_ICMS,:FISCAL_PERCENTUAL_IPI,
    :FISCAL_PERCENTUAL_PIS,:FISCAL_PERCENTUAL_COFINS,:FISCAL_BASECALCULO_ICMS,
    :FISCAL_BASECALCULO_IPI,:FISCAL_BASECALCULO_PIS,:FISCAL_BASECALCULO_COFINS,
    :VALOR_CONTABIL,:Valor_BaseCalculo_Icms,:FISCAL_CFOP_CODIGO,:FISCAL_TRIBUTACAO_ORIGEM,:FISCAL_TRIBUTACAO_ICMS,
    :FISCAL_TRIBUTACAO_IPI,:FISCAL_TRIBUTACAO_PIS,:FISCAL_TRIBUTACAO_COFINS,
    :MODALIDADE_ICMS, :MODALIDADE_ICMS_ST, :MARGEM_ICMS_ST, :REDUCAO_ICMS_ST,
    :BASECALCULO_ICMS_ST, :ALIQUOTA_ICMS_ST, :VALOR_ICMS_ST, :FISCAL_REDUCAO_ICMS_ST,
    :FISCAL_BASECALCULO_ICMS_ST, :FISCAL_ALIQUOTA_ICMS_ST, :FISCAL_VALOR_ICMS_ST,
    :PEDIDO_CLIENTE,
    :INFORMACOES_COMPLEMENTARES, :Nf_Consignacao, :Nf_Consignacao_Item,
    :FCI_MENSAGEM, :FCI_PARCELA_IMPORTACAO, :FCI_CONTEUDO_IMPORTACAO, :FCI_NUMERO,
    :enquadramento_ipi, :ccusto, :conta_contabil,
    :VBCUFDEST,:pFCPUFDest,:pICMSUFDest,:pICMSInter,:vFCPUFDest,:vICMSUFDest,:vICMSUFRemet,:pICMSInterPart,
    :QUANTIDADE_ALTERNATIVA, :UM_ALTERNATIVA, :VALOR_ALTERNATIVO, :REDUCAO_BASE_PISCOF

do suspend;
end
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPC_NFS_ITEM_ACUMULADO (
    CONTROLE_1 integer)
returns (
    NFS_CONTROLE integer,
    OPERACAO_CODIGO varchar(3),
    CFOP_CODIGO varchar(5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    NCM_CODIGO varchar(10),
    GRADE_CODIGO integer,
    TRIBUTACAO_ICMS integer,
    TRIBUTACAO_IPI varchar(2),
    TRIBUTACAO_ORIGEM integer,
    LOCALIZACAO_CODIGO integer,
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    BASECALCULO_ICMS numeric(10,5),
    PERCENTUAL_ICMS numeric(10,5),
    PERCENTUAL_IPI numeric(10,5),
    VALOR_IPI numeric(10,5),
    PERCENTUAL_PIS numeric(10,5),
    VALOR_PIS numeric(10,5),
    PERCENTUAL_COFINS numeric(10,5),
    VALOR_COFINS numeric(10,5),
    NFE integer,
    NFE_ITEM_CONTROLE integer,
    NF_EXTERNO integer,
    NF_EXTERNO_ITEM_CONTROLE integer,
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    ESTABELECIMENTO_CODIGO integer,
    EMPRESA_CODIGO integer,
    NUMERO_NOTAFISCAL integer,
    DATA_EMISSAO date,
    SITUACAO integer,
    VALOR_CUSTO numeric(10,5),
    SEQUENCIA integer,
    CONTROLE integer,
    PEDIDO integer,
    PEDIDO_ITEM_PE_CONTROLE integer,
    PRODUTO_GRADE_CODIGO integer,
    MODELO_CODIGO integer,
    TECELAGEM integer,
    TRIBUTACAO_PIS varchar(2),
    TRIBUTACAO_COFINS varchar(2),
    VALOR_ICMS numeric(10,2),
    BASECALCULO_IPI numeric(10,2),
    BASECALCULO_PIS numeric(10,2),
    BASECALCULO_COFINS numeric(10,2),
    LOCALIZACAO_DESCRICAO varchar(20),
    VALOR_FRETE numeric(10,2),
    VALOR_SEGURO numeric(10,2),
    PESO_LIQUIDO numeric(10,4),
    PESO_BRUTO numeric(10,4),
    VOLUMES integer,
    CUBAGEM numeric(10,4),
    VALOR_ACRESCIMO numeric(10,2),
    VALOR_DESCONTO numeric(10,2),
    FISCAL_ISENTAS_IPI numeric(10,2),
    FISCAL_ISENTAS_ICMS numeric(10,2),
    FISCAL_OUTRAS_IPI numeric(10,2),
    FISCAL_OUTRAS_ICMS numeric(10,2),
    FISCAL_VALOR_ICMS numeric(10,2),
    FISCAL_VALOR_IPI numeric(10,2),
    FISCAL_VALOR_PIS numeric(10,2),
    FISCAL_VALOR_COFINS numeric(10,2),
    FISCAL_PERCENTUAL_ICMS numeric(10,2),
    FISCAL_PERCENTUAL_IPI numeric(10,2),
    FISCAL_PERCENTUAL_PIS numeric(10,2),
    FISCAL_PERCENTUAL_COFINS numeric(10,2),
    FISCAL_BASECALCULO_ICMS numeric(10,5),
    FISCAL_BASECALCULO_IPI numeric(10,2),
    FISCAL_BASECALCULO_PIS numeric(10,2),
    FISCAL_BASECALCULO_COFINS numeric(10,2),
    VALOR_CONTABIL numeric(10,2),
    VALOR_BASECALCULO_ICMS numeric(10,2),
    FISCAL_CFOP_CODIGO varchar(5),
    FISCAL_TRIBUTACAO_ORIGEM integer,
    FISCAL_TRIBUTACAO_ICMS integer,
    FISCAL_TRIBUTACAO_IPI char(2),
    FISCAL_TRIBUTACAO_PIS char(2),
    FISCAL_TRIBUTACAO_COFINS char(2),
    MODALIDADE_ICMS char(1),
    MODALIDADE_ICMS_ST char(1),
    MARGEM_ICMS_ST numeric(15,4),
    REDUCAO_ICMS_ST numeric(15,4),
    BASECALCULO_ICMS_ST numeric(15,4),
    ALIQUOTA_ICMS_ST numeric(15,4),
    VALOR_ICMS_ST numeric(15,4),
    FISCAL_REDUCAO_ICMS_ST numeric(10,2),
    FISCAL_BASECALCULO_ICMS_ST numeric(10,2),
    FISCAL_ALIQUOTA_ICMS_ST numeric(10,2),
    FISCAL_VALOR_ICMS_ST numeric(10,2),
    PEDIDO_CLIENTE varchar(15),
    INFORMACOES_COMPLEMENTARES varchar(500),
    NF_CONSIGNACAO integer,
    NF_CONSIGNACAO_ITEM integer,
    FCI_MENSAGEM varchar(255),
    FCI_PARCELA_IMPORTACAO numeric(15,2),
    FCI_CONTEUDO_IMPORTACAO numeric(15,2),
    FCI_NUMERO varchar(40),
    ENQUADRAMENTO_IPI varchar(3),
    CCUSTO varchar(8),
    CONTA_CONTABIL varchar(11),
    VBCUFDEST numeric(15,2),
    PFCPUFDEST numeric(15,2),
    PICMSUFDEST numeric(15,2),
    PICMSINTER numeric(15,2),
    VFCPUFDEST numeric(15,2),
    VICMSUFDEST numeric(15,2),
    VICMSUFREMET numeric(15,2),
    PICMSINTERPART numeric(15,2),
    QUANTIDADE_ALTERNATIVA numeric(18,4),
    UM_ALTERNATIVA varchar(10),
    VALOR_ALTERNATIVO numeric(18,10),
    REDUCAO_BASE_PISCOF char(1))
as
BEGIN
FOR
Select Distinct(A.Nfs_Controle), A.Operacao_Codigo, A.Cfop_Codigo, A.Produto_Codigo,
A.Produto_Descricao, A.PRODUTO_UNIDADEMEDIDA, A.Ncm_Codigo, A.Grade_Codigo,
A.Tributacao_Icms,A.Tributacao_Ipi, A.Tributacao_Origem, A.Localizacao_Codigo,
Sum(A.Quantidade), A.Valor_Unitario, Sum(A.Valor_Total), A.BaseCalculo_Icms,
A.Percentual_Icms, A.Percentual_Ipi, Sum(A.Valor_Ipi), A.Percentual_Pis,
Sum(A.Valor_Pis), A.Percentual_Cofins, Sum(A.Valor_Cofins), A.Nfe,
A.Nfe_Item_Controle, A.Nf_Externo, A.Nf_Externo_Item_Controle,
Sum(A.T01),Sum(A.T02),Sum(A.T03),Sum(A.T04),Sum(A.T05),Sum(A.T06),Sum(A.T07),
Sum(A.T08),Sum(A.T09),Sum(A.T10),Sum(A.T11),Sum(A.T12),Sum(A.T13),Sum(A.T14),
Sum(A.T15),Sum(A.T16),Sum(A.T17),Sum(A.T18),Sum(A.T19),Sum(A.T20),
A.Estabelecimento_Codigo, A.Empresa_Codigo, A.Numero_NotaFiscal, A.Data_Emissao,
A.Situacao, A.Valor_Custo, Min(A.Sequencia),0,0,0,
Max((Select First 1 E.grade_codigo  From TbProduto E Where A.Produto_Codigo = E.Codigo)),
Max((Select First 1 E.modelo_codigo From TbProduto E Where A.Produto_Codigo = E.Codigo)),
A.Tecelagem,A.tributacao_PIS, A.Tributacao_Cofins,
SUM(A.VALOR_ICMS),SUM(A.BASECALCULO_IPI),SUM(A.BASECALCULO_PIS),SUM(A.BASECALCULO_COFINS),

Max((Select First 1 L.Descricao From TbLocalizacao L Where A.Localizacao_Codigo = L.Codigo)),
SUM(A.VALOR_FRETE), SUM(A.VALOR_SEGURO), SUM(A.PESO_LIQUIDO),
SUM(A.PESO_BRUTO), SUM(A.VOLUMES), SUM(A.CUBAGEM),

SUM(A.VALOR_ACRESCIMO),SUM(A.VALOR_DESCONTO),SUM(A.FISCAL_ISENTAS_IPI),SUM(A.FISCAL_ISENTAS_ICMS),
SUM(A.FISCAL_OUTRAS_IPI),SUM(A.FISCAL_OUTRAS_ICMS),SUM(A.FISCAL_VALOR_ICMS),SUM(A.FISCAL_VALOR_IPI),
SUM(A.FISCAL_VALOR_PIS),SUM(A.FISCAL_VALOR_COFINS),A.FISCAL_PERCENTUAL_ICMS,A.FISCAL_PERCENTUAL_IPI,
A.FISCAL_PERCENTUAL_PIS,A.FISCAL_PERCENTUAL_COFINS,A.FISCAL_BASECALCULO_ICMS,
SUM(A.FISCAL_BASECALCULO_IPI),SUM(A.FISCAL_BASECALCULO_PIS),SUM(A.FISCAL_BASECALCULO_COFINS),
Sum(A.VALOR_CONTABIL),Sum(A.Valor_BaseCalculo_Icms),A.FISCAL_CFOP_CODIGO,A.FISCAL_TRIBUTACAO_ORIGEM,A.FISCAL_TRIBUTACAO_ICMS,
A.FISCAL_TRIBUTACAO_IPI,A.FISCAL_TRIBUTACAO_PIS,A.FISCAL_TRIBUTACAO_COFINS,

A.MODALIDADE_ICMS, A.MODALIDADE_ICMS_ST, A.MARGEM_ICMS_ST, A.REDUCAO_ICMS_ST,
SUM(A.BASECALCULO_ICMS_ST), A.ALIQUOTA_ICMS_ST, SUM(A.VALOR_ICMS_ST),
A.FISCAL_REDUCAO_ICMS_ST, SUM(A.FISCAL_BASECALCULO_ICMS_ST),
A.FISCAL_ALIQUOTA_ICMS_ST, SUM(A.FISCAL_VALOR_ICMS_ST),

MAX(A.PEDIDO_CLIENTE), MAX(A.INFORMACOES_COMPLEMENTARES), A.Nf_Consignacao, A.Nf_Consignacao_Item,
A.FCI_MENSAGEM, A.FCI_PARCELA_IMPORTACAO, A.FCI_CONTEUDO_IMPORTACAO, A.FCI_NUMERO,
A.enquadramento_ipi, A.ccusto, A.conta_contabil,

Sum(A.VBCUFDEST),
A.pFCPUFDest,
A.pICMSUFDest,
A.pICMSInter,
Sum(A.vFCPUFDest),
Sum(A.vICMSUFDest),
Sum(A.vICMSUFRemet),
A.pICMSInterPart,

Sum(A.QUANTIDADE_ALTERNATIVA) QUANTIDADE_ALTERNATIVA,
A.UM_ALTERNATIVA,
A.VALOR_ALTERNATIVO,
REDUCAO_BASE_PISCOF

From TbNfs_Item A
Where A.Nfs_Controle > 0 and A.Nfs_Controle = :CONTROLE_1
Group By A.Nfs_Controle, A.Operacao_Codigo, A.Cfop_Codigo, A.Produto_Codigo,
A.Produto_Descricao, A.PRODUTO_UNIDADEMEDIDA, A.Ncm_Codigo, A.Grade_Codigo,
A.Tributacao_Icms, A.Tributacao_Ipi, A.Tributacao_Origem, A.Localizacao_Codigo,
A.Valor_Unitario, A.BaseCalculo_Icms, A.Percentual_Icms, A.Percentual_Ipi,
A.Percentual_Pis, A.Percentual_Cofins, A.Nfe, A.Nfe_Item_Controle, A.Nf_Externo,
A.Nf_Externo_Item_Controle, A.Estabelecimento_Codigo, A.Empresa_Codigo,
A.Numero_NotaFiscal, A.Data_Emissao, A.Situacao, A.Valor_Custo, A.Tecelagem,
A.tributacao_PIS, A.tributacao_cofins,A.FISCAL_PERCENTUAL_ICMS,A.FISCAL_PERCENTUAL_IPI,
A.FISCAL_PERCENTUAL_PIS,A.FISCAL_PERCENTUAL_COFINS,A.FISCAL_BASECALCULO_ICMS,
A.FISCAL_CFOP_CODIGO,A.FISCAL_TRIBUTACAO_ORIGEM,A.FISCAL_TRIBUTACAO_ICMS,
A.FISCAL_TRIBUTACAO_IPI,A.FISCAL_TRIBUTACAO_PIS,A.FISCAL_TRIBUTACAO_COFINS,

A.MODALIDADE_ICMS, A.MODALIDADE_ICMS_ST, A.MARGEM_ICMS_ST,
A.REDUCAO_ICMS_ST, A.ALIQUOTA_ICMS_ST,
A.FISCAL_REDUCAO_ICMS_ST, A.FISCAL_ALIQUOTA_ICMS_ST,
A.Nf_Consignacao, A.Nf_Consignacao_Item,
A.FCI_MENSAGEM, A.FCI_PARCELA_IMPORTACAO, A.FCI_CONTEUDO_IMPORTACAO, A.FCI_NUMERO,
A.enquadramento_ipi, A.ccusto, A.conta_contabil,
A.pFCPUFDest,A.pICMSUFDest,A.pICMSInter,A.pICMSInterPart,
A.UM_ALTERNATIVA,A.VALOR_ALTERNATIVO,REDUCAO_BASE_PISCOF


Order By 54, A.Nfs_Controle, A.Produto_Codigo
INTO
:Nfs_Controle,:Operacao_Codigo,:Cfop_Codigo,:Produto_Codigo,:Produto_Descricao,
:Produto_UnidadeMedida,:Ncm_Codigo,:Grade_Codigo,:Tributacao_Icms,:Tributacao_Ipi,
:Tributacao_Origem,:Localizacao_Codigo,:QUANTIDADE,:Valor_Unitario,:VALOR_TOTAL,
:BaseCalculo_Icms,:Percentual_Icms,:Percentual_Ipi,:VALOR_IPI,:Percentual_Pis,
:VALOR_PIS,:Percentual_Cofins,:VALOR_COFINS,:Nfe,:Nfe_Item_Controle,:Nf_Externo,
:Nf_Externo_Item_Controle,:T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
:T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,:Estabelecimento_Codigo,
:Empresa_Codigo,:Numero_NotaFiscal,:Data_Emissao,:Situacao,:Valor_Custo,
:Sequencia, :Controle, :Pedido, :Pedido_Item_Pe_Controle, :Produto_Grade_Codigo,
:modelo_codigo, :Tecelagem,:tributacao_PIS, :tributacao_cofins,
:VALOR_ICMS,:BASECALCULO_IPI,:BASECALCULO_PIS,:BASECALCULO_COFINS,

    :LOCALIZACAO_DESCRICAO,
    :VALOR_FRETE, :VALOR_SEGURO, :PESO_LIQUIDO, :PESO_BRUTO, :VOLUMES, :CUBAGEM,

:VALOR_ACRESCIMO,:VALOR_DESCONTO,:FISCAL_ISENTAS_IPI,:FISCAL_ISENTAS_ICMS,
:FISCAL_OUTRAS_IPI,:FISCAL_OUTRAS_ICMS,:FISCAL_VALOR_ICMS,:FISCAL_VALOR_IPI,
:FISCAL_VALOR_PIS,:FISCAL_VALOR_COFINS,:FISCAL_PERCENTUAL_ICMS,:FISCAL_PERCENTUAL_IPI,
:FISCAL_PERCENTUAL_PIS,:FISCAL_PERCENTUAL_COFINS,:FISCAL_BASECALCULO_ICMS,
:FISCAL_BASECALCULO_IPI,:FISCAL_BASECALCULO_PIS,:FISCAL_BASECALCULO_COFINS,
:VALOR_CONTABIL,:Valor_BaseCalculo_Icms,:FISCAL_CFOP_CODIGO,
:FISCAL_TRIBUTACAO_ORIGEM, :FISCAL_TRIBUTACAO_ICMS,:FISCAL_TRIBUTACAO_IPI,
:FISCAL_TRIBUTACAO_PIS, :FISCAL_TRIBUTACAO_COFINS,

:MODALIDADE_ICMS, :MODALIDADE_ICMS_ST, :MARGEM_ICMS_ST,
:REDUCAO_ICMS_ST, :BASECALCULO_ICMS_ST, :ALIQUOTA_ICMS_ST, :VALOR_ICMS_ST,
:FISCAL_REDUCAO_ICMS_ST, :FISCAL_BASECALCULO_ICMS_ST, :FISCAL_ALIQUOTA_ICMS_ST, :FISCAL_VALOR_ICMS_ST,
:PEDIDO_CLIENTE,
:INFORMACOES_COMPLEMENTARES, :Nf_Consignacao, :Nf_Consignacao_Item,
:FCI_MENSAGEM, :FCI_PARCELA_IMPORTACAO, :FCI_CONTEUDO_IMPORTACAO, :FCI_NUMERO,
:enquadramento_ipi, :ccusto, :conta_contabil,
:VBCUFDEST,:pFCPUFDest,:pICMSUFDest,:pICMSInter,:vFCPUFDest,:vICMSUFDest,:vICMSUFRemet,:pICMSInterPart,
:QUANTIDADE_ALTERNATIVA, :UM_ALTERNATIVA, :VALOR_ALTERNATIVO,:REDUCAO_BASE_PISCOF

DO
SUSPEND;
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPC_NFS_ITEM_ACUMULADO2 (
    CONTROLE_1 integer)
returns (
    NFS_CONTROLE integer,
    OPERACAO_CODIGO varchar(3),
    CFOP_CODIGO varchar(5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    NCM_CODIGO varchar(10),
    GRADE_CODIGO integer,
    TRIBUTACAO_ICMS integer,
    TRIBUTACAO_IPI varchar(2),
    TRIBUTACAO_ORIGEM integer,
    LOCALIZACAO_CODIGO integer,
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    BASECALCULO_ICMS numeric(10,5),
    PERCENTUAL_ICMS numeric(10,5),
    PERCENTUAL_IPI numeric(10,5),
    VALOR_IPI numeric(10,5),
    PERCENTUAL_PIS numeric(10,5),
    VALOR_PIS numeric(10,5),
    PERCENTUAL_COFINS numeric(10,5),
    VALOR_COFINS numeric(10,5),
    NFE integer,
    NFE_ITEM_CONTROLE integer,
    NF_EXTERNO integer,
    NF_EXTERNO_ITEM_CONTROLE integer,
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    ESTABELECIMENTO_CODIGO integer,
    EMPRESA_CODIGO integer,
    NUMERO_NOTAFISCAL integer,
    DATA_EMISSAO date,
    SITUACAO integer,
    VALOR_CUSTO numeric(10,5),
    SEQUENCIA integer,
    CONTROLE integer,
    PEDIDO integer,
    PEDIDO_ITEM_PE_CONTROLE integer,
    PRODUTO_GRADE_CODIGO integer,
    MODELO_CODIGO integer,
    TECELAGEM integer,
    TRIBUTACAO_PIS varchar(2),
    TRIBUTACAO_COFINS varchar(2),
    VALOR_ICMS numeric(10,2),
    BASECALCULO_IPI numeric(10,2),
    BASECALCULO_PIS numeric(10,2),
    BASECALCULO_COFINS numeric(10,2),
    LOCALIZACAO_DESCRICAO varchar(20),
    VALOR_FRETE numeric(10,2),
    VALOR_SEGURO numeric(10,2),
    PESO_LIQUIDO numeric(10,4),
    PESO_BRUTO numeric(10,4),
    VOLUMES integer,
    CUBAGEM numeric(10,4),
    VALOR_ACRESCIMO numeric(10,2),
    VALOR_DESCONTO numeric(10,2),
    FISCAL_ISENTAS_IPI numeric(10,2),
    FISCAL_ISENTAS_ICMS numeric(10,2),
    FISCAL_OUTRAS_IPI numeric(10,2),
    FISCAL_OUTRAS_ICMS numeric(10,2),
    FISCAL_VALOR_ICMS numeric(10,2),
    FISCAL_VALOR_IPI numeric(10,2),
    FISCAL_VALOR_PIS numeric(10,2),
    FISCAL_VALOR_COFINS numeric(10,2),
    FISCAL_PERCENTUAL_ICMS numeric(10,2),
    FISCAL_PERCENTUAL_IPI numeric(10,2),
    FISCAL_PERCENTUAL_PIS numeric(10,2),
    FISCAL_PERCENTUAL_COFINS numeric(10,2),
    FISCAL_BASECALCULO_ICMS numeric(10,5),
    FISCAL_BASECALCULO_IPI numeric(10,2),
    FISCAL_BASECALCULO_PIS numeric(10,2),
    FISCAL_BASECALCULO_COFINS numeric(10,2),
    VALOR_CONTABIL numeric(10,2),
    VALOR_BASECALCULO_ICMS numeric(10,2),
    FISCAL_CFOP_CODIGO varchar(5),
    FISCAL_TRIBUTACAO_ORIGEM integer,
    FISCAL_TRIBUTACAO_ICMS integer,
    FISCAL_TRIBUTACAO_IPI char(2),
    FISCAL_TRIBUTACAO_PIS char(2),
    FISCAL_TRIBUTACAO_COFINS char(2),
    MODALIDADE_ICMS char(1),
    MODALIDADE_ICMS_ST char(1),
    MARGEM_ICMS_ST numeric(15,4),
    REDUCAO_ICMS_ST numeric(15,4),
    BASECALCULO_ICMS_ST numeric(15,4),
    ALIQUOTA_ICMS_ST numeric(15,4),
    VALOR_ICMS_ST numeric(15,4),
    FISCAL_REDUCAO_ICMS_ST numeric(10,2),
    FISCAL_BASECALCULO_ICMS_ST numeric(10,2),
    FISCAL_ALIQUOTA_ICMS_ST numeric(10,2),
    FISCAL_VALOR_ICMS_ST numeric(10,2),
    PEDIDO_CLIENTE varchar(15),
    INFORMACOES_COMPLEMENTARES varchar(500),
    NF_CONSIGNACAO integer,
    NF_CONSIGNACAO_ITEM integer,
    FCI_MENSAGEM varchar(255),
    FCI_PARCELA_IMPORTACAO numeric(15,2),
    FCI_CONTEUDO_IMPORTACAO numeric(15,2),
    FCI_NUMERO varchar(40),
    ENQUADRAMENTO_IPI varchar(3),
    CCUSTO varchar(8),
    CONTA_CONTABIL varchar(11),
    VBCUFDEST numeric(15,2),
    PFCPUFDEST numeric(15,2),
    PICMSUFDEST numeric(15,2),
    PICMSINTER numeric(15,2),
    VFCPUFDEST numeric(15,2),
    VICMSUFDEST numeric(15,2),
    VICMSUFREMET numeric(15,2),
    PICMSINTERPART numeric(15,2),
    QUANTIDADE_ALTERNATIVA numeric(18,4),
    UM_ALTERNATIVA varchar(10),
    VALOR_ALTERNATIVO numeric(18,10),
    REDUCAO_BASE_PISCOF char(1))
as
BEGIN
FOR
Select Distinct(A.Nfs_Controle), A.Operacao_Codigo, A.Cfop_Codigo,
A.Produto_Codigo,
Max((Select First 1 (Case When char_length(Trim(M.Descricao_Nf)) > 0 Then M.Descricao_Nf else M.Descricao End) From TbModelo M Where E.Modelo_codigo = M.Codigo)) Produto_Descricao,
A.PRODUTO_UNIDADEMEDIDA, A.Ncm_Codigo, A.Grade_Codigo,
A.Tributacao_Icms,A.Tributacao_Ipi, A.Tributacao_Origem, A.Localizacao_Codigo,
Sum(A.Quantidade), A.Valor_Unitario, Sum(A.Valor_Total), A.BaseCalculo_Icms,
A.Percentual_Icms, A.Percentual_Ipi, Sum(A.Valor_Ipi), A.Percentual_Pis,
Sum(A.Valor_Pis), A.Percentual_Cofins, Sum(A.Valor_Cofins),
A.Nfe, A.Nfe_Item_Controle, A.Nf_Externo, A.Nf_Externo_Item_Controle,

Sum(A.T01),Sum(A.T02),Sum(A.T03),Sum(A.T04),Sum(A.T05),Sum(A.T06),Sum(A.T07),
Sum(A.T08),Sum(A.T09),Sum(A.T10),Sum(A.T11),Sum(A.T12),Sum(A.T13),Sum(A.T14),
Sum(A.T15),Sum(A.T16),Sum(A.T17),Sum(A.T18),Sum(A.T19),Sum(A.T20),
A.Estabelecimento_Codigo, A.Empresa_Codigo, A.Numero_NotaFiscal, A.Data_Emissao,
A.Situacao, A.Valor_Custo, Min(A.Sequencia),0,A.PEDIDO,A.pedido_item_pe_controle,E.Grade_codigo, E.Modelo_codigo,
A.Tecelagem,A.tributacao_PIS, A.Tributacao_Cofins,

SUM(A.VALOR_ICMS),SUM(A.BASECALCULO_IPI),SUM(A.BASECALCULO_PIS),SUM(A.BASECALCULO_COFINS),
Max((Select First 1 L.Descricao From TbLocalizacao L Where A.Localizacao_Codigo = L.Codigo)),
SUM(A.VALOR_FRETE), SUM(A.VALOR_SEGURO), SUM(A.PESO_LIQUIDO),
SUM(A.PESO_BRUTO), SUM(A.VOLUMES), SUM(A.CUBAGEM),
SUM(A.VALOR_ACRESCIMO),SUM(A.VALOR_DESCONTO),SUM(A.FISCAL_ISENTAS_IPI),SUM(A.FISCAL_ISENTAS_ICMS),
SUM(A.FISCAL_OUTRAS_IPI),SUM(A.FISCAL_OUTRAS_ICMS),SUM(A.FISCAL_VALOR_ICMS),SUM(A.FISCAL_VALOR_IPI),
SUM(A.FISCAL_VALOR_PIS),SUM(A.FISCAL_VALOR_COFINS),A.FISCAL_PERCENTUAL_ICMS,A.FISCAL_PERCENTUAL_IPI,
A.FISCAL_PERCENTUAL_PIS,A.FISCAL_PERCENTUAL_COFINS,A.FISCAL_BASECALCULO_ICMS,
SUM(A.FISCAL_BASECALCULO_IPI),SUM(A.FISCAL_BASECALCULO_PIS),SUM(A.FISCAL_BASECALCULO_COFINS),
Sum(A.VALOR_CONTABIL),Sum(A.Valor_BaseCalculo_Icms ),A.FISCAL_CFOP_CODIGO,A.FISCAL_TRIBUTACAO_ORIGEM,A.FISCAL_TRIBUTACAO_ICMS,
A.FISCAL_TRIBUTACAO_IPI,A.FISCAL_TRIBUTACAO_PIS,A.FISCAL_TRIBUTACAO_COFINS,

A.MODALIDADE_ICMS, A.MODALIDADE_ICMS_ST, A.MARGEM_ICMS_ST,
A.REDUCAO_ICMS_ST, SUM(A.BASECALCULO_ICMS_ST), A.ALIQUOTA_ICMS_ST, SUM(A.VALOR_ICMS_ST),
A.FISCAL_REDUCAO_ICMS_ST, SUM(A.FISCAL_BASECALCULO_ICMS_ST), A.FISCAL_ALIQUOTA_ICMS_ST, SUM(A.FISCAL_VALOR_ICMS_ST),

(A.PEDIDO_CLIENTE), MAX(A.INFORMACOES_COMPLEMENTARES), A.Nf_Consignacao, A.Nf_Consignacao_Item,
A.FCI_MENSAGEM, A.FCI_PARCELA_IMPORTACAO, A.FCI_CONTEUDO_IMPORTACAO, A.FCI_NUMERO,
A.enquadramento_ipi, A.ccusto, A.conta_contabil,

Sum(A.VBCUFDEST),
A.pFCPUFDest,
A.pICMSUFDest,
A.pICMSInter,
Sum(A.vFCPUFDest),
Sum(A.vICMSUFDest),
Sum(A.vICMSUFRemet),
A.pICMSInterPart,

A.QUANTIDADE_ALTERNATIVA,
A.UM_ALTERNATIVA,
A.VALOR_ALTERNATIVO,
A.REDUCAO_BASE_PISCOF

From TbNfs_Item A, TbProduto E
Where A.Produto_Codigo = E.Codigo
  and A.Nfs_Controle > 0 and A.Nfs_Controle = :CONTROLE_1

Group By A.Nfs_Controle, A.Operacao_Codigo, A.Cfop_Codigo, A.PRODUTO_CODIGO,
A.PRODUTO_UNIDADEMEDIDA, A.Ncm_Codigo, A.Grade_Codigo,
A.Tributacao_Icms, A.Tributacao_Ipi, A.Tributacao_Origem, A.Localizacao_Codigo,
A.Valor_Unitario, A.BaseCalculo_Icms, A.Percentual_Icms, A.Percentual_Ipi,
A.Percentual_Pis, A.Percentual_Cofins, A.Nfe, A.Nfe_Item_Controle, A.Nf_Externo,
A.Nf_Externo_Item_Controle, A.Estabelecimento_Codigo, A.Empresa_Codigo,
A.Numero_NotaFiscal, A.Data_Emissao, A.Situacao, A.Valor_Custo,
E.Grade_codigo, E.Modelo_codigo, A.Tecelagem,
A.tributacao_PIS, A.tributacao_cofins,A.FISCAL_PERCENTUAL_ICMS,A.FISCAL_PERCENTUAL_IPI,
A.FISCAL_PERCENTUAL_PIS,A.FISCAL_PERCENTUAL_COFINS,A.FISCAL_BASECALCULO_ICMS,
A.FISCAL_CFOP_CODIGO,A.FISCAL_TRIBUTACAO_ORIGEM,A.FISCAL_TRIBUTACAO_ICMS,
A.FISCAL_TRIBUTACAO_IPI,A.FISCAL_TRIBUTACAO_PIS,A.FISCAL_TRIBUTACAO_COFINS,
A.PEDIDO,A.PEDIDO_CLIENTE,A.pedido_item_pe_controle,
A.MODALIDADE_ICMS, A.MODALIDADE_ICMS_ST, A.MARGEM_ICMS_ST,
A.REDUCAO_ICMS_ST, A.ALIQUOTA_ICMS_ST,
A.FISCAL_REDUCAO_ICMS_ST, A.FISCAL_ALIQUOTA_ICMS_ST,
A.Nf_Consignacao, A.Nf_Consignacao_Item,
A.FCI_MENSAGEM, A.FCI_PARCELA_IMPORTACAO, A.FCI_CONTEUDO_IMPORTACAO, A.FCI_NUMERO,
A.enquadramento_ipi, A.ccusto, A.conta_contabil,
A.pFCPUFDest,A.pICMSUFDest,A.pICMSInter,A.pICMSInterPart,
A.QUANTIDADE_ALTERNATIVA, A.UM_ALTERNATIVA, A.VALOR_ALTERNATIVO, A.REDUCAO_BASE_PISCOF

Order By 54, A.Nfs_Controle, A.PRODUTO_CODIGO 
INTO
:Nfs_Controle,:Operacao_Codigo,:Cfop_Codigo,:Produto_Codigo,:Produto_Descricao,
:Produto_UnidadeMedida,:Ncm_Codigo,:Grade_Codigo,:Tributacao_Icms,:Tributacao_Ipi,
:Tributacao_Origem,:Localizacao_Codigo,:QUANTIDADE,:Valor_Unitario,:VALOR_TOTAL,
:BaseCalculo_Icms,:Percentual_Icms,:Percentual_Ipi,:VALOR_IPI,:Percentual_Pis,
:VALOR_PIS,:Percentual_Cofins,:VALOR_COFINS,:Nfe,:Nfe_Item_Controle,:Nf_Externo,
:Nf_Externo_Item_Controle,:T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
:T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,:Estabelecimento_Codigo,
:Empresa_Codigo,:Numero_NotaFiscal,:Data_Emissao,:Situacao,:Valor_Custo,
:Sequencia, :Controle, :Pedido, :Pedido_Item_Pe_Controle, :Produto_Grade_Codigo,
:modelo_codigo, :Tecelagem,:tributacao_PIS, :tributacao_cofins,
:VALOR_ICMS,:BASECALCULO_IPI,:BASECALCULO_PIS,:BASECALCULO_COFINS,

    :LOCALIZACAO_DESCRICAO,
    :VALOR_FRETE, :VALOR_SEGURO, :PESO_LIQUIDO, :PESO_BRUTO, :VOLUMES, :CUBAGEM,

:VALOR_ACRESCIMO,:VALOR_DESCONTO,:FISCAL_ISENTAS_IPI,:FISCAL_ISENTAS_ICMS,
:FISCAL_OUTRAS_IPI,:FISCAL_OUTRAS_ICMS,:FISCAL_VALOR_ICMS,:FISCAL_VALOR_IPI,
:FISCAL_VALOR_PIS,:FISCAL_VALOR_COFINS,:FISCAL_PERCENTUAL_ICMS,:FISCAL_PERCENTUAL_IPI,
:FISCAL_PERCENTUAL_PIS,:FISCAL_PERCENTUAL_COFINS,:FISCAL_BASECALCULO_ICMS,
:FISCAL_BASECALCULO_IPI,:FISCAL_BASECALCULO_PIS,:FISCAL_BASECALCULO_COFINS,
:VALOR_CONTABIL,:Valor_BaseCalculo_Icms,:FISCAL_CFOP_CODIGO,
:FISCAL_TRIBUTACAO_ORIGEM, :FISCAL_TRIBUTACAO_ICMS,:FISCAL_TRIBUTACAO_IPI,
:FISCAL_TRIBUTACAO_PIS, :FISCAL_TRIBUTACAO_COFINS,

:MODALIDADE_ICMS, :MODALIDADE_ICMS_ST, :MARGEM_ICMS_ST,
:REDUCAO_ICMS_ST, :BASECALCULO_ICMS_ST, :ALIQUOTA_ICMS_ST, :VALOR_ICMS_ST,
:FISCAL_REDUCAO_ICMS_ST, :FISCAL_BASECALCULO_ICMS_ST, :FISCAL_ALIQUOTA_ICMS_ST, :FISCAL_VALOR_ICMS_ST,
:PEDIDO_CLIENTE,
:INFORMACOES_COMPLEMENTARES, :Nf_Consignacao, :Nf_Consignacao_Item,
:FCI_MENSAGEM, :FCI_PARCELA_IMPORTACAO, :FCI_CONTEUDO_IMPORTACAO, :FCI_NUMERO,
:enquadramento_ipi, :ccusto, :conta_contabil,
:VBCUFDEST,:pFCPUFDest,:pICMSUFDest,:pICMSInter,:vFCPUFDest,:vICMSUFDest,
:vICMSUFRemet,:pICMSInterPart,:QUANTIDADE_ALTERNATIVA, :UM_ALTERNATIVA,
:VALOR_ALTERNATIVO,:REDUCAO_BASE_PISCOF

DO
SUSPEND;
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPC_NFS_ROMANEIO (
    CONTROLE_1 integer)
returns (
    NFS_CONTROLE integer,
    NFS_ITEM_CONTROLE integer,
    SEQUENCIA integer,
    NUMERO_NOTAFISCAL integer,
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    QUANTIDADE numeric(10,5),
    OBSERVACAO varchar(50),
    LARGURA numeric(10,5),
    PESO numeric(10,5),
    MULTIPLICADOR integer)
as
BEGIN
FOR
Select A.NFS_CONTROLE, A.NFS_ITEM_CONTROLE, A.SEQUENCIA, A.NUMERO_NOTAFISCAL,
  A.PRODUTO_CODIGO, A.PRODUTO_DESCRICAO, A.PRODUTO_UNIDADEMEDIDA, A.QUANTIDADE,
  A.OBSERVACAO,A.LARGURA,A.PESO,A.MULTIPLICADOR
 From TbNfs_Item_Romaneio A
Where Nfs_Controle > 0 and Nfs_Controle = :CONTROLE_1

INTO :NFS_CONTROLE,
  :NFS_ITEM_CONTROLE,
  :SEQUENCIA,
  :NUMERO_NOTAFISCAL,
  :PRODUTO_CODIGO,
  :PRODUTO_DESCRICAO,
  :PRODUTO_UNIDADEMEDIDA,
  :QUANTIDADE,
  :OBSERVACAO,
  :LARGURA,
  :PESO,
  :MULTIPLICADOR
DO SUSPEND;
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPC_REL_NFE_EMPRESA_ITEM (
    CONTROLE_1 integer,
    CFOP_CODIGO_T varchar(5),
    CFOP_CODIGO_1 varchar(5),
    CFOP_CODIGO_2 varchar(5),
    CFOP_CODIGO_3 varchar(5),
    CFOP_CODIGO_4 varchar(5),
    CFOP_CODIGO_5 varchar(5),
    CFOP_CODIGO_6 varchar(5),
    CFOP_CODIGO_7 varchar(5),
    CFOP_CODIGO_8 varchar(5),
    CFOP_CODIGO_9 varchar(5),
    CFOP_CODIGO_10 varchar(5))
returns (
    OPERACAO_CODIGO varchar(3),
    CFOP_CODIGO varchar(5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    SEQUENCIA integer,
    GRADE_CODIGO integer)
as
BEGIN
FOR Select B.OPERACAO_CODIGO, B.CFOP_CODIGO, B.PRODUTO_CODIGO, B.PRODUTO_DESCRICAO,
       B.PRODUTO_UNIDADEMEDIDA, B.QUANTIDADE, B.VALOR_UNITARIO, B.VALOR_TOTAL,
       B.T01,B.T02,B.T03,B.T04,B.T05,B.T06,B.T07,B.T08,B.T09,B.T10,
       B.T11,B.T12,B.T13,B.T14,B.T15,B.T16,B.T17,B.T18,B.T19,B.T20,
       B.SEQUENCIA,(Select C.GRADE_CODIGO From Tbproduto C Where B.Produto_Codigo = C.Codigo)

From TbNfe_Item     B
Inner Join TbNfe     A On B.Nfe_Controle   = A.Controle
Where  B.Nfe_Controle = :CONTROLE_1
  and (B.Cfop_Codigo <>:CFOP_CODIGO_T or
       B.Cfop_Codigo = :CFOP_CODIGO_1 or
       B.Cfop_Codigo = :CFOP_CODIGO_2 or
       B.Cfop_Codigo = :CFOP_CODIGO_3 or
       B.Cfop_Codigo = :CFOP_CODIGO_4 or
       B.Cfop_Codigo = :CFOP_CODIGO_5 or
       B.Cfop_Codigo = :CFOP_CODIGO_6 or
       B.Cfop_Codigo = :CFOP_CODIGO_7 or
       B.Cfop_Codigo = :CFOP_CODIGO_8 or
       B.Cfop_Codigo = :CFOP_CODIGO_9 or
       B.Cfop_Codigo = :CFOP_CODIGO_10)
Order By B.SEQUENCIA

INTO
   :OPERACAO_CODIGO,
   :CFOP_CODIGO,
   :PRODUTO_CODIGO,
   :PRODUTO_DESCRICAO,
   :PRODUTO_UNIDADEMEDIDA,
   :QUANTIDADE,
   :VALOR_UNITARIO,
   :VALOR_TOTAL,
   :T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
   :T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,
   :SEQUENCIA,
   :GRADE_CODIGO
DO SUSPEND;
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPC_REL_NFS_ITEM_ROMANEIO (
    CONTROLE_1 integer)
returns (
    NFS_CONTROLE integer,
    NFS_ITEM_CONTROLE integer,
    SEQUENCIA integer,
    NUMERO_NOTAFISCAL integer,
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    QUANTIDADE numeric(10,5),
    OBSERVACAO varchar(50),
    LARGURA numeric(10,5),
    PESO numeric(10,5),
    MULTIPLICADOR integer)
as
BEGIN
FOR Select A.NFS_CONTROLE,A.NFS_ITEM_CONTROLE,A.SEQUENCIA,A.NUMERO_NOTAFISCAL,
    A.PRODUTO_CODIGO,A.PRODUTO_DESCRICAO,A.PRODUTO_UNIDADEMEDIDA,A.QUANTIDADE,
    A.OBSERVACAO,A.LARGURA,A.PESO,A.MULTIPLICADOR

From TbNfs_Item_Romaneio A
Where (A.NFS_ITEM_CONTROLE  = :CONTROLE_1)
Order By A.Sequencia
Into
    :NFS_CONTROLE,
    :NFS_ITEM_CONTROLE,
    :SEQUENCIA,
    :NUMERO_NOTAFISCAL,
    :PRODUTO_CODIGO,
    :PRODUTO_DESCRICAO,
    :PRODUTO_UNIDADEMEDIDA,
    :QUANTIDADE,
    :OBSERVACAO,
    :LARGURA,
    :PESO,
    :MULTIPLICADOR
DO SUSPEND;
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPC_REL_NFS_ROMANEIO_NF (
    ESTABELECIMENTO_1 integer,
    EMPRESA_1 integer,
    TRANSPORTADORA_T integer,
    TRANSPORTADORA_1 integer,
    DATA_T date,
    DATA_1 date,
    NOTAFISCAL_1 integer,
    NOTAFISCAL_2 integer,
    SERIE_1 varchar(3),
    CFOP1 varchar(5),
    CFOP2 varchar(5),
    CFOP3 varchar(5),
    CFOP4 varchar(5),
    CFOP5 varchar(5))
returns (
    DATA_EMISSAO date,
    NUMERO_NOTAFISCAL integer,
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    QUANTIDADE numeric(10,5),
    PEDIDO varchar(20),
    NFE integer,
    NF_EXTERNO integer,
    CFOP_CODIGO varchar(5))
as
BEGIN
FOR Select B.DATA_EMISSAO, B.NUMERO_NOTAFISCAL, C.PRODUTO_CODIGO, C.PRODUTO_DESCRICAO,
       C.PRODUTO_UNIDADEMEDIDA, C.QUANTIDADE,
       (select D.PEDIDO_CLIENTE FROM tbpedido D WHERE C.PEDIDO = D.PEDIDO),
       C.NFE, C.NF_EXTERNO, C.CFOP_CODIGO
From TbNfs B, TbNfs_Item C, TbNfs_Transportadora A
Where  B.Controle = C.Nfs_Controle
  and  B.Controle = A.Nfs_Controle
  and (B.Situacao < 3)
  and (A.Transportadora_Codigo > 0)
  and (B.Estabelecimento_Codigo  = :ESTABELECIMENTO_1)
  and (A.Transportadora_Codigo  >= :TRANSPORTADORA_T or
       A.Transportadora_Codigo   = :TRANSPORTADORA_1)
  and (B.Empresa_Codigo          = :EMPRESA_1)
  and (B.Data_Emissao            > :DATA_T OR
       B.Data_Emissao            = :DATA_1   )
  and (B.Numero_NotaFiscal between :NOTAFISCAL_1 and :NOTAFISCAL_2)
  and (B.Serie like :SERIE_1)
  and (C.Cfop_Codigo Like :Cfop1 or
       C.Cfop_Codigo Like :Cfop2 or
       C.Cfop_Codigo Like :Cfop3 or
       C.Cfop_Codigo Like :Cfop4 or
       C.Cfop_Codigo Like :Cfop5)

Order By B.NUMERO_NOTAFISCAL
Into
    :DATA_EMISSAO  ,
    :NUMERO_NOTAFISCAL ,
    :PRODUTO_CODIGO  ,
    :PRODUTO_DESCRICAO ,
    :PRODUTO_UNIDADEMEDIDA ,
    :QUANTIDADE ,
    :PEDIDO ,
    :NFE ,
    :NF_EXTERNO,
    :CFOP_CODIGO
DO SUSPEND;
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPI_NFE_ITEM10 (
    NFE_CONTROLE integer,
    ESTABELECIMENTO_CODIGO integer,
    EMPRESA_CODIGO integer,
    NUMERO_NOTAFISCAL integer,
    DATA_ENTRADA date,
    SITUACAO integer,
    NFS integer,
    NFS_ITEM_CONTROLE integer,
    OC integer,
    OC_ITEM_CONTROLE integer,
    NF_EXTERNO integer,
    NF_EXTERNO_ITEM_CONTROLE integer,
    CONTROLE integer,
    SEQUENCIA integer,
    OPERACAO_CODIGO varchar(3),
    CFOP_CODIGO varchar(5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    NCM_CODIGO varchar(10),
    TRIBUTACAO_ORIGEM integer,
    TRIBUTACAO_IPI varchar(2),
    TRIBUTACAO_ICMS integer,
    TRIBUTACAO_PIS char(2),
    TRIBUTACAO_COFINS char(2),
    LOCALIZACAO_CODIGO integer,
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_CUSTO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    BASECALCULO_ICMS numeric(10,5),
    PERCENTUAL_ICMS numeric(10,5),
    PERCENTUAL_IPI numeric(10,5),
    VALOR_IPI numeric(10,5),
    PERCENTUAL_PIS numeric(10,5),
    VALOR_PIS numeric(10,5),
    PERCENTUAL_COFINS numeric(10,5),
    VALOR_COFINS numeric(10,5),
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    DI varchar(12),
    DI_DATA_REGISTRO date,
    DI_DATA_DESEMBARACO date,
    DI_LOCAL_DESEMBARACO varchar(60),
    DI_UF_DESEMBARACO char(2),
    DI_CODIGO_EXPORTADOR varchar(60),
    DI_ADICAO integer,
    DI_SEQUENCIAL integer,
    DI_CODIGO_FABRICANTE varchar(60),
    DI_DESCONTO_ADICAO numeric(10,2),
    DI_BASE_CALCULO numeric(10,2),
    DI_DESPESAS_ADUANEIRAS numeric(10,2),
    DI_VALOR_II numeric(10,2),
    DI_VALOR_IOF numeric(10,2),
    VALOR_ICMS numeric(10,2),
    BASECALCULO_IPI numeric(10,2),
    BASECALCULO_PIS numeric(10,2),
    BASECALCULO_COFINS numeric(10,2),
    VALOR_ACRESCIMO numeric(10,2),
    VALOR_FRETE numeric(10,2),
    VALOR_SEGURO numeric(10,2),
    VALOR_DESCONTO numeric(10,2),
    FISCAL_ISENTAS_IPI numeric(10,2),
    FISCAL_ISENTAS_ICMS numeric(10,2),
    FISCAL_OUTRAS_IPI numeric(10,2),
    FISCAL_OUTRAS_ICMS numeric(10,2),
    FISCAL_VALOR_ICMS numeric(10,2),
    FISCAL_VALOR_IPI numeric(10,2),
    FISCAL_VALOR_PIS numeric(10,2),
    FISCAL_VALOR_COFINS numeric(10,2),
    FISCAL_PERCENTUAL_ICMS numeric(10,2),
    FISCAL_PERCENTUAL_IPI numeric(10,2),
    FISCAL_PERCENTUAL_PIS numeric(10,2),
    FISCAL_PERCENTUAL_COFINS numeric(10,2),
    FISCAL_BASECALCULO_ICMS numeric(10,5),
    FISCAL_BASECALCULO_IPI numeric(10,2),
    FISCAL_BASECALCULO_PIS numeric(10,2),
    FISCAL_BASECALCULO_COFINS numeric(10,2),
    VALOR_PEDAGIO numeric(10,2),
    VALOR_CONTABIL numeric(10,2),
    VALOR_BASECALCULO_ICMS numeric(10,2),
    BASECALCULO_FCI numeric(15,4),
    CODIGO_FCI varchar(50),
    FISCAL_CFOP_CODIGO varchar(5),
    FISCAL_TRIBUTACAO_ORIGEM integer,
    FISCAL_TRIBUTACAO_ICMS integer,
    FISCAL_TRIBUTACAO_IPI char(2),
    FISCAL_TRIBUTACAO_PIS char(2),
    FISCAL_TRIBUTACAO_COFINS char(2),
    MODALIDADE_ICMS char(1),
    MODALIDADE_ICMS_ST char(1),
    MARGEM_ICMS_ST numeric(15,4),
    REDUCAO_ICMS_ST numeric(15,4),
    BASECALCULO_ICMS_ST numeric(15,4),
    ALIQUOTA_ICMS_ST numeric(15,4),
    VALOR_ICMS_ST numeric(15,4),
    FISCAL_REDUCAO_ICMS_ST numeric(10,2),
    FISCAL_BASECALCULO_ICMS_ST numeric(10,2),
    FISCAL_ALIQUOTA_ICMS_ST numeric(10,2),
    FISCAL_VALOR_ICMS_ST numeric(10,2),
    INFORMACOES_COMPLEMENTARES varchar(200),
    DI_NVE varchar(60),
    DI_TIPO_VIA_TRANSP integer,
    DI_VALOR_AFRMM numeric(15,2),
    DI_TIPO_INTERMEDIO varchar(1),
    DI_CNPJ_INTERMEDIO varchar(14),
    DI_UF_INTERMEDIO varchar(2),
    DI_NUMERO_DRAWBACK varchar(11),
    CCUSTO varchar(8),
    CONTA_CONTABIL varchar(11),
    ENQUADRAMENTO_IPI varchar(3),
    QUANTIDADE_ALTERNATIVA numeric(18,4),
    UM_ALTERNATIVA varchar(10),
    VALOR_ALTERNATIVO numeric(18,10),
    REDUCAO_BASE_PISCOF char(1))
as
BEGIN
INSERT INTO TbNfe_Item  (
Nfe_Controle,Estabelecimento_Codigo,Empresa_Codigo,Numero_NotaFiscal,Data_Entrada,Situacao,
Nfs,Nfs_Item_Controle,OC,OC_Item_Controle,Nf_Externo,Nf_Externo_Item_Controle             ,
Controle,Sequencia,Operacao_Codigo,Cfop_Codigo,Produto_Codigo,Produto_Descricao           ,
PRODUTO_UNIDADEMEDIDA,Ncm_Codigo,Tributacao_Origem,Tributacao_Ipi,Tributacao_Icms         ,
Tributacao_Pis,Tributacao_Cofins                                                          ,
Localizacao_Codigo,Quantidade,Valor_Unitario,Valor_Custo,Valor_Total,BaseCalculo_Icms,Percentual_Icms ,
Percentual_Ipi,Valor_Ipi,Percentual_Pis,Valor_Pis,Percentual_Cofins,Valor_Cofins          ,
T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,
DI,DI_DATA_REGISTRO,DI_DATA_DESEMBARACO,DI_LOCAL_DESEMBARACO,DI_UF_DESEMBARACO,
DI_CODIGO_EXPORTADOR,DI_ADICAO,DI_SEQUENCIAL,DI_CODIGO_FABRICANTE,DI_DESCONTO_ADICAO,
di_base_calculo,di_despesas_aduaneiras,di_valor_ii,di_valor_iof,
VALOR_ICMS,BASECALCULO_IPI,BASECALCULO_PIS,BASECALCULO_COFINS,
VALOR_ACRESCIMO,VALOR_FRETE,VALOR_SEGURO,VALOR_DESCONTO,FISCAL_ISENTAS_IPI,
FISCAL_ISENTAS_ICMS,FISCAL_OUTRAS_IPI,FISCAL_OUTRAS_ICMS,FISCAL_VALOR_ICMS,FISCAL_VALOR_IPI,
FISCAL_VALOR_PIS,FISCAL_VALOR_COFINS,FISCAL_PERCENTUAL_ICMS,FISCAL_PERCENTUAL_IPI,
FISCAL_PERCENTUAL_PIS,FISCAL_PERCENTUAL_COFINS,FISCAL_BASECALCULO_ICMS,
FISCAL_BASECALCULO_IPI,FISCAL_BASECALCULO_PIS,FISCAL_BASECALCULO_COFINS,
VALOR_PEDAGIO, VALOR_CONTABIL, valor_basecalculo_icms, basecalculo_FCI, CODIGO_FCI,
FISCAL_CFOP_CODIGO,FISCAL_TRIBUTACAO_ORIGEM,
FISCAL_TRIBUTACAO_ICMS,FISCAL_TRIBUTACAO_IPI,FISCAL_TRIBUTACAO_PIS,FISCAL_TRIBUTACAO_COFINS,
MODALIDADE_ICMS, MODALIDADE_ICMS_ST, MARGEM_ICMS_ST,
REDUCAO_ICMS_ST, BASECALCULO_ICMS_ST, ALIQUOTA_ICMS_ST, VALOR_ICMS_ST,
FISCAL_REDUCAO_ICMS_ST, FISCAL_BASECALCULO_ICMS_ST, FISCAL_ALIQUOTA_ICMS_ST, FISCAL_VALOR_ICMS_ST,
INFORMACOES_COMPLEMENTARES, DI_NVE, DI_TIPO_VIA_TRANSP, DI_VALOR_AFRMM,
DI_TIPO_INTERMEDIO, DI_CNPJ_INTERMEDIO, DI_UF_INTERMEDIO, DI_NUMERO_DRAWBACK,
CCUSTO, CONTA_CONTABIL, Enquadramento_Ipi,
QUANTIDADE_ALTERNATIVA, UM_ALTERNATIVA, VALOR_ALTERNATIVO,
REDUCAO_BASE_PISCOF)
VALUES  (
:Nfe_Controle,:Estabelecimento_Codigo,:Empresa_Codigo,:Numero_NotaFiscal,
:Data_Entrada,:Situacao,:Nfs,:Nfs_Item_Controle,:OC,:OC_Item_Controle,
:Nf_Externo,:Nf_Externo_Item_Controle,:Controle,:Sequencia,:Operacao_Codigo,:Cfop_Codigo,
:Produto_Codigo,:Produto_Descricao,:Produto_UnidadeMedida,:Ncm_Codigo,:Tributacao_Origem,
:Tributacao_Ipi,:Tributacao_Icms,:Tributacao_Pis,:Tributacao_Cofins,:Localizacao_Codigo,
:Quantidade,:Valor_Unitario,:Valor_Custo,:Valor_Total,:BaseCalculo_Icms,:Percentual_Icms,
:Percentual_Ipi,:Valor_Ipi,:Percentual_Pis,:Valor_Pis,:Percentual_Cofins,
:Valor_Cofins,:T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
:T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,
:DI,:DI_DATA_REGISTRO,:DI_DATA_DESEMBARACO,:DI_LOCAL_DESEMBARACO,:DI_UF_DESEMBARACO,
:DI_CODIGO_EXPORTADOR,:DI_ADICAO,:DI_SEQUENCIAL,:DI_CODIGO_FABRICANTE,:DI_DESCONTO_ADICAO,
:di_base_calculo,:di_despesas_aduaneiras,:di_valor_ii,:di_valor_iof,
:VALOR_ICMS,:BASECALCULO_IPI,:BASECALCULO_PIS,:BASECALCULO_COFINS,
:VALOR_ACRESCIMO,:VALOR_FRETE,:VALOR_SEGURO,:VALOR_DESCONTO,:FISCAL_ISENTAS_IPI,:FISCAL_ISENTAS_ICMS,
:FISCAL_OUTRAS_IPI,:FISCAL_OUTRAS_ICMS,:FISCAL_VALOR_ICMS,:FISCAL_VALOR_IPI,
:FISCAL_VALOR_PIS,:FISCAL_VALOR_COFINS,:FISCAL_PERCENTUAL_ICMS,:FISCAL_PERCENTUAL_IPI,
:FISCAL_PERCENTUAL_PIS,:FISCAL_PERCENTUAL_COFINS,:FISCAL_BASECALCULO_ICMS,
:FISCAL_BASECALCULO_IPI,:FISCAL_BASECALCULO_PIS,:FISCAL_BASECALCULO_COFINS,
:VALOR_PEDAGIO, :VALOR_CONTABIL, :valor_basecalculo_icms, :basecalculo_FCI, :CODIGO_FCI,
:FISCAL_CFOP_CODIGO,:FISCAL_TRIBUTACAO_ORIGEM,
:FISCAL_TRIBUTACAO_ICMS,:FISCAL_TRIBUTACAO_IPI,:FISCAL_TRIBUTACAO_PIS,
:FISCAL_TRIBUTACAO_COFINS,:MODALIDADE_ICMS, :MODALIDADE_ICMS_ST, :MARGEM_ICMS_ST,
:REDUCAO_ICMS_ST, :BASECALCULO_ICMS_ST, :ALIQUOTA_ICMS_ST, :VALOR_ICMS_ST,
:FISCAL_REDUCAO_ICMS_ST, :FISCAL_BASECALCULO_ICMS_ST, :FISCAL_ALIQUOTA_ICMS_ST, :FISCAL_VALOR_ICMS_ST,
:INFORMACOES_COMPLEMENTARES, :DI_NVE, :DI_TIPO_VIA_TRANSP, :DI_VALOR_AFRMM,
:DI_TIPO_INTERMEDIO, :DI_CNPJ_INTERMEDIO, :DI_UF_INTERMEDIO, :DI_NUMERO_DRAWBACK,
:CCUSTO, :CONTA_CONTABIL, :Enquadramento_Ipi,
:QUANTIDADE_ALTERNATIVA, :UM_ALTERNATIVA, :VALOR_ALTERNATIVO,
:REDUCAO_BASE_PISCOF);

INSERT INTO TbNfe_Item_Saldo (
Nfe_Item_Controle,Nfe_Controle,Quantidade,
T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,  
T11,T12,T13,T14,T15,T16,T17,T18,T19,T20)  
VALUES (                                  
:Controle,:Nfe_Controle,:Quantidade,
:T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
:T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20);
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPI_NFE_ITEM11 (
    NFE_CONTROLE integer,
    ESTABELECIMENTO_CODIGO integer,
    EMPRESA_CODIGO integer,
    NUMERO_NOTAFISCAL integer,
    DATA_ENTRADA date,
    SITUACAO integer,
    NFS integer,
    NFS_ITEM_CONTROLE integer,
    OC integer,
    OC_ITEM_CONTROLE integer,
    NF_EXTERNO integer,
    NF_EXTERNO_ITEM_CONTROLE integer,
    CONTROLE integer,
    SEQUENCIA integer,
    OPERACAO_CODIGO varchar(3),
    CFOP_CODIGO varchar(5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    NCM_CODIGO varchar(10),
    TRIBUTACAO_ORIGEM integer,
    TRIBUTACAO_IPI varchar(2),
    TRIBUTACAO_ICMS integer,
    TRIBUTACAO_PIS char(2),
    TRIBUTACAO_COFINS char(2),
    LOCALIZACAO_CODIGO integer,
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_CUSTO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    BASECALCULO_ICMS numeric(10,5),
    PERCENTUAL_ICMS numeric(10,5),
    PERCENTUAL_IPI numeric(10,5),
    VALOR_IPI numeric(10,5),
    PERCENTUAL_PIS numeric(10,5),
    VALOR_PIS numeric(10,5),
    PERCENTUAL_COFINS numeric(10,5),
    VALOR_COFINS numeric(10,5),
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    DI varchar(12),
    DI_DATA_REGISTRO date,
    DI_DATA_DESEMBARACO date,
    DI_LOCAL_DESEMBARACO varchar(60),
    DI_UF_DESEMBARACO char(2),
    DI_CODIGO_EXPORTADOR varchar(60),
    DI_ADICAO integer,
    DI_SEQUENCIAL integer,
    DI_CODIGO_FABRICANTE varchar(60),
    DI_DESCONTO_ADICAO numeric(10,2),
    DI_BASE_CALCULO numeric(10,2),
    DI_DESPESAS_ADUANEIRAS numeric(10,2),
    DI_VALOR_II numeric(10,2),
    DI_VALOR_IOF numeric(10,2),
    VALOR_ICMS numeric(10,2),
    BASECALCULO_IPI numeric(10,2),
    BASECALCULO_PIS numeric(10,2),
    BASECALCULO_COFINS numeric(10,2),
    VALOR_ACRESCIMO numeric(10,2),
    VALOR_FRETE numeric(10,2),
    VALOR_SEGURO numeric(10,2),
    VALOR_DESCONTO numeric(10,2),
    FISCAL_ISENTAS_IPI numeric(10,2),
    FISCAL_ISENTAS_ICMS numeric(10,2),
    FISCAL_OUTRAS_IPI numeric(10,2),
    FISCAL_OUTRAS_ICMS numeric(10,2),
    FISCAL_VALOR_ICMS numeric(10,2),
    FISCAL_VALOR_IPI numeric(10,2),
    FISCAL_VALOR_PIS numeric(10,2),
    FISCAL_VALOR_COFINS numeric(10,2),
    FISCAL_PERCENTUAL_ICMS numeric(10,2),
    FISCAL_PERCENTUAL_IPI numeric(10,2),
    FISCAL_PERCENTUAL_PIS numeric(10,2),
    FISCAL_PERCENTUAL_COFINS numeric(10,2),
    FISCAL_BASECALCULO_ICMS numeric(10,5),
    FISCAL_BASECALCULO_IPI numeric(10,2),
    FISCAL_BASECALCULO_PIS numeric(10,2),
    FISCAL_BASECALCULO_COFINS numeric(10,2),
    VALOR_PEDAGIO numeric(10,2),
    VALOR_CONTABIL numeric(10,2),
    VALOR_BASECALCULO_ICMS numeric(10,2),
    BASECALCULO_FCI numeric(15,4),
    CODIGO_FCI varchar(50),
    FISCAL_CFOP_CODIGO varchar(5),
    FISCAL_TRIBUTACAO_ORIGEM integer,
    FISCAL_TRIBUTACAO_ICMS integer,
    FISCAL_TRIBUTACAO_IPI char(2),
    FISCAL_TRIBUTACAO_PIS char(2),
    FISCAL_TRIBUTACAO_COFINS char(2),
    MODALIDADE_ICMS char(1),
    MODALIDADE_ICMS_ST char(1),
    MARGEM_ICMS_ST numeric(15,4),
    REDUCAO_ICMS_ST numeric(15,4),
    BASECALCULO_ICMS_ST numeric(15,4),
    ALIQUOTA_ICMS_ST numeric(15,4),
    VALOR_ICMS_ST numeric(15,4),
    FISCAL_REDUCAO_ICMS_ST numeric(10,2),
    FISCAL_BASECALCULO_ICMS_ST numeric(10,2),
    FISCAL_ALIQUOTA_ICMS_ST numeric(10,2),
    FISCAL_VALOR_ICMS_ST numeric(10,2),
    INFORMACOES_COMPLEMENTARES varchar(500),
    DI_NVE varchar(60),
    DI_TIPO_VIA_TRANSP integer,
    DI_VALOR_AFRMM numeric(15,2),
    DI_TIPO_INTERMEDIO varchar(1),
    DI_CNPJ_INTERMEDIO varchar(14),
    DI_UF_INTERMEDIO varchar(2),
    DI_NUMERO_DRAWBACK varchar(11),
    CCUSTO varchar(8),
    CONTA_CONTABIL varchar(11),
    ENQUADRAMENTO_IPI varchar(3),
    QUANTIDADE_ALTERNATIVA numeric(18,4),
    UM_ALTERNATIVA varchar(10),
    VALOR_ALTERNATIVO numeric(18,10),
    REDUCAO_BASE_PISCOF char(1))
as
BEGIN
INSERT INTO TbNfe_Item  (
Nfe_Controle,Estabelecimento_Codigo,Empresa_Codigo,Numero_NotaFiscal,Data_Entrada,Situacao,
Nfs,Nfs_Item_Controle,OC,OC_Item_Controle,Nf_Externo,Nf_Externo_Item_Controle             ,
Controle,Sequencia,Operacao_Codigo,Cfop_Codigo,Produto_Codigo,Produto_Descricao           ,
PRODUTO_UNIDADEMEDIDA,Ncm_Codigo,Tributacao_Origem,Tributacao_Ipi,Tributacao_Icms         ,
Tributacao_Pis,Tributacao_Cofins                                                          ,
Localizacao_Codigo,Quantidade,Valor_Unitario,Valor_Custo,Valor_Total,BaseCalculo_Icms,Percentual_Icms ,
Percentual_Ipi,Valor_Ipi,Percentual_Pis,Valor_Pis,Percentual_Cofins,Valor_Cofins          ,
T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,
DI,DI_DATA_REGISTRO,DI_DATA_DESEMBARACO,DI_LOCAL_DESEMBARACO,DI_UF_DESEMBARACO,
DI_CODIGO_EXPORTADOR,DI_ADICAO,DI_SEQUENCIAL,DI_CODIGO_FABRICANTE,DI_DESCONTO_ADICAO,
di_base_calculo,di_despesas_aduaneiras,di_valor_ii,di_valor_iof,
VALOR_ICMS,BASECALCULO_IPI,BASECALCULO_PIS,BASECALCULO_COFINS,
VALOR_ACRESCIMO,VALOR_FRETE,VALOR_SEGURO,VALOR_DESCONTO,FISCAL_ISENTAS_IPI,
FISCAL_ISENTAS_ICMS,FISCAL_OUTRAS_IPI,FISCAL_OUTRAS_ICMS,FISCAL_VALOR_ICMS,FISCAL_VALOR_IPI,
FISCAL_VALOR_PIS,FISCAL_VALOR_COFINS,FISCAL_PERCENTUAL_ICMS,FISCAL_PERCENTUAL_IPI,
FISCAL_PERCENTUAL_PIS,FISCAL_PERCENTUAL_COFINS,FISCAL_BASECALCULO_ICMS,
FISCAL_BASECALCULO_IPI,FISCAL_BASECALCULO_PIS,FISCAL_BASECALCULO_COFINS,
VALOR_PEDAGIO, VALOR_CONTABIL, valor_basecalculo_icms, basecalculo_FCI, CODIGO_FCI,
FISCAL_CFOP_CODIGO,FISCAL_TRIBUTACAO_ORIGEM,
FISCAL_TRIBUTACAO_ICMS,FISCAL_TRIBUTACAO_IPI,FISCAL_TRIBUTACAO_PIS,FISCAL_TRIBUTACAO_COFINS,
MODALIDADE_ICMS, MODALIDADE_ICMS_ST, MARGEM_ICMS_ST,
REDUCAO_ICMS_ST, BASECALCULO_ICMS_ST, ALIQUOTA_ICMS_ST, VALOR_ICMS_ST,
FISCAL_REDUCAO_ICMS_ST, FISCAL_BASECALCULO_ICMS_ST, FISCAL_ALIQUOTA_ICMS_ST, FISCAL_VALOR_ICMS_ST,
INFORMACOES_COMPLEMENTARES, DI_NVE, DI_TIPO_VIA_TRANSP, DI_VALOR_AFRMM,
DI_TIPO_INTERMEDIO, DI_CNPJ_INTERMEDIO, DI_UF_INTERMEDIO, DI_NUMERO_DRAWBACK,
CCUSTO, CONTA_CONTABIL, Enquadramento_Ipi,
QUANTIDADE_ALTERNATIVA, UM_ALTERNATIVA, VALOR_ALTERNATIVO,
REDUCAO_BASE_PISCOF)
VALUES  (
:Nfe_Controle,:Estabelecimento_Codigo,:Empresa_Codigo,:Numero_NotaFiscal,
:Data_Entrada,:Situacao,:Nfs,:Nfs_Item_Controle,:OC,:OC_Item_Controle,
:Nf_Externo,:Nf_Externo_Item_Controle,:Controle,:Sequencia,:Operacao_Codigo,:Cfop_Codigo,
:Produto_Codigo,:Produto_Descricao,:Produto_UnidadeMedida,:Ncm_Codigo,:Tributacao_Origem,
:Tributacao_Ipi,:Tributacao_Icms,:Tributacao_Pis,:Tributacao_Cofins,:Localizacao_Codigo,
:Quantidade,:Valor_Unitario,:Valor_Custo,:Valor_Total,:BaseCalculo_Icms,:Percentual_Icms,
:Percentual_Ipi,:Valor_Ipi,:Percentual_Pis,:Valor_Pis,:Percentual_Cofins,
:Valor_Cofins,:T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
:T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,
:DI,:DI_DATA_REGISTRO,:DI_DATA_DESEMBARACO,:DI_LOCAL_DESEMBARACO,:DI_UF_DESEMBARACO,
:DI_CODIGO_EXPORTADOR,:DI_ADICAO,:DI_SEQUENCIAL,:DI_CODIGO_FABRICANTE,:DI_DESCONTO_ADICAO,
:di_base_calculo,:di_despesas_aduaneiras,:di_valor_ii,:di_valor_iof,
:VALOR_ICMS,:BASECALCULO_IPI,:BASECALCULO_PIS,:BASECALCULO_COFINS,
:VALOR_ACRESCIMO,:VALOR_FRETE,:VALOR_SEGURO,:VALOR_DESCONTO,:FISCAL_ISENTAS_IPI,:FISCAL_ISENTAS_ICMS,
:FISCAL_OUTRAS_IPI,:FISCAL_OUTRAS_ICMS,:FISCAL_VALOR_ICMS,:FISCAL_VALOR_IPI,
:FISCAL_VALOR_PIS,:FISCAL_VALOR_COFINS,:FISCAL_PERCENTUAL_ICMS,:FISCAL_PERCENTUAL_IPI,
:FISCAL_PERCENTUAL_PIS,:FISCAL_PERCENTUAL_COFINS,:FISCAL_BASECALCULO_ICMS,
:FISCAL_BASECALCULO_IPI,:FISCAL_BASECALCULO_PIS,:FISCAL_BASECALCULO_COFINS,
:VALOR_PEDAGIO, :VALOR_CONTABIL, :valor_basecalculo_icms, :basecalculo_FCI, :CODIGO_FCI,
:FISCAL_CFOP_CODIGO,:FISCAL_TRIBUTACAO_ORIGEM,
:FISCAL_TRIBUTACAO_ICMS,:FISCAL_TRIBUTACAO_IPI,:FISCAL_TRIBUTACAO_PIS,
:FISCAL_TRIBUTACAO_COFINS,:MODALIDADE_ICMS, :MODALIDADE_ICMS_ST, :MARGEM_ICMS_ST,
:REDUCAO_ICMS_ST, :BASECALCULO_ICMS_ST, :ALIQUOTA_ICMS_ST, :VALOR_ICMS_ST,
:FISCAL_REDUCAO_ICMS_ST, :FISCAL_BASECALCULO_ICMS_ST, :FISCAL_ALIQUOTA_ICMS_ST, :FISCAL_VALOR_ICMS_ST,
:INFORMACOES_COMPLEMENTARES, :DI_NVE, :DI_TIPO_VIA_TRANSP, :DI_VALOR_AFRMM,
:DI_TIPO_INTERMEDIO, :DI_CNPJ_INTERMEDIO, :DI_UF_INTERMEDIO, :DI_NUMERO_DRAWBACK,
:CCUSTO, :CONTA_CONTABIL, :Enquadramento_Ipi,
:QUANTIDADE_ALTERNATIVA, :UM_ALTERNATIVA, :VALOR_ALTERNATIVO,
:REDUCAO_BASE_PISCOF);

INSERT INTO TbNfe_Item_Saldo (
Nfe_Item_Controle,Nfe_Controle,Quantidade,
T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,  
T11,T12,T13,T14,T15,T16,T17,T18,T19,T20)  
VALUES (                                  
:Controle,:Nfe_Controle,:Quantidade,
:T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
:T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20);
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPI_NFE_ITEM8 (
    NFE_CONTROLE integer,
    ESTABELECIMENTO_CODIGO integer,
    EMPRESA_CODIGO integer,
    NUMERO_NOTAFISCAL integer,
    DATA_ENTRADA date,
    SITUACAO integer,
    NFS integer,
    NFS_ITEM_CONTROLE integer,
    OC integer,
    OC_ITEM_CONTROLE integer,
    NF_EXTERNO integer,
    NF_EXTERNO_ITEM_CONTROLE integer,
    CONTROLE integer,
    SEQUENCIA integer,
    OPERACAO_CODIGO varchar(3),
    CFOP_CODIGO varchar(5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    NCM_CODIGO varchar(10),
    TRIBUTACAO_ORIGEM integer,
    TRIBUTACAO_IPI varchar(2),
    TRIBUTACAO_ICMS integer,
    TRIBUTACAO_PIS char(2),
    TRIBUTACAO_COFINS char(2),
    LOCALIZACAO_CODIGO integer,
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_CUSTO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    BASECALCULO_ICMS numeric(10,5),
    PERCENTUAL_ICMS numeric(10,5),
    PERCENTUAL_IPI numeric(10,5),
    VALOR_IPI numeric(10,5),
    PERCENTUAL_PIS numeric(10,5),
    VALOR_PIS numeric(10,5),
    PERCENTUAL_COFINS numeric(10,5),
    VALOR_COFINS numeric(10,5),
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    DI varchar(12),
    DI_DATA_REGISTRO date,
    DI_DATA_DESEMBARACO date,
    DI_LOCAL_DESEMBARACO varchar(60),
    DI_UF_DESEMBARACO char(2),
    DI_CODIGO_EXPORTADOR varchar(60),
    DI_ADICAO integer,
    DI_SEQUENCIAL integer,
    DI_CODIGO_FABRICANTE varchar(60),
    DI_DESCONTO_ADICAO numeric(10,2),
    DI_BASE_CALCULO numeric(10,2),
    DI_DESPESAS_ADUANEIRAS numeric(10,2),
    DI_VALOR_II numeric(10,2),
    DI_VALOR_IOF numeric(10,2),
    VALOR_ICMS numeric(10,2),
    BASECALCULO_IPI numeric(10,2),
    BASECALCULO_PIS numeric(10,2),
    BASECALCULO_COFINS numeric(10,2),
    VALOR_ACRESCIMO numeric(10,2),
    VALOR_FRETE numeric(10,2),
    VALOR_SEGURO numeric(10,2),
    VALOR_DESCONTO numeric(10,2),
    FISCAL_ISENTAS_IPI numeric(10,2),
    FISCAL_ISENTAS_ICMS numeric(10,2),
    FISCAL_OUTRAS_IPI numeric(10,2),
    FISCAL_OUTRAS_ICMS numeric(10,2),
    FISCAL_VALOR_ICMS numeric(10,2),
    FISCAL_VALOR_IPI numeric(10,2),
    FISCAL_VALOR_PIS numeric(10,2),
    FISCAL_VALOR_COFINS numeric(10,2),
    FISCAL_PERCENTUAL_ICMS numeric(10,2),
    FISCAL_PERCENTUAL_IPI numeric(10,2),
    FISCAL_PERCENTUAL_PIS numeric(10,2),
    FISCAL_PERCENTUAL_COFINS numeric(10,2),
    FISCAL_BASECALCULO_ICMS numeric(10,5),
    FISCAL_BASECALCULO_IPI numeric(10,2),
    FISCAL_BASECALCULO_PIS numeric(10,2),
    FISCAL_BASECALCULO_COFINS numeric(10,2),
    VALOR_PEDAGIO numeric(10,2),
    VALOR_CONTABIL numeric(10,2),
    VALOR_BASECALCULO_ICMS numeric(10,2),
    BASECALCULO_FCI numeric(15,4),
    CODIGO_FCI varchar(50),
    FISCAL_CFOP_CODIGO varchar(5),
    FISCAL_TRIBUTACAO_ORIGEM integer,
    FISCAL_TRIBUTACAO_ICMS integer,
    FISCAL_TRIBUTACAO_IPI char(2),
    FISCAL_TRIBUTACAO_PIS char(2),
    FISCAL_TRIBUTACAO_COFINS char(2),
    MODALIDADE_ICMS char(1),
    MODALIDADE_ICMS_ST char(1),
    MARGEM_ICMS_ST numeric(15,4),
    REDUCAO_ICMS_ST numeric(15,4),
    BASECALCULO_ICMS_ST numeric(15,4),
    ALIQUOTA_ICMS_ST numeric(15,4),
    VALOR_ICMS_ST numeric(15,4),
    FISCAL_REDUCAO_ICMS_ST numeric(10,2),
    FISCAL_BASECALCULO_ICMS_ST numeric(10,2),
    FISCAL_ALIQUOTA_ICMS_ST numeric(10,2),
    FISCAL_VALOR_ICMS_ST numeric(10,2),
    INFORMACOES_COMPLEMENTARES varchar(200),
    DI_NVE varchar(60),
    DI_TIPO_VIA_TRANSP integer,
    DI_VALOR_AFRMM numeric(15,2),
    DI_TIPO_INTERMEDIO varchar(1),
    DI_CNPJ_INTERMEDIO varchar(14),
    DI_UF_INTERMEDIO varchar(2),
    DI_NUMERO_DRAWBACK varchar(11),
    CCUSTO varchar(8),
    CONTA_CONTABIL varchar(11),
    ENQUADRAMENTO_IPI varchar(3))
as
BEGIN
INSERT INTO TbNfe_Item  (
Nfe_Controle,Estabelecimento_Codigo,Empresa_Codigo,Numero_NotaFiscal,Data_Entrada,Situacao,
Nfs,Nfs_Item_Controle,OC,OC_Item_Controle,Nf_Externo,Nf_Externo_Item_Controle             ,
Controle,Sequencia,Operacao_Codigo,Cfop_Codigo,Produto_Codigo,Produto_Descricao           ,
PRODUTO_UNIDADEMEDIDA,Ncm_Codigo,Tributacao_Origem,Tributacao_Ipi,Tributacao_Icms         ,
Tributacao_Pis,Tributacao_Cofins                                                          ,
Localizacao_Codigo,Quantidade,Valor_Unitario,Valor_Custo,Valor_Total,BaseCalculo_Icms,Percentual_Icms ,
Percentual_Ipi,Valor_Ipi,Percentual_Pis,Valor_Pis,Percentual_Cofins,Valor_Cofins          ,
T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,
DI,DI_DATA_REGISTRO,DI_DATA_DESEMBARACO,DI_LOCAL_DESEMBARACO,DI_UF_DESEMBARACO,
DI_CODIGO_EXPORTADOR,DI_ADICAO,DI_SEQUENCIAL,DI_CODIGO_FABRICANTE,DI_DESCONTO_ADICAO,
di_base_calculo,di_despesas_aduaneiras,di_valor_ii,di_valor_iof,
VALOR_ICMS,BASECALCULO_IPI,BASECALCULO_PIS,BASECALCULO_COFINS,
VALOR_ACRESCIMO,VALOR_FRETE,VALOR_SEGURO,VALOR_DESCONTO,FISCAL_ISENTAS_IPI,
FISCAL_ISENTAS_ICMS,FISCAL_OUTRAS_IPI,FISCAL_OUTRAS_ICMS,FISCAL_VALOR_ICMS,FISCAL_VALOR_IPI,
FISCAL_VALOR_PIS,FISCAL_VALOR_COFINS,FISCAL_PERCENTUAL_ICMS,FISCAL_PERCENTUAL_IPI,
FISCAL_PERCENTUAL_PIS,FISCAL_PERCENTUAL_COFINS,FISCAL_BASECALCULO_ICMS,
FISCAL_BASECALCULO_IPI,FISCAL_BASECALCULO_PIS,FISCAL_BASECALCULO_COFINS,
VALOR_PEDAGIO, VALOR_CONTABIL, valor_basecalculo_icms, basecalculo_FCI, CODIGO_FCI,
FISCAL_CFOP_CODIGO,FISCAL_TRIBUTACAO_ORIGEM,
FISCAL_TRIBUTACAO_ICMS,FISCAL_TRIBUTACAO_IPI,FISCAL_TRIBUTACAO_PIS,FISCAL_TRIBUTACAO_COFINS,
MODALIDADE_ICMS, MODALIDADE_ICMS_ST, MARGEM_ICMS_ST,
REDUCAO_ICMS_ST, BASECALCULO_ICMS_ST, ALIQUOTA_ICMS_ST, VALOR_ICMS_ST,
FISCAL_REDUCAO_ICMS_ST, FISCAL_BASECALCULO_ICMS_ST, FISCAL_ALIQUOTA_ICMS_ST, FISCAL_VALOR_ICMS_ST,
INFORMACOES_COMPLEMENTARES, DI_NVE, DI_TIPO_VIA_TRANSP, DI_VALOR_AFRMM,
DI_TIPO_INTERMEDIO, DI_CNPJ_INTERMEDIO, DI_UF_INTERMEDIO, DI_NUMERO_DRAWBACK,
CCUSTO, CONTA_CONTABIL, Enquadramento_Ipi)
VALUES  (
:Nfe_Controle,:Estabelecimento_Codigo,:Empresa_Codigo,:Numero_NotaFiscal,
:Data_Entrada,:Situacao,:Nfs,:Nfs_Item_Controle,:OC,:OC_Item_Controle,
:Nf_Externo,:Nf_Externo_Item_Controle,:Controle,:Sequencia,:Operacao_Codigo,:Cfop_Codigo,
:Produto_Codigo,:Produto_Descricao,:Produto_UnidadeMedida,:Ncm_Codigo,:Tributacao_Origem,
:Tributacao_Ipi,:Tributacao_Icms,:Tributacao_Pis,:Tributacao_Cofins,:Localizacao_Codigo,
:Quantidade,:Valor_Unitario,:Valor_Custo,:Valor_Total,:BaseCalculo_Icms,:Percentual_Icms,
:Percentual_Ipi,:Valor_Ipi,:Percentual_Pis,:Valor_Pis,:Percentual_Cofins,
:Valor_Cofins,:T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
:T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,
:DI,:DI_DATA_REGISTRO,:DI_DATA_DESEMBARACO,:DI_LOCAL_DESEMBARACO,:DI_UF_DESEMBARACO,
:DI_CODIGO_EXPORTADOR,:DI_ADICAO,:DI_SEQUENCIAL,:DI_CODIGO_FABRICANTE,:DI_DESCONTO_ADICAO,
:di_base_calculo,:di_despesas_aduaneiras,:di_valor_ii,:di_valor_iof,
:VALOR_ICMS,:BASECALCULO_IPI,:BASECALCULO_PIS,:BASECALCULO_COFINS,
:VALOR_ACRESCIMO,:VALOR_FRETE,:VALOR_SEGURO,:VALOR_DESCONTO,:FISCAL_ISENTAS_IPI,:FISCAL_ISENTAS_ICMS,
:FISCAL_OUTRAS_IPI,:FISCAL_OUTRAS_ICMS,:FISCAL_VALOR_ICMS,:FISCAL_VALOR_IPI,
:FISCAL_VALOR_PIS,:FISCAL_VALOR_COFINS,:FISCAL_PERCENTUAL_ICMS,:FISCAL_PERCENTUAL_IPI,
:FISCAL_PERCENTUAL_PIS,:FISCAL_PERCENTUAL_COFINS,:FISCAL_BASECALCULO_ICMS,
:FISCAL_BASECALCULO_IPI,:FISCAL_BASECALCULO_PIS,:FISCAL_BASECALCULO_COFINS,
:VALOR_PEDAGIO, :VALOR_CONTABIL, :valor_basecalculo_icms, :basecalculo_FCI, :CODIGO_FCI,
:FISCAL_CFOP_CODIGO,:FISCAL_TRIBUTACAO_ORIGEM,
:FISCAL_TRIBUTACAO_ICMS,:FISCAL_TRIBUTACAO_IPI,:FISCAL_TRIBUTACAO_PIS,
:FISCAL_TRIBUTACAO_COFINS,:MODALIDADE_ICMS, :MODALIDADE_ICMS_ST, :MARGEM_ICMS_ST,
:REDUCAO_ICMS_ST, :BASECALCULO_ICMS_ST, :ALIQUOTA_ICMS_ST, :VALOR_ICMS_ST,
:FISCAL_REDUCAO_ICMS_ST, :FISCAL_BASECALCULO_ICMS_ST, :FISCAL_ALIQUOTA_ICMS_ST, :FISCAL_VALOR_ICMS_ST,
:INFORMACOES_COMPLEMENTARES, :DI_NVE, :DI_TIPO_VIA_TRANSP, :DI_VALOR_AFRMM,
:DI_TIPO_INTERMEDIO, :DI_CNPJ_INTERMEDIO, :DI_UF_INTERMEDIO, :DI_NUMERO_DRAWBACK,
:CCUSTO, :CONTA_CONTABIL, :Enquadramento_Ipi);

INSERT INTO TbNfe_Item_Saldo (
Nfe_Item_Controle,Nfe_Controle,Quantidade,
T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,  
T11,T12,T13,T14,T15,T16,T17,T18,T19,T20)  
VALUES (                                  
:Controle,:Nfe_Controle,:Quantidade,
:T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
:T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20);
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPI_NFE_ITEM9 (
    NFE_CONTROLE integer,
    ESTABELECIMENTO_CODIGO integer,
    EMPRESA_CODIGO integer,
    NUMERO_NOTAFISCAL integer,
    DATA_ENTRADA date,
    SITUACAO integer,
    NFS integer,
    NFS_ITEM_CONTROLE integer,
    OC integer,
    OC_ITEM_CONTROLE integer,
    NF_EXTERNO integer,
    NF_EXTERNO_ITEM_CONTROLE integer,
    CONTROLE integer,
    SEQUENCIA integer,
    OPERACAO_CODIGO varchar(3),
    CFOP_CODIGO varchar(5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    NCM_CODIGO varchar(10),
    TRIBUTACAO_ORIGEM integer,
    TRIBUTACAO_IPI varchar(2),
    TRIBUTACAO_ICMS integer,
    TRIBUTACAO_PIS char(2),
    TRIBUTACAO_COFINS char(2),
    LOCALIZACAO_CODIGO integer,
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_CUSTO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    BASECALCULO_ICMS numeric(10,5),
    PERCENTUAL_ICMS numeric(10,5),
    PERCENTUAL_IPI numeric(10,5),
    VALOR_IPI numeric(10,5),
    PERCENTUAL_PIS numeric(10,5),
    VALOR_PIS numeric(10,5),
    PERCENTUAL_COFINS numeric(10,5),
    VALOR_COFINS numeric(10,5),
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    DI varchar(12),
    DI_DATA_REGISTRO date,
    DI_DATA_DESEMBARACO date,
    DI_LOCAL_DESEMBARACO varchar(60),
    DI_UF_DESEMBARACO char(2),
    DI_CODIGO_EXPORTADOR varchar(60),
    DI_ADICAO integer,
    DI_SEQUENCIAL integer,
    DI_CODIGO_FABRICANTE varchar(60),
    DI_DESCONTO_ADICAO numeric(10,2),
    DI_BASE_CALCULO numeric(10,2),
    DI_DESPESAS_ADUANEIRAS numeric(10,2),
    DI_VALOR_II numeric(10,2),
    DI_VALOR_IOF numeric(10,2),
    VALOR_ICMS numeric(10,2),
    BASECALCULO_IPI numeric(10,2),
    BASECALCULO_PIS numeric(10,2),
    BASECALCULO_COFINS numeric(10,2),
    VALOR_ACRESCIMO numeric(10,2),
    VALOR_FRETE numeric(10,2),
    VALOR_SEGURO numeric(10,2),
    VALOR_DESCONTO numeric(10,2),
    FISCAL_ISENTAS_IPI numeric(10,2),
    FISCAL_ISENTAS_ICMS numeric(10,2),
    FISCAL_OUTRAS_IPI numeric(10,2),
    FISCAL_OUTRAS_ICMS numeric(10,2),
    FISCAL_VALOR_ICMS numeric(10,2),
    FISCAL_VALOR_IPI numeric(10,2),
    FISCAL_VALOR_PIS numeric(10,2),
    FISCAL_VALOR_COFINS numeric(10,2),
    FISCAL_PERCENTUAL_ICMS numeric(10,2),
    FISCAL_PERCENTUAL_IPI numeric(10,2),
    FISCAL_PERCENTUAL_PIS numeric(10,2),
    FISCAL_PERCENTUAL_COFINS numeric(10,2),
    FISCAL_BASECALCULO_ICMS numeric(10,5),
    FISCAL_BASECALCULO_IPI numeric(10,2),
    FISCAL_BASECALCULO_PIS numeric(10,2),
    FISCAL_BASECALCULO_COFINS numeric(10,2),
    VALOR_PEDAGIO numeric(10,2),
    VALOR_CONTABIL numeric(10,2),
    VALOR_BASECALCULO_ICMS numeric(10,2),
    BASECALCULO_FCI numeric(15,4),
    CODIGO_FCI varchar(50),
    FISCAL_CFOP_CODIGO varchar(5),
    FISCAL_TRIBUTACAO_ORIGEM integer,
    FISCAL_TRIBUTACAO_ICMS integer,
    FISCAL_TRIBUTACAO_IPI char(2),
    FISCAL_TRIBUTACAO_PIS char(2),
    FISCAL_TRIBUTACAO_COFINS char(2),
    MODALIDADE_ICMS char(1),
    MODALIDADE_ICMS_ST char(1),
    MARGEM_ICMS_ST numeric(15,4),
    REDUCAO_ICMS_ST numeric(15,4),
    BASECALCULO_ICMS_ST numeric(15,4),
    ALIQUOTA_ICMS_ST numeric(15,4),
    VALOR_ICMS_ST numeric(15,4),
    FISCAL_REDUCAO_ICMS_ST numeric(10,2),
    FISCAL_BASECALCULO_ICMS_ST numeric(10,2),
    FISCAL_ALIQUOTA_ICMS_ST numeric(10,2),
    FISCAL_VALOR_ICMS_ST numeric(10,2),
    INFORMACOES_COMPLEMENTARES varchar(200),
    DI_NVE varchar(60),
    DI_TIPO_VIA_TRANSP integer,
    DI_VALOR_AFRMM numeric(15,2),
    DI_TIPO_INTERMEDIO varchar(1),
    DI_CNPJ_INTERMEDIO varchar(14),
    DI_UF_INTERMEDIO varchar(2),
    DI_NUMERO_DRAWBACK varchar(11),
    CCUSTO varchar(8),
    CONTA_CONTABIL varchar(11),
    ENQUADRAMENTO_IPI varchar(3),
    QUANTIDADE_ALTERNATIVA numeric(18,4),
    UM_ALTERNATIVA varchar(10),
    VALOR_ALTERNATIVO numeric(18,10))
as
BEGIN
INSERT INTO TbNfe_Item  (
Nfe_Controle,Estabelecimento_Codigo,Empresa_Codigo,Numero_NotaFiscal,Data_Entrada,Situacao,
Nfs,Nfs_Item_Controle,OC,OC_Item_Controle,Nf_Externo,Nf_Externo_Item_Controle             ,
Controle,Sequencia,Operacao_Codigo,Cfop_Codigo,Produto_Codigo,Produto_Descricao           ,
PRODUTO_UNIDADEMEDIDA,Ncm_Codigo,Tributacao_Origem,Tributacao_Ipi,Tributacao_Icms         ,
Tributacao_Pis,Tributacao_Cofins                                                          ,
Localizacao_Codigo,Quantidade,Valor_Unitario,Valor_Custo,Valor_Total,BaseCalculo_Icms,Percentual_Icms ,
Percentual_Ipi,Valor_Ipi,Percentual_Pis,Valor_Pis,Percentual_Cofins,Valor_Cofins          ,
T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,
DI,DI_DATA_REGISTRO,DI_DATA_DESEMBARACO,DI_LOCAL_DESEMBARACO,DI_UF_DESEMBARACO,
DI_CODIGO_EXPORTADOR,DI_ADICAO,DI_SEQUENCIAL,DI_CODIGO_FABRICANTE,DI_DESCONTO_ADICAO,
di_base_calculo,di_despesas_aduaneiras,di_valor_ii,di_valor_iof,
VALOR_ICMS,BASECALCULO_IPI,BASECALCULO_PIS,BASECALCULO_COFINS,
VALOR_ACRESCIMO,VALOR_FRETE,VALOR_SEGURO,VALOR_DESCONTO,FISCAL_ISENTAS_IPI,
FISCAL_ISENTAS_ICMS,FISCAL_OUTRAS_IPI,FISCAL_OUTRAS_ICMS,FISCAL_VALOR_ICMS,FISCAL_VALOR_IPI,
FISCAL_VALOR_PIS,FISCAL_VALOR_COFINS,FISCAL_PERCENTUAL_ICMS,FISCAL_PERCENTUAL_IPI,
FISCAL_PERCENTUAL_PIS,FISCAL_PERCENTUAL_COFINS,FISCAL_BASECALCULO_ICMS,
FISCAL_BASECALCULO_IPI,FISCAL_BASECALCULO_PIS,FISCAL_BASECALCULO_COFINS,
VALOR_PEDAGIO, VALOR_CONTABIL, valor_basecalculo_icms, basecalculo_FCI, CODIGO_FCI,
FISCAL_CFOP_CODIGO,FISCAL_TRIBUTACAO_ORIGEM,
FISCAL_TRIBUTACAO_ICMS,FISCAL_TRIBUTACAO_IPI,FISCAL_TRIBUTACAO_PIS,FISCAL_TRIBUTACAO_COFINS,
MODALIDADE_ICMS, MODALIDADE_ICMS_ST, MARGEM_ICMS_ST,
REDUCAO_ICMS_ST, BASECALCULO_ICMS_ST, ALIQUOTA_ICMS_ST, VALOR_ICMS_ST,
FISCAL_REDUCAO_ICMS_ST, FISCAL_BASECALCULO_ICMS_ST, FISCAL_ALIQUOTA_ICMS_ST, FISCAL_VALOR_ICMS_ST,
INFORMACOES_COMPLEMENTARES, DI_NVE, DI_TIPO_VIA_TRANSP, DI_VALOR_AFRMM,
DI_TIPO_INTERMEDIO, DI_CNPJ_INTERMEDIO, DI_UF_INTERMEDIO, DI_NUMERO_DRAWBACK,
CCUSTO, CONTA_CONTABIL, Enquadramento_Ipi,
QUANTIDADE_ALTERNATIVA, UM_ALTERNATIVA, VALOR_ALTERNATIVO)
VALUES  (
:Nfe_Controle,:Estabelecimento_Codigo,:Empresa_Codigo,:Numero_NotaFiscal,
:Data_Entrada,:Situacao,:Nfs,:Nfs_Item_Controle,:OC,:OC_Item_Controle,
:Nf_Externo,:Nf_Externo_Item_Controle,:Controle,:Sequencia,:Operacao_Codigo,:Cfop_Codigo,
:Produto_Codigo,:Produto_Descricao,:Produto_UnidadeMedida,:Ncm_Codigo,:Tributacao_Origem,
:Tributacao_Ipi,:Tributacao_Icms,:Tributacao_Pis,:Tributacao_Cofins,:Localizacao_Codigo,
:Quantidade,:Valor_Unitario,:Valor_Custo,:Valor_Total,:BaseCalculo_Icms,:Percentual_Icms,
:Percentual_Ipi,:Valor_Ipi,:Percentual_Pis,:Valor_Pis,:Percentual_Cofins,
:Valor_Cofins,:T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
:T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,
:DI,:DI_DATA_REGISTRO,:DI_DATA_DESEMBARACO,:DI_LOCAL_DESEMBARACO,:DI_UF_DESEMBARACO,
:DI_CODIGO_EXPORTADOR,:DI_ADICAO,:DI_SEQUENCIAL,:DI_CODIGO_FABRICANTE,:DI_DESCONTO_ADICAO,
:di_base_calculo,:di_despesas_aduaneiras,:di_valor_ii,:di_valor_iof,
:VALOR_ICMS,:BASECALCULO_IPI,:BASECALCULO_PIS,:BASECALCULO_COFINS,
:VALOR_ACRESCIMO,:VALOR_FRETE,:VALOR_SEGURO,:VALOR_DESCONTO,:FISCAL_ISENTAS_IPI,:FISCAL_ISENTAS_ICMS,
:FISCAL_OUTRAS_IPI,:FISCAL_OUTRAS_ICMS,:FISCAL_VALOR_ICMS,:FISCAL_VALOR_IPI,
:FISCAL_VALOR_PIS,:FISCAL_VALOR_COFINS,:FISCAL_PERCENTUAL_ICMS,:FISCAL_PERCENTUAL_IPI,
:FISCAL_PERCENTUAL_PIS,:FISCAL_PERCENTUAL_COFINS,:FISCAL_BASECALCULO_ICMS,
:FISCAL_BASECALCULO_IPI,:FISCAL_BASECALCULO_PIS,:FISCAL_BASECALCULO_COFINS,
:VALOR_PEDAGIO, :VALOR_CONTABIL, :valor_basecalculo_icms, :basecalculo_FCI, :CODIGO_FCI,
:FISCAL_CFOP_CODIGO,:FISCAL_TRIBUTACAO_ORIGEM,
:FISCAL_TRIBUTACAO_ICMS,:FISCAL_TRIBUTACAO_IPI,:FISCAL_TRIBUTACAO_PIS,
:FISCAL_TRIBUTACAO_COFINS,:MODALIDADE_ICMS, :MODALIDADE_ICMS_ST, :MARGEM_ICMS_ST,
:REDUCAO_ICMS_ST, :BASECALCULO_ICMS_ST, :ALIQUOTA_ICMS_ST, :VALOR_ICMS_ST,
:FISCAL_REDUCAO_ICMS_ST, :FISCAL_BASECALCULO_ICMS_ST, :FISCAL_ALIQUOTA_ICMS_ST, :FISCAL_VALOR_ICMS_ST,
:INFORMACOES_COMPLEMENTARES, :DI_NVE, :DI_TIPO_VIA_TRANSP, :DI_VALOR_AFRMM,
:DI_TIPO_INTERMEDIO, :DI_CNPJ_INTERMEDIO, :DI_UF_INTERMEDIO, :DI_NUMERO_DRAWBACK,
:CCUSTO, :CONTA_CONTABIL, :Enquadramento_Ipi,
:QUANTIDADE_ALTERNATIVA, :UM_ALTERNATIVA, :VALOR_ALTERNATIVO);

INSERT INTO TbNfe_Item_Saldo (
Nfe_Item_Controle,Nfe_Controle,Quantidade,
T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,  
T11,T12,T13,T14,T15,T16,T17,T18,T19,T20)  
VALUES (                                  
:Controle,:Nfe_Controle,:Quantidade,
:T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
:T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20);
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPI_NFS_ITEM5 (
    NFS_CONTROLE integer,
    ESTABELECIMENTO_CODIGO integer,
    EMPRESA_CODIGO integer,
    NUMERO_NOTAFISCAL integer,
    DATA_EMISSAO date,
    SITUACAO integer,
    NF_CONSIGNACAO integer,
    NF_CONSIGNACAO_ITEM integer,
    NFE integer,
    NFE_ITEM_CONTROLE integer,
    PEDIDO integer,
    PEDIDO_ITEM_PE_CONTROLE integer,
    NF_EXTERNO integer,
    NF_EXTERNO_ITEM_CONTROLE integer,
    CONTROLE integer,
    SEQUENCIA integer,
    OPERACAO_CODIGO varchar(3),
    CFOP_CODIGO varchar(5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    NCM_CODIGO varchar(10),
    TRIBUTACAO_ORIGEM integer,
    TRIBUTACAO_IPI varchar(2),
    TRIBUTACAO_ICMS integer,
    TRIBUTACAO_PIS char(2),
    TRIBUTACAO_COFINS char(2),
    LOCALIZACAO_CODIGO integer,
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    BASECALCULO_ICMS numeric(10,5),
    PERCENTUAL_ICMS numeric(10,5),
    PERCENTUAL_IPI numeric(10,5),
    VALOR_IPI numeric(10,5),
    PERCENTUAL_PIS numeric(10,5),
    VALOR_PIS numeric(10,5),
    PERCENTUAL_COFINS numeric(10,5),
    VALOR_COFINS numeric(10,5),
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    TECELAGEM integer,
    VALOR_ICMS numeric(10,2),
    BASECALCULO_IPI numeric(10,2),
    BASECALCULO_PIS numeric(10,2),
    BASECALCULO_COFINS numeric(10,2),
    VALOR_ACRESCIMO numeric(10,2),
    VALOR_FRETE numeric(10,2),
    VALOR_SEGURO numeric(10,2),
    PESO_LIQUIDO numeric(10,4),
    PESO_BRUTO numeric(10,4),
    CUBAGEM numeric(10,4),
    VOLUMES integer,
    VALOR_DESCONTO numeric(10,2),
    FISCAL_ISENTAS_IPI numeric(10,2),
    FISCAL_ISENTAS_ICMS numeric(10,2),
    FISCAL_OUTRAS_IPI numeric(10,2),
    FISCAL_OUTRAS_ICMS numeric(10,2),
    FISCAL_VALOR_ICMS numeric(10,2),
    FISCAL_VALOR_IPI numeric(10,2),
    FISCAL_VALOR_PIS numeric(10,2),
    FISCAL_VALOR_COFINS numeric(10,2),
    FISCAL_PERCENTUAL_ICMS numeric(10,2),
    FISCAL_PERCENTUAL_IPI numeric(10,2),
    FISCAL_PERCENTUAL_PIS numeric(10,2),
    FISCAL_PERCENTUAL_COFINS numeric(10,2),
    FISCAL_BASECALCULO_ICMS numeric(10,2),
    FISCAL_BASECALCULO_IPI numeric(10,2),
    FISCAL_BASECALCULO_PIS numeric(10,2),
    FISCAL_BASECALCULO_COFINS numeric(10,2),
    VALOR_CONTABIL numeric(10,2),
    VALOR_BASECALCULO_ICMS numeric(10,2),
    FISCAL_CFOP_CODIGO varchar(5),
    FISCAL_TRIBUTACAO_ORIGEM integer,
    FISCAL_TRIBUTACAO_ICMS integer,
    FISCAL_TRIBUTACAO_IPI char(2),
    FISCAL_TRIBUTACAO_PIS char(2),
    FISCAL_TRIBUTACAO_COFINS char(2),
    MODALIDADE_ICMS char(1),
    MODALIDADE_ICMS_ST char(1),
    MARGEM_ICMS_ST numeric(15,4),
    REDUCAO_ICMS_ST numeric(15,4),
    BASECALCULO_ICMS_ST numeric(15,4),
    ALIQUOTA_ICMS_ST numeric(15,4),
    VALOR_ICMS_ST numeric(15,4),
    FISCAL_REDUCAO_ICMS_ST numeric(10,2),
    FISCAL_BASECALCULO_ICMS_ST numeric(10,2),
    FISCAL_ALIQUOTA_ICMS_ST numeric(10,2),
    FISCAL_VALOR_ICMS_ST numeric(10,2),
    PEDIDO_CLIENTE varchar(15),
    INFORMACOES_COMPLEMENTARES varchar(200),
    FCI_MENSAGEM varchar(255),
    FCI_PARCELA_IMPORTACAO numeric(15,2),
    FCI_CONTEUDO_IMPORTACAO numeric(15,2),
    FCI_NUMERO varchar(40))
as
BEGIN
INSERT INTO TbNfs_Item(
Nfs_Controle,Estabelecimento_Codigo,Empresa_Codigo,Numero_NotaFiscal,Data_Emissao,Situacao,
Nf_CONSIGNACAO,Nf_CONSIGNACAO_Item,Nfe,Nfe_Item_Controle,Pedido,
Pedido_Item_PE_Controle,Nf_Externo,Nf_Externo_Item_Controle    ,
Controle,Sequencia,Operacao_Codigo,Cfop_Codigo,Produto_Codigo,Produto_Descricao           ,
PRODUTO_UNIDADEMEDIDA,Ncm_Codigo,Tributacao_Origem,Tributacao_Ipi,Tributacao_Icms         ,
Tributacao_Pis,Tributacao_Cofins                                                          ,
Localizacao_Codigo,Quantidade,Valor_Unitario,Valor_Total,BaseCalculo_Icms,Percentual_Icms ,
Percentual_Ipi,Valor_Ipi,Percentual_Pis,Valor_Pis,Percentual_Cofins,Valor_Cofins          ,
T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,Tecelagem,
VALOR_ICMS,BASECALCULO_IPI,BASECALCULO_PIS,BASECALCULO_COFINS,
VALOR_ACRESCIMO, Valor_FRETE, Valor_SEGURO, PESO_LIQUIDO, PESO_BRUTO, CUBAGEM, VOLUMES,
VALOR_DESCONTO,FISCAL_ISENTAS_IPI,FISCAL_ISENTAS_ICMS,
FISCAL_OUTRAS_IPI,FISCAL_OUTRAS_ICMS,FISCAL_VALOR_ICMS,FISCAL_VALOR_IPI,
FISCAL_VALOR_PIS,FISCAL_VALOR_COFINS,FISCAL_PERCENTUAL_ICMS,FISCAL_PERCENTUAL_IPI,
FISCAL_PERCENTUAL_PIS,FISCAL_PERCENTUAL_COFINS,FISCAL_BASECALCULO_ICMS,
FISCAL_BASECALCULO_IPI,FISCAL_BASECALCULO_PIS,FISCAL_BASECALCULO_COFINS,
VALOR_CONTABIL, valor_basecalculo_icms, FISCAL_CFOP_CODIGO, FISCAL_TRIBUTACAO_ORIGEM,
FISCAL_TRIBUTACAO_ICMS, FISCAL_TRIBUTACAO_IPI, FISCAL_TRIBUTACAO_PIS,
FISCAL_TRIBUTACAO_COFINS, MODALIDADE_ICMS, MODALIDADE_ICMS_ST, MARGEM_ICMS_ST,
REDUCAO_ICMS_ST, BASECALCULO_ICMS_ST, ALIQUOTA_ICMS_ST, VALOR_ICMS_ST,
FISCAL_REDUCAO_ICMS_ST, FISCAL_BASECALCULO_ICMS_ST, FISCAL_ALIQUOTA_ICMS_ST, FISCAL_VALOR_ICMS_ST,
PEDIDO_CLIENTE, INFORMACOES_COMPLEMENTARES, FCI_MENSAGEM,
FCI_PARCELA_IMPORTACAO, FCI_CONTEUDO_IMPORTACAO, FCI_NUMERO )
VALUES  (
:Nfs_Controle,:Estabelecimento_Codigo,:Empresa_Codigo,:Numero_NotaFiscal,
:Data_Emissao,:Situacao,:Nf_CONSIGNACAO,:Nf_CONSIGNACAO_Item,
:Nfe,:Nfe_Item_Controle,:Pedido,:Pedido_Item_PE_Controle,:Nf_Externo,
:Nf_Externo_Item_Controle,:Controle,:Sequencia,:Operacao_Codigo,:Cfop_Codigo,
:Produto_Codigo,:Produto_Descricao,:Produto_UnidadeMedida,:Ncm_Codigo,:Tributacao_Origem,
:Tributacao_Ipi,:Tributacao_Icms,:Tributacao_Pis,:Tributacao_Cofins,:Localizacao_Codigo,
:Quantidade,:Valor_Unitario,:Valor_Total,:BaseCalculo_Icms,:Percentual_Icms,
:Percentual_Ipi,:Valor_Ipi,:Percentual_Pis,:Valor_Pis,:Percentual_Cofins,
:Valor_Cofins,:T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
:T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,:Tecelagem,
:VALOR_ICMS,:BASECALCULO_IPI,:BASECALCULO_PIS,:BASECALCULO_COFINS,
:VALOR_ACRESCIMO, :Valor_FRETE, :Valor_SEGURO, :PESO_LIQUIDO, :PESO_BRUTO, :CUBAGEM, :VOLUMES,
:VALOR_DESCONTO,:FISCAL_ISENTAS_IPI,:FISCAL_ISENTAS_ICMS,
:FISCAL_OUTRAS_IPI,:FISCAL_OUTRAS_ICMS,:FISCAL_VALOR_ICMS,:FISCAL_VALOR_IPI,
:FISCAL_VALOR_PIS,:FISCAL_VALOR_COFINS,:FISCAL_PERCENTUAL_ICMS,:FISCAL_PERCENTUAL_IPI,
:FISCAL_PERCENTUAL_PIS,:FISCAL_PERCENTUAL_COFINS,:FISCAL_BASECALCULO_ICMS,
:FISCAL_BASECALCULO_IPI,:FISCAL_BASECALCULO_PIS,:FISCAL_BASECALCULO_COFINS,
:VALOR_CONTABIL, :valor_basecalculo_icms, :FISCAL_CFOP_CODIGO,:FISCAL_TRIBUTACAO_ORIGEM,
:FISCAL_TRIBUTACAO_ICMS,:FISCAL_TRIBUTACAO_IPI,:FISCAL_TRIBUTACAO_PIS,
:FISCAL_TRIBUTACAO_COFINS,

:MODALIDADE_ICMS, :MODALIDADE_ICMS_ST, :MARGEM_ICMS_ST, :REDUCAO_ICMS_ST,
:BASECALCULO_ICMS_ST, :ALIQUOTA_ICMS_ST, :VALOR_ICMS_ST,
:FISCAL_REDUCAO_ICMS_ST, :FISCAL_BASECALCULO_ICMS_ST, :FISCAL_ALIQUOTA_ICMS_ST, :FISCAL_VALOR_ICMS_ST,
:PEDIDO_CLIENTE, :INFORMACOES_COMPLEMENTARES,
:FCI_MENSAGEM, :FCI_PARCELA_IMPORTACAO, :FCI_CONTEUDO_IMPORTACAO, :FCI_NUMERO );

INSERT INTO TbNfs_Item_Saldo (            
Nfs_Item_Controle,Nfs_Controle,Quantidade,
T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,  
T11,T12,T13,T14,T15,T16,T17,T18,T19,T20)  
VALUES (                                  
:Controle,:Nfs_Controle,:Quantidade,
:T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
:T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20);

END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPI_NFS_ITEM6 (
    NFS_CONTROLE integer,
    ESTABELECIMENTO_CODIGO integer,
    EMPRESA_CODIGO integer,
    NUMERO_NOTAFISCAL integer,
    DATA_EMISSAO date,
    SITUACAO integer,
    NF_CONSIGNACAO integer,
    NF_CONSIGNACAO_ITEM integer,
    NFE integer,
    NFE_ITEM_CONTROLE integer,
    PEDIDO integer,
    PEDIDO_ITEM_PE_CONTROLE integer,
    NF_EXTERNO integer,
    NF_EXTERNO_ITEM_CONTROLE integer,
    CONTROLE integer,
    SEQUENCIA integer,
    OPERACAO_CODIGO varchar(3),
    CFOP_CODIGO varchar(5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    NCM_CODIGO varchar(10),
    TRIBUTACAO_ORIGEM integer,
    TRIBUTACAO_IPI varchar(2),
    TRIBUTACAO_ICMS integer,
    TRIBUTACAO_PIS char(2),
    TRIBUTACAO_COFINS char(2),
    LOCALIZACAO_CODIGO integer,
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    BASECALCULO_ICMS numeric(10,5),
    PERCENTUAL_ICMS numeric(10,5),
    PERCENTUAL_IPI numeric(10,5),
    VALOR_IPI numeric(10,5),
    PERCENTUAL_PIS numeric(10,5),
    VALOR_PIS numeric(10,5),
    PERCENTUAL_COFINS numeric(10,5),
    VALOR_COFINS numeric(10,5),
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    TECELAGEM integer,
    VALOR_ICMS numeric(10,2),
    BASECALCULO_IPI numeric(10,2),
    BASECALCULO_PIS numeric(10,2),
    BASECALCULO_COFINS numeric(10,2),
    VALOR_ACRESCIMO numeric(10,2),
    VALOR_FRETE numeric(10,2),
    VALOR_SEGURO numeric(10,2),
    PESO_LIQUIDO numeric(10,4),
    PESO_BRUTO numeric(10,4),
    CUBAGEM numeric(10,4),
    VOLUMES integer,
    VALOR_DESCONTO numeric(10,2),
    FISCAL_ISENTAS_IPI numeric(10,2),
    FISCAL_ISENTAS_ICMS numeric(10,2),
    FISCAL_OUTRAS_IPI numeric(10,2),
    FISCAL_OUTRAS_ICMS numeric(10,2),
    FISCAL_VALOR_ICMS numeric(10,2),
    FISCAL_VALOR_IPI numeric(10,2),
    FISCAL_VALOR_PIS numeric(10,2),
    FISCAL_VALOR_COFINS numeric(10,2),
    FISCAL_PERCENTUAL_ICMS numeric(10,2),
    FISCAL_PERCENTUAL_IPI numeric(10,2),
    FISCAL_PERCENTUAL_PIS numeric(10,2),
    FISCAL_PERCENTUAL_COFINS numeric(10,2),
    FISCAL_BASECALCULO_ICMS numeric(10,2),
    FISCAL_BASECALCULO_IPI numeric(10,2),
    FISCAL_BASECALCULO_PIS numeric(10,2),
    FISCAL_BASECALCULO_COFINS numeric(10,2),
    VALOR_CONTABIL numeric(10,2),
    VALOR_BASECALCULO_ICMS numeric(10,2),
    FISCAL_CFOP_CODIGO varchar(5),
    FISCAL_TRIBUTACAO_ORIGEM integer,
    FISCAL_TRIBUTACAO_ICMS integer,
    FISCAL_TRIBUTACAO_IPI char(2),
    FISCAL_TRIBUTACAO_PIS char(2),
    FISCAL_TRIBUTACAO_COFINS char(2),
    MODALIDADE_ICMS char(1),
    MODALIDADE_ICMS_ST char(1),
    MARGEM_ICMS_ST numeric(15,4),
    REDUCAO_ICMS_ST numeric(15,4),
    BASECALCULO_ICMS_ST numeric(15,4),
    ALIQUOTA_ICMS_ST numeric(15,4),
    VALOR_ICMS_ST numeric(15,4),
    FISCAL_REDUCAO_ICMS_ST numeric(10,2),
    FISCAL_BASECALCULO_ICMS_ST numeric(10,2),
    FISCAL_ALIQUOTA_ICMS_ST numeric(10,2),
    FISCAL_VALOR_ICMS_ST numeric(10,2),
    PEDIDO_CLIENTE varchar(15),
    INFORMACOES_COMPLEMENTARES varchar(200),
    FCI_MENSAGEM varchar(255),
    FCI_PARCELA_IMPORTACAO numeric(15,2),
    FCI_CONTEUDO_IMPORTACAO numeric(15,2),
    FCI_NUMERO varchar(40),
    CCUSTO varchar(8),
    CONTA_CONTABIL varchar(11),
    ENQUADRAMENTO_IPI varchar(3))
as
BEGIN
INSERT INTO TbNfs_Item(
Nfs_Controle,Estabelecimento_Codigo,Empresa_Codigo,Numero_NotaFiscal,Data_Emissao,Situacao,
Nf_CONSIGNACAO,Nf_CONSIGNACAO_Item,Nfe,Nfe_Item_Controle,Pedido,
Pedido_Item_PE_Controle,Nf_Externo,Nf_Externo_Item_Controle    ,
Controle,Sequencia,Operacao_Codigo,Cfop_Codigo,Produto_Codigo,Produto_Descricao           ,
PRODUTO_UNIDADEMEDIDA,Ncm_Codigo,Tributacao_Origem,Tributacao_Ipi,Tributacao_Icms         ,
Tributacao_Pis,Tributacao_Cofins                                                          ,
Localizacao_Codigo,Quantidade,Valor_Unitario,Valor_Total,BaseCalculo_Icms,Percentual_Icms ,
Percentual_Ipi,Valor_Ipi,Percentual_Pis,Valor_Pis,Percentual_Cofins,Valor_Cofins          ,
T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,Tecelagem,
VALOR_ICMS,BASECALCULO_IPI,BASECALCULO_PIS,BASECALCULO_COFINS,
VALOR_ACRESCIMO, Valor_FRETE, Valor_SEGURO, PESO_LIQUIDO, PESO_BRUTO, CUBAGEM, VOLUMES,
VALOR_DESCONTO,FISCAL_ISENTAS_IPI,FISCAL_ISENTAS_ICMS,
FISCAL_OUTRAS_IPI,FISCAL_OUTRAS_ICMS,FISCAL_VALOR_ICMS,FISCAL_VALOR_IPI,
FISCAL_VALOR_PIS,FISCAL_VALOR_COFINS,FISCAL_PERCENTUAL_ICMS,FISCAL_PERCENTUAL_IPI,
FISCAL_PERCENTUAL_PIS,FISCAL_PERCENTUAL_COFINS,FISCAL_BASECALCULO_ICMS,
FISCAL_BASECALCULO_IPI,FISCAL_BASECALCULO_PIS,FISCAL_BASECALCULO_COFINS,
VALOR_CONTABIL, valor_basecalculo_icms, FISCAL_CFOP_CODIGO, FISCAL_TRIBUTACAO_ORIGEM,
FISCAL_TRIBUTACAO_ICMS, FISCAL_TRIBUTACAO_IPI, FISCAL_TRIBUTACAO_PIS,
FISCAL_TRIBUTACAO_COFINS, MODALIDADE_ICMS, MODALIDADE_ICMS_ST, MARGEM_ICMS_ST,
REDUCAO_ICMS_ST, BASECALCULO_ICMS_ST, ALIQUOTA_ICMS_ST, VALOR_ICMS_ST,
FISCAL_REDUCAO_ICMS_ST, FISCAL_BASECALCULO_ICMS_ST, FISCAL_ALIQUOTA_ICMS_ST, FISCAL_VALOR_ICMS_ST,
PEDIDO_CLIENTE, INFORMACOES_COMPLEMENTARES, FCI_MENSAGEM,
FCI_PARCELA_IMPORTACAO, FCI_CONTEUDO_IMPORTACAO, FCI_NUMERO,ccusto,conta_contabil,enquadramento_ipi )
VALUES  (
:Nfs_Controle,:Estabelecimento_Codigo,:Empresa_Codigo,:Numero_NotaFiscal,
:Data_Emissao,:Situacao,:Nf_CONSIGNACAO,:Nf_CONSIGNACAO_Item,
:Nfe,:Nfe_Item_Controle,:Pedido,:Pedido_Item_PE_Controle,:Nf_Externo,
:Nf_Externo_Item_Controle,:Controle,:Sequencia,:Operacao_Codigo,:Cfop_Codigo,
:Produto_Codigo,:Produto_Descricao,:Produto_UnidadeMedida,:Ncm_Codigo,:Tributacao_Origem,
:Tributacao_Ipi,:Tributacao_Icms,:Tributacao_Pis,:Tributacao_Cofins,:Localizacao_Codigo,
:Quantidade,:Valor_Unitario,:Valor_Total,:BaseCalculo_Icms,:Percentual_Icms,
:Percentual_Ipi,:Valor_Ipi,:Percentual_Pis,:Valor_Pis,:Percentual_Cofins,
:Valor_Cofins,:T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
:T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,:Tecelagem,
:VALOR_ICMS,:BASECALCULO_IPI,:BASECALCULO_PIS,:BASECALCULO_COFINS,
:VALOR_ACRESCIMO, :Valor_FRETE, :Valor_SEGURO, :PESO_LIQUIDO, :PESO_BRUTO, :CUBAGEM, :VOLUMES,
:VALOR_DESCONTO,:FISCAL_ISENTAS_IPI,:FISCAL_ISENTAS_ICMS,
:FISCAL_OUTRAS_IPI,:FISCAL_OUTRAS_ICMS,:FISCAL_VALOR_ICMS,:FISCAL_VALOR_IPI,
:FISCAL_VALOR_PIS,:FISCAL_VALOR_COFINS,:FISCAL_PERCENTUAL_ICMS,:FISCAL_PERCENTUAL_IPI,
:FISCAL_PERCENTUAL_PIS,:FISCAL_PERCENTUAL_COFINS,:FISCAL_BASECALCULO_ICMS,
:FISCAL_BASECALCULO_IPI,:FISCAL_BASECALCULO_PIS,:FISCAL_BASECALCULO_COFINS,
:VALOR_CONTABIL, :valor_basecalculo_icms, :FISCAL_CFOP_CODIGO,:FISCAL_TRIBUTACAO_ORIGEM,
:FISCAL_TRIBUTACAO_ICMS,:FISCAL_TRIBUTACAO_IPI,:FISCAL_TRIBUTACAO_PIS,
:FISCAL_TRIBUTACAO_COFINS,

:MODALIDADE_ICMS, :MODALIDADE_ICMS_ST, :MARGEM_ICMS_ST, :REDUCAO_ICMS_ST,
:BASECALCULO_ICMS_ST, :ALIQUOTA_ICMS_ST, :VALOR_ICMS_ST,
:FISCAL_REDUCAO_ICMS_ST, :FISCAL_BASECALCULO_ICMS_ST, :FISCAL_ALIQUOTA_ICMS_ST, :FISCAL_VALOR_ICMS_ST,
:PEDIDO_CLIENTE, :INFORMACOES_COMPLEMENTARES,
:FCI_MENSAGEM, :FCI_PARCELA_IMPORTACAO, :FCI_CONTEUDO_IMPORTACAO, :FCI_NUMERO,:ccusto,:conta_contabil,:enquadramento_ipi );

INSERT INTO TbNfs_Item_Saldo (            
Nfs_Item_Controle,Nfs_Controle,Quantidade,
T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,  
T11,T12,T13,T14,T15,T16,T17,T18,T19,T20)  
VALUES (                                  
:Controle,:Nfs_Controle,:Quantidade,
:T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
:T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20);

END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPI_NFS_ITEM7 (
    NFS_CONTROLE integer,
    ESTABELECIMENTO_CODIGO integer,
    EMPRESA_CODIGO integer,
    NUMERO_NOTAFISCAL integer,
    DATA_EMISSAO date,
    SITUACAO integer,
    NF_CONSIGNACAO integer,
    NF_CONSIGNACAO_ITEM integer,
    NFE integer,
    NFE_ITEM_CONTROLE integer,
    PEDIDO integer,
    PEDIDO_ITEM_PE_CONTROLE integer,
    NF_EXTERNO integer,
    NF_EXTERNO_ITEM_CONTROLE integer,
    CONTROLE integer,
    SEQUENCIA integer,
    OPERACAO_CODIGO varchar(3),
    CFOP_CODIGO varchar(5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    NCM_CODIGO varchar(10),
    TRIBUTACAO_ORIGEM integer,
    TRIBUTACAO_IPI varchar(2),
    TRIBUTACAO_ICMS integer,
    TRIBUTACAO_PIS char(2),
    TRIBUTACAO_COFINS char(2),
    LOCALIZACAO_CODIGO integer,
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    BASECALCULO_ICMS numeric(10,5),
    PERCENTUAL_ICMS numeric(10,5),
    PERCENTUAL_IPI numeric(10,5),
    VALOR_IPI numeric(10,5),
    PERCENTUAL_PIS numeric(10,5),
    VALOR_PIS numeric(10,5),
    PERCENTUAL_COFINS numeric(10,5),
    VALOR_COFINS numeric(10,5),
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    TECELAGEM integer,
    VALOR_ICMS numeric(10,2),
    BASECALCULO_IPI numeric(10,2),
    BASECALCULO_PIS numeric(10,2),
    BASECALCULO_COFINS numeric(10,2),
    VALOR_ACRESCIMO numeric(10,2),
    VALOR_FRETE numeric(10,2),
    VALOR_SEGURO numeric(10,2),
    PESO_LIQUIDO numeric(10,4),
    PESO_BRUTO numeric(10,4),
    CUBAGEM numeric(10,4),
    VOLUMES integer,
    VALOR_DESCONTO numeric(10,2),
    FISCAL_ISENTAS_IPI numeric(10,2),
    FISCAL_ISENTAS_ICMS numeric(10,2),
    FISCAL_OUTRAS_IPI numeric(10,2),
    FISCAL_OUTRAS_ICMS numeric(10,2),
    FISCAL_VALOR_ICMS numeric(10,2),
    FISCAL_VALOR_IPI numeric(10,2),
    FISCAL_VALOR_PIS numeric(10,2),
    FISCAL_VALOR_COFINS numeric(10,2),
    FISCAL_PERCENTUAL_ICMS numeric(10,2),
    FISCAL_PERCENTUAL_IPI numeric(10,2),
    FISCAL_PERCENTUAL_PIS numeric(10,2),
    FISCAL_PERCENTUAL_COFINS numeric(10,2),
    FISCAL_BASECALCULO_ICMS numeric(10,2),
    FISCAL_BASECALCULO_IPI numeric(10,2),
    FISCAL_BASECALCULO_PIS numeric(10,2),
    FISCAL_BASECALCULO_COFINS numeric(10,2),
    VALOR_CONTABIL numeric(10,2),
    VALOR_BASECALCULO_ICMS numeric(10,2),
    FISCAL_CFOP_CODIGO varchar(5),
    FISCAL_TRIBUTACAO_ORIGEM integer,
    FISCAL_TRIBUTACAO_ICMS integer,
    FISCAL_TRIBUTACAO_IPI char(2),
    FISCAL_TRIBUTACAO_PIS char(2),
    FISCAL_TRIBUTACAO_COFINS char(2),
    MODALIDADE_ICMS char(1),
    MODALIDADE_ICMS_ST char(1),
    MARGEM_ICMS_ST numeric(15,4),
    REDUCAO_ICMS_ST numeric(15,4),
    BASECALCULO_ICMS_ST numeric(15,4),
    ALIQUOTA_ICMS_ST numeric(15,4),
    VALOR_ICMS_ST numeric(15,4),
    FISCAL_REDUCAO_ICMS_ST numeric(10,2),
    FISCAL_BASECALCULO_ICMS_ST numeric(10,2),
    FISCAL_ALIQUOTA_ICMS_ST numeric(10,2),
    FISCAL_VALOR_ICMS_ST numeric(10,2),
    PEDIDO_CLIENTE varchar(15),
    INFORMACOES_COMPLEMENTARES varchar(200),
    FCI_MENSAGEM varchar(255),
    FCI_PARCELA_IMPORTACAO numeric(15,2),
    FCI_CONTEUDO_IMPORTACAO numeric(15,2),
    FCI_NUMERO varchar(40),
    CCUSTO varchar(8),
    CONTA_CONTABIL varchar(11),
    ENQUADRAMENTO_IPI varchar(3),
    QUANTIDADE_ALTERNATIVA numeric(18,4),
    UM_ALTERNATIVA varchar(10),
    VALOR_ALTERNATIVO numeric(18,10))
as
BEGIN
INSERT INTO TbNfs_Item(
Nfs_Controle,Estabelecimento_Codigo,Empresa_Codigo,Numero_NotaFiscal,Data_Emissao,Situacao,
Nf_CONSIGNACAO,Nf_CONSIGNACAO_Item,Nfe,Nfe_Item_Controle,Pedido,
Pedido_Item_PE_Controle,Nf_Externo,Nf_Externo_Item_Controle    ,
Controle,Sequencia,Operacao_Codigo,Cfop_Codigo,Produto_Codigo,Produto_Descricao           ,
PRODUTO_UNIDADEMEDIDA,Ncm_Codigo,Tributacao_Origem,Tributacao_Ipi,Tributacao_Icms         ,
Tributacao_Pis,Tributacao_Cofins                                                          ,
Localizacao_Codigo,Quantidade,Valor_Unitario,Valor_Total,BaseCalculo_Icms,Percentual_Icms ,
Percentual_Ipi,Valor_Ipi,Percentual_Pis,Valor_Pis,Percentual_Cofins,Valor_Cofins          ,
T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,Tecelagem,
VALOR_ICMS,BASECALCULO_IPI,BASECALCULO_PIS,BASECALCULO_COFINS,
VALOR_ACRESCIMO, Valor_FRETE, Valor_SEGURO, PESO_LIQUIDO, PESO_BRUTO, CUBAGEM, VOLUMES,
VALOR_DESCONTO,FISCAL_ISENTAS_IPI,FISCAL_ISENTAS_ICMS,
FISCAL_OUTRAS_IPI,FISCAL_OUTRAS_ICMS,FISCAL_VALOR_ICMS,FISCAL_VALOR_IPI,
FISCAL_VALOR_PIS,FISCAL_VALOR_COFINS,FISCAL_PERCENTUAL_ICMS,FISCAL_PERCENTUAL_IPI,
FISCAL_PERCENTUAL_PIS,FISCAL_PERCENTUAL_COFINS,FISCAL_BASECALCULO_ICMS,
FISCAL_BASECALCULO_IPI,FISCAL_BASECALCULO_PIS,FISCAL_BASECALCULO_COFINS,
VALOR_CONTABIL, valor_basecalculo_icms, FISCAL_CFOP_CODIGO, FISCAL_TRIBUTACAO_ORIGEM,
FISCAL_TRIBUTACAO_ICMS, FISCAL_TRIBUTACAO_IPI, FISCAL_TRIBUTACAO_PIS,
FISCAL_TRIBUTACAO_COFINS, MODALIDADE_ICMS, MODALIDADE_ICMS_ST, MARGEM_ICMS_ST,
REDUCAO_ICMS_ST, BASECALCULO_ICMS_ST, ALIQUOTA_ICMS_ST, VALOR_ICMS_ST,
FISCAL_REDUCAO_ICMS_ST, FISCAL_BASECALCULO_ICMS_ST, FISCAL_ALIQUOTA_ICMS_ST, FISCAL_VALOR_ICMS_ST,
PEDIDO_CLIENTE, INFORMACOES_COMPLEMENTARES, FCI_MENSAGEM,
FCI_PARCELA_IMPORTACAO, FCI_CONTEUDO_IMPORTACAO, FCI_NUMERO,ccusto,conta_contabil,enquadramento_ipi,
QUANTIDADE_ALTERNATIVA, UM_ALTERNATIVA, VALOR_ALTERNATIVO)
VALUES  (
:Nfs_Controle,:Estabelecimento_Codigo,:Empresa_Codigo,:Numero_NotaFiscal,
:Data_Emissao,:Situacao,:Nf_CONSIGNACAO,:Nf_CONSIGNACAO_Item,
:Nfe,:Nfe_Item_Controle,:Pedido,:Pedido_Item_PE_Controle,:Nf_Externo,
:Nf_Externo_Item_Controle,:Controle,:Sequencia,:Operacao_Codigo,:Cfop_Codigo,
:Produto_Codigo,:Produto_Descricao,:Produto_UnidadeMedida,:Ncm_Codigo,:Tributacao_Origem,
:Tributacao_Ipi,:Tributacao_Icms,:Tributacao_Pis,:Tributacao_Cofins,:Localizacao_Codigo,
:Quantidade,:Valor_Unitario,:Valor_Total,:BaseCalculo_Icms,:Percentual_Icms,
:Percentual_Ipi,:Valor_Ipi,:Percentual_Pis,:Valor_Pis,:Percentual_Cofins,
:Valor_Cofins,:T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
:T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,:Tecelagem,
:VALOR_ICMS,:BASECALCULO_IPI,:BASECALCULO_PIS,:BASECALCULO_COFINS,
:VALOR_ACRESCIMO, :Valor_FRETE, :Valor_SEGURO, :PESO_LIQUIDO, :PESO_BRUTO, :CUBAGEM, :VOLUMES,
:VALOR_DESCONTO,:FISCAL_ISENTAS_IPI,:FISCAL_ISENTAS_ICMS,
:FISCAL_OUTRAS_IPI,:FISCAL_OUTRAS_ICMS,:FISCAL_VALOR_ICMS,:FISCAL_VALOR_IPI,
:FISCAL_VALOR_PIS,:FISCAL_VALOR_COFINS,:FISCAL_PERCENTUAL_ICMS,:FISCAL_PERCENTUAL_IPI,
:FISCAL_PERCENTUAL_PIS,:FISCAL_PERCENTUAL_COFINS,:FISCAL_BASECALCULO_ICMS,
:FISCAL_BASECALCULO_IPI,:FISCAL_BASECALCULO_PIS,:FISCAL_BASECALCULO_COFINS,
:VALOR_CONTABIL, :valor_basecalculo_icms, :FISCAL_CFOP_CODIGO,:FISCAL_TRIBUTACAO_ORIGEM,
:FISCAL_TRIBUTACAO_ICMS,:FISCAL_TRIBUTACAO_IPI,:FISCAL_TRIBUTACAO_PIS,
:FISCAL_TRIBUTACAO_COFINS,

:MODALIDADE_ICMS, :MODALIDADE_ICMS_ST, :MARGEM_ICMS_ST, :REDUCAO_ICMS_ST,
:BASECALCULO_ICMS_ST, :ALIQUOTA_ICMS_ST, :VALOR_ICMS_ST,
:FISCAL_REDUCAO_ICMS_ST, :FISCAL_BASECALCULO_ICMS_ST, :FISCAL_ALIQUOTA_ICMS_ST, :FISCAL_VALOR_ICMS_ST,
:PEDIDO_CLIENTE, :INFORMACOES_COMPLEMENTARES,
:FCI_MENSAGEM, :FCI_PARCELA_IMPORTACAO, :FCI_CONTEUDO_IMPORTACAO, :FCI_NUMERO,:ccusto,:conta_contabil,:enquadramento_ipi,
:QUANTIDADE_ALTERNATIVA, :UM_ALTERNATIVA, :VALOR_ALTERNATIVO);

INSERT INTO TbNfs_Item_Saldo (            
Nfs_Item_Controle,Nfs_Controle,Quantidade,
T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,  
T11,T12,T13,T14,T15,T16,T17,T18,T19,T20)  
VALUES (                                  
:Controle,:Nfs_Controle,:Quantidade,
:T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
:T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20);

END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPI_NFS_ITEM8 (
    NFS_CONTROLE integer,
    ESTABELECIMENTO_CODIGO integer,
    EMPRESA_CODIGO integer,
    NUMERO_NOTAFISCAL integer,
    DATA_EMISSAO date,
    SITUACAO integer,
    NF_CONSIGNACAO integer,
    NF_CONSIGNACAO_ITEM integer,
    NFE integer,
    NFE_ITEM_CONTROLE integer,
    PEDIDO integer,
    PEDIDO_ITEM_PE_CONTROLE integer,
    NF_EXTERNO integer,
    NF_EXTERNO_ITEM_CONTROLE integer,
    CONTROLE integer,
    SEQUENCIA integer,
    OPERACAO_CODIGO varchar(3),
    CFOP_CODIGO varchar(5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    NCM_CODIGO varchar(10),
    TRIBUTACAO_ORIGEM integer,
    TRIBUTACAO_IPI varchar(2),
    TRIBUTACAO_ICMS integer,
    TRIBUTACAO_PIS char(2),
    TRIBUTACAO_COFINS char(2),
    LOCALIZACAO_CODIGO integer,
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    BASECALCULO_ICMS numeric(10,5),
    PERCENTUAL_ICMS numeric(10,5),
    PERCENTUAL_IPI numeric(10,5),
    VALOR_IPI numeric(10,5),
    PERCENTUAL_PIS numeric(10,5),
    VALOR_PIS numeric(10,5),
    PERCENTUAL_COFINS numeric(10,5),
    VALOR_COFINS numeric(10,5),
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    TECELAGEM integer,
    VALOR_ICMS numeric(10,2),
    BASECALCULO_IPI numeric(10,2),
    BASECALCULO_PIS numeric(10,2),
    BASECALCULO_COFINS numeric(10,2),
    VALOR_ACRESCIMO numeric(10,2),
    VALOR_FRETE numeric(10,2),
    VALOR_SEGURO numeric(10,2),
    PESO_LIQUIDO numeric(10,4),
    PESO_BRUTO numeric(10,4),
    CUBAGEM numeric(10,4),
    VOLUMES integer,
    VALOR_DESCONTO numeric(10,2),
    FISCAL_ISENTAS_IPI numeric(10,2),
    FISCAL_ISENTAS_ICMS numeric(10,2),
    FISCAL_OUTRAS_IPI numeric(10,2),
    FISCAL_OUTRAS_ICMS numeric(10,2),
    FISCAL_VALOR_ICMS numeric(10,2),
    FISCAL_VALOR_IPI numeric(10,2),
    FISCAL_VALOR_PIS numeric(10,2),
    FISCAL_VALOR_COFINS numeric(10,2),
    FISCAL_PERCENTUAL_ICMS numeric(10,2),
    FISCAL_PERCENTUAL_IPI numeric(10,2),
    FISCAL_PERCENTUAL_PIS numeric(10,2),
    FISCAL_PERCENTUAL_COFINS numeric(10,2),
    FISCAL_BASECALCULO_ICMS numeric(10,2),
    FISCAL_BASECALCULO_IPI numeric(10,2),
    FISCAL_BASECALCULO_PIS numeric(10,2),
    FISCAL_BASECALCULO_COFINS numeric(10,2),
    VALOR_CONTABIL numeric(10,2),
    VALOR_BASECALCULO_ICMS numeric(10,2),
    FISCAL_CFOP_CODIGO varchar(5),
    FISCAL_TRIBUTACAO_ORIGEM integer,
    FISCAL_TRIBUTACAO_ICMS integer,
    FISCAL_TRIBUTACAO_IPI char(2),
    FISCAL_TRIBUTACAO_PIS char(2),
    FISCAL_TRIBUTACAO_COFINS char(2),
    MODALIDADE_ICMS char(1),
    MODALIDADE_ICMS_ST char(1),
    MARGEM_ICMS_ST numeric(15,4),
    REDUCAO_ICMS_ST numeric(15,4),
    BASECALCULO_ICMS_ST numeric(15,4),
    ALIQUOTA_ICMS_ST numeric(15,4),
    VALOR_ICMS_ST numeric(15,4),
    FISCAL_REDUCAO_ICMS_ST numeric(10,2),
    FISCAL_BASECALCULO_ICMS_ST numeric(10,2),
    FISCAL_ALIQUOTA_ICMS_ST numeric(10,2),
    FISCAL_VALOR_ICMS_ST numeric(10,2),
    PEDIDO_CLIENTE varchar(15),
    INFORMACOES_COMPLEMENTARES varchar(200),
    FCI_MENSAGEM varchar(255),
    FCI_PARCELA_IMPORTACAO numeric(15,2),
    FCI_CONTEUDO_IMPORTACAO numeric(15,2),
    FCI_NUMERO varchar(40),
    CCUSTO varchar(8),
    CONTA_CONTABIL varchar(11),
    ENQUADRAMENTO_IPI varchar(3),
    QUANTIDADE_ALTERNATIVA numeric(18,4),
    UM_ALTERNATIVA varchar(10),
    VALOR_ALTERNATIVO numeric(18,10),
    REDUCAO_BASE_PISCOF char(1))
as
BEGIN
INSERT INTO TbNfs_Item(
Nfs_Controle,Estabelecimento_Codigo,Empresa_Codigo,Numero_NotaFiscal,Data_Emissao,Situacao,
Nf_CONSIGNACAO,Nf_CONSIGNACAO_Item,Nfe,Nfe_Item_Controle,Pedido,
Pedido_Item_PE_Controle,Nf_Externo,Nf_Externo_Item_Controle    ,
Controle,Sequencia,Operacao_Codigo,Cfop_Codigo,Produto_Codigo,Produto_Descricao           ,
PRODUTO_UNIDADEMEDIDA,Ncm_Codigo,Tributacao_Origem,Tributacao_Ipi,Tributacao_Icms         ,
Tributacao_Pis,Tributacao_Cofins                                                          ,
Localizacao_Codigo,Quantidade,Valor_Unitario,Valor_Total,BaseCalculo_Icms,Percentual_Icms ,
Percentual_Ipi,Valor_Ipi,Percentual_Pis,Valor_Pis,Percentual_Cofins,Valor_Cofins          ,
T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,Tecelagem,
VALOR_ICMS,BASECALCULO_IPI,BASECALCULO_PIS,BASECALCULO_COFINS,
VALOR_ACRESCIMO, Valor_FRETE, Valor_SEGURO, PESO_LIQUIDO, PESO_BRUTO, CUBAGEM, VOLUMES,
VALOR_DESCONTO,FISCAL_ISENTAS_IPI,FISCAL_ISENTAS_ICMS,
FISCAL_OUTRAS_IPI,FISCAL_OUTRAS_ICMS,FISCAL_VALOR_ICMS,FISCAL_VALOR_IPI,
FISCAL_VALOR_PIS,FISCAL_VALOR_COFINS,FISCAL_PERCENTUAL_ICMS,FISCAL_PERCENTUAL_IPI,
FISCAL_PERCENTUAL_PIS,FISCAL_PERCENTUAL_COFINS,FISCAL_BASECALCULO_ICMS,
FISCAL_BASECALCULO_IPI,FISCAL_BASECALCULO_PIS,FISCAL_BASECALCULO_COFINS,
VALOR_CONTABIL, valor_basecalculo_icms, FISCAL_CFOP_CODIGO, FISCAL_TRIBUTACAO_ORIGEM,
FISCAL_TRIBUTACAO_ICMS, FISCAL_TRIBUTACAO_IPI, FISCAL_TRIBUTACAO_PIS,
FISCAL_TRIBUTACAO_COFINS, MODALIDADE_ICMS, MODALIDADE_ICMS_ST, MARGEM_ICMS_ST,
REDUCAO_ICMS_ST, BASECALCULO_ICMS_ST, ALIQUOTA_ICMS_ST, VALOR_ICMS_ST,
FISCAL_REDUCAO_ICMS_ST, FISCAL_BASECALCULO_ICMS_ST, FISCAL_ALIQUOTA_ICMS_ST, FISCAL_VALOR_ICMS_ST,
PEDIDO_CLIENTE, INFORMACOES_COMPLEMENTARES, FCI_MENSAGEM,
FCI_PARCELA_IMPORTACAO, FCI_CONTEUDO_IMPORTACAO, FCI_NUMERO,ccusto,conta_contabil,enquadramento_ipi,
QUANTIDADE_ALTERNATIVA, UM_ALTERNATIVA, VALOR_ALTERNATIVO, REDUCAO_BASE_PISCOF)
VALUES  (
:Nfs_Controle,:Estabelecimento_Codigo,:Empresa_Codigo,:Numero_NotaFiscal,
:Data_Emissao,:Situacao,:Nf_CONSIGNACAO,:Nf_CONSIGNACAO_Item,
:Nfe,:Nfe_Item_Controle,:Pedido,:Pedido_Item_PE_Controle,:Nf_Externo,
:Nf_Externo_Item_Controle,:Controle,:Sequencia,:Operacao_Codigo,:Cfop_Codigo,
:Produto_Codigo,:Produto_Descricao,:Produto_UnidadeMedida,:Ncm_Codigo,:Tributacao_Origem,
:Tributacao_Ipi,:Tributacao_Icms,:Tributacao_Pis,:Tributacao_Cofins,:Localizacao_Codigo,
:Quantidade,:Valor_Unitario,:Valor_Total,:BaseCalculo_Icms,:Percentual_Icms,
:Percentual_Ipi,:Valor_Ipi,:Percentual_Pis,:Valor_Pis,:Percentual_Cofins,
:Valor_Cofins,:T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
:T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,:Tecelagem,
:VALOR_ICMS,:BASECALCULO_IPI,:BASECALCULO_PIS,:BASECALCULO_COFINS,
:VALOR_ACRESCIMO, :Valor_FRETE, :Valor_SEGURO, :PESO_LIQUIDO, :PESO_BRUTO, :CUBAGEM, :VOLUMES,
:VALOR_DESCONTO,:FISCAL_ISENTAS_IPI,:FISCAL_ISENTAS_ICMS,
:FISCAL_OUTRAS_IPI,:FISCAL_OUTRAS_ICMS,:FISCAL_VALOR_ICMS,:FISCAL_VALOR_IPI,
:FISCAL_VALOR_PIS,:FISCAL_VALOR_COFINS,:FISCAL_PERCENTUAL_ICMS,:FISCAL_PERCENTUAL_IPI,
:FISCAL_PERCENTUAL_PIS,:FISCAL_PERCENTUAL_COFINS,:FISCAL_BASECALCULO_ICMS,
:FISCAL_BASECALCULO_IPI,:FISCAL_BASECALCULO_PIS,:FISCAL_BASECALCULO_COFINS,
:VALOR_CONTABIL, :valor_basecalculo_icms, :FISCAL_CFOP_CODIGO,:FISCAL_TRIBUTACAO_ORIGEM,
:FISCAL_TRIBUTACAO_ICMS,:FISCAL_TRIBUTACAO_IPI,:FISCAL_TRIBUTACAO_PIS,
:FISCAL_TRIBUTACAO_COFINS,

:MODALIDADE_ICMS, :MODALIDADE_ICMS_ST, :MARGEM_ICMS_ST, :REDUCAO_ICMS_ST,
:BASECALCULO_ICMS_ST, :ALIQUOTA_ICMS_ST, :VALOR_ICMS_ST,
:FISCAL_REDUCAO_ICMS_ST, :FISCAL_BASECALCULO_ICMS_ST, :FISCAL_ALIQUOTA_ICMS_ST, :FISCAL_VALOR_ICMS_ST,
:PEDIDO_CLIENTE, :INFORMACOES_COMPLEMENTARES,
:FCI_MENSAGEM, :FCI_PARCELA_IMPORTACAO, :FCI_CONTEUDO_IMPORTACAO, :FCI_NUMERO,:ccusto,:conta_contabil,:enquadramento_ipi,
:QUANTIDADE_ALTERNATIVA, :UM_ALTERNATIVA, :VALOR_ALTERNATIVO, :REDUCAO_BASE_PISCOF);

INSERT INTO TbNfs_Item_Saldo (            
Nfs_Item_Controle,Nfs_Controle,Quantidade,
T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,  
T11,T12,T13,T14,T15,T16,T17,T18,T19,T20)  
VALUES (                                  
:Controle,:Nfs_Controle,:Quantidade,
:T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
:T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20);

END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPI_NFS_ITEM9 (
    NFS_CONTROLE integer,
    ESTABELECIMENTO_CODIGO integer,
    EMPRESA_CODIGO integer,
    NUMERO_NOTAFISCAL integer,
    DATA_EMISSAO date,
    SITUACAO integer,
    NF_CONSIGNACAO integer,
    NF_CONSIGNACAO_ITEM integer,
    NFE integer,
    NFE_ITEM_CONTROLE integer,
    PEDIDO integer,
    PEDIDO_ITEM_PE_CONTROLE integer,
    NF_EXTERNO integer,
    NF_EXTERNO_ITEM_CONTROLE integer,
    CONTROLE integer,
    SEQUENCIA integer,
    OPERACAO_CODIGO varchar(3),
    CFOP_CODIGO varchar(5),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    NCM_CODIGO varchar(10),
    TRIBUTACAO_ORIGEM integer,
    TRIBUTACAO_IPI varchar(2),
    TRIBUTACAO_ICMS integer,
    TRIBUTACAO_PIS char(2),
    TRIBUTACAO_COFINS char(2),
    LOCALIZACAO_CODIGO integer,
    QUANTIDADE numeric(10,5),
    VALOR_UNITARIO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    BASECALCULO_ICMS numeric(10,5),
    PERCENTUAL_ICMS numeric(10,5),
    PERCENTUAL_IPI numeric(10,5),
    VALOR_IPI numeric(10,5),
    PERCENTUAL_PIS numeric(10,5),
    VALOR_PIS numeric(10,5),
    PERCENTUAL_COFINS numeric(10,5),
    VALOR_COFINS numeric(10,5),
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    TECELAGEM integer,
    VALOR_ICMS numeric(10,2),
    BASECALCULO_IPI numeric(10,2),
    BASECALCULO_PIS numeric(10,2),
    BASECALCULO_COFINS numeric(10,2),
    VALOR_ACRESCIMO numeric(10,2),
    VALOR_FRETE numeric(10,2),
    VALOR_SEGURO numeric(10,2),
    PESO_LIQUIDO numeric(10,4),
    PESO_BRUTO numeric(10,4),
    CUBAGEM numeric(10,4),
    VOLUMES integer,
    VALOR_DESCONTO numeric(10,2),
    FISCAL_ISENTAS_IPI numeric(10,2),
    FISCAL_ISENTAS_ICMS numeric(10,2),
    FISCAL_OUTRAS_IPI numeric(10,2),
    FISCAL_OUTRAS_ICMS numeric(10,2),
    FISCAL_VALOR_ICMS numeric(10,2),
    FISCAL_VALOR_IPI numeric(10,2),
    FISCAL_VALOR_PIS numeric(10,2),
    FISCAL_VALOR_COFINS numeric(10,2),
    FISCAL_PERCENTUAL_ICMS numeric(10,2),
    FISCAL_PERCENTUAL_IPI numeric(10,2),
    FISCAL_PERCENTUAL_PIS numeric(10,2),
    FISCAL_PERCENTUAL_COFINS numeric(10,2),
    FISCAL_BASECALCULO_ICMS numeric(10,2),
    FISCAL_BASECALCULO_IPI numeric(10,2),
    FISCAL_BASECALCULO_PIS numeric(10,2),
    FISCAL_BASECALCULO_COFINS numeric(10,2),
    VALOR_CONTABIL numeric(10,2),
    VALOR_BASECALCULO_ICMS numeric(10,2),
    FISCAL_CFOP_CODIGO varchar(5),
    FISCAL_TRIBUTACAO_ORIGEM integer,
    FISCAL_TRIBUTACAO_ICMS integer,
    FISCAL_TRIBUTACAO_IPI char(2),
    FISCAL_TRIBUTACAO_PIS char(2),
    FISCAL_TRIBUTACAO_COFINS char(2),
    MODALIDADE_ICMS char(1),
    MODALIDADE_ICMS_ST char(1),
    MARGEM_ICMS_ST numeric(15,4),
    REDUCAO_ICMS_ST numeric(15,4),
    BASECALCULO_ICMS_ST numeric(15,4),
    ALIQUOTA_ICMS_ST numeric(15,4),
    VALOR_ICMS_ST numeric(15,4),
    FISCAL_REDUCAO_ICMS_ST numeric(10,2),
    FISCAL_BASECALCULO_ICMS_ST numeric(10,2),
    FISCAL_ALIQUOTA_ICMS_ST numeric(10,2),
    FISCAL_VALOR_ICMS_ST numeric(10,2),
    PEDIDO_CLIENTE varchar(15),
    INFORMACOES_COMPLEMENTARES varchar(500),
    FCI_MENSAGEM varchar(255),
    FCI_PARCELA_IMPORTACAO numeric(15,2),
    FCI_CONTEUDO_IMPORTACAO numeric(15,2),
    FCI_NUMERO varchar(40),
    CCUSTO varchar(8),
    CONTA_CONTABIL varchar(11),
    ENQUADRAMENTO_IPI varchar(3),
    QUANTIDADE_ALTERNATIVA numeric(18,4),
    UM_ALTERNATIVA varchar(10),
    VALOR_ALTERNATIVO numeric(18,10),
    REDUCAO_BASE_PISCOF char(1))
as
BEGIN
INSERT INTO TbNfs_Item(
Nfs_Controle,Estabelecimento_Codigo,Empresa_Codigo,Numero_NotaFiscal,Data_Emissao,Situacao,
Nf_CONSIGNACAO,Nf_CONSIGNACAO_Item,Nfe,Nfe_Item_Controle,Pedido,
Pedido_Item_PE_Controle,Nf_Externo,Nf_Externo_Item_Controle    ,
Controle,Sequencia,Operacao_Codigo,Cfop_Codigo,Produto_Codigo,Produto_Descricao           ,
PRODUTO_UNIDADEMEDIDA,Ncm_Codigo,Tributacao_Origem,Tributacao_Ipi,Tributacao_Icms         ,
Tributacao_Pis,Tributacao_Cofins                                                          ,
Localizacao_Codigo,Quantidade,Valor_Unitario,Valor_Total,BaseCalculo_Icms,Percentual_Icms ,
Percentual_Ipi,Valor_Ipi,Percentual_Pis,Valor_Pis,Percentual_Cofins,Valor_Cofins          ,
T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,Tecelagem,
VALOR_ICMS,BASECALCULO_IPI,BASECALCULO_PIS,BASECALCULO_COFINS,
VALOR_ACRESCIMO, Valor_FRETE, Valor_SEGURO, PESO_LIQUIDO, PESO_BRUTO, CUBAGEM, VOLUMES,
VALOR_DESCONTO,FISCAL_ISENTAS_IPI,FISCAL_ISENTAS_ICMS,
FISCAL_OUTRAS_IPI,FISCAL_OUTRAS_ICMS,FISCAL_VALOR_ICMS,FISCAL_VALOR_IPI,
FISCAL_VALOR_PIS,FISCAL_VALOR_COFINS,FISCAL_PERCENTUAL_ICMS,FISCAL_PERCENTUAL_IPI,
FISCAL_PERCENTUAL_PIS,FISCAL_PERCENTUAL_COFINS,FISCAL_BASECALCULO_ICMS,
FISCAL_BASECALCULO_IPI,FISCAL_BASECALCULO_PIS,FISCAL_BASECALCULO_COFINS,
VALOR_CONTABIL, valor_basecalculo_icms, FISCAL_CFOP_CODIGO, FISCAL_TRIBUTACAO_ORIGEM,
FISCAL_TRIBUTACAO_ICMS, FISCAL_TRIBUTACAO_IPI, FISCAL_TRIBUTACAO_PIS,
FISCAL_TRIBUTACAO_COFINS, MODALIDADE_ICMS, MODALIDADE_ICMS_ST, MARGEM_ICMS_ST,
REDUCAO_ICMS_ST, BASECALCULO_ICMS_ST, ALIQUOTA_ICMS_ST, VALOR_ICMS_ST,
FISCAL_REDUCAO_ICMS_ST, FISCAL_BASECALCULO_ICMS_ST, FISCAL_ALIQUOTA_ICMS_ST, FISCAL_VALOR_ICMS_ST,
PEDIDO_CLIENTE, INFORMACOES_COMPLEMENTARES, FCI_MENSAGEM,
FCI_PARCELA_IMPORTACAO, FCI_CONTEUDO_IMPORTACAO, FCI_NUMERO,ccusto,conta_contabil,enquadramento_ipi,
QUANTIDADE_ALTERNATIVA, UM_ALTERNATIVA, VALOR_ALTERNATIVO, REDUCAO_BASE_PISCOF)
VALUES  (
:Nfs_Controle,:Estabelecimento_Codigo,:Empresa_Codigo,:Numero_NotaFiscal,
:Data_Emissao,:Situacao,:Nf_CONSIGNACAO,:Nf_CONSIGNACAO_Item,
:Nfe,:Nfe_Item_Controle,:Pedido,:Pedido_Item_PE_Controle,:Nf_Externo,
:Nf_Externo_Item_Controle,:Controle,:Sequencia,:Operacao_Codigo,:Cfop_Codigo,
:Produto_Codigo,:Produto_Descricao,:Produto_UnidadeMedida,:Ncm_Codigo,:Tributacao_Origem,
:Tributacao_Ipi,:Tributacao_Icms,:Tributacao_Pis,:Tributacao_Cofins,:Localizacao_Codigo,
:Quantidade,:Valor_Unitario,:Valor_Total,:BaseCalculo_Icms,:Percentual_Icms,
:Percentual_Ipi,:Valor_Ipi,:Percentual_Pis,:Valor_Pis,:Percentual_Cofins,
:Valor_Cofins,:T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
:T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,:Tecelagem,
:VALOR_ICMS,:BASECALCULO_IPI,:BASECALCULO_PIS,:BASECALCULO_COFINS,
:VALOR_ACRESCIMO, :Valor_FRETE, :Valor_SEGURO, :PESO_LIQUIDO, :PESO_BRUTO, :CUBAGEM, :VOLUMES,
:VALOR_DESCONTO,:FISCAL_ISENTAS_IPI,:FISCAL_ISENTAS_ICMS,
:FISCAL_OUTRAS_IPI,:FISCAL_OUTRAS_ICMS,:FISCAL_VALOR_ICMS,:FISCAL_VALOR_IPI,
:FISCAL_VALOR_PIS,:FISCAL_VALOR_COFINS,:FISCAL_PERCENTUAL_ICMS,:FISCAL_PERCENTUAL_IPI,
:FISCAL_PERCENTUAL_PIS,:FISCAL_PERCENTUAL_COFINS,:FISCAL_BASECALCULO_ICMS,
:FISCAL_BASECALCULO_IPI,:FISCAL_BASECALCULO_PIS,:FISCAL_BASECALCULO_COFINS,
:VALOR_CONTABIL, :valor_basecalculo_icms, :FISCAL_CFOP_CODIGO,:FISCAL_TRIBUTACAO_ORIGEM,
:FISCAL_TRIBUTACAO_ICMS,:FISCAL_TRIBUTACAO_IPI,:FISCAL_TRIBUTACAO_PIS,
:FISCAL_TRIBUTACAO_COFINS,

:MODALIDADE_ICMS, :MODALIDADE_ICMS_ST, :MARGEM_ICMS_ST, :REDUCAO_ICMS_ST,
:BASECALCULO_ICMS_ST, :ALIQUOTA_ICMS_ST, :VALOR_ICMS_ST,
:FISCAL_REDUCAO_ICMS_ST, :FISCAL_BASECALCULO_ICMS_ST, :FISCAL_ALIQUOTA_ICMS_ST, :FISCAL_VALOR_ICMS_ST,
:PEDIDO_CLIENTE, :INFORMACOES_COMPLEMENTARES,
:FCI_MENSAGEM, :FCI_PARCELA_IMPORTACAO, :FCI_CONTEUDO_IMPORTACAO, :FCI_NUMERO,:ccusto,:conta_contabil,:enquadramento_ipi,
:QUANTIDADE_ALTERNATIVA, :UM_ALTERNATIVA, :VALOR_ALTERNATIVO, :REDUCAO_BASE_PISCOF);

INSERT INTO TbNfs_Item_Saldo (            
Nfs_Item_Controle,Nfs_Controle,Quantidade,
T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,  
T11,T12,T13,T14,T15,T16,T17,T18,T19,T20)  
VALUES (                                  
:Controle,:Nfs_Controle,:Quantidade,
:T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
:T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20);

END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPI_NFS_ITEM_ROMANEIO (
    CONTROLE1 integer,
    CONTROLE2 integer,
    NUMERO_NOTAFISCAL integer,
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    QUANTIDADE numeric(10,5),
    OBSERVACAO varchar(50),
    LARGURA numeric(10,5),
    PESO numeric(10,5),
    MULTIPLICADOR integer)
returns (
    SEQUENCIA1 integer)
as
declare variable VALOR integer;
BEGIN
VALOR = 1;
FOR SELECT
  MAX(A.SEQUENCIA)
FROM TBNFS_ITEM_ROMANEIO A 
WHERE A.NFS_CONTROLE      = :CONTROLE1 AND
      A.NFS_ITEM_CONTROLE = :CONTROLE2
INTO :SEQUENCIA1
DO

  IF (SEQUENCIA1 IS NOT NULL) THEN
     BEGIN
     VALOR = :SEQUENCIA1 + 1;
     END

  INSERT INTO TBNFS_ITEM_ROMANEIO (
    NFS_CONTROLE,NFS_ITEM_CONTROLE,SEQUENCIA,NUMERO_NOTAFISCAL,PRODUTO_CODIGO,
    PRODUTO_DESCRICAO,PRODUTO_UNIDADEMEDIDA,QUANTIDADE,OBSERVACAO,LARGURA,
    PESO,MULTIPLICADOR) VALUES (:CONTROLE1,:CONTROLE2,:VALOR,
    :NUMERO_NOTAFISCAL,:PRODUTO_CODIGO,:PRODUTO_DESCRICAO,:PRODUTO_UNIDADEMEDIDA,
    :QUANTIDADE,:OBSERVACAO,:LARGURA,:PESO,:MULTIPLICADOR);
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPU_NFS_ITEM_ROMANEIO (
    NFS_CONTROLE integer,
    NFS_ITEM_CONTROLE integer,
    SEQUENCIA integer,
    PRODUTO_DESCRICAO varchar(100),
    PRODUTO_UNIDADEMEDIDA varchar(10),
    QUANTIDADE numeric(10,5),
    OBSERVACAO varchar(50),
    LARGURA numeric(10,5),
    PESO numeric(10,5),
    MULTIPLICADOR integer)
as
BEGIN
  UPDATE TBNFS_ITEM_ROMANEIO SET
    PRODUTO_DESCRICAO     = :PRODUTO_DESCRICAO,
    PRODUTO_UNIDADEMEDIDA = :PRODUTO_UNIDADEMEDIDA,
    QUANTIDADE    = :QUANTIDADE,
    OBSERVACAO    = :OBSERVACAO,
    LARGURA       = :LARGURA,
    PESO          = :PESO,
    MULTIPLICADOR = :MULTIPLICADOR
  WHERE
    NFS_CONTROLE      = :NFS_CONTROLE      AND
    NFS_ITEM_CONTROLE = :NFS_ITEM_CONTROLE AND
    SEQUENCIA         = :SEQUENCIA;
END
^

SET TERM ; ^

/****************************************************************************/
/****************************************************************************/
/**** UM_ALTERNATIVA ********************************************************/

SET TERM ^ ;

CREATE OR ALTER procedure SPU_CTE_ITEM (
    NFE_CONTROLE integer,
    CONTROLE integer,
    ESTABELECIMENTO_CODIGO integer,
    EMPRESA_CODIGO integer,
    OPERACAO_CODIGO varchar(3),
    PRODUTO_CODIGO integer,
    PRODUTO_DESCRICAO varchar(100),
    LOCALIZACAO_CODIGO integer,
    NUMERO_NOTAFISCAL integer,
    DATA_ENTRADA date,
    SITUACAO integer,
    NF_NATUREZA integer,
    CFOP_CODIGO varchar(5),
    NCM_CODIGO varchar(10),
    TRIBUTACAO_ORIGEM integer,
    TRIBUTACAO_IPI varchar(2),
    TRIBUTACAO_ICMS integer,
    TRIBUTACAO_PIS char(2),
    TRIBUTACAO_COFINS char(2),
    BASECALCULO_ICMS numeric(10,5),
    PERCENTUAL_ICMS numeric(10,5),
    PERCENTUAL_IPI numeric(10,5),
    VALOR_IPI numeric(10,5),
    PERCENTUAL_PIS numeric(10,5),
    VALOR_PIS numeric(10,5),
    PERCENTUAL_COFINS numeric(10,5),
    VALOR_COFINS numeric(10,5),
    VALOR_ICMS numeric(10,2),
    BASECALCULO_IPI numeric(10,2),
    BASECALCULO_PIS numeric(10,2),
    BASECALCULO_COFINS numeric(10,2),
    VALOR_ACRESCIMO numeric(10,2),
    VALOR_DESCONTO numeric(10,2),
    FISCAL_ISENTAS_IPI numeric(10,2),
    FISCAL_ISENTAS_ICMS numeric(10,2),
    FISCAL_OUTRAS_IPI numeric(10,2),
    FISCAL_OUTRAS_ICMS numeric(10,2),
    FISCAL_VALOR_ICMS numeric(10,2),
    FISCAL_VALOR_IPI numeric(10,2),
    FISCAL_VALOR_PIS numeric(10,2),
    FISCAL_VALOR_COFINS numeric(10,2),
    FISCAL_PERCENTUAL_ICMS numeric(10,2),
    FISCAL_PERCENTUAL_IPI numeric(10,2),
    FISCAL_PERCENTUAL_PIS numeric(10,2),
    FISCAL_PERCENTUAL_COFINS numeric(10,2),
    FISCAL_BASECALCULO_ICMS numeric(10,2),
    FISCAL_BASECALCULO_IPI numeric(10,2),
    FISCAL_BASECALCULO_PIS numeric(10,2),
    FISCAL_BASECALCULO_COFINS numeric(10,2),
    VALOR_PEDAGIO numeric(10,2),
    VALOR_CONTABIL numeric(10,2),
    FISCAL_CFOP_CODIGO varchar(5),
    FISCAL_TRIBUTACAO_ORIGEM integer,
    FISCAL_TRIBUTACAO_ICMS integer,
    FISCAL_TRIBUTACAO_IPI char(2),
    FISCAL_TRIBUTACAO_PIS char(2),
    FISCAL_TRIBUTACAO_COFINS char(2),
    VALOR_UNITARIO numeric(10,5),
    VALOR_TOTAL numeric(10,5),
    VALOR_BASECALCULO_ICMS numeric(10,2),
    MODALIDADE_ICMS char(1),
    MODALIDADE_ICMS_ST char(1),
    MARGEM_ICMS_ST numeric(15,4),
    REDUCAO_ICMS_ST numeric(15,4),
    BASECALCULO_ICMS_ST numeric(15,4),
    ALIQUOTA_ICMS_ST numeric(15,4),
    VALOR_ICMS_ST numeric(15,4),
    GC_WEB integer,
    QUANTIDADE numeric(10,5),
    QUANTIDADE_ALTERNATIVA numeric(18,4),
    UM_ALTERNATIVA varchar(10),
    VALOR_ALTERNATIVO numeric(18,10),
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    DI varchar(12),
    DI_DATA_REGISTRO date,
    DI_DATA_DESEMBARACO date,
    DI_LOCAL_DESEMBARACO varchar(60),
    DI_UF_DESEMBARACO char(2),
    DI_CODIGO_EXPORTADOR varchar(60),
    DI_ADICAO integer,
    DI_SEQUENCIAL integer,
    DI_CODIGO_FABRICANTE varchar(60),
    DI_DESCONTO_ADICAO numeric(10,2),
    DI_BASE_CALCULO numeric(10,2),
    DI_DESPESAS_ADUANEIRAS numeric(10,2),
    DI_VALOR_II numeric(10,2),
    DI_VALOR_IOF numeric(10,2),
    DI_NVE varchar(60),
    DI_TIPO_VIA_TRANSP integer,
    DI_VALOR_AFRMM numeric(15,2),
    DI_TIPO_INTERMEDIO varchar(1),
    DI_CNPJ_INTERMEDIO varchar(14),
    DI_UF_INTERMEDIO varchar(2),
    DI_NUMERO_DRAWBACK varchar(11),
    CCUSTO varchar(8),
    CONTA_CONTABIL varchar(11))
as
BEGIN

-- UPDATE TBNFE_ITEM
UPDATE TBNFE_ITEM SET
ESTABELECIMENTO_CODIGO = :ESTABELECIMENTO_CODIGO,
EMPRESA_CODIGO = :EMPRESA_CODIGO,
OPERACAO_CODIGO     = :OPERACAO_CODIGO,
PRODUTO_CODIGO      = :PRODUTO_CODIGO,
PRODUTO_DESCRICAO   = :PRODUTO_DESCRICAO,
LOCALIZACAO_CODIGO  = :LOCALIZACAO_CODIGO,
NUMERO_NOTAFISCAL = :NUMERO_NOTAFISCAL,
DATA_ENTRADA = :DATA_ENTRADA,
NF_SITUACAO = :SITUACAO,
NF_NATUREZA = :NF_NATUREZA,
CFOP_CODIGO = :CFOP_CODIGO,
NCM_CODIGO = :NCM_CODIGO,
TRIBUTACAO_ORIGEM = :TRIBUTACAO_ORIGEM,
TRIBUTACAO_IPI = :TRIBUTACAO_IPI,
TRIBUTACAO_ICMS = :TRIBUTACAO_ICMS,
TRIBUTACAO_PIS = :TRIBUTACAO_PIS,
TRIBUTACAO_COFINS = :TRIBUTACAO_COFINS,
BASECALCULO_ICMS = :BASECALCULO_ICMS,
PERCENTUAL_ICMS = :PERCENTUAL_ICMS ,
PERCENTUAL_IPI = :PERCENTUAL_IPI,
VALOR_IPI = :VALOR_IPI,
PERCENTUAL_PIS = :PERCENTUAL_PIS,
VALOR_PIS = :VALOR_PIS,
PERCENTUAL_COFINS = :PERCENTUAL_COFINS,
VALOR_COFINS = :VALOR_COFINS,
VALOR_ICMS                = :VALOR_ICMS           ,
BASECALCULO_IPI           = :BASECALCULO_IPI      ,
BASECALCULO_PIS           = :BASECALCULO_PIS      ,
BASECALCULO_COFINS        = :BASECALCULO_COFINS   ,
VALOR_ACRESCIMO           = :VALOR_ACRESCIMO      ,
VALOR_DESCONTO            = :VALOR_DESCONTO       ,
FISCAL_ISENTAS_IPI        = :FISCAL_ISENTAS_IPI   ,
FISCAL_ISENTAS_ICMS       = :FISCAL_ISENTAS_ICMS  ,
FISCAL_OUTRAS_IPI         = :FISCAL_OUTRAS_IPI    ,
FISCAL_OUTRAS_ICMS        = :FISCAL_OUTRAS_ICMS   ,
FISCAL_VALOR_ICMS         = :FISCAL_VALOR_ICMS    ,
FISCAL_VALOR_IPI          = :FISCAL_VALOR_IPI     ,
FISCAL_VALOR_PIS          = :FISCAL_VALOR_PIS     ,
FISCAL_VALOR_COFINS       = :FISCAL_VALOR_COFINS  ,
FISCAL_PERCENTUAL_ICMS    = :FISCAL_PERCENTUAL_ICMS,
FISCAL_PERCENTUAL_IPI     = :FISCAL_PERCENTUAL_IPI ,
FISCAL_PERCENTUAL_PIS     = :FISCAL_PERCENTUAL_PIS ,
FISCAL_PERCENTUAL_COFINS  = :FISCAL_PERCENTUAL_COFINS,
FISCAL_BASECALCULO_ICMS   = :FISCAL_BASECALCULO_ICMS ,
FISCAL_BASECALCULO_IPI    = :FISCAL_BASECALCULO_IPI  ,
FISCAL_BASECALCULO_PIS    = :FISCAL_BASECALCULO_PIS  ,
FISCAL_BASECALCULO_COFINS = :FISCAL_BASECALCULO_COFINS,
VALOR_PEDAGIO = :VALOR_PEDAGIO,
VALOR_CONTABIL = :VALOR_CONTABIL,
FISCAL_CFOP_CODIGO = :FISCAL_CFOP_CODIGO,
FISCAL_TRIBUTACAO_ORIGEM  = :FISCAL_TRIBUTACAO_ORIGEM,
FISCAL_TRIBUTACAO_ICMS    = :FISCAL_TRIBUTACAO_ICMS,
FISCAL_TRIBUTACAO_IPI     = :FISCAL_TRIBUTACAO_IPI,
FISCAL_TRIBUTACAO_PIS     = :FISCAL_TRIBUTACAO_PIS,
FISCAL_TRIBUTACAO_COFINS  = :FISCAL_TRIBUTACAO_COFINS,
VALOR_UNITARIO     = :VALOR_UNITARIO,
VALOR_TOTAL        = :VALOR_TOTAL,
VALOR_BASECALCULO_ICMS = :VALOR_BASECALCULO_ICMS,
MODALIDADE_ICMS    = :MODALIDADE_ICMS,
MODALIDADE_ICMS_ST = :MODALIDADE_ICMS_ST,
MARGEM_ICMS_ST     = :MARGEM_ICMS_ST,
REDUCAO_ICMS_ST    = :REDUCAO_ICMS_ST,
BASECALCULO_ICMS_ST= :BASECALCULO_ICMS_ST,
ALIQUOTA_ICMS_ST   = :ALIQUOTA_ICMS_ST,
VALOR_ICMS_ST      = :VALOR_ICMS_ST,
GC_WEB             = :GC_WEB,
QUANTIDADE         = :QUANTIDADE,
QUANTIDADE_ALTERNATIVA              = :QUANTIDADE_ALTERNATIVA,
UM_ALTERNATIVA                      = :UM_ALTERNATIVA,
VALOR_ALTERNATIVO                   = :VALOR_ALTERNATIVO,

T01 = :T01, T02 = :T02, T03 = :T03, T04 = :T04,
   T05 = :T05, T06 = :T06, T07 = :T07, T08 = :T08,
   T09 = :T09, T10 = :T10, T11 = :T11, T12 = :T12,
   T13 = :T13, T14 = :T14, T15 = :T15, T16 = :T16,
   T17 = :T17, T18 = :T18, T19 = :T19, T20 = :T20,

DI                      = :DI,
DI_DATA_REGISTRO        = :DI_DATA_REGISTRO,
DI_DATA_DESEMBARACO     = :DI_DATA_DESEMBARACO,
DI_LOCAL_DESEMBARACO    = :DI_LOCAL_DESEMBARACO,
DI_UF_DESEMBARACO       = :DI_UF_DESEMBARACO,
DI_CODIGO_EXPORTADOR    = :DI_CODIGO_EXPORTADOR,
DI_ADICAO               = :DI_ADICAO,
DI_SEQUENCIAL           = :DI_SEQUENCIAL,
DI_CODIGO_FABRICANTE    = :DI_CODIGO_FABRICANTE,
DI_DESCONTO_ADICAO      = :DI_DESCONTO_ADICAO,
DI_BASE_CALCULO         = :DI_BASE_CALCULO,
DI_DESPESAS_ADUANEIRAS  = :DI_DESPESAS_ADUANEIRAS,
DI_VALOR_II             = :DI_VALOR_II,
DI_VALOR_IOF            = :DI_VALOR_IOF,
DI_NVE                  = :DI_NVE,
DI_TIPO_VIA_TRANSP      = :DI_TIPO_VIA_TRANSP,
DI_VALOR_AFRMM          = :DI_VALOR_AFRMM,
DI_TIPO_INTERMEDIO      = :DI_TIPO_INTERMEDIO,
DI_CNPJ_INTERMEDIO      = :DI_CNPJ_INTERMEDIO,
DI_UF_INTERMEDIO        = :DI_UF_INTERMEDIO,
DI_NUMERO_DRAWBACK      = :DI_NUMERO_DRAWBACK,
CCUSTO                  = :CCUSTO,
CONTA_CONTABIL          = :CONTA_CONTABIL

WHERE NFE_CONTROLE = :NFE_CONTROLE
  AND CONTROLE = :CONTROLE;

  UPDATE  TbNfe_Item_Saldo SET
Quantidade = :QUANTIDADE,
T01 = :T01, T02 = :T02, T03 = :T03, T04 = :T04,
   T05 = :T05, T06 = :T06, T07 = :T07, T08 = :T08,
   T09 = :T09, T10 = :T10, T11 = :T11, T12 = :T12,
   T13 = :T13, T14 = :T14, T15 = :T15, T16 = :T16,
   T17 = :T17, T18 = :T18, T19 = :T19, T20 = :T20
WHERE Nfe_Item_Controle = :CONTROLE AND Nfe_Controle = :NFE_CONTROLE;
END
^

SET TERM ; ^