Magento 2 - Le prix du produit passe à 0,00 dans la page de détail du produit pour les paramètres régionaux non américains


14

Je suis confronté à un problème très étrange après l'installation de Magento 2.0.4. J'ai créé un produit au prix de 12 $ et modifié les paramètres régionaux de la configuration Magento dans le backend.

Voici la capture d'écran de la page de liste.

entrez la description de l'image ici

Retrouvez également la capture d'écran ci-dessous pour la page de détails.

entrez la description de l'image ici

Vous avez peut-être remarqué la différence entre deux captures d'écran. Oui, la page de détail du produit affiche un prix de 0,00 $ tandis que la page de liste a conservé le prix que j'ai ajouté.

La page de détails du produit met automatiquement à jour le prix correct à 0,00 $ après une ou deux secondes (mises à jour Javascript).

Trouvez le code ci-dessous

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

J'ai débogué plus loin dans le code et trouvé un autre code javascript qui transmet les paramètres au widget de boîte de prix 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>

Maintenant, j'ai vérifié la méthode 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
        ];

J'ai fait beaucoup de débogage à travers le code et suis arrivé à la conclusion qu'ils utilisent ICUDATA pour le support local.

Je suis coincé avec tout cela, il semble que ce soit un problème de PriceFormat.

Veuillez vous assurer que ce problème ne se pose que pour certaines options de paramètres régionaux comme Persion (Iran).


Appliquez reindeix, nettoyez le cache, déployez le contenu statique.
Suresh Chikani

Merci @SHPatel, ce n'est pas un problème de réindexation ou de cache. j'ai fait tout mon possible.
Codrain Technolabs Pvt Ltd

Ceci est un bug et a déjà été signalé à l'équipe de magento. Vérifiez cela pour plus de détails - github.com/magento/magento2/issues/4077
Reena Parekh

Merci @ReenaParekh, ce bug signalé par moi. Mais je veux une solution à ce problème car les gens de magento prendront le temps de le mettre à jour dans leur prochaine version.
Codrain Technolabs Pvt Ltd

Réponses:


0

ce problème a été résolu, veuillez mettre à jour votre Magento2 vers la dernière version stable

si vous avez installé à partir de GIT & Composer, procédez comme suit:

  • Que vous devez bloquer vos modifications
  • GIT PULL Dernière branche stable ie 2.1
  • Mise à jour du compositeur
  • Mettre à jour Magento ( bin/magento setup:upgrade)

sinon si vous avez installé en utilisant le téléchargement du dossier zip que le téléchargement le plus récent depuis le site Web de magento et remplacez tous les fichiers en utilisant le nouveau zip, vous devez vider le cache et exécuter

bin/magento setup:upgrade

0

Mettez à niveau le magento en suivant les commandes.

configuration bin / magento: mise à niveau

configuration bin / magento: schéma db: mise à niveau

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

php -d memory_limit = -1 configuration bin / magento: contenu statique: déployer


0

Veuillez essayer de mettre à jour le code ci-dessous:

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

j'espère que son travail pour vous.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.