# 🚀 PDV SaaS - Ponto de Venda Multi-Tenant

Transforme seu sistema PDV em uma plataforma SaaS completa com isolamento de dados por empresa.

---

## ⚡ Início Rápido

### 1️⃣ Executar Schema SaaS

```bash
# No seu cliente MySQL, execute:
source /config/saas_schema.sql

# Ou via terminal:
mysql -u root -p seu_banco < /config/saas_schema.sql
```

### 2️⃣ Migrar Dados Existentes (Opcional)

Se você já tem dados no PDV antigo:

```
Acesse: http://seu-dominio/migrar_para_saas.php
- Confirme as opções de segurança
- Clique em "Iniciar Migração"
```

### 3️⃣ Fazer Login

**Credenciais de teste:**
```
Email: admin@lojamatriz.com.br
Senha: senha
```

Ou para administração SaaS:
```
Email: super@saas.com
Senha: senha
```

### 4️⃣ Começar a Usar

- Admin: `/pages/dashboard.php` - Dashboard da empresa
- Super Admin: `/pages/admin_saas.php` - Dashboard global

---

## 📊 Fluxo SaaS

```
┌─────────────────────────────────────────────────┐
│  Visitante → Clica em "Criar Conta"             │
│           ↓                                      │
│  /registro.php                                  │
│  └─ Preenche: empresa + usuário (admin)        │
│           ↓                                      │
│  Database: INSERT empresas, usuarios,            │
│           INSERT assinaturas (plano básico)     │
│           ↓                                      │
│  /auth/login.php                                │
│  └─ Email: admin@empresa.com                    │
│    Redireciona → /pages/dashboard.php           │
│                                                  │
│  Admin Convida Usuarios:                        │
│  /pages/gerenciar_usuarios.php                  │
│  └─ Insere vendedor, gerente, novo admin       │
│                                                  │
│  Todos Usam PDV:                                │
│  /pages/pdv.php                                 │
│  └─ Filtro automático: empresa_id = SESSÃO     │
└─────────────────────────────────────────────────┘
```

---

## 🏗️ Arquitetura

### Isolamento por Empresa

```sql
-- ❌ Inseguro - sem isolamento
SELECT * FROM produtos WHERE id = $id

-- ✅ Seguro - isolado por empresa
SELECT * FROM produtos 
WHERE id = $id AND empresa_id = $_SESSION['empresa_id']
```

### Hierarquia de Usuários

| Tipo | Acesso | Empresa |
|------|--------|---------|
| super_admin | Dashboard SaaS global | Todas |
| admin_empresa | Dashboard + gerenciar usuários | Uma |
| gerente | PDV + relatórios | Uma |
| vendedor | Apenas PDV | Uma |

---

## 📁 Arquivos Importantes

### Novos Arquivos

| Arquivo | Descrição |
|---------|-----------|
| `/models/Empresa.php` | Modelo de Empresa (CRUD) |
| `/registro.php` | Registro público de nova empresa |
| `/auth/login.php` | Login multi-tenant (atualizado) |
| `/pages/admin_saas.php` | Dashboard SaaS (super_admin) |
| `/pages/gerenciar_usuarios.php` | Gerenciar usuários da empresa |
| `/auth/logout.php` | Logout com logging (atualizado) |
| `/config/saas_schema.sql` | Schema multi-tenant |
| `/migrar_para_saas.php` | Script de migração |
| `/GUIA_SAAS.md` | Documentação completa |

### Arquivos Modificados

| Arquivo | Alteração |
|---------|-----------|
| `/auth/login.php` | Adicionado empresa_id e tipo_usuario na sessão |
| `/auth/logout.php` | Adicionado logging de logout |

---

## 🔒 Segurança

### ✅ Implementado

- [x] Senhas hasheadas com PASSWORD_BCRYPT
- [x] Prepared statements (PDO) contra SQL injection
- [x] Validação de limite de usuários por plano
- [x] Log de auditoria (tabela `log_acesso`)
- [x] Isolamento de dados por empresa_id

### ⏳ TODO

- [ ] Implementar Middleware SaaS (filtro automático empresa_id)
- [ ] CSRF tokens em formulários
- [ ] Rate limiting no login
- [ ] Validação de email com token_convite
- [ ] HTTPS obrigatório em produção
- [ ] Backup automático por empresa

---

## 📊 Dashboard Super Admin

