-- +goose Up
-- +goose StatementBegin
CREATE TABLE IF NOT EXISTS bordado_cfg_fixo (
    id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), tenant_id UUID NOT NULL UNIQUE,
    valor_nome NUMERIC(10,2) NOT NULL DEFAULT 0, valor_bordado NUMERIC(10,2) NOT NULL DEFAULT 0,
    atualizado_em TIMESTAMPTZ NOT NULL DEFAULT NOW());
CREATE TABLE IF NOT EXISTS bordado_cfg_arte (
    id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), tenant_id UUID NOT NULL,
    nivel TEXT NOT NULL, valor NUMERIC(10,2) NOT NULL DEFAULT 0, UNIQUE(tenant_id, nivel));
CREATE TABLE IF NOT EXISTS bordado_cfg_nome (
    id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), tenant_id UUID NOT NULL,
    quantidade INTEGER NOT NULL, peca_atm NUMERIC(10,2) NOT NULL DEFAULT 0,
    peca_cliente NUMERIC(10,2) NOT NULL DEFAULT 0, UNIQUE(tenant_id, quantidade));
CREATE TABLE IF NOT EXISTS bordado_cfg_ponto (
    id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), tenant_id UUID NOT NULL,
    tipo TEXT NOT NULL CHECK (tipo IN ('plano','bone')), qtd_peca INTEGER NOT NULL,
    valor_ponto NUMERIC(10,4) NOT NULL DEFAULT 0, valor_minimo NUMERIC(10,2) NOT NULL DEFAULT 0,
    UNIQUE(tenant_id, tipo, qtd_peca));
CREATE TABLE IF NOT EXISTS bordado_cfg_fechado (
    id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), tenant_id UUID NOT NULL UNIQUE,
    valor NUMERIC(10,2) NOT NULL DEFAULT 0, atualizado_em TIMESTAMPTZ NOT NULL DEFAULT NOW());
CREATE TABLE IF NOT EXISTS bordado_servicos (
    id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), tenant_id UUID NOT NULL,
    ordem_id UUID NOT NULL REFERENCES ordens_producao(id) ON DELETE CASCADE,
    tipo TEXT NOT NULL CHECK (tipo IN ('bordado','arte','nome')),
    cliente_nome TEXT NOT NULL DEFAULT '', funcionario_id UUID REFERENCES users(id) ON DELETE SET NULL,
    funcionario_nome TEXT NOT NULL DEFAULT '', observacoes TEXT NOT NULL DEFAULT '',
    maquina TEXT NOT NULL DEFAULT '', tipo_bordado TEXT NOT NULL DEFAULT '',
    nome_servico TEXT NOT NULL DEFAULT '', qtd_pontos INTEGER NOT NULL DEFAULT 0,
    qtd_pecas INTEGER NOT NULL DEFAULT 0, peca_fechada BOOLEAN NOT NULL DEFAULT false,
    usar_valor_fixo BOOLEAN NOT NULL DEFAULT false,
    valor_por_1000 NUMERIC(10,4) NOT NULL DEFAULT 0, valor_unitario NUMERIC(10,2) NOT NULL DEFAULT 0,
    total_bordado NUMERIC(10,2) NOT NULL DEFAULT 0, nome_arte TEXT NOT NULL DEFAULT '',
    nivel_arte TEXT NOT NULL DEFAULT '', valor_arte NUMERIC(10,2) NOT NULL DEFAULT 0,
    qtd_nomes INTEGER NOT NULL DEFAULT 0, tipo_peca TEXT NOT NULL DEFAULT '',
    valor_fixo_nome NUMERIC(10,2) NOT NULL DEFAULT 0, total_geral NUMERIC(10,2) NOT NULL DEFAULT 0,
    criado_em TIMESTAMPTZ NOT NULL DEFAULT NOW());
CREATE INDEX IF NOT EXISTS idx_bordado_svcs_ordem ON bordado_servicos(ordem_id);
-- +goose StatementEnd
-- +goose Down
-- +goose StatementBegin
DROP TABLE IF EXISTS bordado_servicos; DROP TABLE IF EXISTS bordado_cfg_fechado;
DROP TABLE IF EXISTS bordado_cfg_ponto; DROP TABLE IF EXISTS bordado_cfg_nome;
DROP TABLE IF EXISTS bordado_cfg_arte; DROP TABLE IF EXISTS bordado_cfg_fixo;
-- +goose StatementEnd
