nohup: failed to run command 'python': No such file or directory
nohup: ignoring input
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/base.py:366: RuntimeWarning: Model 'reporting.reporttemplate' was already registered. Reloading models is not advised as it can lead to inconsistencies, most notably with related models.
  new_class._meta.apps.register_model(new_class._meta.app_label, new_class)
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    main()
  File "manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
    utility.execute()
  File "/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/core/management/__init__.py", line 436, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/core/management/__init__.py", line 275, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/core/management/__init__.py", line 48, in load_command_class
    module = import_module("%s.management.commands.%s" % (app_name, name))
  File "/opt/alt/python38/lib64/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 843, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/binbytec/binbytesaas/apps/reporting/management/commands/run_scheduler.py", line 2, in <module>
    from apps.reporting.scheduler import start_report_scheduler
  File "/home/binbytec/binbytesaas/apps/reporting/scheduler.py", line 20, in <module>
    from apscheduler.schedulers.background import BackgroundScheduler
ModuleNotFoundError: No module named 'apscheduler'
nohup: failed to run command 'python': No such file or directory
nohup: ignoring input
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/base.py:366: RuntimeWarning: Model 'reporting.reporttemplate' was already registered. Reloading models is not advised as it can lead to inconsistencies, most notably with related models.
  new_class._meta.apps.register_model(new_class._meta.app_label, new_class)
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/rest_framework/fields.py:992: UserWarning: min_value should be a Decimal instance.
  warnings.warn("min_value should be a Decimal instance.")
