Lieferzeit in sORDER-Mail bei einer Bestellung aus dem Backend

Hallo zusammen,

bei einer Bestellung aus dem Backend (Plugin: Backend Bestellungen) bleibt die Variable “Lieferzeit” leer.

Der Code in der Mail Vorlage:

      {if $details.modus == '0'} 
      	{if isset($details.active)&&!$details.active} 
        	nicht verfügbar 
        {elseif $details.esd} 
        	als Sofortdownload verfügbar 
        {elseif $details.instock > 0}
        	Auf Lager, Lieferzeit 1-3 Tage
        {elseif $details.shippingtime}
        	Nicht auf Lager, Lieferzeit {$details.shippingtime} Tage
        {else}
        	Nicht auf Lager, Lieferzeit 10-20 Tage
      	{/if}
      {else}
      {/if} 

Es greift dabei das “else” mit “Nicht auf Lager, Lieferzeit 10-20 Tage”, führt man die gleiche Bestellung aus dem Frontend durch, funktioniert es.

Die gelieferten Variablen:

{$sOrderDetails.0.additional_details.taxID}: 1
{$sOrderDetails.0.additional_details.tax}: 19
{$sOrderDetails.0.additional_details.instock}: -1
{$sOrderDetails.0.additional_details.isAvailable}: true
{$sOrderDetails.0.additional_details.weight}: 0
{$sOrderDetails.0.additional_details.shippingtime}: 3-5
{$sOrderDetails.0.additional_details.pricegroupActive}: false
{$sOrderDetails.0.additional_details.pricegroupID}: null
{$sOrderDetails.0.additional_details.length}: 0
{$sOrderDetails.0.additional_details.height}: 0

Laut den gelieferten Variablen wird die entsprechende Variable mit “3-5” gefüllt. Bei Benutzung der Variable ist diese jedoch leer (nur bei Bestellung über das Backend). Hat jemand ein Workaround oder ist dieser Bug schon bekannt?

So wie es auf GitHub aussieht, wird die variable shippingtime nicht befüllt:

https://github.com/shopwareLabs/SwagBackendOrder/blob/master/Controllers/Backend/SwagBackendOrder.php

    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;
    }

Kann das jemand bestätigen?

Habe mal ein Ticket angelegt:

https://issues.shopware.com/#/issues/PT-6287

Hallo, zusammen!

ich habe mir das Problem etwas anders gelöst. Ich gebe keine andere Lieferzeiten ein, stattdessen stelle ich voaussichtliche Erscheinungsdatum ein und in Bestellbestätigung habe ich wie folgt realisiert:

{if $sOrderDetails.0.releasedate > $sOrderDetails.0.datum}Lieferbar ab {$sOrderDetails.0.releasedate}{else}Artikel ist vorrätig{/if}