# Configuração da Collection "empresas-dados" no Appwrite ## Status (pronto x faltando) **Pronto** - Conteúdo descrito neste documento. **Faltando** - Confirmar no código o estado real das funcionalidades e atualizar esta seção conforme necessário. --- ## 📋 DESCRIÇÃO A collection "empresas-dados" armazena informações detalhadas das empresas cadastradas no sistema, incluindo dados da Receita Federal e endereços. ## 🛠️ CONFIGURAÇÃO: Atributos da Collection ### 1. Acesse o Appwrite Console - Vá para: **Database** → **Collections** → **empresas-dados** ### 2. Configure os seguintes atributos na aba "Attributes": #### Atributo: `cnpj` - **Tipo**: String - **Tamanho**: 18 - **Required**: ✅ Sim - **Array**: ❌ Não - **Descrição**: CNPJ da empresa (formato: 00.000.000/0000-00) #### Atributo: `razao-social` - **Tipo**: String - **Tamanho**: 255 - **Required**: ✅ Sim - **Array**: ❌ Não - **Descrição**: Razão social da empresa #### Atributo: `nome-fantasia` - **Tipo**: String - **Tamanho**: 255 - **Required**: ✅ Sim - **Array**: ❌ Não - **Descrição**: Nome fantasia da empresa #### Atributo: `data-abertura` - **Tipo**: String - **Tamanho**: 10 - **Required**: ✅ Sim - **Array**: ❌ Não - **Descrição**: Data de abertura da empresa (formato: YYYY-MM-DD) #### Atributo: `situacao` - **Tipo**: String - **Tamanho**: 50 - **Required**: ✅ Sim - **Array**: ❌ Não - **Descrição**: Situação da empresa (ex: "ATIVA", "BAIXADA") #### Atributo: `natureza-juridica` - **Tipo**: String - **Tamanho**: 255 - **Required**: ✅ Sim - **Array**: ❌ Não - **Descrição**: Natureza jurídica da empresa #### Atributo: `porte` - **Tipo**: String - **Tamanho**: 50 - **Required**: ✅ Sim - **Array**: ❌ Não - **Descrição**: Porte da empresa (ex: "MICRO", "PEQUENO", "MÉDIO", "GRANDE") #### Atributo: `capital-social` - **Tipo**: Float - **Min**: 0 - **Max**: 999999999999 - **Required**: ✅ Sim - **Array**: ❌ Não - **Descrição**: Capital social da empresa (valor numérico) #### Atributo: `telefone` - **Tipo**: String - **Tamanho**: 20 - **Required**: ✅ Sim - **Array**: ❌ Não - **Descrição**: Telefone de contato da empresa #### Atributo: `email` - **Tipo**: String - **Tamanho**: 255 - **Required**: ✅ Sim - **Array**: ❌ Não - **Descrição**: Email de contato da empresa #### Atributo: `atividade-principal-codigo` - **Tipo**: String - **Tamanho**: 20 - **Required**: ✅ Sim - **Array**: ❌ Não - **Descrição**: Código da atividade principal (CNAE) #### Atributo: `atividade-principal-desc` - **Tipo**: String - **Tamanho**: 500 - **Required**: ✅ Sim - **Array**: ❌ Não - **Descrição**: Descrição da atividade principal #### Atributo: `enderecos` - **Tipo**: String (JSON) - **Tamanho**: 2000 - **Required**: ✅ Sim - **Array**: ❌ Não - **Descrição**: Array de endereços da empresa em formato JSON ## 📝 ESTRUTURA DO CAMPO `enderecos` O campo `enderecos` deve conter um JSON com a seguinte estrutura: ```json [ { "tipo": "sede", "cep": "00000-000", "logradouro": "Rua Exemplo", "numero": "123", "complemento": "Sala 1", "bairro": "Centro", "cidade": "São Paulo", "estado": "SP", "pais": "Brasil" } ] ``` ## 🔗 VARIÁVEL DE AMBIENTE Certifique-se de que a seguinte variável esteja configurada no `.env.local`: ```env NEXT_PUBLIC_APPWRITE_COLLECTION_EMPRESAS_DADOS_ID=empresas-dados ``` ## ⚠️ CAMPOS AUTOMÁTICOS DO APPWRITE **NÃO** configure manualmente os seguintes campos, pois são gerenciados automaticamente pelo Appwrite: - `$id` - ID único do documento - `$createdAt` - Data/hora de criação - `$updatedAt` - Data/hora da última atualização - `$permissions` - Permissões do documento ## 🔍 RELACIONAMENTOS Esta collection se relaciona com: - **usuarios-data**: Campo `empresas_array` contém referências às empresas - **empresas**: Collection principal de empresas (relacionamento via razão social) ## 📊 ÍNDICES RECOMENDADOS Para melhor performance, configure os seguintes índices: 1. **Índice por CNPJ**: `cnpj` (único) 2. **Índice por razão social**: `razao-social` 3. **Índice por situação**: `situacao` ## 🚀 EXEMPLO DE USO ```typescript import { EmpresasDadosService } from '@/services/empresasDadosService'; // Criar empresa const novaEmpresa = await EmpresasDadosService.criarEmpresa({ cnpj: "12.345.678/0001-90", "razao-social": "Empresa Exemplo LTDA", "nome-fantasia": "Empresa Exemplo", // ... outros campos }); // Buscar por CNPJ const empresa = await EmpresasDadosService.buscarEmpresaPorCnpj("12.345.678/0001-90"); ```