--ATULIZA_DELETE_LOGMOVIEST
IF EXISTS(SELECT NAME
            FROM SYSOBJECTS
           WHERE NAME = 'ATUALIZA_DELETE_LOGMOVIEST'
             AND TYPE = 'TR')

DROP TRIGGER ATUALIZA_DELETE_LOGMOVIEST
GO

CREATE TRIGGER ATUALIZA_DELETE_LOGMOVIEST
ON ITLANCTOEST
FOR DELETE

AS

DECLARE @V_DTATUAL          DATETIME;
DECLARE @V_IDCTRLESTQLG     VARCHAR(01);
DECLARE @V_IDESONLINELG     VARCHAR(01);
DECLARE @V_IDPESTNEGALG     VARCHAR(01);
DECLARE @V_CDOPERADORLG     VARCHAR(12);
DECLARE @V_COUNT            NUMERIC;

DECLARE @V_OLD_CDFILIAL     VARCHAR(04);
DECLARE @V_OLD_NRLANCESTQ   VARCHAR(10);
DECLARE @V_OLD_NRSEQUITEM   VARCHAR(10);
DECLARE @V_OLD_CDFILIMOVI   VARCHAR(04);
DECLARE @V_OLD_CDPRODMOVI   VARCHAR(10);
DECLARE @V_OLD_QTLANCTOEST  NUMERIC(15,5);
DECLARE @V_OLD_VRLANCTOEST  NUMERIC(15,5);
DECLARE @V_OLD_IDALTCMEDMV  VARCHAR(01);
DECLARE @V_OLD_IDEVOLESTOQ  VARCHAR(01);
DECLARE @V_OLD_DTLANCMOVI   DATETIME;
DECLARE @V_OLD_DSLANCESTIT  VARCHAR(60);
DECLARE @V_OLD_IDTIPOMOVI   VARCHAR(01);
DECLARE @V_OLD_QTTOTLANCTO  NUMERIC(15,5);
DECLARE @V_OLD_CDTIPOOPER   VARCHAR(02);
DECLARE @V_OLD_IDENTRSAIDOP VARCHAR(01);
DECLARE @V_OLD_CDALMOXARIFE VARCHAR(06);
DECLARE @V_OLD_CDLOCALESTOQ VARCHAR(06);
DECLARE @V_OLD_NRLOTEESTQ   VARCHAR(20);
DECLARE @V_OLD_NRSUBLOTE    VARCHAR(04);
DECLARE @V_OLD_NRLANCORIGRP VARCHAR(14);
DECLARE @V_OLD_CDPRODUTO    VARCHAR(10);

DECLARE @V_DTLANCMOVI       DATETIME;

DECLARE @V_VRLANCTOEST      NUMERIC(15,5);
DECLARE @V_VRNOTAFISC       NUMERIC(15,5);
DECLARE @V_QTTOTLANCTO      NUMERIC(15,5);
DECLARE @V_QUANTIDADE       NUMERIC(15,5);
DECLARE @V_VRFATOCONV       NUMERIC(15,5);
DECLARE @V_FATOCONV         NUMERIC(15,5);
DECLARE @V_DIFERENCA        NUMERIC(15,5);
DECLARE @V_VRLIQUIDO        NUMERIC(15,5);
DECLARE @V_LANCTOEST        NUMERIC(15,5);
DECLARE @V_VRLANCTOBRUT     NUMERIC(15,5);

DECLARE @V_VRINDICE1        NUMERIC(15,5);
DECLARE @V_VRINDICE2        NUMERIC(15,5);
DECLARE @V_CDINDICEMF       VARCHAR(04);
DECLARE @V_CDINDICEMF2      VARCHAR(04);
DECLARE @V_CDTPINDICE       VARCHAR(01);
DECLARE @V_IDPERVALOR       VARCHAR(01);
DECLARE @V_CDTPINDICE2      VARCHAR(01);
DECLARE @V_IDPERVALOR2      VARCHAR(01);