INFO 2026-02-06 15:14:13,798 base 604936 140459465840448 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-02-06 15:14:13,798 scheduler 604936 140459465840448 Scheduled: Weekly reports - Mondays at 8:00 AM
INFO 2026-02-06 15:14:13,798 base 604936 140459465840448 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-02-06 15:14:13,798 scheduler 604936 140459465840448 Scheduled: Monthly reports - 1st of month at 6:00 AM
INFO 2026-02-06 15:14:13,798 base 604936 140459465840448 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-02-06 15:14:13,798 scheduler 604936 140459465840448 Scheduled: Low stock check - Mondays at 9:00 AM
INFO 2026-02-06 15:14:13,798 base 604936 140459465840448 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-02-06 15:14:13,798 scheduler 604936 140459465840448 Scheduled: Warranty expiry check - Daily at 10:00 AM
INFO 2026-02-06 15:14:13,798 base 604936 140459465840448 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-02-06 15:14:13,799 scheduler 604936 140459465840448 Scheduled: Cleanup old reports - Daily at 2:00 AM
INFO 2026-02-06 15:14:13,799 base 604936 140459465840448 Added job "Send Weekly Reports" to job store "default"
INFO 2026-02-06 15:14:13,799 base 604936 140459465840448 Added job "Send Monthly Reports" to job store "default"
INFO 2026-02-06 15:14:13,799 base 604936 140459465840448 Added job "Check Low Stock" to job store "default"
INFO 2026-02-06 15:14:13,799 base 604936 140459465840448 Added job "Check Warranty Expiry" to job store "default"
INFO 2026-02-06 15:14:13,799 base 604936 140459465840448 Added job "Cleanup Old Reports" to job store "default"
INFO 2026-02-06 15:14:13,799 base 604936 140459465840448 Scheduler started
INFO 2026-02-06 15:14:13,800 scheduler 604936 140459465840448 Report Scheduler started successfully!
INFO 2026-02-06 15:14:13,800 scheduler 604936 140459465840448 
Next scheduled runs:
INFO 2026-02-06 15:14:13,800 scheduler 604936 140459465840448   - Cleanup Old Reports: 2026-02-07 02:00:00 UTC
INFO 2026-02-06 15:14:13,800 scheduler 604936 140459465840448   - Check Warranty Expiry: 2026-02-07 10:00:00 UTC
INFO 2026-02-06 15:14:13,800 scheduler 604936 140459465840448   - Send Weekly Reports: 2026-02-09 08:00:00 UTC
INFO 2026-02-06 15:14:13,800 scheduler 604936 140459465840448   - Check Low Stock: 2026-02-09 09:00:00 UTC
INFO 2026-02-06 15:14:13,800 scheduler 604936 140459465840448   - Send Monthly Reports: 2026-03-01 06:00:00 UTC
INFO 2026-02-07 02:00:00,003 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-07 02:00:00 UTC)" (scheduled at 2026-02-07 02:00:00+00:00)
INFO 2026-02-07 02:00:00,005 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-02-07 02:00:00,008 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-02-07 02:00:00,008 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-08 02:00:00 UTC)" executed successfully
INFO 2026-02-07 02:00:00,016 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-02-07 02:00:00,017 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-02-07 02:00:00,023 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-02-07 02:00:00,023 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-02-07 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-08 10:00:00 UTC)" (scheduled at 2026-02-07 10:00:00+00:00)
INFO 2026-02-07 10:00:00,001 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-02-07 10:00:00,003 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-02-07 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-08 10:00:00 UTC)" executed successfully
INFO 2026-02-07 10:00:00,007 tasks_sync 604936 140458812139264 Checking warranty expiry for 1 businesses
INFO 2026-02-07 10:00:00,032 tasks_sync 604936 140458812139264 Successfully generated report 4 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-07 10:00:00,032 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 1}
INFO 2026-02-08 02:00:00,002 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-09 02:00:00 UTC)" (scheduled at 2026-02-08 02:00:00+00:00)
INFO 2026-02-08 02:00:00,027 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-02-08 02:00:00,030 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-02-08 02:00:00,030 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-09 02:00:00 UTC)" executed successfully
INFO 2026-02-08 02:00:00,038 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-02-08 02:00:00,039 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-02-08 02:00:00,044 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-02-08 02:00:00,044 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-02-08 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-09 10:00:00 UTC)" (scheduled at 2026-02-08 10:00:00+00:00)
INFO 2026-02-08 10:00:00,001 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-02-08 10:00:00,003 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-02-08 10:00:00,003 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-09 10:00:00 UTC)" executed successfully
INFO 2026-02-08 10:00:00,009 tasks_sync 604936 140458812139264 Checking warranty expiry for 1 businesses
INFO 2026-02-08 10:00:00,065 tasks_sync 604936 140458812139264 Successfully generated report 5 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-08 10:00:00,066 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 1}
INFO 2026-02-09 02:00:00,000 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-10 02:00:00 UTC)" (scheduled at 2026-02-09 02:00:00+00:00)
INFO 2026-02-09 02:00:00,001 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-02-09 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-02-09 02:00:00,003 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-10 02:00:00 UTC)" executed successfully
INFO 2026-02-09 02:00:00,009 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-02-09 02:00:00,009 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-02-09 02:00:00,014 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-02-09 02:00:00,014 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-02-09 08:00:00,000 base 604936 140458820531968 Running job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-02-16 08:00:00 UTC)" (scheduled at 2026-02-09 08:00:00+00:00)
INFO 2026-02-09 08:00:00,001 scheduler 604936 140458820531968 Starting weekly reports job
INFO 2026-02-09 08:00:00,001 tasks_sync 604936 140458812139264 Starting weekly report sending task
INFO 2026-02-09 08:00:00,003 scheduler 604936 140458820531968 Weekly reports job started in background
INFO 2026-02-09 08:00:00,003 base 604936 140458820531968 Job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-02-16 08:00:00 UTC)" executed successfully
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1535: RuntimeWarning: DateTimeField Sale.sale_date received a naive datetime (2026-02-02 00:00:00) while time zone support is active.
  warnings.warn(
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1535: RuntimeWarning: DateTimeField Sale.sale_date received a naive datetime (2026-02-09 00:00:00) while time zone support is active.
  warnings.warn(
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1535: RuntimeWarning: DateTimeField Sale.sale_date received a naive datetime (2026-01-26 00:00:00) while time zone support is active.
  warnings.warn(
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1535: RuntimeWarning: DateTimeField Transaction.transaction_date received a naive datetime (2026-02-02 00:00:00) while time zone support is active.
  warnings.warn(
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1535: RuntimeWarning: DateTimeField Transaction.transaction_date received a naive datetime (2026-02-09 00:00:00) while time zone support is active.
  warnings.warn(
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1535: RuntimeWarning: DateTimeField Transaction.transaction_date received a naive datetime (2026-01-26 00:00:00) while time zone support is active.
  warnings.warn(
ERROR 2026-02-09 08:00:00,078 email_report_service 604936 140458812139264 Error sending weekly report for business 26ef493a-63bd-450c-907a-0b8f020c0f03: 'humanize' is not a registered tag library. Must be one of:
admin_list
admin_modify
admin_urls
cache
debugger_tags
highlighting
i18n
indent_text
l10n
log
rest_framework
static
syntax_color
tz
widont
ERROR 2026-02-09 08:00:00,078 tasks_sync 604936 140458812139264 Error sending weekly report for business 26ef493a-63bd-450c-907a-0b8f020c0f03: Email sending failed
Traceback (most recent call last):
  File "/home/binbytec/binbytesaas/apps/reporting/tasks_sync.py", line 138, in send_business_weekly_report
    else:
Exception: Email sending failed
INFO 2026-02-09 08:00:00,085 tasks_sync 604936 140458812139264 Weekly report task completed. Sent: 0, Failed: 1
INFO 2026-02-09 08:00:00,085 scheduler 604936 140458812139264 Weekly reports completed: {'sent': 0, 'failed': 1}
INFO 2026-02-09 09:00:00,000 base 604936 140458820531968 Running job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-02-16 09:00:00 UTC)" (scheduled at 2026-02-09 09:00:00+00:00)
INFO 2026-02-09 09:00:00,001 scheduler 604936 140458820531968 Starting low stock check job
INFO 2026-02-09 09:00:00,002 scheduler 604936 140458820531968 Low stock check job started in background
INFO 2026-02-09 09:00:00,002 base 604936 140458820531968 Job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-02-16 09:00:00 UTC)" executed successfully
INFO 2026-02-09 09:00:00,006 tasks_sync 604936 140458812139264 Checking low stock for 1 businesses
INFO 2026-02-09 09:00:01,475 tasks_sync 604936 140458812139264 Successfully generated report 6 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-09 09:00:01,484 scheduler 604936 140458812139264 Low stock check completed: {'status': 'success', 'businesses_processed': 1}
INFO 2026-02-09 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-10 10:00:00 UTC)" (scheduled at 2026-02-09 10:00:00+00:00)
INFO 2026-02-09 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-02-09 10:00:00,004 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-02-09 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-10 10:00:00 UTC)" executed successfully
INFO 2026-02-09 10:00:00,008 tasks_sync 604936 140458812139264 Checking warranty expiry for 1 businesses
INFO 2026-02-09 10:00:00,029 tasks_sync 604936 140458812139264 Successfully generated report 7 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-09 10:00:00,029 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 1}
INFO 2026-02-10 02:00:00,000 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-11 02:00:00 UTC)" (scheduled at 2026-02-10 02:00:00+00:00)
INFO 2026-02-10 02:00:00,001 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-02-10 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-02-10 02:00:00,003 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-11 02:00:00 UTC)" executed successfully
INFO 2026-02-10 02:00:00,009 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-02-10 02:00:00,009 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-02-10 02:00:00,013 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-02-10 02:00:00,013 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-02-10 10:00:00,002 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-11 10:00:00 UTC)" (scheduled at 2026-02-10 10:00:00+00:00)
INFO 2026-02-10 10:00:00,003 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-02-10 10:00:00,005 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-02-10 10:00:00,005 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-11 10:00:00 UTC)" executed successfully
INFO 2026-02-10 10:00:00,009 tasks_sync 604936 140458812139264 Checking warranty expiry for 1 businesses
INFO 2026-02-10 10:00:00,035 tasks_sync 604936 140458812139264 Successfully generated report 8 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-10 10:00:00,035 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 1}
INFO 2026-02-11 02:00:00,000 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-12 02:00:00 UTC)" (scheduled at 2026-02-11 02:00:00+00:00)
INFO 2026-02-11 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-02-11 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-02-11 02:00:00,003 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-12 02:00:00 UTC)" executed successfully
INFO 2026-02-11 02:00:00,011 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-02-11 02:00:00,011 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-02-11 02:00:00,019 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-02-11 02:00:00,019 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-02-11 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-12 10:00:00 UTC)" (scheduled at 2026-02-11 10:00:00+00:00)
INFO 2026-02-11 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-02-11 10:00:00,003 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-02-11 10:00:00,003 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-12 10:00:00 UTC)" executed successfully
INFO 2026-02-11 10:00:00,007 tasks_sync 604936 140458812139264 Checking warranty expiry for 1 businesses
INFO 2026-02-11 10:00:00,029 tasks_sync 604936 140458812139264 Successfully generated report 9 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-11 10:00:00,030 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 1}
INFO 2026-02-12 02:00:00,000 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-13 02:00:00 UTC)" (scheduled at 2026-02-12 02:00:00+00:00)
INFO 2026-02-12 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-02-12 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-02-12 02:00:00,003 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-13 02:00:00 UTC)" executed successfully
INFO 2026-02-12 02:00:00,008 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-02-12 02:00:00,008 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-02-12 02:00:00,014 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-02-12 02:00:00,014 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-02-12 10:00:00,000 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-13 10:00:00 UTC)" (scheduled at 2026-02-12 10:00:00+00:00)
INFO 2026-02-12 10:00:00,004 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-02-12 10:00:00,005 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-02-12 10:00:00,005 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-13 10:00:00 UTC)" executed successfully
INFO 2026-02-12 10:00:00,009 tasks_sync 604936 140458812139264 Checking warranty expiry for 1 businesses
INFO 2026-02-12 10:00:00,035 tasks_sync 604936 140458812139264 Successfully generated report 10 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-12 10:00:00,035 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 1}
INFO 2026-02-13 02:00:00,000 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-14 02:00:00 UTC)" (scheduled at 2026-02-13 02:00:00+00:00)
INFO 2026-02-13 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-02-13 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-02-13 02:00:00,003 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-14 02:00:00 UTC)" executed successfully
INFO 2026-02-13 02:00:00,010 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-02-13 02:00:00,010 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-02-13 02:00:00,015 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-02-13 02:00:00,016 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-02-13 10:00:00,000 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-14 10:00:00 UTC)" (scheduled at 2026-02-13 10:00:00+00:00)
INFO 2026-02-13 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-02-13 10:00:00,003 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-02-13 10:00:00,003 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-14 10:00:00 UTC)" executed successfully
INFO 2026-02-13 10:00:00,007 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-02-13 10:00:00,025 tasks_sync 604936 140458812139264 Successfully generated report 11 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-02-13 10:00:00,037 tasks_sync 604936 140458812139264 Successfully generated report 12 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-13 10:00:00,037 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-02-14 02:00:00,000 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-15 02:00:00 UTC)" (scheduled at 2026-02-14 02:00:00+00:00)
INFO 2026-02-14 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-02-14 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-02-14 02:00:00,003 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-15 02:00:00 UTC)" executed successfully
INFO 2026-02-14 02:00:00,009 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-02-14 02:00:00,009 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-02-14 02:00:00,015 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-02-14 02:00:00,015 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-02-14 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-15 10:00:00 UTC)" (scheduled at 2026-02-14 10:00:00+00:00)
INFO 2026-02-14 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-02-14 10:00:00,004 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-02-14 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-15 10:00:00 UTC)" executed successfully
INFO 2026-02-14 10:00:00,008 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-02-14 10:00:00,033 tasks_sync 604936 140458812139264 Successfully generated report 13 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-02-14 10:00:00,058 tasks_sync 604936 140458812139264 Successfully generated report 14 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-14 10:00:00,058 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-02-15 02:00:00,000 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-16 02:00:00 UTC)" (scheduled at 2026-02-15 02:00:00+00:00)
INFO 2026-02-15 02:00:00,003 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-02-15 02:00:00,004 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-02-15 02:00:00,004 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-16 02:00:00 UTC)" executed successfully
INFO 2026-02-15 02:00:00,021 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-02-15 02:00:00,021 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-02-15 02:00:00,028 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-02-15 02:00:00,028 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-02-15 10:00:00,000 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-16 10:00:00 UTC)" (scheduled at 2026-02-15 10:00:00+00:00)
INFO 2026-02-15 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-02-15 10:00:00,003 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-02-15 10:00:00,003 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-16 10:00:00 UTC)" executed successfully
INFO 2026-02-15 10:00:00,009 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-02-15 10:00:00,040 tasks_sync 604936 140458812139264 Successfully generated report 15 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-02-15 10:00:00,072 tasks_sync 604936 140458812139264 Successfully generated report 16 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-15 10:00:00,072 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-02-16 02:00:00,000 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-17 02:00:00 UTC)" (scheduled at 2026-02-16 02:00:00+00:00)
INFO 2026-02-16 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-02-16 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-02-16 02:00:00,003 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-17 02:00:00 UTC)" executed successfully
INFO 2026-02-16 02:00:00,009 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-02-16 02:00:00,009 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-02-16 02:00:00,014 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-02-16 02:00:00,014 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-02-16 08:00:00,001 base 604936 140458820531968 Running job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-02-23 08:00:00 UTC)" (scheduled at 2026-02-16 08:00:00+00:00)
INFO 2026-02-16 08:00:00,002 scheduler 604936 140458820531968 Starting weekly reports job
INFO 2026-02-16 08:00:00,002 tasks_sync 604936 140458812139264 Starting weekly report sending task
INFO 2026-02-16 08:00:00,002 scheduler 604936 140458820531968 Weekly reports job started in background
INFO 2026-02-16 08:00:00,004 base 604936 140458820531968 Job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-02-23 08:00:00 UTC)" executed successfully
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1535: RuntimeWarning: DateTimeField Sale.sale_date received a naive datetime (2026-02-16 00:00:00) while time zone support is active.
  warnings.warn(
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1535: RuntimeWarning: DateTimeField Transaction.transaction_date received a naive datetime (2026-02-16 00:00:00) while time zone support is active.
  warnings.warn(
ERROR 2026-02-16 08:00:00,136 email_report_service 604936 140458812139264 Error sending weekly report for business 26ef493a-63bd-450c-907a-0b8f020c0f03: 'humanize' is not a registered tag library. Must be one of:
admin_list
admin_modify
admin_urls
cache
debugger_tags
highlighting
i18n
indent_text
l10n
log
rest_framework
static
syntax_color
tz
widont
ERROR 2026-02-16 08:00:00,137 tasks_sync 604936 140458812139264 Error sending weekly report for business 26ef493a-63bd-450c-907a-0b8f020c0f03: Email sending failed
Traceback (most recent call last):
  File "/home/binbytec/binbytesaas/apps/reporting/tasks_sync.py", line 138, in send_business_weekly_report
    else:
Exception: Email sending failed
INFO 2026-02-16 08:00:00,142 tasks_sync 604936 140458812139264 Weekly report task completed. Sent: 0, Failed: 1
INFO 2026-02-16 08:00:00,143 scheduler 604936 140458812139264 Weekly reports completed: {'sent': 0, 'failed': 1}
INFO 2026-02-16 09:00:00,000 base 604936 140458820531968 Running job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-02-23 09:00:00 UTC)" (scheduled at 2026-02-16 09:00:00+00:00)
INFO 2026-02-16 09:00:00,002 scheduler 604936 140458820531968 Starting low stock check job
INFO 2026-02-16 09:00:00,003 scheduler 604936 140458820531968 Low stock check job started in background
INFO 2026-02-16 09:00:00,003 base 604936 140458820531968 Job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-02-23 09:00:00 UTC)" executed successfully
INFO 2026-02-16 09:00:00,006 tasks_sync 604936 140458812139264 Checking low stock for 2 businesses
INFO 2026-02-16 09:00:00,015 tasks_sync 604936 140458812139264 Successfully generated report 17 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-02-16 09:00:01,084 tasks_sync 604936 140458812139264 Successfully generated report 18 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-16 09:00:01,092 scheduler 604936 140458812139264 Low stock check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-02-16 10:00:00,000 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-17 10:00:00 UTC)" (scheduled at 2026-02-16 10:00:00+00:00)
INFO 2026-02-16 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-02-16 10:00:00,003 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-02-16 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-17 10:00:00 UTC)" executed successfully
INFO 2026-02-16 10:00:00,008 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-02-16 10:00:00,033 tasks_sync 604936 140458812139264 Successfully generated report 19 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-02-16 10:00:00,056 tasks_sync 604936 140458812139264 Successfully generated report 20 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-16 10:00:00,056 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-02-17 02:00:00,000 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-18 02:00:00 UTC)" (scheduled at 2026-02-17 02:00:00+00:00)
INFO 2026-02-17 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-02-17 02:00:00,004 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-02-17 02:00:00,004 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-18 02:00:00 UTC)" executed successfully
INFO 2026-02-17 02:00:00,012 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-02-17 02:00:00,013 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-02-17 02:00:00,020 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-02-17 02:00:00,020 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-02-17 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-18 10:00:00 UTC)" (scheduled at 2026-02-17 10:00:00+00:00)
INFO 2026-02-17 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-02-17 10:00:00,004 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-02-17 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-18 10:00:00 UTC)" executed successfully
INFO 2026-02-17 10:00:00,058 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-02-17 10:00:00,147 tasks_sync 604936 140458812139264 Successfully generated report 21 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-02-17 10:00:00,195 tasks_sync 604936 140458812139264 Successfully generated report 22 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-17 10:00:00,195 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-02-18 02:00:00,000 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-19 02:00:00 UTC)" (scheduled at 2026-02-18 02:00:00+00:00)
INFO 2026-02-18 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-02-18 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-02-18 02:00:00,003 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-19 02:00:00 UTC)" executed successfully
INFO 2026-02-18 02:00:00,010 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-02-18 02:00:00,010 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-02-18 02:00:00,016 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-02-18 02:00:00,016 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-02-18 10:00:00,000 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-19 10:00:00 UTC)" (scheduled at 2026-02-18 10:00:00+00:00)
INFO 2026-02-18 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-02-18 10:00:00,004 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-02-18 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-19 10:00:00 UTC)" executed successfully
INFO 2026-02-18 10:00:00,007 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-02-18 10:00:00,027 tasks_sync 604936 140458812139264 Successfully generated report 23 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-02-18 10:00:00,045 tasks_sync 604936 140458812139264 Successfully generated report 24 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-18 10:00:00,045 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-02-19 02:00:00,000 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-20 02:00:00 UTC)" (scheduled at 2026-02-19 02:00:00+00:00)
INFO 2026-02-19 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-02-19 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-02-19 02:00:00,003 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-20 02:00:00 UTC)" executed successfully
INFO 2026-02-19 02:00:00,011 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-02-19 02:00:00,011 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-02-19 02:00:00,016 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-02-19 02:00:00,017 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-02-19 10:00:00,000 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-20 10:00:00 UTC)" (scheduled at 2026-02-19 10:00:00+00:00)
INFO 2026-02-19 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-02-19 10:00:00,003 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-02-19 10:00:00,003 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-20 10:00:00 UTC)" executed successfully
INFO 2026-02-19 10:00:00,006 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-02-19 10:00:00,028 tasks_sync 604936 140458812139264 Successfully generated report 25 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-02-19 10:00:00,062 tasks_sync 604936 140458812139264 Successfully generated report 26 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-19 10:00:00,062 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-02-20 02:00:00,001 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-21 02:00:00 UTC)" (scheduled at 2026-02-20 02:00:00+00:00)
INFO 2026-02-20 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-02-20 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-02-20 02:00:00,004 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-21 02:00:00 UTC)" executed successfully
INFO 2026-02-20 02:00:00,011 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-02-20 02:00:00,011 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-02-20 02:00:00,018 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-02-20 02:00:00,018 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-02-20 10:00:00,000 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-21 10:00:00 UTC)" (scheduled at 2026-02-20 10:00:00+00:00)
INFO 2026-02-20 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-02-20 10:00:00,003 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-02-20 10:00:00,003 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-21 10:00:00 UTC)" executed successfully
INFO 2026-02-20 10:00:00,007 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-02-20 10:00:00,024 tasks_sync 604936 140458812139264 Successfully generated report 27 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-02-20 10:00:00,038 tasks_sync 604936 140458812139264 Successfully generated report 28 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-20 10:00:00,038 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-02-21 02:00:00,002 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-22 02:00:00 UTC)" (scheduled at 2026-02-21 02:00:00+00:00)
INFO 2026-02-21 02:00:00,004 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-02-21 02:00:00,006 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-02-21 02:00:00,006 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-22 02:00:00 UTC)" executed successfully
INFO 2026-02-21 02:00:00,014 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-02-21 02:00:00,014 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-02-21 02:00:00,021 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-02-21 02:00:00,021 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-02-21 10:00:00,000 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-22 10:00:00 UTC)" (scheduled at 2026-02-21 10:00:00+00:00)
INFO 2026-02-21 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-02-21 10:00:00,004 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-02-21 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-22 10:00:00 UTC)" executed successfully
INFO 2026-02-21 10:00:00,008 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-02-21 10:00:00,029 tasks_sync 604936 140458812139264 Successfully generated report 29 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-02-21 10:00:00,043 tasks_sync 604936 140458812139264 Successfully generated report 30 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-21 10:00:00,043 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-02-22 02:00:00,002 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-23 02:00:00 UTC)" (scheduled at 2026-02-22 02:00:00+00:00)
INFO 2026-02-22 02:00:00,003 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-02-22 02:00:00,005 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-02-22 02:00:00,005 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-23 02:00:00 UTC)" executed successfully
INFO 2026-02-22 02:00:00,013 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-02-22 02:00:00,013 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-02-22 02:00:00,019 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-02-22 02:00:00,019 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-02-22 10:00:00,000 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-23 10:00:00 UTC)" (scheduled at 2026-02-22 10:00:00+00:00)
INFO 2026-02-22 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-02-22 10:00:00,003 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-02-22 10:00:00,003 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-23 10:00:00 UTC)" executed successfully
INFO 2026-02-22 10:00:00,008 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-02-22 10:00:00,037 tasks_sync 604936 140458812139264 Successfully generated report 31 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-02-22 10:00:00,069 tasks_sync 604936 140458812139264 Successfully generated report 32 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-22 10:00:00,069 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-02-23 02:00:00,003 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-24 02:00:00 UTC)" (scheduled at 2026-02-23 02:00:00+00:00)
INFO 2026-02-23 02:00:00,004 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-02-23 02:00:00,005 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-02-23 02:00:00,006 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-24 02:00:00 UTC)" executed successfully
INFO 2026-02-23 02:00:00,012 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-02-23 02:00:00,013 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-02-23 02:00:00,017 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-02-23 02:00:00,017 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-02-23 08:00:00,001 base 604936 140458820531968 Running job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-03-02 08:00:00 UTC)" (scheduled at 2026-02-23 08:00:00+00:00)
INFO 2026-02-23 08:00:00,002 scheduler 604936 140458820531968 Starting weekly reports job
INFO 2026-02-23 08:00:00,002 tasks_sync 604936 140458812139264 Starting weekly report sending task
INFO 2026-02-23 08:00:00,003 scheduler 604936 140458820531968 Weekly reports job started in background
INFO 2026-02-23 08:00:00,004 base 604936 140458820531968 Job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-03-02 08:00:00 UTC)" executed successfully
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1535: RuntimeWarning: DateTimeField Sale.sale_date received a naive datetime (2026-02-23 00:00:00) while time zone support is active.
  warnings.warn(
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1535: RuntimeWarning: DateTimeField Transaction.transaction_date received a naive datetime (2026-02-23 00:00:00) while time zone support is active.
  warnings.warn(
ERROR 2026-02-23 08:00:00,156 email_report_service 604936 140458812139264 Error sending weekly report for business 26ef493a-63bd-450c-907a-0b8f020c0f03: 'humanize' is not a registered tag library. Must be one of:
admin_list
admin_modify
admin_urls
cache
debugger_tags
highlighting
i18n
indent_text
l10n
log
rest_framework
static
syntax_color
tz
widont
ERROR 2026-02-23 08:00:00,156 tasks_sync 604936 140458812139264 Error sending weekly report for business 26ef493a-63bd-450c-907a-0b8f020c0f03: Email sending failed
Traceback (most recent call last):
  File "/home/binbytec/binbytesaas/apps/reporting/tasks_sync.py", line 138, in send_business_weekly_report
    else:
Exception: Email sending failed
INFO 2026-02-23 08:00:00,166 tasks_sync 604936 140458812139264 Weekly report task completed. Sent: 0, Failed: 1
INFO 2026-02-23 08:00:00,166 scheduler 604936 140458812139264 Weekly reports completed: {'sent': 0, 'failed': 1}
INFO 2026-02-23 09:00:00,001 base 604936 140458820531968 Running job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-03-02 09:00:00 UTC)" (scheduled at 2026-02-23 09:00:00+00:00)
INFO 2026-02-23 09:00:00,002 scheduler 604936 140458820531968 Starting low stock check job
INFO 2026-02-23 09:00:00,003 scheduler 604936 140458820531968 Low stock check job started in background
INFO 2026-02-23 09:00:00,004 base 604936 140458820531968 Job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-03-02 09:00:00 UTC)" executed successfully
INFO 2026-02-23 09:00:00,008 tasks_sync 604936 140458812139264 Checking low stock for 2 businesses
INFO 2026-02-23 09:00:00,023 tasks_sync 604936 140458812139264 Successfully generated report 33 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-02-23 09:00:01,245 tasks_sync 604936 140458812139264 Successfully generated report 34 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-23 09:00:01,262 scheduler 604936 140458812139264 Low stock check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-02-23 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-24 10:00:00 UTC)" (scheduled at 2026-02-23 10:00:00+00:00)
INFO 2026-02-23 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-02-23 10:00:00,004 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-02-23 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-24 10:00:00 UTC)" executed successfully
INFO 2026-02-23 10:00:00,008 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-02-23 10:00:00,029 tasks_sync 604936 140458812139264 Successfully generated report 35 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-02-23 10:00:00,041 tasks_sync 604936 140458812139264 Successfully generated report 36 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-23 10:00:00,041 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-02-24 02:00:00,000 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-25 02:00:00 UTC)" (scheduled at 2026-02-24 02:00:00+00:00)
INFO 2026-02-24 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-02-24 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-02-24 02:00:00,003 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-25 02:00:00 UTC)" executed successfully
INFO 2026-02-24 02:00:00,010 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-02-24 02:00:00,010 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-02-24 02:00:00,016 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-02-24 02:00:00,016 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-02-24 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-25 10:00:00 UTC)" (scheduled at 2026-02-24 10:00:00+00:00)
INFO 2026-02-24 10:00:00,003 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-02-24 10:00:00,004 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-02-24 10:00:00,005 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-25 10:00:00 UTC)" executed successfully
INFO 2026-02-24 10:00:00,008 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-02-24 10:00:00,038 tasks_sync 604936 140458812139264 Successfully generated report 37 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-02-24 10:00:00,063 tasks_sync 604936 140458812139264 Successfully generated report 38 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-24 10:00:00,064 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-02-25 02:00:00,000 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-26 02:00:00 UTC)" (scheduled at 2026-02-25 02:00:00+00:00)
INFO 2026-02-25 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-02-25 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-02-25 02:00:00,003 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-26 02:00:00 UTC)" executed successfully
INFO 2026-02-25 02:00:00,008 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-02-25 02:00:00,009 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-02-25 02:00:00,014 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-02-25 02:00:00,014 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-02-25 10:00:00,000 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-26 10:00:00 UTC)" (scheduled at 2026-02-25 10:00:00+00:00)
INFO 2026-02-25 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-02-25 10:00:00,003 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-02-25 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-26 10:00:00 UTC)" executed successfully
INFO 2026-02-25 10:00:00,008 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-02-25 10:00:00,031 tasks_sync 604936 140458812139264 Successfully generated report 39 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-02-25 10:00:00,051 tasks_sync 604936 140458812139264 Successfully generated report 40 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-25 10:00:00,051 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-02-26 02:00:00,000 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-27 02:00:00 UTC)" (scheduled at 2026-02-26 02:00:00+00:00)
INFO 2026-02-26 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-02-26 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-02-26 02:00:00,004 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-27 02:00:00 UTC)" executed successfully
INFO 2026-02-26 02:00:00,012 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-02-26 02:00:00,012 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-02-26 02:00:00,018 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-02-26 02:00:00,019 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-02-26 10:00:00,000 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-27 10:00:00 UTC)" (scheduled at 2026-02-26 10:00:00+00:00)
INFO 2026-02-26 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-02-26 10:00:00,003 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-02-26 10:00:00,003 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-27 10:00:00 UTC)" executed successfully
INFO 2026-02-26 10:00:00,007 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-02-26 10:00:00,025 tasks_sync 604936 140458812139264 Successfully generated report 41 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-02-26 10:00:00,037 tasks_sync 604936 140458812139264 Successfully generated report 42 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-26 10:00:00,037 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-02-27 02:00:00,003 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-28 02:00:00 UTC)" (scheduled at 2026-02-27 02:00:00+00:00)
INFO 2026-02-27 02:00:00,004 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-02-27 02:00:00,006 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-02-27 02:00:00,006 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-02-28 02:00:00 UTC)" executed successfully
INFO 2026-02-27 02:00:00,012 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-02-27 02:00:00,013 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-02-27 02:00:00,017 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-02-27 02:00:00,018 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-02-27 10:00:00,000 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-28 10:00:00 UTC)" (scheduled at 2026-02-27 10:00:00+00:00)
INFO 2026-02-27 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-02-27 10:00:00,003 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-02-27 10:00:00,003 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-02-28 10:00:00 UTC)" executed successfully
INFO 2026-02-27 10:00:00,007 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-02-27 10:00:00,030 tasks_sync 604936 140458812139264 Successfully generated report 43 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-02-27 10:00:00,044 tasks_sync 604936 140458812139264 Successfully generated report 44 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-27 10:00:00,044 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-02-28 02:00:00,003 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-01 02:00:00 UTC)" (scheduled at 2026-02-28 02:00:00+00:00)
INFO 2026-02-28 02:00:00,004 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-02-28 02:00:00,006 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-02-28 02:00:00,007 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-01 02:00:00 UTC)" executed successfully
INFO 2026-02-28 02:00:00,015 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-02-28 02:00:00,015 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-02-28 02:00:00,020 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-02-28 02:00:00,020 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-02-28 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-01 10:00:00 UTC)" (scheduled at 2026-02-28 10:00:00+00:00)
INFO 2026-02-28 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-02-28 10:00:00,004 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-02-28 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-01 10:00:00 UTC)" executed successfully
INFO 2026-02-28 10:00:00,009 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-02-28 10:00:00,029 tasks_sync 604936 140458812139264 Successfully generated report 45 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-02-28 10:00:00,049 tasks_sync 604936 140458812139264 Successfully generated report 46 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-02-28 10:00:00,049 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-01 02:00:00,002 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-02 02:00:00 UTC)" (scheduled at 2026-03-01 02:00:00+00:00)
INFO 2026-03-01 02:00:00,003 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-01 02:00:00,005 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-01 02:00:00,005 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-02 02:00:00 UTC)" executed successfully
INFO 2026-03-01 02:00:00,014 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-01 02:00:00,014 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-01 02:00:00,023 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-01 02:00:00,023 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-01 06:00:00,003 base 604936 140458820531968 Running job "Send Monthly Reports (trigger: cron[day='1', hour='6', minute='0'], next run at: 2026-04-01 06:00:00 UTC)" (scheduled at 2026-03-01 06:00:00+00:00)
INFO 2026-03-01 06:00:00,004 scheduler 604936 140458820531968 Starting monthly reports job
INFO 2026-03-01 06:00:00,006 scheduler 604936 140458820531968 Monthly reports job started in background
INFO 2026-03-01 06:00:00,007 base 604936 140458820531968 Job "Send Monthly Reports (trigger: cron[day='1', hour='6', minute='0'], next run at: 2026-04-01 06:00:00 UTC)" executed successfully
INFO 2026-03-01 06:00:00,013 tasks_sync 604936 140458812139264 Generating monthly reports for 2 businesses
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1535: RuntimeWarning: DateTimeField Sale.sale_date received a naive datetime (2026-02-01 00:00:00) while time zone support is active.
  warnings.warn(
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1535: RuntimeWarning: DateTimeField Sale.sale_date received a naive datetime (2026-02-28 00:00:00) while time zone support is active.
  warnings.warn(
INFO 2026-03-01 06:00:00,047 tasks_sync 604936 140458812139264 Successfully generated report 47 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-01 06:00:00,239 tasks_sync 604936 140458812139264 Successfully generated report 48 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-01 06:00:00,239 scheduler 604936 140458812139264 Monthly reports completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-01 10:00:00,003 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-02 10:00:00 UTC)" (scheduled at 2026-03-01 10:00:00+00:00)
INFO 2026-03-01 10:00:00,004 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-01 10:00:00,006 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-01 10:00:00,006 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-02 10:00:00 UTC)" executed successfully
INFO 2026-03-01 10:00:00,015 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-01 10:00:00,044 tasks_sync 604936 140458812139264 Successfully generated report 49 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-01 10:00:00,081 tasks_sync 604936 140458812139264 Successfully generated report 50 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-01 10:00:00,081 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-02 02:00:00,000 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-03 02:00:00 UTC)" (scheduled at 2026-03-02 02:00:00+00:00)
INFO 2026-03-02 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-02 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-02 02:00:00,003 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-03 02:00:00 UTC)" executed successfully
INFO 2026-03-02 02:00:00,009 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-02 02:00:00,010 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-02 02:00:00,015 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-02 02:00:00,015 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-02 08:00:00,001 base 604936 140458820531968 Running job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-03-09 08:00:00 UTC)" (scheduled at 2026-03-02 08:00:00+00:00)
INFO 2026-03-02 08:00:00,002 scheduler 604936 140458820531968 Starting weekly reports job
INFO 2026-03-02 08:00:00,002 tasks_sync 604936 140458812139264 Starting weekly report sending task
INFO 2026-03-02 08:00:00,003 scheduler 604936 140458820531968 Weekly reports job started in background
INFO 2026-03-02 08:00:00,004 base 604936 140458820531968 Job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-03-09 08:00:00 UTC)" executed successfully
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1535: RuntimeWarning: DateTimeField Sale.sale_date received a naive datetime (2026-03-02 00:00:00) while time zone support is active.
  warnings.warn(
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1535: RuntimeWarning: DateTimeField Transaction.transaction_date received a naive datetime (2026-03-02 00:00:00) while time zone support is active.
  warnings.warn(
ERROR 2026-03-02 08:00:00,174 email_report_service 604936 140458812139264 Error sending weekly report for business 26ef493a-63bd-450c-907a-0b8f020c0f03: 'humanize' is not a registered tag library. Must be one of:
admin_list
admin_modify
admin_urls
cache
debugger_tags
highlighting
i18n
indent_text
l10n
log
rest_framework
static
syntax_color
tz
widont
ERROR 2026-03-02 08:00:00,174 tasks_sync 604936 140458812139264 Error sending weekly report for business 26ef493a-63bd-450c-907a-0b8f020c0f03: Email sending failed
Traceback (most recent call last):
  File "/home/binbytec/binbytesaas/apps/reporting/tasks_sync.py", line 138, in send_business_weekly_report
    else:
Exception: Email sending failed
INFO 2026-03-02 08:00:00,180 tasks_sync 604936 140458812139264 Weekly report task completed. Sent: 0, Failed: 1
INFO 2026-03-02 08:00:00,181 scheduler 604936 140458812139264 Weekly reports completed: {'sent': 0, 'failed': 1}
INFO 2026-03-02 09:00:00,001 base 604936 140458820531968 Running job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-03-09 09:00:00 UTC)" (scheduled at 2026-03-02 09:00:00+00:00)
INFO 2026-03-02 09:00:00,001 scheduler 604936 140458820531968 Starting low stock check job
INFO 2026-03-02 09:00:00,003 scheduler 604936 140458820531968 Low stock check job started in background
INFO 2026-03-02 09:00:00,003 base 604936 140458820531968 Job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-03-09 09:00:00 UTC)" executed successfully
INFO 2026-03-02 09:00:00,007 tasks_sync 604936 140458812139264 Checking low stock for 2 businesses
INFO 2026-03-02 09:00:00,018 tasks_sync 604936 140458812139264 Successfully generated report 51 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-02 09:00:03,288 tasks_sync 604936 140458812139264 Successfully generated report 52 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-02 09:00:03,301 scheduler 604936 140458812139264 Low stock check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-02 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-03 10:00:00 UTC)" (scheduled at 2026-03-02 10:00:00+00:00)
INFO 2026-03-02 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-02 10:00:00,005 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-02 10:00:00,006 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-03 10:00:00 UTC)" executed successfully
INFO 2026-03-02 10:00:00,012 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-02 10:00:00,033 tasks_sync 604936 140458812139264 Successfully generated report 53 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-02 10:00:00,054 tasks_sync 604936 140458812139264 Successfully generated report 54 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-02 10:00:00,054 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-03 02:00:00,012 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-04 02:00:00 UTC)" (scheduled at 2026-03-03 02:00:00+00:00)
INFO 2026-03-03 02:00:00,013 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-03 02:00:00,015 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-03 02:00:00,015 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-04 02:00:00 UTC)" executed successfully
INFO 2026-03-03 02:00:00,021 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-03 02:00:00,022 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-03 02:00:00,027 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-03 02:00:00,027 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-03 10:00:00,000 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-04 10:00:00 UTC)" (scheduled at 2026-03-03 10:00:00+00:00)
INFO 2026-03-03 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-03 10:00:00,003 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-03 10:00:00,003 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-04 10:00:00 UTC)" executed successfully
INFO 2026-03-03 10:00:00,006 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-03 10:00:00,031 tasks_sync 604936 140458812139264 Successfully generated report 55 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-03 10:00:00,062 tasks_sync 604936 140458812139264 Successfully generated report 56 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-03 10:00:00,062 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-04 02:00:00,000 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-05 02:00:00 UTC)" (scheduled at 2026-03-04 02:00:00+00:00)
INFO 2026-03-04 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-04 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-04 02:00:00,003 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-05 02:00:00 UTC)" executed successfully
INFO 2026-03-04 02:00:00,024 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-04 02:00:00,024 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-04 02:00:00,030 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-04 02:00:00,030 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-04 10:00:00,000 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-05 10:00:00 UTC)" (scheduled at 2026-03-04 10:00:00+00:00)
INFO 2026-03-04 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-04 10:00:00,003 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-04 10:00:00,003 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-05 10:00:00 UTC)" executed successfully
INFO 2026-03-04 10:00:00,007 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-04 10:00:00,025 tasks_sync 604936 140458812139264 Successfully generated report 57 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-04 10:00:00,047 tasks_sync 604936 140458812139264 Successfully generated report 58 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-04 10:00:00,047 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-05 02:00:00,001 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-06 02:00:00 UTC)" (scheduled at 2026-03-05 02:00:00+00:00)
INFO 2026-03-05 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-05 02:00:00,004 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-05 02:00:00,004 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-06 02:00:00 UTC)" executed successfully
INFO 2026-03-05 02:00:00,012 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-05 02:00:00,012 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-05 02:00:00,017 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-05 02:00:00,017 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-05 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-06 10:00:00 UTC)" (scheduled at 2026-03-05 10:00:00+00:00)
INFO 2026-03-05 10:00:00,003 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-05 10:00:00,004 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-05 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-06 10:00:00 UTC)" executed successfully
INFO 2026-03-05 10:00:00,010 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-05 10:00:00,027 tasks_sync 604936 140458812139264 Successfully generated report 59 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-05 10:00:00,047 tasks_sync 604936 140458812139264 Successfully generated report 60 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-05 10:00:00,047 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-06 02:00:00,001 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-07 02:00:00 UTC)" (scheduled at 2026-03-06 02:00:00+00:00)
INFO 2026-03-06 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-06 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-06 02:00:00,003 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-07 02:00:00 UTC)" executed successfully
INFO 2026-03-06 02:00:00,009 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-06 02:00:00,009 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-06 02:00:00,014 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-06 02:00:00,014 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-06 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-07 10:00:00 UTC)" (scheduled at 2026-03-06 10:00:00+00:00)
INFO 2026-03-06 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-06 10:00:00,004 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-06 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-07 10:00:00 UTC)" executed successfully
INFO 2026-03-06 10:00:00,008 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-06 10:00:00,024 tasks_sync 604936 140458812139264 Successfully generated report 61 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-06 10:00:00,045 tasks_sync 604936 140458812139264 Successfully generated report 62 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-06 10:00:00,045 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-07 02:00:00,003 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-08 02:00:00 UTC)" (scheduled at 2026-03-07 02:00:00+00:00)
INFO 2026-03-07 02:00:00,004 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-07 02:00:00,006 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-07 02:00:00,006 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-08 02:00:00 UTC)" executed successfully
INFO 2026-03-07 02:00:00,014 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-07 02:00:00,014 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-07 02:00:00,020 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-07 02:00:00,020 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-07 10:00:00,000 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-08 10:00:00 UTC)" (scheduled at 2026-03-07 10:00:00+00:00)
INFO 2026-03-07 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-07 10:00:00,003 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-07 10:00:00,003 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-08 10:00:00 UTC)" executed successfully
INFO 2026-03-07 10:00:00,007 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-07 10:00:00,025 tasks_sync 604936 140458812139264 Successfully generated report 63 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-07 10:00:00,045 tasks_sync 604936 140458812139264 Successfully generated report 64 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-07 10:00:00,045 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-08 02:00:00,003 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-09 02:00:00 UTC)" (scheduled at 2026-03-08 02:00:00+00:00)
INFO 2026-03-08 02:00:00,004 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-08 02:00:00,006 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-08 02:00:00,006 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-09 02:00:00 UTC)" executed successfully
INFO 2026-03-08 02:00:00,015 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-08 02:00:00,015 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-08 02:00:00,021 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-08 02:00:00,021 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-08 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-09 10:00:00 UTC)" (scheduled at 2026-03-08 10:00:00+00:00)
INFO 2026-03-08 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-08 10:00:00,004 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-08 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-09 10:00:00 UTC)" executed successfully
INFO 2026-03-08 10:00:00,010 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-08 10:00:00,041 tasks_sync 604936 140458812139264 Successfully generated report 65 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-08 10:00:00,083 tasks_sync 604936 140458812139264 Successfully generated report 66 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-08 10:00:00,084 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-09 02:00:00,001 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-10 02:00:00 UTC)" (scheduled at 2026-03-09 02:00:00+00:00)
INFO 2026-03-09 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-09 02:00:00,004 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-09 02:00:00,004 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-10 02:00:00 UTC)" executed successfully
INFO 2026-03-09 02:00:00,011 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-09 02:00:00,011 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-09 02:00:00,018 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-09 02:00:00,018 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-09 08:00:00,001 base 604936 140458820531968 Running job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-03-16 08:00:00 UTC)" (scheduled at 2026-03-09 08:00:00+00:00)
INFO 2026-03-09 08:00:00,003 scheduler 604936 140458820531968 Starting weekly reports job
INFO 2026-03-09 08:00:00,003 tasks_sync 604936 140458812139264 Starting weekly report sending task
INFO 2026-03-09 08:00:00,003 scheduler 604936 140458820531968 Weekly reports job started in background
INFO 2026-03-09 08:00:00,005 base 604936 140458820531968 Job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-03-16 08:00:00 UTC)" executed successfully
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1535: RuntimeWarning: DateTimeField Sale.sale_date received a naive datetime (2026-03-09 00:00:00) while time zone support is active.
  warnings.warn(
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1535: RuntimeWarning: DateTimeField Transaction.transaction_date received a naive datetime (2026-03-09 00:00:00) while time zone support is active.
  warnings.warn(
ERROR 2026-03-09 08:00:00,191 email_report_service 604936 140458812139264 Error sending weekly report for business 26ef493a-63bd-450c-907a-0b8f020c0f03: 'humanize' is not a registered tag library. Must be one of:
admin_list
admin_modify
admin_urls
cache
debugger_tags
highlighting
i18n
indent_text
l10n
log
rest_framework
static
syntax_color
tz
widont
ERROR 2026-03-09 08:00:00,192 tasks_sync 604936 140458812139264 Error sending weekly report for business 26ef493a-63bd-450c-907a-0b8f020c0f03: Email sending failed
Traceback (most recent call last):
  File "/home/binbytec/binbytesaas/apps/reporting/tasks_sync.py", line 138, in send_business_weekly_report
    else:
Exception: Email sending failed
INFO 2026-03-09 08:00:00,199 tasks_sync 604936 140458812139264 Weekly report task completed. Sent: 0, Failed: 1
INFO 2026-03-09 08:00:00,199 scheduler 604936 140458812139264 Weekly reports completed: {'sent': 0, 'failed': 1}
INFO 2026-03-09 09:00:00,001 base 604936 140458820531968 Running job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-03-16 09:00:00 UTC)" (scheduled at 2026-03-09 09:00:00+00:00)
INFO 2026-03-09 09:00:00,002 scheduler 604936 140458820531968 Starting low stock check job
INFO 2026-03-09 09:00:00,004 scheduler 604936 140458820531968 Low stock check job started in background
INFO 2026-03-09 09:00:00,005 base 604936 140458820531968 Job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-03-16 09:00:00 UTC)" executed successfully
INFO 2026-03-09 09:00:00,009 tasks_sync 604936 140458812139264 Checking low stock for 2 businesses
INFO 2026-03-09 09:00:00,023 tasks_sync 604936 140458812139264 Successfully generated report 67 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-09 09:00:01,365 tasks_sync 604936 140458812139264 Successfully generated report 68 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-09 09:00:01,374 scheduler 604936 140458812139264 Low stock check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-09 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-10 10:00:00 UTC)" (scheduled at 2026-03-09 10:00:00+00:00)
INFO 2026-03-09 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-09 10:00:00,004 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-09 10:00:00,005 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-10 10:00:00 UTC)" executed successfully
INFO 2026-03-09 10:00:00,009 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-09 10:00:00,030 tasks_sync 604936 140458812139264 Successfully generated report 69 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-09 10:00:00,051 tasks_sync 604936 140458812139264 Successfully generated report 70 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-09 10:00:00,051 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-10 02:00:00,001 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-11 02:00:00 UTC)" (scheduled at 2026-03-10 02:00:00+00:00)
INFO 2026-03-10 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-10 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-10 02:00:00,003 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-11 02:00:00 UTC)" executed successfully
INFO 2026-03-10 02:00:00,010 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-10 02:00:00,010 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-10 02:00:00,015 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-10 02:00:00,015 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-10 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-11 10:00:00 UTC)" (scheduled at 2026-03-10 10:00:00+00:00)
INFO 2026-03-10 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-10 10:00:00,004 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-10 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-11 10:00:00 UTC)" executed successfully
INFO 2026-03-10 10:00:00,008 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-10 10:00:00,033 tasks_sync 604936 140458812139264 Successfully generated report 71 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-10 10:00:00,072 tasks_sync 604936 140458812139264 Successfully generated report 72 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-10 10:00:00,072 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-11 02:00:00,000 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-12 02:00:00 UTC)" (scheduled at 2026-03-11 02:00:00+00:00)
INFO 2026-03-11 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-11 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-11 02:00:00,003 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-12 02:00:00 UTC)" executed successfully
INFO 2026-03-11 02:00:00,010 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-11 02:00:00,010 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-11 02:00:00,014 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-11 02:00:00,014 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-11 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-12 10:00:00 UTC)" (scheduled at 2026-03-11 10:00:00+00:00)
INFO 2026-03-11 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-11 10:00:00,003 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-11 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-12 10:00:00 UTC)" executed successfully
INFO 2026-03-11 10:00:00,008 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-11 10:00:00,026 tasks_sync 604936 140458812139264 Successfully generated report 73 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-11 10:00:00,047 tasks_sync 604936 140458812139264 Successfully generated report 74 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-11 10:00:00,047 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-12 02:00:00,001 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-13 02:00:00 UTC)" (scheduled at 2026-03-12 02:00:00+00:00)
INFO 2026-03-12 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-12 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-12 02:00:00,003 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-13 02:00:00 UTC)" executed successfully
INFO 2026-03-12 02:00:00,009 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-12 02:00:00,009 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-12 02:00:00,014 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-12 02:00:00,014 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-12 10:00:00,000 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-13 10:00:00 UTC)" (scheduled at 2026-03-12 10:00:00+00:00)
INFO 2026-03-12 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-12 10:00:00,004 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-12 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-13 10:00:00 UTC)" executed successfully
INFO 2026-03-12 10:00:00,009 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-12 10:00:00,029 tasks_sync 604936 140458812139264 Successfully generated report 75 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-12 10:00:00,055 tasks_sync 604936 140458812139264 Successfully generated report 76 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-12 10:00:00,055 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-13 02:00:00,001 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-14 02:00:00 UTC)" (scheduled at 2026-03-13 02:00:00+00:00)
INFO 2026-03-13 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-13 02:00:00,004 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-13 02:00:00,004 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-14 02:00:00 UTC)" executed successfully
INFO 2026-03-13 02:00:00,012 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-13 02:00:00,013 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-13 02:00:00,018 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-13 02:00:00,018 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-13 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-14 10:00:00 UTC)" (scheduled at 2026-03-13 10:00:00+00:00)
INFO 2026-03-13 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-13 10:00:00,004 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-13 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-14 10:00:00 UTC)" executed successfully
INFO 2026-03-13 10:00:00,010 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-13 10:00:00,033 tasks_sync 604936 140458812139264 Successfully generated report 77 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-13 10:00:00,058 tasks_sync 604936 140458812139264 Successfully generated report 78 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-13 10:00:00,058 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-14 02:00:00,000 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-15 02:00:00 UTC)" (scheduled at 2026-03-14 02:00:00+00:00)
INFO 2026-03-14 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-14 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-14 02:00:00,003 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-15 02:00:00 UTC)" executed successfully
INFO 2026-03-14 02:00:00,011 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-14 02:00:00,011 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-14 02:00:00,016 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-14 02:00:00,016 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-14 10:00:00,002 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-15 10:00:00 UTC)" (scheduled at 2026-03-14 10:00:00+00:00)
INFO 2026-03-14 10:00:00,003 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-14 10:00:00,005 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-14 10:00:00,005 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-15 10:00:00 UTC)" executed successfully
INFO 2026-03-14 10:00:00,013 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-14 10:00:00,028 tasks_sync 604936 140458812139264 Successfully generated report 79 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-14 10:00:00,054 tasks_sync 604936 140458812139264 Successfully generated report 80 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-14 10:00:00,054 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-15 02:00:00,002 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-16 02:00:00 UTC)" (scheduled at 2026-03-15 02:00:00+00:00)
INFO 2026-03-15 02:00:00,004 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-15 02:00:00,005 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-15 02:00:00,006 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-16 02:00:00 UTC)" executed successfully
INFO 2026-03-15 02:00:00,016 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-15 02:00:00,016 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-15 02:00:00,021 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-15 02:00:00,021 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-15 10:00:00,000 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-16 10:00:00 UTC)" (scheduled at 2026-03-15 10:00:00+00:00)
INFO 2026-03-15 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-15 10:00:00,004 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-15 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-16 10:00:00 UTC)" executed successfully
INFO 2026-03-15 10:00:00,013 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-15 10:00:00,052 tasks_sync 604936 140458812139264 Successfully generated report 81 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-15 10:00:00,093 tasks_sync 604936 140458812139264 Successfully generated report 82 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-15 10:00:00,093 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-16 02:00:00,001 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-17 02:00:00 UTC)" (scheduled at 2026-03-16 02:00:00+00:00)
INFO 2026-03-16 02:00:00,003 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-16 02:00:00,004 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-16 02:00:00,005 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-17 02:00:00 UTC)" executed successfully
INFO 2026-03-16 02:00:00,016 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-16 02:00:00,016 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-16 02:00:00,023 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-16 02:00:00,023 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-16 08:00:00,001 base 604936 140458820531968 Running job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-03-23 08:00:00 UTC)" (scheduled at 2026-03-16 08:00:00+00:00)
INFO 2026-03-16 08:00:00,002 scheduler 604936 140458820531968 Starting weekly reports job
INFO 2026-03-16 08:00:00,003 tasks_sync 604936 140458812139264 Starting weekly report sending task
INFO 2026-03-16 08:00:00,003 scheduler 604936 140458820531968 Weekly reports job started in background
INFO 2026-03-16 08:00:00,005 base 604936 140458820531968 Job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-03-23 08:00:00 UTC)" executed successfully
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1535: RuntimeWarning: DateTimeField Sale.sale_date received a naive datetime (2026-03-16 00:00:00) while time zone support is active.
  warnings.warn(
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1535: RuntimeWarning: DateTimeField Transaction.transaction_date received a naive datetime (2026-03-16 00:00:00) while time zone support is active.
  warnings.warn(
ERROR 2026-03-16 08:00:00,093 email_report_service 604936 140458812139264 Error sending weekly report for business 26ef493a-63bd-450c-907a-0b8f020c0f03: 'humanize' is not a registered tag library. Must be one of:
admin_list
admin_modify
admin_urls
cache
debugger_tags
highlighting
i18n
indent_text
l10n
log
rest_framework
static
syntax_color
tz
widont
ERROR 2026-03-16 08:00:00,094 tasks_sync 604936 140458812139264 Error sending weekly report for business 26ef493a-63bd-450c-907a-0b8f020c0f03: Email sending failed
Traceback (most recent call last):
  File "/home/binbytec/binbytesaas/apps/reporting/tasks_sync.py", line 138, in send_business_weekly_report
    else:
Exception: Email sending failed
INFO 2026-03-16 08:00:00,100 tasks_sync 604936 140458812139264 Weekly report task completed. Sent: 0, Failed: 1
INFO 2026-03-16 08:00:00,100 scheduler 604936 140458812139264 Weekly reports completed: {'sent': 0, 'failed': 1}
INFO 2026-03-16 09:00:00,001 base 604936 140458820531968 Running job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-03-23 09:00:00 UTC)" (scheduled at 2026-03-16 09:00:00+00:00)
INFO 2026-03-16 09:00:00,002 scheduler 604936 140458820531968 Starting low stock check job
INFO 2026-03-16 09:00:00,004 scheduler 604936 140458820531968 Low stock check job started in background
INFO 2026-03-16 09:00:00,004 base 604936 140458820531968 Job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-03-23 09:00:00 UTC)" executed successfully
INFO 2026-03-16 09:00:00,008 tasks_sync 604936 140458812139264 Checking low stock for 2 businesses
INFO 2026-03-16 09:00:00,019 tasks_sync 604936 140458812139264 Successfully generated report 83 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-16 09:00:01,610 tasks_sync 604936 140458812139264 Successfully generated report 84 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-16 09:00:01,623 scheduler 604936 140458812139264 Low stock check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-16 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-17 10:00:00 UTC)" (scheduled at 2026-03-16 10:00:00+00:00)
INFO 2026-03-16 10:00:00,003 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-16 10:00:00,006 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-16 10:00:00,006 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-17 10:00:00 UTC)" executed successfully
INFO 2026-03-16 10:00:00,019 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-16 10:00:00,048 tasks_sync 604936 140458812139264 Successfully generated report 85 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-16 10:00:00,082 tasks_sync 604936 140458812139264 Successfully generated report 86 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-16 10:00:00,082 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-17 02:00:00,003 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-18 02:00:00 UTC)" (scheduled at 2026-03-17 02:00:00+00:00)
INFO 2026-03-17 02:00:00,005 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-17 02:00:00,007 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-17 02:00:00,007 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-18 02:00:00 UTC)" executed successfully
INFO 2026-03-17 02:00:00,014 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-17 02:00:00,014 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-17 02:00:00,020 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-17 02:00:00,020 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-17 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-18 10:00:00 UTC)" (scheduled at 2026-03-17 10:00:00+00:00)
INFO 2026-03-17 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-17 10:00:00,004 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-17 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-18 10:00:00 UTC)" executed successfully
INFO 2026-03-17 10:00:00,010 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-17 10:00:00,031 tasks_sync 604936 140458812139264 Successfully generated report 87 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-17 10:00:00,069 tasks_sync 604936 140458812139264 Successfully generated report 88 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-17 10:00:00,069 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-18 02:00:00,004 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-19 02:00:00 UTC)" (scheduled at 2026-03-18 02:00:00+00:00)
INFO 2026-03-18 02:00:00,006 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-18 02:00:00,009 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-18 02:00:00,009 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-19 02:00:00 UTC)" executed successfully
INFO 2026-03-18 02:00:00,022 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-18 02:00:00,022 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-18 02:00:00,032 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-18 02:00:00,032 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-18 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-19 10:00:00 UTC)" (scheduled at 2026-03-18 10:00:00+00:00)
INFO 2026-03-18 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-18 10:00:00,004 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-18 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-19 10:00:00 UTC)" executed successfully
INFO 2026-03-18 10:00:00,011 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-18 10:00:00,050 tasks_sync 604936 140458812139264 Successfully generated report 89 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-18 10:00:00,100 tasks_sync 604936 140458812139264 Successfully generated report 90 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-18 10:00:00,100 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-19 02:00:00,003 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-20 02:00:00 UTC)" (scheduled at 2026-03-19 02:00:00+00:00)
INFO 2026-03-19 02:00:00,005 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-19 02:00:00,007 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-19 02:00:00,007 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-20 02:00:00 UTC)" executed successfully
INFO 2026-03-19 02:00:00,017 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-19 02:00:00,017 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-19 02:00:00,023 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-19 02:00:00,024 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-19 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-20 10:00:00 UTC)" (scheduled at 2026-03-19 10:00:00+00:00)
INFO 2026-03-19 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-19 10:00:00,004 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-19 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-20 10:00:00 UTC)" executed successfully
INFO 2026-03-19 10:00:00,008 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-19 10:00:00,028 tasks_sync 604936 140458812139264 Successfully generated report 91 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-19 10:00:00,063 tasks_sync 604936 140458812139264 Successfully generated report 92 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-19 10:00:00,063 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-20 02:00:00,000 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-21 02:00:00 UTC)" (scheduled at 2026-03-20 02:00:00+00:00)
INFO 2026-03-20 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-20 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-20 02:00:00,003 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-21 02:00:00 UTC)" executed successfully
INFO 2026-03-20 02:00:00,012 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-20 02:00:00,012 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-20 02:00:00,017 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-20 02:00:00,018 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-20 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-21 10:00:00 UTC)" (scheduled at 2026-03-20 10:00:00+00:00)
INFO 2026-03-20 10:00:00,003 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-20 10:00:00,004 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-20 10:00:00,005 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-21 10:00:00 UTC)" executed successfully
INFO 2026-03-20 10:00:00,009 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-20 10:00:00,032 tasks_sync 604936 140458812139264 Successfully generated report 93 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-20 10:00:00,075 tasks_sync 604936 140458812139264 Successfully generated report 94 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-20 10:00:00,075 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-21 02:00:00,001 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-22 02:00:00 UTC)" (scheduled at 2026-03-21 02:00:00+00:00)
INFO 2026-03-21 02:00:00,003 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-21 02:00:00,004 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-21 02:00:00,004 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-22 02:00:00 UTC)" executed successfully
INFO 2026-03-21 02:00:00,015 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-21 02:00:00,015 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-21 02:00:00,022 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-21 02:00:00,023 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-21 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-22 10:00:00 UTC)" (scheduled at 2026-03-21 10:00:00+00:00)
INFO 2026-03-21 10:00:00,004 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-21 10:00:00,006 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-21 10:00:00,009 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-22 10:00:00 UTC)" executed successfully
INFO 2026-03-21 10:00:00,016 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-21 10:00:00,041 tasks_sync 604936 140458812139264 Successfully generated report 95 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-21 10:00:00,079 tasks_sync 604936 140458812139264 Successfully generated report 96 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-21 10:00:00,079 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-22 02:00:00,002 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-23 02:00:00 UTC)" (scheduled at 2026-03-22 02:00:00+00:00)
INFO 2026-03-22 02:00:00,004 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-22 02:00:00,006 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-22 02:00:00,006 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-23 02:00:00 UTC)" executed successfully
INFO 2026-03-22 02:00:00,019 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-22 02:00:00,020 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-22 02:00:00,028 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-22 02:00:00,028 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-22 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-23 10:00:00 UTC)" (scheduled at 2026-03-22 10:00:00+00:00)
INFO 2026-03-22 10:00:00,003 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-22 10:00:00,004 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-22 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-23 10:00:00 UTC)" executed successfully
INFO 2026-03-22 10:00:00,014 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-22 10:00:00,041 tasks_sync 604936 140458812139264 Successfully generated report 97 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-22 10:00:00,072 tasks_sync 604936 140458812139264 Successfully generated report 98 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-22 10:00:00,072 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-23 02:00:00,002 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-24 02:00:00 UTC)" (scheduled at 2026-03-23 02:00:00+00:00)
INFO 2026-03-23 02:00:00,003 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-23 02:00:00,005 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-23 02:00:00,005 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-24 02:00:00 UTC)" executed successfully
INFO 2026-03-23 02:00:00,016 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-23 02:00:00,016 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-23 02:00:00,022 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-23 02:00:00,022 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-23 08:00:00,003 base 604936 140458820531968 Running job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-03-30 08:00:00 UTC)" (scheduled at 2026-03-23 08:00:00+00:00)
INFO 2026-03-23 08:00:00,005 scheduler 604936 140458820531968 Starting weekly reports job
INFO 2026-03-23 08:00:00,005 tasks_sync 604936 140458812139264 Starting weekly report sending task
INFO 2026-03-23 08:00:00,005 scheduler 604936 140458820531968 Weekly reports job started in background
INFO 2026-03-23 08:00:00,009 base 604936 140458820531968 Job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-03-30 08:00:00 UTC)" executed successfully
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1535: RuntimeWarning: DateTimeField Sale.sale_date received a naive datetime (2026-03-23 00:00:00) while time zone support is active.
  warnings.warn(
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1535: RuntimeWarning: DateTimeField Transaction.transaction_date received a naive datetime (2026-03-23 00:00:00) while time zone support is active.
  warnings.warn(
ERROR 2026-03-23 08:00:00,227 email_report_service 604936 140458812139264 Error sending weekly report for business 26ef493a-63bd-450c-907a-0b8f020c0f03: 'humanize' is not a registered tag library. Must be one of:
admin_list
admin_modify
admin_urls
cache
debugger_tags
highlighting
i18n
indent_text
l10n
log
rest_framework
static
syntax_color
tz
widont
ERROR 2026-03-23 08:00:00,227 tasks_sync 604936 140458812139264 Error sending weekly report for business 26ef493a-63bd-450c-907a-0b8f020c0f03: Email sending failed
Traceback (most recent call last):
  File "/home/binbytec/binbytesaas/apps/reporting/tasks_sync.py", line 138, in send_business_weekly_report
    else:
Exception: Email sending failed
INFO 2026-03-23 08:00:00,237 tasks_sync 604936 140458812139264 Weekly report task completed. Sent: 0, Failed: 1
INFO 2026-03-23 08:00:00,237 scheduler 604936 140458812139264 Weekly reports completed: {'sent': 0, 'failed': 1}
INFO 2026-03-23 09:00:00,001 base 604936 140458820531968 Running job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-03-30 09:00:00 UTC)" (scheduled at 2026-03-23 09:00:00+00:00)
INFO 2026-03-23 09:00:00,003 scheduler 604936 140458820531968 Starting low stock check job
INFO 2026-03-23 09:00:00,005 scheduler 604936 140458820531968 Low stock check job started in background
INFO 2026-03-23 09:00:00,005 base 604936 140458820531968 Job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-03-30 09:00:00 UTC)" executed successfully
INFO 2026-03-23 09:00:00,011 tasks_sync 604936 140458812139264 Checking low stock for 2 businesses
INFO 2026-03-23 09:00:00,032 tasks_sync 604936 140458812139264 Successfully generated report 99 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-23 09:00:01,592 tasks_sync 604936 140458812139264 Successfully generated report 100 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-23 09:00:01,605 scheduler 604936 140458812139264 Low stock check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-23 10:00:00,002 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-24 10:00:00 UTC)" (scheduled at 2026-03-23 10:00:00+00:00)
INFO 2026-03-23 10:00:00,003 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-23 10:00:00,005 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-23 10:00:00,005 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-24 10:00:00 UTC)" executed successfully
INFO 2026-03-23 10:00:00,014 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-23 10:00:00,034 tasks_sync 604936 140458812139264 Successfully generated report 101 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-23 10:00:00,059 tasks_sync 604936 140458812139264 Successfully generated report 102 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-23 10:00:00,060 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-24 02:00:00,003 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-25 02:00:00 UTC)" (scheduled at 2026-03-24 02:00:00+00:00)
INFO 2026-03-24 02:00:00,005 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-24 02:00:00,007 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-24 02:00:00,007 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-25 02:00:00 UTC)" executed successfully
INFO 2026-03-24 02:00:00,019 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-24 02:00:00,020 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-24 02:00:00,029 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-24 02:00:00,029 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-24 10:00:00,000 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-25 10:00:00 UTC)" (scheduled at 2026-03-24 10:00:00+00:00)
INFO 2026-03-24 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-24 10:00:00,003 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-24 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-25 10:00:00 UTC)" executed successfully
INFO 2026-03-24 10:00:00,012 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-24 10:00:00,036 tasks_sync 604936 140458812139264 Successfully generated report 103 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-24 10:00:00,068 tasks_sync 604936 140458812139264 Successfully generated report 104 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-24 10:00:00,069 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-25 02:00:00,001 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-26 02:00:00 UTC)" (scheduled at 2026-03-25 02:00:00+00:00)
INFO 2026-03-25 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-25 02:00:00,004 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-25 02:00:00,004 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-26 02:00:00 UTC)" executed successfully
INFO 2026-03-25 02:00:00,011 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-25 02:00:00,011 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-25 02:00:00,017 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-25 02:00:00,017 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-25 10:00:00,000 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-26 10:00:00 UTC)" (scheduled at 2026-03-25 10:00:00+00:00)
INFO 2026-03-25 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-25 10:00:00,003 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-25 10:00:00,003 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-26 10:00:00 UTC)" executed successfully
INFO 2026-03-25 10:00:00,006 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-25 10:00:00,026 tasks_sync 604936 140458812139264 Successfully generated report 105 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-25 10:00:00,052 tasks_sync 604936 140458812139264 Successfully generated report 106 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-25 10:00:00,053 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-26 02:00:00,001 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-27 02:00:00 UTC)" (scheduled at 2026-03-26 02:00:00+00:00)
INFO 2026-03-26 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-26 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-26 02:00:00,003 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-27 02:00:00 UTC)" executed successfully
INFO 2026-03-26 02:00:00,010 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-26 02:00:00,010 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-26 02:00:00,016 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-26 02:00:00,016 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-26 10:00:00,000 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-27 10:00:00 UTC)" (scheduled at 2026-03-26 10:00:00+00:00)
INFO 2026-03-26 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-26 10:00:00,004 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-26 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-27 10:00:00 UTC)" executed successfully
INFO 2026-03-26 10:00:00,011 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-26 10:00:00,033 tasks_sync 604936 140458812139264 Successfully generated report 107 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-26 10:00:00,083 tasks_sync 604936 140458812139264 Successfully generated report 108 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-26 10:00:00,083 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-27 02:00:00,001 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-28 02:00:00 UTC)" (scheduled at 2026-03-27 02:00:00+00:00)
INFO 2026-03-27 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-27 02:00:00,004 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-27 02:00:00,004 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-28 02:00:00 UTC)" executed successfully
INFO 2026-03-27 02:00:00,012 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-27 02:00:00,012 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-27 02:00:00,018 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-27 02:00:00,018 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-27 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-28 10:00:00 UTC)" (scheduled at 2026-03-27 10:00:00+00:00)
INFO 2026-03-27 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-27 10:00:00,004 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-27 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-28 10:00:00 UTC)" executed successfully
INFO 2026-03-27 10:00:00,012 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-27 10:00:00,030 tasks_sync 604936 140458812139264 Successfully generated report 109 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-27 10:00:00,060 tasks_sync 604936 140458812139264 Successfully generated report 110 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-27 10:00:00,060 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-28 02:00:00,000 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-29 02:00:00 UTC)" (scheduled at 2026-03-28 02:00:00+00:00)
INFO 2026-03-28 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-28 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-28 02:00:00,003 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-29 02:00:00 UTC)" executed successfully
INFO 2026-03-28 02:00:00,009 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-28 02:00:00,009 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-28 02:00:00,014 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-28 02:00:00,014 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-28 10:00:00,001 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-29 10:00:00 UTC)" (scheduled at 2026-03-28 10:00:00+00:00)
INFO 2026-03-28 10:00:00,003 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-28 10:00:00,006 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-28 10:00:00,006 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-29 10:00:00 UTC)" executed successfully
INFO 2026-03-28 10:00:00,013 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-28 10:00:00,046 tasks_sync 604936 140458812139264 Successfully generated report 111 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-28 10:00:00,096 tasks_sync 604936 140458812139264 Successfully generated report 112 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-28 10:00:00,096 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-29 02:00:00,001 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-30 02:00:00 UTC)" (scheduled at 2026-03-29 02:00:00+00:00)
INFO 2026-03-29 02:00:00,003 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-29 02:00:00,004 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-29 02:00:00,004 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-30 02:00:00 UTC)" executed successfully
INFO 2026-03-29 02:00:00,015 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-29 02:00:00,015 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-29 02:00:00,020 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-29 02:00:00,020 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-29 10:00:00,017 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-30 10:00:00 UTC)" (scheduled at 2026-03-29 10:00:00+00:00)
INFO 2026-03-29 10:00:00,033 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-29 10:00:00,058 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-29 10:00:00,059 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-30 10:00:00 UTC)" executed successfully
INFO 2026-03-29 10:00:00,139 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-29 10:00:00,290 tasks_sync 604936 140458812139264 Successfully generated report 113 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-29 10:00:00,365 tasks_sync 604936 140458812139264 Successfully generated report 114 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-29 10:00:00,366 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-30 02:00:00,001 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-31 02:00:00 UTC)" (scheduled at 2026-03-30 02:00:00+00:00)
INFO 2026-03-30 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-30 02:00:00,004 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-30 02:00:00,004 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-03-31 02:00:00 UTC)" executed successfully
INFO 2026-03-30 02:00:00,009 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-30 02:00:00,009 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-30 02:00:00,014 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-30 02:00:00,014 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-03-30 08:00:00,000 base 604936 140458820531968 Running job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-04-06 08:00:00 UTC)" (scheduled at 2026-03-30 08:00:00+00:00)
INFO 2026-03-30 08:00:00,002 scheduler 604936 140458820531968 Starting weekly reports job
INFO 2026-03-30 08:00:00,002 tasks_sync 604936 140458812139264 Starting weekly report sending task
INFO 2026-03-30 08:00:00,002 scheduler 604936 140458820531968 Weekly reports job started in background
INFO 2026-03-30 08:00:00,004 base 604936 140458820531968 Job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-04-06 08:00:00 UTC)" executed successfully
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1535: RuntimeWarning: DateTimeField Sale.sale_date received a naive datetime (2026-03-30 00:00:00) while time zone support is active.
  warnings.warn(
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1535: RuntimeWarning: DateTimeField Transaction.transaction_date received a naive datetime (2026-03-30 00:00:00) while time zone support is active.
  warnings.warn(
ERROR 2026-03-30 08:00:00,107 email_report_service 604936 140458812139264 Error sending weekly report for business 26ef493a-63bd-450c-907a-0b8f020c0f03: 'humanize' is not a registered tag library. Must be one of:
admin_list
admin_modify
admin_urls
cache
debugger_tags
highlighting
i18n
indent_text
l10n
log
rest_framework
static
syntax_color
tz
widont
ERROR 2026-03-30 08:00:00,107 tasks_sync 604936 140458812139264 Error sending weekly report for business 26ef493a-63bd-450c-907a-0b8f020c0f03: Email sending failed
Traceback (most recent call last):
  File "/home/binbytec/binbytesaas/apps/reporting/tasks_sync.py", line 138, in send_business_weekly_report
    else:
Exception: Email sending failed
INFO 2026-03-30 08:00:00,114 tasks_sync 604936 140458812139264 Weekly report task completed. Sent: 0, Failed: 1
INFO 2026-03-30 08:00:00,114 scheduler 604936 140458812139264 Weekly reports completed: {'sent': 0, 'failed': 1}
INFO 2026-03-30 09:00:00,001 base 604936 140458820531968 Running job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-04-06 09:00:00 UTC)" (scheduled at 2026-03-30 09:00:00+00:00)
INFO 2026-03-30 09:00:00,003 scheduler 604936 140458820531968 Starting low stock check job
INFO 2026-03-30 09:00:00,005 scheduler 604936 140458820531968 Low stock check job started in background
INFO 2026-03-30 09:00:00,005 base 604936 140458820531968 Job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-04-06 09:00:00 UTC)" executed successfully
INFO 2026-03-30 09:00:00,009 tasks_sync 604936 140458812139264 Checking low stock for 2 businesses
INFO 2026-03-30 09:00:00,019 tasks_sync 604936 140458812139264 Successfully generated report 115 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-30 09:00:01,646 tasks_sync 604936 140458812139264 Successfully generated report 116 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-30 09:00:01,666 scheduler 604936 140458812139264 Low stock check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-30 10:00:00,000 base 604936 140458820531968 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-31 10:00:00 UTC)" (scheduled at 2026-03-30 10:00:00+00:00)
INFO 2026-03-30 10:00:00,002 scheduler 604936 140458820531968 Starting warranty expiry check job
INFO 2026-03-30 10:00:00,003 scheduler 604936 140458820531968 Warranty expiry check job started in background
INFO 2026-03-30 10:00:00,004 base 604936 140458820531968 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-03-31 10:00:00 UTC)" executed successfully
INFO 2026-03-30 10:00:00,010 tasks_sync 604936 140458812139264 Checking warranty expiry for 2 businesses
INFO 2026-03-30 10:00:00,028 tasks_sync 604936 140458812139264 Successfully generated report 117 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-03-30 10:00:00,051 tasks_sync 604936 140458812139264 Successfully generated report 118 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-03-30 10:00:00,051 scheduler 604936 140458812139264 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-03-31 02:00:00,001 base 604936 140458820531968 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-01 02:00:00 UTC)" (scheduled at 2026-03-31 02:00:00+00:00)
INFO 2026-03-31 02:00:00,002 scheduler 604936 140458820531968 Starting cleanup job
INFO 2026-03-31 02:00:00,003 scheduler 604936 140458820531968 Cleanup job started in background
INFO 2026-03-31 02:00:00,003 base 604936 140458820531968 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-01 02:00:00 UTC)" executed successfully
INFO 2026-03-31 02:00:00,012 tasks_sync 604936 140458812139264 Cleaned up 0 old report logs
INFO 2026-03-31 02:00:00,012 scheduler 604936 140458812139264 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-03-31 02:00:00,018 tasks_sync 604936 140458812139264 Cleaned up 0 old reports
INFO 2026-03-31 02:00:00,018 scheduler 604936 140458812139264 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
nohup: failed to run command 'python': No such file or directory
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/rest_framework/fields.py:992: UserWarning: min_value should be a Decimal instance.
  warnings.warn("min_value should be a Decimal instance.")
