Artikelposition in Warenkorb

Hallo Zusammen,
ich scheitere gerade daran die Positionen der einzelnen Artikel im Warenkorb (notwenidg für ERP) in die DB zu speichern.

Ich hänge an der Funktion application > models > oxuserbasket addItemToBasket() bekomme es aber aus irgendeinem Grund nicht die Position entweder an die Funktion zu übergeben oder aus 'nem Input abzuholen.

Entweder brauche ich die Postion in oxuserbasketitems oder in oxorderarticles.

Wäre das der Ansatz den Ihr auch verwenden würdet? Über die persparam funktioniert es zwar bereits aber das ist nicht besonders elegant :frowning:

Merci für jeden Tipp oder Snippet :slight_smile:

Hallo,

wieso findest du es über die persparam nicht elegant? Meinst du das Einfügen ist nicht elegant oder generell, dass die Position darin gespeichert wird?

hallo lukas - eher generell da die params dann noch per unserialize maskiert werden müssen und die Position auch noch für eine Query herhalten muss - daher wäre eine eigene Spalte notwenig

[B]Ansatz 1 (wenn Warenkorb sortierbar sein soll):[/B]

Schritt 1: Template basketcontents.tpl
<label class=“basketPosition”>[{$smarty.foreach.basketContents.iteration}]</label>

Schritt 2: Modul oxuserbasket überladen
application/models/oxuserbasket > addItemToBasket()

$oUserBasketItemPosition = oxConfig::getParameter( 'basketPos'.$sProductId );
//echo("<script>console.log('basketPos$sProductId :  $oUserBasketItemPosition');</script>");
$oUserBasketItem->oxuserbasketitems__pp_basketpos = new oxField($oUserBasketItemPosition, oxField::T_RAW);
$oUserBasketItem->save();

Schritt 3: Modul oxorder überladen
application/models/oxorder > _setOrderArticles()

$oOrderArticle->oxorderarticles__pp_basketpos = new oxField( $oUserBasketItem->oxuserbasketitems__pp_basketpos );

-> nicht final!!! Wert wird noch nicht übernommen

[B]Ansatz 2 (quick&dirty per foreach Loop - ohne manuelle Drag&Drop Sortierung)[/B]
Schritt 1: Modul oxorder überladen
Funktion: _setOrderArticles( $aArticleList)

einen Counter $basketPos in die Schleife bauen und dann an jeden Artikel in oxorderarticles in die DB schreiben

$oOrderArticle->oxorderarticles__pp_basketpos = new oxField( $basketPos );

Die Sortierung ist dann 1:1 wie im Warenkorb :slight_smile:

Gibt es andere oder bessere Lösungsansätze?