DROP TRIGGER TBCCUSTO_COTA_DETALHE_BI;
DROP TRIGGER TTBCCUSTO_COTA_B0D;
DROP TRIGGER TTBCCUSTO_COTA_B0D;
DROP TABLE TBCCUSTO_COTA_DETALHE;

CREATE TABLE TBCCUSTO_COTA_DETALHE (
    ID                 INTEGER NOT NULL,
    CCUSTO_ID          VARCHAR(8),
    CONTA_ID           VARCHAR(11),
    DESCRICAO          VARCHAR(50),
    DATAHORA           TIMESTAMP,
    VALOR              NUMERIC(15,4),
    NATUREZA           CHAR(1),
    DATAHORA_INCLUSAO  TIMESTAMP DEFAULT 'NOW',
    STATUSEXCLUSAO     CHAR(1) DEFAULT '0'
);

CREATE GENERATOR GTBCCUSTO_COTA_DETALHE;

ALTER TABLE TBCCUSTO_COTA_DETALHE ADD CONSTRAINT PK_GTBCCUSTO_COTA_DETALHE PRIMARY KEY (ID);

CREATE OR ALTER trigger tbccusto_cota_detalhe_bi for tbccusto_cota_detalhe
inactive before insert position 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gtbccusto_cota_detalhe,1);
end;

CREATE OR ALTER trigger ttbccusto_cota_b0d for tbccusto_cota
active before delete position 0
As
Declare Variable Id Integer;
Begin
    For
        Select First 1
            c.Id
        
        From
            TbCCusto_Cota_Detalhe c
        
        Where
            c.CCusto_Id =   Old.CCusto
        And c.Conta_Id  =   Old.ContaContabil
        And c.DataHora BetWeen Cast(Old.Ano||'.'||Old.Mes||'.01' As TimeStamp) And (DateAdd(1 Month To Cast(Old.Ano||'.'||Old.Mes||'.01' As TimeStamp))-1)

    Into :Id
    Do
    Begin
        If (Id > 0) Then
        Begin
            Exception "..." 'EXCLUSÃO NÃO PERMITIDA, JÁ EXISTEM ITENS CADASTRADOS PARA ESTA COTA.'||
            ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
        End
    End
End;

GRANT ALL ON TBMODELO_PEDIDO_COTA TO ALEXANDREL WITH GRANT OPTION;
