# 🔧 Correção: Sistema de Comissões de Afiliados

## 📋 Mudança Implementada

**Problema Identificado:**
- Sistema estava gerando comissão para upgrades/downgrades
- Comissões incorretas sendo calculadas

**Solução Implementada:**
- ✅ **20% apenas na venda inicial** (primeiro pagamento - `subscription_new`)
- ✅ **15% nas duas primeiras renovações mensais** (`monthly_subscription`)
- ✅ **10% da 3ª renovação mensal em diante** (`monthly_subscription`)
- ✅ **NÃO gera comissão em upgrades** (`plan_upgrade`)
- ✅ **NÃO gera comissão em downgrades** (`plan_downgrade`)

---

## 🎯 Regras de Comissão

### **1. Venda Inicial (20%)**
- **Tipo:** `subscription_new`
- **Taxa:** 20%
- **Quando:** Primeiro pagamento do usuário indicado
- **Condição:** Apenas se não existir comissão inicial para este referral
- **Exemplo:** Usuário indica, indicado paga plano de R$ 100 → Comissão: R$ 20,00

### **2. Renovações Mensais (15% nas 2 primeiras, 10% depois)**
- **Tipo:** `monthly_subscription`
- **Taxa:** 
  - 15% na 1ª renovação
  - 15% na 2ª renovação
  - 10% da 3ª renovação em diante
- **Quando:** Pagamento mensal de renovação do plano
- **Cálculo:** Baseado no valor do plano ATUAL do usuário
- **Exemplo:** 
  - 1ª renovação: Plano R$ 100 → Comissão: R$ 15,00
  - 2ª renovação: Plano R$ 100 → Comissão: R$ 15,00
  - 3ª renovação: Plano R$ 100 → Comissão: R$ 10,00
  - 4ª+ renovações: Plano R$ 100 → Comissão: R$ 10,00

### **3. Upgrades (NÃO gera comissão)**
- **Tipo:** `plan_upgrade`
- **Taxa:** 0% (não gera comissão)
- **Quando:** Usuário faz upgrade de plano
- **Motivo:** Apenas renovações mensais geram comissão

### **4. Downgrades (NÃO gera comissão)**
- **Tipo:** `plan_downgrade`
- **Taxa:** 0% (não gera comissão)
- **Quando:** Usuário faz downgrade de plano
- **Motivo:** Apenas renovações mensais geram comissão

---

## 🔄 Fluxo de Comissões

```
1. Usuário Indicado Paga Primeiro Plano
   ↓
   Tipo: subscription_new
   Comissão: 20% do valor ✅
   ↓
2. Renovação Mensal (1ª vez)
   ↓
   Tipo: monthly_subscription
   Comissão: 15% do valor do plano atual ✅
   ↓
3. Renovação Mensal (2ª vez)
   ↓
   Tipo: monthly_subscription
   Comissão: 15% do valor do plano atual ✅
   ↓
4. Renovação Mensal (3ª vez em diante)
   ↓
   Tipo: monthly_subscription
   Comissão: 10% do valor do plano atual ✅
   ↓
5. Usuário Faz Upgrade
   ↓
   Tipo: plan_upgrade
   Comissão: NÃO GERA ❌
   ↓
6. Próxima Renovação Mensal
   ↓
   Tipo: monthly_subscription
   Comissão: 10% do valor do NOVO plano (upgradeado) ✅
```

---

## 📊 Exemplo Prático

### **Cenário:**
- Plano Inicial: R$ 100/mês
- Após 2 meses: Upgrade para R$ 150/mês

### **Comissões Geradas:**

| Pagamento | Tipo | Valor | Taxa | Comissão | Total Acumulado |
|-----------|------|-------|------|----------|-----------------|
| 1º Mês | subscription_new | R$ 100 | 20% | R$ 20,00 | R$ 20,00 |
| 2º Mês | monthly_subscription | R$ 100 | 15% | R$ 15,00 | R$ 35,00 |
| 3º Mês | monthly_subscription | R$ 100 | 15% | R$ 15,00 | R$ 50,00 |
| Upgrade | plan_upgrade | R$ 50 | 0% | R$ 0,00 | R$ 50,00 |
| 4º Mês | monthly_subscription | R$ 150 | 10% | R$ 15,00 | R$ 65,00 |
| 5º Mês | monthly_subscription | R$ 150 | 10% | R$ 15,00 | R$ 80,00 |

