Ideas
Perhaps we should set a recommended best practice of all instances are created through a service. My thought for this comes from some comments that docteurklein made on an interface commit and discussions we had about trying to make sure that there is a way to handle circumstances we haven't thought about.
The specific example was the MonetaryInterface, I couldn't think of a use case that would be different from what I had put in place, but having the Montary instance created by
$monetary = $this->container->get('ecommerce.monetary')->getMonetary($amount, $baseCurrency);
instead of
$monetary = new Monetary($amount, $currency);
IamPersistent
Instead of modeling the application / model around common entities such as a 'sales order' , 'shipment strategy' one could consider the business process itself as an entity or at least a way to drive the order to cash flow.
Thoughts on Business Process based modeling Inspiran
The order to cash flow could be technically implemented using a work flow supporting concepts such as user activities, system activities, notifications, sub flows, ...
Use an work flow engine to drive various ecommerce flows Inspiran