Skip to content

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]

Diagram

Event Catalog ​

Sale Events ​

EventTriggerSide Effects
AfterSaleCreatedEventNew sale persistedQueue marketplace notifications, initialize sale log
AfterSaleUpdatedEventSale data changedSync status with Magento, recalculate totals
AfterSaleCanceledEventSale canceledRevert stock reservations, notify marketplace, update Magento
AfterSaleAddressUpdateEventShipping address changedUpdate carrier data, recalculate shipping

SaleProduct Events ​

EventTriggerSide Effects
AfterSaleProductCreatedEventNew line item addedReserve stock, calculate availability
AfterSaleProductUpdatedEventLine item data changedRecalculate totals, update shipping
AfterSaleProductCanceledEventLine item canceledRelease stock, adjust sale totals
AfterSaleProductShippedEventLine item shippedUpdate tracking, notify customer
AfterSaleProductDeliveredEventLine item deliveredUpdate sale status, trigger review request
AfterSaleProductReturnedEventLine item returnedProcess return, initiate refund

Shipping Events ​

EventTriggerSide Effects
AfterShipmentCreatedEventShipment record createdSend tracking to customer, notify marketplace
AfterShipmentUpdatedEventTracking data updatedSync tracking with carrier
AfterShipmentDeliveredEventDelivery confirmedUpdate sale product status
AfterTrackingUpdatedEventCarrier tracking changedSync with ShipmentTrackingSynchronizer
AfterRdvCreatedEventDelivery appointment setNotify customer, update carrier schedule

Product Events ​

EventTriggerSide Effects
AfterProductCreatedEventNew product in catalogSync to Magento, initialize stock
AfterProductUpdatedEventProduct data changedSync updates to Magento and Meduse
AfterProductStockChangedEventStock quantity mutatedLog to ProductQtyLog, update availability

Calculation Events ​

EventTriggerSide Effects
CalculateSaleProductShippingAmountEventShipping cost neededCalculate 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 ​

Internal developer documentation for Menzzo systems.