Skip to content

Email Automation - Complete Summary

Three Separate Email Processors

1. Sales Order Processor

File: sales/services/salesorder_email_processor.py
Email: sales@company.com
Module: SALES
Creates: Draft Sales Orders
Task: sales.tasks.process_incoming_emails
Schedule: Every 5 minutes

2. Vendor Bill Processor

File: purchases/services/vendor_bill_processor.py
Email: billentry@company.com
Module: PURCHASE
Creates: Draft Vendor Bills (Invoice type='BILL')
Task: sales.tasks_email_extended.process_vendor_bill_emails
Schedule: Every 5 minutes

3. Expense Processor

File: accounts/services/expense_processor.py
Email: expclaim@company.com
Module: ACCOUNTS
Creates: Draft Expense Claims
Task: sales.tasks_email_extended.process_expense_emails
Schedule: Every 5 minutes


File Structure

backend/
├── sales/
│   ├── services/
│   │   └── salesorder_email_processor.py  ← Renamed for consistency
│   ├── tasks.py                            ← Updated import
│   └── tasks_email_extended.py             ← New tasks for bills/expenses
├── purchases/
│   └── services/
│       └── vendor_bill_processor.py        ← New
└── accounts/
    └── services/
        └── expense_processor.py            ← New

Celery Beat Schedule

CELERY_BEAT_SCHEDULE = {
    # Sales Orders
    'process-incoming-emails': {
        'task': 'sales.tasks.process_incoming_emails',
        'schedule': crontab(minute='*/5'),
    },

    # Vendor Bills
    'process-vendor-bill-emails': {
        'task': 'sales.tasks_email_extended.process_vendor_bill_emails',
        'schedule': crontab(minute='*/5'),
    },

    # Expenses
    'process-expense-emails': {
        'task': 'sales.tasks_email_extended.process_expense_emails',
        'schedule': crontab(minute='*/5'),
    },
}

Configuration

All three email addresses are configured via: Admin → Company Profile → Email Configurations

  • Sales Order Processingsales@company.com
  • Purchase Order Processingbillentry@company.com
  • Accountsexpclaim@company.com

Validation & Error Handling

All three processors: - ✅ Validate data completeness - ✅ Skip incomplete data with detailed error message - ✅ Log all attempts in EmailLog - ✅ Send notifications to managers - ✅ Move processed emails to "Processed" folder - ✅ Create drafts (require review/approval)


Total Email Automation Features

Inbound (3 features):

  1. Sales Orders from email attachments
  2. Vendor Bills from email attachments
  3. Expense Claims from email attachments

Outbound (5 features):

  1. Commission notes to salesmen
  2. Purchase orders to suppliers
  3. Stock alerts to managers
  4. Invoice due reminders
  5. Bill due reminders

Total: 8 automated email features