BUG bei Bestellung: Summe ändert sich nachträglich

Hallo,

wenn ich nachträglich bei einem Artikel den Preis ändere, dann in eine Bestellung reingehe, die diesen Artikel beinhaltet, und diese Bestellung dann unter dem TAB “Artikel” aktualisiere, so wird die komplette Bestellung mit dem geänderten Artikelpreis neuberechnet.

Eigentlich sollte doch dort der alte Artikelpreis, also der Artikelpreis zum Zeitpunkt der Bestellung stehen.

Ist das so gewollt oder ein BUG?

Meine Version: 4.6.1_45706
Gruß Jason

Das ist in allen Oxid Versionen so, keine Ahnung warum, aber von einem Bug kann man nicht reden - denn das ist mit Absicht so programmiert.

https://bugs.oxid-esales.com/view.php?id=4624

kein Bug nach Definition - aber bad practise :slight_smile:

Problem gelöst:

Modul dafür kann hier runtergeladen werden:

Werde es in den nächsten Tagen noch so erweitern, daß Rabatte, Versandkosten, Zahlarten auch nicht neuberechnet werden.

wie cool - ich finde die Community genial!

[QUOTE=jason_kx;120927]Bitte Version noch nicht probieren. Habe gerade einen Bug entdeckt. Werde Ihn beheben und dann updaten![/QUOTE]

BUG behoben

kleiner Tipp - schreib ne Lizenz dazu, zum Beispiel GPLv3, kannst Du hier kopieren:

Danke, hab ich gleich eingefügt.
BUG im Modul ist behoben und kann nun verwendet werden.

@jasonkx: du hast ja die 4.6.x version. läuft das modul auch unter 4.7.x? wäre natürlich toll… :o

Das weiß ich leider nicht, da ich die 4.7 noch nicht installiert habe. Ich könnte mir aber vorstellen, daß es klappt. Die Änderungen im Code sind nicht so gravierend.

Wir werden irgendwann in den nächsten Monaten auf 4.7 umsteigen, aber das kann noch dauern. Wenn es soweit ist, würde ich es für 4.7 testen

Oh das ist cool, dieses “Feature” ist eines der schlimmsten in OXID. Wieso so etwas mit Absicht programmiert wird und bei behalten, ist mir bis heute schleierhaft. Diese “Funktion” ist schon fast absichtliche Geisterfahrt auf der Autobahn. :rolleyes:

Danke für den Fix!

Weiß auch nicht, warum das so sein sollte. Meine Buchhaltung würde mir für so ein Feature den Hals umdrehen :slight_smile:

Bin gerade dabei, Rabatte auch unangetastet zu lassen. Das ist aber doch etwas komplexer als die Artikelpreise…

Ich hab das Problem auch öfter mit unserem eBay Modul, da bei vielen die eBay Preise ja vom Shoppreis abweichen. Ändert dann einer was in der Bestellung rechnet OXID neu, das brauch es dann wirklich nicht. Ich werde das Modul mal bei uns in der Knowledgebase verlinken.

In der neuen Version 0.6 werden nun auch Rabatte und Gutscheine beachtet.
Im Backend kann eingestellt werden, ob diese neuberechnet werden oder nicht.

Super :slight_smile:

Du musst die Version in der Readme noch ändern

@jason_kx: Du bist mein Held! Danke für das Modul! Ich werd es in einen 4.6.x einbauen & berichten :slight_smile:

Version 1.0 ist veröffentlicht.

Jetzt ist das Modul vollständig und man kann einstellen, ob Artikelpreis, Zahlartgebühren, Versandkosten, Verpackungskosten, Rabatte, Gutscheine, TS Protection in der Bestellverwaltung des Backend neuberechnet werden sollen.

die 1.0 steht aber noch nicht im Readme - hast Du das schon auf Github hochgeschoben?

hi,

sobald ich da smodul aktiviere erhalte ich unter Bestellung folgenden Text:
class jkx_oxOrder extends jkx_oxOrder_parent{ /** * Recalculates order. Starts transactions, deletes current order and order articles from DB, * adds current order articles to virtual basket and finaly recalculates order by calling oxorder::finalizeOrder() * If no errors, finishing transaction. * * @param array $aNewArticles article list of new order * * @return null */ public function recalculateOrder( $aNewArticles = array() ) { oxDb::startTransaction(); try { $oBasket = $this->_getOrderBasket(); // add this order articles to virtual basket and recalculates basket $this->_addOrderArticlesToBasket( $oBasket, $this->getOrderArticles( true ) ); // adding new articles to existing order $this->_addArticlesToBasket( $oBasket, $aNewArticles ); // recalculating basket $oBasket->calculateBasket( true ); /***START MOD BACKEND ORDER RECALCULATE ***/ if($this->getConfig()->isAdmin()){ if($this->getConfig()->getConfigParam( ‘jbRecalculateOrderVoucher’ ) || $this->getConfig()->getConfigParam( ‘jbRecalculateOrderDiscount’ )){ $this->reloadDiscount(true); }else{ $this->reloadDiscount(false); } } /END MOD BACKEND ORDER RECALCULATE/ //finalizing order (skipping payment execution, vouchers marking and mail sending) $iRet = $this->finalizeOrder( $oBasket, $this->getOrderUser(), true ); //if finalizing order failed, rollback transaction if ( $iRet !== 1 ) { oxDb::rollbackTransaction(); } else { oxDb::commitTransaction(); } } catch( Exception $oE ) { // if exception, rollBack everything oxDb::rollbackTransaction(); if ( defined( ‘OXID_PHP_UNIT’ ) ) { throw $oE; } } } }

MfG

Stefan

@Stefan1989 und Hebsacker

Ich habe noch Probleme mit dem Github und dem Oxid Fork. Auf dem Oxid Fork ist wohl noch die ältere Version.

Hier ist das Modul direkt von meinem Fork:

@Stefan1989
Kannst du es einmal mit der Version probieren bzw. auch deine Oxidversion mitteilen?