Neu Shopware überverkauf ein anderes Feld zuweisen

BlueEyePhoenix

Gut bekanntes Mitglied
3. Januar 2017
276
25
Hatte das so verstanden das "ueberverkauf" mein Attribut den Feldwert ausgibt. Und ich mit diesem Wert dann meine Einstellungen anpassen kann. Hier der abgewandelte Code. DA muss ich wohl noch ein weinig Üben :eek:

PHP:
<?php

namespace uberv\verkeinh;

use jtl\Connector\Event\Product\ProductAfterPushEvent;
use jtl\Connector\Shopware\Utilities\IdConcatenator;
use jtl\Connector\Shopware\Utilities\Shop as ShopUtil;
use jtl\Connector\Core\Logger\Logger;
use jtl\Connector\Formatter\ExceptionFormatter;
use jtl\Connector\Core\Utilities\Language as LanguageUtil;
use Shopware\Models\Article\Detail;

class ProductListener
{
    public function onProductAfterPushAction(ProductAfterPushEvent $event)
    {
        try {
            foreach ($event->getProduct()->getAttributes() as $attribute) {
                foreach ($attribute->getI18ns() as $i18n) {
                    if ($i18n->getLanguageISO() === LanguageUtil::map(ShopUtil::locale()->getLocale())
                        && $i18n->getName() === 'ueberverkauf') {

                        list($detailId, $productId) = IdConcatenator::unlink($event->getProduct()->getId()->getEndpoint());

                        $detailSW = ShopUtil::entityManager()->find(Detail::class, $detailId);
                        if ($detailSW == "0") {
                            $detailSW->setLaststock(1);

                            ShopUtil::entityManager()->persist($detailSW);
                            ShopUtil::entityManager()->flush($detailSW);
                        }
                        elseif ($detailSW == "1") {
                            $detailSW->setLaststock(0);

                            ShopUtil::entityManager()->persist($detailSW);
                            ShopUtil::entityManager()->flush($detailSW);
                        }
                        break;
                    }
                }
            }
        } catch (\Throwable $e) {
            Logger::write(ExceptionFormatter::format($e), Logger::WARNING, 'plugin');
        }
    }
}
 

BlueEyePhoenix

Gut bekanntes Mitglied
3. Januar 2017
276
25
Hallo,

konnte es schon lösen mit der hilfe von den Beispielen, anbei das Script was ich angepasst habe.

PHP:
namespace uebervauf\einheit;

use jtl\Connector\Event\Product\ProductAfterPushEvent;
use jtl\Connector\Shopware\Utilities\IdConcatenator;
use jtl\Connector\Shopware\Utilities\Shop as ShopUtil;
use jtl\Connector\Core\Logger\Logger;
use jtl\Connector\Formatter\ExceptionFormatter;
use jtl\Connector\Core\Utilities\Language as LanguageUtil;
use Shopware\Models\Article\Detail;
use Shopware\Models\Article\Article;

class ProductListener
{
    public function onProductAfterPushAction(ProductAfterPushEvent $event)
    {
        if (strlen($event->getProduct()->getId()->getEndpoint()) == 0) {
            return;
        }

        try {
            foreach ($event->getProduct()->getAttributes() as $attribute) {
                foreach ($attribute->getI18ns() as $i18n) {
                    if ($i18n->getLanguageISO() === LanguageUtil::map(ShopUtil::locale()->getLocale())
                        && $i18n->getName() === 'Attribut') {

                        list($detailId, $productId) = IdConcatenator::unlink($event->getProduct()->getId()->getEndpoint());

                        $detailSW = ShopUtil::entityManager()->find(Detail::class, $detailId);
                        if ($i18n->getValue() !== "0")  {
                            $detailSW->setlaststock(0);
                            ShopUtil::entityManager()->persist($detailSW);
                            ShopUtil::entityManager()->flush($detailSW);
                        }
                        else {  $detailSW->setlaststock(1);

                            ShopUtil::entityManager()->persist($detailSW);
                            ShopUtil::entityManager()->flush($detailSW);
                        };
                        $detailAR = ShopUtil::entityManager()->find(Article::class, $detailId);
                        if ($i18n->getValue() !== "0")  {
                            $detailAR->setlaststock(0);
                            ShopUtil::entityManager()->persist($detailAR);
                            ShopUtil::entityManager()->flush($detailAR);
                        }
                        else {  $detailAR->setlaststock(1);

                            ShopUtil::entityManager()->persist($detailAR);
                            ShopUtil::entityManager()->flush($detailAR);
                        }

                        break;
                    }
                }
            }
        } catch (\Throwable $e) {
            Logger::write(ExceptionFormatter::format($e), Logger::WARNING, 'plugin');
        }
    }
}

Nutzung auf eigene Gefahr. :cool:

Vielen Dank für die Hilfe.
 
Zuletzt bearbeitet:

Immanuel

Gesperrter Benutzer
24. August 2016
1.542
329
Folgendes ist falsch:
PHP:
$detailAR = ShopUtil::entityManager()->find(Article::class, $detailId);
Entweder verwendest du $productId anstelle von $detailId in diesem find() Statement. Oder du holst über $detailSW->getArticle() den dazugehörigen Artikel. $detailSW ist übrigens schon das Detail des Articles. Das was du $detailAr nennst, ist dann eher der $article oder das $product.

Ich bin jetzt hier aber raus. Viel Erfolg!
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Gutscheincodes aus Shopware 6 in JTL Wawi als Anmerkung zeigen? Shopware-Connector 0
Neu product_visibility bei JTL-Wawi und Shopware 6 Shopware-Connector 1
Neu Shopware 5 connector und WawI 1.11.06 bis 1.11.8 Shopware-Connector 0
Neu Connectorupdates für Shopware 6.7.7 bzw 6.7.8? Shopware-Connector 34
Neu WebP Bilder von JTL zu Shopware Shopware-Connector 2
Neu Shopware 6 Kundenstornierung im Webshop Shopware-Connector 0
Neu Langfristiger JTL-Partner gesucht: Shopware 6 / Marktplätze (Mirakl, Otto, Kaufland) & Prozess-Optimierung Dienstleistung, Jobs und Ähnliches 2
Neu SaaS Connector – product.push Performance-Problem bei Shopware 6.6 Shopware-Connector 3
Neu Artikel aus Shopware in der Wawi importieren und WMS redy machen Shopware-Connector 0
Wichtig Connectorversion 2.1.3 - Kompatibilität zu Shopware 6.7.6.0 und weitere Performanceoptimierungen Shopware-Connector 5
Neu Shopware 6.7.6.2 Fehler [No supported api version found.] 100 Shopware-Connector 1
Neu Ein Artikel in der Kategorie Allgemeine Fragen zu JTL-Shop 5
Neu Lister 2.0 Ein Amazon Markplatz gleicht nicht ab Amazon-Lister - Fehler und Bugs 0
Neu JTL Pos liest keine Verkäufe mehr ein nach Update Einrichtung / Updates von JTL-POS 0
Neu JTL WMS Mobile Server zeigt neuerdings ein DOS-Fenster JTL-WMS / JTL-Packtisch+ - Ideen, Lob und Kritik 2
Neu OPC friert beim speichern von Änderungen ein nach JTL-Shop Update von Version 5.1.5 auf 5.6.1 JTL-Shop - Fehler und Bugs 6
Ein Schritt vor, drei zurück – warum gehen nach Updates immer wieder Grundfunktionen kaputt? JTL-Wawi 1.11 2

Ähnliche Themen