Preisänderungen Überwachen

Hallo zusammen,

ich habe die Aufgabe auf irgendeinem Wege die Preisänderungen von Produkten (nur wenn diese günstiger werden) zu überwachen, um diese dann in eine sog. Sale Kategorie zu verschieben.

Die Preise werden aus einer Warenwirtschaft heraus geändert, es geht hier nicht um Rabatte sondern nur um den Baseprice.

Gibt es da evtl. ein Event, das ich subscriben kann?

Das Problem dabei ist wartscheinlich auch, wie weiß ich (falls man Preisänderungen abfangen kann) ob sich ein preis nach unten oder nach oben verändert…

Hat wer eine Idee?

Danke schonmal im Voraus! 

 

Für alle die es wissen wollen,

es gibt da sog. Lifecycle Events, mit codesnippets im folgenden thread zu finden:

https://forum.shopware.com/discussion/45384/event-hook-fuer-kunden-user-update?

Man muss auf folgende Events lauschen:

 'Shopware\Models\Article\Price::postUpdate' =\> 'onPostPersistArticlePrice', 'Shopware\Models\Article\Price::preUpdate' =\> 'beforeUpdateArticlePrice',

Jetzt hänge ich vor einer anderen Sache, und zwar wie kopiere oder verschiebe ich codeseitig ein Produkt von einer Kategorie in eine andere?

public function setToSale($articleNumber)
{
	$articleRessource = \Shopware\Components\Api\Manager::getResource('article');
	
	$updateArray = array(
		"categories" => [
            array("id" => 5)
        ]
	);

	$articleRessource->updateByNumber($articleNumber, $updateArray);
}

So würd ich’s machen… dabei ist die 5 die Id der Kategorie… musst du natürlich entsprechend anpassen…

1 „Gefällt mir“

@Argee schrieb:

public function setToSale($articleNumber)
{
$articleRessource = \Shopware\Components\Api\Manager::getResource(‚article‘);

$updateArray = array(
„categories“ => [
array(„id“ => 5)
]
);

$articleRessource->updateByNumber($articleNumber, $updateArray);
}

So würd ich’s machen… dabei ist die 5 die Id der Kategorie… musst du natürlich entsprechend anpassen…

Irgendwie klappt das nicht ganz Foot-in-Mouth 

updateByNumber produziert den fehler -> 

 core.ERROR: Shopware\Components\Api\Exception\NotFoundException: Article by number 3505 not found in /var/www/html/shopware-vagrant/engine/Shopware/Components/Api/Resource/Article.php:104 .....

was ist denn number in dem fall: ordernumber, id oder articleId?

und wenn ich einfach update nutze kommt der ->

 core.ERROR: Shopware\Components\Api\Exception\CustomValidationException: \Shopware\Models\Category\Category by id 2300 not found in /var/www/html/shopware-vagrant/engine/Shopware/Components/Api/Resource/Resource.php:452 .....

 

EDIT:

ok das klappt schon fast, :smiley: nur wird das produkt höchstens in eine Kategorie verschoben (müsste aber in 2 English+Deutsch) kann man es vielleicht einfach statt zu verschieben in anderen Kategorien zusätzlich anzeigen?

Die Number ist die Artikelnummer; wenn du die id hast, kannst du einfach $articleRessource->update($id, $updateArray) benutzen.

Na klar, dafür müssen wir nur die bestehenden Kategorien sichern (evtl kann man das schöner lösen…):

public function setToSale($articleNumber)
{
	$articleRessource = \Shopware\Components\Api\Manager::getResource('article');

    $article = $articleRessource->getOneByNumber($articleNumber);

    
    $categories = array();
    
    // hier werden die bestehenden Kategorien erhalten
    foreach ($article["categories"] as $artCat) {
        $categories[] = array("id" => $artCat["id"]);
    }
	
    // hier werden die neuen Kategorien hinzugefügt (kann beliebig oft wiederholt werden)
    $categories[] = array("id" => 5); // deutsche Kategorie
    $categories[] = array("id" => 6); // englische Kategorie

	$updateArray = array(
		"categories" => $categories
	);
	$art = $articleRessource->updateByNumber($articleNumber, $updateArray);
}

 

1 „Gefällt mir“

Ja denke das isses! Vielen Dank :slight_smile:

Hallo nochmal,

ich hätte da leider noch ein Problem.

Der Code funktioniert zwar, aber der funktioniert nur wenn man per hand den Artikelpreis im Listing ändert. Ändert man den Preis in den Artikeldetails werden die Kategorien nicht hinzugefügt. Das selbe passiert wenn die Warenwirtschaft die Preise anpasst.

EDIT:

Hat sich jetzt auch erledigt, nun werden die Kategorien den Produkten immer passend hinzugefügt (Kategorie -> Artikelzuordnung & Artikel -> Kategorien), jedoch wenn ich meine Sale Kategorie aufmachen (Frontend und backend->Artikelübersicht) ist da keins von den Produkten drin.

Es war der Kategoriebaum der neu afgebaut werden musste … ganz schön umständlich jetzt muss wohl noch ein weg suchen wie das ganze nach der Zuweisung direkt auch noch mit erledigt wird…