SET TERM ^ ;

ALTER TABLE TBCAIXABANCO_LANCAMENTO_REG ADD BAIXA_CONSIGNADO SMALLINT DEFAULT 0^ 

ALTER TABLE TBCAIXABANCO_LANCAMENTO ADD BAIXA_CONSIGNADO SMALLINT DEFAULT 0^

CREATE OR ALTER procedure SP_BAIXAR_PARCELA_CONSIGNACAO (
    ANTECIPACAO_ID integer,
    AGRUPAMENTO_ID integer,
    ACAO integer)
as
declare variable PARCELAMENTO_ID integer;
declare variable ID integer;
declare variable PAGAMENTO_FORMA_ID integer;
declare variable VALOR_SALDO numeric(15,2);
declare variable VALOR_TOTAL numeric(15,2);
declare variable TROCO numeric(15,2);
declare variable VALOR_LIQUIDO numeric(15,2);
declare variable VALOR_REAL numeric(15,2);
declare variable VALOR_CHEQUE_TEMP numeric(15,2);
declare variable PARCELA_X integer;
declare variable PARCELAS integer;
declare variable ID_PAGAMENTO varchar(200);
declare variable TIPO_PAG char(2);
declare variable CONTA_RECEBER_BANCO integer;
declare variable CONTA_RECEBER_MODALIDADE integer;
declare variable CONTA_RECEBER_POSICAO integer;
declare variable CONTA_RECEBER_COBRANCA integer;
declare variable CONTA_RECEBER_OPERACAO integer;
declare variable NUMERO_NOTAFISCAL integer;
declare variable OBSERVACAO varchar(100);
declare variable FORMA_COMISSAO char(1);
declare variable PERMITE_GERAR_BAIXA varchar(1);
declare variable CAIXABANCO_CONTROLE integer;
declare variable CONTA_RECEBER_BAIXA_ID integer;
declare variable CAIXABANCO_CONTA varchar(12);
declare variable ESTABELECIMENTO_ID integer;
declare variable CONTA_RECEBER_BAIXA_CC varchar(10);
declare variable CAIXABANCO_ID integer;
declare variable CONTA_RECEBER_BAIXA_CLASS varchar(10);
declare variable CONTA_RECEBER_BAIXA_HIST varchar(100);
declare variable CONTA_RECEBER_BAIXA_TP_CONTA varchar(11);
declare variable CONTA_RECEBER_BAIXA_CONTA varchar(11);
declare variable CONTA_CONTABIL_EMPRESA1 varchar(11);
declare variable CONTA_CONTABIL_EMPRESA2 varchar(11);
declare variable LIST_PRAZO varchar(500);
declare variable LIST_QUOTA varchar(500);
declare variable CONTA_RECEBER_REG_CONTROLE integer;
declare variable CONTABILIZACAO_BANCO_ID integer;
declare variable CONTABILIZACAO_MESTRE_ID integer;
declare variable CONTABILIZACAO_REG_ID integer;
declare variable DATA_CREDITO date;
declare variable PDV_TIPO integer;
declare variable CAIXA_ID integer;
declare variable CLIENTE_ID integer;
declare variable PDV_ID integer;
declare variable OFFLINE_ID integer;
declare variable NFS_CONTROLE integer;
declare variable CHECK_ITEM integer;
declare variable CONDICAO_PAGAMENTO_ID integer;
declare variable DATA_LANCAMENTO date;
declare variable BAIXA_CONSIGNACAO integer;
declare variable PDV_MOVIMENTO_ID integer;
declare variable PDV_MOVIMENTO_CAIXA_ID integer;
declare variable PDV_ANTECIPACAO_ID integer;
declare variable BAIXA_PARCELA_ID integer;
BEGIN

    /* REGISTRAR BAIXA DA CONSIGNACAO */
    IF(:ACAO = 1) THEN
    BEGIN

        FOR SELECT
                T.CONTROLE AS ID,
                T.NFS_CONTROLE,
                T.NUMERO_NOTAFISCAL,
                ANT.estabelecimento_id,
                T.PAGAMENTO_FORMA AS PAGAMENTO_FORMA_ID,
                T.DATA_EMISSAO AS DATA_LANCAMENTO,
                T.VALOR AS VALOR_TOTAL,
                T.VALOR_SALDO AS VALOR_LIQUIDO,
                PF.NFE_TIPPAG AS TIPO_PAG,
                PF.BANCO_ID,
                PF.MODALIDADE_ID,
                PF.POSICAO_ID,
                PF.COBRANCA_ID,
                PF.OPERACAO_ID,
                T.PARCELA AS PARCELA_X,
                ANT.CLIENTE_ID AS CLIENTE_ID,
                COALESCE((SELECT FIRST 1 CAIXA.ID FROM TBPDV_CAIXA CAIXA,
                    TBPDV_MOVIMENTO_CAIXA MOV_CAIXA WHERE CAIXA.ID = MOV_CAIXA.PDV_CAIXA_ID AND MOV_CAIXA.ID = ANT.pdv_movimento_caixa_id),0) AS CAIXA_ID,
                ANT.PDV_MOVIMENTO_ID,
                ANT.PDV_MOVIMENTO_CAIXA_ID,
                ANT.ID AS PDV_ANTECIPACAO_ID,
                IIF(PF.CONTA_RECEBER_BAIXA_ID > 0, '1', '0') AS PERMITE_GERAR_BAIXA,
                COALESCE((SELECT FIRST 1 C.CODIGO FROM TBCONTA_RECEBER_OPERACAO C WHERE C.CODIGO = PF.CONTA_RECEBER_BAIXA_ID
                          AND CHAR_LENGTH(TRIM(COALESCE(C.CLASSIFICACAO_FINANCEIRA,''))) > 3), 0) AS CONTA_RECEBER_BAIXA_ID,
                COALESCE((SELECT FIRST 1 S.CONTROLE FROM TBCAIXABANCO_LANCAMENTO_REG S
                    WHERE S.NFS_PARCELAMENTO_CONTROLE = T.CONTROLE AND S.TIPO = 'C' AND S.baixa_consignado = 1),0) AS BAIXA_CONSIGNACAO
            FROM TBNFS_PARCELAMENTO T
            INNER JOIN TBPAGAMENTO_FORMA            PF ON PF.CODIGO     = T.PAGAMENTO_FORMA
            INNER JOIN TBPDV_MOVIMENTO_ANTECIPACAO ANT ON ANT.TABELA_ID = T.NFS_CONTROLE
            INNER JOIN TBCONTA_RECEBER_OPERACAO     OP ON OP.CODIGO     = PF.OPERACAO_ID
            WHERE ANT.AGRUPAMENTO_ID = :AGRUPAMENTO_ID
              AND IIF(:ANTECIPACAO_ID > 0, ANT.ID = :ANTECIPACAO_ID, TRUE)
              AND ANT.GERAR_PARCELAS = 1
            INTO :ID, :NFS_CONTROLE, :NUMERO_NOTAFISCAL, :ESTABELECIMENTO_ID, :PAGAMENTO_FORMA_ID, :DATA_LANCAMENTO, :VALOR_TOTAL, :VALOR_LIQUIDO, :TIPO_PAG, :CONTA_RECEBER_BANCO, :CONTA_RECEBER_MODALIDADE,
              :CONTA_RECEBER_POSICAO, :CONTA_RECEBER_COBRANCA, :CONTA_RECEBER_OPERACAO, :PARCELA_X, :CLIENTE_ID, :CAIXA_ID, :PDV_MOVIMENTO_ID, :PDV_MOVIMENTO_CAIXA_ID, :PDV_ANTECIPACAO_ID, :PERMITE_GERAR_BAIXA,
              :CONTA_RECEBER_BAIXA_ID, :BAIXA_CONSIGNACAO
            DO BEGIN
               IF(:PERMITE_GERAR_BAIXA = '1')THEN
               BEGIN
                  IF(:CONTA_RECEBER_BAIXA_ID > 0 AND :BAIXA_CONSIGNACAO = 0)THEN
                  BEGIN
                     FOR SELECT
                           FIRST 1
                            A.CODIGO AS CAIXABANCO_ID,
                            A.CONTA_CONTABIL,
                            0 AS CAIXABANCO_CONTROLE,
                            0 AS CONTABILIZACAO_MESTRE_ID,
                            0 AS CONTABILIZACAO_BANCO_ID,
        
                            COALESCE((SELECT FIRST 1 DD.CODIGO FROM TBCONTA_RECEBER_OPERACAO C, TBCENTRO_DE_CUSTO DD
                                        WHERE C.CODIGO = :CONTA_RECEBER_BAIXA_ID AND DD.CODIGO = C.CCUSTO
                                        AND CHAR_LENGTH(TRIM(COALESCE(C.CLASSIFICACAO_FINANCEIRA,''))) > 3), '') AS CONTA_RECEBER_BAIXA_CC,
                            COALESCE((SELECT FIRST 1 DE.CODIGO FROM TBCONTA_RECEBER_OPERACAO C, TBCLASSIFICACAO_CONTABIL DE
                                        WHERE C.CODIGO = :CONTA_RECEBER_BAIXA_ID AND DE.CODIGO = C.CLASSIFICACAO_FINANCEIRA
                                        AND CHAR_LENGTH(TRIM(COALESCE(C.CLASSIFICACAO_FINANCEIRA,''))) > 3), '') AS CONTA_RECEBER_BAIXA_CLASS,
                            COALESCE((SELECT FIRST 1 C.HISTORICO_CONTABIL FROM TBCONTA_RECEBER_OPERACAO C, TBCLASSIFICACAO_CONTABIL DE
                                        WHERE C.CODIGO = :CONTA_RECEBER_BAIXA_ID AND DE.CODIGO = C.CLASSIFICACAO_FINANCEIRA
                                        AND CHAR_LENGTH(TRIM(COALESCE(C.CLASSIFICACAO_FINANCEIRA,''))) > 3), '') AS CONTA_RECEBER_BAIXA_HIST,
                            COALESCE((SELECT FIRST 1 C.TIPO_CREDITO FROM TBCONTA_RECEBER_OPERACAO C, TBCLASSIFICACAO_CONTABIL DE
                                        WHERE C.CODIGO = :CONTA_RECEBER_BAIXA_ID AND DE.CODIGO = C.CLASSIFICACAO_FINANCEIRA
                                        AND CHAR_LENGTH(TRIM(COALESCE(C.CLASSIFICACAO_FINANCEIRA,''))) > 3), '') AS CONTA_RECEBER_BAIXA_TP_CONTA,
                            COALESCE((SELECT FIRST 1 C.CONTA_CREDITO FROM TBCONTA_RECEBER_OPERACAO C, TBCLASSIFICACAO_CONTABIL DE
                                        WHERE C.CODIGO = :CONTA_RECEBER_BAIXA_ID AND DE.CODIGO = C.CLASSIFICACAO_FINANCEIRA
                                        AND CHAR_LENGTH(TRIM(COALESCE(C.CLASSIFICACAO_FINANCEIRA,''))) > 3), '') AS CONTA_RECEBER_BAIXA_CONTA,
        
                            COALESCE((SELECT FIRST 1 N.CONTA_CONTABIL FROM TBEMPRESA N WHERE N.CODIGO = :CLIENTE_ID),'') AS CONTA_CONTABIL_EMPRESA1,
                            COALESCE((SELECT FIRST 1 N.CONTA_CONTABIL2 FROM TBEMPRESA N WHERE N.CODIGO = :CLIENTE_ID),'') AS CONTA_CONTABIL_EMPRESA2
                
                            FROM TBCAIXABANCO A
                            WHERE A.CODIGO = IIF(:TIPO_PAG = '01',(SELECT FIRST 1 X.CAIXABANCO_ID FROM TBPDV_CAIXA X WHERE X.ID = :CAIXA_ID),:CONTA_RECEBER_BANCO)
                         INTO CAIXABANCO_ID, CAIXABANCO_CONTA, CAIXABANCO_CONTROLE, CONTABILIZACAO_MESTRE_ID, CONTABILIZACAO_BANCO_ID, CONTA_RECEBER_BAIXA_CC,
                              CONTA_RECEBER_BAIXA_CLASS, CONTA_RECEBER_BAIXA_HIST, CONTA_RECEBER_BAIXA_TP_CONTA, CONTA_RECEBER_BAIXA_CONTA, CONTA_CONTABIL_EMPRESA1,
                              CONTA_CONTABIL_EMPRESA2
                         DO BEGIN
                               --GERAR LANCAMENTO DA BAIXA
                               :CAIXABANCO_CONTROLE = GEN_ID(GTBCAIXABANCO_LANCAMENTO,1);

                               INSERT INTO TBCAIXABANCO_LANCAMENTO (
                                    ESTABELECIMENTO_CODIGO,
                                    CAIXABANCO_CODIGO,
                                    DATA_LANCAMENTO,
                                    NUMERO_CHEQUE,
                                    CONTA_CONTABIL,
                                    HISTORICO,
                                    VALOR_TOTAL,
                                    OBSERVACAO,
                                    CONTROLE,
                                    TIPO,
                                    NATUREZA,
                                    USUARIO_CODIGO,
                                    DATA,
                                    CCUSTO,
                                    MOVCONTABIL_ID,
                                    MOVCONTMESTRE_ID,
                                    DEVOLUCAO_CHEQUE,
                                    DATA_COMPETENCIA,
                                    PDV_CAIXA_ID,
                                    PDV_MOVIMENTO_CAIXA_ID,
                                    PDV_MOVIMENTO_ID,
                                    PDV_ANTECIPACAO_ID,
                                    BAIXA_CONSIGNADO
                                ) VALUES (
                                    :ESTABELECIMENTO_ID,
                                    :CAIXABANCO_ID,
                                    :DATA_LANCAMENTO,
                                    0,
                                    :CAIXABANCO_CONTA,
                                    ' ADIANTAMENTO DE CONSIGNACAO - '||COALESCE((SELECT FIRST 1 PF.DESCRICAO FROM TBPAGAMENTO_FORMA PF WHERE PF.CODIGO = :PAGAMENTO_FORMA_ID),''),
                                    :VALOR_TOTAL,
                                    ' ADIANTAMENTO DE CONSIGNACAO - '||COALESCE((SELECT FIRST 1 PF.DESCRICAO FROM TBPAGAMENTO_FORMA PF WHERE PF.CODIGO = :PAGAMENTO_FORMA_ID),''),
                                    :CAIXABANCO_CONTROLE,
                                    'R',
                                    'D',
                                    FN_CURRENT_USER_ID(),
                                    CURRENT_TIMESTAMP,
                                    '',
                                    0,
                                    0,
                                    0,
                                    :DATA_LANCAMENTO,
                                    :CAIXA_ID,
                                    :PDV_MOVIMENTO_CAIXA_ID,
                                    :PDV_MOVIMENTO_ID,
                                    :PDV_ANTECIPACAO_ID,
                                    1
                               );

                               --GERAR BAIXA DA PARCELA

                               BAIXA_PARCELA_ID = GEN_ID(GTBCAIXABANCO_REGISTRO, 1);

                               INSERT INTO TBCAIXABANCO_LANCAMENTO_REG (CONTROLE, ESTABELECIMENTO_CODIGO, CAIXABANCO_CONTROLE, DATA, EMPRESA_CODIGO, NFE_PARCELAMENTO_CONTROLE,
                                    NFS_PARCELAMENTO_CONTROLE, CAIXABANCO_CODIGO, OPERACAO_CODIGO, DOCUMENTO_NUMERO, PARCELA, VALOR, VALOR_DESCONTO, VALOR_JUROS, VALOR_MULTA,
                                    VALOR_DESPESA_DIVERSA, VALOR_DESPESA_COBRANCA, VALOR_DESPESA_CARTORIO, REGISTRO_MESTRE, OCORRENCIA_CONTROLE, VALOR_SALDO, DATA_REGISTRO, TIPO,
                                    SERIE, CODORIGEM, CONTA_DEBITO, CONTA_CREDITO, NFE_CONTROLE, NFS_CONTROLE, VALOR_TOTAL, ARQUIVO, CCUSTO, LANCAMENTO_CLASS_ID, HISTORICO,
                                    MOVCONTABIL_ID, MOVCONTMESTRE_ID, baixa_consignado)
                                VALUES (:BAIXA_PARCELA_ID, :ESTABELECIMENTO_ID, :CAIXABANCO_CONTROLE, :DATA_LANCAMENTO, :CLIENTE_ID, 0, :ID, :CAIXABANCO_ID,
                                    :CONTA_RECEBER_BAIXA_ID, :NUMERO_NOTAFISCAL, :PARCELA_X, :VALOR_TOTAL, 0, 0, 0, 0, 0, 0, '1', NULL, 0, CURRENT_TIMESTAMP, 'C', '', 'CRE',
                                    :CAIXABANCO_CONTA, :CONTA_RECEBER_BAIXA_CONTA, 0, :NFS_CONTROLE, :VALOR_TOTAL, NULL, '', 0, :CONTA_RECEBER_BAIXA_HIST||' ADIANTAMENTO DE CONSIGNACAO - '
                                    ||COALESCE((SELECT FIRST 1 PF.DESCRICAO FROM TBPAGAMENTO_FORMA PF WHERE PF.CODIGO = :PAGAMENTO_FORMA_ID),''), 0, 0, 1);

                              --GERAR CLASSIFICACAOO SE POSSIVEL
                              IF(CHAR_LENGTH(CONTA_RECEBER_BAIXA_CLASS) >= 6)THEN
                              BEGIN

                               INSERT INTO TBCAIXABANCO_LANCAMENTO_CLASS (ESTABELECIMENTO_CODIGO, CONTROLE, CAIXABANCO_CONTROLE,
                                    CONTA_PAGAR_CONTROLE, CONTA_RECEBER_CONTROLE, CLASSIFICACAO_CONTABIL, CCUSTO,
                                    HISTORICO_CONTABIL, CONTA_CONTABIL, TIPO, DATA, VALOR)
                                VALUES (:ESTABELECIMENTO_ID, GEN_ID(GTBCAIXABANCO_LANCAMENTO,1), :CAIXABANCO_CONTROLE, 0,
                                    :BAIXA_PARCELA_ID, :CONTA_RECEBER_BAIXA_CLASS, :CONTA_RECEBER_BAIXA_CC, :CONTA_RECEBER_BAIXA_HIST||' ADIANTAMENTO DE CONSIGNACAO - '
                                    ||COALESCE((SELECT FIRST 1 PF.DESCRICAO FROM TBPAGAMENTO_FORMA PF WHERE PF.CODIGO = :PAGAMENTO_FORMA_ID),''),
                                    '', 'C', :DATA_LANCAMENTO, :VALOR_TOTAL);
                              END

                         END

                  END

                  IF(:CONTA_RECEBER_BAIXA_ID > 0 AND :BAIXA_CONSIGNACAO > 0)THEN
                  BEGIN

                     UPDATE TBCAIXABANCO_LANCAMENTO LANC
                        SET LANC.VALOR_TOTAL            = :VALOR_TOTAL

                        WHERE LANC.PDV_ANTECIPACAO_ID = :PDV_ANTECIPACAO_ID
                            AND LANC.BAIXA_CONSIGNADO = 1;


                     UPDATE TBCAIXABANCO_LANCAMENTO_REG BAIXA
                        SET BAIXA.VALOR          = :VALOR_TOTAL,
                            BAIXA.VALOR_TOTAL    = :VALOR_TOTAL,
                            BAIXA.VALOR_SALDO    = :VALOR_TOTAL
                         WHERE BAIXA.CONTROLE    = :BAIXA_CONSIGNACAO
                            AND REGISTRO_MESTRE  = '1'
                            AND BAIXA_CONSIGNADO = 1;


                     UPDATE TBCAIXABANCO_LANCAMENTO_CLASS CLASS
                        SET CLASS.VALOR                     = :VALOR_TOTAL
                         WHERE CLASS.CONTA_RECEBER_CONTROLE = :BAIXA_CONSIGNACAO
                            AND CLASS.TIPO                  = 'C';
                  END

                  /*ATUALIZAR SALDO DA PARCELA*/

                  --EXECUTE PROCEDURE SPU_CONTA_RECEBER_SALDO(:NFS_CONTROLE,:BAIXA_CONSIGNACAO);

                  UPDATE TBNFS_PARCELAMENTO A
                    SET A.VALOR_SALDO = COALESCE((SELECT SUM(CASE WHEN B.TIPO = 'C'
                    THEN B.VALOR_TOTAL*-1  ELSE B.VALOR_TOTAL END) SALDO FROM TBCAIXABANCO_LANCAMENTO_REG B
                    WHERE B.NFS_CONTROLE = A.NFS_CONTROLE
                    AND B.TIPO IN ('D','C')
                    AND B.NFS_PARCELAMENTO_CONTROLE = A.CONTROLE),0)
                    WHERE A.NFS_CONTROLE = :NFS_CONTROLE
                    AND A.CONTROLE = :ID;

               END
            END
     END
     /* DELETAR BAIXAS DAS PARCELAS DA CONSIGNACAO */

     ELSE IF(:ACAO = 2) THEN
     BEGIN

         FOR
            SELECT
                T.CONTROLE,
                ANT.ID AS PDV_ANTECIPACAO_ID
            FROM TBNFS_PARCELAMENTO T, TBPDV_MOVIMENTO_ANTECIPACAO ANT
            WHERE ANT.AGRUPAMENTO_ID = :AGRUPAMENTO_ID
            AND IIF(:ANTECIPACAO_ID > 0, ANT.ID = :ANTECIPACAO_ID, TRUE)
            AND T.NFS_CONTROLE       = ANT.TABELA_ID
            AND ANT.ORIGEM           = 'AVU'
          INTO
             :PARCELAMENTO_ID, :PDV_ANTECIPACAO_ID
          DO BEGIN
            DELETE FROM TBCAIXABANCO_LANCAMENTO_REG S WHERE S.NFS_PARCELAMENTO_CONTROLE = :PARCELAMENTO_ID AND S.TIPO = 'C' AND S.baixa_consignado = 1;

            DELETE FROM TBCAIXABANCO_LANCAMENTO     L WHERE L.PDV_ANTECIPACAO_ID        = :PDV_ANTECIPACAO_ID AND L.baixa_consignado = 1;
          END
     END
