Magento 2 - Perubahan harga produk menjadi 0,00 di halaman detail produk untuk Non-US Locale

14

Saya menghadapi masalah yang sangat aneh setelah pemasangan Magento 2.0.4. Saya telah membuat produk dengan harga $ 12 dan mengubah lokal dari konfigurasi Magento di backend.

Di bawah ini adalah tangkapan layar untuk halaman daftar.

masukkan deskripsi gambar di sini

Temukan juga tangkapan layar di bawah ini untuk halaman detail.

masukkan deskripsi gambar di sini

Anda mungkin telah memperhatikan perbedaan antara dua tangkapan layar. Ya, halaman detail produk menunjukkan harga $ 0,00 sementara halaman listing tetap dengan harga yang telah saya tambahkan.

Halaman detail produk secara otomatis memperbarui harga yang benar menjadi $ 0,00 Setelah satu atau dua detik (Pembaruan Javascript).

Temukan kode di bawah ini untuk itu

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

Saya memiliki debug lebih lanjut dalam kode dan menemukan kode javascript lain yang melewati parameter ke 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>

Sekarang saya telah memeriksa metode 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
        ];

Saya melakukan banyak debugging melalui kode dan sampai pada kesimpulan bahwa mereka menggunakan ICUDATA untuk dukungan lokal.

Saya terjebak dengan semua ini, Sepertinya ini masalah PriceFormat.

Harap pastikan masalah ini muncul hanya untuk opsi Lokal tertentu seperti Persion (Iran).

Codrain Technolabs Pvt Ltd
sumber
Terapkan reindeix, clean cache, deploy static conent.
Suresh Chikani
Terima kasih @SHPatel, Ini bukan masalah reindex atau cache. saya melakukan segalanya yang mungkin.
Codrain Technolabs Pvt Ltd
Ini adalah bug dan telah dilaporkan sebelumnya ke tim magento. Lihat ini untuk detail lebih lanjut - github.com/magento/magento2/issues/4077
Reena Parekh
Terima kasih @ReenaParekh, Bug itu dilaporkan oleh saya. Tetapi saya ingin solusi untuk masalah ini karena orang Magento akan mengambil waktu untuk memperbaruinya dalam rilis berikutnya atau lebih.
Codrain Technolabs Pvt Ltd

Jawaban:

0

masalah ini telah diatasi, perbarui Magento2 Anda ke versi Stable terbaru

jika Anda telah menginstal dari GIT & Komposer ikuti langkah-langkah ini:

  • Daripada Anda harus menyimpan perubahan Anda
  • GIT PULL Cabang Stabil Terbaru yaitu 2.1
  • Pembaruan Komposer
  • Tingkatkan Magento ( bin/magento setup:upgrade)

lain jika Anda telah menginstal menggunakan unduhan folder zip daripada unduh terbaru dari situs web magento dan menimpa semua file menggunakan zip baru dari yang Anda butuhkan untuk menghapus cache dan menjalankan

bin/magento setup:upgrade
Emizen Tech
sumber
0

Tingkatkan magento dengan mengikuti perintah.

setup bin / magento: tingkatkan

pengaturan bin / magento: db-schema: upgrade

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

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

M RIZWAN
sumber
0

Silakan coba perbarui kode di bawah ini:

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

Semoga ini berhasil untuk Anda.

Anas Mansuri
sumber