/** * prepares the correct array structure for the mail template * * @param \Shopware\Models\Order\Order $orderModel * @return array */ private function prepareOrderDetailsConfirmationMailData($orderModel) { $details = Shopware()->Db()->fetchAll('SELECT * FROM s_order_details WHERE orderID = ?', [$orderModel->getId()]); //we need to fake a shop instance if we want to use the Articles Module $shop = Shopware()->Models()->getRepository('Shopware\\Models\\Shop\\Shop')->getActiveById($orderModel->getLanguageSubShop()->getId()); $shop->registerResources(Shopware()->Bootstrap()); foreach ($details as &$detail) { /** @var Shopware\Models\Article\Repository $articleDetailRepository */ $articleDetailRepository = Shopware()->Models()->getRepository('Shopware\\Models\\Article\\Detail'); /** @var Shopware\Models\Article\Detail[] $articleDetailModel */ $articleDetailModel = $articleDetailRepository->findBy(['number' => $detail['articleordernumber']]); /** @var Shopware\Models\Article\Detail $articleDetailModel */ $articleDetailModel = $articleDetailModel[0]; $detail['articlename'] = $detail['name']; unset($detail['name']); $detail['userID'] = $orderModel->getCustomer()->getId(); $detail['ordernumber'] = $detail['articleordernumber']; unset($detail['articleordernumber']); $detail['currencyFactor'] = $orderModel->getCurrencyFactor(); $detail['mainDetailId'] = $articleDetailModel->getArticle()->getMainDetail()->getId(); $detail['articleDetailId'] = $articleDetailModel->getId(); $detail['instock'] = $articleDetailModel->getInStock(); $detail['taxID'] = $articleDetailModel->getArticle()->getTax()->getId(); if ($orderModel->getNet()) { $detail['taxID'] = 0; } $detail['maxpurchase'] = $articleDetailModel->getMaxPurchase(); $detail['minpurchase'] = $articleDetailModel->getMinPurchase(); $detail['purchasesteps'] = $articleDetailModel->getPurchaseSteps(); $detail['stockmin'] = $articleDetailModel->getStockMin(); $detail['suppliernumber'] = $articleDetailModel->getSupplierNumber(); $detail['laststock'] = $articleDetailModel->getArticle()->getLastStock(); $detail['purchaseunit'] = $articleDetailModel->getPurchaseUnit(); $detail['releasedate'] = $articleDetailModel->getReleaseDate(); $detail['modus'] = $articleDetailModel->getArticle()->getMode(); $detail['datum'] = $orderModel->getOrderTime()->format('Y-m-d H:i:s'); $detail['esdarticle'] = $articleDetailModel->getEsd(); $detail['netprice'] = $this->calculateNetPrice($detail['price'], $detail['tax_rate']); $detail['amount'] = $detail['price'] * $detail['quantity']; $detail['amountnet'] = $detail['netprice'] * $detail['quantity']; $detail['priceNumeric'] = $detail['price']; /** * order basket attributes fake */ $detail['ob_attr1'] = ''; $detail['ob_attr2'] = ''; $detail['ob_attr3'] = ''; $detail['ob_attr4'] = ''; $detail['ob_attr5'] = ''; $detail['ob_attr6'] = ''; $detail['partnerID'] = ''; $detail['shippinginfo'] = 1; if ($articleDetailModel->getUnit()) { $detail['unitID'] = $articleDetailModel->getUnit()->getId(); } $detail['additional_details'] = Shopware()->Modules()->Articles()->sGetProductByOrdernumber($detail['ordernumber']); } return $details; }