CREATE OR ALTER procedure SPU_NFS_PEDIDO (
    NFS_CONTROLE integer,
    CONTROLE integer)
as
declare variable PRODUTO_CODIGO integer;
declare variable PEDIDO_ITEM_PE_CONTROLE integer;
declare variable IQUANTIDADE numeric(10,5);
declare variable IT01 numeric(10,5);
declare variable IT02 numeric(10,5);
declare variable IT03 numeric(10,5);
declare variable IT04 numeric(10,5);
declare variable IT05 numeric(10,5);
declare variable IT06 numeric(10,5);
declare variable IT07 numeric(10,5);
declare variable IT08 numeric(10,5);
declare variable IT09 numeric(10,5);
declare variable IT10 numeric(10,5);
declare variable IT11 numeric(10,5);
declare variable IT12 numeric(10,5);
declare variable IT13 numeric(10,5);
declare variable IT14 numeric(10,5);
declare variable IT15 numeric(10,5);
declare variable IT16 numeric(10,5);
declare variable IT17 numeric(10,5);
declare variable IT18 numeric(10,5);
declare variable IT19 numeric(10,5);
declare variable IT20 numeric(10,5);
declare variable CONFERENCIA_ID numeric(10,5);
BEGIN

    FOR
    SELECT A.PRODUTO_CODIGO, A.PEDIDO_ITEM_PE_CONTROLE, A.QUANTIDADE,
    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,

    COALESCE((SELECT FIRST 1 C.ID
        FROM TBCONFERENCIA_ITEM K, TBCONFERENCIA C
        WHERE K.CONFERENCIA_ID = C.ID
        AND C.TABELA = 'PED'
        AND C.TABELA_ID = A.PEDIDO
        AND C.STATUS = 2
        AND K.TABELA_ITEM_ID = A.PEDIDO_ITEM_PE_CONTROLE), 0) AS CONFERENCIA_ID

    FROM TBNFS_ITEM A
    WHERE A.PEDIDO_ITEM_PE_CONTROLE > 0
      AND A.NFS_CONTROLE = :NFS_CONTROLE
      AND A.CONTROLE = :CONTROLE
    INTO
    :PRODUTO_CODIGO, :PEDIDO_ITEM_PE_CONTROLE,:IQUANTIDADE,
    :IT01,:IT02,:IT03,:IT04,:IT05,:IT06,:IT07,:IT08,:IT09,:IT10,
    :IT11,:IT12,:IT13,:IT14,:IT15,:IT16,:IT17,:IT18,:IT19,:IT20, :CONFERENCIA_ID
    DO BEGIN

       IF (:PRODUTO_CODIGO > 0) THEN
           BEGIN

           UPDATE TBPEDIDO_ITEM_SALDO SET
           QUANTIDADE = QUANTIDADE - :IQUANTIDADE,
           T01 = T01 - :IT01,   T02 = T02 - :IT02,   T03 = T03 - :IT03,
           T04 = T04 - :IT04,   T05 = T05 - :IT05,   T06 = T06 - :IT06,
           T07 = T07 - :IT07,   T08 = T08 - :IT08,   T09 = T09 - :IT09,
           T10 = T10 - :IT10,   T11 = T11 - :IT11,   T12 = T12 - :IT12,
           T13 = T13 - :IT13,   T14 = T14 - :IT14,   T15 = T15 - :IT15,
           T16 = T16 - :IT16,   T17 = T17 - :IT17,   T18 = T18 - :IT18,
           T19 = T19 - :IT19,   T20 = T20 - :IT20
           WHERE PEDIDO_ITEM_CONTROLE = :PEDIDO_ITEM_PE_CONTROLE;

           IF(:CONFERENCIA_ID > 0) THEN
           BEGIN
                UPDATE TBCONFERENCIA T SET T.STATUS = 4 WHERE T.ID = :CONFERENCIA_ID;
           END

           END

       END

END;

CREATE OR ALTER procedure SPD_NFS_PEDIDO (
    NFS_CONTROLE integer,
    CONTROLE integer)
as
declare variable PEDIDO_ITEM_PE_CONTROLE integer;
declare variable QUANTIDADE numeric(10,5);
declare variable T01 numeric(10,5);
declare variable T02 numeric(10,5);
declare variable T03 numeric(10,5);
declare variable T04 numeric(10,5);
declare variable T05 numeric(10,5);
declare variable T06 numeric(10,5);
declare variable T07 numeric(10,5);
declare variable T08 numeric(10,5);
declare variable T09 numeric(10,5);
declare variable T10 numeric(10,5);
declare variable T11 numeric(10,5);
declare variable T12 numeric(10,5);
declare variable T13 numeric(10,5);
declare variable T14 numeric(10,5);
declare variable T15 numeric(10,5);
declare variable T16 numeric(10,5);
declare variable T17 numeric(10,5);
declare variable T18 numeric(10,5);
declare variable T19 numeric(10,5);
declare variable T20 numeric(10,5);
declare variable CONFERENCIA_ID numeric(10,5);
BEGIN
SELECT A.PEDIDO_ITEM_PE_CONTROLE, A.QUANTIDADE,
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,

COALESCE((SELECT FIRST 1 C.ID
        FROM TBCONFERENCIA_ITEM K, TBCONFERENCIA C
        WHERE K.CONFERENCIA_ID = C.ID
        AND C.TABELA = 'PED'
        AND C.TABELA_ID = A.PEDIDO
        AND C.STATUS = 4
        AND K.TABELA_ITEM_ID = A.PEDIDO_ITEM_PE_CONTROLE), 0) AS CONFERENCIA_ID

FROM TBNFS_ITEM A
WHERE
    A.PEDIDO_ITEM_PE_CONTROLE > 0
    AND A.PRODUTO_CODIGO > 0
    AND A.NFS_CONTROLE = :NFS_CONTROLE
    AND A.CONTROLE = :CONTROLE
INTO
:PEDIDO_ITEM_PE_CONTROLE, :QUANTIDADE,
:T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,:T11,:T12,:T13,:T14,
:T15,:T16,:T17,:T18,:T19,:T20, :CONFERENCIA_ID;

    IF (:PEDIDO_ITEM_PE_CONTROLE > 0) THEN
        BEGIN
           UPDATE TBPEDIDO_ITEM_SALDO SET
           QUANTIDADE = QUANTIDADE + :QUANTIDADE,
           T01 = T01+ :T01, T02 = T02+ :T02, T03 = T03+ :T03, T04 = T04+ :T04,
           T05 = T05+ :T05, T06 = T06+ :T06, T07 = T07+ :T07, T08 = T08+ :T08,
           T09 = T09+ :T09, T10 = T10+ :T10, T11 = T11+ :T11, T12 = T12+ :T12,
           T13 = T13+ :T13, T14 = T14+ :T14, T15 = T15+ :T15, T16 = T16+ :T16,
           T17 = T17+ :T17, T18 = T18+ :T18, T19 = T19+ :T19, T20 = T20+ :T20
           WHERE PEDIDO_ITEM_CONTROLE = :PEDIDO_ITEM_PE_CONTROLE;

           IF(:CONFERENCIA_ID > 0) THEN
           BEGIN
                UPDATE TBCONFERENCIA T SET T.STATUS = 2 WHERE T.ID = :CONFERENCIA_ID;
           END

        END

END;