SET TERM ^ ;

CREATE OR ALTER trigger ttbnfs_parcelamento_b9u for tbnfs_parcelamento
active before update position 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
DECLARE VARIABLE OLD_CASO VARCHAR(500);
DECLARE VARIABLE NEW_CASO VARCHAR(500);
DECLARE VARIABLE VPAINEL_ID INTEGER;
DECLARE VARIABLE VFEED_ID INTEGER;
DECLARE VARIABLE VASSUNTO VARCHAR(500);
DECLARE VARIABLE VMENSAGEM VARCHAR(500);
begin

    :VPAINEL_ID             = COALESCE((SELECT FIRST 1 A.PAINEL_ID FROM TBCASO_REGISTRO A, TBCASO_STATUS B WHERE A.STATUS_ID = B.ID AND A.PAINEL_ID = B.PAINEL_ID AND A.FECHADO = 0 AND A.ID = NEW.CASO_ID), 0);
    :VFEED_ID               = 0;
    :VASSUNTO               = '';
    :VMENSAGEM              = '';

    HISTORICO = '';

    if (New.Controle > 0) then
       Begin
    
           if (OLD.DATA_VENCIMENTO <> NEW.DATA_VENCIMENTO) THEN
               BEGIN
               HISTORICO = HISTORICO||' DT.VCTO.'||OLD.DATA_VENCIMENTO||'->'||NEW.DATA_VENCIMENTO;

                   INSERT INTO TBNFS_PARCELAMENTO_VENCIMENTO
                   (NFS_PARCELAMENTO_ID, DATA_VENCIMENTO_ANTIGA, DATA_VENCIMENTO_NOVA)
                   VALUES (NEW.CONTROLE, OLD.DATA_VENCIMENTO, NEW.DATA_VENCIMENTO);


                   /***********************************************************/

                   IF (COALESCE(:VPAINEL_ID, 0) > 0) THEN
                   BEGIN
                        :VFEED_ID = GEN_ID(GTBCASO_FEED, 1);


                        :VASSUNTO  = 'AGENDAMENTO: [CASO: '||FN_LPAD(NEW.CASO_ID, 8, '0')||'] - INFORMACOES DE COBRANCA';

                        :VMENSAGEM = :VMENSAGEM||'<p> '||'Dt. Vencimento da parcela alterada:'||' </p>'||ASCII_CHAR(13)||ASCII_CHAR(10)||'';
                        :VMENSAGEM = :VMENSAGEM||'<p> '||'Dt.Anterior: '||FORMATDATE(OLD.DATA_VENCIMENTO)||' , Dt.Nova: '||FORMATDATE(NEW.DATA_VENCIMENTO)||' </p>'||ASCII_CHAR(13)||ASCII_CHAR(10)||'';
                        :VMENSAGEM = :VMENSAGEM||'<p> '||'ESTAB.: '||FN_LPAD(NEW.ESTABELECIMENTO_CODIGO, 4, '0')||' | DOC.: '||FN_LPAD(NEW.NUMERO_NOTAFISCAL, 8, '0')||'/'||FN_LPAD(NEW.SERIE, 3, '0')||'-'||FN_LPAD(NEW.PARCELA, 3, '0')||' | DT.VENC.: '||FORMATDATE(NEW.DATA_VENCIMENTO)||' | VALOR: R$ '||FN_LPAD(FN_FORMAT_NUMBER2(NEW.VALOR_SALDO, 2), 10, '')||' </p>';

    
                        INSERT INTO TBCASO_FEED (ID, DE, PARA, EM_COPIA, EM_COPIA_OCULTA, MENSAGEM, ASSUNTO, PAINEL_ID, CASO_ID, FILES, SUBFEED, TIPO, USUARIO_ID, COMENTARIO, LISTA_FILE, WORKFLOW_ITEM_ID)
                            VALUES (:VFEED_ID, '', '', '', '', :VMENSAGEM, FN_ELIPSE(:VASSUNTO, 300), :VPAINEL_ID, NEW.CASO_ID, 1, 0, 2, 99999, 0, '', 0);

                   END

               END
           IF (OLD.DATA_EMISSAO IS DISTINCT FROM NEW.DATA_EMISSAO) THEN
               BEGIN
               HISTORICO = HISTORICO||' DT.EMISSAO '||OLD.DATA_EMISSAO||'->'||NEW.DATA_EMISSAO;
               END

           IF (OLD.VALOR <> NEW.VALOR) THEN
               BEGIN
               HISTORICO = HISTORICO||' VALOR '||OLD.VALOR||'->'||NEW.VALOR;
               END
           IF (OLD.VALOR_DESCONTO <> NEW.VALOR_DESCONTO) THEN
               BEGIN
               HISTORICO = HISTORICO||' VR.DESC.'||OLD.VALOR_DESCONTO||'->'||NEW.VALOR_DESCONTO;
               END
           IF (OLD.CONTA_RECEBER_OPERACAO <> NEW.CONTA_RECEBER_OPERACAO) THEN
               BEGIN
               HISTORICO = HISTORICO||' OPER.'||OLD.CONTA_RECEBER_OPERACAO||'->'||NEW.CONTA_RECEBER_OPERACAO;
               END
           IF (OLD.CONTA_RECEBER_BANCO <> NEW.CONTA_RECEBER_BANCO) THEN
               BEGIN
               HISTORICO = HISTORICO||' BCO.'||OLD.CONTA_RECEBER_BANCO||'->'||NEW.CONTA_RECEBER_BANCO;
               END
           IF (OLD.CONTA_RECEBER_MODALIDADE <> NEW.CONTA_RECEBER_MODALIDADE) THEN
               BEGIN
               HISTORICO = HISTORICO||' MOD.'||OLD.CONTA_RECEBER_MODALIDADE||'->'||NEW.CONTA_RECEBER_MODALIDADE;
               END
           IF (OLD.CONTA_RECEBER_POSICAO <> NEW.CONTA_RECEBER_POSICAO) THEN
               BEGIN
               HISTORICO = HISTORICO||' POS.'||OLD.CONTA_RECEBER_POSICAO||'->'||NEW.CONTA_RECEBER_POSICAO;
               END
           IF (OLD.CONTA_RECEBER_COBRANCA <> NEW.CONTA_RECEBER_COBRANCA) THEN
               BEGIN
               HISTORICO = HISTORICO||' COB.'||OLD.CONTA_RECEBER_COBRANCA||'->'||NEW.CONTA_RECEBER_COBRANCA;
               END

           IF (OLD.PAGAMENTO_FORMA <> NEW.PAGAMENTO_FORMA) THEN
               BEGIN
               HISTORICO = HISTORICO||' PG.FORMA.'||OLD.PAGAMENTO_FORMA||'->'||NEW.PAGAMENTO_FORMA;
               END
           IF (OLD.CLASSIFICACAO_CONTABIL <> NEW.CLASSIFICACAO_CONTABIL) THEN
               BEGIN
               HISTORICO = HISTORICO||' CLASS.FIN.'||OLD.CLASSIFICACAO_CONTABIL||'->'||NEW.CLASSIFICACAO_CONTABIL;
               END
           IF (OLD.CCUSTO <> NEW.CCUSTO) THEN
               BEGIN
               HISTORICO = HISTORICO||' C.CUSTO '||OLD.CCUSTO||'->'||NEW.CCUSTO;
               END
           IF (OLD.ACEITE <> NEW.ACEITE) THEN
               BEGIN
               HISTORICO = HISTORICO||' ACEITE '||OLD.ACEITE||'->'||NEW.ACEITE;
               END
           IF (OLD.VIA_DUPLICATA <> NEW.VIA_DUPLICATA) THEN
               BEGIN
               HISTORICO = HISTORICO||' VIA DUP.'||OLD.VIA_DUPLICATA||'->'||NEW.VIA_DUPLICATA;
               END

          IF (OLD.REMESSA_NUMERO_BANCO IS DISTINCT FROM NEW.REMESSA_NUMERO_BANCO) THEN
               BEGIN
               HISTORICO = HISTORICO||' NR.BCO.COB.'||FN_IS_EMPTY(OLD.REMESSA_NUMERO_BANCO)||'->'||FN_IS_EMPTY(NEW.REMESSA_NUMERO_BANCO);
               END
           IF (OLD.REMESSA_ARQUIVO <> NEW.REMESSA_ARQUIVO) THEN
               BEGIN
               HISTORICO = HISTORICO||' ARQ.COB.'||OLD.REMESSA_ARQUIVO||'->'||NEW.REMESSA_ARQUIVO;
               END
           IF (OLD.REMESSA_DATA <> NEW.REMESSA_DATA) THEN
               BEGIN
               HISTORICO = HISTORICO||' DT.COB.'||OLD.REMESSA_DATA||'->'||NEW.REMESSA_DATA;
               END
           IF (OLD.VALOR_SALDO <> NEW.VALOR_SALDO) THEN
               BEGIN
               HISTORICO = HISTORICO||' SALDO '||OLD.VALOR_SALDO||'->'||NEW.VALOR_SALDO;

               /***********************************************************/

               IF (COALESCE(:VPAINEL_ID, 0) > 0 AND COALESCE(NEW.VALOR_SALDO, 0) = 0) THEN
               BEGIN
                    :VFEED_ID = GEN_ID(GTBCASO_FEED, 1);


                    :VASSUNTO  = 'AGENDAMENTO: [CASO: '||FN_LPAD(NEW.CASO_ID, 8, '0')||'] - INFORMACOES DE COBRANCA';

                    :VMENSAGEM = :VMENSAGEM||'<p> '||'Parcela Baixada!'||' </p>'||ASCII_CHAR(13)||ASCII_CHAR(10)||'';
                    :VMENSAGEM = :VMENSAGEM||'<p> '||'ESTAB.: '||FN_LPAD(NEW.ESTABELECIMENTO_CODIGO, 4, '0')||' | DOC.: '||FN_LPAD(NEW.NUMERO_NOTAFISCAL, 8, '0')||'/'||FN_LPAD(NEW.SERIE, 3, '0')||'-'||FN_LPAD(NEW.PARCELA, 3, '0')||' | DT.VENC.: '||FORMATDATE(NEW.DATA_VENCIMENTO)||' | VALOR: R$ '||FN_LPAD(FN_FORMAT_NUMBER2(NEW.VALOR_SALDO, 2), 10, '')||' </p>';


                    INSERT INTO TBCASO_FEED (ID, DE, PARA, EM_COPIA, EM_COPIA_OCULTA, MENSAGEM, ASSUNTO, PAINEL_ID, CASO_ID, FILES, SUBFEED, TIPO, USUARIO_ID, COMENTARIO, LISTA_FILE, WORKFLOW_ITEM_ID)
                        VALUES (:VFEED_ID, '', '', '', '', :VMENSAGEM, FN_ELIPSE(:VASSUNTO, 300), :VPAINEL_ID, NEW.CASO_ID, 1, 0, 2, 99999, 0, '', 0);

                    /***************************************************/

                    EXECUTE PROCEDURE SPU_REGUA_COBRANCA_FINALIZACAO(NEW.CASO_ID);
               END

               END

           IF (OLD.OBSERVACAO <> NEW.OBSERVACAO) THEN
               BEGIN
               HISTORICO = HISTORICO||' OBS.'||OLD.OBSERVACAO||'->'||NEW.OBSERVACAO;
               END

           IF (OLD.REPRESENTANTE_COMISSAO <> NEW.REPRESENTANTE_COMISSAO) THEN
               BEGIN
               HISTORICO = HISTORICO||' %COM.'||OLD.REPRESENTANTE_COMISSAO||'->'||NEW.REPRESENTANTE_COMISSAO;
               END

           IF (OLD.FORMA_COMISSAO <> NEW.FORMA_COMISSAO) THEN
               BEGIN
               HISTORICO = HISTORICO||' FORMA COM.'||OLD.FORMA_COMISSAO||'->'||NEW.FORMA_COMISSAO;
               END

           IF (OLD.CASO_ID <> NEW.CASO_ID) THEN
               BEGIN

               OLD_CASO = COALESCE((SELECT FIRST 1 FN_LPAD(A.ID, 6, '0')||' ('||B.DESCRICAO||')' FROM TBCASO_REGISTRO A, TBCASO_STATUS B WHERE A.STATUS_ID = B.ID AND A.PAINEL_ID = B.PAINEL_ID AND A.ID = OLD.CASO_ID), '');
               NEW_CASO = COALESCE((SELECT FIRST 1 FN_LPAD(A.ID, 6, '0')||' ('||B.DESCRICAO||')' FROM TBCASO_REGISTRO A, TBCASO_STATUS B WHERE A.STATUS_ID = B.ID AND A.PAINEL_ID = B.PAINEL_ID AND A.ID = NEW.CASO_ID), '');

               HISTORICO = HISTORICO||' CASO:'||OLD_CASO||'->'||NEW_CASO;

               END

       if (HISTORICO <> '') then
           Begin
             INSERT INTO TBHISTORICO
                      (
                      TABELA,
                      TABELA_ID,
                      USUARIO, IP,
                      HISTORICO
                      )
               VALUES(
                      'TBNFS_PARCELAMENTO',
                      Old.CONTROLE,
                      (Select First 1 MON$USER from mon$attachments where mon$attachment_id = current_connection),
                      (Select First 1 MON$REMOTE_ADDRESS from mon$attachments where mon$attachment_id = current_connection),
                      FN_ELIPSE(:Historico, 500)
                      );

              IF(NEW.nfs_controle > 0)THEN
              BEGIN
                  INSERT INTO TBHISTORICO
                      (
                      TABELA,
                      TABELA_ID,
                      USUARIO, IP,
                      HISTORICO
                      )
                    VALUES(
                      'TBNFS',
                      Old.nfs_controle,
                      (Select First 1 MON$USER from mon$attachments where mon$attachment_id = current_connection),
                      (Select First 1 MON$REMOTE_ADDRESS from mon$attachments where mon$attachment_id = current_connection),
                      'PARC.'||fn_lpad(new.parcela, 2,0)||''||FN_ELIPSE(:Historico, 450)
                      );
              END

              IF(NEW.pdv_cfe_forma_pagamento_id > 0)THEN
              BEGIN
                  INSERT INTO TBHISTORICO
                     (
                      TABELA,
                      TABELA_ID,
                      USUARIO, IP,
                      HISTORICO
                      )
                    VALUES(
                      'TBPDV_CFE',
                      COALESCE((SELECT FIRST 1 C.PDV_CFE_ID FROM tbpdv_cfe_forma_pagamento C WHERE C.ID = NEW.pdv_cfe_forma_pagamento_id),0),
                      (Select First 1 MON$USER from mon$attachments where mon$attachment_id = current_connection),
                      (Select First 1 MON$REMOTE_ADDRESS from mon$attachments where mon$attachment_id = current_connection),
                      'PARC.'||fn_lpad(new.parcela, 2,0)||''||FN_ELIPSE(:Historico, 450)
                    );
              END

           End
       End

end
^

SET TERM ; ^

