SET TERM ^ ;

CREATE OR ALTER procedure SP_CFE_CONFERENCIA (
    PDV_CFE_ID integer,
    ACAO integer)
as
declare variable PDV_CFE_ITEM_ID integer;
declare variable CONFERENCIA_ITEM_ID integer;
declare variable QUANTIDADE numeric(10,5);
declare variable TAMANHO integer;
declare variable CONFERENCIA_ID integer;
BEGIN
      IF (:ACAO = 1) THEN
      BEGIN
        FOR SELECT
            A.conferencia_id
        FROM TBPDV_CFE_ITEM A
        WHERE A.CONFERENCIA_ITEM_ID > 0
          AND A.PDV_CFE_ID = :PDV_CFE_ID
          GROUP BY A.conferencia_id
        INTO :CONFERENCIA_ID
        DO BEGIN
            /* REALIZAR BAIXA DE CRÉDITO DO COLABORADOR*/
              EXECUTE PROCEDURE SP_SALDO_COLAB_PRE_PEDIDO(:CONFERENCIA_ID,2);
           END
       END


        FOR SELECT
            A.ID,
            A.CONFERENCIA_ITEM_ID,
            A.QUANTIDADE,
            A.TAMANHO
        FROM TBPDV_CFE_ITEM A
        WHERE A.CONFERENCIA_ITEM_ID > 0
          AND A.PDV_CFE_ID = :PDV_CFE_ID
        INTO
        :PDV_CFE_ITEM_ID, :CONFERENCIA_ITEM_ID, :QUANTIDADE, :TAMANHO
        DO BEGIN

        /* REALIZAR BAIXA DE CONFERENCIA */
        IF (:ACAO = 1) THEN
           BEGIN
                UPDATE TBPDV_CONFERENCIA_ITEM_SALDO T
                    SET T.QUANTIDADE = IIF(QUANTIDADE = 0, 0, QUANTIDADE - :QUANTIDADE)
                WHERE T.PDV_CONFERENCIA_ITEM_ID = :CONFERENCIA_ITEM_ID
                AND T.TAMANHO = :TAMANHO;

                UPDATE TBPDV_CONFERENCIA_ITEM T SET T.SITUACAO = 3 WHERE T.ID = :CONFERENCIA_ITEM_ID;

           END
           /* DESFAZ BAIXA DE CONFERENCIA */
           ELSE IF(:ACAO = 2) THEN
           BEGIN
                UPDATE TBPDV_CONFERENCIA_ITEM_SALDO T
                    SET T.QUANTIDADE = QUANTIDADE + :QUANTIDADE
                WHERE T.PDV_CONFERENCIA_ITEM_ID = :CONFERENCIA_ITEM_ID
                AND T.TAMANHO = :TAMANHO;

                UPDATE TBPDV_CONFERENCIA_ITEM T SET T.SITUACAO = 0 WHERE T.ID = :CONFERENCIA_ITEM_ID;

           END

       END


     IF(:ACAO = 2) THEN
     BEGIN
        FOR SELECT
            A.conferencia_id
        FROM TBPDV_CFE_ITEM A
        WHERE A.CONFERENCIA_ITEM_ID > 0
          AND A.PDV_CFE_ID = :PDV_CFE_ID
          GROUP BY A.conferencia_id
        INTO :CONFERENCIA_ID
        DO BEGIN
            /* REALIZAR BAIXA DE CRÉDITO DO COLABORADOR*/
              EXECUTE PROCEDURE SP_SALDO_COLAB_PRE_PEDIDO(:CONFERENCIA_ID,1);
           END
       END

END

^ SET TERM ; ^