Magento 2 - alteração de preço do produto para 0,00 na página de detalhes do produto para localidade fora dos EUA

14

Estou enfrentando um problema muito estranho após a instalação do Magento 2.0.4. Eu criei um produto com o preço $ 12 e alterei o código de idioma da configuração do Magento no back-end.

Abaixo está a captura de tela da página de listagem.

insira a descrição da imagem aqui

Encontre também a captura de tela abaixo para a página de detalhes.

insira a descrição da imagem aqui

Você deve ter notado a diferença entre duas capturas de tela. Sim, a página de detalhes do produto mostra o preço de US $ 0,00 enquanto a página de listagem mantém com o preço o que eu adicionei.

A página de detalhes do produto atualiza automaticamente o preço correto para R $ 0,00 Após um ou dois segundos (atualizações de Javascript).

Encontre o código abaixo para ele

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

Eu depurei mais no código e encontrei outro código javascript que passa o parâmetro para o widget Magento 2 pricebox.

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

Agora eu verifiquei o método 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
        ];

Fiz muita depuração através do código e cheguei à conclusão de que eles estão usando o ICUDATA para suporte ao código de idioma.

Estou preso com tudo isso, parece que é problema de PriceFormat.

Certifique-se de que esse problema ocorra apenas para determinadas opções de localidade, como Persion (Irã).

Codrain Technolabs Pvt Ltd
fonte
Aplique a reindexação, limpe o cache, implante o conteúdo estático.
Suresh Chikani
Obrigado @SHPatel, não é um problema de reindexação ou cache. eu fiz todo o possível.
Codrain Technolabs Pvt Ltd
Este é um erro e foi relatado anteriormente à equipe magento. Marque esta para mais detalhes - github.com/magento/magento2/issues/4077
Reena Parekh
Obrigado @ReenaParekh, esse bug relatado por mim. Mas eu quero solução para esse problema, porque as pessoas do Magento levarão tempo para atualizá-lo em seu próximo lançamento.
Codrain Technolabs Pvt Ltd

Respostas:

0

Se esse problema foi resolvido, atualize seu Magento2 para a versão mais recente do Stable.

se você instalou a partir do GIT & Composer, siga estas etapas:

  • Do que você deve stach suas alterações
  • GIT PULL Última ramificação estável, ou seja, 2,1
  • Atualização do compositor
  • Atualizar Magento ( bin/magento setup:upgrade)

caso contrário, se você instalou usando o download da pasta zip, baixe o mais recente do site magento e substitua todos os arquivos usando o novo zip, além do necessário para limpar o cache e executar

bin/magento setup:upgrade
Emizen Tech
fonte
0

Atualize o magento seguindo os comandos.

configuração bin / magento: atualização

configuração bin / magento: db-schema: upgrade

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

php -d memory_limit = -1 configuração bin / magento: static-content: deploy

M RIZWAN
fonte
0

Tente atualizar o código abaixo:

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

Espero que funcione para você.

Anas Mansuri
fonte