# Dokumente, wie z.B. Rechnung, im Kundenkonto zum Download anbieten

**URL:** https://forum.shopware.com/t/dokumente-wie-z-b-rechnung-im-kundenkonto-zum-download-anbieten/69326
**Category:** Programmierung
**Created:** [2. September 2020 um 09:55 UTC](https://forum.shopware.com/t/dokumente-wie-z-b-rechnung-im-kundenkonto-zum-download-anbieten/69326 "2020-09-02T09:55:41Z")
**Posts on this page:** 11
**Page:** 1

<div class="post-metadata">

### Author: ![cabul](https://avatars.discourse-cdn.com/v4/letter/c/8dc957/32.png) [@cabul](https://forum.shopware.com/u/cabul)
#### Post date: [2. September 2020 um 09:55 UTC](https://forum.shopware.com/t/dokumente-wie-z-b-rechnung-im-kundenkonto-zum-download-anbieten/69326/1 "2020-09-02T09:55:41Z")

</div>

Hallo,

wenn ich im Twig Template eine Order debugge, ist „documents“ auf null, obwohl ich im Backend die Dokumente wie z.B. Lieferschein oder Rechnung erstellt habe und auch runterladen kann.

Ist das ein Shopware Bug oder muss ich im Backend noch eine Einstellung vornehmen? Ich wollte einen Controller bauen, der mithilfe der OrderNumber die Rechnung raussucht, aber habe keine Idee wie ich das machen soll. Shopware sucht die Dokumente anhand der $documentId und&nbsp;$deepLinkCode (Was auch immer das ist), auf die ich ja kein Zugriff habe.

Order debug:

```
Shopware\Core\Checkout\Order\OrderEntity {#8530 ▼
  #orderNumber: "10070"
  #currencyId: "b7d2554b0ce847cd82f3ac9bd1c0dfca"
  #currencyFactor: 1.0
  #salesChannelId: "10375cbc6041476b8ecd5e60c9342b2c"
  #billingAddressId: "161171b5b6ef44069063d6b36ea53bfd"
  #orderDateTime: DateTimeImmutable @1599029726 {#8528 ▶}
  #orderDate: DateTimeImmutable @1599004800 {#8532 ▶}
  #price: Shopware\Core\Checkout\Cart\Price\Struct\CartPrice {#8540 ▶}
  #amountTotal: 666.0
  #amountNet: 559.66
  #positionPrice: 666.0
  #taxStatus: "gross"
  #shippingCosts: Shopware\Core\Checkout\Cart\Price\Struct\CalculatedPrice {#8567 ▶}
  #shippingTotal: 0.0
  #orderCustomer: Shopware\Core\Checkout\Order\Aggregate\OrderCustomer\OrderCustomerEntity {#8633 ▶}
  #currency: null
  #languageId: "2fbb5fe2e29a4d70aa5854ce7ce3e20b"
  #language: null
  #salesChannel: null
  #addresses: null
  #deliveries: Shopware\Core\Checkout\Order\Aggregate\OrderDelivery\OrderDeliveryCollection {#8831 ▶}
  #lineItems: Shopware\Core\Checkout\Order\Aggregate\OrderLineItem\OrderLineItemCollection {#8875 ▶}
  #transactions: Shopware\Core\Checkout\Order\Aggregate\OrderTransaction\OrderTransactionCollection {#8525 ▶}
  #deepLinkCode: "xIl5pWy8EhP7sjif17N8TKy_Iv-0WWir"
  #autoIncrement: 72
  #stateMachineState: Shopware\Core\System\StateMachine\Aggregation\StateMachineState\StateMachineStateEntity {#8623 ▶}
  #stateId: "2dfa8f52c13540a6acce661fc9fba334"
  #customFields: null
  #documents: null
  #tags: null
  #affiliateCode: null
  #campaignCode: null
  #customerComment: null
  #_uniqueIdentifier: "66f8f548b3a949049aad9e91e304442a"
  #versionId: "0fa91ce3e96a4bc2be4bd9ce752c3425"
  #translated: []
  #createdAt: DateTimeImmutable @1599029726 {#8628 ▶}
  #updatedAt: DateTimeImmutable @1599034050 {#8634 ▶}
  #_entityName: "order"
  #extensions: array:1 [▶]
  #id: "66f8f548b3a949049aad9e91e304442a"
  +"billingAddressVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425"

```

Hat einer eine Idee oder Lösung?

---

<div class="post-metadata">

### Author: ![AlexGalax](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/alexgalax/32/9925_2.png) [@AlexGalax](https://forum.shopware.com/u/AlexGalax)
#### Post date: [2. September 2020 um 13:22 UTC](https://forum.shopware.com/t/dokumente-wie-z-b-rechnung-im-kundenkonto-zum-download-anbieten/69326/2 "2020-09-02T13:22:18Z")

</div>

Die Association auf die Dokumente wird standardmäßig nicht geladen:

> <https://github.com/shopware/platform/blob/c5b78af033b1438e497e28ec7b10ab25cedb8a0d/src/Storefront/Page/Account/Order/AccountOrderPageLoader.php#L108>

Ob das so gewollt ist, keine Ahnung. Am besten [Ticket erstellen](https://issues.shopware.com).

ggf. derweil die Methode decoraten und um `->addAssociation('documents')` erweitern. Bin mir aber grad nicht sicher, ob ein PageLoader als Service geladen wird und man ihn überhaupt erweitern kann…

---

<div class="post-metadata">

### Author: ![cabul](https://avatars.discourse-cdn.com/v4/letter/c/8dc957/32.png) [@cabul](https://forum.shopware.com/u/cabul)
#### Post date: [3. September 2020 um 07:08 UTC](https://forum.shopware.com/t/dokumente-wie-z-b-rechnung-im-kundenkonto-zum-download-anbieten/69326/3 "2020-09-03T07:08:06Z")

</div>

Vielen Dank für die Info. Ich habe das mal grad Im Core Code erweitert und es funktioniert. Wie kann ich die function am bsten überschreiben? Hast du eventuell ein Beispiel?

---

<div class="post-metadata">

### Author: ![AlexGalax](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/alexgalax/32/9925_2.png) [@AlexGalax](https://forum.shopware.com/u/AlexGalax)
#### Post date: [3. September 2020 um 07:15 UTC](https://forum.shopware.com/t/dokumente-wie-z-b-rechnung-im-kundenkonto-zum-download-anbieten/69326/4 "2020-09-03T07:15:26Z")

</div>

[https://docs.shopware.com/en/shopware-platform-dev-en/how-to/decorating-a-service](https://docs.shopware.com/en/shopware-platform-dev-en/how-to/decorating-a-service)

---

<div class="post-metadata">

### Author: ![WernerBu](https://avatars.discourse-cdn.com/v4/letter/w/71c47a/32.png) [@WernerBu](https://forum.shopware.com/u/WernerBu)
#### Post date: [3. September 2020 um 08:16 UTC](https://forum.shopware.com/t/dokumente-wie-z-b-rechnung-im-kundenkonto-zum-download-anbieten/69326/5 "2020-09-03T08:16:53Z")

</div>

Hallo,

ist es nicht einfacher bzw. sinnvoller einen Subscriber für das OrderRouteRequestEvent zu progammieren als gleich

den Service zu dekorieren?

Da wird das Criteria-Objekt ja übergeben, funktioniert bei mir zumindest.

Gruß,

Werner.

---

<div class="post-metadata">

### Author: ![AlexGalax](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/alexgalax/32/9925_2.png) [@AlexGalax](https://forum.shopware.com/u/AlexGalax)
#### Post date: [3. September 2020 um 08:33 UTC](https://forum.shopware.com/t/dokumente-wie-z-b-rechnung-im-kundenkonto-zum-download-anbieten/69326/6 "2020-09-03T08:33:46Z")

</div>

Stimmt, da gibt’s ja einen Event, dann auf jeden Fall darüber 🙂

---

<div class="post-metadata">

### Author: ![cabul](https://avatars.discourse-cdn.com/v4/letter/c/8dc957/32.png) [@cabul](https://forum.shopware.com/u/cabul)
#### Post date: [3. September 2020 um 10:44 UTC](https://forum.shopware.com/t/dokumente-wie-z-b-rechnung-im-kundenkonto-zum-download-anbieten/69326/7 "2020-09-03T10:44:13Z")

</div>

> [@WernerBu schrieb:](https://forum.shopware.com/profile/28422/WernerBu "WernerBu")
> 
> Hallo,
> 
> ist es nicht einfacher bzw. sinnvoller einen Subscriber für das OrderRouteRequestEvent zu progammieren als gleich
> 
> den Service zu dekorieren?
> 
> Da wird das Criteria-Objekt ja übergeben, funktioniert bei mir zumindest.
> 
> Gruß,
> 
> Werner.

Wie hast du das umgesetzt? Kannst du mir da Tipps geben oder ein Code Beispiel posten?&nbsp;

---

<div class="post-metadata">

### Author: ![WernerBu](https://avatars.discourse-cdn.com/v4/letter/w/71c47a/32.png) [@WernerBu](https://forum.shopware.com/u/WernerBu)
#### Post date: [3. September 2020 um 13:10 UTC](https://forum.shopware.com/t/dokumente-wie-z-b-rechnung-im-kundenkonto-zum-download-anbieten/69326/8 "2020-09-03T13:10:22Z")

</div>

Hallo,

also die einfachste Version ist wohl die hier:

```
 namespace ......... use Shopware\Storefront\Event\RouteRequest\OrderRouteRequestEvent; use Symfony\Component\EventDispatcher\EventSubscriberInterface;

 class OrderSubscriber implements EventSubscriberInterface { public function \_\_construct() { } public static function getSubscribedEvents() { return [OrderRouteRequestEvent::class =\> 'onOrderPageLoaded']; } public function onOrderPageLoaded(OrderRouteRequestEvent $event) { $criteria = $event-\>getCriteria(); $criteria-\>addAssociation('documents'); } }

```

Im services.xml vom Plugin dann noch registrieren als Subscriber.

Im Template ist dann die

```
 order.documents

```

verfügbar, was immer man dann damit auch machen will.

Gruß,

Werner.

---

<div class="post-metadata">

### Author: ![Laudenz](https://avatars.discourse-cdn.com/v4/letter/l/a9a28c/32.png) [@Laudenz](https://forum.shopware.com/u/Laudenz)
#### Post date: [15. April 2024 um 06:22 UTC](https://forum.shopware.com/t/dokumente-wie-z-b-rechnung-im-kundenkonto-zum-download-anbieten/69326/9 "2024-04-15T06:22:01Z")

</div>

Hallo @WernerBu ,  
vielen Dank für den Code.  
Nutzt du diesen Subscriber noch? Gibt es ein Update für Version 6.4.20.2?  
In dieser Version steht die Variable **order.documents** bereits zur Verfügung. Allerdings werden die Dokumente erst angezeigt, wenn sie zuvor per E-Mail versendet wurden und in der Datenbanktabelle ‚document‘ die Spalte ‚sent‘ den Wert **1** hat.  
Weißt du ob es eine Möglichkeit gibt alle Dokumente im Storefront anzuzeigen, egal ob sie per E-Mail verschickt wurden, oder nicht?

Grüße

---

<div class="post-metadata">

### Author: ![c.payenberg](https://avatars.discourse-cdn.com/v4/letter/c/f07891/32.png) [@c.payenberg](https://forum.shopware.com/u/c.payenberg)
#### Post date: [12. März 2025 um 18:24 UTC](https://forum.shopware.com/t/dokumente-wie-z-b-rechnung-im-kundenkonto-zum-download-anbieten/69326/10 "2025-03-12T18:24:58Z")

</div>

Hallo @Laudenz,  
falls das Thema noch aktuell sein sollte - in der OrderRoute werden für die documents-Association zwei Filter gesetzt, einmal für „sent“ und einmal für „config.displayInCustomerAccount“ (welche dann am Dokument gesetzt sein muss - wann diese gesetzt wird, habe ich auch noch nicht gefunden).

Umgehen bzw. setzen von eigenen Filtern geht bspw. durch einen Subscriber auf „OrderCriteriaEvent“, welcher nach dem Zusammenstellen der Criteria dispatched wird.

Da kann dann mit

```auto
        $criteria = $event->getCriteria();
        $criteria->getAssociation('documents')
            ->resetFilters();

```

bspw. der Filter für „sent“ und die Config-Abfrage entfernt werden - die Dokumente tauchen dann entsprechend in order.documents auf.

Grüße,  
Carsten

---

<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: [13. März 2025 um 07:32 UTC](https://forum.shopware.com/t/dokumente-wie-z-b-rechnung-im-kundenkonto-zum-download-anbieten/69326/11 "2025-03-13T07:32:36Z")

</div>

Prinzipiell funktioniert das auch im Standard:

1. Unter Einstellungen-\>Dokumente muss beim gewünschten Dokument (z.B. Rechnung) die Option _Dokument in „Mein Konto“ Bereich anzeigen_ aktiviert sein
2. Zudem muss die generierte Rechnung an den Kunden versendet worden sein oder als gesendet markiert sein

 ![bestellung](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/3X/b/2/b2a67858f0d412ecd4a7fd7cb1253b83fe403c53.png)

**Achtung!**  
Die Einstellung unter 1) muss vor der Generierung der Dokumente gesetzt sein. Das heißt, für bereits erstellte Dokumente gilt das nicht, diese werden rückwirkend auch nicht im Kundenkonto angezeigt. Wieso diese Logik? Keine Ahnung.

Aber bis auf diese Einschränkung funktioniert das auch Out-Of-The-Box!
