270 lines
13 KiB
Python
270 lines
13 KiB
Python
from django.db import models
|
|
|
|
|
|
class StatusChoices(models.TextChoices):
|
|
"""Status choices for a Customer, Account, or a future model"""
|
|
ACTIVE = 'ACTIVE', 'Active'
|
|
INACTIVE = 'INACTIVE', 'Inactive'
|
|
PENDING = 'PENDING', 'Pending'
|
|
|
|
|
|
class ServiceChoices(models.TextChoices):
|
|
"""Status choices for a service workflow"""
|
|
SCHEDULED = 'SCHEDULED', 'Scheduled'
|
|
IN_PROGRESS = 'IN_PROGRESS', 'In Progress'
|
|
COMPLETED = 'COMPLETED', 'Completed'
|
|
CANCELLED = 'CANCELLED', 'Cancelled'
|
|
|
|
|
|
class AddressChoices(models.TextChoices):
|
|
"""Address choices for a customer"""
|
|
BILLING = 'BILLING', 'Billing'
|
|
SHIPPING = 'SHIPPING', 'Shipping'
|
|
OFFICE = 'OFFICE', 'Office Location'
|
|
OTHER = 'OTHER', 'Other Address'
|
|
|
|
|
|
class InvoiceChoices(models.TextChoices):
|
|
"""Status choices for an invoice"""
|
|
DRAFT = 'DRAFT', 'Draft'
|
|
SENT = 'SENT', 'Sent'
|
|
PAID = 'PAID', 'Paid'
|
|
OVERDUE = 'OVERDUE', 'Overdue'
|
|
CANCELLED = 'CANCELLED', 'Cancelled'
|
|
|
|
|
|
class PaymentChoices(models.TextChoices):
|
|
"""Payment choices for a transaction"""
|
|
CHECK = 'CHECK', 'Check'
|
|
CREDIT_CARD = 'CREDIT_CARD', 'Credit Card'
|
|
BANK_TRANSFER = 'BANK_TRANSFER', 'Bank Transfer'
|
|
CASH = 'CASH', 'Cash'
|
|
|
|
|
|
class TaskFrequencyChoices(models.TextChoices):
|
|
DAILY = 'daily', 'Daily'
|
|
WEEKLY = 'weekly', 'Weekly'
|
|
MONTHLY = 'monthly', 'Monthly'
|
|
QUARTERLY = 'quarterly', 'Quarterly'
|
|
TRIANNUAL = 'triannual', 'Tri-annual'
|
|
ANNUAL = 'annual', 'Annual'
|
|
AS_NEEDED = 'as_needed', 'As Needed'
|
|
|
|
|
|
class RoleChoices(models.TextChoices):
|
|
"""Role choices for a user"""
|
|
ADMIN = 'ADMIN', 'Admin'
|
|
TEAM_LEADER = 'TEAM_LEADER', 'Team Leader'
|
|
TEAM_MEMBER = 'TEAM_MEMBER', 'Team Member'
|
|
|
|
|
|
class EventTypeChoices(models.TextChoices):
|
|
"""Event types for the event management system"""
|
|
|
|
# Customer events
|
|
CUSTOMER_CREATED = 'CUSTOMER_CREATED', 'Customer Created'
|
|
CUSTOMER_UPDATED = 'CUSTOMER_UPDATED', 'Customer Updated'
|
|
CUSTOMER_DELETED = 'CUSTOMER_DELETED', 'Customer Deleted'
|
|
CUSTOMER_STATUS_CHANGED = 'CUSTOMER_STATUS_CHANGED', 'Customer Status Changed'
|
|
CUSTOMER_ADDRESS_CREATED = 'CUSTOMER_ADDRESS_CREATED', 'Customer Address Created'
|
|
CUSTOMER_ADDRESS_UPDATED = 'CUSTOMER_ADDRESS_UPDATED', 'Customer Address Updated'
|
|
CUSTOMER_ADDRESS_DELETED = 'CUSTOMER_ADDRESS_DELETED', 'Customer Address Deleted'
|
|
CUSTOMER_CONTACT_CREATED = 'CUSTOMER_CONTACT_CREATED', 'Customer Contact Created'
|
|
CUSTOMER_CONTACT_UPDATED = 'CUSTOMER_CONTACT_UPDATED', 'Customer Contact Updated'
|
|
CUSTOMER_CONTACT_DELETED = 'CUSTOMER_CONTACT_DELETED', 'Customer Contact Deleted'
|
|
|
|
# Account events
|
|
ACCOUNT_CREATED = 'ACCOUNT_CREATED', 'Account Created'
|
|
ACCOUNT_UPDATED = 'ACCOUNT_UPDATED', 'Account Updated'
|
|
ACCOUNT_DELETED = 'ACCOUNT_DELETED', 'Account Deleted'
|
|
ACCOUNT_STATUS_CHANGED = 'ACCOUNT_STATUS_CHANGED', 'Account Status Changed'
|
|
ACCOUNT_ADDRESS_CREATED = 'ACCOUNT_ADDRESS_CREATED', 'Account Address Created'
|
|
ACCOUNT_ADDRESS_UPDATED = 'ACCOUNT_ADDRESS_UPDATED', 'Account Address Updated'
|
|
ACCOUNT_ADDRESS_DELETED = 'ACCOUNT_ADDRESS_DELETED', 'Account Address Deleted'
|
|
ACCOUNT_CONTACT_CREATED = 'ACCOUNT_CONTACT_CREATED', 'Account Contact Created'
|
|
ACCOUNT_CONTACT_UPDATED = 'ACCOUNT_CONTACT_UPDATED', 'Account Contact Updated'
|
|
ACCOUNT_CONTACT_DELETED = 'ACCOUNT_CONTACT_DELETED', 'Account Contact Deleted'
|
|
|
|
# Service events
|
|
SERVICE_CREATED = 'SERVICE_CREATED', 'Service Created'
|
|
SERVICE_UPDATED = 'SERVICE_UPDATED', 'Service Updated'
|
|
SERVICE_DELETED = 'SERVICE_DELETED', 'Service Deleted'
|
|
SERVICE_STATUS_CHANGED = 'SERVICE_STATUS_CHANGED', 'Service Status Changed'
|
|
SERVICE_COMPLETED = 'SERVICE_COMPLETED', 'Service Completed'
|
|
SERVICE_CANCELLED = 'SERVICE_CANCELLED', 'Service Cancelled'
|
|
SERVICE_TEAM_ASSIGNED = 'SERVICE_TEAM_ASSIGNED', 'Team Assigned to Service'
|
|
SERVICE_TEAM_UNASSIGNED = 'SERVICE_TEAM_UNASSIGNED', 'Team Unassigned from Service'
|
|
SERVICE_DISPATCHED = 'SERVICE_DISPATCHED', 'Service Dispatched'
|
|
SERVICES_BULK_GENERATED = 'SERVICES_BULK_GENERATED', 'Services Bulk Generated'
|
|
|
|
# Service session events
|
|
SERVICE_SESSION_OPENED = 'SERVICE_SESSION_OPENED', 'Service Session Opened'
|
|
SERVICE_SESSION_CLOSED = 'SERVICE_SESSION_CLOSED', 'Service Session Closed'
|
|
SERVICE_SESSION_REVERTED = 'SERVICE_SESSION_REVERTED', 'Service Session Reverted'
|
|
SERVICE_TASK_COMPLETED = 'SERVICE_TASK_COMPLETED', 'Service Task Completed'
|
|
SERVICE_TASK_UNCOMPLETED = 'SERVICE_TASK_UNCOMPLETED', 'Service Task Uncompleted'
|
|
|
|
# Schedule events
|
|
SCHEDULE_CREATED = 'SCHEDULE_CREATED', 'Schedule Created'
|
|
SCHEDULE_UPDATED = 'SCHEDULE_UPDATED', 'Schedule Updated'
|
|
SCHEDULE_DELETED = 'SCHEDULE_DELETED', 'Schedule Deleted'
|
|
SCHEDULE_FREQUENCY_CHANGED = 'SCHEDULE_FREQUENCY_CHANGED', 'Schedule Frequency Changed'
|
|
|
|
# Project events
|
|
PROJECT_CREATED = 'PROJECT_CREATED', 'Project Created'
|
|
PROJECT_UPDATED = 'PROJECT_UPDATED', 'Project Updated'
|
|
PROJECT_STATUS_CHANGED = 'PROJECT_STATUS_CHANGED', 'Project Status Changed'
|
|
PROJECT_COMPLETED = 'PROJECT_COMPLETED', 'Project Completed'
|
|
PROJECT_CANCELLED = 'PROJECT_CANCELLED', 'Project Cancelled'
|
|
PROJECT_DISPATCHED = 'PROJECT_DISPATCHED', 'Project Dispatched'
|
|
PROJECT_DELETED = 'PROJECT_DELETED', 'Project Deleted'
|
|
|
|
# Project session events
|
|
PROJECT_SESSION_OPENED = 'PROJECT_SESSION_OPENED', 'Project Session Opened'
|
|
PROJECT_SESSION_CLOSED = 'PROJECT_SESSION_CLOSED', 'Project Session Closed'
|
|
PROJECT_SESSION_REVERTED = 'PROJECT_SESSION_REVERTED', 'Project Session Reverted'
|
|
PROJECT_TASK_COMPLETED = 'PROJECT_TASK_COMPLETED', 'Project Task Completed'
|
|
PROJECT_TASK_UNCOMPLETED = 'PROJECT_TASK_UNCOMPLETED', 'Project Task Uncompleted'
|
|
|
|
# Project scope events
|
|
PROJECT_SCOPE_CREATED = 'PROJECT_SCOPE_CREATED', 'Project Scope Created'
|
|
PROJECT_SCOPE_UPDATED = 'PROJECT_SCOPE_UPDATED', 'Project Scope Updated'
|
|
PROJECT_SCOPE_DELETED = 'PROJECT_SCOPE_DELETED', 'Project Scope Deleted'
|
|
PROJECT_SCOPE_CATEGORY_CREATED = 'PROJECT_SCOPE_CATEGORY_CREATED', 'Project Scope Category Created'
|
|
PROJECT_SCOPE_CATEGORY_UPDATED = 'PROJECT_SCOPE_CATEGORY_UPDATED', 'Project Scope Category Updated'
|
|
PROJECT_SCOPE_CATEGORY_DELETED = 'PROJECT_SCOPE_CATEGORY_DELETED', 'Project Scope Category Deleted'
|
|
PROJECT_SCOPE_TASK_CREATED = 'PROJECT_SCOPE_TASK_CREATED', 'Project Scope Task Created'
|
|
PROJECT_SCOPE_TASK_UPDATED = 'PROJECT_SCOPE_TASK_UPDATED', 'Project Scope Task Updated'
|
|
PROJECT_SCOPE_TASK_DELETED = 'PROJECT_SCOPE_TASK_DELETED', 'Project Scope Task Deleted'
|
|
PROJECT_SCOPE_TEMPLATE_INSTANTIATED = 'PROJECT_SCOPE_TEMPLATE_INSTANTIATED', 'Project Scope Template Instantiated'
|
|
|
|
# Scope events
|
|
SCOPE_CREATED = 'SCOPE_CREATED', 'Scope Created'
|
|
SCOPE_UPDATED = 'SCOPE_UPDATED', 'Scope Updated'
|
|
SCOPE_DELETED = 'SCOPE_DELETED', 'Scope Deleted'
|
|
AREA_CREATED = 'AREA_CREATED', 'Area Created'
|
|
AREA_UPDATED = 'AREA_UPDATED', 'Area Updated'
|
|
AREA_DELETED = 'AREA_DELETED', 'Area Deleted'
|
|
TASK_CREATED = 'TASK_CREATED', 'Task Created'
|
|
TASK_UPDATED = 'TASK_UPDATED', 'Task Updated'
|
|
TASK_DELETED = 'TASK_DELETED', 'Task Deleted'
|
|
TASK_COMPLETION_RECORDED = 'TASK_COMPLETION_RECORDED', 'Task Completion Recorded'
|
|
|
|
# Scope template events
|
|
SCOPE_TEMPLATE_CREATED = 'SCOPE_TEMPLATE_CREATED', 'Scope Template Created'
|
|
SCOPE_TEMPLATE_UPDATED = 'SCOPE_TEMPLATE_UPDATED', 'Scope Template Updated'
|
|
SCOPE_TEMPLATE_DELETED = 'SCOPE_TEMPLATE_DELETED', 'Scope Template Deleted'
|
|
SCOPE_TEMPLATE_INSTANTIATED = 'SCOPE_TEMPLATE_INSTANTIATED', 'Scope Template Instantiated'
|
|
AREA_TEMPLATE_CREATED = 'AREA_TEMPLATE_CREATED', 'Area Template Created'
|
|
AREA_TEMPLATE_UPDATED = 'AREA_TEMPLATE_UPDATED', 'Area Template Updated'
|
|
AREA_TEMPLATE_DELETED = 'AREA_TEMPLATE_DELETED', 'Area Template Deleted'
|
|
TASK_TEMPLATE_CREATED = 'TASK_TEMPLATE_CREATED', 'Task Template Created'
|
|
TASK_TEMPLATE_UPDATED = 'TASK_TEMPLATE_UPDATED', 'Task Template Updated'
|
|
TASK_TEMPLATE_DELETED = 'TASK_TEMPLATE_DELETED', 'Task Template Deleted'
|
|
|
|
# Team profile events
|
|
TEAM_PROFILE_CREATED = 'TEAM_PROFILE_CREATED', 'Team Profile Created'
|
|
TEAM_PROFILE_UPDATED = 'TEAM_PROFILE_UPDATED', 'Team Profile Updated'
|
|
TEAM_PROFILE_DELETED = 'TEAM_PROFILE_DELETED', 'Team Profile Deleted'
|
|
TEAM_PROFILE_ROLE_CHANGED = 'TEAM_PROFILE_ROLE_CHANGED', 'Team Profile Role Changed'
|
|
|
|
# Customer profile events
|
|
CUSTOMER_PROFILE_CREATED = 'CUSTOMER_PROFILE_CREATED', 'Customer Profile Created'
|
|
CUSTOMER_PROFILE_UPDATED = 'CUSTOMER_PROFILE_UPDATED', 'Customer Profile Updated'
|
|
CUSTOMER_PROFILE_DELETED = 'CUSTOMER_PROFILE_DELETED', 'Customer Profile Deleted'
|
|
CUSTOMER_PROFILE_ACCESS_GRANTED = 'CUSTOMER_PROFILE_ACCESS_GRANTED', 'Customer Profile Access Granted'
|
|
CUSTOMER_PROFILE_ACCESS_REVOKED = 'CUSTOMER_PROFILE_ACCESS_REVOKED', 'Customer Profile Access Revoked'
|
|
|
|
# Punchlist events
|
|
ACCOUNT_PUNCHLIST_CREATED = 'ACCOUNT_PUNCHLIST_CREATED', 'Account Punchlist Created'
|
|
ACCOUNT_PUNCHLIST_UPDATED = 'ACCOUNT_PUNCHLIST_UPDATED', 'Account Punchlist Updated'
|
|
ACCOUNT_PUNCHLIST_DELETED = 'ACCOUNT_PUNCHLIST_DELETED', 'Account Punchlist Deleted'
|
|
PROJECT_PUNCHLIST_CREATED = 'PROJECT_PUNCHLIST_CREATED', 'Project Punchlist Created'
|
|
PROJECT_PUNCHLIST_UPDATED = 'PROJECT_PUNCHLIST_UPDATED', 'Project Punchlist Updated'
|
|
PROJECT_PUNCHLIST_DELETED = 'PROJECT_PUNCHLIST_DELETED', 'Project Punchlist Deleted'
|
|
PUNCHLIST_STATUS_CHANGED = 'PUNCHLIST_STATUS_CHANGED', 'Punchlist Status Changed'
|
|
PUNCHLIST_PRIORITY_CHANGED = 'PUNCHLIST_PRIORITY_CHANGED', 'Punchlist Priority Changed'
|
|
|
|
# Session media events
|
|
SESSION_IMAGE_UPLOADED = 'SESSION_IMAGE_UPLOADED', 'Session Image Uploaded'
|
|
SESSION_IMAGE_UPDATED = 'SESSION_IMAGE_UPDATED', 'Session Image Updated'
|
|
SESSION_IMAGE_DELETED = 'SESSION_IMAGE_DELETED', 'Session Image Deleted'
|
|
SESSION_VIDEO_UPLOADED = 'SESSION_VIDEO_UPLOADED', 'Session Video Uploaded'
|
|
SESSION_VIDEO_UPDATED = 'SESSION_VIDEO_UPDATED', 'Session Video Updated'
|
|
SESSION_VIDEO_DELETED = 'SESSION_VIDEO_DELETED', 'Session Video Deleted'
|
|
SESSION_MEDIA_INTERNAL_FLAGGED = 'SESSION_MEDIA_INTERNAL_FLAGGED', 'Session Media Flagged as Internal'
|
|
|
|
# Session notes events
|
|
SESSION_NOTE_CREATED = 'SESSION_NOTE_CREATED', 'Session Note Created'
|
|
SESSION_NOTE_UPDATED = 'SESSION_NOTE_UPDATED', 'Session Note Updated'
|
|
SESSION_NOTE_DELETED = 'SESSION_NOTE_DELETED', 'Session Note Deleted'
|
|
|
|
# Report events
|
|
REPORT_CREATED = 'REPORT_CREATED', 'Report Created'
|
|
REPORT_UPDATED = 'REPORT_UPDATED', 'Report Updated'
|
|
REPORT_DELETED = 'REPORT_DELETED', 'Report Deleted'
|
|
REPORT_SUBMITTED = 'REPORT_SUBMITTED', 'Report Submitted'
|
|
REPORT_APPROVED = 'REPORT_APPROVED', 'Report Approved'
|
|
|
|
# Invoice events
|
|
INVOICE_GENERATED = 'INVOICE_GENERATED', 'Invoice Generated'
|
|
INVOICE_SENT = 'INVOICE_SENT', 'Invoice Sent'
|
|
INVOICE_PAID = 'INVOICE_PAID', 'Invoice Paid'
|
|
INVOICE_OVERDUE = 'INVOICE_OVERDUE', 'Invoice Overdue'
|
|
INVOICE_CANCELLED = 'INVOICE_CANCELLED', 'Invoice Cancelled'
|
|
|
|
# Labor & Revenue events
|
|
LABOR_RATE_CREATED = 'LABOR_RATE_CREATED', 'Labor Rate Created'
|
|
LABOR_RATE_UPDATED = 'LABOR_RATE_UPDATED', 'Labor Rate Updated'
|
|
LABOR_RATE_DELETED = 'LABOR_RATE_DELETED', 'Labor Rate Deleted'
|
|
REVENUE_RATE_CREATED = 'REVENUE_RATE_CREATED', 'Revenue Rate Created'
|
|
REVENUE_RATE_UPDATED = 'REVENUE_RATE_UPDATED', 'Revenue Rate Updated'
|
|
REVENUE_RATE_DELETED = 'REVENUE_RATE_DELETED', 'Revenue Rate Deleted'
|
|
|
|
# Messaging events
|
|
CONVERSATION_CREATED = 'CONVERSATION_CREATED', 'Conversation Created'
|
|
CONVERSATION_ARCHIVED = 'CONVERSATION_ARCHIVED', 'Conversation Archived'
|
|
CONVERSATION_PARTICIPANT_ADDED = 'CONVERSATION_PARTICIPANT_ADDED', 'Participant Added to Conversation'
|
|
CONVERSATION_PARTICIPANT_REMOVED = 'CONVERSATION_PARTICIPANT_REMOVED', 'Participant Removed from Conversation'
|
|
MESSAGE_SENT = 'MESSAGE_SENT', 'Message Sent'
|
|
MESSAGE_RECEIVED = 'MESSAGE_RECEIVED', 'Message Received'
|
|
MESSAGE_READ = 'MESSAGE_READ', 'Message Read'
|
|
MESSAGE_DELETED = 'MESSAGE_DELETED', 'Message Deleted'
|
|
|
|
# Monitoring events (audit trail)
|
|
MONITORING_INCOMPLETE_WORK_REMINDER = 'MONITORING_INCOMPLETE_WORK_REMINDER', 'Incomplete Work Reminder Sent'
|
|
MONITORING_NIGHTLY_ASSIGNMENTS = 'MONITORING_NIGHTLY_ASSIGNMENTS', 'Nightly Assignments Sent'
|
|
MONITORING_COMMAND_EXECUTED = 'MONITORING_COMMAND_EXECUTED', 'Monitoring Command Executed'
|
|
|
|
|
|
class NotificationChannelChoices(models.TextChoices):
|
|
"""Delivery channels for notifications"""
|
|
IN_APP = 'IN_APP', 'In-App'
|
|
EMAIL = 'EMAIL', 'Email'
|
|
SMS = 'SMS', 'SMS'
|
|
|
|
|
|
class NotificationStatusChoices(models.TextChoices):
|
|
"""Status choices for notifications"""
|
|
PENDING = 'PENDING', 'Pending'
|
|
SENT = 'SENT', 'Sent'
|
|
READ = 'READ', 'Read'
|
|
FAILED = 'FAILED', 'Failed'
|
|
|
|
|
|
class DeliveryStatusChoices(models.TextChoices):
|
|
"""Status choices for notification delivery attempts"""
|
|
PENDING = 'PENDING', 'Pending'
|
|
QUEUED = 'QUEUED', 'Queued'
|
|
SENDING = 'SENDING', 'Sending'
|
|
SENT = 'SENT', 'Sent'
|
|
DELIVERED = 'DELIVERED', 'Delivered'
|
|
FAILED = 'FAILED', 'Failed'
|
|
BOUNCED = 'BOUNCED', 'Bounced'
|
|
|
|
|
|
class ConversationTypeChoices(models.TextChoices):
|
|
"""Type of conversation"""
|
|
DIRECT = 'DIRECT', 'Direct Message'
|
|
GROUP = 'GROUP', 'Group Conversation'
|
|
SUPPORT = 'SUPPORT', 'Support Ticket' |