Endlich!!! Stornorechnung mit eigenem Nummernkreis

Sodele… endlich nach fast 8 Jahren rumfragerei von vielen Mitgliedern und mir, hat mein Sohn rausgefunden 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)  muss nachfolgende Zeilen auskommentieren. (Wir nutzen noch 5.3.7 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;
            //}

 

In den Textbausteinen unter DocumentIndexCancelationNumber folgendes eingeben: 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 Pickware ​-Anwender:

In der Doku steht: 

Stornorechnung erstellen

Eine Stornorechnung hat standardmäßig keinen Nummernkreis. Wenn Du eine Stornorechnung erstellen möchtest, musst Du in dem Feld  Rechnungs-Nummer  die Rechnungsnummer der zu stornierenden Rechnung eingeben. Das PDF-Dokument erhält damit die Bezeichnung  Stornorechnung zur Rechnung Nr.  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  Money-Mouth

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

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. Gerne mal ein Ticket aufmachen, wenn es geändert werden soll. Dann kann man sich das mal ansehen.

Super Petra :wink:

 

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

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.

@NahtlosShop schrieb:

Ne, das würde er nicht wollen.  Wink

 

@spirotech schrieb:

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 im Core rumfummeln muss. 

hallo artep,

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

@spirotech schrieb:

frage ist dann nur noch: Lösung mit core-änderung oder ohne ?

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

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/ . 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 .

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

Grüße

Sebastian