|
|
| import schedule
|
| import time
|
| import smtplib
|
| from email.mime.text import MimeText
|
| from email.mime.multipart import MimeMultipart
|
| from datetime import datetime, timedelta
|
| from analytics import Analytics
|
| import os
|
|
|
| class AutomationManager:
|
| def __init__(self, db_manager, whatsapp_manager):
|
| self.db = db_manager
|
| self.whatsapp = whatsapp_manager
|
|
|
| def daily_payment_reminders(self):
|
| """Send payment reminders for overdue payments"""
|
| overdue_payments = self.db.get_pending_payments()
|
|
|
| for _, payment in overdue_payments.iterrows():
|
| if payment['pending_amount'] > 0:
|
| customer = self.db.get_dataframe('customers',
|
| f"SELECT * FROM customers WHERE customer_id = {payment['customer_id']}")
|
|
|
| if not customer.empty:
|
| customer_data = customer.iloc[0]
|
| message = f"""Hello {customer_data['name']},
|
|
|
| This is a friendly reminder that your payment of ₹{payment['pending_amount']:,.2f} for invoice {payment['invoice_no']} is overdue.
|
|
|
| Please make the payment at your earliest convenience.
|
|
|
| Thank you,
|
| Sales Team"""
|
|
|
| self.whatsapp.send_message(customer_data['mobile'], message)
|
|
|
| def demo_followups(self):
|
| """Send follow-up messages for demos"""
|
| upcoming_followups = self.db.get_dataframe('demos', '''
|
| SELECT d.*, c.name as customer_name, c.mobile, p.product_name
|
| FROM demos d
|
| JOIN customers c ON d.customer_id = c.customer_id
|
| JOIN products p ON d.product_id = p.product_id
|
| WHERE d.follow_up_date = date('now')
|
| AND d.conversion_status = 'Not Converted'
|
| ''')
|
|
|
| for _, demo in upcoming_followups.iterrows():
|
| message = f"""Hello {demo['customer_name']},
|
|
|
| Following up on your demo of {demo['product_name']} on {demo['demo_date']}.
|
|
|
| How was your experience? Would you like to place an order or need another demo?
|
|
|
| Best regards,
|
| Sales Team"""
|
|
|
| self.whatsapp.send_message(demo['mobile'], message)
|
|
|
| def weekly_performance_report(self):
|
| """Generate and send weekly performance report"""
|
| analytics = Analytics(self.db)
|
|
|
| sales_summary = analytics.get_sales_summary()
|
| demo_stats = analytics.get_demo_conversion_rates()
|
| payment_analysis = analytics.get_payment_analysis()
|
|
|
| report = f"""
|
| 📊 WEEKLY PERFORMANCE REPORT
|
| ----------------------------
|
| Total Sales: ₹{sales_summary.get('total_sales', 0):,.2f}
|
| Pending Payments: ₹{sales_summary.get('pending_amount', 0):,.2f}
|
| Demo Conversion Rate: {demo_stats.get('conversion_rate', 0):.1f}%
|
| Total Customers: {analytics.get_customer_analysis().get('total_customers', 0)}
|
|
|
| Generated on: {datetime.now().strftime('%Y-%m-%d %H:%M')}
|
| """
|
|
|
|
|
| self._save_report(report)
|
| return report
|
|
|
| def _save_report(self, report):
|
| """Save report to file"""
|
| filename = f"reports/weekly_report_{datetime.now().strftime('%Y%m%d')}.txt"
|
| os.makedirs('reports', exist_ok=True)
|
|
|
| with open(filename, 'w') as f:
|
| f.write(report) |