**Total após 5 meses:** R$ 80,00 (sem contar o upgrade)

---

## 🔍 Mudanças no Código

### **Arquivo: `backend/app/Services/AffiliateService.php`**

**Antes:**
```php
if ($paymentType === 'plan_upgrade') {
    // Upgrade - tratar como venda inicial para comissão
    $commissionType = 'initial_sale';
    $renewalNumber = 0;
}
```

**Agora:**
```php
elseif ($paymentType === 'monthly_subscription') {
    // Renovação mensal - apenas renovações mensais geram comissão
    // NÃO gerar comissão para upgrades/downgrades
    $commissionType = 'renewal';
    $renewalNumber = ...;
} else {
    // Outros tipos (plan_upgrade, plan_downgrade, etc) NÃO geram comissão
    return null;
}
```

**Mudanças principais:**
1. ✅ Removida lógica de comissão para `plan_upgrade`
2. ✅ Apenas `subscription_new` e `monthly_subscription` geram comissão
3. ✅ Adicionada verificação de segurança para venda inicial (não criar duplicada)
4. ✅ Log detalhado quando pagamento não gera comissão

---

## 📋 Tipos de Pagamento

### **Geram Comissão:**
- ✅ `subscription_new` - Venda inicial (20%)
- ✅ `monthly_subscription` - Renovação mensal (15% ou 10%)

### **NÃO Geram Comissão:**
- ❌ `plan_upgrade` - Upgrade de plano
- ❌ `plan_downgrade` - Downgrade de plano
- ❌ `whatsapp_extra` - Compra de extras
- ❌ `whatsapp_extra_monthly` - Cobrança mensal de extras
- ❌ Qualquer outro tipo

---

## 🎯 Benefícios

1. ✅ **Comissões Corretas** - Apenas venda inicial e renovações mensais
2. ✅ **Cálculo Preciso** - Baseado no plano atual do usuário
3. ✅ **Sem Duplicação** - Upgrades não geram comissão extra
4. ✅ **Lógica Clara** - Fácil de entender e manter
5. ✅ **Transparência** - Logs detalhados de todas as operações

---

## 🔍 Verificação no Banco de Dados

### **Ver Comissões por Tipo:**
```sql
SELECT 
    ac.type,
    COUNT(*) as quantidade,
    SUM(ac.commission_amount) as total_comissoes,
    AVG(ac.commission_rate) as taxa_media
FROM affiliate_commissions ac
GROUP BY ac.type
ORDER BY quantidade DESC;
```

### **Verificar Se Existem Comissões de Upgrade (não deveria existir):**
```sql
SELECT 
    ac.id,
    ac.created_at,
    p.meta->>'$.type' as payment_type,
    ac.commission_amount,
    u.name as affiliate_name
FROM affiliate_commissions ac
JOIN payments p ON ac.payment_id = p.id
JOIN affiliates a ON ac.affiliate_id = a.id
JOIN users u ON a.user_id = u.id
WHERE p.meta->>'$.type' IN ('plan_upgrade', 'plan_downgrade');
```

**Resultado esperado:** 0 registros

---

## ✅ Checklist de Verificação

- [x] Comissão apenas em `subscription_new` (venda inicial - 20%)
- [x] Comissão apenas em `monthly_subscription` (renovações - 15% ou 10%)
- [x] Não gera comissão em `plan_upgrade`
- [x] Não gera comissão em `plan_downgrade`
- [x] Taxas corretas: 20% inicial, 15% (2x), 10% (3ª+)
- [x] Cálculo baseado no plano atual do usuário
- [x] Logs detalhados adicionados
- [x] Segurança contra duplicação de venda inicial

---

## 🚀 Status

**Implementação: ✅ COMPLETA**

O sistema agora funciona corretamente:
- ✅ Apenas venda inicial e renovações mensais geram comissão
- ✅ Upgrades e downgrades não geram comissão
- ✅ Taxas corretas aplicadas
- ✅ Cálculo baseado no plano atual

**Sem necessidade de migrations! Mudanças apenas na lógica de negócio.**