DECLARE @V_CDPRODUTO        VARCHAR(10);
DECLARE @V_CDFILIAL         VARCHAR(04);
DECLARE @V_NRLANCTONF       VARCHAR(10);
DECLARE @V_NRLANCESTQ       VARCHAR(10);
DECLARE @V_CDALMOXARIFE     VARCHAR(06);
DECLARE @V_CDLOCALESTOQ     VARCHAR(06);
DECLARE @V_NRLOTEESTQ       VARCHAR(20);
DECLARE @V_NRSUBLOTE        VARCHAR(04);

DECLARE @V_VRULTCMPLIQ      NUMERIC(15,5);
DECLARE @V_VRULTCMPBRU      NUMERIC(15,5);
DECLARE @V_VRULTCMPLM1      NUMERIC(15,5);
DECLARE @V_VRULTCMPBM1      NUMERIC(15,5);
DECLARE @V_VRULTCMPLM2      NUMERIC(15,5);
DECLARE @V_VRULTCMPBM2      NUMERIC(15,5);
DECLARE @V_VRTOTLANCTO      NUMERIC(15,5);
DECLARE @V_VRUNILANCTO      NUMERIC(15,5);

DECLARE @V_VRPESOBRUTPR     NUMERIC(15,5);
DECLARE @V_VRPECUSTOLOG     NUMERIC(15,5);
DECLARE @V_VRVRCUSTOLOG     NUMERIC(15,5);
DECLARE @V_VRPESEGURLOG     NUMERIC(15,5);
DECLARE @V_CDFORNECED       VARCHAR(21);
DECLARE @V_VRTOTAITEM       NUMERIC(15,5);
DECLARE @V_VRCUSTLCMPM1     NUMERIC(15,5);
DECLARE @V_VRSEGULCMPM1     NUMERIC(15,5);
DECLARE @V_VRCUSTLCMPM2     NUMERIC(15,5);
DECLARE @V_VRSEGULCMPM2     NUMERIC(15,5);
DECLARE @V_VRCUSTOLOG       NUMERIC(15,5);
DECLARE @V_VRCUSTOSEG       NUMERIC(15,5);
DECLARE @V_VRDESCITEM       NUMERIC(15,5);
DECLARE @V_RESDIVVRQTD      NUMERIC(15,5);

