# Nach eMail-Versand (in sOrder) wird Main-Shop dupliziert ...

**URL:** https://forum.shopware.com/t/nach-email-versand-in-sorder-wird-main-shop-dupliziert/21339
**Category:** Shopware 3.5
**Tags:** programming
**Created:** [15. Juli 2014 um 12:02 UTC](https://forum.shopware.com/t/nach-email-versand-in-sorder-wird-main-shop-dupliziert/21339 "2014-07-15T12:02:11Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![TeichDatensysteme](https://avatars.discourse-cdn.com/v4/letter/t/43a26b/32.png) [@TeichDatensysteme](https://forum.shopware.com/u/TeichDatensysteme)
#### Post date: [15. Juli 2014 um 12:02 UTC](https://forum.shopware.com/t/nach-email-versand-in-sorder-wird-main-shop-dupliziert/21339/1 "2014-07-15T12:02:11Z")

</div>

Hallo! Und zwar verschicke ich über ein Plugin Status-Mails. Ich habe mich da da an Funktionalitäten aus der sOrder gehalten und konnte mittlerweile nachvollziehen, dass wenn ich mehrere Status-eMails von verschiedenen Bestellungen hintereinander verschicke, für jeden eMail Versand ein Shop unter Einstellungen \> Grundeinstellungen \> Shops angelegt wird, um genauer zu sein - quasi eine Kopie des Haupt-Shops, nur ohne Währung und mit Eintrag des virtuellen Pfades. Das hat mich jetzt soweit verwirrt, dass das ich den Versand komplett nur noch über die sOrder testweise mache, mit … `Shopware()-\>Modules()-\>Order()-\>setOrderStatus($orderId, $statusIs, true);` Wenn ich wie gesagt genau das mehrfach aufrufe (mit verschiedenen Bestell-IDs), wird für jeden Versand (außer beim ersten) ein Shop erstellt. Ich habe mich da mal durchgeklickt durch die Core-Funktionalitäten, und Frage mich immer noch, was das auslösen kann. z.B. in der setOrderStatus wird folgendes aufgerufen `$mail = $this-\>createStatusMail($orderStatusId, $comment, $orderId);` Wenn ich mir die createStatusMail anschaue, passt die Parameter-Reihenfolge eigentlich gar nicht, die in der setOrderStatus reinkommen. createStatusMail verlangt nämlich: orderId, statusId und dann ein template. Nicht orderStatus, comment und dann orderId. Weiter komme ich zur createStatusMail … Darin wird der Shop geholt, für den Mail-Versand: ` $repository = Shopware()-\>Models()-\>getRepository('Shopware\Models\Shop\Shop'); $shopId = is\_numeric($order['language']) ? $order['language'] : $order['subshopID']; $shop = $repository-\>getActiveById($shopId); $shop-\>registerResources(Shopware()-\>Bootstrap()); ` Die getActiveById löst offensichtlich die Duplikation auf, so wie ich das sehe: ` $builder = $this-\>getActiveQueryBuilder(); $builder-\>andWhere('shop.id=:shopId'); $builder-\>setParameter('shopId', $id); $shop = $builder-\>getQuery()-\>getOneOrNullResult(); if ($shop !== null) { $this-\>fixActive($shop); } ` Das fixActive beinhaltet Code, der dem sehr nahe kommt was ja beim kopieren passiert. Und das wird immer ausgelöst, sobald der $shop !== null ist - also wenn einer gefunden wurde? … Das passiert ebenfalls in der getActiveByRequest. Kann das wer verstehen, bzw. hat Lösungen bezüglich des Mail-Versandes? Wenn ich eine Bestell-Status-Mail verschicke macht sich das bemerkbar, nur wenn ich mehrere hintereinander ine iner Sitzung verschicke passiert das … Ich freue mich über Ideen! Schöne Grüße, Niklas

---

<div class="post-metadata">

### Author: ![EikeBrandtWarneke](https://avatars.discourse-cdn.com/v4/letter/e/cdc98d/32.png) [@EikeBrandtWarneke](https://forum.shopware.com/u/EikeBrandtWarneke)
#### Post date: [15. Juli 2014 um 12:18 UTC](https://forum.shopware.com/t/nach-email-versand-in-sorder-wird-main-shop-dupliziert/21339/2 "2014-07-15T12:18:49Z")

</div>

Das ist ein bekannter Bug - sobald du anschließend ein Shopware()-\>Models()-\>flush() nutzt, wird der Shop gespeichert. Lösche einfach die nicht persistenten models mit Shopware()-\>Models()-\>clear() direkt nach dem Mail Versand und der Shop wird nicht mehr dupliziert. Viele Grüße

---

<div class="post-metadata">

### Author: ![TeichDatensysteme](https://avatars.discourse-cdn.com/v4/letter/t/43a26b/32.png) [@TeichDatensysteme](https://forum.shopware.com/u/TeichDatensysteme)
#### Post date: [15. Juli 2014 um 14:11 UTC](https://forum.shopware.com/t/nach-email-versand-in-sorder-wird-main-shop-dupliziert/21339/3 "2014-07-15T14:11:17Z")

</div>

AquaTuning :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: Vielen Dank für Deine Hilfe und das schnelle Feedback, das hat geholfen! Egal in welcher Kombination der Versand angestoßen wird - mit dem zurücksetzen der Models klappt das jetzt wunderbar. VIELEN Dank! :thumbup: Schöne Grüße, Niklas

---

<div class="post-metadata">

### Author: ![BJunk](https://avatars.discourse-cdn.com/v4/letter/b/7ab992/32.png) [@BJunk](https://forum.shopware.com/u/BJunk)
#### Post date: [4. November 2014 um 09:31 UTC](https://forum.shopware.com/t/nach-email-versand-in-sorder-wird-main-shop-dupliziert/21339/4 "2014-11-04T09:31:38Z")

</div>

Hallo! Kann jemand einmal den fertigen Code hier posten? Muss das Shopware()-\>Models()-\>clear() vor dem $this-\>fixActive($shop) stehen? Und wenn das fixActive() das Problem ist, könnte man es dann nicht einfach auskommentieren? LG BJunk

---

<div class="post-metadata">

### Author: ![TeichDatensysteme](https://avatars.discourse-cdn.com/v4/letter/t/43a26b/32.png) [@TeichDatensysteme](https://forum.shopware.com/u/TeichDatensysteme)
#### Post date: [6. November 2014 um 11:36 UTC](https://forum.shopware.com/t/nach-email-versand-in-sorder-wird-main-shop-dupliziert/21339/5 "2014-11-06T11:36:07Z")

</div>

Nein nein, das oben von mir war nur ein Versuch der Fehleranalyse. Du musst einfach nur nach dem Versand das clear() verwenden. ` $result = Shopware()-\>Modules()-\>Order()-\>sendStatusMail($foo); ... try { Shopware()-\>Models()-\>clear(); } catch ... ` Ohne das clear() werden die Shops kopiert, mit dem clear in Verbindung (wichtig - nach jedem einzelnen Versand!) passiert das nicht mehr. Schöne Grüße, Niklas
