Magento 2 - Änderung des Produktpreises auf 0,00 in der Produktdetailseite für Länder außerhalb der USA


14

Ich habe nach der Installation von Magento 2.0.4 ein sehr seltsames Problem. Ich habe ein Produkt mit dem Preis von $ 12 erstellt und das Gebietsschema aus der Magento-Konfiguration im Backend geändert.

Unten ist der Screenshot für die Listingseite.

Bildbeschreibung hier eingeben

Finden Sie auch den folgenden Screenshot für die Detailseite.

Bildbeschreibung hier eingeben

Möglicherweise haben Sie den Unterschied zwischen zwei Screenshots bemerkt. Ja, auf der Produktdetailseite wird ein Preis von 0,00 USD angezeigt, während die Listingseite den von mir hinzugefügten Preis beibehält.

Die Produktdetailseite aktualisiert den korrekten Preis automatisch auf 0,00 €. Nach ein oder zwei Sekunden (Javascript-Updates).

Finden Sie den folgenden Code dafür

$('[data-price-type="' + priceCode + '"]', this.element).html(priceTemplate({data: price}));

Ich habe weiter im Code debuggt und finde einen anderen Javascript-Code, der Parameter an das Magento 2-Preisbox-Widget übergibt.

<script>
    require([
        'jquery',
        'Magento_Catalog/js/price-box'
    ], function($){
        var priceBoxes = $('[data-role=priceBox]');

        priceBoxes = priceBoxes.filter(function(index, elem){
            return !$(elem).find('.price-from').length;
        });

        priceBoxes.priceBox({'priceConfig': <?php /* @escapeNotVerified */ echo $block->getJsonConfig() ?>});
    });
</script>

Jetzt habe ich die Methode getJsonConfig () überprüft,

  $product = $this->getProduct();

        if (!$this->hasOptions()) {
            $config = [
                'productId' => $product->getId(),
                'priceFormat' => $this->_localeFormat->getPriceFormat()
                ];
            return $this->_jsonEncoder->encode($config);
        }

        $tierPrices = [];
        $tierPricesList = $product->getPriceInfo()->getPrice('tier_price')->getTierPriceList();
        foreach ($tierPricesList as $tierPrice) {
            $tierPrices[] = $this->priceCurrency->convert($tierPrice['price']->getValue());
        }
        $config = [
            'productId' => $product->getId(),
            'priceFormat' => $this->_localeFormat->getPriceFormat(),
            'prices' => [
                'oldPrice' => [
                    'amount' => $this->priceCurrency->convert(
                        $product->getPriceInfo()->getPrice('regular_price')->getAmount()->getValue()
                    ),
                    'adjustments' => []
                ],
                'basePrice' => [
                    'amount' => $this->priceCurrency->convert(
                        $product->getPriceInfo()->getPrice('final_price')->getAmount()->getBaseAmount()
                    ),
                    'adjustments' => []
                ],
                'finalPrice' => [
                    'amount' => $this->priceCurrency->convert(
                        $product->getPriceInfo()->getPrice('final_price')->getAmount()->getValue()
                    ),
                    'adjustments' => []
                ]
            ],
            'idSuffix' => '_clone',
            'tierPrices' => $tierPrices
        ];

Ich habe viel durch den Code debuggt und bin zu dem Schluss gekommen, dass sie ICUDATA für die Unterstützung des Gebietsschemas verwenden.

Ich bin mit dieser ganzen Sache fest, es scheint, dass es PriceFormat Ausgabe ist.

Stellen Sie sicher, dass dieses Problem nur bei bestimmten Gebietsschemaoptionen wie Persion (Iran) auftritt.


Reindeix anwenden, Cache leeren, statischen Inhalt bereitstellen.
Suresh Chikani

Vielen Dank an @ SHPatel, es handelt sich nicht um eine Neuindizierung oder ein Cache-Problem. Ich habe alles Mögliche getan.
Codrain Technolabs Pvt Ltd

Dies ist ein Fehler, der zuvor dem Magento-Team gemeldet wurde. Überprüfen Sie dies für weitere Details - github.com/magento/magento2/issues/4077
Reena Parekh

Danke @ReenaParekh, dieser Fehler wurde von mir gemeldet. Aber ich möchte eine Lösung für dieses Problem, da sich die Magento-Leute Zeit nehmen werden, um es in ihrer nächsten Version oder so zu aktualisieren.
Codrain Technolabs Pvt Ltd

Antworten:


0

Dieses Problem wurde behoben. Bitte aktualisieren Sie Magento2 auf die neueste Stable-Version

Wenn Sie von GIT & Composer installiert haben, gehen Sie folgendermaßen vor:

  • Dann müssen Sie Ihre Änderungen speichern
  • GIT PULL Letzter stabiler Zweig dh 2.1
  • Composer Update
  • Upgrade von Magento ( bin/magento setup:upgrade)

andernfalls, wenn Sie die Installation mit dem ZIP-Ordner-Download durchgeführt haben, laden Sie die neueste Version von der Magento-Website herunter und überschreiben Sie alle Dateien mit der neuen ZIP-Datei, bevor Sie den Cache leeren und ausführen müssen

bin/magento setup:upgrade

0

Aktualisieren Sie das Magento mit den folgenden Befehlen.

bin / magento setup: upgrade

bin / magento setup: db-schema: upgrade

php -d memory_limit = -1 bin / magento setup: di: compile

php -d memory_limit = -1 bin / magento setup: static-content: deploy


0

Bitte versuchen Sie, den folgenden Code zu aktualisieren:

Pfad - lib/internal/Magento/Framework/Locale/Format.php

class Format implements \Magento\Framework\Locale\FormatInterface
{
    const DEFAULT_NUMBER_SET = 'latn';
    /**
     * @var \Magento\Framework\App\ScopeResolverInterface
     */
@@ -104,12 +105,18 @@ public function getPriceFormat($localeCode = null, $currencyCode = null)
            $currency = $this->_scopeResolver->getScope()->getCurrentCurrency();
        }
        $localeData = (new DataBundle())->get($localeCode);
        /* $format = $localeData['NumberElements']['latn']['patterns']['currencyFormat']
            ?: explode(';', $localeData['NumberPatterns'][1])[0];
        $decimalSymbol = $localeData['NumberElements']['latn']['symbols']['decimal']
            ?: $localeData['NumberElements'][0];
        $groupSymbol = $localeData['NumberElements']['latn']['symbols']['group']
            ?: $localeData['NumberElements'][1]; */
 //start updated code
        $defaultSet = $localeData['NumberElements']['default'] ?: self::DEFAULT_NUMBER_SET;
        $format = $localeData['NumberElements'][$defaultSet]['patterns']['currencyFormat']
            ?: ($localeData['NumberElements'][self::DEFAULT_NUMBER_SET]['patterns']['currencyFormat']
                ?: explode(';', $localeData['NumberPatterns'][1])[0]);
        $decimalSymbol = $localeData['NumberElements'][$defaultSet]['symbols']['decimal']
            ?: ($localeData['NumberElements'][self::DEFAULT_NUMBER_SET]['symbols']['decimal']
                ?: $localeData['NumberElements'][0]);
        $groupSymbol = $localeData['NumberElements'][$defaultSet]['symbols']['group']
            ?: ($localeData['NumberElements'][self::DEFAULT_NUMBER_SET]['symbols']['group']
                ?: $localeData['NumberElements'][1]);

  // end updated code

        $pos = strpos($format, ';');
        if ($pos !== false) {

hoffe seine Arbeit für Sie.

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.