Magento 2 - Modifica del prezzo del prodotto a 0,00 nella pagina dei dettagli del prodotto per impostazioni internazionali non statunitensi


14

Sto affrontando un problema molto strano dopo l'installazione di Magento 2.0.4. Ho creato un prodotto con un prezzo di $ 12 e ho modificato le impostazioni locali dalla configurazione di Magento nel backend.

Di seguito è riportato lo screenshot per la pagina di elenco.

inserisci qui la descrizione dell'immagine

Trova anche lo screenshot seguente per la pagina dei dettagli.

inserisci qui la descrizione dell'immagine

Potresti aver notato la differenza tra due screenshot. Sì, la pagina dei dettagli del prodotto mostra il prezzo di $ 0,00 mentre la pagina dell'elenco ha mantenuto il prezzo che ho aggiunto.

La pagina dei dettagli del prodotto aggiorna automaticamente il prezzo corretto a $ 0,00 Dopo uno o due secondi (Aggiornamenti Javascript).

Trova il codice qui sotto per esso

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

Ho eseguito il debug ulteriormente nel codice e ho trovato un altro codice javascript che passa i parametri al widget del box prezzi 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>

Ora ho verificato il metodo 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
        ];

Ho fatto molto il debug attraverso il codice e sono giunto alla conclusione che stanno usando ICUDATA per il supporto locale.

Sono bloccato con tutto questo, sembra che sia il problema di PriceFormat.

Assicurati che questo problema si presenti solo per alcune opzioni locali come Persion (Iran).


Applicare reindeix, pulire la cache, distribuire il conent statico.
Suresh Chikani,

Grazie @SHPatel, non è un problema reindex o cache. ho fatto tutto il possibile.
Codrain Technolabs Pvt Ltd,

Questo è un bug ed è stato segnalato in precedenza al team di magento. Controlla questo per maggiori dettagli - github.com/magento/magento2/issues/4077
Reena Parekh

Grazie @ReenaParekh, quel bug segnalato da me. Ma voglio una soluzione a questo problema perché le persone di magento impiegheranno del tempo per aggiornarlo nella prossima versione o giù di lì.
Codrain Technolabs Pvt Ltd,

Risposte:


0

questo problema è stato risolto, si prega gentilmente di aggiornare Magento2 all'ultima versione stabile

se hai installato da GIT & Composer segui questi passaggi:

  • Di quanto devi accorciare le modifiche
  • TORNA GIT Ultimo ramo stabile cioè 2.1
  • Aggiornamento del compositore
  • Aggiorna Magento ( bin/magento setup:upgrade)

altrimenti se hai installato utilizzando il download della cartella zip rispetto al download più recente dal sito Web di Magento e sovrascrivi tutti i file utilizzando il nuovo zip di quanto sia necessario svuotare la cache ed eseguire

bin/magento setup:upgrade

0

Aggiorna il magento seguendo i comandi.

installazione bin / magento: aggiornamento

installazione bin / magento: db-schema: upgrade

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

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


0

Prova ad aggiornare sotto il codice:

Sentiero - 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) {

spero che funzioni per te.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.