# Endlich!!! Stornorechnung mit eigenem Nummernkreis

**URL:** <https://forum.shopware.com/t/endlich-stornorechnung-mit-eigenem-nummernkreis/58911>\
**Category:** Administration\
**Created:** [3. April 2019 um 14:21 UTC](https://forum.shopware.com/t/endlich-stornorechnung-mit-eigenem-nummernkreis/58911 "2019-04-03T14:21:09Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![artep](https://avatars.discourse-cdn.com/v4/letter/a/aca169/32.png) [@artep](https://forum.shopware.com/u/artep)\
**Post date:** [3. April 2019 um 14:21 UTC](https://forum.shopware.com/t/endlich-stornorechnung-mit-eigenem-nummernkreis/58911/1 "2019-04-03T14:21:09Z")

</div>

Sodele… endlich nach fast 8 Jahren rumfragerei von vielen Mitgliedern und mir, hat&nbsp;mein Sohn rausgefunden&nbsp;warum bei einer Stornorechnung nicht der eigene Nummernkreis ausgegeben wird, weil ich ihn heute damit gelöchtert hab und das unbedingt haben wollte…

…SW hat eine Abfrage in die Document.php integriert die verhindert dass der Nummernkreis bei einer Stornorechnung ausgegeben wird. Wer also seinen Nummernkreis jetzt endlich angezeigt haben möchte (ausgenommen Pickware-Anwender - siehe unten)&nbsp;&nbsp;muss nachfolgende&nbsp;Zeilen auskommentieren. (Wir nutzen noch 5.3.7&nbsp;kann sein, dass die Zeilennummern in anderen Versionen abweichen).

/engine/Shopware/Components/Document.php Zeile 657 bis 679 und zwar so:

```
 // Update numberrange, except for cancellations
            //if ($typID != 4) {
                if (!empty($this->_document['numbers'])) {
                    $numberrange = $this->_document['numbers'];
                } else {
                    // The typID is indexed with base 0, so we need increase the typID
                    if (!in_array($typID, ['1', '2', '3'])) {
                        $typID = $typID + 1;
                    }
                    $numberrange = 'doc_' . $typID;
                }

                /** @var NumberRangeIncrementerInterface $incrementer */
                $incrementer = Shopware()->Container()->get('shopware.number_range_incrementer');

                // Get the next number and save it in the document
                $nextNumber = $incrementer->increment($numberrange);

                Shopware()->Db()->query('
                    UPDATE `s_order_documents` SET `docID` = ? WHERE `ID` = ? LIMIT 1 ;
                ', [$nextNumber, $rowID]);

                $bid = $nextNumber;
            //}

```

&nbsp;

In den Textbausteinen unter&nbsp;DocumentIndexCancelationNumber folgendes eingeben:&nbsp;Stornorechnung Nr. {$Document.id} zur Rechnung Nr. {$Document.bid}

Cache löschen und testen. Die eigentliche Rechnungsnummer muss weiterhin ins Feld eingetragen werden als Bezug.

* * *

**ACHTUNG für&nbsp;Pickware ​-Anwender:**

In der Doku steht:&nbsp;

_Stornorechnung erstellen_

_Eine Stornorechnung hat standardmäßig keinen Nummernkreis. Wenn Du eine Stornorechnung erstellen möchtest, musst Du in dem Feld&nbsp; **Rechnungs-Nummer** &nbsp;die Rechnungsnummer der zu stornierenden Rechnung eingeben. Das PDF-Dokument erhält damit die Bezeichnung&nbsp; **Stornorechnung zur Rechnung Nr.** &nbsp;und ist somit ein Verweis auf die stornierte Rechnung._

_Bitte beachte, dass Teilstornierungen im Standard von Shopware nicht supportet werden! Sofern Du das Plugin Shopware ERP powered by Pickware einsetzt, wird der Stornorechnung eine fortlaufende Nummer aus dem definierten Nummernkreis zugewiesen. Zusätzlich kann hierbei auch weiterhin die Rechnungsnummer als Verweis mit angegeben werden. Mit diesem Plugin ist es auch möglich Teilstorno zu erstellen._

Für mich hört sich das eher so an: du willst ne fortlaufende Nummer? Kauf das Plugin&nbsp; ![Money-Mouth](https://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/money-mouth.png "Money-Mouth")

Und natürlich kann man auch ohne das Plugin Teilstornos durchführen. Mache ich schon seit eh und je.&nbsp;Keine Ahnung warum Shopware sowas macht???&nbsp; Ist es soo schlimm die Stornorechnungsnummer ausgeben zu lassen?

---

<div class="post-metadata">

**Author:** ![Moritz\_Naczenski](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/moritz_naczenski/32/7792_2.png) [@Moritz\_Naczenski](https://forum.shopware.com/u/Moritz_Naczenski)\
**Post date:** [3. April 2019 um 15:52 UTC](https://forum.shopware.com/t/endlich-stornorechnung-mit-eigenem-nummernkreis/58911/2 "2019-04-03T15:52:12Z")

</div>

Scheint so zumindest noch zu existieren. Der Code hat sich aber auch wie du schreibst in all den Jahren nicht geändert, eine Absicht steckt da nicht konkret dahinter. Die Stelle gibt es schon deutlich länger als es Shopware ERP gibt.&nbsp;Gerne mal ein Ticket aufmachen, wenn es geändert werden soll. Dann kann man sich das mal ansehen.

---

<div class="post-metadata">

**Author:** ![oldschool](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/oldschool/32/26605_2.png) [@oldschool](https://forum.shopware.com/u/oldschool)\
**Post date:** [3. April 2019 um 16:15 UTC](https://forum.shopware.com/t/endlich-stornorechnung-mit-eigenem-nummernkreis/58911/3 "2019-04-03T16:15:49Z")

</div>

Super Petra 😉

&nbsp;

Pass auf, nicht das Dein Sohn bei Shopware anfängt 😃

---

<div class="post-metadata">

**Author:** ![spirotech](https://avatars.discourse-cdn.com/v4/letter/s/ed8c4c/32.png) [@spirotech](https://forum.shopware.com/u/spirotech)\
**Post date:** [3. April 2019 um 16:48 UTC](https://forum.shopware.com/t/endlich-stornorechnung-mit-eigenem-nummernkreis/58911/4 "2019-04-03T16:48:41Z")

</div>

Wieso so kompliziert. Kannst ja ein neues Dokument für Stornorechnung erstellen. Erhält dann eine andere ID als 4. Dann gehts ohne im Core rumzuschnippseln.

---

<div class="post-metadata">

**Author:** ![artep](https://avatars.discourse-cdn.com/v4/letter/a/aca169/32.png) [@artep](https://forum.shopware.com/u/artep)\
**Post date:** [3. April 2019 um 17:00 UTC](https://forum.shopware.com/t/endlich-stornorechnung-mit-eigenem-nummernkreis/58911/5 "2019-04-03T17:00:04Z")

</div>

[@NahtlosShop schrieb:](https://forum.shopware.com/profile/29039/NahtlosShop "NahtlosShop")

Ne, das würde er nicht wollen.&nbsp; ![Wink](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/b3785da0cbf2c8566cb535dcf55b2730b5224899.png "Wink")

&nbsp;

> [@spirotech schrieb:](https://forum.shopware.com/profile/6234/spirotech "spirotech")
> 
> Wieso so kompliziert. Kannst ja ein neues Dokument für Stornorechnung erstellen. Erhält dann eine andere ID als 4. Dann gehts ohne im Core rumzuschnippseln.

Was heißt kompliziert? Wenn es in SW doch drin steht und nicht funktioniert, sollte man dem auf den Grund gehen warum das so ist, finde ich. Und dann möchte ich das auch nutzen können. Und leider gibt es noch andere Baustellen wo man&nbsp;im Core rumfummeln muss.&nbsp;

---

<div class="post-metadata">

**Author:** ![spirotech](https://avatars.discourse-cdn.com/v4/letter/s/ed8c4c/32.png) [@spirotech](https://forum.shopware.com/u/spirotech)\
**Post date:** [3. April 2019 um 17:16 UTC](https://forum.shopware.com/t/endlich-stornorechnung-mit-eigenem-nummernkreis/58911/6 "2019-04-03T17:16:36Z")

</div>

hallo artep,

das problem hat ja dein sohn&nbsp;super herausgefunden. die frage ist dann nur&nbsp;noch:&nbsp;Lösung mit core-änderung oder ohne ?

---

<div class="post-metadata">

**Author:** ![artep](https://avatars.discourse-cdn.com/v4/letter/a/aca169/32.png) [@artep](https://forum.shopware.com/u/artep)\
**Post date:** [3. April 2019 um 20:00 UTC](https://forum.shopware.com/t/endlich-stornorechnung-mit-eigenem-nummernkreis/58911/7 "2019-04-03T20:00:51Z")

</div>

> [@spirotech schrieb:](https://forum.shopware.com/profile/6234/spirotech "spirotech")
> 
> frage ist dann nur&nbsp;noch:&nbsp;Lösung mit core-änderung oder ohne ?

Das muss ja jeder für sich entscheiden. Ich wollte es nur mitteilen.

---

<div class="post-metadata">

**Author:** ![sschreier](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sschreier/32/23296_2.png) [@sschreier](https://forum.shopware.com/u/sschreier)\
**Post date:** [3. April 2019 um 20:05 UTC](https://forum.shopware.com/t/endlich-stornorechnung-mit-eigenem-nummernkreis/58911/8 "2019-04-03T20:05:29Z")

</div>

Hallo,

naja wenn man eine Core - Anpassung macht, erhält man damit dann automatisch auch keinen offiziellen Support mehr von Shopware (falls man nicht so und so nur die Community Version einsetzt). So etwas sollte also wirklich gut abgewägt sein, da man ja problemlos die Rechnungsnummer auf die Stornorechnung über das Backend kriegt (deshalb gibt es ja auch diese Einschränkung in der if - Abfrage, da man ja bei der Stornorechnung ja eigentlich die bestehende Rechnungsnummer als Stornonummer haben möchte und nicht irgendeine Nummer eines selbst gewählten Nummernkreises, die dann nichts mehr mit der eigentlichen Rechnungsnummer zu tun hat). Wie Moritz sagt, am besten mal ein Ticket aufmachen: [https://issues.shopware.com/](https://issues.shopware.com/) . So wirklich schwierig herauszufinden war das nun aber wirklich auch nicht, der Code ist ja schließlich quelloffen, siehe: [shopware/Document.php at 5.5 · shopware/shopware · GitHub](https://github.com/shopware/shopware/blob/5.5/engine/Shopware/Components/Document.php#L743) .

Der Lösungsvorschlag von spirotech ist also eher zu favorisieren und vor allem auch keine Core - Anpassung und updatesicher.

Grüße

Sebastian
