Nummernkreise

Hallo ! Derzeit sind ja standardmäßig die Nummernkreise von Rechnung , Gutschrift , Stornorechnung getrennt. Laut unserem Umsatzsteuergesetz darf ich für diese Vorgänge nur einen Nummernkreis führen. Frage:Ist es korrekt, wenn ich nun bei allen 3 Dokumenten Nummernkreis doc_0 einsetze ? >>> Klappt das in der Funktion, dass zB nun auch für Gutschrift und Stornorechnung der selbe Kreis benutzt wird wie für die Rechnungen ? >>> Kann ich die anderen Nummernkreise via SQL aus der datenbank entfernen, dass es zu keinem Irrtum kommt ? Frage: Beim Anlegen eines neuen Nummernkreises gibt es kein Feld wo zB doc_4 eingtragen werden kann. Wie kann ich für ein Dokument “Auftragsbestätigung” einen eigenen Kreis anlegen und wie ordne ich den dem Dokument zu…? lg klaus

Zu deiner letzten Frage - der Nummernkreis wird dann automatisch angelegt - sobald die neue Belegart gespeichert wurde, sollte ein zusätzlicher Eintrag in der s_order_number auftauchen. Die anderen Nummernkreise solltest du wie beschrieben anpassen können - das wird übrigens in der Funktion saveDocument in der Datei / Klasse engine/Shopware/Components/Document.php realisiert!

1 „Gefällt mir“

Hallo ! Perfekt ! Das waren die Infos, die noch fehlten… :thumbup: lg klaus

Hallo ! Doch nicht ganz gelöst…leider ! Ich habe bei Rechnung, Gutschrift, Stornorechnung die doc_0 eingetragen. Wenn ich nun eine Rechnung schreibe und die hat Nr. 20110001 muß die darauf folgende Stornorechnung 20110002 haben ! d.h. In einem Geschäftsjahr müssen ALLE Dokumente die Umsatzsteuer auswerfen also Rechnung UND Stornorechnung aus EINEM Nummernkreis stammen ! Die Nummerierung MUSS per Gesetz fortlaufend sein !!! Ich kann definitiv nicht einen Kreis für Storno/Gutschrift extra machen ! Im Testsystem (ist noch 3.5.2) bekommt die Stornorechnung trotz Nummernkreis doc_0 aber die selbe Nummer wie die Rechnung !!! Das wäre falsch ! Es müssten die nächsten Dokumente egal welche document ID die NÄCHST HÖHERE Nummer auswählen und belegen…nicht die selbe wie die Rechnung Wie lösen…ohne jetzt alles manuell zu vergeben :frowning: Noch kein Shop sonst in Österreich, der das Problem hat ??? lg klaus edit: Mir ist klar, dass sich der Vorgang hier // Update numberrange, except for cancellations if ($typID!=3){ if (!empty($this-\>\_document-\>numbers)){ $numberrange = $this-\>\_document-\>numbers; }else { $numberrange = "doc\_".$typID; } abspielt…leider zuwenig php Kenntnis um da was zu ändern: Der ganze Block aus der document.php /\*\* \* Save document in database / generate number \* @access protected \*/ protected function saveDocument(){ if ($this-\>\_preview==true) return; $bid = $this-\>\_config["bid"]; if (!empty($bid)){ $this-\>\_documentBid = $bid; } if (empty($bid)) $bid = 0; // Check if this kind of document already exists $typID = $this-\>\_typID; $checkForExistingDocument = Shopware()-\>Db()-\>fetchRow(" SELECT ID,docID,hash FROM s\_order\_documents WHERE userID = ? AND orderID = ? AND type = ? ",array($this-\>\_order-\>userID,$this-\>\_order-\>id,$typID)); if (!empty($checkForExistingDocument["ID"])){ // Document already exist. Update date and amount! $update = " UPDATE `s_order_documents` SET `date` = now(),`amount` = ? WHERE `type` = ? AND userID = ? AND orderID = ? LIMIT 1 "; $amount = $this-\>\_config["netto"] == true ? round($this-\>\_order-\>amountNetto,2) : round($this-\>\_order-\>amount,2); if ($typID == 3){ $amount \*= -1; } $update = Shopware()-\>Db()-\>query($update,array( $amount, $typID, $this-\>\_order-\>userID, $this-\>\_order-\>id )); $rowID = $checkForExistingDocument["ID"]; $bid = $checkForExistingDocument["docID"]; $hash = $checkForExistingDocument["hash"]; }else { // Create new document if ($this-\>\_compatibilityMode==false){ $hash = md5(uniqid(rand())); } $amount = $this-\>\_config["netto"] == true ? round($this-\>\_order-\>amountNetto,2) : round($this-\>\_order-\>amount,2); if ($typID == 3){ $amount \*= -1; } $sql = " INSERT INTO s\_order\_documents (`date`, `type`, `userID`, `orderID`, `amount`, `docID`,`hash`) VALUES ( NOW() , ? , ? , ?, ?, ?,?) "; $insert = Shopware()-\>Db()-\>query($sql,array( $typID, $this-\>\_order-\>userID, $this-\>\_order-\>id, $amount, $bid, $this-\>\_compatibilityMode == true ? "" : $hash )); $rowID = Shopware()-\>Db()-\>lastInsertId(); // Update numberrange, except for cancellations if ($typID!=3){ if (!empty($this-\>\_document-\>numbers)){ $numberrange = $this-\>\_document-\>numbers; }else { $numberrange = "doc\_".$typID; } $checkForSeparateNumbers = Shopware()-\>Db()-\>fetchRow(" SELECT id, separate\_numbers FROM `s_core_multilanguage` WHERE `id` = ? ",array($this-\>\_subshop["id"])); if(!empty($checkForSeparateNumbers['separate\_numbers'])) { $numberrange.= "\_".$checkForSeparateNumbers['id']; } $getNumber = Shopware()-\>Db()-\>fetchRow(" SELECT `number`+1 as next FROM `s_order_number` WHERE `name` = ?" ,array($numberrange)); Shopware()-\>Db()-\>query(" UPDATE `s_order_documents` SET `docID` = ? WHERE `ID` = ? LIMIT 1 ; ",array($getNumber['next'],$rowID)); Shopware()-\>Db()-\>query(" UPDATE `s_order_number` SET `number` = ? WHERE `name` = ? LIMIT 1 ; ",array($getNumber['next'],$numberrange)); $bid = $getNumber["next"]; } } $this-\>\_documentID = $bid; $this-\>\_documentRowID = $rowID; $this-\>\_documentHash = $hash; } } ?\>

