CREATE TABLE IF NOT EXISTS produtos (
 id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, empresa_id BIGINT NOT NULL REFERENCES empresas(id), codigo VARCHAR(20) NOT NULL,
 tipo VARCHAR(20) NOT NULL DEFAULT 'mercadoria', descricao VARCHAR(200) NOT NULL, descricao_reduzida VARCHAR(80), referencia VARCHAR(60), gtin VARCHAR(14),
 marca_id BIGINT REFERENCES marcas(id), grupo_id BIGINT REFERENCES grupos_produto(id), subgrupo_id BIGINT REFERENCES subgrupos_produto(id), secao_id BIGINT REFERENCES secoes_produto(id), linha_id BIGINT REFERENCES linhas_produto(id), unidade_id BIGINT NOT NULL REFERENCES unidades_produto(id),
 custo_referencia NUMERIC(15,4) NOT NULL DEFAULT 0, margem_sugerida NUMERIC(9,4) NOT NULL DEFAULT 0, desconto_maximo NUMERIC(9,4) NOT NULL DEFAULT 0, comissao_padrao NUMERIC(9,4) NOT NULL DEFAULT 0,
 quantidade_minima_venda NUMERIC(15,6) NOT NULL DEFAULT 1, multiplo_venda NUMERIC(15,6) NOT NULL DEFAULT 1, venda_fracionada BOOLEAN NOT NULL DEFAULT FALSE,
 controla_estoque BOOLEAN NOT NULL DEFAULT TRUE, permite_estoque_negativo BOOLEAN NOT NULL DEFAULT FALSE, controla_lote BOOLEAN NOT NULL DEFAULT FALSE, controla_serie BOOLEAN NOT NULL DEFAULT FALSE, controla_validade BOOLEAN NOT NULL DEFAULT FALSE,
 estoque_minimo NUMERIC(15,6) NOT NULL DEFAULT 0, estoque_maximo NUMERIC(15,6) NOT NULL DEFAULT 0, ncm VARCHAR(8), cest VARCHAR(7), origem_mercadoria SMALLINT NOT NULL DEFAULT 0,
 gtin_tributavel VARCHAR(14), unidade_tributavel VARCHAR(10), beneficio_fiscal VARCHAR(20), peso_liquido NUMERIC(15,6) NOT NULL DEFAULT 0, peso_bruto NUMERIC(15,6) NOT NULL DEFAULT 0,
 altura NUMERIC(15,4) NOT NULL DEFAULT 0, largura NUMERIC(15,4) NOT NULL DEFAULT 0, comprimento NUMERIC(15,4) NOT NULL DEFAULT 0, observacoes TEXT, 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_produtos_empresa_codigo ON produtos(empresa_id,codigo);
CREATE INDEX IF NOT EXISTS idx_produtos_empresa_descricao ON produtos(empresa_id,descricao);
