CREATE TABLE TBVOUCHER (
    ID INTEGER NOT NULL,
    TIPO_CLIENTE INTEGER,
    CLIENTE_ID INTEGER DEFAULT 0 NOT NULL,
    COLABORADOR_ID INTEGER DEFAULT 0 NOT NULL,
    DATA_VALIDADE DATE,
    CODIGO VARCHAR(200),
    TIPO_BAIXA INTEGER DEFAULT 0 NOT NULL,
    STATUS INTEGER DEFAULT 0 NOT NULL,
    OBSERVACAO VARCHAR(100),
    VALOR NUMERIC(15,2),
    SALDO NUMERIC(15,2),
    DATAHORA TIMESTAMP DEFAULT 'NOW' NOT NULL);

ALTER TABLE TBVOUCHER
ADD CONSTRAINT PK_TBVOUCHER
PRIMARY KEY (ID);

COMMENT ON COLUMN TBVOUCHER.TIPO_CLIENTE IS
'0 - CLIENTE;
1 - COLABORADOR;';

COMMENT ON COLUMN TBVOUCHER.TIPO_BAIXA IS
'STATUS DE BAIXA DO VOUCHER:
0 - ENCERRA AO UTILIZAR VALOR DO VOUCHER TOTAL;
1 - ENCERRA AO UTILIZAR VALOR DO VOUCHER PARCIAL;';

COMMENT ON COLUMN TBVOUCHER.STATUS IS
'STATUS DO VOUCHER
0 - EM ABERTO;
1 - ENCERRADO;';

CREATE SEQUENCE GTBVOUCHER;

SET TERM ^ ;

create trigger ttbvoucher_b01i for tbvoucher
active before insert position 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gtbvoucher,1);
end
^

SET TERM ; ^

CREATE INDEX ITBVOUCHER_01
ON TBVOUCHER (TIPO_CLIENTE);

CREATE INDEX ITBVOUCHER_02
ON TBVOUCHER (CLIENTE_ID);

CREATE INDEX ITBVOUCHER_03
ON TBVOUCHER (COLABORADOR_ID);

CREATE INDEX ITBVOUCHER_04
ON TBVOUCHER (DATA_VALIDADE);

CREATE INDEX ITBVOUCHER_05
ON TBVOUCHER (CODIGO);

CREATE INDEX ITBVOUCHER_06
ON TBVOUCHER (TIPO_BAIXA);

CREATE INDEX ITBVOUCHER_07
ON TBVOUCHER (STATUS);