INFO 2026-03-31 12:20:13,758 base 2848255 140205383821120 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-03-31 12:20:13,758 scheduler 2848255 140205383821120 Scheduled: Weekly reports - Mondays at 8:00 AM
INFO 2026-03-31 12:20:13,758 base 2848255 140205383821120 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-03-31 12:20:13,758 scheduler 2848255 140205383821120 Scheduled: Monthly reports - 1st of month at 6:00 AM
INFO 2026-03-31 12:20:13,758 base 2848255 140205383821120 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-03-31 12:20:13,758 scheduler 2848255 140205383821120 Scheduled: Low stock check - Mondays at 9:00 AM
INFO 2026-03-31 12:20:13,759 base 2848255 140205383821120 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-03-31 12:20:13,759 scheduler 2848255 140205383821120 Scheduled: Warranty expiry check - Daily at 10:00 AM
INFO 2026-03-31 12:20:13,759 base 2848255 140205383821120 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-03-31 12:20:13,759 scheduler 2848255 140205383821120 Scheduled: Cleanup old reports - Daily at 2:00 AM
INFO 2026-03-31 12:20:13,759 base 2848255 140205383821120 Added job "Send Weekly Reports" to job store "default"
INFO 2026-03-31 12:20:13,759 base 2848255 140205383821120 Added job "Send Monthly Reports" to job store "default"
INFO 2026-03-31 12:20:13,760 base 2848255 140205383821120 Added job "Check Low Stock" to job store "default"
INFO 2026-03-31 12:20:13,760 base 2848255 140205383821120 Added job "Check Warranty Expiry" to job store "default"
INFO 2026-03-31 12:20:13,760 base 2848255 140205383821120 Added job "Cleanup Old Reports" to job store "default"
INFO 2026-03-31 12:20:13,760 base 2848255 140205383821120 Scheduler started
INFO 2026-03-31 12:20:13,760 scheduler 2848255 140205383821120 Report Scheduler started successfully!
INFO 2026-03-31 12:20:13,760 scheduler 2848255 140205383821120 
Next scheduled runs:
INFO 2026-03-31 12:20:13,760 scheduler 2848255 140205383821120   - Cleanup Old Reports: 2026-04-01 02:00:00 EAT
INFO 2026-03-31 12:20:13,760 scheduler 2848255 140205383821120   - Send Monthly Reports: 2026-04-01 06:00:00 EAT
INFO 2026-03-31 12:20:13,760 scheduler 2848255 140205383821120   - Check Warranty Expiry: 2026-04-01 10:00:00 EAT
INFO 2026-03-31 12:20:13,760 scheduler 2848255 140205383821120   - Send Weekly Reports: 2026-04-06 08:00:00 EAT
INFO 2026-03-31 12:20:13,760 scheduler 2848255 140205383821120   - Check Low Stock: 2026-04-06 09:00:00 EAT
INFO 2026-04-01 02:00:00,001 base 2848255 140204737730304 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-01 02:00:00 EAT)" (scheduled at 2026-04-01 02:00:00+03:00)
INFO 2026-04-01 02:00:00,005 scheduler 2848255 140204737730304 Starting cleanup job
INFO 2026-04-01 02:00:00,006 scheduler 2848255 140204737730304 Cleanup job started in background
INFO 2026-04-01 02:00:00,006 base 2848255 140204737730304 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-02 02:00:00 EAT)" executed successfully
INFO 2026-04-01 02:00:00,019 tasks_sync 2848255 140204729337600 Cleaned up 0 old report logs
INFO 2026-04-01 02:00:00,019 scheduler 2848255 140204729337600 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-01 02:00:00,025 tasks_sync 2848255 140204729337600 Cleaned up 0 old reports
INFO 2026-04-01 02:00:00,025 scheduler 2848255 140204729337600 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-01 06:00:00,001 base 2848255 140204737730304 Running job "Send Monthly Reports (trigger: cron[day='1', hour='6', minute='0'], next run at: 2026-05-01 06:00:00 EAT)" (scheduled at 2026-04-01 06:00:00+03:00)
INFO 2026-04-01 06:00:00,002 scheduler 2848255 140204737730304 Starting monthly reports job
INFO 2026-04-01 06:00:00,004 scheduler 2848255 140204737730304 Monthly reports job started in background
INFO 2026-04-01 06:00:00,004 base 2848255 140204737730304 Job "Send Monthly Reports (trigger: cron[day='1', hour='6', minute='0'], next run at: 2026-05-01 06:00:00 EAT)" executed successfully
INFO 2026-04-01 06:00:00,014 tasks_sync 2848255 140204729337600 Generating monthly reports for 2 businesses
INFO 2026-04-01 06:00:00,049 tasks_sync 2848255 140204729337600 Successfully generated report 119 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-01 06:00:00,243 tasks_sync 2848255 140204729337600 Successfully generated report 120 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-01 06:00:00,244 scheduler 2848255 140204729337600 Monthly reports completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-01 10:00:00,001 base 2848255 140204737730304 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-02 10:00:00 EAT)" (scheduled at 2026-04-01 10:00:00+03:00)
INFO 2026-04-01 10:00:00,002 scheduler 2848255 140204737730304 Starting warranty expiry check job
INFO 2026-04-01 10:00:00,003 scheduler 2848255 140204737730304 Warranty expiry check job started in background
INFO 2026-04-01 10:00:00,004 base 2848255 140204737730304 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-02 10:00:00 EAT)" executed successfully
INFO 2026-04-01 10:00:00,007 tasks_sync 2848255 140204729337600 Checking warranty expiry for 2 businesses
INFO 2026-04-01 10:00:00,035 tasks_sync 2848255 140204729337600 Successfully generated report 121 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-01 10:00:00,068 tasks_sync 2848255 140204729337600 Successfully generated report 122 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-01 10:00:00,068 scheduler 2848255 140204729337600 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-02 02:00:00,001 base 2848255 140204737730304 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-03 02:00:00 EAT)" (scheduled at 2026-04-02 02:00:00+03:00)
INFO 2026-04-02 02:00:00,002 scheduler 2848255 140204737730304 Starting cleanup job
INFO 2026-04-02 02:00:00,003 scheduler 2848255 140204737730304 Cleanup job started in background
INFO 2026-04-02 02:00:00,003 base 2848255 140204737730304 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-03 02:00:00 EAT)" executed successfully
INFO 2026-04-02 02:00:00,009 tasks_sync 2848255 140204729337600 Cleaned up 0 old report logs
INFO 2026-04-02 02:00:00,009 scheduler 2848255 140204729337600 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-02 02:00:00,014 tasks_sync 2848255 140204729337600 Cleaned up 0 old reports
INFO 2026-04-02 02:00:00,014 scheduler 2848255 140204729337600 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-02 10:00:00,001 base 2848255 140204737730304 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-03 10:00:00 EAT)" (scheduled at 2026-04-02 10:00:00+03:00)
INFO 2026-04-02 10:00:00,001 scheduler 2848255 140204737730304 Starting warranty expiry check job
INFO 2026-04-02 10:00:00,003 scheduler 2848255 140204737730304 Warranty expiry check job started in background
INFO 2026-04-02 10:00:00,003 base 2848255 140204737730304 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-03 10:00:00 EAT)" executed successfully
INFO 2026-04-02 10:00:00,006 tasks_sync 2848255 140204729337600 Checking warranty expiry for 2 businesses
INFO 2026-04-02 10:00:00,025 tasks_sync 2848255 140204729337600 Successfully generated report 123 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-02 10:00:00,051 tasks_sync 2848255 140204729337600 Successfully generated report 124 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-02 10:00:00,051 scheduler 2848255 140204729337600 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-03 02:00:00,003 base 2848255 140204737730304 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-04 02:00:00 EAT)" (scheduled at 2026-04-03 02:00:00+03:00)
INFO 2026-04-03 02:00:00,004 scheduler 2848255 140204737730304 Starting cleanup job
INFO 2026-04-03 02:00:00,006 scheduler 2848255 140204737730304 Cleanup job started in background
INFO 2026-04-03 02:00:00,006 base 2848255 140204737730304 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-04 02:00:00 EAT)" executed successfully
INFO 2026-04-03 02:00:00,015 tasks_sync 2848255 140204729337600 Cleaned up 0 old report logs
INFO 2026-04-03 02:00:00,015 scheduler 2848255 140204729337600 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-03 02:00:00,021 tasks_sync 2848255 140204729337600 Cleaned up 0 old reports
INFO 2026-04-03 02:00:00,021 scheduler 2848255 140204729337600 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-03 10:00:00,001 base 2848255 140204737730304 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-04 10:00:00 EAT)" (scheduled at 2026-04-03 10:00:00+03:00)
INFO 2026-04-03 10:00:00,002 scheduler 2848255 140204737730304 Starting warranty expiry check job
INFO 2026-04-03 10:00:00,004 scheduler 2848255 140204737730304 Warranty expiry check job started in background
INFO 2026-04-03 10:00:00,004 base 2848255 140204737730304 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-04 10:00:00 EAT)" executed successfully
INFO 2026-04-03 10:00:00,008 tasks_sync 2848255 140204729337600 Checking warranty expiry for 2 businesses
INFO 2026-04-03 10:00:00,037 tasks_sync 2848255 140204729337600 Successfully generated report 125 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-03 10:00:00,068 tasks_sync 2848255 140204729337600 Successfully generated report 126 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-03 10:00:00,068 scheduler 2848255 140204729337600 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-04 02:00:00,004 base 2848255 140204737730304 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-05 02:00:00 EAT)" (scheduled at 2026-04-04 02:00:00+03:00)
INFO 2026-04-04 02:00:00,005 scheduler 2848255 140204737730304 Starting cleanup job
INFO 2026-04-04 02:00:00,008 scheduler 2848255 140204737730304 Cleanup job started in background
INFO 2026-04-04 02:00:00,008 base 2848255 140204737730304 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-05 02:00:00 EAT)" executed successfully
INFO 2026-04-04 02:00:00,018 tasks_sync 2848255 140204729337600 Cleaned up 0 old report logs
INFO 2026-04-04 02:00:00,018 scheduler 2848255 140204729337600 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-04 02:00:00,023 tasks_sync 2848255 140204729337600 Cleaned up 0 old reports
INFO 2026-04-04 02:00:00,023 scheduler 2848255 140204729337600 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-04 10:00:00,000 base 2848255 140204737730304 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-05 10:00:00 EAT)" (scheduled at 2026-04-04 10:00:00+03:00)
INFO 2026-04-04 10:00:00,002 scheduler 2848255 140204737730304 Starting warranty expiry check job
INFO 2026-04-04 10:00:00,003 scheduler 2848255 140204737730304 Warranty expiry check job started in background
INFO 2026-04-04 10:00:00,003 base 2848255 140204737730304 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-05 10:00:00 EAT)" executed successfully
INFO 2026-04-04 10:00:00,006 tasks_sync 2848255 140204729337600 Checking warranty expiry for 2 businesses
INFO 2026-04-04 10:00:00,028 tasks_sync 2848255 140204729337600 Successfully generated report 127 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-04 10:00:00,047 tasks_sync 2848255 140204729337600 Successfully generated report 128 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-04 10:00:00,047 scheduler 2848255 140204729337600 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-05 02:00:00,002 base 2848255 140204737730304 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-06 02:00:00 EAT)" (scheduled at 2026-04-05 02:00:00+03:00)
INFO 2026-04-05 02:00:00,004 scheduler 2848255 140204737730304 Starting cleanup job
INFO 2026-04-05 02:00:00,006 scheduler 2848255 140204737730304 Cleanup job started in background
INFO 2026-04-05 02:00:00,006 base 2848255 140204737730304 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-06 02:00:00 EAT)" executed successfully
INFO 2026-04-05 02:00:00,015 tasks_sync 2848255 140204729337600 Cleaned up 0 old report logs
INFO 2026-04-05 02:00:00,015 scheduler 2848255 140204729337600 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-05 02:00:00,021 tasks_sync 2848255 140204729337600 Cleaned up 0 old reports
INFO 2026-04-05 02:00:00,021 scheduler 2848255 140204729337600 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-05 10:00:00,001 base 2848255 140204737730304 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-06 10:00:00 EAT)" (scheduled at 2026-04-05 10:00:00+03:00)
INFO 2026-04-05 10:00:00,002 scheduler 2848255 140204737730304 Starting warranty expiry check job
INFO 2026-04-05 10:00:00,004 scheduler 2848255 140204737730304 Warranty expiry check job started in background
INFO 2026-04-05 10:00:00,004 base 2848255 140204737730304 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-06 10:00:00 EAT)" executed successfully
INFO 2026-04-05 10:00:00,009 tasks_sync 2848255 140204729337600 Checking warranty expiry for 2 businesses
INFO 2026-04-05 10:00:00,039 tasks_sync 2848255 140204729337600 Successfully generated report 129 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-05 10:00:00,077 tasks_sync 2848255 140204729337600 Successfully generated report 130 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-05 10:00:00,077 scheduler 2848255 140204729337600 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-06 02:00:00,001 base 2848255 140204737730304 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-07 02:00:00 EAT)" (scheduled at 2026-04-06 02:00:00+03:00)
INFO 2026-04-06 02:00:00,002 scheduler 2848255 140204737730304 Starting cleanup job
INFO 2026-04-06 02:00:00,003 scheduler 2848255 140204737730304 Cleanup job started in background
INFO 2026-04-06 02:00:00,003 base 2848255 140204737730304 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-07 02:00:00 EAT)" executed successfully
INFO 2026-04-06 02:00:00,009 tasks_sync 2848255 140204729337600 Cleaned up 0 old report logs
INFO 2026-04-06 02:00:00,010 scheduler 2848255 140204729337600 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-06 02:00:00,016 tasks_sync 2848255 140204729337600 Cleaned up 0 old reports
INFO 2026-04-06 02:00:00,016 scheduler 2848255 140204729337600 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-06 08:00:00,001 base 2848255 140204737730304 Running job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-04-13 08:00:00 EAT)" (scheduled at 2026-04-06 08:00:00+03:00)
INFO 2026-04-06 08:00:00,002 scheduler 2848255 140204737730304 Starting weekly reports job
INFO 2026-04-06 08:00:00,002 tasks_sync 2848255 140204729337600 Starting weekly report sending task
INFO 2026-04-06 08:00:00,003 scheduler 2848255 140204737730304 Weekly reports job started in background
INFO 2026-04-06 08:00:00,004 base 2848255 140204737730304 Job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-04-13 08:00:00 EAT)" executed successfully
INFO 2026-04-06 08:00:00,018 services 2848255 140204729337600 Report date range: 2026-03-30 to 2026-04-06
INFO 2026-04-06 08:00:00,018 services 2848255 140204729337600 Current date: 2026-04-06
INFO 2026-04-06 08:00:03,638 email_report_service 2848255 140204729337600 Weekly report sent to 1 recipient(s) for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-06 08:00:03,647 tasks_sync 2848255 140204729337600 Successfully sent weekly report for OneTech Computers
INFO 2026-04-06 08:00:03,647 tasks_sync 2848255 140204729337600 Weekly report task completed. Sent: 1, Failed: 0
INFO 2026-04-06 08:00:03,647 scheduler 2848255 140204729337600 Weekly reports completed: {'sent': 1, 'failed': 0}
INFO 2026-04-06 09:00:00,001 base 2848255 140204737730304 Running job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-04-13 09:00:00 EAT)" (scheduled at 2026-04-06 09:00:00+03:00)
INFO 2026-04-06 09:00:00,003 scheduler 2848255 140204737730304 Starting low stock check job
INFO 2026-04-06 09:00:00,005 scheduler 2848255 140204737730304 Low stock check job started in background
INFO 2026-04-06 09:00:00,005 base 2848255 140204737730304 Job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-04-13 09:00:00 EAT)" executed successfully
INFO 2026-04-06 09:00:00,011 tasks_sync 2848255 140204729337600 Checking low stock for 2 businesses
INFO 2026-04-06 09:00:00,033 tasks_sync 2848255 140204729337600 Successfully generated report 131 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-06 09:00:03,358 tasks_sync 2848255 140204729337600 Successfully generated report 132 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-06 09:00:03,372 scheduler 2848255 140204729337600 Low stock check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-06 10:00:00,001 base 2848255 140204737730304 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-07 10:00:00 EAT)" (scheduled at 2026-04-06 10:00:00+03:00)
INFO 2026-04-06 10:00:00,003 scheduler 2848255 140204737730304 Starting warranty expiry check job
INFO 2026-04-06 10:00:00,005 scheduler 2848255 140204737730304 Warranty expiry check job started in background
INFO 2026-04-06 10:00:00,005 base 2848255 140204737730304 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-07 10:00:00 EAT)" executed successfully
INFO 2026-04-06 10:00:00,009 tasks_sync 2848255 140204729337600 Checking warranty expiry for 2 businesses
INFO 2026-04-06 10:00:00,036 tasks_sync 2848255 140204729337600 Successfully generated report 133 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-06 10:00:00,072 tasks_sync 2848255 140204729337600 Successfully generated report 134 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-06 10:00:00,072 scheduler 2848255 140204729337600 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-07 02:00:00,001 base 2848255 140204737730304 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-08 02:00:00 EAT)" (scheduled at 2026-04-07 02:00:00+03:00)
INFO 2026-04-07 02:00:00,002 scheduler 2848255 140204737730304 Starting cleanup job
INFO 2026-04-07 02:00:00,003 scheduler 2848255 140204737730304 Cleanup job started in background
INFO 2026-04-07 02:00:00,004 base 2848255 140204737730304 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-08 02:00:00 EAT)" executed successfully
INFO 2026-04-07 02:00:00,010 tasks_sync 2848255 140204729337600 Cleaned up 0 old report logs
INFO 2026-04-07 02:00:00,010 scheduler 2848255 140204729337600 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-07 02:00:00,015 tasks_sync 2848255 140204729337600 Cleaned up 0 old reports
INFO 2026-04-07 02:00:00,015 scheduler 2848255 140204729337600 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
nohup: failed to run command 'python': No such file or directory
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/rest_framework/fields.py:992: UserWarning: min_value should be a Decimal instance.
  warnings.warn("min_value should be a Decimal instance.")
INFO 2026-04-07 05:35:15,043 base 2919880 139796882466624 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-04-07 05:35:15,044 scheduler 2919880 139796882466624 Scheduled: Weekly reports - Mondays at 8:00 AM
INFO 2026-04-07 05:35:15,044 base 2919880 139796882466624 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-04-07 05:35:15,044 scheduler 2919880 139796882466624 Scheduled: Monthly reports - 1st of month at 6:00 AM
INFO 2026-04-07 05:35:15,044 base 2919880 139796882466624 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-04-07 05:35:15,045 scheduler 2919880 139796882466624 Scheduled: Low stock check - Mondays at 9:00 AM
INFO 2026-04-07 05:35:15,045 base 2919880 139796882466624 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-04-07 05:35:15,045 scheduler 2919880 139796882466624 Scheduled: Warranty expiry check - Daily at 10:00 AM
INFO 2026-04-07 05:35:15,045 base 2919880 139796882466624 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-04-07 05:35:15,045 scheduler 2919880 139796882466624 Scheduled: Cleanup old reports - Daily at 2:00 AM
INFO 2026-04-07 05:35:15,045 base 2919880 139796882466624 Added job "Send Weekly Reports" to job store "default"
INFO 2026-04-07 05:35:15,046 base 2919880 139796882466624 Added job "Send Monthly Reports" to job store "default"
INFO 2026-04-07 05:35:15,046 base 2919880 139796882466624 Added job "Check Low Stock" to job store "default"
INFO 2026-04-07 05:35:15,046 base 2919880 139796882466624 Added job "Check Warranty Expiry" to job store "default"
INFO 2026-04-07 05:35:15,046 base 2919880 139796882466624 Added job "Cleanup Old Reports" to job store "default"
INFO 2026-04-07 05:35:15,046 base 2919880 139796882466624 Scheduler started
INFO 2026-04-07 05:35:15,047 scheduler 2919880 139796882466624 Report Scheduler started successfully!
INFO 2026-04-07 05:35:15,047 scheduler 2919880 139796882466624 
Next scheduled runs:
INFO 2026-04-07 05:35:15,047 scheduler 2919880 139796882466624   - Check Warranty Expiry: 2026-04-07 10:00:00 EAT
INFO 2026-04-07 05:35:15,047 scheduler 2919880 139796882466624   - Cleanup Old Reports: 2026-04-08 02:00:00 EAT
INFO 2026-04-07 05:35:15,047 scheduler 2919880 139796882466624   - Send Weekly Reports: 2026-04-13 08:00:00 EAT
INFO 2026-04-07 05:35:15,047 scheduler 2919880 139796882466624   - Check Low Stock: 2026-04-13 09:00:00 EAT
INFO 2026-04-07 05:35:15,047 scheduler 2919880 139796882466624   - Send Monthly Reports: 2026-05-01 06:00:00 EAT
INFO 2026-04-07 10:00:00,001 base 2919880 139796236375808 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-07 10:00:00 EAT)" (scheduled at 2026-04-07 10:00:00+03:00)
INFO 2026-04-07 10:00:00,003 scheduler 2919880 139796236375808 Starting warranty expiry check job
INFO 2026-04-07 10:00:00,005 scheduler 2919880 139796236375808 Warranty expiry check job started in background
INFO 2026-04-07 10:00:00,005 base 2919880 139796236375808 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-08 10:00:00 EAT)" executed successfully
INFO 2026-04-07 10:00:00,009 tasks_sync 2919880 139796227983104 Checking warranty expiry for 2 businesses
INFO 2026-04-07 10:00:00,040 tasks_sync 2919880 139796227983104 Successfully generated report 135 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-07 10:00:00,074 tasks_sync 2919880 139796227983104 Successfully generated report 136 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-07 10:00:00,074 scheduler 2919880 139796227983104 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-08 02:00:00,002 base 2919880 139796236375808 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-09 02:00:00 EAT)" (scheduled at 2026-04-08 02:00:00+03:00)
INFO 2026-04-08 02:00:00,004 scheduler 2919880 139796236375808 Starting cleanup job
INFO 2026-04-08 02:00:00,006 scheduler 2919880 139796236375808 Cleanup job started in background
INFO 2026-04-08 02:00:00,006 base 2919880 139796236375808 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-09 02:00:00 EAT)" executed successfully
INFO 2026-04-08 02:00:00,016 tasks_sync 2919880 139796227983104 Cleaned up 0 old report logs
INFO 2026-04-08 02:00:00,016 scheduler 2919880 139796227983104 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-08 02:00:00,021 tasks_sync 2919880 139796227983104 Cleaned up 0 old reports
INFO 2026-04-08 02:00:00,021 scheduler 2919880 139796227983104 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-08 10:00:00,000 base 2919880 139796236375808 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-09 10:00:00 EAT)" (scheduled at 2026-04-08 10:00:00+03:00)
INFO 2026-04-08 10:00:00,001 scheduler 2919880 139796236375808 Starting warranty expiry check job
INFO 2026-04-08 10:00:00,003 scheduler 2919880 139796236375808 Warranty expiry check job started in background
INFO 2026-04-08 10:00:00,003 base 2919880 139796236375808 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-09 10:00:00 EAT)" executed successfully
INFO 2026-04-08 10:00:00,023 tasks_sync 2919880 139796227983104 Checking warranty expiry for 2 businesses
INFO 2026-04-08 10:00:00,049 tasks_sync 2919880 139796227983104 Successfully generated report 137 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-08 10:00:00,080 tasks_sync 2919880 139796227983104 Successfully generated report 138 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-08 10:00:00,080 scheduler 2919880 139796227983104 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-09 02:00:00,001 base 2919880 139796236375808 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-10 02:00:00 EAT)" (scheduled at 2026-04-09 02:00:00+03:00)
INFO 2026-04-09 02:00:00,002 scheduler 2919880 139796236375808 Starting cleanup job
INFO 2026-04-09 02:00:00,004 scheduler 2919880 139796236375808 Cleanup job started in background
INFO 2026-04-09 02:00:00,004 base 2919880 139796236375808 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-10 02:00:00 EAT)" executed successfully
INFO 2026-04-09 02:00:00,013 tasks_sync 2919880 139796227983104 Cleaned up 0 old report logs
INFO 2026-04-09 02:00:00,013 scheduler 2919880 139796227983104 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-09 02:00:00,019 tasks_sync 2919880 139796227983104 Cleaned up 0 old reports
INFO 2026-04-09 02:00:00,019 scheduler 2919880 139796227983104 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-09 10:00:00,001 base 2919880 139796236375808 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-10 10:00:00 EAT)" (scheduled at 2026-04-09 10:00:00+03:00)
INFO 2026-04-09 10:00:00,002 scheduler 2919880 139796236375808 Starting warranty expiry check job
INFO 2026-04-09 10:00:00,004 scheduler 2919880 139796236375808 Warranty expiry check job started in background
INFO 2026-04-09 10:00:00,004 base 2919880 139796236375808 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-10 10:00:00 EAT)" executed successfully
INFO 2026-04-09 10:00:00,010 tasks_sync 2919880 139796227983104 Checking warranty expiry for 2 businesses
INFO 2026-04-09 10:00:00,032 tasks_sync 2919880 139796227983104 Successfully generated report 139 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-09 10:00:00,061 tasks_sync 2919880 139796227983104 Successfully generated report 140 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-09 10:00:00,061 scheduler 2919880 139796227983104 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-10 02:00:00,003 base 2919880 139796236375808 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-11 02:00:00 EAT)" (scheduled at 2026-04-10 02:00:00+03:00)
INFO 2026-04-10 02:00:00,005 scheduler 2919880 139796236375808 Starting cleanup job
INFO 2026-04-10 02:00:00,007 scheduler 2919880 139796236375808 Cleanup job started in background
INFO 2026-04-10 02:00:00,007 base 2919880 139796236375808 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-11 02:00:00 EAT)" executed successfully
INFO 2026-04-10 02:00:00,018 tasks_sync 2919880 139796227983104 Cleaned up 0 old report logs
INFO 2026-04-10 02:00:00,018 scheduler 2919880 139796227983104 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-10 02:00:00,024 tasks_sync 2919880 139796227983104 Cleaned up 0 old reports
INFO 2026-04-10 02:00:00,025 scheduler 2919880 139796227983104 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-10 10:00:00,000 base 2919880 139796236375808 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-11 10:00:00 EAT)" (scheduled at 2026-04-10 10:00:00+03:00)
INFO 2026-04-10 10:00:00,001 scheduler 2919880 139796236375808 Starting warranty expiry check job
INFO 2026-04-10 10:00:00,003 scheduler 2919880 139796236375808 Warranty expiry check job started in background
INFO 2026-04-10 10:00:00,003 base 2919880 139796236375808 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-11 10:00:00 EAT)" executed successfully
INFO 2026-04-10 10:00:00,006 tasks_sync 2919880 139796227983104 Checking warranty expiry for 2 businesses
INFO 2026-04-10 10:00:00,022 tasks_sync 2919880 139796227983104 Successfully generated report 141 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-10 10:00:00,042 tasks_sync 2919880 139796227983104 Successfully generated report 142 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-10 10:00:00,042 scheduler 2919880 139796227983104 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-11 02:00:00,001 base 2919880 139796236375808 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-12 02:00:00 EAT)" (scheduled at 2026-04-11 02:00:00+03:00)
INFO 2026-04-11 02:00:00,002 scheduler 2919880 139796236375808 Starting cleanup job
INFO 2026-04-11 02:00:00,003 scheduler 2919880 139796236375808 Cleanup job started in background
INFO 2026-04-11 02:00:00,004 base 2919880 139796236375808 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-12 02:00:00 EAT)" executed successfully
INFO 2026-04-11 02:00:00,012 tasks_sync 2919880 139796227983104 Cleaned up 0 old report logs
INFO 2026-04-11 02:00:00,012 scheduler 2919880 139796227983104 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-11 02:00:00,018 tasks_sync 2919880 139796227983104 Cleaned up 0 old reports
INFO 2026-04-11 02:00:00,018 scheduler 2919880 139796227983104 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-11 10:00:00,003 base 2919880 139796236375808 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-12 10:00:00 EAT)" (scheduled at 2026-04-11 10:00:00+03:00)
INFO 2026-04-11 10:00:00,005 scheduler 2919880 139796236375808 Starting warranty expiry check job
INFO 2026-04-11 10:00:00,007 scheduler 2919880 139796236375808 Warranty expiry check job started in background
INFO 2026-04-11 10:00:00,007 base 2919880 139796236375808 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-12 10:00:00 EAT)" executed successfully
INFO 2026-04-11 10:00:00,016 tasks_sync 2919880 139796227983104 Checking warranty expiry for 2 businesses
INFO 2026-04-11 10:00:00,052 tasks_sync 2919880 139796227983104 Successfully generated report 143 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-11 10:00:00,089 tasks_sync 2919880 139796227983104 Successfully generated report 144 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-11 10:00:00,090 scheduler 2919880 139796227983104 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
nohup: failed to run command 'python': No such file or directory
nohup: failed to run command 'python': No such file or directory
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/rest_framework/fields.py:992: UserWarning: min_value should be a Decimal instance.
  warnings.warn("min_value should be a Decimal instance.")
