# Quick Guide: Odoo-Based Approval System

## For Sales Team (Odoo Users)

### How to Approve a Wholesale Customer

1. **Check Your Email**
   - You'll receive: "New Wholesale Partner Registration - Approval Required"
   - Email includes company details and POTRAZ license attachment

2. **Open Odoo**
   - Go to: https://dfaz.ipos.co.zw
   - Navigate to: Contacts

3. **Find the Customer**
   - Click: Filters → Archived
   - Search for the company name (e.g., "Test ISP Ltd")

4. **Review Details**
   - Check POTRAZ license (from email attachment)
   - Verify TIN number
   - Verify VAT number
   - Check company website and industry

5. **Approve**
   - Click "Unarchive" button
   - OR: Edit → Check "Active" → Save

6. **Done!**
   - Customer can login within 10 minutes
   - Or immediately on their next login attempt

### How to Reject a Customer

1. **Keep Customer Archived**
   - Don't unarchive (keep `active = false`)

2. **Add Rejection Note**
   - Edit customer record
   - In "Internal Notes" field, add:
     - "REJECTED: Invalid POTRAZ license"
     - "REJECTED: Incomplete documentation"
     - etc.

3. **Save**
   - Customer will be marked as rejected
   - They cannot login

---

## For Developers

### Quick Commands

```bash
# Check sync status
php artisan customers:sync-approval-status

# Sync specific customer
php artisan customers:sync-approval-status --customer-id=5

# Sync all wholesale customers
php artisan customers:sync-approval-status --all

# Check scheduled tasks
php artisan schedule:list

# Run scheduler manually
php artisan schedule:run
```

### Quick Database Checks

```sql
-- Pending customers
SELECT id, name, email, approval_status, created_at
FROM customers
WHERE type = 'wholesale' AND approval_status = 'pending';

-- Recently approved
SELECT id, name, email, approved_at, approved_by
FROM customers
WHERE approval_status = 'approved'
ORDER BY approved_at DESC;
```

### Manual Approval (Emergency)

```sql
UPDATE customers 
SET approval_status = 'approved',
    approved_at = NOW(),
    approved_by = 'Manual Override'
WHERE id = 5;
```

---

## How It Works

### Registration Flow
```
Customer Registers → Portal creates in Odoo (active=false)
                  → Admin receives email
                  → Customer CANNOT login
```

### Approval Flow
```
Admin sets active=true in Odoo → Scheduled sync (every 10 min)
                               → Portal updates approval_status
                               → Customer CAN login
```

### Real-Time Check
```
Customer tries login → Portal checks Odoo
                    → If active=true, auto-approve
                    → Allow login immediately
```

---

## Key Points

✅ **Approval is controlled by Odoo `active` field**
✅ **No admin portal needed**
✅ **Automatic sync every 10 minutes**
✅ **Real-time check on login**
✅ **Customer can login immediately after approval**

---

## Troubleshooting

**Customer can't login after approval:**
1. Check Odoo: Is customer active?
2. Run: `php artisan customers:sync-approval-status --customer-id=X`
3. Check portal database: `SELECT approval_status FROM customers WHERE id=X`

**Sync not working:**
1. Check cron job is running
2. Run: `php artisan schedule:run`
3. Check logs: `storage/logs/laravel.log`

**Need immediate approval:**
1. Set active=true in Odoo
2. Customer tries to login
3. Portal auto-approves on login attempt

---

## Support

- **Email**: tawona@quatrohaus.com
- **Odoo**: https://dfaz.ipos.co.zw
- **Logs**: `afinet-portal-backend/storage/logs/laravel.log`
