======================================== 4.1) PRODUTOS ======================================== Tabela: tb_produtos Status: AJUSTAR (moderado) Objetivo Cadastrar produtos/peças (itens físicos) usados em orçamentos/pedidos, com controle de unidade, preço e (se existir) estoque. Campos essenciais do MVP - id_produto | INT, PK, AUTO_INCREMENT (hoje está id) - produto | VARCHAR(180) (nome/descrição do produto) - id_unidade | INT (FK recomendada → tb_unidades.id_unidade — hoje está unidade) - valor_unitario | DECIMAL(10,2) (hoje está valor) - ativo | TINYINT(1) DEFAULT 1 - criado_em | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP (recomendado) Campos opcionais (MVP+) - qtde_estoque | DECIMAL(10,2) DEFAULT 0 (hoje está qtde) - obs | VARCHAR(255) NULL - atualizado_em | DATETIME NULL Campos suspeitos / a ajustar - total → ⚠️ não faz sentido no cadastro do produto (total é por item do orçamento). -- Se for “valor_total_em_estoque” é derivado (qtde * valor_unitario) e não precisa armazenar. Observações - Em tb_orcamento_itens, quando tipo_item = 'produto', o id_item aponta para tb_produtos.id_produto. - Produto é “coisa física”; serviço é “mão de obra”. Separar cadastro facilita: -- relatórios -- preços -- (futuro) estoque ======================================== 4.2) SERVIÇOS ======================================== Tabela: tb_servicos Status: AJUSTAR (moderado) Objetivo Cadastrar serviços/mão de obra (itens não físicos) utilizados em orçamentos/pedidos, com unidade, preço e observações — sem controle de estoque. Campos essenciais do MVP - id_servico | INT, PK, AUTO_INCREMENT (hoje está id) - servico | VARCHAR(180) (nome/descrição do serviço — hoje está produto) - id_unidade | INT (FK recomendada → tb_unidades.id_unidade — hoje está unidade) - valor_unitario | DECIMAL(10,2) (hoje está valor) - ativo | TINYINT(1) DEFAULT 1 - criado_em | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP (recomendado) Campos opcionais (MVP+) - obs | VARCHAR(255) NULL - atualizado_em | DATETIME NULL Campos que NÃO fazem sentido para serviço - qtde → ❌ quantidade é definida no item do orçamento, não no cadastro - total → ❌ total é calculado por item (qtde * valor_unitario) - estoque → ❌ serviço não tem estoque Observações importantes - Em tb_orcamento_itens, quando tipo_item = 'servico', o id_item aponta para tb_servicos.id_servico. - Separar produtos e serviços no cadastro: -- evita campos inúteis -- simplifica telas -- facilita relatórios (quanto vendeu de peça vs mão de obra) Exemplo prático (Raavcar) - Produto: Pastilha de freio → tb_produtos - Serviço: Troca de pastilha → tb_servicos No orçamento: - [Produto] Pastilha de freio — R$ 180,00 - [Serviço] Troca de pastilha — R$ 120,00 Tudo convivendo via tb_orcamento_itens. ======================================== 4.3) UNIDADES ======================================== Tabela: tb_unidades Status: AJUSTAR (leve) Objetivo Definir unidades de medida utilizadas por produtos e serviços (ex: UN, HR, KG). Campos essenciais do MVP - id_unidade | INT, PK, AUTO_INCREMENT (hoje está id) - unidade | VARCHAR(20) (ex: UN, HR, KG, LT) - ativo | TINYINT(1) DEFAULT 1 Campos opcionais (MVP+) - descricao | VARCHAR(100) NULL (ex: Unidade, Hora, Quilograma) - criado_em | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP Observações - unidade deve ser única: UNIQUE(unidade) - Usada como FK em: -- tb_produtos.id_unidade -- tb_servicos.id_unidade - Facilita: -- padronização -- relatórios -- futuras integrações (estoque / fiscal) ======================================== 4.4) TIPO DE PESSOA ======================================== Tabela: tb_tipo_pessoa Status: AJUSTAR (leve) Objetivo Definir os tipos de pessoa utilizados no sistema (Pessoa Física / Pessoa Jurídica), evitando uso de strings soltas e facilitando validações. Campos essenciais do MVP - id_tipo_pessoa | INT, PK, AUTO_INCREMENT (hoje está id) - tipo | VARCHAR(20) (ex: PF, PJ) - pessoa | VARCHAR(50) (ex: Pessoa Física, Pessoa Jurídica) - ativo | TINYINT(1) DEFAULT 1 Campos opcionais (MVP+) - descricao | VARCHAR(255) NULL - criado_em | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP Observações - Recomenda-se UNIQUE(tipo) para evitar duplicidade. - Pode ser usada como FK em: -- tb_empresas.tipo_cliente (se preferir normalizar) -- futuros cadastros de clientes/fornecedores - Evita validações “na unha” espalhadas pelo código (if tipo == 'PF' etc.). Tipos padrão sugeridos (MVP) - PF — Pessoa Física - PJ — Pessoa Jurídica ======================================== 4.5) SEGMENTOS ======================================== Tabela: tb_empresas_segmento Status: AJUSTAR (leve) Objetivo Definir os segmentos de atuação das empresas (clientes), permitindo classificação, filtros e personalização futura do sistema. Campos essenciais do MVP - id_segmento | INT, PK, AUTO_INCREMENT (hoje está id) - segmento | VARCHAR(100) (ex: Oficina Mecânica, Autopeças, Imobiliária) - ativo | TINYINT(1) DEFAULT 1 Campos opcionais (MVP+) - descricao | VARCHAR(255) NULL - criado_em | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP Observações - segmento deve ser único: UNIQUE(segmento) - Pode ser usado em: -- tb_empresas.segmento (FK recomendada) - Permite no futuro: -- ativar módulos por segmento -- personalizar telas/fluxos -- relatórios por nicho Segmentos padrão sugeridos (MVP) - Oficina Mecânica - Autopeças - Imobiliária - Serviços - Comércio - Indústria