INFO 2026-04-11 17:40:04,292 base 1440721 140311255467840 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-04-11 17:40:04,292 scheduler 1440721 140311255467840 Scheduled: Weekly reports - Mondays at 8:00 AM
INFO 2026-04-11 17:40:04,292 base 1440721 140311255467840 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-04-11 17:40:04,292 scheduler 1440721 140311255467840 Scheduled: Monthly reports - 1st of month at 6:00 AM
INFO 2026-04-11 17:40:04,292 base 1440721 140311255467840 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-04-11 17:40:04,292 scheduler 1440721 140311255467840 Scheduled: Low stock check - Mondays at 9:00 AM
INFO 2026-04-11 17:40:04,293 base 1440721 140311255467840 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-04-11 17:40:04,293 scheduler 1440721 140311255467840 Scheduled: Warranty expiry check - Daily at 10:00 AM
INFO 2026-04-11 17:40:04,293 base 1440721 140311255467840 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-04-11 17:40:04,293 scheduler 1440721 140311255467840 Scheduled: Cleanup old reports - Daily at 2:00 AM
INFO 2026-04-11 17:40:04,293 base 1440721 140311255467840 Added job "Send Weekly Reports" to job store "default"
INFO 2026-04-11 17:40:04,293 base 1440721 140311255467840 Added job "Send Monthly Reports" to job store "default"
INFO 2026-04-11 17:40:04,294 base 1440721 140311255467840 Added job "Check Low Stock" to job store "default"
INFO 2026-04-11 17:40:04,294 base 1440721 140311255467840 Added job "Check Warranty Expiry" to job store "default"
INFO 2026-04-11 17:40:04,294 base 1440721 140311255467840 Added job "Cleanup Old Reports" to job store "default"
INFO 2026-04-11 17:40:04,294 base 1440721 140311255467840 Scheduler started
INFO 2026-04-11 17:40:04,294 scheduler 1440721 140311255467840 Report Scheduler started successfully!
INFO 2026-04-11 17:40:04,294 scheduler 1440721 140311255467840 
Next scheduled runs:
INFO 2026-04-11 17:40:04,294 scheduler 1440721 140311255467840   - Cleanup Old Reports: 2026-04-12 02:00:00 EAT
INFO 2026-04-11 17:40:04,294 scheduler 1440721 140311255467840   - Check Warranty Expiry: 2026-04-12 10:00:00 EAT
INFO 2026-04-11 17:40:04,294 scheduler 1440721 140311255467840   - Send Weekly Reports: 2026-04-13 08:00:00 EAT
INFO 2026-04-11 17:40:04,294 scheduler 1440721 140311255467840   - Check Low Stock: 2026-04-13 09:00:00 EAT
INFO 2026-04-11 17:40:04,294 scheduler 1440721 140311255467840   - Send Monthly Reports: 2026-05-01 06:00:00 EAT
INFO 2026-04-12 02:00:00,002 base 1440721 140310541760256 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-12 02:00:00 EAT)" (scheduled at 2026-04-12 02:00:00+03:00)
INFO 2026-04-12 02:00:00,005 scheduler 1440721 140310541760256 Starting cleanup job
INFO 2026-04-12 02:00:00,008 scheduler 1440721 140310541760256 Cleanup job started in background
INFO 2026-04-12 02:00:00,008 base 1440721 140310541760256 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-13 02:00:00 EAT)" executed successfully
INFO 2026-04-12 02:00:00,017 tasks_sync 1440721 140310533367552 Cleaned up 0 old report logs
INFO 2026-04-12 02:00:00,017 scheduler 1440721 140310533367552 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-12 02:00:00,022 tasks_sync 1440721 140310533367552 Cleaned up 0 old reports
INFO 2026-04-12 02:00:00,022 scheduler 1440721 140310533367552 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-12 10:00:00,002 base 1440721 140310541760256 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-13 10:00:00 EAT)" (scheduled at 2026-04-12 10:00:00+03:00)
INFO 2026-04-12 10:00:00,003 scheduler 1440721 140310541760256 Starting warranty expiry check job
INFO 2026-04-12 10:00:00,005 scheduler 1440721 140310541760256 Warranty expiry check job started in background
INFO 2026-04-12 10:00:00,005 base 1440721 140310541760256 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-13 10:00:00 EAT)" executed successfully
INFO 2026-04-12 10:00:00,011 tasks_sync 1440721 140310533367552 Checking warranty expiry for 2 businesses
INFO 2026-04-12 10:00:00,047 tasks_sync 1440721 140310533367552 Successfully generated report 145 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-12 10:00:00,088 tasks_sync 1440721 140310533367552 Successfully generated report 146 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-12 10:00:00,088 scheduler 1440721 140310533367552 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-13 02:00:00,000 base 1440721 140310541760256 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-14 02:00:00 EAT)" (scheduled at 2026-04-13 02:00:00+03:00)
INFO 2026-04-13 02:00:00,002 scheduler 1440721 140310541760256 Starting cleanup job
INFO 2026-04-13 02:00:00,003 scheduler 1440721 140310541760256 Cleanup job started in background
INFO 2026-04-13 02:00:00,003 base 1440721 140310541760256 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-14 02:00:00 EAT)" executed successfully
INFO 2026-04-13 02:00:00,009 tasks_sync 1440721 140310533367552 Cleaned up 0 old report logs
INFO 2026-04-13 02:00:00,009 scheduler 1440721 140310533367552 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-13 02:00:00,015 tasks_sync 1440721 140310533367552 Cleaned up 0 old reports
INFO 2026-04-13 02:00:00,015 scheduler 1440721 140310533367552 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-13 08:00:00,001 base 1440721 140310541760256 Running job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-04-20 08:00:00 EAT)" (scheduled at 2026-04-13 08:00:00+03:00)
INFO 2026-04-13 08:00:00,002 scheduler 1440721 140310541760256 Starting weekly reports job
INFO 2026-04-13 08:00:00,003 tasks_sync 1440721 140310533367552 Starting weekly report sending task
INFO 2026-04-13 08:00:00,003 scheduler 1440721 140310541760256 Weekly reports job started in background
INFO 2026-04-13 08:00:00,004 base 1440721 140310541760256 Job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-04-20 08:00:00 EAT)" executed successfully
INFO 2026-04-13 08:00:00,015 services 1440721 140310533367552 Report date range: 2026-04-06 to 2026-04-13
INFO 2026-04-13 08:00:00,016 services 1440721 140310533367552 Current date: 2026-04-13
INFO 2026-04-13 08:00:00,757 email_report_service 1440721 140310533367552 Weekly report sent to 1 recipient(s) for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-13 08:00:00,763 tasks_sync 1440721 140310533367552 Successfully sent weekly report for OneTech Computers
INFO 2026-04-13 08:00:00,764 tasks_sync 1440721 140310533367552 Weekly report task completed. Sent: 1, Failed: 0
INFO 2026-04-13 08:00:00,764 scheduler 1440721 140310533367552 Weekly reports completed: {'sent': 1, 'failed': 0}
INFO 2026-04-13 09:00:00,001 base 1440721 140310541760256 Running job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-04-20 09:00:00 EAT)" (scheduled at 2026-04-13 09:00:00+03:00)
INFO 2026-04-13 09:00:00,002 scheduler 1440721 140310541760256 Starting low stock check job
INFO 2026-04-13 09:00:00,003 scheduler 1440721 140310541760256 Low stock check job started in background
INFO 2026-04-13 09:00:00,004 base 1440721 140310541760256 Job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-04-20 09:00:00 EAT)" executed successfully
INFO 2026-04-13 09:00:00,008 tasks_sync 1440721 140310533367552 Checking low stock for 2 businesses
INFO 2026-04-13 09:00:00,019 tasks_sync 1440721 140310533367552 Successfully generated report 147 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-13 09:00:01,572 tasks_sync 1440721 140310533367552 Successfully generated report 148 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-13 09:00:01,581 scheduler 1440721 140310533367552 Low stock check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-13 10:00:00,001 base 1440721 140310541760256 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-14 10:00:00 EAT)" (scheduled at 2026-04-13 10:00:00+03:00)
INFO 2026-04-13 10:00:00,002 scheduler 1440721 140310541760256 Starting warranty expiry check job
INFO 2026-04-13 10:00:00,004 scheduler 1440721 140310541760256 Warranty expiry check job started in background
INFO 2026-04-13 10:00:00,004 base 1440721 140310541760256 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-14 10:00:00 EAT)" executed successfully
INFO 2026-04-13 10:00:00,007 tasks_sync 1440721 140310533367552 Checking warranty expiry for 2 businesses
INFO 2026-04-13 10:00:00,028 tasks_sync 1440721 140310533367552 Successfully generated report 149 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-13 10:00:00,055 tasks_sync 1440721 140310533367552 Successfully generated report 150 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-13 10:00:00,055 scheduler 1440721 140310533367552 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-14 02:00:00,006 base 1440721 140310541760256 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-15 02:00:00 EAT)" (scheduled at 2026-04-14 02:00:00+03:00)
INFO 2026-04-14 02:00:00,007 scheduler 1440721 140310541760256 Starting cleanup job
INFO 2026-04-14 02:00:00,009 scheduler 1440721 140310541760256 Cleanup job started in background
INFO 2026-04-14 02:00:00,009 base 1440721 140310541760256 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-15 02:00:00 EAT)" executed successfully
INFO 2026-04-14 02:00:00,018 tasks_sync 1440721 140310533367552 Cleaned up 0 old report logs
INFO 2026-04-14 02:00:00,018 scheduler 1440721 140310533367552 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-14 02:00:00,026 tasks_sync 1440721 140310533367552 Cleaned up 0 old reports
INFO 2026-04-14 02:00:00,026 scheduler 1440721 140310533367552 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-14 10:00:00,000 base 1440721 140310541760256 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-15 10:00:00 EAT)" (scheduled at 2026-04-14 10:00:00+03:00)
INFO 2026-04-14 10:00:00,001 scheduler 1440721 140310541760256 Starting warranty expiry check job
INFO 2026-04-14 10:00:00,003 scheduler 1440721 140310541760256 Warranty expiry check job started in background
INFO 2026-04-14 10:00:00,003 base 1440721 140310541760256 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-15 10:00:00 EAT)" executed successfully
INFO 2026-04-14 10:00:00,006 tasks_sync 1440721 140310533367552 Checking warranty expiry for 2 businesses
INFO 2026-04-14 10:00:00,026 tasks_sync 1440721 140310533367552 Successfully generated report 151 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-14 10:00:00,044 tasks_sync 1440721 140310533367552 Successfully generated report 152 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-14 10:00:00,044 scheduler 1440721 140310533367552 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-15 02:00:00,002 base 1440721 140310541760256 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-16 02:00:00 EAT)" (scheduled at 2026-04-15 02:00:00+03:00)
INFO 2026-04-15 02:00:00,004 scheduler 1440721 140310541760256 Starting cleanup job
INFO 2026-04-15 02:00:00,005 scheduler 1440721 140310541760256 Cleanup job started in background
INFO 2026-04-15 02:00:00,005 base 1440721 140310541760256 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-16 02:00:00 EAT)" executed successfully
INFO 2026-04-15 02:00:00,015 tasks_sync 1440721 140310533367552 Cleaned up 0 old report logs
INFO 2026-04-15 02:00:00,015 scheduler 1440721 140310533367552 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-15 02:00:00,020 tasks_sync 1440721 140310533367552 Cleaned up 0 old reports
INFO 2026-04-15 02:00:00,020 scheduler 1440721 140310533367552 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-15 10:00:00,001 base 1440721 140310541760256 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-16 10:00:00 EAT)" (scheduled at 2026-04-15 10:00:00+03:00)
INFO 2026-04-15 10:00:00,003 scheduler 1440721 140310541760256 Starting warranty expiry check job
INFO 2026-04-15 10:00:00,004 scheduler 1440721 140310541760256 Warranty expiry check job started in background
INFO 2026-04-15 10:00:00,004 base 1440721 140310541760256 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-16 10:00:00 EAT)" executed successfully
INFO 2026-04-15 10:00:00,012 tasks_sync 1440721 140310533367552 Checking warranty expiry for 2 businesses
INFO 2026-04-15 10:00:00,041 tasks_sync 1440721 140310533367552 Successfully generated report 153 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-15 10:00:00,077 tasks_sync 1440721 140310533367552 Successfully generated report 154 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-15 10:00:00,078 scheduler 1440721 140310533367552 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-16 02:00:00,000 base 1440721 140310541760256 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-17 02:00:00 EAT)" (scheduled at 2026-04-16 02:00:00+03:00)
INFO 2026-04-16 02:00:00,002 scheduler 1440721 140310541760256 Starting cleanup job
INFO 2026-04-16 02:00:00,003 scheduler 1440721 140310541760256 Cleanup job started in background
INFO 2026-04-16 02:00:00,004 base 1440721 140310541760256 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-17 02:00:00 EAT)" executed successfully
INFO 2026-04-16 02:00:00,010 tasks_sync 1440721 140310533367552 Cleaned up 0 old report logs
INFO 2026-04-16 02:00:00,010 scheduler 1440721 140310533367552 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-16 02:00:00,015 tasks_sync 1440721 140310533367552 Cleaned up 0 old reports
INFO 2026-04-16 02:00:00,015 scheduler 1440721 140310533367552 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-16 10:00:00,001 base 1440721 140310541760256 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-17 10:00:00 EAT)" (scheduled at 2026-04-16 10:00:00+03:00)
INFO 2026-04-16 10:00:00,002 scheduler 1440721 140310541760256 Starting warranty expiry check job
INFO 2026-04-16 10:00:00,004 scheduler 1440721 140310541760256 Warranty expiry check job started in background
INFO 2026-04-16 10:00:00,004 base 1440721 140310541760256 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-17 10:00:00 EAT)" executed successfully
INFO 2026-04-16 10:00:00,007 tasks_sync 1440721 140310533367552 Checking warranty expiry for 2 businesses
INFO 2026-04-16 10:00:00,032 tasks_sync 1440721 140310533367552 Successfully generated report 155 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-16 10:00:00,061 tasks_sync 1440721 140310533367552 Successfully generated report 156 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-16 10:00:00,061 scheduler 1440721 140310533367552 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-17 02:00:00,003 base 1440721 140310541760256 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-18 02:00:00 EAT)" (scheduled at 2026-04-17 02:00:00+03:00)
INFO 2026-04-17 02:00:00,004 scheduler 1440721 140310541760256 Starting cleanup job
INFO 2026-04-17 02:00:00,013 scheduler 1440721 140310541760256 Cleanup job started in background
INFO 2026-04-17 02:00:00,014 base 1440721 140310541760256 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-18 02:00:00 EAT)" executed successfully
INFO 2026-04-17 02:00:00,021 tasks_sync 1440721 140310533367552 Cleaned up 0 old report logs
INFO 2026-04-17 02:00:00,022 scheduler 1440721 140310533367552 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-17 02:00:00,027 tasks_sync 1440721 140310533367552 Cleaned up 0 old reports
INFO 2026-04-17 02:00:00,028 scheduler 1440721 140310533367552 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-17 10:00:00,001 base 1440721 140310541760256 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-18 10:00:00 EAT)" (scheduled at 2026-04-17 10:00:00+03:00)
INFO 2026-04-17 10:00:00,010 scheduler 1440721 140310541760256 Starting warranty expiry check job
INFO 2026-04-17 10:00:00,015 scheduler 1440721 140310541760256 Warranty expiry check job started in background
INFO 2026-04-17 10:00:00,015 base 1440721 140310541760256 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-18 10:00:00 EAT)" executed successfully
INFO 2026-04-17 10:00:00,033 tasks_sync 1440721 140310533367552 Checking warranty expiry for 2 businesses
INFO 2026-04-17 10:00:00,053 tasks_sync 1440721 140310533367552 Successfully generated report 157 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-17 10:00:00,072 tasks_sync 1440721 140310533367552 Successfully generated report 158 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-17 10:00:00,072 scheduler 1440721 140310533367552 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-18 02:00:00,003 base 1440721 140310541760256 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-19 02:00:00 EAT)" (scheduled at 2026-04-18 02:00:00+03:00)
INFO 2026-04-18 02:00:00,004 scheduler 1440721 140310541760256 Starting cleanup job
INFO 2026-04-18 02:00:00,006 scheduler 1440721 140310541760256 Cleanup job started in background
INFO 2026-04-18 02:00:00,006 base 1440721 140310541760256 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-19 02:00:00 EAT)" executed successfully
INFO 2026-04-18 02:00:00,016 tasks_sync 1440721 140310533367552 Cleaned up 0 old report logs
INFO 2026-04-18 02:00:00,016 scheduler 1440721 140310533367552 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-18 02:00:00,021 tasks_sync 1440721 140310533367552 Cleaned up 0 old reports
INFO 2026-04-18 02:00:00,022 scheduler 1440721 140310533367552 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-18 10:00:00,001 base 1440721 140310541760256 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-19 10:00:00 EAT)" (scheduled at 2026-04-18 10:00:00+03:00)
INFO 2026-04-18 10:00:00,002 scheduler 1440721 140310541760256 Starting warranty expiry check job
INFO 2026-04-18 10:00:00,003 scheduler 1440721 140310541760256 Warranty expiry check job started in background
INFO 2026-04-18 10:00:00,003 base 1440721 140310541760256 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-19 10:00:00 EAT)" executed successfully
INFO 2026-04-18 10:00:00,007 tasks_sync 1440721 140310533367552 Checking warranty expiry for 2 businesses
INFO 2026-04-18 10:00:00,027 tasks_sync 1440721 140310533367552 Successfully generated report 159 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-18 10:00:00,047 tasks_sync 1440721 140310533367552 Successfully generated report 160 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-18 10:00:00,048 scheduler 1440721 140310533367552 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-19 02:00:00,001 base 1440721 140310541760256 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-20 02:00:00 EAT)" (scheduled at 2026-04-19 02:00:00+03:00)
INFO 2026-04-19 02:00:00,003 scheduler 1440721 140310541760256 Starting cleanup job
INFO 2026-04-19 02:00:00,004 scheduler 1440721 140310541760256 Cleanup job started in background
INFO 2026-04-19 02:00:00,004 base 1440721 140310541760256 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-20 02:00:00 EAT)" executed successfully
INFO 2026-04-19 02:00:00,012 tasks_sync 1440721 140310533367552 Cleaned up 0 old report logs
INFO 2026-04-19 02:00:00,012 scheduler 1440721 140310533367552 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-19 02:00:00,019 tasks_sync 1440721 140310533367552 Cleaned up 0 old reports
INFO 2026-04-19 02:00:00,019 scheduler 1440721 140310533367552 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-19 10:00:00,001 base 1440721 140310541760256 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-20 10:00:00 EAT)" (scheduled at 2026-04-19 10:00:00+03:00)
INFO 2026-04-19 10:00:00,003 scheduler 1440721 140310541760256 Starting warranty expiry check job
INFO 2026-04-19 10:00:00,004 scheduler 1440721 140310541760256 Warranty expiry check job started in background
INFO 2026-04-19 10:00:00,004 base 1440721 140310541760256 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-20 10:00:00 EAT)" executed successfully
INFO 2026-04-19 10:00:00,012 tasks_sync 1440721 140310533367552 Checking warranty expiry for 2 businesses
INFO 2026-04-19 10:00:00,044 tasks_sync 1440721 140310533367552 Successfully generated report 161 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-19 10:00:00,080 tasks_sync 1440721 140310533367552 Successfully generated report 162 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-19 10:00:00,080 scheduler 1440721 140310533367552 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-20 02:00:00,003 base 1440721 140310541760256 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-21 02:00:00 EAT)" (scheduled at 2026-04-20 02:00:00+03:00)
INFO 2026-04-20 02:00:00,005 scheduler 1440721 140310541760256 Starting cleanup job
INFO 2026-04-20 02:00:00,007 scheduler 1440721 140310541760256 Cleanup job started in background
INFO 2026-04-20 02:00:00,007 base 1440721 140310541760256 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-21 02:00:00 EAT)" executed successfully
INFO 2026-04-20 02:00:00,016 tasks_sync 1440721 140310533367552 Cleaned up 0 old report logs
INFO 2026-04-20 02:00:00,017 scheduler 1440721 140310533367552 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-20 02:00:00,022 tasks_sync 1440721 140310533367552 Cleaned up 0 old reports
INFO 2026-04-20 02:00:00,022 scheduler 1440721 140310533367552 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-20 08:00:00,001 base 1440721 140310541760256 Running job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-04-27 08:00:00 EAT)" (scheduled at 2026-04-20 08:00:00+03:00)
INFO 2026-04-20 08:00:00,002 scheduler 1440721 140310541760256 Starting weekly reports job
INFO 2026-04-20 08:00:00,002 tasks_sync 1440721 140310533367552 Starting weekly report sending task
INFO 2026-04-20 08:00:00,003 scheduler 1440721 140310541760256 Weekly reports job started in background
INFO 2026-04-20 08:00:00,004 base 1440721 140310541760256 Job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-04-27 08:00:00 EAT)" executed successfully
INFO 2026-04-20 08:00:00,016 services 1440721 140310533367552 Report date range: 2026-04-13 to 2026-04-20
INFO 2026-04-20 08:00:00,016 services 1440721 140310533367552 Current date: 2026-04-20
items: ChoiceField(choices=[('inventory', 'Inventory Item'), ('accessory', 'Accessory')], default='inventory')
Starting Report Scheduler...
report_data: {'metadata': {'business_name': 'OneTech Computers', 'business_logo': None, 'report_date': datetime.datetime(2026, 4, 13, 8, 0, 0, 16093), 'week_start': datetime.date(2026, 4, 6), 'week_end': datetime.date(2026, 4, 13), 'week_label': 'Apr 06 - Apr 13, 2026'}, 'credit_management': {'top_outstanding': [{'customer_name': 'alex sky rich', 'amount': 55000.0, 'due_date': datetime.date(2026, 2, 25), 'days_outstanding': 77, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'alex sky rich', 'amount': 55000.0, 'due_date': datetime.date(2026, 2, 25), 'days_outstanding': 77, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'ELIMU TAB', 'amount': 48000.0, 'due_date': datetime.date(2026, 3, 27), 'days_outstanding': 47, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'ELIMU TAB', 'amount': 48000.0, 'due_date': datetime.date(2026, 3, 27), 'days_outstanding': 47, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'kingsoft', 'amount': 57000.0, 'due_date': datetime.date(2026, 4, 30), 'days_outstanding': 13, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': False}, {'customer_name': 'kingsoft', 'amount': 57000.0, 'due_date': datetime.date(2026, 4, 30), 'days_outstanding': 13, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': False}, {'customer_name': 'OCHANDA', 'amount': 40000.0, 'due_date': datetime.date(2026, 5, 2), 'days_outstanding': 11, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': False}, {'customer_name': 'OCHANDA', 'amount': 40000.0, 'due_date': datetime.date(2026, 5, 2), 'days_outstanding': 11, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': False}, {'customer_name': 'pinchez', 'amount': 3500.0, 'due_date': datetime.date(2026, 4, 20), 'days_outstanding': 23, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': False}, {'customer_name': 'pinchez', 'amount': 3500.0, 'due_date': datetime.date(2026, 4, 20), 'days_outstanding': 23, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': False}], 'total_outstanding': 407000.0, 'total_overdue': 206000.0, 'overdue_count': 4, 'current_count': 6, 'customers_with_credit': 5, 'has_alerts': True}, 'sales_performance': {'total_sales': 283, 'total_revenue': 25985099.0, 'total_profit': 688720.94, 'avg_sale_value': 91820.137809, 'growth_percentage': 405.5761805055233, 'prev_week_revenue': 5139700.01, 'top_products': [{'name': 'Lenovo M720S PENTIUM GOLD', 'category': 'Desktop', 'units_sold': 14, 'revenue': 119650.0}, {'name': 'hp 830 G6', 'category': 'Laptop', 'units_sold': 12, 'revenue': 396000.0}, {'name': 'hp CHROMEBOOK 11G7 EE', 'category': 'Laptop', 'units_sold': 12, 'revenue': 95000.0}, {'name': 'Mix toshiba ryzen 5  8gb  256 ssd', 'category': 'Laptop', 'units_sold': 10, 'revenue': 202350.0}, {'name': 'hp 845 G8', 'category': 'Laptop', 'units_sold': 8, 'revenue': 277000.0}], 'sales_by_location': [{'location': 'Tom Mboya Street, Old Nation', 'sales_count': 178, 'revenue': 5193549.0}], 'commissions': {'total_amount': 36487.84, 'sales_count': 179}}, 'expenses': {'total_expenses': 9133895.07, 'prev_week_expenses': 2812600.03, 'change_percentage': 224.74916349908452, 'top_expenses': [{'reason': 'Purchase: hp OMEN 16 ULTRA 7', 'amount': 165000.0, 'date': datetime.date(2026, 4, 10), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp ZBOOK FIREFLY 14 G7', 'amount': 61000.0, 'date': datetime.date(2026, 4, 8), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: Macbook A1990', 'amount': 60000.0, 'date': datetime.date(2026, 4, 10), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: Macbook PRO A2141', 'amount': 60000.0, 'date': datetime.date(2026, 4, 10), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: Macbook A1990', 'amount': 60000.0, 'date': datetime.date(2026, 4, 10), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp 400 G6 I7 10TH GEN', 'amount': 58000.0, 'date': datetime.date(2026, 4, 9), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp 400 G6 I7 10TH GEN', 'amount': 58000.0, 'date': datetime.date(2026, 4, 9), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp 400 G6 I7 10TH GEN', 'amount': 58000.0, 'date': datetime.date(2026, 4, 9), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp 1040G8', 'amount': 55000.0, 'date': datetime.date(2026, 4, 9), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp 1040G8', 'amount': 55000.0, 'date': datetime.date(2026, 4, 9), 'category': 'Inventory Purchase'}], 'category_breakdown': [{'category': 'Inventory Purchase', 'amount': 9076950.07, 'count': 511}, {'category': 'Uncategorized', 'amount': 56945.0, 'count': 23}]}, 'inventory_alerts': {'low_stock_items': [{'name': 'Epson L6490', 'category': 'Printer', 'quantity': 1, 'item_count': 1, 'estimated_value': 62000.0}, {'name': 'Elimu Tab ETO5', 'category': 'Tablet', 'quantity': 1, 'item_count': 1, 'estimated_value': 8000.0}, {'name': 'Philips 24', 'category': 'Monitor', 'quantity': 1, 'item_count': 1, 'estimated_value': 2500.0}, {'name': 'hp ZBOOK 14G8', 'category': 'Laptop', 'quantity': 1, 'item_count': 1, 'estimated_value': 40000.0}, {'name': 'Samsung 24', 'category': 'Monitor', 'quantity': 1, 'item_count': 1, 'estimated_value': 8000.0}, {'name': 'Nec EA221', 'category': 'Monitor', 'quantity': 1, 'item_count': 1, 'estimated_value': 3500.0}, {'name': 'hp 650 G1', 'category': 'Laptop', 'quantity': 1, 'item_count': 1, 'estimated_value': 13000.0}, {'name': 'hp E24 G4', 'category': 'Uncategorized', 'quantity': 1, 'item_count': 1, 'estimated_value': 7500.0}, {'name': 'hp x1 yoga', 'category': 'Laptop', 'quantity': 1, 'item_count': 1, 'estimated_value': 30000.0}, {'name': 'hp 640g5', 'category': 'Laptop', 'quantity': 1, 'item_count': 1, 'estimated_value': 22000.0}], 'out_of_stock_items': [{'name': 'Unknown ', 'category': 'Uncategorized', 'item_count': 16832}, {'name': 'hp e223', 'category': 'Monitor', 'item_count': 1213}, {'name': 'hp 840G6', 'category': 'Laptop', 'item_count': 895}, {'name': 'Dell p2419h', 'category': 'Monitor', 'item_count': 756}, {'name': 'Dahua 256ssd', 'category': 'SSD', 'item_count': 741}, {'name': 'Epson l3250', 'category': 'Printer', 'item_count': 722}, {'name': 'Dell 19', 'category': 'Monitor', 'item_count': 656}, {'name': 'Mercury 850VA', 'category': 'UPS', 'item_count': 644}, {'name': 'hp e243', 'category': 'Monitor', 'item_count': 624}, {'name': 'hp 845G7', 'category': 'Laptop', 'item_count': 570}], 'low_stock_count': 10, 'out_of_stock_count': 10, 'low_stock_value': 196500.0, 'has_critical_alerts': True}}
INFO 2026-04-20 08:00:01,516 email_report_service 1440721 140310533367552 Weekly report sent to 1 recipient(s) for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-20 08:00:01,545 tasks_sync 1440721 140310533367552 Successfully sent weekly report for OneTech Computers
INFO 2026-04-20 08:00:01,545 tasks_sync 1440721 140310533367552 Weekly report task completed. Sent: 1, Failed: 0
INFO 2026-04-20 08:00:01,545 scheduler 1440721 140310533367552 Weekly reports completed: {'sent': 1, 'failed': 0}
INFO 2026-04-20 09:00:00,001 base 1440721 140310541760256 Running job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-04-27 09:00:00 EAT)" (scheduled at 2026-04-20 09:00:00+03:00)
INFO 2026-04-20 09:00:00,002 scheduler 1440721 140310541760256 Starting low stock check job
INFO 2026-04-20 09:00:00,003 scheduler 1440721 140310541760256 Low stock check job started in background
INFO 2026-04-20 09:00:00,003 base 1440721 140310541760256 Job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-04-27 09:00:00 EAT)" executed successfully
INFO 2026-04-20 09:00:00,006 tasks_sync 1440721 140310533367552 Checking low stock for 2 businesses
INFO 2026-04-20 09:00:00,016 tasks_sync 1440721 140310533367552 Successfully generated report 163 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-20 09:00:01,681 tasks_sync 1440721 140310533367552 Successfully generated report 164 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-20 09:00:01,694 scheduler 1440721 140310533367552 Low stock check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-20 10:00:00,001 base 1440721 140310541760256 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-21 10:00:00 EAT)" (scheduled at 2026-04-20 10:00:00+03:00)
INFO 2026-04-20 10:00:00,002 scheduler 1440721 140310541760256 Starting warranty expiry check job
INFO 2026-04-20 10:00:00,004 scheduler 1440721 140310541760256 Warranty expiry check job started in background
INFO 2026-04-20 10:00:00,004 base 1440721 140310541760256 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-21 10:00:00 EAT)" executed successfully
INFO 2026-04-20 10:00:00,008 tasks_sync 1440721 140310533367552 Checking warranty expiry for 2 businesses
INFO 2026-04-20 10:00:00,029 tasks_sync 1440721 140310533367552 Successfully generated report 165 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-20 10:00:00,054 tasks_sync 1440721 140310533367552 Successfully generated report 166 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-20 10:00:00,054 scheduler 1440721 140310533367552 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-21 02:00:00,001 base 1440721 140310541760256 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-22 02:00:00 EAT)" (scheduled at 2026-04-21 02:00:00+03:00)
INFO 2026-04-21 02:00:00,003 scheduler 1440721 140310541760256 Starting cleanup job
INFO 2026-04-21 02:00:00,004 scheduler 1440721 140310541760256 Cleanup job started in background
INFO 2026-04-21 02:00:00,004 base 1440721 140310541760256 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-22 02:00:00 EAT)" executed successfully
INFO 2026-04-21 02:00:00,013 tasks_sync 1440721 140310533367552 Cleaned up 0 old report logs
INFO 2026-04-21 02:00:00,013 scheduler 1440721 140310533367552 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-21 02:00:00,018 tasks_sync 1440721 140310533367552 Cleaned up 0 old reports
INFO 2026-04-21 02:00:00,018 scheduler 1440721 140310533367552 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-21 10:00:00,000 base 1440721 140310541760256 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-22 10:00:00 EAT)" (scheduled at 2026-04-21 10:00:00+03:00)
INFO 2026-04-21 10:00:00,002 scheduler 1440721 140310541760256 Starting warranty expiry check job
INFO 2026-04-21 10:00:00,003 scheduler 1440721 140310541760256 Warranty expiry check job started in background
INFO 2026-04-21 10:00:00,003 base 1440721 140310541760256 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-22 10:00:00 EAT)" executed successfully
INFO 2026-04-21 10:00:00,006 tasks_sync 1440721 140310533367552 Checking warranty expiry for 2 businesses
INFO 2026-04-21 10:00:00,028 tasks_sync 1440721 140310533367552 Successfully generated report 167 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-21 10:00:00,057 tasks_sync 1440721 140310533367552 Successfully generated report 168 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-21 10:00:00,057 scheduler 1440721 140310533367552 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-22 02:00:00,001 base 1440721 140310541760256 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-23 02:00:00 EAT)" (scheduled at 2026-04-22 02:00:00+03:00)
INFO 2026-04-22 02:00:00,002 scheduler 1440721 140310541760256 Starting cleanup job
INFO 2026-04-22 02:00:00,003 scheduler 1440721 140310541760256 Cleanup job started in background
INFO 2026-04-22 02:00:00,004 base 1440721 140310541760256 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-23 02:00:00 EAT)" executed successfully
INFO 2026-04-22 02:00:00,013 tasks_sync 1440721 140310533367552 Cleaned up 0 old report logs
INFO 2026-04-22 02:00:00,013 scheduler 1440721 140310533367552 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-22 02:00:00,018 tasks_sync 1440721 140310533367552 Cleaned up 0 old reports
INFO 2026-04-22 02:00:00,019 scheduler 1440721 140310533367552 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-22 10:00:00,000 base 1440721 140310541760256 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-23 10:00:00 EAT)" (scheduled at 2026-04-22 10:00:00+03:00)
INFO 2026-04-22 10:00:00,001 scheduler 1440721 140310541760256 Starting warranty expiry check job
INFO 2026-04-22 10:00:00,003 scheduler 1440721 140310541760256 Warranty expiry check job started in background
INFO 2026-04-22 10:00:00,003 base 1440721 140310541760256 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-23 10:00:00 EAT)" executed successfully
INFO 2026-04-22 10:00:00,006 tasks_sync 1440721 140310533367552 Checking warranty expiry for 2 businesses
INFO 2026-04-22 10:00:00,021 tasks_sync 1440721 140310533367552 Successfully generated report 169 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-22 10:00:00,041 tasks_sync 1440721 140310533367552 Successfully generated report 170 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-22 10:00:00,041 scheduler 1440721 140310533367552 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-23 02:00:00,000 base 1440721 140310541760256 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-24 02:00:00 EAT)" (scheduled at 2026-04-23 02:00:00+03:00)
INFO 2026-04-23 02:00:00,002 scheduler 1440721 140310541760256 Starting cleanup job
INFO 2026-04-23 02:00:00,003 scheduler 1440721 140310541760256 Cleanup job started in background
INFO 2026-04-23 02:00:00,003 base 1440721 140310541760256 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-24 02:00:00 EAT)" executed successfully
INFO 2026-04-23 02:00:00,011 tasks_sync 1440721 140310533367552 Cleaned up 0 old report logs
INFO 2026-04-23 02:00:00,011 scheduler 1440721 140310533367552 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-23 02:00:00,016 tasks_sync 1440721 140310533367552 Cleaned up 0 old reports
INFO 2026-04-23 02:00:00,017 scheduler 1440721 140310533367552 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
nohup: failed to run command 'python': No such file or directory
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/rest_framework/fields.py:992: UserWarning: min_value should be a Decimal instance.
  warnings.warn("min_value should be a Decimal instance.")
