dodil/erp-brick-sales-order
DODIL ERP brick: sales order
src/brick_sales_order/domain/events.py
"""Domain events: facts the aggregate records when a rule lets something happen. The use case may publish them."""
from dataclasses import dataclass
from decimal import Decimal
@dataclass(frozen=True)
class Event:
sales_order_id: str
@dataclass(frozen=True)
class OrderDrafted(Event):
source_kind: str = ""
source_id: str = ""
@dataclass(frozen=True)
class OrderConfirmed(Event):
order_no: str = ""
@dataclass(frozen=True)
class DeliveryRecorded(Event):
line_no: int = 0
quantity: Decimal = Decimal(0)
delivery_ref: str = ""
@dataclass(frozen=True)
class InvoiceRequested(Event):
request_no: int = 0
kind: str = ""
@dataclass(frozen=True)
class OrderAmended(Event):
revision: int = 0
@dataclass(frozen=True)
class OrderCancelled(Event):
reason: str = ""
@dataclass(frozen=True)
class OrderDone(Event):
pass
@dataclass(frozen=True)
class SuggestionDecided(Event):
step: str = ""
suggestion_no: int = 0
decision: str = ""