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 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 Shopware 6.6.6.1 lässt sicht nicht mit der JTL Wawi verbinden Shopware-Connector 3
Neu Frage an Shopware User Shopware-Connector 1
Neu Geht Shopware 6.6.6.0? Shopware-Connector 0
Neu Atrribut in Wawi gelöscht - Keine Auswirkung auf Shopware Shopware-Connector 0
Neu Dringende Hilfe benötigt: JTL-Connector Fehler beim Shopware-Abgleich Shopware-Connector 15
Neu Artikelexport mit Filter Hersteller, Überverkauf, letzte Änderung JTL Ameise - Eigene Exporte 2
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
Neu Amazon Lister 2.0 - Code 99016 - Ein Maximum von 1 Vorkommen (oder Vorkommnissen) ist für das Attribut color zulässig Amazon-Lister - Fehler und Bugs 1
Neu [Liquid Error: Ein Aufrufziel hat einen Ausnahmefehler verursacht] Fehlermeldung in meiner Designvorlage auf Ebay eBay-Designvorlagen - Fehler und Bugs 0
Neu Inkludierte GREYHOUND-Lizenzen gibt es ein Onboarding? User helfen Usern - Fragen zu JTL-Wawi 12
Neu Kann ein FYRST Geschäftskonto zum Zahlungsabgleich an JTL angebunden werden? Thema Bankanbindung Allgemeines zu den JTL-Connectoren 1
Neu 2 verschiedene Lager - Trennung - nur ein Lager für WMS Versand möglich ? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Warenpost National Fehlermeldung bitte Sie ein ganze Zahl ein JTL-ShippingLabels - Fehler und Bugs 1
Gelöst zusätzliche Kasse - Tablet liest Artikel in Dauerschleife ein und zeigt aber keine an JTL-POS - Fehler und Bugs 4
Neu Ware direkt in ein Standardlager einbuchen per SQL StoreProcedure dbo.spWarenlagerEingangSchreiben Schnittstellen Import / Export 9

Ähnliche Themen