END
^

CREATE OR ALTER trigger tbpdv_movimento_antec_b01d for tbpdv_movimento_antecipacao
active before delete position 0
AS
BEGIN
  /*EXCLUIR BAIXA CONSIGNACAO*/
  EXECUTE PROCEDURE SP_BAIXAR_PARCELA_CONSIGNACAO(OLD.ID,OLD.AGRUPAMENTO_ID,2);

  IF(OLD.ORIGEM = 'CHE')THEN
  BEGIN
    IF(COALESCE(OLD.GERAR_PARCELAS, 0) = 1)THEN
    BEGIN
       DELETE FROM TBCHEQUE_ITEM ITEM WHERE ITEM.CHEQUE_ID = OLD.TABELA_ID;

       DELETE FROM TBNFS_PARCELAMENTO PARC WHERE PARC.PDV_ANTECIPACAO_ID = OLD.ID AND PARC.AVULSO = '1';
    END

    DELETE FROM TBCHEQUE CHEQUE WHERE CHEQUE.ID = OLD.TABELA_ID AND CHEQUE.PDV_ANTECIPACAO_ID = OLD.ID;
  END                  
  IF(OLD.ORIGEM = 'AVU')THEN
  BEGIN
    DELETE FROM TBNFS_PARCELAMENTO PARC WHERE PARC.NFS_CONTROLE = OLD.TABELA_ID AND PARC.PDV_ANTECIPACAO_ID = OLD.ID AND PARC.AVULSO = '1';
  END
  IF(OLD.ORIGEM = 'LAN')THEN
  BEGIN
    DELETE FROM TBCAIXABANCO_LANCAMENTO LANC WHERE LANC.CONTROLE = OLD.TABELA_ID AND LANC.PDV_ANTECIPACAO_ID = OLD.ID;
  END
