/* TABELA: MAPAAPURAC */
/* DESCRIÇÃO: A TRIGGER INSERE REGISTROS NA TABELA DOCARRECADPAG A PARTIR DE
   ALTERAÇÕES NA TABELA MAPAAPURAC */
/* OBJETIVO: MANTER A COMPATIBILIDADE ENTRE A ROTINA DE PREPARAÇÃO DE PAGAMENTO
   NAS PLATAFORMAS DELPHI E MOBILE */

CREATE OR REPLACE TRIGGER INSERE_DOC_ARRECADACAO_MAPA
AFTER UPDATE OR DELETE ON MAPAAPURAC
FOR EACH ROW
DECLARE
   V_SEQUENCIAL VARCHAR2(20);
   V_EXISTE VARCHAR2(01);
BEGIN
   V_EXISTE := 'N';
   BEGIN
      SELECT NVL(MAX('S'), 'N')
       INTO V_EXISTE
       FROM DOCARRECADPAG
      WHERE IDTIPOGUIA = 'M'
        AND NRSEQUMAPAPU = :NEW.NRSEQUMAPAPU;
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
         V_EXISTE := 'N';
   END;
   IF DELETING THEN
      IF :OLD.NRLANCTONF IS NULL THEN
         DELETE DOCARRECADPAG
          WHERE NRSEQUMAPAPU  = :OLD.NRSEQUMAPAPU
            AND IDTIPOGUIA    = 'M'
            AND NRLANCTONFPAG IS NULL;
      END IF;
   ELSE
      IF :NEW.NRLANCTONF IS NOT NULL THEN
         IF V_EXISTE = 'N' THEN
            NOVO_CODIGO_NT('DOCARRECADPAG', V_SEQUENCIAL);
            INSERT INTO DOCARRECADPAG
               (NRSEQDOCARRECAD, NRSEQUMAPAPU, NRSEQUMAPAPUSN, NRSEQGUIACOMPL, CDFILIAL, NRLANCTONF, CDIMPOSTO, DTVENCIMENTO,
                CDRECEITA, CDFILIALPAG, NRLANCTONFPAG, IDTIPOGUIA, DSINFOCOMPL)
            VALUES
                (TO_NUMBER(V_SEQUENCIAL), :NEW.NRSEQUMAPAPU, '', '', '', '', :NEW.CDIMPOSTO, :NEW.DTVENCGUIA,
                 DECODE(:NEW.CDIMPOSTO, '50', NVL(:NEW.CDRECECUMU, :NEW.CDRECENCUMU),
                                        '60', NVL(:NEW.CDRECECUMU, :NEW.CDRECENCUMU), :NEW.CDRECEGUIA),
                 :NEW.CDFILIAL, :NEW.NRLANCTONF, 'M', NVL(:NEW.DSHISTGUIA,:NEW.NMMAPAAPUR));
      ELSE
         UPDATE DOCARRECADPAG SET CDFILIALPAG = :NEW.CDFILIAL, NRLANCTONFPAG = :NEW.NRLANCTONF
          WHERE NRSEQUMAPAPU  = :NEW.NRSEQUMAPAPU
            AND IDTIPOGUIA    = 'M';
      END IF;
  ELSE
     UPDATE DOCARRECADPAG SET CDFILIALPAG   = NULL, NRLANCTONFPAG = NULL
      WHERE NRSEQUMAPAPU  = :NEW.NRSEQUMAPAPU
        AND IDTIPOGUIA    = 'M';
    END IF;
  END IF;
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('INSERE_DOC_ARRECADACAO_MAPA','0.00.000'); END;
/
