Appearance
Event System
Logidav uses Symfony's EventDispatcher for domain events. Events are defined in src/EventBundle/Events/.
Event Flow
View diagram source
flowchart LR
A[Action] --> B[Event Dispatched]
B --> C[Subscriber A]
B --> D[Subscriber B]
C --> E[Side Effect 1]
D --> F[Side Effect 2]
Event Catalog
Sale Events
| Event | Trigger | Side Effects |
|---|---|---|
AfterSaleCreatedEvent | New sale persisted | Queue marketplace notifications, initialize sale log |
AfterSaleUpdatedEvent | Sale data changed | Sync status with Magento, recalculate totals |
AfterSaleCanceledEvent | Sale canceled | Revert stock reservations, notify marketplace, update Magento |
AfterSaleAddressUpdateEvent | Shipping address changed | Update carrier data, recalculate shipping |
SaleProduct Events
| Event | Trigger | Side Effects |
|---|---|---|
AfterSaleProductCreatedEvent | New line item added | Reserve stock, calculate availability |
AfterSaleProductUpdatedEvent | Line item data changed | Recalculate totals, update shipping |
AfterSaleProductCanceledEvent | Line item canceled | Release stock, adjust sale totals |
AfterSaleProductShippedEvent | Line item shipped | Update tracking, notify customer |
AfterSaleProductDeliveredEvent | Line item delivered | Update sale status, trigger review request |
AfterSaleProductReturnedEvent | Line item returned | Process return, initiate refund |
Shipping Events
| Event | Trigger | Side Effects |
|---|---|---|
AfterShipmentCreatedEvent | Shipment record created | Send tracking to customer, notify marketplace |
AfterShipmentUpdatedEvent | Tracking data updated | Sync tracking with carrier |
AfterShipmentDeliveredEvent | Delivery confirmed | Update sale product status |
AfterTrackingUpdatedEvent | Carrier tracking changed | Sync with ShipmentTrackingSynchronizer |
AfterRdvCreatedEvent | Delivery appointment set | Notify customer, update carrier schedule |
Product Events
| Event | Trigger | Side Effects |
|---|---|---|
AfterProductCreatedEvent | New product in catalog | Sync to Magento, initialize stock |
AfterProductUpdatedEvent | Product data changed | Sync updates to Magento and Meduse |
AfterProductStockChangedEvent | Stock quantity mutated | Log to ProductQtyLog, update availability |
Calculation Events
| Event | Trigger | Side Effects |
|---|---|---|
CalculateSaleProductShippingAmountEvent | Shipping cost needed | Calculate carrier-specific shipping amount |
Event Subscriber Pattern
All event subscribers in Logidav follow the Symfony EventSubscriberInterface pattern:
php
class SaleEventSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [
AfterSaleCreatedEvent::class => 'onSaleCreated',
AfterSaleCanceledEvent::class => 'onSaleCanceled',
];
}
}Side effect ordering
Subscribers execute in priority order. Be cautious when adding new subscribers to existing events, as order of execution may affect data consistency.
See also
- Data Model — entities that trigger and are affected by events
- Queue Debugging — when event side effects queue async jobs
- Sales Import workflow — sale events in context