BEGIN
   SET @V_DTATUAL = GETDATE();

   DECLARE C_DELETED CURSOR FOR
   SELECT CDFILIAL, NRLANCESTQ, NRSEQUITEM, CDFILIMOVI,
          CDPRODMOVI, QTLANCTOEST, VRLANCTOEST, IDALTCMEDMV,
          IDEVOLESTOQ, DTLANCMOVI, DSLANCESTIT, IDTIPOMOVI,
          QTTOTLANCTO, CDTIPOOPER, IDENTRSAIDOP, CDALMOXARIFE,
          CDLOCALESTOQ, NRLOTEESTQ, NRSUBLOTE, NRLANCORIGRP,
          CDPRODUTO, CDFILIMOVI
     FROM DELETED;

   OPEN C_DELETED;

   FETCH NEXT FROM C_DELETED INTO   @V_OLD_CDFILIAL, @V_OLD_NRLANCESTQ, @V_OLD_NRSEQUITEM,
                                    @V_OLD_CDFILIMOVI, @V_OLD_CDPRODMOVI, @V_OLD_QTLANCTOEST,
                                    @V_OLD_VRLANCTOEST, @V_OLD_IDALTCMEDMV, @V_OLD_IDEVOLESTOQ,
                                    @V_OLD_DTLANCMOVI, @V_OLD_DSLANCESTIT, @V_OLD_IDTIPOMOVI,
                                    @V_OLD_QTTOTLANCTO, @V_OLD_CDTIPOOPER, @V_OLD_IDENTRSAIDOP,
                                    @V_OLD_CDALMOXARIFE, @V_OLD_CDLOCALESTOQ, @V_OLD_NRLOTEESTQ,
                                    @V_OLD_NRSUBLOTE, @V_OLD_NRLANCORIGRP, @V_OLD_CDPRODUTO,
                                    @V_OLD_CDFILIMOVI;

   WHILE (@@FETCH_STATUS = 0) BEGIN
      SELECT @V_COUNT = COUNT(*)
        FROM MOVILOTE
       WHERE NRMOVILOTE = @V_OLD_CDFILIAL + @V_OLD_NRLANCESTQ
         AND CDFILIAL = @V_OLD_CDFILIMOVI
         AND CDALMOXARIFE = @V_OLD_CDALMOXARIFE
         AND CDLOCALESTOQ = @V_OLD_CDLOCALESTOQ
         AND NRLOTEESTQ = @V_OLD_NRLOTEESTQ
         AND NRSUBLOTE = @V_OLD_NRSUBLOTE
         AND CDPRODUTO = @V_OLD_CDPRODMOVI;

      IF @V_COUNT = 0 BEGIN
         IF (@V_OLD_IDTIPOMOVI IN ('0', '1')) OR (@V_OLD_QTTOTLANCTO > 0) BEGIN
            INSERT INTO MOVILOTE
               (NRMOVILOTE, CDFILIAL, CDALMOXARIFE, CDLOCALESTOQ, CDPRODUTO,
                NRLOTEESTQ, NRSUBLOTE, NRLANCTOORIG, DTMOVILOTE, DTMOVILOTEANT)
            VALUES
               (@V_OLD_CDFILIAL + @V_OLD_NRLANCESTQ, @V_OLD_CDFILIMOVI, @V_OLD_CDALMOXARIFE,
                @V_OLD_CDLOCALESTOQ, @V_OLD_CDPRODMOVI, @V_OLD_NRLOTEESTQ, @V_OLD_NRSUBLOTE,
                @V_OLD_NRLANCORIGRP, @V_OLD_DTLANCMOVI, @V_OLD_DTLANCMOVI);
         END;
      END;

      SELECT @V_CDTPINDICE  = MAX(CDTPINDICE),
             @V_IDPERVALOR  = MAX(IDPERVALOR),
             @V_CDINDICEMF  = MAX(CDINDICEMF),
             @V_CDTPINDICE2 = MAX(CDTPINDICE2),
             @V_IDPERVALOR2 = MAX(IDPERVALOR2),
             @V_CDINDICEMF2 = MAX(CDINDICEMF2)
        FROM PARAMGERAL;

      SELECT @V_COUNT = COUNT(*)
        FROM CUSTOCMPPROD
       WHERE CDFILLANCEST = @V_OLD_CDFILIAL
         AND NRLANCESTQ = @V_OLD_NRLANCESTQ
         AND CDFILIAL = @V_OLD_CDFILIMOVI
         AND CDALMOXARIFE = @V_OLD_CDALMOXARIFE
         AND CDLOCALESTOQ = @V_OLD_CDLOCALESTOQ
         AND NRLOTEESTQ = @V_OLD_NRLOTEESTQ
         AND NRSUBLOTE = @V_OLD_NRSUBLOTE
         AND CDPRODUTO = @V_OLD_CDPRODMOVI
         AND DTCUSTCMPPRO = @V_OLD_DTLANCMOVI;

      IF (@V_COUNT > 0) BEGIN
         SET @V_VRPESOBRUTPR  = 0;
         SET @V_VRPECUSTOLOG  = 0;
         SET @V_VRVRCUSTOLOG  = 0;
         SET @V_VRPESEGURLOG  = 0;
         SET @V_VRTOTAITEM    = 0;
         SET @V_VRCUSTLCMPM1  = 0;
         SET @V_VRSEGULCMPM1  = 0;
         SET @V_VRCUSTLCMPM1  = 0;
         SET @V_VRSEGULCMPM1  = 0;
         SET @V_VRCUSTOLOG    = 0;
         SET @V_VRCUSTOSEG    = 0;

         DELETE CUSTOCMPPROD
          WHERE CDFILLANCEST = @V_OLD_CDFILIAL
            AND NRLANCESTQ = @V_OLD_NRLANCESTQ
            AND CDALMOXARIFE = @V_OLD_CDALMOXARIFE
            AND CDLOCALESTOQ = @V_OLD_CDLOCALESTOQ
            AND NRLOTEESTQ = @V_OLD_NRLOTEESTQ
            AND NRSUBLOTE = @V_OLD_NRSUBLOTE
            AND CDPRODUTO = @V_OLD_CDPRODMOVI
            AND DTCUSTCMPPRO = @V_OLD_DTLANCMOVI;

         SELECT @V_DTLANCMOVI = MAX(N.DTENTRSAID),
                @V_CDPRODUTO = MAX(A.CDPRODMOVI),
                @V_VRLANCTOBRUT = MAX(A.VRCONTITEM),
                @V_VRFATOCONV = MAX(B.VRFATOCONV),
                @V_QTTOTLANCTO = MAX(QTITEMPROD),
                @V_CDALMOXARIFE = MAX(A.CDALMOXARIFE),
                @V_CDLOCALESTOQ = MAX(A.CDLOCALESTOQ),
                @V_NRLOTEESTQ = MAX(A.NRLOTEESTQ),
                @V_NRSUBLOTE = MAX(A.NRSUBLOTE),
                @V_NRLANCESTQ = MAX(D.NRLANCESTQ),
                @V_NRLANCTONF = MAX(D.NRLANCTONF),
                @V_CDFORNECED = MAX(N.CDFORNECED),
                @V_VRTOTAITEM = MAX(VRTOTAITEM),
                @V_VRDESCITEM = MAX(A.VRDESCITEM)
          FROM  ITEMPRODUTO A, NOTAFISCAL N, PRODUTO B, PRODFILI C, LANCTOESTOQ D
         WHERE (A.CDFILIAL = N.CDFILIAL)
           AND (A.NRLANCTONF = N.NRLANCTONF)
           AND (N.NRLANCTONF = D.NRLANCTONF)
           AND (N.CDFILIAL = D.CDFILIAL)
           AND (D.IDTPLANCTO IN ('0', '2', 'E'))
           AND (A.CDPRODMOVI = @V_OLD_CDPRODMOVI)
           AND (A.CDFILIMOVI = @V_OLD_CDFILIMOVI)
           AND (A.CDALMOXARIFE = @V_OLD_CDALMOXARIFE)
           AND (A.CDLOCALESTOQ = @V_OLD_CDLOCALESTOQ)
           AND (A.NRLOTEESTQ = @V_OLD_NRLOTEESTQ)
           AND (A.NRSUBLOTE = @V_OLD_NRSUBLOTE)
           AND (N.DTENTRSAID = @V_OLD_DTLANCMOVI)
           AND (B.CDPRODUTO = A.CDPRODUTO)
           AND (C.CDFILIAL = N.CDFILIRECE)
           AND (C.CDPRODUTO = B.CDPRODESTO)
           AND ((D.CDFILIAL + D.NRLANCESTQ) <> (@V_OLD_CDFILIAL + @V_OLD_NRLANCESTQ));

         IF NOT (@V_VRLANCTOEST IS NULL) BEGIN
            SELECT @V_CDFILIAL = MAX(CDFILIAL)
              FROM LANCTOESTOQ
             WHERE NRLANCESTQ = @V_NRLANCESTQ
               AND CDFILIMOVI  = @V_OLD_CDFILIMOVI;

            SET @V_VRTOTLANCTO = @V_VRTOTAITEM - @V_VRDESCITEM;

            IF @V_QTTOTLANCTO <> 0 BEGIN
               SET @V_RESDIVVRQTD = @V_VRLANCTOBRUT / @V_QTTOTLANCTO;
               SET @V_VRUNILANCTO = @V_VRTOTLANCTO / @V_QTTOTLANCTO;
            END;

            IF @V_VRFATOCONV <> 0 BEGIN
               SET @V_VRLANCTOEST = @V_RESDIVVRQTD / @V_VRFATOCONV;
            END;

            SELECT @V_VRPESOBRUTPR = MAX(P.VRPESOBRUTPR),
                   @V_VRPECUSTOLOG = ISNULL(MAX(VRPECUSTOLOG),0),
                   @V_VRVRCUSTOLOG = ISNULL(MAX(VRVRCUSTOLOG),0),
                   @V_VRPESEGURLOG = ISNULL(MAX(VRPESEGURLOG),0)
              FROM CUSTOLOGIST C, PRODUTO P
             WHERE P.CDPRODUTO = @V_OLD_CDPRODUTO
               AND P.CDPRODUTO = C.CDPRODUTO
               AND C.CDFILIAL = @V_OLD_CDFILIMOVI
               AND C.CDFORNECED = @V_CDFORNECED
               AND C.DTINIVIGCLOG = (SELECT MAX(DTINIVIGCLOG)
                                       FROM CUSTOLOGIST A
                                      WHERE A.CDFILIAL = C.CDFILIAL
                                        AND A.CDFORNECED = C.CDFORNECED
                                        AND A.CDPRODUTO = @V_OLD_CDPRODUTO
                                        AND A.DTINIVIGCLOG <= @V_OLD_DTLANCMOVI);

            IF (@V_VRVRCUSTOLOG > 0) AND (@V_VRPESOBRUTPR > 0) BEGIN
               SET @V_VRCUSTOLOG = ((@V_QTTOTLANCTO * @V_VRPESOBRUTPR)* @V_VRVRCUSTOLOG)/@V_QTTOTLANCTO;
            END;

            IF (@V_VRPECUSTOLOG > 0) BEGIN
               SET @V_VRCUSTOLOG = ((@V_VRTOTAITEM * @V_VRPECUSTOLOG)/100)/@V_QTTOTLANCTO;
            END;

            IF (@V_VRPESEGURLOG > 0) BEGIN
               SET @V_VRCUSTOSEG = ((@V_VRTOTAITEM * @V_VRPESEGURLOG)/100)/@V_QTTOTLANCTO;
            END;

            SELECT @V_VRLIQUIDO = SUM(VRTOTAITEM - VRDESCITEM)
            FROM ITEMPRODUTO
            WHERE CDFILIAL   = @V_CDFILIAL    AND
                  NRLANCTONF = @V_NRLANCTONF;

            SELECT @V_VRNOTAFISC = MAX(VRNOTAFISC)
            FROM NOTAFISCAL
            WHERE CDFILIAL    = @V_CDFILIAL   AND
                  NRLANCTONF  = @V_NRLANCTONF;

            SET @V_DIFERENCA = @V_VRNOTAFISC - @V_VRLIQUIDO;

            IF (@V_QTTOTLANCTO = 0) BEGIN
               SET @V_QUANTIDADE = 1;
            END
            ELSE BEGIN
               SET @V_QUANTIDADE = @V_QTTOTLANCTO;
            END;

            IF (@V_VRFATOCONV IS NULL) OR (@V_VRFATOCONV = 0) BEGIN
               SET @V_FATOCONV = 1;
            END
            ELSE BEGIN
               SET @V_FATOCONV = @V_VRFATOCONV;
            END;

            SET @V_LANCTOEST = 0;

            IF NOT (@V_VRLIQUIDO = 0) BEGIN
               IF NOT(@V_DIFERENCA IS NULL) BEGIN
                  SET @V_DIFERENCA  = ((@V_DIFERENCA / @V_VRLIQUIDO * @V_VRTOTLANCTO / @V_QUANTIDADE) / (@V_FATOCONV));
               END;

               IF (@V_VRLANCTOBRUT = 0) BEGIN
                  SET @V_LANCTOEST = 0;
               END
               ELSE BEGIN
                  SET @V_LANCTOEST = @V_DIFERENCA;
               END;
            END;

            SET @V_VRULTCMPLIQ    = @V_VRLANCTOEST  + @V_LANCTOEST;
            SET @V_VRULTCMPBRU    = @V_VRLANCTOBRUT + @V_LANCTOEST;

            IF (@V_CDINDICEMF IS NOT NULL) BEGIN
               SELECT @V_VRINDICE1 = MAX(VRINDICE)
                 FROM INDICE I, MOVINDICE M
                WHERE I.CDTPINDICE = @V_CDTPINDICE
                  AND I.IDPERVALOR = @V_IDPERVALOR
                  AND I.CDINDICE = @V_CDINDICEMF
                  AND I.CDTPINDICE = M.CDTPINDICE
                  AND I.CDTPINDICE = M.IDPERVALOR
                  AND I.CDTPINDICE = M.CDINDICE
                  AND @V_DTLANCMOVI = M.DTREFIND;

               SET @V_VRULTCMPLM1  = (@V_VRLANCTOEST  + @V_LANCTOEST)  * @V_VRINDICE1;
               SET @V_VRULTCMPBM1  = (@V_VRLANCTOBRUT + @V_LANCTOEST) * @V_VRINDICE1;
               SET @V_VRCUSTLCMPM1 = @V_VRCUSTOLOG * @V_VRINDICE1;
               SET @V_VRSEGULCMPM1 = @V_VRCUSTOSEG * @V_VRINDICE1;
            END;

            IF (@V_CDINDICEMF2 IS NOT NULL) BEGIN
               SET @V_VRULTCMPLM2  = (@V_VRLANCTOEST +  @V_LANCTOEST) * @V_VRINDICE2;
               SET @V_VRULTCMPBM2  = (@V_VRLANCTOBRUT + @V_LANCTOEST) * @V_VRINDICE2;
               SET @V_VRCUSTLCMPM2 = @V_VRCUSTOLOG * @V_VRINDICE2;
               SET @V_VRSEGULCMPM2 = @V_VRCUSTOSEG * @V_VRINDICE2;
            END;

            INSERT INTO CUSTOCMPPROD
               (CDFILIAL, DTCUSTCMPPRO,  CDFILLANCEST, NRLANCESTQ,   CDPRODUTO,
                CDALMOXARIFE, CDLOCALESTOQ,  NRLOTEESTQ,   NRSUBLOTE,    VRLIQCMPPROD,
                VRBRUCMPPROD, VRLIQCMPPRM1,  VRLIQCMPPRM2,  VRBRUCMPPRM1, VRBRUCMPPRM2,
                VRCUSTLOGCMP, VRCUSTLCMPM1,   VRCUSTLCMPM2,   VRSEGULOGCMP, VRSEGULCMPM1,
                VRSEGULCMPM2)
            VALUES
               (@V_OLD_CDFILIMOVI, @V_OLD_DTLANCMOVI, @V_CDFILIAL, @V_NRLANCESTQ, @V_OLD_CDPRODMOVI,
                @V_OLD_CDALMOXARIFE, @V_OLD_CDLOCALESTOQ, @V_OLD_NRLOTEESTQ, @V_OLD_NRSUBLOTE, @V_VRULTCMPLIQ,
                @V_VRULTCMPBRU, @V_VRULTCMPLM1, @V_VRULTCMPLM2, @V_VRULTCMPBM1, @V_VRULTCMPBM2,
                @V_VRCUSTOLOG, @V_VRCUSTLCMPM1, @V_VRCUSTLCMPM2, @V_VRCUSTOSEG, @V_VRSEGULCMPM1,
                @V_VRSEGULCMPM2);
         END;
      END;
      FETCH NEXT FROM C_DELETED INTO   @V_OLD_CDFILIAL,     @V_OLD_NRLANCESTQ,   @V_OLD_NRSEQUITEM,
                                       @V_OLD_CDFILIMOVI,   @V_OLD_CDPRODMOVI,   @V_OLD_QTLANCTOEST,
                                       @V_OLD_VRLANCTOEST,  @V_OLD_IDALTCMEDMV,  @V_OLD_IDEVOLESTOQ,
                                       @V_OLD_DTLANCMOVI,   @V_OLD_DSLANCESTIT,  @V_OLD_IDTIPOMOVI,
                                       @V_OLD_QTTOTLANCTO,  @V_OLD_CDTIPOOPER,   @V_OLD_IDENTRSAIDOP,
                                       @V_OLD_CDALMOXARIFE, @V_OLD_CDLOCALESTOQ, @V_OLD_NRLOTEESTQ,
                                       @V_OLD_NRSUBLOTE,    @V_OLD_NRLANCORIGRP, @V_OLD_CDPRODUTO,
                                       @V_OLD_CDFILIMOVI;

   END;
   CLOSE C_DELETED;
   DEALLOCATE C_DELETED;
END;
GO

-- VERSAO --
EXEC ATUVEROBJ 'ATUALIZA_DELETE_LOGMOVIEST','6.10.XXX';
GO
