Projekt

Allgemein

Profil

Aktionen

GX-Abgewiesen #41110

geschlossen

Rechnungsnummernvergabe ist fehlerhaft

Von Moritz Bunjes vor mehr als 9 Jahren hinzugefügt. Vor 3 Monaten aktualisiert.

Status:
Abgewiesen
Priorität:
Normal
Zugewiesen an:
Moritz Bunjes
Kategorie:
Adminbereich
Zielversion:
-
Beginn:
Abgabedatum:
% erledigt:

0%

Geschätzter Aufwand:
Steps to reproduce:
Release Notes Langtext:

Beschreibung

eine reihe sehr unwahrscheinlicher ereignisse oder aber auch eine einfache fehlkonfiguration (zb nach daten uebernahme) kann dazu fuehren das keine neuen rechnungsnummern mehr vergeben werden (verwendung von pdf rechnungen).

szenario 1 (sehr unwahrscheinlich)
in gm_id_starts.php wird die methode GMOrderFormat.set_next_id benutzt um die naechste rechnungsnummer zu setzen. in der methode set_next_id wird auch geprueft ob die id noch vergeben werden kann und in gm_id_starts wird der rueckgabewert entsprechend behandelt. Wenn der shop waehrend nummernkreise / rechnungs nummern format bearbeitet werden nicht offline genommen wird kann es zu einer race condition kommen insofern gleichzeitig mit dem submit in gm_id_starts.php eine neue rechnung erstellt wird. ablauf:
u1: submit gm_id_starts.php
u1: erfolgreiche pruefung ($next_id > $this->get_act_id($type)) in gm_id_starts.php
u2: eine neue rechnungsnummer wird vergeben siehe gm_pdf_order.php
u2: rechnungsnummer wird in tab orders geschrieben
u2: wert des keys GM_NEXT_INVOICE_ID wird aktualisiert
u1: wert des keys GM_NEXT_INVOICE_ID wird aktualisiert (veraltet)

alternativ szenario: daten uebernahme wert des keys GM_NEXT_INVOICE_ID wird nicht mituebernommen.

ab diesem moment ist der wert in der datenbank fuer GM_NEXT_INVOICE_ID nicht mehr "gueltig (zu nieder)". Bei der weiteren generierung von rechnungen wird nun immer die gleiche rechnungsnummer vergeben siehe unten, da immer der aktuelle wert fuer GM_NEXT_INVOICE_ID aus der datenbank bezogen wird, als rechnungsnummer eingesetzt wird und anschlieszend versucht wird den wert fuer GM_NEXT_INVOICE_ID in der datenbank zu aktualisieren ($gmFormat->set_next_id('GM_NEXT_INVOICE_ID', $next_id + 1);). Sollte nun der urspruengliche wert fuer GM_NEXT_INVOICE_ID bereits ungueltig (zu nieder) gewesen sein so ist der um eins erhoehte ebenfalls bereits vergeben, dementsprechend wird der wert fuer GM_NEXT_INVOICE_ID in der datenbank nicht aktualisiert, allerdings wird der rueckgabewert der methode ignoriert und folglich bleibt dies dem user / shop admin verborgen.

Wuerde etwas dagegeben sprechen auf die spalte gm_orders_id einen unique index zu setzen um in zukunft auf nummer sicher zu gehen? Soweit ich den code verstehe ist es nicht angedacht das rechnungsnummern jemals wieder verwendet werden selbst wenn sich das format der rechnungsnummer (gm_order_code) aendert.

gm_pdf_order.php

// -> set id, code only in 'orders.php'
if(empty($_GET['preview']))
{

$gmFormat->update_next_id('GM_NEXT_INVOICE_ID', $next_id, $_GET['oID']);
$gmFormat->update_next_code('GM_NEXT_INVOICE_ID', $gm_orders_code, $_GET['oID']);
$gmFormat->set_next_id('GM_NEXT_INVOICE_ID', $next_id + 1);
}
$order_check['gm_orders_code'] = $gm_orders_code;


