Author: Adam Piotrowski (adam@wellcommerce.org)
Inheritance: implements WellCommerce\Bundle\ShopBundle\Storage\ShopStorageInterface
 public function create() : ClientInterface
 {
     $client = new Client();
     $client->setContactDetails($this->contactDetailsFactory->create());
     $client->setClientDetails($this->detailsFactory->create());
     $client->setBillingAddress($this->billingAddressFactory->create());
     $client->setShippingAddress($this->shippingAddressFactory->create());
     $client->setShop($this->shopStorage->getCurrentShop());
     $client->setClientGroup($this->shopStorage->getCurrentShop()->getClientGroup());
     return $client;
 }
 public function create() : ClientShippingAddressInterface
 {
     $address = new ClientShippingAddress();
     $address->setFirstName('');
     $address->setLastName('');
     $address->setLine1('');
     $address->setLine2('');
     $address->setPostalCode('');
     $address->setState('');
     $address->setCity('');
     $address->setCountry($this->shopStorage->getCurrentShop()->getDefaultCountry());
     $address->setCopyBillingAddress(true);
     return $address;
 }
 public function create() : OrderInterface
 {
     $order = new Order();
     $order->setConfirmed(false);
     $order->setProducts($this->createEmptyCollection());
     $order->setProductTotal(new OrderProductTotal());
     $order->setModifiers($this->createEmptyCollection());
     $order->setPayments($this->createEmptyCollection());
     $order->setOrderStatusHistory($this->createEmptyCollection());
     $order->setComment('');
     $order->setCurrency($this->requestHelper->getCurrentCurrency());
     $order->setSummary(new OrderSummary());
     $order->setShop($this->shopStorage->getCurrentShop());
     $order->setClient($this->securityHelper->getCurrentClient());
     $order->setSessionId($this->requestHelper->getSessionId());
     $client = $this->securityHelper->getCurrentClient();
     if ($client instanceof ClientInterface) {
         $order->setClientDetails($client->getClientDetails());
         $order->setContactDetails($client->getContactDetails());
         $order->setBillingAddress($client->getBillingAddress());
         $order->setShippingAddress($client->getShippingAddress());
     } else {
         $order->setClientDetails($this->detailsFactory->create());
         $order->setContactDetails($this->contactDetailsFactory->create());
         $order->setBillingAddress($this->billingAddressFactory->create());
         $order->setShippingAddress($this->shippingAddressFactory->create());
     }
     return $order;
 }