END^

CREATE OR ALTER trigger tbpdv_movimento_antec_b03u for tbpdv_movimento_antecipacao
active before update or delete position 0
AS
BEGIN
 IF(UPDATING)THEN
 BEGIN
   IF(OLD.SALDO <> OLD.VALOR AND OLD.SALDO <= 0 AND NEW.SALDO <= 0)THEN
   BEGIN
     EXCEPTION "..." 'ANTECIP.ID:'||FN_LPAD(NEW.ID,4,0)||',VR R$ '||FN_FORMAT_NUMBER(OLD.VALOR,2)||',SD R$ '||FN_FORMAT_NUMBER(OLD.SALDO,2)||' JA UTILIZADA. <BR> OPERACAO CANCELADA!.';
   END

   IF(OLD.VALOR <> NEW.VALOR) THEN
   BEGIN
      EXECUTE PROCEDURE SP_BAIXAR_PARCELA_CONSIGNACAO(NEW.ID,NEW.AGRUPAMENTO_ID,1);
   END

 END

 IF(DELETING)THEN
 BEGIN
   IF((OLD.SALDO <> OLD.VALOR))THEN
   BEGIN
     EXCEPTION "..." 'ANTECIP.ID:'||FN_LPAD(NEW.ID,4,0)||',VR R$ '||FN_FORMAT_NUMBER(OLD.VALOR,2)||' JA UTILIZADA. <BR> OPERACAO CANCELADA!.';
   END
 END

END^

CREATE OR ALTER trigger ttbpdv_movimento_antec_b01i for tbpdv_movimento_antecipacao
active before insert position 0
AS
BEGIN
  IF (NEW.ID IS NULL) THEN
  BEGIN
    NEW.ID = GEN_ID(GTBPDV_MOVIMENTO_ANTECIPACAO,1);
  END

  IF(NEW.usuario_id IS NULL)THEN
  BEGIN
     NEW.USUARIO_ID = FN_CURRENT_USER_ID();
  END

  /*ATUALIZAR SALDO CONSIGNACAO*/
  EXECUTE PROCEDURE SP_BAIXAR_PARCELA_CONSIGNACAO(NEW.ID,NEW.AGRUPAMENTO_ID,1);
END^

SET TERM ; ^

