IF EXISTS(SELECT *
          FROM SYSOBJECTS O, SYSUSERS U
          WHERE O.NAME = 'GRAVA_LIBERACAO_LOTE' AND
                TYPE   = 'TR'           AND
                U.UID  = O.UID          AND
                U.NAME = USER)

DROP TRIGGER GRAVA_LIBERACAO_LOTE
GO

CREATE TRIGGER GRAVA_LIBERACAO_LOTE
ON LOTE
FOR UPDATE
AS
   DECLARE @V_NMUSUARIO           VARCHAR(40);
   DECLARE @V_TIPO                VARCHAR(1);
   DECLARE @V_ITPESQ              VARCHAR(40);
   DECLARE @V_IDCOMANDO           VARCHAR(1);
   DECLARE @V_DESC                VARCHAR(500);
   DECLARE @V_DSREMOTEADDR        VARCHAR(15);
   DECLARE @V_DSREMOTEHOST        VARCHAR(15);
   DECLARE @V_DSSERVERRDM         VARCHAR(20);
   DECLARE @V_DSSERVMETHOD        VARCHAR(30);
   DECLARE @V_DSREMOTEOPER        VARCHAR(12);

   DECLARE @V_CONCAT              VARCHAR(50);
   DECLARE @V_SEQUENCIAL          VARCHAR(50);

   DECLARE @V_CDOPELIBLOTE_NEW    VARCHAR(12);
   DECLARE @V_DTREALIBLOTE_NEW    VARCHAR(1);
   DECLARE @V_CDFILIAL_NEW        VARCHAR(4);
   DECLARE @V_NRLOTEESTQ_NEW      VARCHAR(20);
   DECLARE @V_NRSUBLOTE_NEW       VARCHAR(4);
   DECLARE @V_CDPRODUTO_NEW       VARCHAR(10);
   DECLARE @V_CDJUSTIFICATIVA_NEW VARCHAR(5);

   DECLARE @V_CDOPELIBLOTE_OLD    VARCHAR(12);
   DECLARE @V_DTREALIBLOTE_OLD    VARCHAR(1);
   DECLARE @V_CDFILIAL_OLD        VARCHAR(4);
   DECLARE @V_NRLOTEESTQ_OLD      VARCHAR(20);
   DECLARE @V_NRSUBLOTE_OLD       VARCHAR(4);
   DECLARE @V_CDPRODUTO_OLD       VARCHAR(10);
   DECLARE @V_CDJUSTIFICATIVA_OLD VARCHAR(5);

BEGIN

   IF UPDATE(CDOPELIBLOTE) BEGIN
      EXEC NMUSUARIO  @P_NMUSUARIO    = @V_NMUSUARIO OUTPUT;
      EXEC WEBTUNNING @P_DSREMOTEADDR = @V_DSREMOTEADDR OUTPUT,
                      @P_DSREMOTEHOST = @V_DSREMOTEHOST OUTPUT,
                      @P_DSSERVERRDM  = @V_DSSERVERRDM  OUTPUT,
                      @P_DSSERVMETHOD = @V_DSSERVMETHOD OUTPUT,
                      @P_DSREMOTEOPER = @V_DSREMOTEOPER OUTPUT;

      DECLARE C_LOTE CURSOR FOR
         SELECT
            INSERTED.CDOPELIBLOTE,
	         INSERTED.DTREALIBLOTE,
            INSERTED.CDFILIAL,
            INSERTED.NRLOTEESTQ,
            INSERTED.NRSUBLOTE,
            INSERTED.CDPRODUTO,
            INSERTED.CDJUSTIFICATIVA,

            DELETED.CDOPELIBLOTE,
	         DELETED.DTREALIBLOTE,
            DELETED.CDFILIAL,
            DELETED.NRLOTEESTQ,
            DELETED.NRSUBLOTE,
            DELETED.CDPRODUTO,
            DELETED.CDJUSTIFICATIVA
         FROM
            INSERTED, DELETED
         WHERE
            INSERTED.CDFILIAL   = DELETED.CDFILIAL AND
            INSERTED.NRLOTEESTQ = DELETED.NRLOTEESTQ AND
            INSERTED.NRSUBLOTE  = DELETED.NRSUBLOTE AND
            INSERTED.CDPRODUTO  = DELETED.CDPRODUTO
      OPEN C_LOTE;
      FETCH NEXT FROM C_LOTE INTO @V_CDOPELIBLOTE_NEW, @V_DTREALIBLOTE_NEW, @V_CDFILIAL_NEW,     @V_NRLOTEESTQ_NEW,
                                  @V_NRSUBLOTE_NEW,    @V_CDPRODUTO_NEW,    @V_CDJUSTIFICATIVA_NEW,
                                  @V_CDOPELIBLOTE_OLD, @V_DTREALIBLOTE_OLD, @V_CDFILIAL_OLD,     @V_NRLOTEESTQ_OLD,
                                  @V_NRSUBLOTE_OLD,    @V_CDPRODUTO_OLD,    @V_CDJUSTIFICATIVA_OLD;

      IF (@V_CDOPELIBLOTE_NEW IS NOT NULL) AND (@V_DTREALIBLOTE_NEW IS NOT NULL) BEGIN

         SET @V_CONCAT = 'CTRLLIBLOTE';
         EXEC NOVO_CODIGO_SC @V_CONCAT, @V_SEQUENCIAL OUTPUT, 1;
         SET @V_SEQUENCIAL = SUBSTRING(@V_SEQUENCIAL, 11,10);

         INSERT INTO CTRLLIBLOTE
         (NRSEQLIBLOTE, CDFILIAL, NRLOTEESTQ, NRSUBLOTE, CDPRODUTO,
         IDOPERACAO, CDOPERADOR, DATAOPERACAO, CDJUSTIFICATIVA)
         VALUES
         (@V_SEQUENCIAL, @V_CDFILIAL_NEW,  @V_NRLOTEESTQ_NEW, @V_NRSUBLOTE_NEW, @V_CDPRODUTO_NEW,
          '1', @V_DSREMOTEOPER, GETDATE(), @V_CDJUSTIFICATIVA_NEW);
      END
      ELSE IF (@V_CDOPELIBLOTE_NEW IS NULL) AND (@V_DTREALIBLOTE_NEW IS NULL) AND
              (@V_CDOPELIBLOTE_NEW IS NOT NULL) BEGIN

         SET @V_CONCAT = 'CTRLLIBLOTE';
         EXEC NOVO_CODIGO_SC @V_CONCAT, @V_SEQUENCIAL OUTPUT, 1;
         SET @V_SEQUENCIAL = SUBSTRING(@V_SEQUENCIAL, 11,10);

         INSERT INTO CTRLLIBLOTE
         (NRSEQLIBLOTE, CDFILIAL, NRLOTEESTQ, NRSUBLOTE, CDPRODUTO,
         IDOPERACAO, CDOPERADOR, DATAOPERACAO, CDJUSTIFICATIVA)
         VALUES
         (@V_SEQUENCIAL, @V_CDFILIAL_NEW,  @V_NRLOTEESTQ_NEW, @V_NRSUBLOTE_NEW, @V_CDPRODUTO_NEW,
          '2', @V_DSREMOTEOPER, GETDATE(), @V_CDJUSTIFICATIVA_NEW);
      END;
   END;
END;
GO

-- VERSAO --
EXEC ATUVEROBJ 'GRAVA_LIBERACAO_LOTE','6.05.xxx';
GO
