M2 Enterprise: Wie kann programmgesteuert von Datum zu Datum ein Sonderpreis für das Produkt hinzugefügt werden?


7

Ich möchte einen Sonderpreis für ein Produkt von Datum zu Datum programmgesteuert nach Code hinzufügen, weiß aber nicht wie.

Ich kann in admin festlegen, aber ich möchte Code verwenden, um mehrere Produkte zu speichern.

Ich verwende Enterprise Edition und habe keine Datumsfelder. Stattdessen wird die Content-Staging- Funktion verwendet, um Preisänderungen zu planen.

Geben Sie hier die Bildbeschreibung ein

in EE mit geplanten: Geben Sie hier die Bildbeschreibung ein

in Geplant: Geben Sie hier die Bildbeschreibung ein


Hast du die Lösung gefunden? Wenn ja, bitte aktualisieren
Bilal Usean

Sucht noch jemand nach einer Lösung? Ich bin auf diesen Artikel gestoßen : https://trive.digital/magento/programatisch-schedule-product-content-changes-magento-2-enterprise/ Es funktioniert für mich größtenteils. Es wird immer noch für einen Sonderpreis optimiert, der auf ein bestimmtes Geschäft abzielt.
P. Lee

Wie können wir dies mithilfe der API erreichen?
Yo Yo Roshan

Antworten:


2

Versuchen Sie Magento\Staging\Model\Entity\Update\Save, ein neues Update zu planen:

$this->stagingUpdateSave->execute(
    [
        'entityId' => 1234,           // <-- your product id
        'stagingData' => [
            'mode' => 'save',
            'name' => 'Test Special Price Update',
            'start_time' => 'Feb 25, 2017 12:00 AM'
            'end_time' => 'Feb 26, 2017 12:00 AM'
         ],
        'entityData' => [
            'product' => [
                'price' => '1.00',
            ],
        ],
    ]
);

Frage ist, Sonderpreis von und nach advance pricemodal anzuzeigen . OP lieferte Referenz von Schedule start dateund end date.
HungryDB

2

Im vendor/magento/module-catalog-staging/etc/adminhtml/di.xml

Kommentare zu special_from_dateund hinzufügenspecial_to_date

<type name="Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\Eav">
        <arguments>
            <argument name="attributesToEliminate" xsi:type="array">
                <item name="news_from_date" xsi:type="string">news_from_date</item>
                <item name="news_to_date" xsi:type="string">news_to_date</item>
                <item name="custom_design_from" xsi:type="string">custom_design_from</item>
                <item name="custom_design_to" xsi:type="string">custom_design_to</item>
                <!--<item name="special_from_date" xsi:type="string">special_from_date</item>
                <item name="special_to_date" xsi:type="string">special_to_date</item> -->
            </argument>
        </arguments>
    </type>

Dies wird in modal angezeigt special fromund special todatiert advance price. Jetzt können Sie die obige Datei di.xml in Ihrem eigenen Modul überschreiben.


Es funktioniert nicht in Enterprise Edition.
Hafiz Arslan

-1

Führen Sie nun den folgenden Code aus

 $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
        $_product = $objectManager->create('\Magento\Catalog\Model\Product');
        $_product->setName('Test Product');
        $_product->setTypeId('simple');
        $_product->setAttributeSetId(4);
        $_product->setSku('test-SKU');
        $_product->setWebsiteIds(array(1));
        $_product->setVisibility(4);
        $_product->setPrice(array(15));
        $_product->setImage('/testimg/test.jpg');
        $_product->setSmallImage('/testimg/test.jpg');
        $_product->setThumbnail('/testimg/test.jpg');
        $_product->setStockData(array(
                'use_config_manage_stock' => 0,
                'manage_stock' => 1,
                'min_sale_qty' => 1, 
                'max_sale_qty' => 2, 
                'is_in_stock' => 1, 
                'qty' => 100 
            )
        );
        $_product->setCustomAttributes(array(
                'special_from_date' => "01/12/2016", 
                'special_to_date' => "11/12/2016", 
                'special_price' => 12, 
            )
        );

        $_product->save();

siehe Bild unten In meinem Fall funktioniert es gut.

Geben Sie hier die Bildbeschreibung ein


Vielen Dank für Ratschläge, aber ich verwende die Enterprise Edition-Version. Es gibt kein Feld zum Festlegen von setSpecialFromDate oder setSpecialToDate
Init

@Init meinen aktualisierten Code ausführen und mich wissen lassen, dass er funktioniert oder nicht?
Bojjaiah

@Init hast du es versucht?
Bojjaiah

danke, aber ich benutze Enterprise Edition, es hat kein Feld Sonderpreis von, dein Bild ist CE-Version
Init

siehe Bilder in meiner Frage aktualisiert
Init
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.