# Dokument Variablen Rechnung

**URL:** <https://forum.shopware.com/t/dokument-variablen-rechnung/101833>\
**Category:** Shopware 6 (German)\
**Created:** [8. November 2023 um 10:41 UTC](https://forum.shopware.com/t/dokument-variablen-rechnung/101833 "2023-11-08T10:41:24Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tuntrarider](https://avatars.discourse-cdn.com/v4/letter/t/f17d59/32.png) [@Tuntrarider](https://forum.shopware.com/u/Tuntrarider)\
**Post date:** [8. November 2023 um 10:41 UTC](https://forum.shopware.com/t/dokument-variablen-rechnung/101833/1 "2023-11-08T10:41:24Z")

</div>

Hallo zusammen,  
ich versuche seit mehreren Tagen das Artikelgewicht in der Rechnung darzustellen. Die mir bekannten Variablen funktionieren leider nicht mehr.  
Haben sich diese geändert?

Zudem würde ich gerne noch Zusatzfelder ausgeben. Vielleicht kann hier jemand helfen.

Vielen Dank.

MFG  
Jo

---

<div class="post-metadata">

**Author:** ![area-net-gmbh](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/area-net-gmbh/32/21995_2.png) [@area-net-gmbh](https://forum.shopware.com/u/area-net-gmbh)\
**Post date:** [8. November 2023 um 15:28 UTC](https://forum.shopware.com/t/dokument-variablen-rechnung/101833/2 "2023-11-08T15:28:37Z")

</div>

Hallo Tuntrarider,

wenn du in deinem eigenen Theme ein Dokumententemplate angelegt hast, kannst du über  
{{ lineItem|json\_encode(constant(‚JSON\_PRETTY\_PRINT‘)) }}  
die verfügbaren Variablen anzeigen lassen.

Zusatzfelder kannst du mit {{ lineItem.payload.customFields.NAME\_DES\_ZUSATZFELDES }} ausgeben.

Das Gewicht steht im Standard in der Rechnung nicht zur Verfügung.  
Über ein kleines Plugin kannst du das Gewicht dem Payload hinzufügen.

Dafür ein Subscriber anlegen und die service.xml nicht vergessen

```auto
use Shopware\Core\Checkout\Cart\Event\BeforeLineItemAddedEvent;
use Shopware\Core\Framework\Context;
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RequestStack;

class LineItemSubscriber implements EventSubscriberInterface
{
    private $productRepository;
    private $requestStack;

    public function __construct(EntityRepository $productRepository, RequestStack $requestStack) {
        $this->productRepository = $productRepository;
        $this->requestStack = $requestStack;
    }

    public static function getSubscribedEvents()
    {
        return [
            BeforeLineItemAddedEvent::class => 'beforeLineItemAdded',
        ];
    }

    /**
     * @param BeforeLineItemAddedEvent $event
     * @throws \Shopware\Core\Checkout\Cart\Exception\InvalidPayloadException
     */
    public function beforeLineItemAdded(BeforeLineItemAddedEvent $event)
    {
        $lineItem = $event->getLineItem();

        if ($lineItem->getType() == "product") {
            foreach ($this->requestStack->getCurrentRequest()->get('lineItems') as $key => $item) {
                if ($lineItem->getId() == $key) {
                    $criteria = new Criteria();
                    $criteria->addFilter(new EqualsFilter('id', $lineItem->getId()));
                    $product = $this->productRepository->search($criteria, Context::createDefaultContext())->first();
                    $lineItem->setPayloadValue('weight', $product->getWeight());
                }
            }
        }
    }
}

```

service.xml

```auto
<services>
      <service id="NAMESPACE\LineItemSubscriber">
          <argument id="product.repository" type="service" />
          <argument id="request_stack" type="service" />
          <tag name="kernel.event_subscriber"/>
      </service>
  </services>

```

Danach kannst du im Dokumententemplate über {{ lineItem.payload.weight }} auf den Value zugreifen

---

<div class="post-metadata">

**Author:** ![Tuntrarider](https://avatars.discourse-cdn.com/v4/letter/t/f17d59/32.png) [@Tuntrarider](https://forum.shopware.com/u/Tuntrarider)\
**Post date:** [8. November 2023 um 18:46 UTC](https://forum.shopware.com/t/dokument-variablen-rechnung/101833/3 "2023-11-08T18:46:49Z")

</div>

Grüß dich,

spitze! Vielen Dank, das hat mir noch gefehlt. Wobei ich diese beiden Variablen schon mal hatte. Als Hinweis für alle: Wenn man die Felder testen möchte, reicht es nicht vorhandene Bestellungen mit entsprechenden Positionen sich generieren zu lassen.  
Man muss eine komplett neue Bestellung auslösen, dann sind auch die Zusatzfelder zu sehen.

Zum Plugin melde ich mich später nochmal.

Vielen Dank für Deine Unterstützung 🙏

MFG  
Jo

---

<div class="post-metadata">

**Author:** ![Tuntrarider](https://avatars.discourse-cdn.com/v4/letter/t/f17d59/32.png) [@Tuntrarider](https://forum.shopware.com/u/Tuntrarider)\
**Post date:** [9. November 2023 um 09:22 UTC](https://forum.shopware.com/t/dokument-variablen-rechnung/101833/4 "2023-11-09T09:22:43Z")

</div>

Guten Morgen,

auch das mit dem Plugin hat geklappt.

Musste vor der foreach-Schleife noch diese Zeile ergänzen, sonst kommt es beim Checkout zu einem 500er, weil die Schleife vermutlich mit dem falschen Argument aufgerufen wird (Array, Objekt), das Argument ist aber vom Typ NULL.

Jetzt wird zunächst überprüft, ob `$lineItems` nicht `null` ist und ob es ein Array ist, bevor es die `foreach` -Schleife durchläuft.

```auto
$lineItems = $this->requestStack->getCurrentRequest()->get('lineItems');

if ($lineItems !== null && is_array($lineItems)) {
    foreach ($lineItems as $key => $item) {
        // ...
    }
}

```

Das wars aber auch schon. Vielen, vielen Dank nochmal für deinen Denkanstoß. Ich steige gerade erst in die SW6 Plugin Entwicklung ein.

Schönen Tag zusammen.

LG  
Jo

---

<div class="post-metadata">

**Author:** ![system](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/3X/2/9/29c7587ba660f00e4995d1743162782e5d6d8653.svg) [@system](https://forum.shopware.com/u/system)\
**Post date:** [9. Dezember 2023 um 09:23 UTC](https://forum.shopware.com/t/dokument-variablen-rechnung/101833/5 "2023-12-09T09:23:12Z")

</div>

Dieses Thema wurde automatisch 30 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.