INFO 2026-04-23 03:30:16,028 base 3867506 140020213057344 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-04-23 03:30:16,030 scheduler 3867506 140020213057344 Scheduled: Weekly reports - Mondays at 8:00 AM
INFO 2026-04-23 03:30:16,030 base 3867506 140020213057344 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-04-23 03:30:16,030 scheduler 3867506 140020213057344 Scheduled: Monthly reports - 1st of month at 6:00 AM
INFO 2026-04-23 03:30:16,031 base 3867506 140020213057344 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-04-23 03:30:16,031 scheduler 3867506 140020213057344 Scheduled: Low stock check - Mondays at 9:00 AM
INFO 2026-04-23 03:30:16,031 base 3867506 140020213057344 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-04-23 03:30:16,031 scheduler 3867506 140020213057344 Scheduled: Warranty expiry check - Daily at 10:00 AM
INFO 2026-04-23 03:30:16,031 base 3867506 140020213057344 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-04-23 03:30:16,031 scheduler 3867506 140020213057344 Scheduled: Cleanup old reports - Daily at 2:00 AM
INFO 2026-04-23 03:30:16,031 base 3867506 140020213057344 Added job "Send Weekly Reports" to job store "default"
INFO 2026-04-23 03:30:16,032 base 3867506 140020213057344 Added job "Send Monthly Reports" to job store "default"
INFO 2026-04-23 03:30:16,032 base 3867506 140020213057344 Added job "Check Low Stock" to job store "default"
INFO 2026-04-23 03:30:16,032 base 3867506 140020213057344 Added job "Check Warranty Expiry" to job store "default"
INFO 2026-04-23 03:30:16,032 base 3867506 140020213057344 Added job "Cleanup Old Reports" to job store "default"
INFO 2026-04-23 03:30:16,032 base 3867506 140020213057344 Scheduler started
INFO 2026-04-23 03:30:16,032 scheduler 3867506 140020213057344 Report Scheduler started successfully!
INFO 2026-04-23 03:30:16,032 scheduler 3867506 140020213057344 
Next scheduled runs:
INFO 2026-04-23 03:30:16,033 scheduler 3867506 140020213057344   - Check Warranty Expiry: 2026-04-23 10:00:00 EAT
INFO 2026-04-23 03:30:16,033 scheduler 3867506 140020213057344   - Cleanup Old Reports: 2026-04-24 02:00:00 EAT
INFO 2026-04-23 03:30:16,033 scheduler 3867506 140020213057344   - Send Weekly Reports: 2026-04-27 08:00:00 EAT
INFO 2026-04-23 03:30:16,033 scheduler 3867506 140020213057344   - Check Low Stock: 2026-04-27 09:00:00 EAT
INFO 2026-04-23 03:30:16,033 scheduler 3867506 140020213057344   - Send Monthly Reports: 2026-05-01 06:00:00 EAT
INFO 2026-04-23 10:00:00,001 base 3867506 140019566966528 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-23 10:00:00 EAT)" (scheduled at 2026-04-23 10:00:00+03:00)
INFO 2026-04-23 10:00:00,004 scheduler 3867506 140019566966528 Starting warranty expiry check job
INFO 2026-04-23 10:00:00,006 scheduler 3867506 140019566966528 Warranty expiry check job started in background
INFO 2026-04-23 10:00:00,006 base 3867506 140019566966528 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-24 10:00:00 EAT)" executed successfully
INFO 2026-04-23 10:00:00,010 tasks_sync 3867506 140019490617088 Checking warranty expiry for 2 businesses
INFO 2026-04-23 10:00:00,046 tasks_sync 3867506 140019490617088 Successfully generated report 171 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-23 10:00:00,082 tasks_sync 3867506 140019490617088 Successfully generated report 172 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-23 10:00:00,082 scheduler 3867506 140019490617088 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-24 02:00:00,001 base 3867506 140019566966528 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-25 02:00:00 EAT)" (scheduled at 2026-04-24 02:00:00+03:00)
INFO 2026-04-24 02:00:00,002 scheduler 3867506 140019566966528 Starting cleanup job
INFO 2026-04-24 02:00:00,004 scheduler 3867506 140019566966528 Cleanup job started in background
INFO 2026-04-24 02:00:00,004 base 3867506 140019566966528 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-25 02:00:00 EAT)" executed successfully
INFO 2026-04-24 02:00:00,012 tasks_sync 3867506 140019490617088 Cleaned up 0 old report logs
INFO 2026-04-24 02:00:00,013 scheduler 3867506 140019490617088 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-24 02:00:00,017 tasks_sync 3867506 140019490617088 Cleaned up 0 old reports
INFO 2026-04-24 02:00:00,017 scheduler 3867506 140019490617088 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-24 10:00:00,001 base 3867506 140019566966528 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-25 10:00:00 EAT)" (scheduled at 2026-04-24 10:00:00+03:00)
INFO 2026-04-24 10:00:00,002 scheduler 3867506 140019566966528 Starting warranty expiry check job
INFO 2026-04-24 10:00:00,004 scheduler 3867506 140019566966528 Warranty expiry check job started in background
INFO 2026-04-24 10:00:00,004 base 3867506 140019566966528 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-25 10:00:00 EAT)" executed successfully
INFO 2026-04-24 10:00:00,008 tasks_sync 3867506 140019490617088 Checking warranty expiry for 2 businesses
INFO 2026-04-24 10:00:00,032 tasks_sync 3867506 140019490617088 Successfully generated report 173 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-24 10:00:00,064 tasks_sync 3867506 140019490617088 Successfully generated report 174 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-24 10:00:00,065 scheduler 3867506 140019490617088 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-25 02:00:00,001 base 3867506 140019566966528 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-26 02:00:00 EAT)" (scheduled at 2026-04-25 02:00:00+03:00)
INFO 2026-04-25 02:00:00,002 scheduler 3867506 140019566966528 Starting cleanup job
INFO 2026-04-25 02:00:00,003 scheduler 3867506 140019566966528 Cleanup job started in background
INFO 2026-04-25 02:00:00,003 base 3867506 140019566966528 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-26 02:00:00 EAT)" executed successfully
INFO 2026-04-25 02:00:00,011 tasks_sync 3867506 140019490617088 Cleaned up 0 old report logs
INFO 2026-04-25 02:00:00,011 scheduler 3867506 140019490617088 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-25 02:00:00,020 tasks_sync 3867506 140019490617088 Cleaned up 0 old reports
INFO 2026-04-25 02:00:00,020 scheduler 3867506 140019490617088 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-25 10:00:00,001 base 3867506 140019566966528 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-26 10:00:00 EAT)" (scheduled at 2026-04-25 10:00:00+03:00)
INFO 2026-04-25 10:00:00,002 scheduler 3867506 140019566966528 Starting warranty expiry check job
INFO 2026-04-25 10:00:00,003 scheduler 3867506 140019566966528 Warranty expiry check job started in background
INFO 2026-04-25 10:00:00,003 base 3867506 140019566966528 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-26 10:00:00 EAT)" executed successfully
INFO 2026-04-25 10:00:00,006 tasks_sync 3867506 140019490617088 Checking warranty expiry for 2 businesses
INFO 2026-04-25 10:00:00,025 tasks_sync 3867506 140019490617088 Successfully generated report 175 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-25 10:00:00,046 tasks_sync 3867506 140019490617088 Successfully generated report 176 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-25 10:00:00,046 scheduler 3867506 140019490617088 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-26 02:00:00,001 base 3867506 140019566966528 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-27 02:00:00 EAT)" (scheduled at 2026-04-26 02:00:00+03:00)
INFO 2026-04-26 02:00:00,002 scheduler 3867506 140019566966528 Starting cleanup job
INFO 2026-04-26 02:00:00,003 scheduler 3867506 140019566966528 Cleanup job started in background
INFO 2026-04-26 02:00:00,004 base 3867506 140019566966528 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-27 02:00:00 EAT)" executed successfully
INFO 2026-04-26 02:00:00,012 tasks_sync 3867506 140019490617088 Cleaned up 0 old report logs
INFO 2026-04-26 02:00:00,012 scheduler 3867506 140019490617088 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-26 02:00:00,018 tasks_sync 3867506 140019490617088 Cleaned up 0 old reports
INFO 2026-04-26 02:00:00,018 scheduler 3867506 140019490617088 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-26 10:00:00,000 base 3867506 140019566966528 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-27 10:00:00 EAT)" (scheduled at 2026-04-26 10:00:00+03:00)
INFO 2026-04-26 10:00:00,002 scheduler 3867506 140019566966528 Starting warranty expiry check job
INFO 2026-04-26 10:00:00,003 scheduler 3867506 140019566966528 Warranty expiry check job started in background
INFO 2026-04-26 10:00:00,003 base 3867506 140019566966528 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-27 10:00:00 EAT)" executed successfully
INFO 2026-04-26 10:00:00,009 tasks_sync 3867506 140019490617088 Checking warranty expiry for 2 businesses
INFO 2026-04-26 10:00:00,040 tasks_sync 3867506 140019490617088 Successfully generated report 177 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-26 10:00:00,072 tasks_sync 3867506 140019490617088 Successfully generated report 178 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-26 10:00:00,072 scheduler 3867506 140019490617088 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-27 02:00:00,000 base 3867506 140019566966528 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-28 02:00:00 EAT)" (scheduled at 2026-04-27 02:00:00+03:00)
INFO 2026-04-27 02:00:00,002 scheduler 3867506 140019566966528 Starting cleanup job
INFO 2026-04-27 02:00:00,003 scheduler 3867506 140019566966528 Cleanup job started in background
INFO 2026-04-27 02:00:00,003 base 3867506 140019566966528 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-28 02:00:00 EAT)" executed successfully
INFO 2026-04-27 02:00:00,010 tasks_sync 3867506 140019490617088 Cleaned up 0 old report logs
INFO 2026-04-27 02:00:00,010 scheduler 3867506 140019490617088 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-27 02:00:00,015 tasks_sync 3867506 140019490617088 Cleaned up 0 old reports
INFO 2026-04-27 02:00:00,016 scheduler 3867506 140019490617088 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-27 08:00:00,001 base 3867506 140019566966528 Running job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-05-04 08:00:00 EAT)" (scheduled at 2026-04-27 08:00:00+03:00)
INFO 2026-04-27 08:00:00,002 scheduler 3867506 140019566966528 Starting weekly reports job
INFO 2026-04-27 08:00:00,002 tasks_sync 3867506 140019490617088 Starting weekly report sending task
INFO 2026-04-27 08:00:00,002 scheduler 3867506 140019566966528 Weekly reports job started in background
INFO 2026-04-27 08:00:00,004 base 3867506 140019566966528 Job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-05-04 08:00:00 EAT)" executed successfully
INFO 2026-04-27 08:00:00,015 services 3867506 140019490617088 Report date range: 2026-04-20 to 2026-04-27
INFO 2026-04-27 08:00:00,015 services 3867506 140019490617088 Current date: 2026-04-27
INFO 2026-04-27 08:00:00,885 email_report_service 3867506 140019490617088 Weekly report sent to 1 recipient(s) for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-27 08:00:00,892 tasks_sync 3867506 140019490617088 Successfully sent weekly report for OneTech Computers
INFO 2026-04-27 08:00:00,892 tasks_sync 3867506 140019490617088 Weekly report task completed. Sent: 1, Failed: 0
INFO 2026-04-27 08:00:00,892 scheduler 3867506 140019490617088 Weekly reports completed: {'sent': 1, 'failed': 0}
INFO 2026-04-27 09:00:00,001 base 3867506 140019566966528 Running job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-05-04 09:00:00 EAT)" (scheduled at 2026-04-27 09:00:00+03:00)
INFO 2026-04-27 09:00:00,002 scheduler 3867506 140019566966528 Starting low stock check job
INFO 2026-04-27 09:00:00,004 scheduler 3867506 140019566966528 Low stock check job started in background
INFO 2026-04-27 09:00:00,004 base 3867506 140019566966528 Job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-05-04 09:00:00 EAT)" executed successfully
INFO 2026-04-27 09:00:00,010 tasks_sync 3867506 140019490617088 Checking low stock for 2 businesses
INFO 2026-04-27 09:00:00,034 tasks_sync 3867506 140019490617088 Successfully generated report 179 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-27 09:00:04,403 tasks_sync 3867506 140019490617088 Successfully generated report 180 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-27 09:00:04,413 scheduler 3867506 140019490617088 Low stock check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-27 10:00:00,001 base 3867506 140019566966528 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-28 10:00:00 EAT)" (scheduled at 2026-04-27 10:00:00+03:00)
INFO 2026-04-27 10:00:00,002 scheduler 3867506 140019566966528 Starting warranty expiry check job
INFO 2026-04-27 10:00:00,004 scheduler 3867506 140019566966528 Warranty expiry check job started in background
INFO 2026-04-27 10:00:00,004 base 3867506 140019566966528 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-28 10:00:00 EAT)" executed successfully
INFO 2026-04-27 10:00:00,007 tasks_sync 3867506 140019490617088 Checking warranty expiry for 2 businesses
INFO 2026-04-27 10:00:00,030 tasks_sync 3867506 140019490617088 Successfully generated report 181 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-27 10:00:00,060 tasks_sync 3867506 140019490617088 Successfully generated report 182 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-27 10:00:00,060 scheduler 3867506 140019490617088 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-28 02:00:00,004 base 3867506 140019566966528 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-29 02:00:00 EAT)" (scheduled at 2026-04-28 02:00:00+03:00)
INFO 2026-04-28 02:00:00,005 scheduler 3867506 140019566966528 Starting cleanup job
INFO 2026-04-28 02:00:00,007 scheduler 3867506 140019566966528 Cleanup job started in background
INFO 2026-04-28 02:00:00,007 base 3867506 140019566966528 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-29 02:00:00 EAT)" executed successfully
INFO 2026-04-28 02:00:00,016 tasks_sync 3867506 140019490617088 Cleaned up 0 old report logs
INFO 2026-04-28 02:00:00,016 scheduler 3867506 140019490617088 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-28 02:00:00,021 tasks_sync 3867506 140019490617088 Cleaned up 0 old reports
INFO 2026-04-28 02:00:00,021 scheduler 3867506 140019490617088 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-28 10:00:00,000 base 3867506 140019566966528 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-29 10:00:00 EAT)" (scheduled at 2026-04-28 10:00:00+03:00)
INFO 2026-04-28 10:00:00,001 scheduler 3867506 140019566966528 Starting warranty expiry check job
INFO 2026-04-28 10:00:00,003 scheduler 3867506 140019566966528 Warranty expiry check job started in background
INFO 2026-04-28 10:00:00,003 base 3867506 140019566966528 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-29 10:00:00 EAT)" executed successfully
INFO 2026-04-28 10:00:00,006 tasks_sync 3867506 140019490617088 Checking warranty expiry for 2 businesses
INFO 2026-04-28 10:00:00,024 tasks_sync 3867506 140019490617088 Successfully generated report 183 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-28 10:00:00,048 tasks_sync 3867506 140019490617088 Successfully generated report 184 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-28 10:00:00,049 scheduler 3867506 140019490617088 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-29 02:00:00,001 base 3867506 140019566966528 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-30 02:00:00 EAT)" (scheduled at 2026-04-29 02:00:00+03:00)
INFO 2026-04-29 02:00:00,002 scheduler 3867506 140019566966528 Starting cleanup job
INFO 2026-04-29 02:00:00,003 scheduler 3867506 140019566966528 Cleanup job started in background
INFO 2026-04-29 02:00:00,003 base 3867506 140019566966528 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-04-30 02:00:00 EAT)" executed successfully
INFO 2026-04-29 02:00:00,010 tasks_sync 3867506 140019490617088 Cleaned up 0 old report logs
INFO 2026-04-29 02:00:00,010 scheduler 3867506 140019490617088 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-29 02:00:00,015 tasks_sync 3867506 140019490617088 Cleaned up 0 old reports
INFO 2026-04-29 02:00:00,015 scheduler 3867506 140019490617088 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-29 10:00:00,001 base 3867506 140019566966528 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-30 10:00:00 EAT)" (scheduled at 2026-04-29 10:00:00+03:00)
INFO 2026-04-29 10:00:00,002 scheduler 3867506 140019566966528 Starting warranty expiry check job
INFO 2026-04-29 10:00:00,004 scheduler 3867506 140019566966528 Warranty expiry check job started in background
INFO 2026-04-29 10:00:00,004 base 3867506 140019566966528 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-04-30 10:00:00 EAT)" executed successfully
INFO 2026-04-29 10:00:00,009 tasks_sync 3867506 140019490617088 Checking warranty expiry for 2 businesses
INFO 2026-04-29 10:00:00,035 tasks_sync 3867506 140019490617088 Successfully generated report 185 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-29 10:00:00,074 tasks_sync 3867506 140019490617088 Successfully generated report 186 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-29 10:00:00,074 scheduler 3867506 140019490617088 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-30 02:00:00,002 base 3867506 140019566966528 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-01 02:00:00 EAT)" (scheduled at 2026-04-30 02:00:00+03:00)
INFO 2026-04-30 02:00:00,004 scheduler 3867506 140019566966528 Starting cleanup job
INFO 2026-04-30 02:00:00,006 scheduler 3867506 140019566966528 Cleanup job started in background
INFO 2026-04-30 02:00:00,006 base 3867506 140019566966528 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-01 02:00:00 EAT)" executed successfully
INFO 2026-04-30 02:00:00,014 tasks_sync 3867506 140019490617088 Cleaned up 0 old report logs
INFO 2026-04-30 02:00:00,014 scheduler 3867506 140019490617088 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-04-30 02:00:00,022 tasks_sync 3867506 140019490617088 Cleaned up 0 old reports
INFO 2026-04-30 02:00:00,022 scheduler 3867506 140019490617088 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-04-30 10:00:00,001 base 3867506 140019566966528 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-01 10:00:00 EAT)" (scheduled at 2026-04-30 10:00:00+03:00)
INFO 2026-04-30 10:00:00,001 scheduler 3867506 140019566966528 Starting warranty expiry check job
INFO 2026-04-30 10:00:00,003 scheduler 3867506 140019566966528 Warranty expiry check job started in background
INFO 2026-04-30 10:00:00,003 base 3867506 140019566966528 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-01 10:00:00 EAT)" executed successfully
INFO 2026-04-30 10:00:00,065 tasks_sync 3867506 140019490617088 Checking warranty expiry for 2 businesses
INFO 2026-04-30 10:00:00,091 tasks_sync 3867506 140019490617088 Successfully generated report 187 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-04-30 10:00:00,128 tasks_sync 3867506 140019490617088 Successfully generated report 188 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-04-30 10:00:00,129 scheduler 3867506 140019490617088 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-04-30 16:12:30,043 base 3867506 140020213057344 Scheduler has been shut down
INFO 2026-04-30 16:12:30,084 scheduler 3867506 140020213057344 Report Scheduler stopped
items: ChoiceField(choices=[('inventory', 'Inventory Item'), ('accessory', 'Accessory')], default='inventory')
Starting Report Scheduler...
report_data: {'metadata': {'business_name': 'OneTech Computers', 'business_logo': None, 'report_date': datetime.datetime(2026, 4, 27, 8, 0, 0, 15846), 'week_start': datetime.date(2026, 4, 20), 'week_end': datetime.date(2026, 4, 27), 'week_label': 'Apr 20 - Apr 27, 2026'}, 'credit_management': {'top_outstanding': [{'customer_name': 'alex sky rich', 'amount': 55000.0, 'due_date': datetime.date(2026, 2, 25), 'days_outstanding': 91, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'alex sky rich', 'amount': 55000.0, 'due_date': datetime.date(2026, 2, 25), 'days_outstanding': 91, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'ELIMU TAB', 'amount': 48000.0, 'due_date': datetime.date(2026, 3, 27), 'days_outstanding': 61, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'ELIMU TAB', 'amount': 48000.0, 'due_date': datetime.date(2026, 3, 27), 'days_outstanding': 61, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'kingsoft', 'amount': 57000.0, 'due_date': datetime.date(2026, 4, 30), 'days_outstanding': 27, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': False}, {'customer_name': 'kingsoft', 'amount': 57000.0, 'due_date': datetime.date(2026, 4, 30), 'days_outstanding': 27, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': False}, {'customer_name': 'OCHANDA', 'amount': 40000.0, 'due_date': datetime.date(2026, 5, 2), 'days_outstanding': 25, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': False}, {'customer_name': 'OCHANDA', 'amount': 40000.0, 'due_date': datetime.date(2026, 5, 2), 'days_outstanding': 25, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': False}, {'customer_name': 'BALALA', 'amount': 22000.0, 'due_date': datetime.date(2026, 5, 15), 'days_outstanding': 12, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': False}, {'customer_name': 'BALALA', 'amount': 22000.0, 'due_date': datetime.date(2026, 5, 15), 'days_outstanding': 12, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': False}], 'total_outstanding': 486000.0, 'total_overdue': 206000.0, 'overdue_count': 4, 'current_count': 6, 'customers_with_credit': 7, 'has_alerts': True}, 'sales_performance': {'total_sales': 420, 'total_revenue': 44924250.0, 'total_profit': 1088271.97, 'avg_sale_value': 106962.5, 'growth_percentage': 438.92177791502854, 'prev_week_revenue': 8335950.01, 'top_products': [{'name': 'hp 705  G4', 'category': 'Desktop', 'units_sold': 25, 'revenue': 325000.0}, {'name': 'Dell P2314HT', 'category': 'Monitor', 'units_sold': 19, 'revenue': 103500.0}, {'name': 'Dell P2319H', 'category': 'Monitor', 'units_sold': 16, 'revenue': 122300.0}, {'name': 'hp 800 g5 i5 9th gen', 'category': 'Allinone', 'units_sold': 16, 'revenue': 765500.0}, {'name': 'hp 405 g6', 'category': 'Desktops', 'units_sold': 12, 'revenue': 339900.0}], 'sales_by_location': [{'location': 'Tom Mboya Street, Old Nation', 'sales_count': 233, 'revenue': 7398650.0}], 'commissions': {'total_amount': 51790.55, 'sales_count': 233}}, 'expenses': {'total_expenses': 5273300.01, 'prev_week_expenses': 6759750.03, 'change_percentage': -21.989718752958087, 'top_expenses': [{'reason': 'Purchase: hp OMNIBOOK FLIP 5', 'amount': 96000.0, 'date': datetime.date(2026, 4, 24), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: Lenovo IDEAPAD 5 i5 13th gen', 'amount': 78000.0, 'date': datetime.date(2026, 4, 25), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp 1040G8', 'amount': 60000.0, 'date': datetime.date(2026, 4, 21), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp 1040G8', 'amount': 60000.0, 'date': datetime.date(2026, 4, 22), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp 1030 G8', 'amount': 58000.0, 'date': datetime.date(2026, 4, 23), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp 1040G8', 'amount': 58000.0, 'date': datetime.date(2026, 4, 24), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp 1040 G8', 'amount': 55000.0, 'date': datetime.date(2026, 4, 24), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp 1040 G8', 'amount': 55000.0, 'date': datetime.date(2026, 4, 24), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp 1040 G8', 'amount': 55000.0, 'date': datetime.date(2026, 4, 25), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp 1040 G8', 'amount': 55000.0, 'date': datetime.date(2026, 4, 25), 'category': 'Inventory Purchase'}], 'category_breakdown': [{'category': 'Inventory Purchase', 'amount': 5203700.01, 'count': 312}, {'category': 'Uncategorized', 'amount': 69600.0, 'count': 29}]}, 'inventory_alerts': {'low_stock_items': [{'name': 'Unknown 11X360 G2 EE', 'category': 'Uncategorized', 'quantity': 1, 'item_count': 1, 'estimated_value': 15000.0}, {'name': 'hp 11 G2 EE', 'category': 'Monitor', 'quantity': 1, 'item_count': 1, 'estimated_value': 15000.0}, {'name': 'hp 455 G4', 'category': 'Laptop', 'quantity': 1, 'item_count': 1, 'estimated_value': 21000.0}, {'name': 'hp 745 G5', 'category': 'Laptop', 'quantity': 1, 'item_count': 1, 'estimated_value': 30000.0}, {'name': 'Dell u2410f', 'category': 'Monitor', 'quantity': 1, 'item_count': 1, 'estimated_value': 5000.0}, {'name': 'Asus H110M', 'category': 'Desktop', 'quantity': 1, 'item_count': 1, 'estimated_value': 13000.0}, {'name': 'Mix TENDA', 'category': 'ROUTER', 'quantity': 1, 'item_count': 1, 'estimated_value': 4500.0}, {'name': 'Lenovo V50T', 'category': 'Mini-Tower', 'quantity': 1, 'item_count': 1, 'estimated_value': 22000.0}, {'name': 'Dell 7410', 'category': 'LAPTOP', 'quantity': 1, 'item_count': 1, 'estimated_value': 35000.0}, {'name': 'Fujitsu CELSIUS', 'category': 'Desktop', 'quantity': 1, 'item_count': 1, 'estimated_value': 9000.0}], 'out_of_stock_items': [{'name': 'Unknown ', 'category': 'Uncategorized', 'item_count': 16832}, {'name': 'hp e223', 'category': 'Monitor', 'item_count': 1213}, {'name': 'hp 840G6', 'category': 'Laptop', 'item_count': 895}, {'name': 'Dell p2419h', 'category': 'Monitor', 'item_count': 756}, {'name': 'Dahua 256ssd', 'category': 'SSD', 'item_count': 741}, {'name': 'Epson l3250', 'category': 'Printer', 'item_count': 722}, {'name': 'Dell 19', 'category': 'Monitor', 'item_count': 656}, {'name': 'Mercury 850VA', 'category': 'UPS', 'item_count': 644}, {'name': 'hp e243', 'category': 'Monitor', 'item_count': 624}, {'name': 'hp 845G7', 'category': 'Laptop', 'item_count': 570}], 'low_stock_count': 10, 'out_of_stock_count': 10, 'low_stock_value': 169500.0, 'has_critical_alerts': True}}
Shutting down scheduler...
nohup: failed to run command 'python': No such file or directory
nohup: failed to run command 'python': No such file or directory
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/rest_framework/fields.py:992: UserWarning: min_value should be a Decimal instance.
  warnings.warn("min_value should be a Decimal instance.")
INFO 2026-04-30 20:55:04,039 base 52088 140141253736256 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-04-30 20:55:04,039 scheduler 52088 140141253736256 Scheduled: Weekly reports - Mondays at 8:00 AM
INFO 2026-04-30 20:55:04,039 base 52088 140141253736256 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-04-30 20:55:04,039 scheduler 52088 140141253736256 Scheduled: Monthly reports - 1st of month at 6:00 AM
INFO 2026-04-30 20:55:04,039 base 52088 140141253736256 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-04-30 20:55:04,039 scheduler 52088 140141253736256 Scheduled: Low stock check - Mondays at 9:00 AM
INFO 2026-04-30 20:55:04,040 base 52088 140141253736256 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-04-30 20:55:04,040 scheduler 52088 140141253736256 Scheduled: Warranty expiry check - Daily at 10:00 AM
INFO 2026-04-30 20:55:04,040 base 52088 140141253736256 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-04-30 20:55:04,040 scheduler 52088 140141253736256 Scheduled: Cleanup old reports - Daily at 2:00 AM
INFO 2026-04-30 20:55:04,040 base 52088 140141253736256 Added job "Send Weekly Reports" to job store "default"
INFO 2026-04-30 20:55:04,040 base 52088 140141253736256 Added job "Send Monthly Reports" to job store "default"
INFO 2026-04-30 20:55:04,040 base 52088 140141253736256 Added job "Check Low Stock" to job store "default"
INFO 2026-04-30 20:55:04,040 base 52088 140141253736256 Added job "Check Warranty Expiry" to job store "default"
INFO 2026-04-30 20:55:04,041 base 52088 140141253736256 Added job "Cleanup Old Reports" to job store "default"
INFO 2026-04-30 20:55:04,041 base 52088 140141253736256 Scheduler started
INFO 2026-04-30 20:55:04,041 scheduler 52088 140141253736256 Report Scheduler started successfully!
INFO 2026-04-30 20:55:04,041 scheduler 52088 140141253736256 
Next scheduled runs:
INFO 2026-04-30 20:55:04,041 scheduler 52088 140141253736256   - Cleanup Old Reports: 2026-05-01 02:00:00 EAT
INFO 2026-04-30 20:55:04,041 scheduler 52088 140141253736256   - Send Monthly Reports: 2026-05-01 06:00:00 EAT
INFO 2026-04-30 20:55:04,041 scheduler 52088 140141253736256   - Check Warranty Expiry: 2026-05-01 10:00:00 EAT
INFO 2026-04-30 20:55:04,041 scheduler 52088 140141253736256   - Send Weekly Reports: 2026-05-04 08:00:00 EAT
INFO 2026-04-30 20:55:04,041 scheduler 52088 140141253736256   - Check Low Stock: 2026-05-04 09:00:00 EAT
INFO 2026-05-01 02:00:00,000 base 52088 140140607645440 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-01 02:00:00 EAT)" (scheduled at 2026-05-01 02:00:00+03:00)
INFO 2026-05-01 02:00:00,003 scheduler 52088 140140607645440 Starting cleanup job
INFO 2026-05-01 02:00:00,004 scheduler 52088 140140607645440 Cleanup job started in background
INFO 2026-05-01 02:00:00,004 base 52088 140140607645440 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-02 02:00:00 EAT)" executed successfully
INFO 2026-05-01 02:00:00,010 tasks_sync 52088 140140599252736 Cleaned up 0 old report logs
INFO 2026-05-01 02:00:00,010 scheduler 52088 140140599252736 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-01 02:00:00,015 tasks_sync 52088 140140599252736 Cleaned up 0 old reports
INFO 2026-05-01 02:00:00,015 scheduler 52088 140140599252736 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-05-01 06:00:00,000 base 52088 140140607645440 Running job "Send Monthly Reports (trigger: cron[day='1', hour='6', minute='0'], next run at: 2026-06-01 06:00:00 EAT)" (scheduled at 2026-05-01 06:00:00+03:00)
INFO 2026-05-01 06:00:00,000 scheduler 52088 140140607645440 Starting monthly reports job
INFO 2026-05-01 06:00:00,002 scheduler 52088 140140607645440 Monthly reports job started in background
INFO 2026-05-01 06:00:00,002 base 52088 140140607645440 Job "Send Monthly Reports (trigger: cron[day='1', hour='6', minute='0'], next run at: 2026-06-01 06:00:00 EAT)" executed successfully
INFO 2026-05-01 06:00:00,008 tasks_sync 52088 140140599252736 Generating monthly reports for 2 businesses
INFO 2026-05-01 06:00:00,035 tasks_sync 52088 140140599252736 Successfully generated report 189 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-01 06:00:00,212 tasks_sync 52088 140140599252736 Successfully generated report 190 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-01 06:00:00,212 scheduler 52088 140140599252736 Monthly reports completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-01 10:00:00,000 base 52088 140140607645440 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-02 10:00:00 EAT)" (scheduled at 2026-05-01 10:00:00+03:00)
INFO 2026-05-01 10:00:00,002 scheduler 52088 140140607645440 Starting warranty expiry check job
INFO 2026-05-01 10:00:00,003 scheduler 52088 140140607645440 Warranty expiry check job started in background
INFO 2026-05-01 10:00:00,004 base 52088 140140607645440 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-02 10:00:00 EAT)" executed successfully
INFO 2026-05-01 10:00:00,007 tasks_sync 52088 140140599252736 Checking warranty expiry for 2 businesses
INFO 2026-05-01 10:00:00,030 tasks_sync 52088 140140599252736 Successfully generated report 191 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-01 10:00:00,063 tasks_sync 52088 140140599252736 Successfully generated report 192 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-01 10:00:00,064 scheduler 52088 140140599252736 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-02 02:00:00,002 base 52088 140140607645440 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-03 02:00:00 EAT)" (scheduled at 2026-05-02 02:00:00+03:00)
INFO 2026-05-02 02:00:00,004 scheduler 52088 140140607645440 Starting cleanup job
INFO 2026-05-02 02:00:00,006 scheduler 52088 140140607645440 Cleanup job started in background
INFO 2026-05-02 02:00:00,007 base 52088 140140607645440 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-03 02:00:00 EAT)" executed successfully
INFO 2026-05-02 02:00:00,017 tasks_sync 52088 140140599252736 Cleaned up 0 old report logs
INFO 2026-05-02 02:00:00,017 scheduler 52088 140140599252736 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-02 02:00:00,024 tasks_sync 52088 140140599252736 Cleaned up 0 old reports
INFO 2026-05-02 02:00:00,024 scheduler 52088 140140599252736 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-05-02 10:00:00,000 base 52088 140140607645440 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-03 10:00:00 EAT)" (scheduled at 2026-05-02 10:00:00+03:00)
INFO 2026-05-02 10:00:00,002 scheduler 52088 140140607645440 Starting warranty expiry check job
INFO 2026-05-02 10:00:00,004 scheduler 52088 140140607645440 Warranty expiry check job started in background
INFO 2026-05-02 10:00:00,004 base 52088 140140607645440 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-03 10:00:00 EAT)" executed successfully
INFO 2026-05-02 10:00:00,008 tasks_sync 52088 140140599252736 Checking warranty expiry for 2 businesses
INFO 2026-05-02 10:00:00,032 tasks_sync 52088 140140599252736 Successfully generated report 193 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-02 10:00:00,063 tasks_sync 52088 140140599252736 Successfully generated report 194 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-02 10:00:00,063 scheduler 52088 140140599252736 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-03 02:00:00,001 base 52088 140140607645440 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-04 02:00:00 EAT)" (scheduled at 2026-05-03 02:00:00+03:00)
INFO 2026-05-03 02:00:00,002 scheduler 52088 140140607645440 Starting cleanup job
INFO 2026-05-03 02:00:00,004 scheduler 52088 140140607645440 Cleanup job started in background
INFO 2026-05-03 02:00:00,004 base 52088 140140607645440 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-04 02:00:00 EAT)" executed successfully
INFO 2026-05-03 02:00:00,015 tasks_sync 52088 140140599252736 Cleaned up 2 old report logs
INFO 2026-05-03 02:00:00,015 scheduler 52088 140140599252736 Cleaned up old logs: {'deleted_count': 2}
INFO 2026-05-03 02:00:01,432 tasks_sync 52088 140140599252736 Cleaned up 2 old reports
INFO 2026-05-03 02:00:01,433 scheduler 52088 140140599252736 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-05-03 10:00:00,000 base 52088 140140607645440 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-04 10:00:00 EAT)" (scheduled at 2026-05-03 10:00:00+03:00)
INFO 2026-05-03 10:00:00,002 scheduler 52088 140140607645440 Starting warranty expiry check job
INFO 2026-05-03 10:00:00,004 scheduler 52088 140140607645440 Warranty expiry check job started in background
INFO 2026-05-03 10:00:00,004 base 52088 140140607645440 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-04 10:00:00 EAT)" executed successfully
INFO 2026-05-03 10:00:00,013 tasks_sync 52088 140140599252736 Checking warranty expiry for 2 businesses
INFO 2026-05-03 10:00:00,044 tasks_sync 52088 140140599252736 Successfully generated report 195 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-03 10:00:00,080 tasks_sync 52088 140140599252736 Successfully generated report 196 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-03 10:00:00,080 scheduler 52088 140140599252736 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-04 02:00:00,001 base 52088 140140607645440 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-05 02:00:00 EAT)" (scheduled at 2026-05-04 02:00:00+03:00)
INFO 2026-05-04 02:00:00,003 scheduler 52088 140140607645440 Starting cleanup job
INFO 2026-05-04 02:00:00,005 scheduler 52088 140140607645440 Cleanup job started in background
INFO 2026-05-04 02:00:00,005 base 52088 140140607645440 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-05 02:00:00 EAT)" executed successfully
INFO 2026-05-04 02:00:00,015 tasks_sync 52088 140140599252736 Cleaned up 0 old report logs
INFO 2026-05-04 02:00:00,015 scheduler 52088 140140599252736 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-04 02:00:00,020 tasks_sync 52088 140140599252736 Cleaned up 0 old reports
INFO 2026-05-04 02:00:00,020 scheduler 52088 140140599252736 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-05-04 08:00:00,001 base 52088 140140607645440 Running job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-05-11 08:00:00 EAT)" (scheduled at 2026-05-04 08:00:00+03:00)
INFO 2026-05-04 08:00:00,002 scheduler 52088 140140607645440 Starting weekly reports job
INFO 2026-05-04 08:00:00,002 tasks_sync 52088 140140599252736 Starting weekly report sending task
INFO 2026-05-04 08:00:00,003 scheduler 52088 140140607645440 Weekly reports job started in background
INFO 2026-05-04 08:00:00,004 base 52088 140140607645440 Job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-05-11 08:00:00 EAT)" executed successfully
INFO 2026-05-04 08:00:00,016 services 52088 140140599252736 Report date range: 2026-04-27 to 2026-05-04
INFO 2026-05-04 08:00:00,016 services 52088 140140599252736 Current date: 2026-05-04
INFO 2026-05-04 08:00:00,730 email_report_service 52088 140140599252736 Weekly report sent to 1 recipient(s) for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-04 08:00:00,737 tasks_sync 52088 140140599252736 Successfully sent weekly report for OneTech Computers
INFO 2026-05-04 08:00:00,737 tasks_sync 52088 140140599252736 Weekly report task completed. Sent: 1, Failed: 0
INFO 2026-05-04 08:00:00,737 scheduler 52088 140140599252736 Weekly reports completed: {'sent': 1, 'failed': 0}
INFO 2026-05-04 09:00:00,001 base 52088 140140607645440 Running job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-05-11 09:00:00 EAT)" (scheduled at 2026-05-04 09:00:00+03:00)
INFO 2026-05-04 09:00:00,002 scheduler 52088 140140607645440 Starting low stock check job
INFO 2026-05-04 09:00:00,004 scheduler 52088 140140607645440 Low stock check job started in background
INFO 2026-05-04 09:00:00,004 base 52088 140140607645440 Job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-05-11 09:00:00 EAT)" executed successfully
INFO 2026-05-04 09:00:00,010 tasks_sync 52088 140140599252736 Checking low stock for 2 businesses
INFO 2026-05-04 09:00:00,035 tasks_sync 52088 140140599252736 Successfully generated report 197 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-04 09:00:02,479 tasks_sync 52088 140140599252736 Successfully generated report 198 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-04 09:00:02,490 scheduler 52088 140140599252736 Low stock check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-04 10:00:00,001 base 52088 140140607645440 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-05 10:00:00 EAT)" (scheduled at 2026-05-04 10:00:00+03:00)
INFO 2026-05-04 10:00:00,002 scheduler 52088 140140607645440 Starting warranty expiry check job
INFO 2026-05-04 10:00:00,004 scheduler 52088 140140607645440 Warranty expiry check job started in background
INFO 2026-05-04 10:00:00,004 base 52088 140140607645440 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-05 10:00:00 EAT)" executed successfully
INFO 2026-05-04 10:00:00,008 tasks_sync 52088 140140599252736 Checking warranty expiry for 2 businesses
INFO 2026-05-04 10:00:00,028 tasks_sync 52088 140140599252736 Successfully generated report 199 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-04 10:00:00,060 tasks_sync 52088 140140599252736 Successfully generated report 200 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-04 10:00:00,061 scheduler 52088 140140599252736 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-04 19:39:32,133 base 52088 140141253736256 Scheduler has been shut down
INFO 2026-05-04 19:39:32,165 scheduler 52088 140141253736256 Report Scheduler stopped
items: ChoiceField(choices=[('inventory', 'Inventory Item'), ('accessory', 'Accessory')], default='inventory')
Starting Report Scheduler...
report_data: {'metadata': {'business_name': 'OneTech Computers', 'business_logo': None, 'report_date': datetime.datetime(2026, 5, 4, 8, 0, 0, 16816), 'week_start': datetime.date(2026, 4, 27), 'week_end': datetime.date(2026, 5, 4), 'week_label': 'Apr 27 - May 04, 2026'}, 'credit_management': {'top_outstanding': [{'customer_name': 'kingsoft', 'amount': 57000.0, 'due_date': datetime.date(2026, 4, 30), 'days_outstanding': 34, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'kingsoft', 'amount': 57000.0, 'due_date': datetime.date(2026, 4, 30), 'days_outstanding': 34, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'alex sky rich', 'amount': 55000.0, 'due_date': datetime.date(2026, 2, 25), 'days_outstanding': 98, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'alex sky rich', 'amount': 55000.0, 'due_date': datetime.date(2026, 2, 25), 'days_outstanding': 98, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'ELIMU TAB', 'amount': 48000.0, 'due_date': datetime.date(2026, 3, 27), 'days_outstanding': 68, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'ELIMU TAB', 'amount': 48000.0, 'due_date': datetime.date(2026, 3, 27), 'days_outstanding': 68, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'OCHANDA', 'amount': 40000.0, 'due_date': datetime.date(2026, 5, 2), 'days_outstanding': 32, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'OCHANDA', 'amount': 40000.0, 'due_date': datetime.date(2026, 5, 2), 'days_outstanding': 32, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'BALALA', 'amount': 22000.0, 'due_date': datetime.date(2026, 5, 15), 'days_outstanding': 19, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': False}, {'customer_name': 'BALALA', 'amount': 22000.0, 'due_date': datetime.date(2026, 5, 15), 'days_outstanding': 19, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': False}], 'total_outstanding': 486000.0, 'total_overdue': 400000.0, 'overdue_count': 8, 'current_count': 2, 'customers_with_credit': 7, 'has_alerts': True}, 'sales_performance': {'total_sales': 502, 'total_revenue': 46574700.07, 'total_profit': 1399721.72, 'avg_sale_value': 92778.286992, 'growth_percentage': 402.3556676223081, 'prev_week_revenue': 9271260.0, 'top_products': [{'name': 'Dell P2319H', 'category': 'Monitor', 'units_sold': 42, 'revenue': 332950.01}, {'name': 'Nec PCMKM21CZG3 I3 8TH GEN', 'category': 'Desktop', 'units_sold': 31, 'revenue': 296200.0}, {'name': 'Nec PCMKM21CZG3', 'category': 'Desktop', 'units_sold': 24, 'revenue': 243000.0}, {'name': 'Dell P2222H', 'category': 'Monitor', 'units_sold': 20, 'revenue': 149500.0}, {'name': 'Mix toshiba ryzen 5  8gb  256 ssd', 'category': 'Laptop', 'units_sold': 20, 'revenue': 404850.0}], 'sales_by_location': [{'location': 'Tom Mboya Street, Old Nation', 'sales_count': 261, 'revenue': 8075700.03}], 'commissions': {'total_amount': 57005.9, 'sales_count': 263}}, 'expenses': {'total_expenses': 9758550.31, 'prev_week_expenses': 7869100.03, 'change_percentage': 24.0110085371478, 'top_expenses': [{'reason': 'Purchase: hp HP OMNIBOOK 14 CORE 7', 'amount': 107000.0, 'date': datetime.date(2026, 4, 30), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp OMEN 16  I7 11TH GEN 32 512SSD', 'amount': 95000.0, 'date': datetime.date(2026, 4, 28), 'category': 'Inventory Purchase'}, {'reason': 'SHEE', 'amount': 80000.0, 'date': datetime.date(2026, 4, 27), 'category': 'Uncategorized'}, {'reason': 'Purchase: hp 15 i5 16GB 512SSD', 'amount': 65000.0, 'date': datetime.date(2026, 4, 27), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp 15 i5 16GB 512SSD', 'amount': 65000.0, 'date': datetime.date(2026, 4, 27), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp 15 i5 16GB 512SSD', 'amount': 65000.0, 'date': datetime.date(2026, 4, 27), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp 15 i5 16GB 512SSD', 'amount': 65000.0, 'date': datetime.date(2026, 4, 27), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp HP 15 16gb 512ssd', 'amount': 65000.0, 'date': datetime.date(2026, 4, 27), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: Macbook PRO A2141 I9  9TH GEN', 'amount': 63000.0, 'date': datetime.date(2026, 4, 28), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: Macbook PRO A2141 I9  9TH GEN', 'amount': 63000.0, 'date': datetime.date(2026, 4, 28), 'category': 'Inventory Purchase'}], 'category_breakdown': [{'category': 'Inventory Purchase', 'amount': 9549500.31, 'count': 564}, {'category': 'Uncategorized', 'amount': 209050.0, 'count': 34}]}, 'inventory_alerts': {'low_stock_items': [{'name': 'Samsung l22', 'category': 'Monitor', 'quantity': 1, 'item_count': 1, 'estimated_value': 3000.0}, {'name': 'hp 650 G4', 'category': 'LAPTOP', 'quantity': 1, 'item_count': 1, 'estimated_value': 25000.0}, {'name': 'hp HP 970', 'category': 'GAMING KEYBOARDS', 'quantity': 1, 'item_count': 1, 'estimated_value': 5500.0}, {'name': 'Unknown 11X360 G2 EE', 'category': 'Uncategorized', 'quantity': 1, 'item_count': 1, 'estimated_value': 15000.0}, {'name': 'hp 11 G2 EE', 'category': 'Monitor', 'quantity': 1, 'item_count': 1, 'estimated_value': 15000.0}, {'name': 'hp 455 G4', 'category': 'Laptop', 'quantity': 1, 'item_count': 1, 'estimated_value': 21000.0}, {'name': 'hp 745 G5', 'category': 'Laptop', 'quantity': 1, 'item_count': 1, 'estimated_value': 30000.0}, {'name': 'Asus H110M', 'category': 'Desktop', 'quantity': 1, 'item_count': 1, 'estimated_value': 13000.0}, {'name': 'Samsung B2430H', 'category': 'monitor', 'quantity': 1, 'item_count': 1, 'estimated_value': 4500.0}, {'name': 'Lenovo V50T', 'category': 'Mini-Tower', 'quantity': 1, 'item_count': 1, 'estimated_value': 22000.0}], 'out_of_stock_items': [{'name': 'Unknown ', 'category': 'Uncategorized', 'item_count': 16832}, {'name': 'hp e223', 'category': 'Monitor', 'item_count': 1213}, {'name': 'hp 840G6', 'category': 'Laptop', 'item_count': 895}, {'name': 'Dell p2419h', 'category': 'Monitor', 'item_count': 756}, {'name': 'Dahua 256ssd', 'category': 'SSD', 'item_count': 741}, {'name': 'Epson l3250', 'category': 'Printer', 'item_count': 722}, {'name': 'Dell 19', 'category': 'Monitor', 'item_count': 656}, {'name': 'Mercury 850VA', 'category': 'UPS', 'item_count': 644}, {'name': 'hp e243', 'category': 'Monitor', 'item_count': 624}, {'name': 'hp 845G7', 'category': 'Laptop', 'item_count': 570}], 'low_stock_count': 10, 'out_of_stock_count': 10, 'low_stock_value': 154000.0, 'has_critical_alerts': True}}
Shutting down scheduler...
nohup: failed to run command 'python': No such file or directory
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/rest_framework/fields.py:992: UserWarning: min_value should be a Decimal instance.
  warnings.warn("min_value should be a Decimal instance.")
INFO 2026-05-04 19:45:04,669 base 5410 140470826964800 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-04 19:45:04,669 scheduler 5410 140470826964800 Scheduled: Weekly reports - Mondays at 8:00 AM
INFO 2026-05-04 19:45:04,669 base 5410 140470826964800 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-04 19:45:04,670 scheduler 5410 140470826964800 Scheduled: Monthly reports - 1st of month at 6:00 AM
INFO 2026-05-04 19:45:04,670 base 5410 140470826964800 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-04 19:45:04,670 scheduler 5410 140470826964800 Scheduled: Low stock check - Mondays at 9:00 AM
INFO 2026-05-04 19:45:04,670 base 5410 140470826964800 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-04 19:45:04,670 scheduler 5410 140470826964800 Scheduled: Warranty expiry check - Daily at 10:00 AM
INFO 2026-05-04 19:45:04,670 base 5410 140470826964800 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-04 19:45:04,670 scheduler 5410 140470826964800 Scheduled: Cleanup old reports - Daily at 2:00 AM
INFO 2026-05-04 19:45:04,681 base 5410 140470826964800 Added job "Send Weekly Reports" to job store "default"
INFO 2026-05-04 19:45:04,681 base 5410 140470826964800 Added job "Send Monthly Reports" to job store "default"
INFO 2026-05-04 19:45:04,681 base 5410 140470826964800 Added job "Check Low Stock" to job store "default"
INFO 2026-05-04 19:45:04,681 base 5410 140470826964800 Added job "Check Warranty Expiry" to job store "default"
INFO 2026-05-04 19:45:04,682 base 5410 140470826964800 Added job "Cleanup Old Reports" to job store "default"
INFO 2026-05-04 19:45:04,682 base 5410 140470826964800 Scheduler started
INFO 2026-05-04 19:45:04,682 scheduler 5410 140470826964800 Report Scheduler started successfully!
INFO 2026-05-04 19:45:04,682 scheduler 5410 140470826964800 
Next scheduled runs:
INFO 2026-05-04 19:45:04,682 scheduler 5410 140470826964800   - Cleanup Old Reports: 2026-05-05 02:00:00 EAT
INFO 2026-05-04 19:45:04,682 scheduler 5410 140470826964800   - Check Warranty Expiry: 2026-05-05 10:00:00 EAT
INFO 2026-05-04 19:45:04,682 scheduler 5410 140470826964800   - Send Weekly Reports: 2026-05-11 08:00:00 EAT
INFO 2026-05-04 19:45:04,682 scheduler 5410 140470826964800   - Check Low Stock: 2026-05-11 09:00:00 EAT
INFO 2026-05-04 19:45:04,682 scheduler 5410 140470826964800   - Send Monthly Reports: 2026-06-01 06:00:00 EAT
INFO 2026-05-04 19:53:19,934 base 5410 140470826964800 Scheduler has been shut down
INFO 2026-05-04 19:53:19,935 scheduler 5410 140470826964800 Report Scheduler stopped
items: ChoiceField(choices=[('inventory', 'Inventory Item'), ('accessory', 'Accessory')], default='inventory')
Starting Report Scheduler...
Shutting down scheduler...
nohup: failed to run command 'python': No such file or directory
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/rest_framework/fields.py:992: UserWarning: min_value should be a Decimal instance.
  warnings.warn("min_value should be a Decimal instance.")
INFO 2026-05-04 20:00:05,661 base 5628 139680292558656 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-04 20:00:05,661 scheduler 5628 139680292558656 Scheduled: Weekly reports - Mondays at 8:00 AM
INFO 2026-05-04 20:00:05,661 base 5628 139680292558656 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-04 20:00:05,661 scheduler 5628 139680292558656 Scheduled: Monthly reports - 1st of month at 6:00 AM
INFO 2026-05-04 20:00:05,662 base 5628 139680292558656 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-04 20:00:05,662 scheduler 5628 139680292558656 Scheduled: Low stock check - Mondays at 9:00 AM
INFO 2026-05-04 20:00:05,662 base 5628 139680292558656 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-04 20:00:05,662 scheduler 5628 139680292558656 Scheduled: Warranty expiry check - Daily at 10:00 AM
INFO 2026-05-04 20:00:05,662 base 5628 139680292558656 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-04 20:00:05,662 scheduler 5628 139680292558656 Scheduled: Cleanup old reports - Daily at 2:00 AM
INFO 2026-05-04 20:00:05,663 base 5628 139680292558656 Added job "Send Weekly Reports" to job store "default"
INFO 2026-05-04 20:00:05,663 base 5628 139680292558656 Added job "Send Monthly Reports" to job store "default"
INFO 2026-05-04 20:00:05,663 base 5628 139680292558656 Added job "Check Low Stock" to job store "default"
INFO 2026-05-04 20:00:05,663 base 5628 139680292558656 Added job "Check Warranty Expiry" to job store "default"
INFO 2026-05-04 20:00:05,663 base 5628 139680292558656 Added job "Cleanup Old Reports" to job store "default"
INFO 2026-05-04 20:00:05,664 base 5628 139680292558656 Scheduler started
INFO 2026-05-04 20:00:05,664 scheduler 5628 139680292558656 Report Scheduler started successfully!
INFO 2026-05-04 20:00:05,664 scheduler 5628 139680292558656 
Next scheduled runs:
INFO 2026-05-04 20:00:05,664 scheduler 5628 139680292558656   - Cleanup Old Reports: 2026-05-05 02:00:00 EAT
INFO 2026-05-04 20:00:05,664 scheduler 5628 139680292558656   - Check Warranty Expiry: 2026-05-05 10:00:00 EAT
INFO 2026-05-04 20:00:05,664 scheduler 5628 139680292558656   - Send Weekly Reports: 2026-05-11 08:00:00 EAT
INFO 2026-05-04 20:00:05,664 scheduler 5628 139680292558656   - Check Low Stock: 2026-05-11 09:00:00 EAT
INFO 2026-05-04 20:00:05,664 scheduler 5628 139680292558656   - Send Monthly Reports: 2026-06-01 06:00:00 EAT
INFO 2026-05-05 02:00:00,002 base 5628 139679646467840 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-05 02:00:00 EAT)" (scheduled at 2026-05-05 02:00:00+03:00)
INFO 2026-05-05 02:00:00,005 scheduler 5628 139679646467840 Starting cleanup job
INFO 2026-05-05 02:00:00,007 scheduler 5628 139679646467840 Cleanup job started in background
INFO 2026-05-05 02:00:00,007 base 5628 139679646467840 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-06 02:00:00 EAT)" executed successfully
INFO 2026-05-05 02:00:00,015 tasks_sync 5628 139679638075136 Cleaned up 0 old report logs
INFO 2026-05-05 02:00:00,015 scheduler 5628 139679638075136 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-05 02:00:00,020 tasks_sync 5628 139679638075136 Cleaned up 0 old reports
INFO 2026-05-05 02:00:00,020 scheduler 5628 139679638075136 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-05-05 10:00:00,000 base 5628 139679646467840 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-06 10:00:00 EAT)" (scheduled at 2026-05-05 10:00:00+03:00)
INFO 2026-05-05 10:00:00,001 scheduler 5628 139679646467840 Starting warranty expiry check job
INFO 2026-05-05 10:00:00,003 scheduler 5628 139679646467840 Warranty expiry check job started in background
INFO 2026-05-05 10:00:00,003 base 5628 139679646467840 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-06 10:00:00 EAT)" executed successfully
INFO 2026-05-05 10:00:00,018 tasks_sync 5628 139679638075136 Checking warranty expiry for 2 businesses
INFO 2026-05-05 10:00:00,042 tasks_sync 5628 139679638075136 Successfully generated report 201 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-05 10:00:00,080 tasks_sync 5628 139679638075136 Successfully generated report 202 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-05 10:00:00,081 scheduler 5628 139679638075136 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-06 02:00:00,002 base 5628 139679646467840 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-07 02:00:00 EAT)" (scheduled at 2026-05-06 02:00:00+03:00)
INFO 2026-05-06 02:00:00,003 scheduler 5628 139679646467840 Starting cleanup job
INFO 2026-05-06 02:00:00,005 scheduler 5628 139679646467840 Cleanup job started in background
INFO 2026-05-06 02:00:00,006 base 5628 139679646467840 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-07 02:00:00 EAT)" executed successfully
INFO 2026-05-06 02:00:00,019 tasks_sync 5628 139679638075136 Cleaned up 0 old report logs
INFO 2026-05-06 02:00:00,019 scheduler 5628 139679638075136 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-06 02:00:00,025 tasks_sync 5628 139679638075136 Cleaned up 0 old reports
INFO 2026-05-06 02:00:00,026 scheduler 5628 139679638075136 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-05-06 10:00:00,001 base 5628 139679646467840 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-07 10:00:00 EAT)" (scheduled at 2026-05-06 10:00:00+03:00)
INFO 2026-05-06 10:00:00,003 scheduler 5628 139679646467840 Starting warranty expiry check job
INFO 2026-05-06 10:00:00,005 scheduler 5628 139679646467840 Warranty expiry check job started in background
INFO 2026-05-06 10:00:00,005 base 5628 139679646467840 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-07 10:00:00 EAT)" executed successfully
INFO 2026-05-06 10:00:00,010 tasks_sync 5628 139679638075136 Checking warranty expiry for 2 businesses
INFO 2026-05-06 10:00:00,044 tasks_sync 5628 139679638075136 Successfully generated report 203 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-06 10:00:00,102 tasks_sync 5628 139679638075136 Successfully generated report 204 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-06 10:00:00,102 scheduler 5628 139679638075136 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-06 10:52:21,561 base 5628 139680292558656 Scheduler has been shut down
INFO 2026-05-06 10:52:21,562 scheduler 5628 139680292558656 Report Scheduler stopped
items: ChoiceField(choices=[('inventory', 'Inventory Item'), ('accessory', 'Accessory')], default='inventory')
Starting Report Scheduler...
Shutting down scheduler...
nohup: failed to run command 'python': No such file or directory
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/rest_framework/fields.py:992: UserWarning: min_value should be a Decimal instance.
  warnings.warn("min_value should be a Decimal instance.")
