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 Mediendateien nicht mit Shopware synchronisiert Shopware-Connector 0
Neu JTL Connector - Shopware 5 / 6: keine Erstübertragung der Daten Shopware-Connector 2
Einzelartikel als Kindartikel zu einem neuen Vaterartikel zusammenführen (JTL-Wawi + Shopware Connector) JTL-Wawi 1.8 0
Neu Connectorversion 2.1.0 - Kompatibilität zu Shopware 6.7 und Performanceoptimierungen Shopware-Connector 15
Neu PIM -> Shopware 6 <-> JTL Shopware-Connector 12
Neu Vorlagensets standardmäßig ein- oder ausgekappt anzeigen lassen Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 1
Neu Ein Auftrag, zwei Positionen, zwei Lieferanschriften User helfen Usern - Fragen zu JTL-Wawi 2
Neu Ein Auftrag, 2 Versanddienstleister User helfen Usern - Fragen zu JTL-Wawi 7
Neu Wo kann ich mich über JTL Kundencenter beschweren? 20 Minuten Lang einen Bug im Ticket dokumentiert, und am Ende "ein Fehler ist aufgetreten" Smalltalk 3
WMS Druckverwaltung -> Fenster friert ein > WMS-mobile & POS läuft gar nicht/extrem langsam 1.11.4 JTL-Wawi 1.11 0
Neu DPD: YourInternalID 28: (1) Strasse - Postleitzahl - Ort kann nicht zugeordnet werden. Evtl. liegt ein Schreibfehler in der Adresse vor. JTL-ShippingLabels - Fehler und Bugs 0
Neu Ist ein Hin- und Rückversand so machbar? User helfen Usern - Fragen zu JTL-Wawi 3
Bildimporte per Ameise ein "netter" Zeitvertreib JTL-Wawi 1.11 0
Neu Erstmals seit Jahren ein FTP-Problem Betrieb / Pflege von JTL-Shop 12
Neu GLS es fehlt immer ein Etikett / Code 0009 JTL-ShippingLabels - Ideen, Lob und Kritik 3
Wawi friert nach wählen eines beliebigen Menüpunktes ein JTL-Wawi 1.11 5
Neu Sql Express 2022 - wawi sagt beim Start es ist ein Update bereit - gelöst Installation von JTL-Wawi 3
Neu Kindartikel direkt anzeigen/auswählen wenn nur ein Kind vorhanden ist? User helfen Usern - Fragen zu JTL-Wawi 0
Kundenstammdaten: Wie erkenne ich in der Wawi, ob ein Shop-Kunde ein Kundenkonto angelegt hat? JTL-Wawi 1.9 2
Neu Lister 2.0 liest keine Daten ein Amazon-Lister - Fehler und Bugs 7

Ähnliche Themen