Neu Shopware überverkauf ein anderes Feld zuweisen

BlueEyePhoenix

Gut bekanntes Mitglied
3. Januar 2017
276
23
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
23
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 JTL Connector Error: 20 - Invalid shop url. https://meineseite.com does not point to a shopware 6 instance Shopware-Connector 2
Neu Lizenkosten Shopware 6 Plugin ? Shopware-Connector 7
Neu Connector zu Shopware 6 streikt Shopware-Connector 0
Neu Shopware 5 mit JTL-Version 1.9.6.3 oder höher. Gibt es Probleme? Shopware-Connector 4
Neu Neues Zusatzfeld-Set für Shopware 6 in JTL erstellen (nicht nur custom_jtl) Shopware-Connector 0
Neu Shopware 6 System.Exception: Exception - kein Abgleich möglich Shopware-Connector 2
Neu Vergleich Shopware 5 / 6 zu JTL Shop 5 Betrieb / Pflege von JTL-Shop 7
Neu Shopware 6 Bestellabgleich bei vormals fehlgeschlagener Zahlung Shopware-Connector 0
Neu JTL-Connector Shopware aktuell nicht erreichbar Shopware-Connector 15
Beantwortet Kosten für Aufträge aus Shopware 5 Shopware-Connector 1
Neu Zusätzliche Bearbeitungszeit wird nicht bei der Lieferzeit an Shopware 6 berücksichtigt Shopware-Connector 0
Neu Umzug von Pickware in Shopware 6 zu JTL User helfen Usern - Fragen zu JTL-Wawi 2
Neu Überverkauf ebay = erlaubt, - ebay Angebot wird aber nicht gestartet - Hilfe eBay-Anbindung - Ideen, Lob und Kritik 0
Neu Artikelexport mit Filter Hersteller, Überverkauf, letzte Änderung JTL Ameise - Eigene Exporte 2
Neu Der Amazon Bestand wird nicht übernommen/gespeichert. Worker setzt den vollen Lagerbestand wieder ein. JTL-Wawi - Fehler und Bugs 0
Seit Update auf 1.9.6.5 Fehler bei Bestellabschluss, aber Bestellung geht ein JTL-Wawi 1.9 7
Neu verschiedene Größen für ein Artikel Allgemeine Fragen zu JTL-POS 4
Neu ein Auftrag mehrere Rechnungen am Packtisch ausdrucken Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 0
Neu Bestände eines Artikels, die mindestens ein MHD von x Tagen aufweisen Eigene Übersichten in der JTL-Wawi 5
Neu Neues Lager, Artikel sind angelegt, Bestände auf 0, wie pflege ich jetzt die Bestände korrekt ein ? User helfen Usern - Fragen zu JTL-Wawi 6
Neu Aufträge: Wir wünschen uns ein drittes, internes Anmerkungsfeld JTL-Wawi - Ideen, Lob und Kritik 6
Hat sich erledigt. Kann ein Mod diesen Post löschen? JTL-Wawi 1.9 0
Neu Wie kann ich ein "eigenes Feld" oder Artikelattribut im Shop sichtbar machen? Allgemeine Fragen zu JTL-Shop 0
Neu Über Kurzbeschreibung hätte ich gerne ein Attribut stehen Templates für JTL-Shop 1
GPSR - Warnhinweise, Sicherheitsinformationen, wo fügt ihr die ein? JTL-Wawi 1.9 23
In Diskussion Hinweis im WMS Ausgeben wenn ein bestimmter Artikel verpackt wird über WMS JTL-Workflows - Ideen, Lob und Kritik 5
Neu Habe ich ein Sicherheitsproblem oder bin ich nur unfähig? Allgemeine Fragen zu JTL-Shop 19

Ähnliche Themen