INFO 2026-05-06 10:55:08,416 base 4010 140463074408256 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-06 10:55:08,418 scheduler 4010 140463074408256 Scheduled: Weekly reports - Mondays at 8:00 AM
INFO 2026-05-06 10:55:08,419 base 4010 140463074408256 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-06 10:55:08,419 scheduler 4010 140463074408256 Scheduled: Monthly reports - 1st of month at 6:00 AM
INFO 2026-05-06 10:55:08,419 base 4010 140463074408256 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-06 10:55:08,419 scheduler 4010 140463074408256 Scheduled: Low stock check - Mondays at 9:00 AM
INFO 2026-05-06 10:55:08,420 base 4010 140463074408256 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-06 10:55:08,420 scheduler 4010 140463074408256 Scheduled: Warranty expiry check - Daily at 10:00 AM
INFO 2026-05-06 10:55:08,420 base 4010 140463074408256 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-06 10:55:08,420 scheduler 4010 140463074408256 Scheduled: Cleanup old reports - Daily at 2:00 AM
INFO 2026-05-06 10:55:08,421 base 4010 140463074408256 Added job "Send Weekly Reports" to job store "default"
INFO 2026-05-06 10:55:08,421 base 4010 140463074408256 Added job "Send Monthly Reports" to job store "default"
INFO 2026-05-06 10:55:08,421 base 4010 140463074408256 Added job "Check Low Stock" to job store "default"
INFO 2026-05-06 10:55:08,421 base 4010 140463074408256 Added job "Check Warranty Expiry" to job store "default"
INFO 2026-05-06 10:55:08,421 base 4010 140463074408256 Added job "Cleanup Old Reports" to job store "default"
INFO 2026-05-06 10:55:08,421 base 4010 140463074408256 Scheduler started
INFO 2026-05-06 10:55:08,427 scheduler 4010 140463074408256 Report Scheduler started successfully!
INFO 2026-05-06 10:55:08,427 scheduler 4010 140463074408256 
Next scheduled runs:
INFO 2026-05-06 10:55:08,427 scheduler 4010 140463074408256   - Cleanup Old Reports: 2026-05-07 02:00:00 EAT
INFO 2026-05-06 10:55:08,427 scheduler 4010 140463074408256   - Check Warranty Expiry: 2026-05-07 10:00:00 EAT
INFO 2026-05-06 10:55:08,427 scheduler 4010 140463074408256   - Send Weekly Reports: 2026-05-11 08:00:00 EAT
INFO 2026-05-06 10:55:08,427 scheduler 4010 140463074408256   - Check Low Stock: 2026-05-11 09:00:00 EAT
INFO 2026-05-06 10:55:08,427 scheduler 4010 140463074408256   - Send Monthly Reports: 2026-06-01 06:00:00 EAT
INFO 2026-05-07 02:00:00,001 base 4010 140462428317440 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-07 02:00:00 EAT)" (scheduled at 2026-05-07 02:00:00+03:00)
INFO 2026-05-07 02:00:00,009 scheduler 4010 140462428317440 Starting cleanup job
INFO 2026-05-07 02:00:00,014 scheduler 4010 140462428317440 Cleanup job started in background
INFO 2026-05-07 02:00:00,014 base 4010 140462428317440 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-08 02:00:00 EAT)" executed successfully
INFO 2026-05-07 02:00:00,023 tasks_sync 4010 140462419924736 Cleaned up 0 old report logs
INFO 2026-05-07 02:00:00,024 scheduler 4010 140462419924736 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-07 02:00:00,030 tasks_sync 4010 140462419924736 Cleaned up 0 old reports
INFO 2026-05-07 02:00:00,030 scheduler 4010 140462419924736 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
INFO 2026-05-07 10:00:00,001 base 4010 140462428317440 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-08 10:00:00 EAT)" (scheduled at 2026-05-07 10:00:00+03:00)
INFO 2026-05-07 10:00:00,002 scheduler 4010 140462428317440 Starting warranty expiry check job
INFO 2026-05-07 10:00:00,004 scheduler 4010 140462428317440 Warranty expiry check job started in background
INFO 2026-05-07 10:00:00,004 base 4010 140462428317440 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-08 10:00:00 EAT)" executed successfully
INFO 2026-05-07 10:00:00,009 tasks_sync 4010 140462419924736 Checking warranty expiry for 2 businesses
INFO 2026-05-07 10:00:00,044 tasks_sync 4010 140462419924736 Successfully generated report 205 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-07 10:00:00,093 tasks_sync 4010 140462419924736 Successfully generated report 206 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-07 10:00:00,093 scheduler 4010 140462419924736 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-08 02:00:00,001 base 4010 140462428317440 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-09 02:00:00 EAT)" (scheduled at 2026-05-08 02:00:00+03:00)
INFO 2026-05-08 02:00:00,002 scheduler 4010 140462428317440 Starting cleanup job
INFO 2026-05-08 02:00:00,003 scheduler 4010 140462428317440 Cleanup job started in background
INFO 2026-05-08 02:00:00,003 base 4010 140462428317440 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-09 02:00:00 EAT)" executed successfully
INFO 2026-05-08 02:00:00,012 tasks_sync 4010 140462419924736 Cleaned up 4 old report logs
INFO 2026-05-08 02:00:00,012 scheduler 4010 140462419924736 Cleaned up old logs: {'deleted_count': 4}
INFO 2026-05-08 02:00:00,018 tasks_sync 4010 140462419924736 Cleaned up 0 old reports
INFO 2026-05-08 02:00:00,018 scheduler 4010 140462419924736 Cleaned up old reports: {'status': 'success', 'reports_deleted': 0}
nohup: failed to run command 'python': No such file or directory
nohup: failed to run command 'python': No such file or directory
nohup: failed to run command 'python': No such file or directory
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/rest_framework/fields.py:992: UserWarning: min_value should be a Decimal instance.
  warnings.warn("min_value should be a Decimal instance.")
INFO 2026-05-08 08:40:05,918 base 1240063 139651913336640 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-08 08:40:05,918 scheduler 1240063 139651913336640 Scheduled: Weekly reports - Mondays at 8:00 AM
INFO 2026-05-08 08:40:05,918 base 1240063 139651913336640 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-08 08:40:05,918 scheduler 1240063 139651913336640 Scheduled: Monthly reports - 1st of month at 6:00 AM
INFO 2026-05-08 08:40:05,918 base 1240063 139651913336640 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-08 08:40:05,918 scheduler 1240063 139651913336640 Scheduled: Low stock check - Mondays at 9:00 AM
INFO 2026-05-08 08:40:05,919 base 1240063 139651913336640 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-08 08:40:05,919 scheduler 1240063 139651913336640 Scheduled: Warranty expiry check - Daily at 10:00 AM
INFO 2026-05-08 08:40:05,919 base 1240063 139651913336640 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-08 08:40:05,919 scheduler 1240063 139651913336640 Scheduled: Cleanup old reports - Daily at 2:00 AM
INFO 2026-05-08 08:40:05,919 base 1240063 139651913336640 Added job "Send Weekly Reports" to job store "default"
INFO 2026-05-08 08:40:05,920 base 1240063 139651913336640 Added job "Send Monthly Reports" to job store "default"
INFO 2026-05-08 08:40:05,920 base 1240063 139651913336640 Added job "Check Low Stock" to job store "default"
INFO 2026-05-08 08:40:05,920 base 1240063 139651913336640 Added job "Check Warranty Expiry" to job store "default"
INFO 2026-05-08 08:40:05,920 base 1240063 139651913336640 Added job "Cleanup Old Reports" to job store "default"
INFO 2026-05-08 08:40:05,920 base 1240063 139651913336640 Scheduler started
INFO 2026-05-08 08:40:05,921 scheduler 1240063 139651913336640 Report Scheduler started successfully!
INFO 2026-05-08 08:40:05,921 scheduler 1240063 139651913336640 
Next scheduled runs:
INFO 2026-05-08 08:40:05,921 scheduler 1240063 139651913336640   - Check Warranty Expiry: 2026-05-08 10:00:00 EAT
INFO 2026-05-08 08:40:05,921 scheduler 1240063 139651913336640   - Cleanup Old Reports: 2026-05-09 02:00:00 EAT
INFO 2026-05-08 08:40:05,921 scheduler 1240063 139651913336640   - Send Weekly Reports: 2026-05-11 08:00:00 EAT
INFO 2026-05-08 08:40:05,921 scheduler 1240063 139651913336640   - Check Low Stock: 2026-05-11 09:00:00 EAT
INFO 2026-05-08 08:40:05,921 scheduler 1240063 139651913336640   - Send Monthly Reports: 2026-06-01 06:00:00 EAT
INFO 2026-05-08 10:00:00,001 base 1240063 139651197171456 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-08 10:00:00 EAT)" (scheduled at 2026-05-08 10:00:00+03:00)
INFO 2026-05-08 10:00:00,004 scheduler 1240063 139651197171456 Starting warranty expiry check job
INFO 2026-05-08 10:00:00,007 scheduler 1240063 139651197171456 Warranty expiry check job started in background
INFO 2026-05-08 10:00:00,007 base 1240063 139651197171456 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-09 10:00:00 EAT)" executed successfully
INFO 2026-05-08 10:00:00,013 tasks_sync 1240063 139651188778752 Checking warranty expiry for 2 businesses
INFO 2026-05-08 10:00:00,058 tasks_sync 1240063 139651188778752 Successfully generated report 207 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-08 10:00:00,114 tasks_sync 1240063 139651188778752 Successfully generated report 208 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-08 10:00:00,114 scheduler 1240063 139651188778752 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-09 02:00:00,001 base 1240063 139651197171456 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-10 02:00:00 EAT)" (scheduled at 2026-05-09 02:00:00+03:00)
INFO 2026-05-09 02:00:00,004 scheduler 1240063 139651197171456 Starting cleanup job
INFO 2026-05-09 02:00:00,006 scheduler 1240063 139651197171456 Cleanup job started in background
INFO 2026-05-09 02:00:00,006 base 1240063 139651197171456 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-10 02:00:00 EAT)" executed successfully
INFO 2026-05-09 02:00:00,020 tasks_sync 1240063 139651188778752 Cleaned up 17 old report logs
INFO 2026-05-09 02:00:00,020 scheduler 1240063 139651188778752 Cleaned up old logs: {'deleted_count': 17}
INFO 2026-05-09 02:00:00,040 tasks_sync 1240063 139651188778752 Cleaned up 1 old reports
INFO 2026-05-09 02:00:00,041 scheduler 1240063 139651188778752 Cleaned up old reports: {'status': 'success', 'reports_deleted': 1}
INFO 2026-05-09 10:00:00,001 base 1240063 139651197171456 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-10 10:00:00 EAT)" (scheduled at 2026-05-09 10:00:00+03:00)
INFO 2026-05-09 10:00:00,003 scheduler 1240063 139651197171456 Starting warranty expiry check job
INFO 2026-05-09 10:00:00,005 scheduler 1240063 139651197171456 Warranty expiry check job started in background
INFO 2026-05-09 10:00:00,005 base 1240063 139651197171456 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-10 10:00:00 EAT)" executed successfully
INFO 2026-05-09 10:00:00,010 tasks_sync 1240063 139651188778752 Checking warranty expiry for 2 businesses
INFO 2026-05-09 10:00:00,048 tasks_sync 1240063 139651188778752 Successfully generated report 209 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-09 10:00:00,094 tasks_sync 1240063 139651188778752 Successfully generated report 210 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-09 10:00:00,094 scheduler 1240063 139651188778752 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-09 10:40:29,071 base 1240063 139651913336640 Scheduler has been shut down
INFO 2026-05-09 10:40:29,072 scheduler 1240063 139651913336640 Report Scheduler stopped
items: ChoiceField(choices=[('inventory', 'Inventory Item'), ('accessory', 'Accessory')], default='inventory')
Starting Report Scheduler...
Shutting down scheduler...
nohup: failed to run command 'python': No such file or directory
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/rest_framework/fields.py:992: UserWarning: min_value should be a Decimal instance.
  warnings.warn("min_value should be a Decimal instance.")
INFO 2026-05-09 10:45:16,097 base 5954 139762153338688 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-09 10:45:16,098 scheduler 5954 139762153338688 Scheduled: Weekly reports - Mondays at 8:00 AM
INFO 2026-05-09 10:45:16,098 base 5954 139762153338688 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-09 10:45:16,098 scheduler 5954 139762153338688 Scheduled: Monthly reports - 1st of month at 6:00 AM
INFO 2026-05-09 10:45:16,098 base 5954 139762153338688 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-09 10:45:16,098 scheduler 5954 139762153338688 Scheduled: Low stock check - Mondays at 9:00 AM
INFO 2026-05-09 10:45:16,098 base 5954 139762153338688 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-09 10:45:16,098 scheduler 5954 139762153338688 Scheduled: Warranty expiry check - Daily at 10:00 AM
INFO 2026-05-09 10:45:16,099 base 5954 139762153338688 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-09 10:45:16,099 scheduler 5954 139762153338688 Scheduled: Cleanup old reports - Daily at 2:00 AM
INFO 2026-05-09 10:45:16,099 base 5954 139762153338688 Added job "Send Weekly Reports" to job store "default"
INFO 2026-05-09 10:45:16,099 base 5954 139762153338688 Added job "Send Monthly Reports" to job store "default"
INFO 2026-05-09 10:45:16,099 base 5954 139762153338688 Added job "Check Low Stock" to job store "default"
INFO 2026-05-09 10:45:16,099 base 5954 139762153338688 Added job "Check Warranty Expiry" to job store "default"
INFO 2026-05-09 10:45:16,099 base 5954 139762153338688 Added job "Cleanup Old Reports" to job store "default"
INFO 2026-05-09 10:45:16,099 base 5954 139762153338688 Scheduler started
INFO 2026-05-09 10:45:16,100 scheduler 5954 139762153338688 Report Scheduler started successfully!
INFO 2026-05-09 10:45:16,100 scheduler 5954 139762153338688 
Next scheduled runs:
INFO 2026-05-09 10:45:16,100 scheduler 5954 139762153338688   - Cleanup Old Reports: 2026-05-10 02:00:00 EAT
INFO 2026-05-09 10:45:16,100 scheduler 5954 139762153338688   - Check Warranty Expiry: 2026-05-10 10:00:00 EAT
INFO 2026-05-09 10:45:16,100 scheduler 5954 139762153338688   - Send Weekly Reports: 2026-05-11 08:00:00 EAT
INFO 2026-05-09 10:45:16,100 scheduler 5954 139762153338688   - Check Low Stock: 2026-05-11 09:00:00 EAT
INFO 2026-05-09 10:45:16,100 scheduler 5954 139762153338688   - Send Monthly Reports: 2026-06-01 06:00:00 EAT
INFO 2026-05-10 02:00:00,001 base 5954 139761507247872 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-10 02:00:00 EAT)" (scheduled at 2026-05-10 02:00:00+03:00)
INFO 2026-05-10 02:00:00,005 scheduler 5954 139761507247872 Starting cleanup job
INFO 2026-05-10 02:00:00,007 scheduler 5954 139761507247872 Cleanup job started in background
INFO 2026-05-10 02:00:00,007 base 5954 139761507247872 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-11 02:00:00 EAT)" executed successfully
INFO 2026-05-10 02:00:00,018 tasks_sync 5954 139761498855168 Cleaned up 10 old report logs
INFO 2026-05-10 02:00:00,018 scheduler 5954 139761498855168 Cleaned up old logs: {'deleted_count': 10}
INFO 2026-05-10 02:00:00,033 tasks_sync 5954 139761498855168 Cleaned up 1 old reports
INFO 2026-05-10 02:00:00,033 scheduler 5954 139761498855168 Cleaned up old reports: {'status': 'success', 'reports_deleted': 1}
INFO 2026-05-10 10:00:00,001 base 5954 139761507247872 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-11 10:00:00 EAT)" (scheduled at 2026-05-10 10:00:00+03:00)
INFO 2026-05-10 10:00:00,004 scheduler 5954 139761507247872 Starting warranty expiry check job
INFO 2026-05-10 10:00:00,005 scheduler 5954 139761507247872 Warranty expiry check job started in background
INFO 2026-05-10 10:00:00,006 base 5954 139761507247872 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-11 10:00:00 EAT)" executed successfully
INFO 2026-05-10 10:00:00,013 tasks_sync 5954 139761498855168 Checking warranty expiry for 2 businesses
INFO 2026-05-10 10:00:00,069 tasks_sync 5954 139761498855168 Successfully generated report 211 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-10 10:00:00,122 tasks_sync 5954 139761498855168 Successfully generated report 212 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-10 10:00:00,122 scheduler 5954 139761498855168 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-11 02:00:00,001 base 5954 139761507247872 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-12 02:00:00 EAT)" (scheduled at 2026-05-11 02:00:00+03:00)
INFO 2026-05-11 02:00:00,003 scheduler 5954 139761507247872 Starting cleanup job
INFO 2026-05-11 02:00:00,004 scheduler 5954 139761507247872 Cleanup job started in background
INFO 2026-05-11 02:00:00,004 base 5954 139761507247872 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-12 02:00:00 EAT)" executed successfully
INFO 2026-05-11 02:00:00,013 tasks_sync 5954 139761498855168 Cleaned up 2 old report logs
INFO 2026-05-11 02:00:00,013 scheduler 5954 139761498855168 Cleaned up old logs: {'deleted_count': 2}
INFO 2026-05-11 02:00:02,931 tasks_sync 5954 139761498855168 Cleaned up 2 old reports
INFO 2026-05-11 02:00:02,931 scheduler 5954 139761498855168 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-05-11 08:00:00,001 base 5954 139761507247872 Running job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-05-18 08:00:00 EAT)" (scheduled at 2026-05-11 08:00:00+03:00)
INFO 2026-05-11 08:00:00,003 scheduler 5954 139761507247872 Starting weekly reports job
INFO 2026-05-11 08:00:00,003 tasks_sync 5954 139761498855168 Starting weekly report sending task
INFO 2026-05-11 08:00:00,003 scheduler 5954 139761507247872 Weekly reports job started in background
INFO 2026-05-11 08:00:00,005 base 5954 139761507247872 Job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-05-18 08:00:00 EAT)" executed successfully
INFO 2026-05-11 08:00:00,023 services 5954 139761498855168 Report date range: 2026-05-04 to 2026-05-11
INFO 2026-05-11 08:00:00,023 services 5954 139761498855168 Current date: 2026-05-11
INFO 2026-05-11 08:00:01,330 email_report_service 5954 139761498855168 Weekly report sent to 1 recipient(s) for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-11 08:00:01,340 tasks_sync 5954 139761498855168 Successfully sent weekly report for OneTech Computers
INFO 2026-05-11 08:00:01,340 tasks_sync 5954 139761498855168 Weekly report task completed. Sent: 1, Failed: 0
INFO 2026-05-11 08:00:01,340 scheduler 5954 139761498855168 Weekly reports completed: {'sent': 1, 'failed': 0}
INFO 2026-05-11 09:00:00,001 base 5954 139761507247872 Running job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-05-18 09:00:00 EAT)" (scheduled at 2026-05-11 09:00:00+03:00)
INFO 2026-05-11 09:00:00,002 scheduler 5954 139761507247872 Starting low stock check job
INFO 2026-05-11 09:00:00,004 scheduler 5954 139761507247872 Low stock check job started in background
INFO 2026-05-11 09:00:00,004 base 5954 139761507247872 Job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-05-18 09:00:00 EAT)" executed successfully
INFO 2026-05-11 09:00:00,008 tasks_sync 5954 139761498855168 Checking low stock for 2 businesses
INFO 2026-05-11 09:00:00,027 tasks_sync 5954 139761498855168 Successfully generated report 213 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-11 09:00:04,650 tasks_sync 5954 139761498855168 Successfully generated report 214 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-11 09:00:04,659 scheduler 5954 139761498855168 Low stock check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-11 10:00:00,001 base 5954 139761507247872 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-12 10:00:00 EAT)" (scheduled at 2026-05-11 10:00:00+03:00)
INFO 2026-05-11 10:00:00,002 scheduler 5954 139761507247872 Starting warranty expiry check job
INFO 2026-05-11 10:00:00,004 scheduler 5954 139761507247872 Warranty expiry check job started in background
INFO 2026-05-11 10:00:00,004 base 5954 139761507247872 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-12 10:00:00 EAT)" executed successfully
INFO 2026-05-11 10:00:00,009 tasks_sync 5954 139761498855168 Checking warranty expiry for 2 businesses
INFO 2026-05-11 10:00:00,036 tasks_sync 5954 139761498855168 Successfully generated report 215 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-11 10:00:00,071 tasks_sync 5954 139761498855168 Successfully generated report 216 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-11 10:00:00,071 scheduler 5954 139761498855168 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-12 02:00:00,000 base 5954 139761507247872 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-13 02:00:00 EAT)" (scheduled at 2026-05-12 02:00:00+03:00)
INFO 2026-05-12 02:00:00,002 scheduler 5954 139761507247872 Starting cleanup job
INFO 2026-05-12 02:00:00,003 scheduler 5954 139761507247872 Cleanup job started in background
INFO 2026-05-12 02:00:00,003 base 5954 139761507247872 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-13 02:00:00 EAT)" executed successfully
INFO 2026-05-12 02:00:00,009 tasks_sync 5954 139761498855168 Cleaned up 0 old report logs
INFO 2026-05-12 02:00:00,009 scheduler 5954 139761498855168 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-12 02:00:00,021 tasks_sync 5954 139761498855168 Cleaned up 1 old reports
INFO 2026-05-12 02:00:00,021 scheduler 5954 139761498855168 Cleaned up old reports: {'status': 'success', 'reports_deleted': 1}
INFO 2026-05-12 10:00:00,001 base 5954 139761507247872 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-13 10:00:00 EAT)" (scheduled at 2026-05-12 10:00:00+03:00)
INFO 2026-05-12 10:00:00,002 scheduler 5954 139761507247872 Starting warranty expiry check job
INFO 2026-05-12 10:00:00,005 scheduler 5954 139761507247872 Warranty expiry check job started in background
INFO 2026-05-12 10:00:00,005 base 5954 139761507247872 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-13 10:00:00 EAT)" executed successfully
INFO 2026-05-12 10:00:00,011 tasks_sync 5954 139761498855168 Checking warranty expiry for 2 businesses
INFO 2026-05-12 10:00:00,055 tasks_sync 5954 139761498855168 Successfully generated report 217 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-12 10:00:00,104 tasks_sync 5954 139761498855168 Successfully generated report 218 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-12 10:00:00,105 scheduler 5954 139761498855168 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-13 02:00:00,001 base 5954 139761507247872 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-14 02:00:00 EAT)" (scheduled at 2026-05-13 02:00:00+03:00)
INFO 2026-05-13 02:00:00,003 scheduler 5954 139761507247872 Starting cleanup job
INFO 2026-05-13 02:00:00,004 scheduler 5954 139761507247872 Cleanup job started in background
INFO 2026-05-13 02:00:00,004 base 5954 139761507247872 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-14 02:00:00 EAT)" executed successfully
INFO 2026-05-13 02:00:00,014 tasks_sync 5954 139761498855168 Cleaned up 0 old report logs
INFO 2026-05-13 02:00:00,014 scheduler 5954 139761498855168 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-13 02:00:00,027 tasks_sync 5954 139761498855168 Cleaned up 1 old reports
INFO 2026-05-13 02:00:00,027 scheduler 5954 139761498855168 Cleaned up old reports: {'status': 'success', 'reports_deleted': 1}
INFO 2026-05-13 10:00:00,001 base 5954 139761507247872 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-14 10:00:00 EAT)" (scheduled at 2026-05-13 10:00:00+03:00)
INFO 2026-05-13 10:00:00,005 scheduler 5954 139761507247872 Starting warranty expiry check job
INFO 2026-05-13 10:00:00,008 scheduler 5954 139761507247872 Warranty expiry check job started in background
INFO 2026-05-13 10:00:00,009 base 5954 139761507247872 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-14 10:00:00 EAT)" executed successfully
INFO 2026-05-13 10:00:00,019 tasks_sync 5954 139761498855168 Checking warranty expiry for 2 businesses
INFO 2026-05-13 10:00:00,057 tasks_sync 5954 139761498855168 Successfully generated report 219 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-13 10:00:00,113 tasks_sync 5954 139761498855168 Successfully generated report 220 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-13 10:00:00,113 scheduler 5954 139761498855168 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-14 02:00:00,001 base 5954 139761507247872 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-15 02:00:00 EAT)" (scheduled at 2026-05-14 02:00:00+03:00)
INFO 2026-05-14 02:00:00,001 scheduler 5954 139761507247872 Starting cleanup job
INFO 2026-05-14 02:00:00,003 scheduler 5954 139761507247872 Cleanup job started in background
INFO 2026-05-14 02:00:00,003 base 5954 139761507247872 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-15 02:00:00 EAT)" executed successfully
INFO 2026-05-14 02:00:00,011 tasks_sync 5954 139761498855168 Cleaned up 0 old report logs
INFO 2026-05-14 02:00:00,011 scheduler 5954 139761498855168 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-14 02:00:00,027 tasks_sync 5954 139761498855168 Cleaned up 1 old reports
INFO 2026-05-14 02:00:00,027 scheduler 5954 139761498855168 Cleaned up old reports: {'status': 'success', 'reports_deleted': 1}
nohup: failed to run command 'python': No such file or directory
/home/binbytec/virtualenv/binbytesaas/3.8/lib/python3.8/site-packages/rest_framework/fields.py:992: UserWarning: min_value should be a Decimal instance.
  warnings.warn("min_value should be a Decimal instance.")