Hey, das ist so gewollt - eine Stornorechnung bezieht sich ja immer auf eine vorher ausgestellte Rechnung - deswegen wird hier gar kein Nummernkreis verwendet, sondern “Storno zur Rechnung [Nr]” ausgegeben. Das müsste doch auch bei euch okay sein, oder?

[quote=“Stefan Hamann”]Hey, das ist so gewollt - eine Stornorechnung bezieht sich ja immer auf eine vorher ausgestellte Rechnung - deswegen wird hier gar kein Nummernkreis verwendet, sondern “Storno zur Rechnung [Nr]” ausgegeben. Das müsste doch auch bei euch okay sein, oder?[/quote] Hallo ! Leider nein, nicht ganz korrekt. Habe eben mit dem Steuerberater gesprochen. Wir können eventuell für Stornorechnung einen eigenen Nummernkreis führen, ABER die Strornorechnung MUSS eigene Nummer haben ! Ideal ist natürlich nur EIN Numernkreis für alle Dokumente. Fakt: Die Rechnung mit Nummer 20110010 wird storniert, dann kann die Stornorechnung die Nummer 20110011 haben oder in einem anderen Nummernkreis zB 20110001 mit bezug auf 20110010. DAS ist leider Gesetz, da komme ich nicht herum. Bin jetzt etwas konfus, weil ich da nicht weiter weis…und die zeit drängt da wir eben den Shop zertifizieren lassen und ich mit Testkäufen und Testrücksendungen rechenen muß… Gibts es noch Möglichkeiten ? 1. Frage noch am Rande: Der Nummernkreis in der SQL DB “invoice”…ist ja nur die laufende Nummer der Bestellung oder hat der noch intern andere Funktion ?? 2. Frage am rande: habe ein eigenes Documenten template angelegt (kopie von index.tpl umbenannt auf index_au.tpl) welches sich Auftrag nennt, hat Nummernkreis own_5 aber bei Erstellen holt sich der Shop dort keine Nummer ab, was muß da noch umgestellt werden in der index.tpl ??? Da gibt es ja die variable {$Document.id} :cry: lg klaus

Hallo Shopwareteam ! Gibt es hierzu noch Rat ? thx lg klaus

Hallo zusammen Habe das gleiche Problem Letzte Rechnungsnummer ist z.B: 300010. Jetzt muss ich eine Gutschrift auf eine Bestlelung machen. Diese muss fortlaufend sein im Nummernkreis der Rechnung, spricht jetzt müsste ich eine Gutschrift haben mit der Nummer 300011… Kann hier jemand helfen? Gruss & Dank Cyril Shopware 5.0.1

Ich schiebe das mal nach oben: Gibt es da wirklich keine aktuelle Lösung zu? Eigener Nummernkreis für Stornorechnungen wäre tatsächlich hilfreich.

Gibt es hier inzwischen eine Lösung?