Aktionen #1

Von Till Tepelmann vor etwa 9 Jahren aktualisiert

  • Zielversion wurde von 59 zu 2.2.1.0 beta1 geändert
Aktionen #2

Von Daniel Wu vor fast 9 Jahren aktualisiert

  • Zielversion wurde von 2.2.1.0 beta1 zu 59 geändert
Aktionen #3

Von Michael Kroenke vor fast 9 Jahren aktualisiert

  • Zielversion wurde von 59 zu 2.2.3.0 beta1 geändert
Aktionen #4

Von Daniel Wu vor mehr als 8 Jahren aktualisiert

  • Zielversion wurde von 2.2.3.0 beta1 zu 59 geändert
Aktionen #5

Von Till Tepelmann vor mehr als 8 Jahren aktualisiert

  • Zielversion wurde von 59 zu 2.4.0.0 beta1 geändert
Aktionen #6

Von Till Tepelmann vor mehr als 8 Jahren aktualisiert

  • Tags wurde auf Forum gesetzt
  • Zielversion wurde von 2.4.0.0 beta1 zu 2.4.1.0 beta1 geändert
Aktionen #7

Von Moritz Bunjes vor mehr als 8 Jahren aktualisiert

  • Zielversion wurde von 2.4.1.0 beta1 zu 59 geändert
Aktionen #8

Von Till Tepelmann vor mehr als 8 Jahren aktualisiert

  • Zielversion wurde von 59 zu 2.4.2.0 beta1 geändert
Aktionen #9

Von Daniel Wu vor mehr als 8 Jahren aktualisiert

  • Zielversion wurde von 2.4.2.0 beta1 zu 59 geändert
Aktionen #10

Von Till Tepelmann vor mehr als 8 Jahren aktualisiert

  • Zielversion wurde von 59 zu 2.4.3.0 beta1 geändert
Aktionen #11

Von Daniel Wu vor mehr als 8 Jahren aktualisiert

  • Zielversion wurde von 2.4.3.0 beta1 zu 132 geändert
Aktionen #12

Von Till Tepelmann vor mehr als 8 Jahren aktualisiert

  • Zielversion wurde von 132 zu 2.6.0.0 beta1 geändert
Aktionen #13

Von Daniel Wu vor mehr als 8 Jahren aktualisiert

  • Zielversion wurde von 2.6.0.0 beta1 zu 132 geändert
Aktionen #14

Von Till Tepelmann vor mehr als 8 Jahren aktualisiert

  • Zielversion wurde von 132 zu 2.6.1.0 beta1 geändert
Aktionen #15

Von Daniel Wu vor etwa 8 Jahren aktualisiert

  • Zielversion wurde von 2.6.1.0 beta1 zu 132 geändert
Aktionen #16

Von Till Tepelmann vor etwa 8 Jahren aktualisiert

  • Zielversion wurde von 132 zu 133 geändert
Aktionen #17

Von Moritz Bunjes vor mehr als 7 Jahren aktualisiert

  • Status wurde von Gemeldet zu In Prüfung geändert
  • Zugewiesen an wurde auf Moritz Bunjes gesetzt
Aktionen #18

Von Moritz Bunjes vor mehr als 7 Jahren aktualisiert

  • Status wurde von In Prüfung zu Abgewiesen geändert

Szenarien sind äußerst unwahrscheinlich. Eine Änderung ist daher nicht notwendig.

Aktionen #19

Von Till Tepelmann vor mehr als 6 Jahren aktualisiert

  • Tracker wurde von GX-Bug zu GX-Abgewiesen geändert
Aktionen #20

Von Moritz Bunjes vor mehr als 2 Jahren aktualisiert

  • Zielversion 133 wurde gelöscht
Aktionen #21

Von Till Tepelmann vor 3 Monaten aktualisiert

  • Tags Forum wurde gelöscht
Aktionen

Auch abrufbar als: Atom PDF