Ir para conteúdo
Fórum Script Brasil

elton07

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Posts postados por elton07

  1. Boa noite!

    Estou com uma situação, tenho uma tabela chamada

    alm_entrada_produto_item a qual é inserida pela procedure [prc_ALM_InsertEntradaProdutoItem]           

    ALTER PROCEDURE [prc_ALM_InsertEntradaProdutoItem]
       @p_id_entidade int,
       @p_id_entrada_produto_item int,
       @p_id_entrada_produto_itemSaida int OUTPUT,
       @p_id_produto int,
       @p_qtde_produto int,
       @p_valor_unitario decimal(10, 2),
       @p_data_validade datetime,
       @p_numero_lote nvarchar(45),
       @p_id_entrada_produto int,
       @p_id_almoxarifado int,
       @p_observacao_entrada varchar(3000),
       @p_tipo_entrada varchar(45),
       @p_id_transferencia int,
       @p_id_estorno int
    AS 

    BEGIN TRANSACTION
       BEGIN try
          DECLARE
             @contador int

          SELECT @contador = count_big(*)
          FROM dbo.alm_entrada_produto_item
          WHERE (id_entidade=@p_id_entidade) and alm_entrada_produto_item.id_entrada_produto_item = @p_id_entrada_produto_item

          IF @contador > 0
             UPDATE dbo.alm_entrada_produto_item
                SET 
    id_produto = @p_id_produto, 
                   qtde_produto = @p_qtde_produto, 
                   valor_unitario = @p_valor_unitario, 
                   data_validade = @p_data_validade, 
                   numero_lote = @p_numero_lote, 
                   id_almoxarifado = @p_id_almoxarifado, 
                   observacao_entrada = @p_observacao_entrada, 
                   tipo_entrada = @p_tipo_entrada

          WHERE (id_entidade=@p_id_entidade) and alm_entrada_produto_item.id_entrada_produto_item = @p_id_entrada_produto_item
          ELSE 
             BEGIN

                 INSERT dbo.alm_entrada_produto_item(
    id_entidade,
                id_produto, 
                qtde_produto, 
                valor_unitario, 
                data_validade, 
                numero_lote, 
                id_entrada_produto, 
                id_almoxarifado, 
                observacao_entrada, 
                tipo_entrada, 
                id_transferencia, 
                id_estorno)
                VALUES (
    @p_id_entidade,
                   @p_id_produto, 
                   @p_qtde_produto, 
                   @p_valor_unitario, 
                   @p_data_validade, 
                   @p_numero_lote, 
                   @p_id_entrada_produto, 
                   @p_id_almoxarifado, 
                   @p_observacao_entrada, 
                   @p_tipo_entrada, 
                   @p_id_transferencia, 
                   @p_id_estorno)
             END
         COMMIT TRANSACTION -- Efetivando alterações na base
             SET @p_id_entrada_produto_itemSaida=SCOPE_IDENTITY()
    return @p_id_entrada_produto_itemSaida
       END try
       BEGIN CATCH

        PRINT ERROR_MESSAGE()
        ROLLBACK TRANSACTION -- Desfazendo as alterações na base

    END CATCH

    ----------------------------------

    e a Tabela alm_entrada_produto_item contém um trigger que atualiza o saldo do estoque na tabela

     

     

    alter TRIGGER [tr_ObterIDAlmAtualizarSaldoEstoque]
    ON [dbo].[alm_entrada_produto_item]
    AFTER INSERT AS

    DECLARE
       @p_id_entidade int

    SELECT @p_id_entidade  = (select top 1 id_entidade FROM inserted)

    IF (@p_id_entidade is null)
    begin
        RAISERROR ('Informe a entidade antes de prosseguir', 11,1);
    Rollback;
    end
    ELSE
    begin

    EXECUTE prc_ALM_AtualizarEstoque 
    SELECT
    id_entidade, 
                id_entrada_produto,
                id_produto, 
                qtde_produto, 
                id_almoxarifado, 
                valor_unitario, 
                data_validade, 
                numero_lote
    FROM INSERTED
    END

     

    que por sua vez chama a procedure prc_ALM_AtualizarEstoque  para atualizar o saldo

       

    ALTER PROCEDURE prc_ALM_AtualizarEstoque  
       @p_id_entidade int,
       @p_id_entrada_produto int,
       @p_id_produto int,
       @p_qtde_produto int,
       @p_id_almoxarifado int,
       @p_valor_unitario decimal(10, 2),
       @p_data_validade datetime,
       @p_numero_lote nvarchar(45)
    AS 
       BEGIN
          DECLARE
             @contador int

          SELECT @contador = count_big(*)
          FROM alm_estoque
          WHERE 
      (id_entidade=@p_id_entidade) AND
             id_produto = @p_id_produto AND 
             id_almoxarifado = @p_id_almoxarifado AND 
             numero_lote = @p_numero_lote AND 
             data_validade = @p_data_validade AND 
             id_entrada_produto = @p_id_entrada_produto

          IF @contador > 0
      begin
             UPDATE alm_estoque
                SET 
                   qtde_produto = qtde_produto + @p_qtde_produto, 
                   id_almoxarifado = @p_id_almoxarifado
             WHERE (id_entidade=@p_id_entidade) AND
                id_produto = @p_id_produto AND 
                id_almoxarifado = @p_id_almoxarifado AND 
                numero_lote = @p_numero_lote AND 
                data_validade = @p_data_validade AND 
                id_entrada_produto = @p_id_entrada_produto
          end
      ELSE
      begin 
             INSERT dbo.alm_estoque(
        id_entidade, 
                id_entrada_produto,
                id_produto, 
                qtde_produto, 
                id_almoxarifado, 
                valor_unitario, 
                data_validade, 
                numero_lote)
                VALUES (
       @p_id_entidade, 
                   @p_id_entrada_produto,
                   @p_id_produto, 
                   @p_qtde_produto, 
                   @p_id_almoxarifado, 
                   @p_valor_unitario, 
                   @p_data_validade, 
                   @p_numero_lote)
       end
       END

     

    Porém quando tento incluir na tabela alm_entrada_produto_item me aparece essa mensagem

    A tabela de destino 'alm_entrada_produto_item' da instrução DML não pode ter gatilhos habilitados se a instrução contém uma cláusula OUTPUT sem cláusula INTO.

    Já tentei de todas as formas, se alguém puder me ajudar, agradeço.

×
×
  • Criar Novo...