Event System
Logidav uses Symfony's EventDispatcher for domain events. Events are defined in src/EventBundle/Events/.
Event Flow
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:
class SaleEventSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [
AfterSaleCreatedEvent::class => 'onSaleCreated',
AfterSaleCanceledEvent::class => 'onSaleCanceled',
];
}
}
:::warning 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