Magento 2 - Zmiana ceny produktu na 0,00 na stronie szczegółów produktu dla ustawień regionalnych poza USA

14

Przed instalacją Magento 2.0.4 mam do czynienia z bardzo dziwnym problemem. Mam produkt o cenie 12 USD i zmieniam ustawienia regionalne z konfiguracji Magento w backend.

Poniżej znajduje się zrzut ekranu strony z listą.

wprowadź opis zdjęcia tutaj

Znajdź również poniższy zrzut ekranu strony ze szczegółami.

wprowadź opis zdjęcia tutaj

Być może zauważyłeś różnicę między dwoma zrzutami ekranu. Tak, strona ze szczegółami produktu pokazuje cenę 0,00 $, podczas gdy strona z wykazem zachowała się wraz z ceną, którą dodałem.

Strona szczegółów produktu automatycznie aktualizuje prawidłową cenę do 0,00 $ Po jednej lub dwóch sekundach (aktualizacje Javascript).

Znajdź dla niego poniższy kod

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

Debugowałem dalej w kodzie i znajduję inny kod javascript, który przekazuje parametr do widżetu cenzury Magento 2.

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

Teraz sprawdziłem metodę getJsonConfig (),

  $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
        ];

Dużo debugowałem przez kod i doszedłem do wniosku, że używają ICUDATA do obsługi ustawień regionalnych.

Utknąłem z tym wszystkim, wydaje się, że jest to problem z formatem cen.

Upewnij się, że ten problem występuje tylko w przypadku niektórych opcji ustawień regionalnych, takich jak Persion (Iran).

Codrain Technolabs Pvt Ltd
źródło
Zastosuj reindeix, wyczyść pamięć podręczną, wdróż statyczną zawartość.
Suresh Chikani,
Dzięki @SHPatel, To nie jest problem z reindexem lub pamięcią podręczną. zrobiłem wszystko, co możliwe.
Codrain Technolabs Pvt Ltd
Jest to błąd, który został wcześniej zgłoszony zespołowi magento. Sprawdź to, aby uzyskać więcej informacji - github.com/magento/magento2/issues/4077
Reena Parekh
Dzięki @ReenaParekh, Zgłoszony przeze mnie błąd. Ale chcę rozwiązać ten problem, ponieważ ludzie Magento będą potrzebować czasu, aby zaktualizować go w następnym wydaniu.
Codrain Technolabs Pvt Ltd

Odpowiedzi:

0

ten problem został rozwiązany, uprzejmie zaktualizuj Magento2 do najnowszej stabilnej wersji

jeśli zainstalowałeś z GIT & Composer, wykonaj następujące kroki:

  • Następnie musisz przełamywać swoje zmiany
  • GIT PULL Najnowsza stabilna gałąź, tj. 2.1
  • Aktualizacja kompozytora
  • Uaktualnij Magento ( bin/magento setup:upgrade)

w przeciwnym razie, jeśli zainstalowałeś za pomocą pobierania folderu zip niż pobierz najnowszy ze strony magento i zastąp wszystkie pliki za pomocą nowego zipa, niż musisz wyczyścić pamięć podręczną i uruchomić

bin/magento setup:upgrade
Emizen Tech
źródło
0

Uaktualnij magento, wykonując następujące polecenia.

Konfiguracja bin / magento: aktualizacja

bin / magento setup: db-schema: upgrade

php -d memory_limit = -1 konfiguracja bin / magento: di: kompilacja

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

M. RIZWAN
źródło
0

Spróbuj zaktualizować poniższy kod:

Ścieżka - 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) {

mam nadzieję, że zadziała dla ciebie.

Anas Mansuri
źródło