SET TERM ^ ;

CREATE GENERATOR GTBCAIXABANCO_LANC_REG_FORMA^

CREATE TABLE TBCAIXABANCO_LANC_REG_FORMA_PAG(
ID                               INTEGER NOT NULL PRIMARY KEY,
CAIXABANCO_LANCAMENTO_REG_ID     INTEGER DEFAULT 0,
CAIXABANCO_LANC_CLASS_SALDO_ID   INTEGER DEFAULT 0,
PAGAMENTO_FORMA_ID               INTEGER DEFAULT 0,
VALOR                            NUMERIC(10,2) DEFAULT 0,
DATAHORA                         TIMESTAMP DEFAULT 'NOW')^

CREATE OR ALTER TRIGGER TBCAIXABANCO_LANC_REG_FORM_B01I FOR TBCAIXABANCO_LANC_REG_FORMA_PAG
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.ID IS NULL) THEN
  BEGIN
      NEW.ID = GEN_ID(GTBCAIXABANCO_LANC_REG_FORMA,1);
  END
END^

CREATE INDEX ITBCAIXABANCO_LANC_REG_FORM_01
ON TBCAIXABANCO_LANC_REG_FORMA_PAG (CAIXABANCO_LANCAMENTO_REG_ID)^

CREATE INDEX ITBCAIXABANCO_LANC_REG_FORM_02
ON TBCAIXABANCO_LANC_REG_FORMA_PAG (PAGAMENTO_FORMA_ID)^

CREATE INDEX ITBCAIXABANCO_LANC_REG_FORM_03
ON TBCAIXABANCO_LANC_REG_FORMA_PAG (DATAHORA)^

CREATE INDEX ITBCAIXABANCO_LANC_REG_FORM_04
ON TBCAIXABANCO_LANC_REG_FORMA_PAG (CAIXABANCO_LANC_CLASS_SALDO_ID)^

CREATE OR ALTER TRIGGER TTBCAIXABANCO_LANC_REG_B1D_01 FOR TBCAIXABANCO_LANCAMENTO_REG
ACTIVE BEFORE DELETE POSITION 1
AS
BEGIN

  IF (OLD.CONTROLE > 0) THEN
      BEGIN
        UPDATE TBCCUSTO_COTA_DETALHE SET
        STATUSEXCLUSAO = '1'
        WHERE TABELA = OLD.CODORIGEM
          AND TABELA_ID = OLD.CONTROLE;
      END

   IF(OLD.NFS_PARCELAMENTO_CONTROLE > 0)THEN
   BEGIN
      DELETE FROM TBCOMISSAO A WHERE A.TABELA_ID = OLD.CONTROLE AND A.ORIGEM = 'LAN';
   END

   IF(OLD.CAIXABANCO_CONTROLE > 0 AND OLD.NFS_PARCELAMENTO_CONTROLE > 0)THEN
   BEGIN
      DELETE FROM TBCAIXABANCO_LANC_REG_FORMA_PAG B WHERE B.CAIXABANCO_LANCAMENTO_REG_ID = OLD.CONTROLE;
   END
END^

CREATE OR ALTER TRIGGER TTBCAIXABANCO_LANC_CLASS_SA_B2D FOR TBCAIXABANCO_LANC_CLASS_SALDO
ACTIVE BEFORE DELETE POSITION 2
AS
DECLARE VARIABLE CHEQUE_SITUACAO INTEGER;
BEGIN

  IF (OLD.SALDO < OLD.VALOR) THEN
      BEGIN
      EXCEPTION "..." 'REGISTRO NAO PODE SER EXCLUIDO! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .';
      END

    IF(OLD.CHEQUE_ID > 0)THEN
    BEGIN

        CHEQUE_SITUACAO = COALESCE((SELECT FIRST 1 A.SITUACAO FROM TBCHEQUE A WHERE A.ID = OLD.CHEQUE_ID), -1);

        IF(CHEQUE_SITUACAO = 5)THEN
        BEGIN
            EXCEPTION "..." 'CHEQUE: '||FN_LPAD(OLD.CHEQUE_ID, 4, '0')||' VINCULADO AO REGISTRO COM SITUACAO DEVOLVIDO. EXCLUSAO NAO AUTORIZADA!';
        END

        UPDATE TBCHEQUE SET SITUACAO = 3 WHERE ID = OLD.CHEQUE_ID;
    END
    /*EXCLUIR FORMAS DE PAGAMENTO*/
    DELETE FROM TBCAIXABANCO_LANC_REG_FORMA_PAG PAG WHERE PAG.CAIXABANCO_LANC_CLASS_SALDO_ID = OLD.ID;

END^

^ SET TERM ; ^