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

Drin
quelle
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',
            ],
        ],
    ]
);
Fabian Schmengler
quelle
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.

HungryDB
quelle
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

Bojjaiah
quelle
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