CREATE TABLE IF NOT EXISTS tabelas_preco (id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,empresa_id BIGINT NOT NULL REFERENCES empresas(id),codigo VARCHAR(20) NOT NULL,descricao VARCHAR(120) NOT NULL,moeda CHAR(3) NOT NULL DEFAULT 'BRL',ativo BOOLEAN NOT NULL DEFAULT TRUE,criado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,atualizado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,excluido_em TIMESTAMP NULL);
CREATE INDEX IF NOT EXISTS idx_tabelas_preco_empresa ON tabelas_preco(empresa_id,codigo);
CREATE TABLE IF NOT EXISTS tabela_preco_itens (id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,tabela_preco_id BIGINT NOT NULL REFERENCES tabelas_preco(id),produto_id BIGINT NOT NULL REFERENCES produtos(id),preco NUMERIC(15,4) NOT NULL DEFAULT 0,quantidade_minima NUMERIC(15,6) NOT NULL DEFAULT 1,criado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,atualizado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,UNIQUE(tabela_preco_id,produto_id));
INSERT INTO tabelas_preco(empresa_id,codigo,descricao,moeda,ativo) SELECT 1,'1','PADRÃO','BRL',TRUE WHERE NOT EXISTS(SELECT 1 FROM tabelas_preco WHERE empresa_id=1 AND codigo='1' AND excluido_em IS NULL);