INFO 2026-05-14 05:05:14,698 base 2288875 140037311797056 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-14 05:05:14,699 scheduler 2288875 140037311797056 Scheduled: Weekly reports - Mondays at 8:00 AM
INFO 2026-05-14 05:05:14,699 base 2288875 140037311797056 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-14 05:05:14,699 scheduler 2288875 140037311797056 Scheduled: Monthly reports - 1st of month at 6:00 AM
INFO 2026-05-14 05:05:14,700 base 2288875 140037311797056 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-14 05:05:14,700 scheduler 2288875 140037311797056 Scheduled: Low stock check - Mondays at 9:00 AM
INFO 2026-05-14 05:05:14,700 base 2288875 140037311797056 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-14 05:05:14,700 scheduler 2288875 140037311797056 Scheduled: Warranty expiry check - Daily at 10:00 AM
INFO 2026-05-14 05:05:14,700 base 2288875 140037311797056 Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO 2026-05-14 05:05:14,701 scheduler 2288875 140037311797056 Scheduled: Cleanup old reports - Daily at 2:00 AM
INFO 2026-05-14 05:05:14,701 base 2288875 140037311797056 Added job "Send Weekly Reports" to job store "default"
INFO 2026-05-14 05:05:14,701 base 2288875 140037311797056 Added job "Send Monthly Reports" to job store "default"
INFO 2026-05-14 05:05:14,702 base 2288875 140037311797056 Added job "Check Low Stock" to job store "default"
INFO 2026-05-14 05:05:14,702 base 2288875 140037311797056 Added job "Check Warranty Expiry" to job store "default"
INFO 2026-05-14 05:05:14,702 base 2288875 140037311797056 Added job "Cleanup Old Reports" to job store "default"
INFO 2026-05-14 05:05:14,702 base 2288875 140037311797056 Scheduler started
INFO 2026-05-14 05:05:14,703 scheduler 2288875 140037311797056 Report Scheduler started successfully!
INFO 2026-05-14 05:05:14,703 scheduler 2288875 140037311797056 
Next scheduled runs:
INFO 2026-05-14 05:05:14,703 scheduler 2288875 140037311797056   - Check Warranty Expiry: 2026-05-14 10:00:00 EAT
INFO 2026-05-14 05:05:14,703 scheduler 2288875 140037311797056   - Cleanup Old Reports: 2026-05-15 02:00:00 EAT
INFO 2026-05-14 05:05:14,703 scheduler 2288875 140037311797056   - Send Weekly Reports: 2026-05-18 08:00:00 EAT
INFO 2026-05-14 05:05:14,703 scheduler 2288875 140037311797056   - Check Low Stock: 2026-05-18 09:00:00 EAT
INFO 2026-05-14 05:05:14,703 scheduler 2288875 140037311797056   - Send Monthly Reports: 2026-06-01 06:00:00 EAT
INFO 2026-05-14 10:00:00,001 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-14 10:00:00 EAT)" (scheduled at 2026-05-14 10:00:00+03:00)
INFO 2026-05-14 10:00:00,003 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-05-14 10:00:00,006 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-05-14 10:00:00,007 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-15 10:00:00 EAT)" executed successfully
INFO 2026-05-14 10:00:00,012 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-05-14 10:00:00,040 tasks_sync 2288875 140036657313536 Successfully generated report 221 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-14 10:00:00,067 tasks_sync 2288875 140036657313536 Successfully generated report 222 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-14 10:00:00,067 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-15 02:00:00,000 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-16 02:00:00 EAT)" (scheduled at 2026-05-15 02:00:00+03:00)
INFO 2026-05-15 02:00:00,002 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-05-15 02:00:00,003 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-05-15 02:00:00,004 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-16 02:00:00 EAT)" executed successfully
INFO 2026-05-15 02:00:00,011 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-05-15 02:00:00,011 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-15 02:00:00,027 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-05-15 02:00:00,027 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-05-15 10:00:00,001 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-16 10:00:00 EAT)" (scheduled at 2026-05-15 10:00:00+03:00)
INFO 2026-05-15 10:00:00,002 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-05-15 10:00:00,004 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-05-15 10:00:00,004 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-16 10:00:00 EAT)" executed successfully
INFO 2026-05-15 10:00:00,008 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-05-15 10:00:00,041 tasks_sync 2288875 140036657313536 Successfully generated report 223 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-15 10:00:00,074 tasks_sync 2288875 140036657313536 Successfully generated report 224 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-15 10:00:00,075 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-16 02:00:00,001 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-17 02:00:00 EAT)" (scheduled at 2026-05-16 02:00:00+03:00)
INFO 2026-05-16 02:00:00,003 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-05-16 02:00:00,005 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-05-16 02:00:00,005 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-17 02:00:00 EAT)" executed successfully
INFO 2026-05-16 02:00:00,015 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-05-16 02:00:00,015 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-16 02:00:00,030 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-05-16 02:00:00,031 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-05-16 10:00:00,060 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-17 10:00:00 EAT)" (scheduled at 2026-05-16 10:00:00+03:00)
INFO 2026-05-16 10:00:00,070 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-05-16 10:00:00,157 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-05-16 10:00:00,159 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-05-16 10:00:00,159 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-17 10:00:00 EAT)" executed successfully
INFO 2026-05-16 10:00:00,246 tasks_sync 2288875 140036657313536 Successfully generated report 225 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-16 10:00:00,344 tasks_sync 2288875 140036657313536 Successfully generated report 226 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-16 10:00:00,345 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-17 02:00:00,001 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-18 02:00:00 EAT)" (scheduled at 2026-05-17 02:00:00+03:00)
INFO 2026-05-17 02:00:00,004 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-05-17 02:00:00,005 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-05-17 02:00:00,005 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-18 02:00:00 EAT)" executed successfully
INFO 2026-05-17 02:00:00,013 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-05-17 02:00:00,014 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-17 02:00:00,028 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-05-17 02:00:00,029 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-05-17 10:00:00,001 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-18 10:00:00 EAT)" (scheduled at 2026-05-17 10:00:00+03:00)
INFO 2026-05-17 10:00:00,004 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-05-17 10:00:00,006 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-05-17 10:00:00,006 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-18 10:00:00 EAT)" executed successfully
INFO 2026-05-17 10:00:00,015 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-05-17 10:00:00,054 tasks_sync 2288875 140036657313536 Successfully generated report 227 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-17 10:00:00,097 tasks_sync 2288875 140036657313536 Successfully generated report 228 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-17 10:00:00,097 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-18 02:00:00,001 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-19 02:00:00 EAT)" (scheduled at 2026-05-18 02:00:00+03:00)
INFO 2026-05-18 02:00:00,003 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-05-18 02:00:00,004 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-05-18 02:00:00,004 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-19 02:00:00 EAT)" executed successfully
INFO 2026-05-18 02:00:00,013 tasks_sync 2288875 140036657313536 Cleaned up 1 old report logs
INFO 2026-05-18 02:00:00,013 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 1}
INFO 2026-05-18 02:00:02,908 tasks_sync 2288875 140036657313536 Cleaned up 4 old reports
INFO 2026-05-18 02:00:02,908 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 4}
INFO 2026-05-18 08:00:00,001 base 2288875 140036665706240 Running job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-05-25 08:00:00 EAT)" (scheduled at 2026-05-18 08:00:00+03:00)
INFO 2026-05-18 08:00:00,002 scheduler 2288875 140036665706240 Starting weekly reports job
INFO 2026-05-18 08:00:00,002 tasks_sync 2288875 140036657313536 Starting weekly report sending task
INFO 2026-05-18 08:00:00,002 scheduler 2288875 140036665706240 Weekly reports job started in background
INFO 2026-05-18 08:00:00,004 base 2288875 140036665706240 Job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-05-25 08:00:00 EAT)" executed successfully
INFO 2026-05-18 08:00:00,019 services 2288875 140036657313536 Report date range: 2026-05-11 to 2026-05-18
INFO 2026-05-18 08:00:00,019 services 2288875 140036657313536 Current date: 2026-05-18
INFO 2026-05-18 08:00:03,960 email_report_service 2288875 140036657313536 Weekly report sent to 1 recipient(s) for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-18 08:00:03,967 tasks_sync 2288875 140036657313536 Successfully sent weekly report for OneTech Computers
INFO 2026-05-18 08:00:03,968 tasks_sync 2288875 140036657313536 Weekly report task completed. Sent: 1, Failed: 0
INFO 2026-05-18 08:00:03,968 scheduler 2288875 140036657313536 Weekly reports completed: {'sent': 1, 'failed': 0}
INFO 2026-05-18 09:00:00,001 base 2288875 140036665706240 Running job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-05-25 09:00:00 EAT)" (scheduled at 2026-05-18 09:00:00+03:00)
INFO 2026-05-18 09:00:00,002 scheduler 2288875 140036665706240 Starting low stock check job
INFO 2026-05-18 09:00:00,003 scheduler 2288875 140036665706240 Low stock check job started in background
INFO 2026-05-18 09:00:00,004 base 2288875 140036665706240 Job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-05-25 09:00:00 EAT)" executed successfully
INFO 2026-05-18 09:00:00,009 tasks_sync 2288875 140036657313536 Checking low stock for 2 businesses
INFO 2026-05-18 09:00:00,029 tasks_sync 2288875 140036657313536 Successfully generated report 229 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-18 09:00:04,751 tasks_sync 2288875 140036657313536 Successfully generated report 230 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-18 09:00:04,762 scheduler 2288875 140036657313536 Low stock check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-18 10:00:00,001 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-19 10:00:00 EAT)" (scheduled at 2026-05-18 10:00:00+03:00)
INFO 2026-05-18 10:00:00,002 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-05-18 10:00:00,005 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-05-18 10:00:00,005 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-19 10:00:00 EAT)" executed successfully
INFO 2026-05-18 10:00:00,010 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-05-18 10:00:00,042 tasks_sync 2288875 140036657313536 Successfully generated report 231 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-18 10:00:00,082 tasks_sync 2288875 140036657313536 Successfully generated report 232 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-18 10:00:00,082 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-19 02:00:00,001 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-20 02:00:00 EAT)" (scheduled at 2026-05-19 02:00:00+03:00)
INFO 2026-05-19 02:00:00,002 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-05-19 02:00:00,004 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-05-19 02:00:00,004 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-20 02:00:00 EAT)" executed successfully
INFO 2026-05-19 02:00:00,012 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-05-19 02:00:00,012 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-19 02:00:00,026 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-05-19 02:00:00,026 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-05-19 10:00:00,000 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-20 10:00:00 EAT)" (scheduled at 2026-05-19 10:00:00+03:00)
INFO 2026-05-19 10:00:00,002 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-05-19 10:00:00,004 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-05-19 10:00:00,004 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-20 10:00:00 EAT)" executed successfully
INFO 2026-05-19 10:00:00,059 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-05-19 10:00:00,103 tasks_sync 2288875 140036657313536 Successfully generated report 233 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-19 10:00:00,149 tasks_sync 2288875 140036657313536 Successfully generated report 234 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-19 10:00:00,149 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-20 02:00:00,001 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-21 02:00:00 EAT)" (scheduled at 2026-05-20 02:00:00+03:00)
INFO 2026-05-20 02:00:00,002 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-05-20 02:00:00,004 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-05-20 02:00:00,004 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-21 02:00:00 EAT)" executed successfully
INFO 2026-05-20 02:00:00,013 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-05-20 02:00:00,013 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-20 02:00:00,024 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-05-20 02:00:00,024 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-05-20 10:00:00,001 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-21 10:00:00 EAT)" (scheduled at 2026-05-20 10:00:00+03:00)
INFO 2026-05-20 10:00:00,002 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-05-20 10:00:00,004 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-05-20 10:00:00,004 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-21 10:00:00 EAT)" executed successfully
INFO 2026-05-20 10:00:00,008 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-05-20 10:00:00,044 tasks_sync 2288875 140036657313536 Successfully generated report 235 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-20 10:00:00,079 tasks_sync 2288875 140036657313536 Successfully generated report 236 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-20 10:00:00,080 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-21 02:00:00,001 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-22 02:00:00 EAT)" (scheduled at 2026-05-21 02:00:00+03:00)
INFO 2026-05-21 02:00:00,002 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-05-21 02:00:00,003 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-05-21 02:00:00,003 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-22 02:00:00 EAT)" executed successfully
INFO 2026-05-21 02:00:00,009 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-05-21 02:00:00,009 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-21 02:00:00,020 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-05-21 02:00:00,021 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-05-21 10:00:00,001 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-22 10:00:00 EAT)" (scheduled at 2026-05-21 10:00:00+03:00)
INFO 2026-05-21 10:00:00,002 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-05-21 10:00:00,003 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-05-21 10:00:00,003 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-22 10:00:00 EAT)" executed successfully
INFO 2026-05-21 10:00:00,007 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-05-21 10:00:00,030 tasks_sync 2288875 140036657313536 Successfully generated report 237 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-21 10:00:00,053 tasks_sync 2288875 140036657313536 Successfully generated report 238 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-21 10:00:00,054 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-22 02:00:00,001 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-23 02:00:00 EAT)" (scheduled at 2026-05-22 02:00:00+03:00)
INFO 2026-05-22 02:00:00,002 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-05-22 02:00:00,003 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-05-22 02:00:00,003 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-23 02:00:00 EAT)" executed successfully
INFO 2026-05-22 02:00:00,010 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-05-22 02:00:00,010 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-22 02:00:00,018 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-05-22 02:00:00,018 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-05-22 10:00:00,043 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-23 10:00:00 EAT)" (scheduled at 2026-05-22 10:00:00+03:00)
INFO 2026-05-22 10:00:00,044 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-05-22 10:00:00,045 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-05-22 10:00:00,045 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-23 10:00:00 EAT)" executed successfully
INFO 2026-05-22 10:00:00,072 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-05-22 10:00:00,185 tasks_sync 2288875 140036657313536 Successfully generated report 239 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-22 10:00:00,254 tasks_sync 2288875 140036657313536 Successfully generated report 240 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-22 10:00:00,255 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-23 02:00:00,000 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-24 02:00:00 EAT)" (scheduled at 2026-05-23 02:00:00+03:00)
INFO 2026-05-23 02:00:00,002 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-05-23 02:00:00,003 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-05-23 02:00:00,003 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-24 02:00:00 EAT)" executed successfully
INFO 2026-05-23 02:00:00,009 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-05-23 02:00:00,009 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-23 02:00:00,019 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-05-23 02:00:00,019 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-05-23 10:00:00,000 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-24 10:00:00 EAT)" (scheduled at 2026-05-23 10:00:00+03:00)
INFO 2026-05-23 10:00:00,001 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-05-23 10:00:00,003 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-05-23 10:00:00,003 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-24 10:00:00 EAT)" executed successfully
INFO 2026-05-23 10:00:00,007 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-05-23 10:00:00,027 tasks_sync 2288875 140036657313536 Successfully generated report 241 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-23 10:00:00,053 tasks_sync 2288875 140036657313536 Successfully generated report 242 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-23 10:00:00,053 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-24 02:00:00,001 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-25 02:00:00 EAT)" (scheduled at 2026-05-24 02:00:00+03:00)
INFO 2026-05-24 02:00:00,003 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-05-24 02:00:00,005 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-05-24 02:00:00,005 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-25 02:00:00 EAT)" executed successfully
INFO 2026-05-24 02:00:00,012 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-05-24 02:00:00,012 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-24 02:00:00,023 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-05-24 02:00:00,023 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-05-24 10:00:00,001 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-25 10:00:00 EAT)" (scheduled at 2026-05-24 10:00:00+03:00)
INFO 2026-05-24 10:00:00,003 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-05-24 10:00:00,004 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-05-24 10:00:00,005 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-25 10:00:00 EAT)" executed successfully
INFO 2026-05-24 10:00:00,012 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-05-24 10:00:00,043 tasks_sync 2288875 140036657313536 Successfully generated report 243 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-24 10:00:00,080 tasks_sync 2288875 140036657313536 Successfully generated report 244 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-24 10:00:00,080 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-25 02:00:00,001 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-26 02:00:00 EAT)" (scheduled at 2026-05-25 02:00:00+03:00)
INFO 2026-05-25 02:00:00,002 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-05-25 02:00:00,003 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-05-25 02:00:00,004 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-26 02:00:00 EAT)" executed successfully
INFO 2026-05-25 02:00:00,014 tasks_sync 2288875 140036657313536 Cleaned up 1 old report logs
INFO 2026-05-25 02:00:00,014 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 1}
INFO 2026-05-25 02:00:00,138 tasks_sync 2288875 140036657313536 Cleaned up 4 old reports
INFO 2026-05-25 02:00:00,138 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 4}
INFO 2026-05-25 08:00:00,001 base 2288875 140036665706240 Running job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-06-01 08:00:00 EAT)" (scheduled at 2026-05-25 08:00:00+03:00)
INFO 2026-05-25 08:00:00,002 scheduler 2288875 140036665706240 Starting weekly reports job
INFO 2026-05-25 08:00:00,002 tasks_sync 2288875 140036657313536 Starting weekly report sending task
INFO 2026-05-25 08:00:00,003 scheduler 2288875 140036665706240 Weekly reports job started in background
INFO 2026-05-25 08:00:00,004 base 2288875 140036665706240 Job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-06-01 08:00:00 EAT)" executed successfully
INFO 2026-05-25 08:00:00,017 services 2288875 140036657313536 Report date range: 2026-05-18 to 2026-05-25
INFO 2026-05-25 08:00:00,018 services 2288875 140036657313536 Current date: 2026-05-25
items: ChoiceField(choices=[('inventory', 'Inventory Item'), ('accessory', 'Accessory')], default='inventory')
Starting Report Scheduler...
report_data: {'metadata': {'business_name': 'OneTech Computers', 'business_logo': None, 'report_date': datetime.datetime(2026, 5, 18, 8, 0, 0, 19615), 'week_start': datetime.date(2026, 5, 11), 'week_end': datetime.date(2026, 5, 18), 'week_label': 'May 11 - May 18, 2026'}, 'credit_management': {'top_outstanding': [{'customer_name': 'kingsoft', 'amount': 57000.0, 'due_date': datetime.date(2026, 4, 30), 'days_outstanding': 48, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'kingsoft', 'amount': 57000.0, 'due_date': datetime.date(2026, 4, 30), 'days_outstanding': 48, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'alex sky rich', 'amount': 55000.0, 'due_date': datetime.date(2026, 2, 25), 'days_outstanding': 112, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'alex sky rich', 'amount': 55000.0, 'due_date': datetime.date(2026, 2, 25), 'days_outstanding': 112, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'ELIMU TAB', 'amount': 48000.0, 'due_date': datetime.date(2026, 3, 27), 'days_outstanding': 82, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'ELIMU TAB', 'amount': 48000.0, 'due_date': datetime.date(2026, 3, 27), 'days_outstanding': 82, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'OCHANDA', 'amount': 40000.0, 'due_date': datetime.date(2026, 5, 2), 'days_outstanding': 46, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'OCHANDA', 'amount': 40000.0, 'due_date': datetime.date(2026, 5, 2), 'days_outstanding': 46, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'BALALA', 'amount': 22000.0, 'due_date': datetime.date(2026, 5, 15), 'days_outstanding': 33, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'BALALA', 'amount': 22000.0, 'due_date': datetime.date(2026, 5, 15), 'days_outstanding': 33, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}], 'total_outstanding': 486000.0, 'total_overdue': 444000.0, 'overdue_count': 10, 'current_count': 0, 'customers_with_credit': 7, 'has_alerts': True}, 'sales_performance': {'total_sales': 474, 'total_revenue': 24914490.0, 'total_profit': 1162919.9, 'avg_sale_value': 52562.21519, 'growth_percentage': 190.1693300520953, 'prev_week_revenue': 8586190.0, 'top_products': [{'name': 'hp 705 G6', 'category': 'Desktop', 'units_sold': 23, 'revenue': 519000.0}, {'name': 'Nec PCMKM21CZG3 I3 7TH GEN', 'category': 'Desktop', 'units_sold': 21, 'revenue': 209440.0}, {'name': 'Epson L3250', 'category': 'Printer', 'units_sold': 16, 'revenue': 385000.0}, {'name': 'Dell P2222H', 'category': 'monitor', 'units_sold': 12, 'revenue': 85300.0}, {'name': 'Lenovo T22I-10', 'category': 'monitor', 'units_sold': 10, 'revenue': 79500.0}], 'sales_by_location': [{'location': 'Tom Mboya Street, Old Nation', 'sales_count': 261, 'revenue': 7582390.0}], 'commissions': {'total_amount': 53697.28, 'sales_count': 263}}, 'expenses': {'total_expenses': 6465500.11, 'prev_week_expenses': 6414580.02, 'change_percentage': 0.7938179871673032, 'top_expenses': [{'reason': 'Purchase: Lenovo IDEAPAD 5', 'amount': 80000.0, 'date': datetime.date(2026, 5, 16), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: Lenovo IDEAPAD 5', 'amount': 80000.0, 'date': datetime.date(2026, 5, 16), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp 15 I5 13TH GEN', 'amount': 65000.0, 'date': datetime.date(2026, 5, 14), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp 15 I5 13TH GEN', 'amount': 65000.0, 'date': datetime.date(2026, 5, 14), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp 15 I5 13TH GEN', 'amount': 65000.0, 'date': datetime.date(2026, 5, 14), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp 15 I5 13TH GEN', 'amount': 65000.0, 'date': datetime.date(2026, 5, 14), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp 15 I5 13TH GEN', 'amount': 65000.0, 'date': datetime.date(2026, 5, 14), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: Mix viewsonic 55', 'amount': 65000.0, 'date': datetime.date(2026, 5, 15), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp ZBOOK FIREFLY 14 G7', 'amount': 63000.0, 'date': datetime.date(2026, 5, 12), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp 400 G6 I7 10TH GEN', 'amount': 60000.0, 'date': datetime.date(2026, 5, 14), 'category': 'Inventory Purchase'}], 'category_breakdown': [{'category': 'Inventory Purchase', 'amount': 6249150.11, 'count': 365}, {'category': 'Uncategorized', 'amount': 216350.0, 'count': 30}]}, 'inventory_alerts': {'low_stock_items': [{'name': 'hp E22G4', 'category': 'monitor', 'quantity': 1, 'item_count': 1, 'estimated_value': 7500.0}, {'name': 'Toshiba DT100', 'category': 'Desktop', 'quantity': 1, 'item_count': 1, 'estimated_value': 8000.0}, {'name': 'Philips 241b4l', 'category': 'MONITOR', 'quantity': 1, 'item_count': 1, 'estimated_value': 9000.0}, {'name': 'Macbook Pro A2114', 'category': 'laptop', 'quantity': 1, 'item_count': 1, 'estimated_value': 65000.0}, {'name': 'Iodata 23', 'category': 'Uncategorized', 'quantity': 1, 'item_count': 1, 'estimated_value': 4500.0}, {'name': 'Acer ET241Y', 'category': 'Monitor', 'quantity': 1, 'item_count': 1, 'estimated_value': 7000.0}, {'name': 'Lenovo M73', 'category': 'Desktop', 'quantity': 1, 'item_count': 1, 'estimated_value': 7000.0}, {'name': 'Dell 990', 'category': 'Desktop', 'quantity': 1, 'item_count': 1, 'estimated_value': 6000.0}, {'name': 'Samsung S24A35', 'category': 'Monitor', 'quantity': 1, 'item_count': 1, 'estimated_value': 3500.0}, {'name': 'Acer V243HL', 'category': 'Monitor', 'quantity': 1, 'item_count': 1, 'estimated_value': 5500.0}], 'out_of_stock_items': [{'name': 'Unknown ', 'category': 'Uncategorized', 'item_count': 16832}, {'name': 'hp e223', 'category': 'Monitor', 'item_count': 1213}, {'name': 'hp 840G6', 'category': 'Laptop', 'item_count': 895}, {'name': 'Dell p2419h', 'category': 'Monitor', 'item_count': 756}, {'name': 'Dahua 256ssd', 'category': 'SSD', 'item_count': 741}, {'name': 'Epson l3250', 'category': 'Printer', 'item_count': 722}, {'name': 'Dell 19', 'category': 'Monitor', 'item_count': 656}, {'name': 'Mercury 850VA', 'category': 'UPS', 'item_count': 644}, {'name': 'hp e243', 'category': 'Monitor', 'item_count': 624}, {'name': 'hp 845G7', 'category': 'Laptop', 'item_count': 570}], 'low_stock_count': 10, 'out_of_stock_count': 10, 'low_stock_value': 123000.0, 'has_critical_alerts': True}}
INFO 2026-05-25 08:00:01,048 email_report_service 2288875 140036657313536 Weekly report sent to 1 recipient(s) for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-25 08:00:01,057 tasks_sync 2288875 140036657313536 Successfully sent weekly report for OneTech Computers
INFO 2026-05-25 08:00:01,057 tasks_sync 2288875 140036657313536 Weekly report task completed. Sent: 1, Failed: 0
INFO 2026-05-25 08:00:01,058 scheduler 2288875 140036657313536 Weekly reports completed: {'sent': 1, 'failed': 0}
INFO 2026-05-25 09:00:00,001 base 2288875 140036665706240 Running job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-06-01 09:00:00 EAT)" (scheduled at 2026-05-25 09:00:00+03:00)
INFO 2026-05-25 09:00:00,002 scheduler 2288875 140036665706240 Starting low stock check job
INFO 2026-05-25 09:00:00,004 scheduler 2288875 140036665706240 Low stock check job started in background
INFO 2026-05-25 09:00:00,004 base 2288875 140036665706240 Job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-06-01 09:00:00 EAT)" executed successfully
INFO 2026-05-25 09:00:00,009 tasks_sync 2288875 140036657313536 Checking low stock for 2 businesses
INFO 2026-05-25 09:00:00,032 tasks_sync 2288875 140036657313536 Successfully generated report 245 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-25 09:00:05,184 tasks_sync 2288875 140036657313536 Successfully generated report 246 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-25 09:00:05,195 scheduler 2288875 140036657313536 Low stock check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-25 10:00:00,001 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-26 10:00:00 EAT)" (scheduled at 2026-05-25 10:00:00+03:00)
INFO 2026-05-25 10:00:00,002 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-05-25 10:00:00,003 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-05-25 10:00:00,004 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-26 10:00:00 EAT)" executed successfully
INFO 2026-05-25 10:00:00,009 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-05-25 10:00:00,035 tasks_sync 2288875 140036657313536 Successfully generated report 247 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-25 10:00:00,072 tasks_sync 2288875 140036657313536 Successfully generated report 248 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-25 10:00:00,072 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-26 02:00:00,000 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-27 02:00:00 EAT)" (scheduled at 2026-05-26 02:00:00+03:00)
INFO 2026-05-26 02:00:00,002 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-05-26 02:00:00,003 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-05-26 02:00:00,003 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-27 02:00:00 EAT)" executed successfully
INFO 2026-05-26 02:00:00,008 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-05-26 02:00:00,008 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-26 02:00:00,017 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-05-26 02:00:00,017 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-05-26 10:00:00,000 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-27 10:00:00 EAT)" (scheduled at 2026-05-26 10:00:00+03:00)
INFO 2026-05-26 10:00:00,001 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-05-26 10:00:00,003 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-05-26 10:00:00,003 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-27 10:00:00 EAT)" executed successfully
INFO 2026-05-26 10:00:00,007 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-05-26 10:00:00,029 tasks_sync 2288875 140036657313536 Successfully generated report 249 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-26 10:00:00,063 tasks_sync 2288875 140036657313536 Successfully generated report 250 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-26 10:00:00,063 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-27 02:00:00,001 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-28 02:00:00 EAT)" (scheduled at 2026-05-27 02:00:00+03:00)
INFO 2026-05-27 02:00:00,002 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-05-27 02:00:00,003 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-05-27 02:00:00,003 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-28 02:00:00 EAT)" executed successfully
INFO 2026-05-27 02:00:00,008 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-05-27 02:00:00,008 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-27 02:00:00,017 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-05-27 02:00:00,017 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-05-27 10:00:00,001 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-28 10:00:00 EAT)" (scheduled at 2026-05-27 10:00:00+03:00)
INFO 2026-05-27 10:00:00,002 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-05-27 10:00:00,003 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-05-27 10:00:00,003 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-28 10:00:00 EAT)" executed successfully
INFO 2026-05-27 10:00:00,007 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-05-27 10:00:00,029 tasks_sync 2288875 140036657313536 Successfully generated report 251 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-27 10:00:00,056 tasks_sync 2288875 140036657313536 Successfully generated report 252 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-27 10:00:00,057 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-28 02:00:00,001 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-29 02:00:00 EAT)" (scheduled at 2026-05-28 02:00:00+03:00)
INFO 2026-05-28 02:00:00,002 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-05-28 02:00:00,003 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-05-28 02:00:00,003 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-29 02:00:00 EAT)" executed successfully
INFO 2026-05-28 02:00:00,008 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-05-28 02:00:00,008 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-28 02:00:00,017 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-05-28 02:00:00,018 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-05-28 10:00:00,007 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-29 10:00:00 EAT)" (scheduled at 2026-05-28 10:00:00+03:00)
INFO 2026-05-28 10:00:00,008 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-05-28 10:00:00,010 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-05-28 10:00:00,010 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-29 10:00:00 EAT)" executed successfully
INFO 2026-05-28 10:00:00,014 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-05-28 10:00:00,042 tasks_sync 2288875 140036657313536 Successfully generated report 253 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-28 10:00:00,079 tasks_sync 2288875 140036657313536 Successfully generated report 254 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-28 10:00:00,079 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-29 02:00:00,001 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-30 02:00:00 EAT)" (scheduled at 2026-05-29 02:00:00+03:00)
INFO 2026-05-29 02:00:00,002 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-05-29 02:00:00,003 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-05-29 02:00:00,004 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-30 02:00:00 EAT)" executed successfully
INFO 2026-05-29 02:00:00,010 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-05-29 02:00:00,010 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-29 02:00:00,023 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-05-29 02:00:00,023 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-05-29 10:00:00,000 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-30 10:00:00 EAT)" (scheduled at 2026-05-29 10:00:00+03:00)
INFO 2026-05-29 10:00:00,002 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-05-29 10:00:00,003 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-05-29 10:00:00,004 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-30 10:00:00 EAT)" executed successfully
INFO 2026-05-29 10:00:00,008 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-05-29 10:00:00,032 tasks_sync 2288875 140036657313536 Successfully generated report 255 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-29 10:00:00,067 tasks_sync 2288875 140036657313536 Successfully generated report 256 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-29 10:00:00,067 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-30 02:00:00,001 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-31 02:00:00 EAT)" (scheduled at 2026-05-30 02:00:00+03:00)
INFO 2026-05-30 02:00:00,002 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-05-30 02:00:00,003 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-05-30 02:00:00,003 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-05-31 02:00:00 EAT)" executed successfully
INFO 2026-05-30 02:00:00,008 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-05-30 02:00:00,008 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-30 02:00:00,017 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-05-30 02:00:00,017 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-05-30 10:00:00,001 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-31 10:00:00 EAT)" (scheduled at 2026-05-30 10:00:00+03:00)
INFO 2026-05-30 10:00:00,003 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-05-30 10:00:00,004 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-05-30 10:00:00,005 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-05-31 10:00:00 EAT)" executed successfully
INFO 2026-05-30 10:00:00,009 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-05-30 10:00:00,035 tasks_sync 2288875 140036657313536 Successfully generated report 257 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-30 10:00:00,053 tasks_sync 2288875 140036657313536 Successfully generated report 258 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-30 10:00:00,054 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-05-31 02:00:00,001 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-01 02:00:00 EAT)" (scheduled at 2026-05-31 02:00:00+03:00)
INFO 2026-05-31 02:00:00,002 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-05-31 02:00:00,003 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-05-31 02:00:00,003 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-01 02:00:00 EAT)" executed successfully
INFO 2026-05-31 02:00:00,009 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-05-31 02:00:00,009 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-05-31 02:00:00,020 tasks_sync 2288875 140036657313536 Cleaned up 4 old reports
INFO 2026-05-31 02:00:00,021 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 4}
INFO 2026-05-31 10:00:00,001 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-01 10:00:00 EAT)" (scheduled at 2026-05-31 10:00:00+03:00)
INFO 2026-05-31 10:00:00,002 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-05-31 10:00:00,004 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-05-31 10:00:00,004 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-01 10:00:00 EAT)" executed successfully
INFO 2026-05-31 10:00:00,009 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-05-31 10:00:00,072 tasks_sync 2288875 140036657313536 Successfully generated report 259 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-05-31 10:00:00,097 tasks_sync 2288875 140036657313536 Successfully generated report 260 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-05-31 10:00:00,098 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-06-01 02:00:00,001 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-02 02:00:00 EAT)" (scheduled at 2026-06-01 02:00:00+03:00)
INFO 2026-06-01 02:00:00,003 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-06-01 02:00:00,005 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-06-01 02:00:00,005 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-02 02:00:00 EAT)" executed successfully
INFO 2026-06-01 02:00:00,015 tasks_sync 2288875 140036657313536 Cleaned up 1 old report logs
INFO 2026-06-01 02:00:00,015 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 1}
INFO 2026-06-01 02:00:00,083 tasks_sync 2288875 140036657313536 Cleaned up 4 old reports
INFO 2026-06-01 02:00:00,084 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 4}
INFO 2026-06-01 06:00:00,000 base 2288875 140036665706240 Running job "Send Monthly Reports (trigger: cron[day='1', hour='6', minute='0'], next run at: 2026-07-01 06:00:00 EAT)" (scheduled at 2026-06-01 06:00:00+03:00)
INFO 2026-06-01 06:00:00,001 scheduler 2288875 140036665706240 Starting monthly reports job
INFO 2026-06-01 06:00:00,003 scheduler 2288875 140036665706240 Monthly reports job started in background
INFO 2026-06-01 06:00:00,003 base 2288875 140036665706240 Job "Send Monthly Reports (trigger: cron[day='1', hour='6', minute='0'], next run at: 2026-07-01 06:00:00 EAT)" executed successfully
INFO 2026-06-01 06:00:00,006 tasks_sync 2288875 140036657313536 Generating monthly reports for 2 businesses
INFO 2026-06-01 06:00:00,030 tasks_sync 2288875 140036657313536 Successfully generated report 261 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-06-01 06:00:00,236 tasks_sync 2288875 140036657313536 Successfully generated report 262 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-06-01 06:00:00,236 scheduler 2288875 140036657313536 Monthly reports completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-06-01 08:00:00,001 base 2288875 140036665706240 Running job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-06-08 08:00:00 EAT)" (scheduled at 2026-06-01 08:00:00+03:00)
INFO 2026-06-01 08:00:00,002 scheduler 2288875 140036665706240 Starting weekly reports job
INFO 2026-06-01 08:00:00,002 tasks_sync 2288875 140036657313536 Starting weekly report sending task
INFO 2026-06-01 08:00:00,002 scheduler 2288875 140036665706240 Weekly reports job started in background
INFO 2026-06-01 08:00:00,004 base 2288875 140036665706240 Job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-06-08 08:00:00 EAT)" executed successfully
INFO 2026-06-01 08:00:00,015 services 2288875 140036657313536 Report date range: 2026-05-25 to 2026-06-01
INFO 2026-06-01 08:00:00,016 services 2288875 140036657313536 Current date: 2026-06-01
report_data: {'metadata': {'business_name': 'OneTech Computers', 'business_logo': None, 'report_date': datetime.datetime(2026, 5, 25, 8, 0, 0, 18192), 'week_start': datetime.date(2026, 5, 18), 'week_end': datetime.date(2026, 5, 25), 'week_label': 'May 18 - May 25, 2026'}, 'credit_management': {'top_outstanding': [{'customer_name': 'kingsoft', 'amount': 57000.0, 'due_date': datetime.date(2026, 4, 30), 'days_outstanding': 55, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'kingsoft', 'amount': 57000.0, 'due_date': datetime.date(2026, 4, 30), 'days_outstanding': 55, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'alex sky rich', 'amount': 55000.0, 'due_date': datetime.date(2026, 2, 25), 'days_outstanding': 119, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'alex sky rich', 'amount': 55000.0, 'due_date': datetime.date(2026, 2, 25), 'days_outstanding': 119, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'ELIMU TAB', 'amount': 48000.0, 'due_date': datetime.date(2026, 3, 27), 'days_outstanding': 89, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'ELIMU TAB', 'amount': 48000.0, 'due_date': datetime.date(2026, 3, 27), 'days_outstanding': 89, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'OCHANDA', 'amount': 40000.0, 'due_date': datetime.date(2026, 5, 2), 'days_outstanding': 53, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'OCHANDA', 'amount': 40000.0, 'due_date': datetime.date(2026, 5, 2), 'days_outstanding': 53, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'BALALA', 'amount': 22000.0, 'due_date': datetime.date(2026, 5, 15), 'days_outstanding': 40, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'BALALA', 'amount': 22000.0, 'due_date': datetime.date(2026, 5, 15), 'days_outstanding': 40, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}], 'total_outstanding': 486000.0, 'total_overdue': 444000.0, 'overdue_count': 10, 'current_count': 0, 'customers_with_credit': 7, 'has_alerts': True}, 'sales_performance': {'total_sales': 342, 'total_revenue': 17010730.0, 'total_profit': 830618.69, 'avg_sale_value': 49738.976608, 'growth_percentage': 124.34522624133024, 'prev_week_revenue': 7582390.0, 'top_products': [{'name': 'Dell P2219H', 'category': 'Monitor', 'units_sold': 36, 'revenue': 193900.0}, {'name': 'Lenovo T22I-10', 'category': 'Monitor', 'units_sold': 15, 'revenue': 123500.0}, {'name': 'Nec PCMKM21CZG3 I3 7TH GEN', 'category': 'Desktop', 'units_sold': 11, 'revenue': 116800.0}, {'name': 'Epson L3250', 'category': 'Printer', 'units_sold': 7, 'revenue': 169500.0}, {'name': 'MICROSOFT SURFACE surface go 21926', 'category': 'Laptop', 'units_sold': 7, 'revenue': 153000.0}], 'sales_by_location': [{'location': 'Tom Mboya Street, Old Nation', 'sales_count': 198, 'revenue': 5533990.0}], 'commissions': {'total_amount': 38737.93, 'sales_count': 198}}, 'expenses': {'total_expenses': 7270020.36, 'prev_week_expenses': 6465500.11, 'change_percentage': 12.443279503710349, 'top_expenses': [{'reason': 'Purchase: hp omnibook flip ultra 7', 'amount': 143000.0, 'date': datetime.date(2026, 5, 22), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: Mix interactive screen', 'amount': 120000.0, 'date': datetime.date(2026, 5, 21), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp omnibook 5 16gb 1tb', 'amount': 105000.0, 'date': datetime.date(2026, 5, 22), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp omnibook 5 16gb 1tb', 'amount': 105000.0, 'date': datetime.date(2026, 5, 22), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp HP 15 8gb 512ssd', 'amount': 72000.0, 'date': datetime.date(2026, 5, 21), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: Macbook PRO A2141', 'amount': 68000.0, 'date': datetime.date(2026, 5, 20), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: Macbook PRO A2141', 'amount': 68000.0, 'date': datetime.date(2026, 5, 20), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: Macbook PRO A2141', 'amount': 68000.0, 'date': datetime.date(2026, 5, 20), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: Macbook PRO A2141', 'amount': 68000.0, 'date': datetime.date(2026, 5, 20), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: Macbook PRO A2141', 'amount': 68000.0, 'date': datetime.date(2026, 5, 20), 'category': 'Inventory Purchase'}], 'category_breakdown': [{'category': 'Inventory Purchase', 'amount': 7193100.36, 'count': 409}, {'category': 'Uncategorized', 'amount': 76920.0, 'count': 26}]}, 'inventory_alerts': {'low_stock_items': [{'name': 'Lenovo p24', 'category': 'Monitor', 'quantity': 1, 'item_count': 1, 'estimated_value': 7000.0}, {'name': 'LG 22NV65V', 'category': 'MONITOR', 'quantity': 1, 'item_count': 1, 'estimated_value': 4000.0}, {'name': 'lexar 512 2.5', 'category': 'SSD', 'quantity': 1, 'item_count': 1, 'estimated_value': 4000.0}, {'name': 'Dell 7050', 'category': 'Desktop', 'quantity': 1, 'item_count': 1, 'estimated_value': 12000.0}, {'name': 'hp 600g4', 'category': 'Laptop', 'quantity': 1, 'item_count': 1, 'estimated_value': 9000.0}, {'name': 'hp 800 G5 i3 9th gen', 'category': 'Desktop', 'quantity': 1, 'item_count': 1, 'estimated_value': 13000.0}, {'name': 'Logitech M170', 'category': 'Uncategorized', 'quantity': 1, 'item_count': 1, 'estimated_value': 1500.0}, {'name': 'hp ENGAGE ONE PRO I5 10TH GEN', 'category': 'Allinone', 'quantity': 1, 'item_count': 1, 'estimated_value': 62000.0}, {'name': 'hp 845', 'category': 'Laptop', 'quantity': 1, 'item_count': 1, 'estimated_value': 25500.0}, {'name': 'hp 1040 G8 TS', 'category': 'Laptop', 'quantity': 1, 'item_count': 1, 'estimated_value': 50000.0}], 'out_of_stock_items': [{'name': 'Unknown ', 'category': 'Uncategorized', 'item_count': 16832}, {'name': 'hp e223', 'category': 'Monitor', 'item_count': 1213}, {'name': 'hp 840G6', 'category': 'Laptop', 'item_count': 895}, {'name': 'Dell p2419h', 'category': 'Monitor', 'item_count': 756}, {'name': 'Dahua 256ssd', 'category': 'SSD', 'item_count': 741}, {'name': 'Epson l3250', 'category': 'Printer', 'item_count': 722}, {'name': 'Dell 19', 'category': 'Monitor', 'item_count': 656}, {'name': 'Mercury 850VA', 'category': 'UPS', 'item_count': 644}, {'name': 'hp e243', 'category': 'Monitor', 'item_count': 624}, {'name': 'hp 845G7', 'category': 'Laptop', 'item_count': 570}], 'low_stock_count': 10, 'out_of_stock_count': 10, 'low_stock_value': 188000.0, 'has_critical_alerts': True}}
INFO 2026-06-01 08:00:00,897 email_report_service 2288875 140036657313536 Weekly report sent to 1 recipient(s) for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-06-01 08:00:00,905 tasks_sync 2288875 140036657313536 Successfully sent weekly report for OneTech Computers
INFO 2026-06-01 08:00:00,905 tasks_sync 2288875 140036657313536 Weekly report task completed. Sent: 1, Failed: 0
INFO 2026-06-01 08:00:00,905 scheduler 2288875 140036657313536 Weekly reports completed: {'sent': 1, 'failed': 0}
INFO 2026-06-01 09:00:00,000 base 2288875 140036665706240 Running job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-06-08 09:00:00 EAT)" (scheduled at 2026-06-01 09:00:00+03:00)
INFO 2026-06-01 09:00:00,008 scheduler 2288875 140036665706240 Starting low stock check job
INFO 2026-06-01 09:00:00,009 scheduler 2288875 140036665706240 Low stock check job started in background
INFO 2026-06-01 09:00:00,009 base 2288875 140036665706240 Job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-06-08 09:00:00 EAT)" executed successfully
INFO 2026-06-01 09:00:00,058 tasks_sync 2288875 140036657313536 Checking low stock for 2 businesses
INFO 2026-06-01 09:00:00,079 tasks_sync 2288875 140036657313536 Successfully generated report 263 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-06-01 09:00:04,882 tasks_sync 2288875 140036657313536 Successfully generated report 264 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-06-01 09:00:04,892 scheduler 2288875 140036657313536 Low stock check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-06-01 10:00:00,001 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-02 10:00:00 EAT)" (scheduled at 2026-06-01 10:00:00+03:00)
INFO 2026-06-01 10:00:00,002 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-06-01 10:00:00,004 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-06-01 10:00:00,004 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-02 10:00:00 EAT)" executed successfully
INFO 2026-06-01 10:00:00,008 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-06-01 10:00:00,033 tasks_sync 2288875 140036657313536 Successfully generated report 265 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-06-01 10:00:00,053 tasks_sync 2288875 140036657313536 Successfully generated report 266 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-06-01 10:00:00,053 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-06-02 02:00:00,000 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-03 02:00:00 EAT)" (scheduled at 2026-06-02 02:00:00+03:00)
INFO 2026-06-02 02:00:00,002 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-06-02 02:00:00,003 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-06-02 02:00:00,003 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-03 02:00:00 EAT)" executed successfully
INFO 2026-06-02 02:00:00,008 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-06-02 02:00:00,008 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-06-02 02:00:00,017 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-06-02 02:00:00,017 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-06-02 10:00:00,001 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-03 10:00:00 EAT)" (scheduled at 2026-06-02 10:00:00+03:00)
INFO 2026-06-02 10:00:00,002 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-06-02 10:00:00,004 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-06-02 10:00:00,004 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-03 10:00:00 EAT)" executed successfully
INFO 2026-06-02 10:00:00,008 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-06-02 10:00:00,039 tasks_sync 2288875 140036657313536 Successfully generated report 267 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-06-02 10:00:00,058 tasks_sync 2288875 140036657313536 Successfully generated report 268 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-06-02 10:00:00,058 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-06-03 02:00:00,000 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-04 02:00:00 EAT)" (scheduled at 2026-06-03 02:00:00+03:00)
INFO 2026-06-03 02:00:00,002 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-06-03 02:00:00,003 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-06-03 02:00:00,003 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-04 02:00:00 EAT)" executed successfully
INFO 2026-06-03 02:00:00,010 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-06-03 02:00:00,010 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-06-03 02:00:00,019 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-06-03 02:00:00,020 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-06-03 10:00:00,001 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-04 10:00:00 EAT)" (scheduled at 2026-06-03 10:00:00+03:00)
INFO 2026-06-03 10:00:00,002 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-06-03 10:00:00,004 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-06-03 10:00:00,004 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-04 10:00:00 EAT)" executed successfully
INFO 2026-06-03 10:00:00,009 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-06-03 10:00:00,029 tasks_sync 2288875 140036657313536 Successfully generated report 269 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-06-03 10:00:00,038 tasks_sync 2288875 140036657313536 Successfully generated report 270 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-06-03 10:00:00,038 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-06-04 02:00:00,000 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-05 02:00:00 EAT)" (scheduled at 2026-06-04 02:00:00+03:00)
INFO 2026-06-04 02:00:00,002 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-06-04 02:00:00,003 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-06-04 02:00:00,003 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-05 02:00:00 EAT)" executed successfully
INFO 2026-06-04 02:00:00,008 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-06-04 02:00:00,009 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-06-04 02:00:00,018 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-06-04 02:00:00,018 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-06-04 10:00:00,001 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-05 10:00:00 EAT)" (scheduled at 2026-06-04 10:00:00+03:00)
INFO 2026-06-04 10:00:00,002 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-06-04 10:00:00,003 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-06-04 10:00:00,003 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-05 10:00:00 EAT)" executed successfully
INFO 2026-06-04 10:00:00,008 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-06-04 10:00:00,034 tasks_sync 2288875 140036657313536 Successfully generated report 271 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-06-04 10:00:00,053 tasks_sync 2288875 140036657313536 Successfully generated report 272 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-06-04 10:00:00,053 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-06-05 02:00:00,000 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-06 02:00:00 EAT)" (scheduled at 2026-06-05 02:00:00+03:00)
INFO 2026-06-05 02:00:00,003 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-06-05 02:00:00,004 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-06-05 02:00:00,004 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-06 02:00:00 EAT)" executed successfully
INFO 2026-06-05 02:00:00,010 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-06-05 02:00:00,010 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-06-05 02:00:00,019 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-06-05 02:00:00,019 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-06-05 10:00:00,001 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-06 10:00:00 EAT)" (scheduled at 2026-06-05 10:00:00+03:00)
INFO 2026-06-05 10:00:00,004 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-06-05 10:00:00,006 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-06-05 10:00:00,006 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-06 10:00:00 EAT)" executed successfully
INFO 2026-06-05 10:00:00,011 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-06-05 10:00:00,043 tasks_sync 2288875 140036657313536 Successfully generated report 273 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-06-05 10:00:00,063 tasks_sync 2288875 140036657313536 Successfully generated report 274 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-06-05 10:00:00,063 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-06-06 02:00:00,001 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-07 02:00:00 EAT)" (scheduled at 2026-06-06 02:00:00+03:00)
INFO 2026-06-06 02:00:00,003 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-06-06 02:00:00,004 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-06-06 02:00:00,004 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-07 02:00:00 EAT)" executed successfully
INFO 2026-06-06 02:00:00,011 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-06-06 02:00:00,012 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-06-06 02:00:00,021 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-06-06 02:00:00,022 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-06-06 10:00:00,001 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-07 10:00:00 EAT)" (scheduled at 2026-06-06 10:00:00+03:00)
INFO 2026-06-06 10:00:00,002 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-06-06 10:00:00,003 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-06-06 10:00:00,003 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-07 10:00:00 EAT)" executed successfully
INFO 2026-06-06 10:00:00,007 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-06-06 10:00:00,024 tasks_sync 2288875 140036657313536 Successfully generated report 275 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-06-06 10:00:00,035 tasks_sync 2288875 140036657313536 Successfully generated report 276 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-06-06 10:00:00,035 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-06-07 02:00:00,002 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-08 02:00:00 EAT)" (scheduled at 2026-06-07 02:00:00+03:00)
INFO 2026-06-07 02:00:00,003 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-06-07 02:00:00,004 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-06-07 02:00:00,005 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-08 02:00:00 EAT)" executed successfully
INFO 2026-06-07 02:00:00,009 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-06-07 02:00:00,009 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-06-07 02:00:00,017 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-06-07 02:00:00,017 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-06-07 10:00:00,000 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-08 10:00:00 EAT)" (scheduled at 2026-06-07 10:00:00+03:00)
INFO 2026-06-07 10:00:00,003 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-06-07 10:00:00,005 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-06-07 10:00:00,005 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-08 10:00:00 EAT)" executed successfully
INFO 2026-06-07 10:00:00,010 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-06-07 10:00:00,038 tasks_sync 2288875 140036657313536 Successfully generated report 277 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-06-07 10:00:00,054 tasks_sync 2288875 140036657313536 Successfully generated report 278 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-06-07 10:00:00,054 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-06-08 02:00:00,002 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-09 02:00:00 EAT)" (scheduled at 2026-06-08 02:00:00+03:00)
INFO 2026-06-08 02:00:00,003 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-06-08 02:00:00,004 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-06-08 02:00:00,004 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-09 02:00:00 EAT)" executed successfully
INFO 2026-06-08 02:00:00,012 tasks_sync 2288875 140036657313536 Cleaned up 1 old report logs
INFO 2026-06-08 02:00:00,012 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 1}
INFO 2026-06-08 02:00:00,172 tasks_sync 2288875 140036657313536 Cleaned up 4 old reports
INFO 2026-06-08 02:00:00,172 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 4}
INFO 2026-06-08 08:00:00,003 base 2288875 140036665706240 Running job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-06-15 08:00:00 EAT)" (scheduled at 2026-06-08 08:00:00+03:00)
INFO 2026-06-08 08:00:00,006 scheduler 2288875 140036665706240 Starting weekly reports job
INFO 2026-06-08 08:00:00,006 tasks_sync 2288875 140036657313536 Starting weekly report sending task
INFO 2026-06-08 08:00:00,006 scheduler 2288875 140036665706240 Weekly reports job started in background
INFO 2026-06-08 08:00:00,009 base 2288875 140036665706240 Job "Send Weekly Reports (trigger: cron[day_of_week='mon', hour='8', minute='0'], next run at: 2026-06-15 08:00:00 EAT)" executed successfully
INFO 2026-06-08 08:00:00,023 services 2288875 140036657313536 Report date range: 2026-06-01 to 2026-06-08
INFO 2026-06-08 08:00:00,023 services 2288875 140036657313536 Current date: 2026-06-08
report_data: {'metadata': {'business_name': 'OneTech Computers', 'business_logo': None, 'report_date': datetime.datetime(2026, 6, 1, 8, 0, 0, 16094), 'week_start': datetime.date(2026, 5, 25), 'week_end': datetime.date(2026, 6, 1), 'week_label': 'May 25 - Jun 01, 2026'}, 'credit_management': {'top_outstanding': [{'customer_name': 'kingsoft', 'amount': 57000.0, 'due_date': datetime.date(2026, 4, 30), 'days_outstanding': 62, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'kingsoft', 'amount': 57000.0, 'due_date': datetime.date(2026, 4, 30), 'days_outstanding': 62, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'alex sky rich', 'amount': 55000.0, 'due_date': datetime.date(2026, 2, 25), 'days_outstanding': 126, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'alex sky rich', 'amount': 55000.0, 'due_date': datetime.date(2026, 2, 25), 'days_outstanding': 126, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'ELIMU TAB', 'amount': 48000.0, 'due_date': datetime.date(2026, 3, 27), 'days_outstanding': 96, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'ELIMU TAB', 'amount': 48000.0, 'due_date': datetime.date(2026, 3, 27), 'days_outstanding': 96, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'OCHANDA', 'amount': 40000.0, 'due_date': datetime.date(2026, 5, 2), 'days_outstanding': 60, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'OCHANDA', 'amount': 40000.0, 'due_date': datetime.date(2026, 5, 2), 'days_outstanding': 60, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'BALALA', 'amount': 22000.0, 'due_date': datetime.date(2026, 5, 15), 'days_outstanding': 47, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}, {'customer_name': 'BALALA', 'amount': 22000.0, 'due_date': datetime.date(2026, 5, 15), 'days_outstanding': 47, 'location': 'Tom Mboya Street, Old Nation', 'is_overdue': True}], 'total_outstanding': 506000.0, 'total_overdue': 444000.0, 'overdue_count': 10, 'current_count': 0, 'customers_with_credit': 8, 'has_alerts': True}, 'sales_performance': {'total_sales': 422, 'total_revenue': 26202602.0, 'total_profit': 1156651.97, 'avg_sale_value': 62091.473934, 'growth_percentage': 303.365799516317, 'prev_week_revenue': 6495990.0, 'top_products': [{'name': 'hp 805 g6', 'category': 'monitor', 'units_sold': 12, 'revenue': 288450.0}, {'name': 'hp 705 g5', 'category': 'Desktop', 'units_sold': 11, 'revenue': 262300.0}, {'name': 'hp 640 G5', 'category': 'LAPTOP', 'units_sold': 8, 'revenue': 193840.0}, {'name': 'hp 830 G7 i5 10th gen', 'category': 'Laptop', 'units_sold': 8, 'revenue': 260200.0}, {'name': 'hp E24G4', 'category': 'monitor', 'units_sold': 8, 'revenue': 80000.0}], 'sales_by_location': [{'location': 'Tom Mboya Street, Old Nation', 'sales_count': 258, 'revenue': 7115502.0}], 'commissions': {'total_amount': 50001.01, 'sales_count': 260}}, 'expenses': {'total_expenses': 5238050.01, 'prev_week_expenses': 7633520.36, 'change_percentage': -31.380938767811188, 'top_expenses': [{'reason': 'Purchase: hp VICTUS 15  COREI5', 'amount': 90000.0, 'date': datetime.date(2026, 5, 29), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: Lenovo ideapad slim 3 I5', 'amount': 72000.0, 'date': datetime.date(2026, 5, 28), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: Lenovo ideapad slim 3 I5', 'amount': 72000.0, 'date': datetime.date(2026, 5, 28), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp ZBOOK FIREFLY 14G8 32GB', 'amount': 62000.0, 'date': datetime.date(2026, 5, 29), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: Macbook PRO A2141 I9  9TH GEN', 'amount': 58000.0, 'date': datetime.date(2026, 5, 26), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: Macbook PRO A2141 I9  9TH GEN', 'amount': 58000.0, 'date': datetime.date(2026, 5, 26), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: Macbook PRO A2141 I  9TH GEN', 'amount': 58000.0, 'date': datetime.date(2026, 5, 26), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: Macbook PRO A2141 I7  9TH GEN', 'amount': 58000.0, 'date': datetime.date(2026, 5, 26), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: Macbook PRO A2141 I7  9TH GEN', 'amount': 58000.0, 'date': datetime.date(2026, 5, 26), 'category': 'Inventory Purchase'}, {'reason': 'Purchase: hp ZBOOK FIREFLY 14 G7 32GB 512SSD', 'amount': 58000.0, 'date': datetime.date(2026, 5, 29), 'category': 'Inventory Purchase'}], 'category_breakdown': [{'category': 'Inventory Purchase', 'amount': 5139200.01, 'count': 269}, {'category': 'Uncategorized', 'amount': 98850.0, 'count': 28}]}, 'inventory_alerts': {'low_stock_items': [{'name': 'Unknown 600g4', 'category': 'Uncategorized', 'quantity': 1, 'item_count': 1, 'estimated_value': 16000.0}, {'name': 'Nec MJ31LGJ', 'category': 'Allinone', 'quantity': 1, 'item_count': 1, 'estimated_value': 1.0}, {'name': 'hp EPSON', 'category': 'Printer', 'quantity': 1, 'item_count': 1, 'estimated_value': 19500.0}, {'name': 'Philips EZ20B4L', 'category': 'Monitor', 'quantity': 1, 'item_count': 1, 'estimated_value': 3500.0}, {'name': 'hp 600 G2 i3 6th gen', 'category': 'Desktop', 'quantity': 1, 'item_count': 1, 'estimated_value': 13500.0}, {'name': 'hp e243 i', 'category': 'Monitor', 'quantity': 1, 'item_count': 1, 'estimated_value': 8500.0}, {'name': 'hp S230TM', 'category': 'Monitor', 'quantity': 1, 'item_count': 1, 'estimated_value': 4500.0}, {'name': 'Dell 1908FPT', 'category': 'Monitor', 'quantity': 1, 'item_count': 1, 'estimated_value': 4000.0}, {'name': 'hp DRAGONFLY X360', 'category': 'Uncategorized', 'quantity': 1, 'item_count': 1, 'estimated_value': 35000.0}, {'name': 'Lenovo a540', 'category': 'Allinone', 'quantity': 1, 'item_count': 1, 'estimated_value': 28000.0}], 'out_of_stock_items': [{'name': 'Unknown ', 'category': 'Uncategorized', 'item_count': 16832}, {'name': 'hp e223', 'category': 'Monitor', 'item_count': 1213}, {'name': 'hp 840G6', 'category': 'Laptop', 'item_count': 895}, {'name': 'Dell p2419h', 'category': 'Monitor', 'item_count': 756}, {'name': 'Dahua 256ssd', 'category': 'SSD', 'item_count': 741}, {'name': 'Epson l3250', 'category': 'Printer', 'item_count': 722}, {'name': 'Dell 19', 'category': 'Monitor', 'item_count': 656}, {'name': 'Mercury 850VA', 'category': 'UPS', 'item_count': 644}, {'name': 'hp e243', 'category': 'Monitor', 'item_count': 624}, {'name': 'hp 845G7', 'category': 'Laptop', 'item_count': 570}], 'low_stock_count': 10, 'out_of_stock_count': 10, 'low_stock_value': 132501.0, 'has_critical_alerts': True}}
INFO 2026-06-08 08:00:06,726 email_report_service 2288875 140036657313536 Weekly report sent to 1 recipient(s) for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-06-08 08:00:06,785 tasks_sync 2288875 140036657313536 Successfully sent weekly report for OneTech Computers
INFO 2026-06-08 08:00:06,785 tasks_sync 2288875 140036657313536 Weekly report task completed. Sent: 1, Failed: 0
INFO 2026-06-08 08:00:06,785 scheduler 2288875 140036657313536 Weekly reports completed: {'sent': 1, 'failed': 0}
INFO 2026-06-08 09:00:00,002 base 2288875 140036665706240 Running job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-06-15 09:00:00 EAT)" (scheduled at 2026-06-08 09:00:00+03:00)
INFO 2026-06-08 09:00:00,003 scheduler 2288875 140036665706240 Starting low stock check job
INFO 2026-06-08 09:00:00,004 scheduler 2288875 140036665706240 Low stock check job started in background
INFO 2026-06-08 09:00:00,005 base 2288875 140036665706240 Job "Check Low Stock (trigger: cron[day_of_week='mon', hour='9', minute='0'], next run at: 2026-06-15 09:00:00 EAT)" executed successfully
INFO 2026-06-08 09:00:00,009 tasks_sync 2288875 140036657313536 Checking low stock for 2 businesses
INFO 2026-06-08 09:00:00,024 tasks_sync 2288875 140036657313536 Successfully generated report 279 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-06-08 09:00:07,702 tasks_sync 2288875 140036657313536 Successfully generated report 280 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-06-08 09:00:07,712 scheduler 2288875 140036657313536 Low stock check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-06-08 10:00:00,001 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-09 10:00:00 EAT)" (scheduled at 2026-06-08 10:00:00+03:00)
INFO 2026-06-08 10:00:00,002 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-06-08 10:00:00,004 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-06-08 10:00:00,004 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-09 10:00:00 EAT)" executed successfully
INFO 2026-06-08 10:00:00,008 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-06-08 10:00:00,034 tasks_sync 2288875 140036657313536 Successfully generated report 281 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-06-08 10:00:00,054 tasks_sync 2288875 140036657313536 Successfully generated report 282 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-06-08 10:00:00,054 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-06-09 02:00:00,002 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-10 02:00:00 EAT)" (scheduled at 2026-06-09 02:00:00+03:00)
INFO 2026-06-09 02:00:00,004 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-06-09 02:00:00,005 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-06-09 02:00:00,005 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-10 02:00:00 EAT)" executed successfully
INFO 2026-06-09 02:00:00,011 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-06-09 02:00:00,011 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-06-09 02:00:00,023 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-06-09 02:00:00,024 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-06-09 10:00:00,002 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-10 10:00:00 EAT)" (scheduled at 2026-06-09 10:00:00+03:00)
INFO 2026-06-09 10:00:00,003 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-06-09 10:00:00,005 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-06-09 10:00:00,005 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-10 10:00:00 EAT)" executed successfully
INFO 2026-06-09 10:00:00,008 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-06-09 10:00:00,027 tasks_sync 2288875 140036657313536 Successfully generated report 283 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-06-09 10:00:00,038 tasks_sync 2288875 140036657313536 Successfully generated report 284 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-06-09 10:00:00,038 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-06-10 02:00:00,001 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-11 02:00:00 EAT)" (scheduled at 2026-06-10 02:00:00+03:00)
INFO 2026-06-10 02:00:00,003 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-06-10 02:00:00,004 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-06-10 02:00:00,004 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-11 02:00:00 EAT)" executed successfully
INFO 2026-06-10 02:00:00,010 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-06-10 02:00:00,010 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-06-10 02:00:00,019 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-06-10 02:00:00,019 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-06-10 10:00:00,001 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-11 10:00:00 EAT)" (scheduled at 2026-06-10 10:00:00+03:00)
INFO 2026-06-10 10:00:00,003 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-06-10 10:00:00,004 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-06-10 10:00:00,005 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-11 10:00:00 EAT)" executed successfully
INFO 2026-06-10 10:00:00,008 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-06-10 10:00:00,029 tasks_sync 2288875 140036657313536 Successfully generated report 285 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-06-10 10:00:00,040 tasks_sync 2288875 140036657313536 Successfully generated report 286 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-06-10 10:00:00,041 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-06-11 02:00:00,002 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-12 02:00:00 EAT)" (scheduled at 2026-06-11 02:00:00+03:00)
INFO 2026-06-11 02:00:00,004 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-06-11 02:00:00,006 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-06-11 02:00:00,006 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-12 02:00:00 EAT)" executed successfully
INFO 2026-06-11 02:00:00,012 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-06-11 02:00:00,012 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-06-11 02:00:00,021 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-06-11 02:00:00,021 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-06-11 10:00:00,002 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-12 10:00:00 EAT)" (scheduled at 2026-06-11 10:00:00+03:00)
INFO 2026-06-11 10:00:00,003 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-06-11 10:00:00,005 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-06-11 10:00:00,005 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-12 10:00:00 EAT)" executed successfully
INFO 2026-06-11 10:00:00,009 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-06-11 10:00:00,026 tasks_sync 2288875 140036657313536 Successfully generated report 287 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-06-11 10:00:00,037 tasks_sync 2288875 140036657313536 Successfully generated report 288 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-06-11 10:00:00,037 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-06-12 02:00:00,002 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-13 02:00:00 EAT)" (scheduled at 2026-06-12 02:00:00+03:00)
INFO 2026-06-12 02:00:00,004 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-06-12 02:00:00,005 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-06-12 02:00:00,005 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-13 02:00:00 EAT)" executed successfully
INFO 2026-06-12 02:00:00,011 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-06-12 02:00:00,011 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-06-12 02:00:00,022 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-06-12 02:00:00,022 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
INFO 2026-06-12 10:00:00,002 base 2288875 140036665706240 Running job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-13 10:00:00 EAT)" (scheduled at 2026-06-12 10:00:00+03:00)
INFO 2026-06-12 10:00:00,003 scheduler 2288875 140036665706240 Starting warranty expiry check job
INFO 2026-06-12 10:00:00,005 scheduler 2288875 140036665706240 Warranty expiry check job started in background
INFO 2026-06-12 10:00:00,005 base 2288875 140036665706240 Job "Check Warranty Expiry (trigger: cron[hour='10', minute='0'], next run at: 2026-06-13 10:00:00 EAT)" executed successfully
INFO 2026-06-12 10:00:00,008 tasks_sync 2288875 140036657313536 Checking warranty expiry for 2 businesses
INFO 2026-06-12 10:00:00,029 tasks_sync 2288875 140036657313536 Successfully generated report 289 for business 9917e76d-e77b-49e8-b9d6-a13a6e959813
INFO 2026-06-12 10:00:00,042 tasks_sync 2288875 140036657313536 Successfully generated report 290 for business 26ef493a-63bd-450c-907a-0b8f020c0f03
INFO 2026-06-12 10:00:00,042 scheduler 2288875 140036657313536 Warranty expiry check completed: {'status': 'success', 'businesses_processed': 2}
INFO 2026-06-13 02:00:00,000 base 2288875 140036665706240 Running job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-14 02:00:00 EAT)" (scheduled at 2026-06-13 02:00:00+03:00)
INFO 2026-06-13 02:00:00,002 scheduler 2288875 140036665706240 Starting cleanup job
INFO 2026-06-13 02:00:00,003 scheduler 2288875 140036665706240 Cleanup job started in background
INFO 2026-06-13 02:00:00,003 base 2288875 140036665706240 Job "Cleanup Old Reports (trigger: cron[hour='2', minute='0'], next run at: 2026-06-14 02:00:00 EAT)" executed successfully
INFO 2026-06-13 02:00:00,009 tasks_sync 2288875 140036657313536 Cleaned up 0 old report logs
INFO 2026-06-13 02:00:00,009 scheduler 2288875 140036657313536 Cleaned up old logs: {'deleted_count': 0}
INFO 2026-06-13 02:00:00,018 tasks_sync 2288875 140036657313536 Cleaned up 2 old reports
INFO 2026-06-13 02:00:00,018 scheduler 2288875 140036657313536 Cleaned up old reports: {'status': 'success', 'reports_deleted': 2}
