-- =====================================================
-- Tabela: produto_codigo_barra
-- Suporte a múltiplos códigos de barras por produto
-- com fator de conversão (EAN unitário, DUN caixa, etc)
-- =====================================================

CREATE TABLE IF NOT EXISTS produto_codigo_barra (
    id SERIAL PRIMARY KEY,
    produto_id INTEGER NOT NULL,
    codigo_barras VARCHAR(50) NOT NULL,
    tipo VARCHAR(20) NOT NULL DEFAULT 'EAN',
    fator INTEGER NOT NULL DEFAULT 1,
    principal BOOLEAN DEFAULT FALSE,
    ativo BOOLEAN DEFAULT TRUE,
    data_cadastro TIMESTAMP DEFAULT NOW(),
    data_atualizacao TIMESTAMP DEFAULT NOW(),
    block_cliente_id INTEGER
);

-- Índices para performance
CREATE INDEX IF NOT EXISTS idx_pcb_produto ON produto_codigo_barra(produto_id);
CREATE INDEX IF NOT EXISTS idx_pcb_codigo ON produto_codigo_barra(codigo_barras);
CREATE INDEX IF NOT EXISTS idx_pcb_cliente ON produto_codigo_barra(block_cliente_id);

-- Constraint de unicidade (um código não pode estar duplicado para o mesmo produto)
-- ALTER TABLE produto_codigo_barra ADD CONSTRAINT uq_pcb_produto_codigo UNIQUE(produto_id, codigo_barras);

-- Comentários
COMMENT ON TABLE produto_codigo_barra IS 'Códigos de barras múltiplos por produto com fator de conversão';
COMMENT ON COLUMN produto_codigo_barra.tipo IS 'EAN, DUN, PROPRIO, QR, etc';
COMMENT ON COLUMN produto_codigo_barra.fator IS 'Quantas unidades esse código representa (ex: DUN caixa = 12)';
COMMENT ON COLUMN produto_codigo_barra.principal IS 'Se é o código de barras principal do produto';
