Magento 2: cambio del precio del producto a 0.00 en la página de detalles del producto para la configuración regional no estadounidense

14

Me enfrento a un problema muy extraño después de la instalación de Magento 2.0.4. He creado un producto con el precio de $ 12 y cambio la configuración regional de la configuración de Magento en el back-end.

A continuación se muestra la captura de pantalla para la página de listado.

ingrese la descripción de la imagen aquí

También encuentre la siguiente captura de pantalla para la página de detalles.

ingrese la descripción de la imagen aquí

Es posible que haya notado la diferencia entre dos capturas de pantalla. Sí, la página de detalles del producto muestra un precio de $ 0.00 mientras que la página de listado retiene con el precio lo que he agregado.

La página de detalles del producto actualiza automáticamente el precio correcto a $ 0,00 después de uno o dos segundos (actualizaciones de Javascript).

Encuentra el siguiente código para ello

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

He depurado más en el código y encuentro otro código javascript que pasa el parámetro al 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>

Ahora he comprobado el 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
        ];

Hice mucha depuración a través del código y llegué a la conclusión de que están usando ICUDATA para soporte local.

Estoy atrapado con todo esto, parece que es un problema de PriceFormat.

Asegúrese de que este problema surja solo para ciertas opciones de configuración regional como Persion (Irán).

Codrain Technolabs Pvt Ltd
fuente
Aplique reindeix, limpie el caché, implemente conent estático.
Suresh Chikani
Gracias @SHPatel, no es un problema de reindexación o caché. Hice todo lo posible.
Codrain Technolabs Pvt Ltd
Este es un error y se ha informado previamente al equipo de magento. Verifique esto para más detalles: github.com/magento/magento2/issues/4077
Reena Parekh
Gracias @ReenaParekh, ese error reportado por mí. Pero quiero una solución a este problema porque la gente de magento tomará tiempo para actualizarlo en su próximo lanzamiento más o menos.
Codrain Technolabs Pvt Ltd

Respuestas:

0

este problema se ha resuelto, actualice amablemente su Magento2 a la última versión estable

si ha instalado desde GIT & Composer, siga estos pasos:

  • Entonces debes fijar tus cambios
  • GIT PULL Última rama estable, es decir, 2.1
  • Actualización del compositor
  • Actualizar Magento ( bin/magento setup:upgrade)

de lo contrario, si ha instalado usando la descarga de la carpeta zip, descargue la última versión del sitio web de magento y anule todos los archivos usando el nuevo zip que necesita para borrar el caché y ejecutar

bin/magento setup:upgrade
Emizen Tech
fuente
0

Actualice el magento siguiendo los comandos.

configuración bin / magento: actualización

configuración de bin / magento: esquema-db: actualización

php -d memory_limit = -1 configuración bin / magento: di: compile

php -d memory_limit = -1 configuración bin / magento: contenido estático: desplegar

M RIZWAN
fuente
0

Intenta actualizar el siguiente código:

Camino - 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 ti.

Anas Mansuri
fuente