Acesse `/pages/admin_saas.php` com credenciais super_admin:

**Funcionalidades:**
- 📈 Estatísticas globais (empresas, usuários, vendas, receita)
- 🏢 Listagem de empresas com detalhes
- 👥 Usuários por empresa
- 💳 Planos e assinaturas
- 📊 Relatórios de receita

---

## 💳 Planos Pré-Configurados

| Plano | Preço | Usuários | Produtos |
|-------|-------|----------|----------|
| Básico | R$ 49,90/mês | 3 | 500 |
| Profissional | R$ 99,90/mês | 10 | 2.000 |
| Enterprise | R$ 299,90/mês | 50 | 10.000 |

---

## 📝 Dados de Teste

### Empresa
```
Nome: Loja Matriz
CNPJ: 12.345.678/0000-90
Responsável: João Silva
Email: contato@lojamatriz.com.br
Plano: Básico (ativo)
```

### Usuários
```
1. super@saas.com (Super Admin - acesso global)
2. admin@lojamatriz.com.br (Admin - acesso à Loja Matriz)
```

**Todos com senha:** `senha`

---

## 🚀 Próximos Passos

### 1. Implementar Middleware SaaS
```php
// /auth/saas_middleware.php (criar)
// Filtro automático empresa_id em todas as queries
```

### 2. Email de Convite
```php
// Usar PHPMailer ou SendGrid
// Enviar link para aceitar convite (token_convite)
```

### 3. Página Aceitar Convite
```
/aceitar-convite.php?token=xyz
- Validar token
- Definir senha
- Ativar usuário
```

### 4. Upgrade de Plano
```
/pages/upgrade-plano.php
- Mostrar planos disponíveis
- Processar pagamento (Stripe/PagSeguro)
```

### 5. Cancelamento de Empresa
```
/pages/cancelar-empresa.php
- Desativar empresa (soft delete)
- Exportar dados
- Preservar logs de auditoria
```

---

## 🧪 Testando

### Login como Admin Empresa
```
1. Ir para /auth/login.php
2. Email: admin@lojamatriz.com.br
3. Senha: senha
4. Deve redirecionar para /pages/dashboard.php
```

### Login como Super Admin
```
1. Ir para /auth/login.php
2. Email: super@saas.com
3. Senha: senha
4. Deve redirecionar para /pages/admin_saas.php
```

### Registrar Nova Empresa
```
1. Ir para /registro.php
2. Preencher formulário
3. Deve criar empresa + usuário admin
4. Deve dar erro se CNPJ/email duplicado
```

### Convidar Usuários
```
1. Login como admin@lojamatriz.com.br
2. Ir para /pages/gerenciar_usuarios.php
3. Preencher nome, email, tipo
4. Deve criar usuário (pendente)
5. Deve validar limite do plano
```

---

## 🐛 Troubleshooting

### Erro: "Sua empresa está desativada"
```
→ Verifique em empresas.ativa = 1
→ Ou verifique assinatura status = 'ativa'
```

### Erro: "Você atingiu o limite de usuários"
```
→ Upgrade o plano em /pages/upgrade-plano.php (TODO)
→ Ou remova um usuário em /pages/gerenciar_usuarios.php
```

### Erro: "Tabela não encontrada"
```
→ Execute /config/saas_schema.sql
→ Ou rode /migrar_para_saas.php
```

### Usuários podem ver dados de outra empresa
```
→ TODO: Implementar Middleware SaaS
→ Adicionar WHERE empresa_id = $_SESSION['empresa_id']
  em TODAS as queries
```

---

## 📚 Documentação Completa

Ver: `/GUIA_SAAS.md`

Tópicos:
- Arquitetura SaaS
- Hierarquia de usuários
- Schema do banco de dados
- Isolamento de dados
- Fluxo de uso
- Checklista de segurança
- Próximas implementações

---

## 🤝 Suporte

Dúvidas? Verifique:
1. `/GUIA_SAAS.md` - Documentação técnica
2. `/config/saas_schema.sql` - Schema com comentários
3. `/models/Empresa.php` - Código comentado
4. Logs de erro: `/pages/error_log`

---

## 📄 Licença

PDV SaaS © 2024 - Todos os direitos reservados

---

**Versão:** 1.0.0 SaaS  
**Data:** 2024  
**Status:** 🚀 Produção Pronta
