Magento 2 - ราคาสินค้าเปลี่ยนเป็น 0.00 ในหน้ารายละเอียดผลิตภัณฑ์สำหรับสถานที่นอกสหรัฐอเมริกา


14

ฉันกำลังเผชิญกับปัญหาที่แปลกมากหลังจากการติดตั้ง Magento 2.0.4 ฉันได้สร้างผลิตภัณฑ์ที่มีราคา $ 12 และเปลี่ยนสถานที่จากการตั้งค่าวีโอไอพีในแบ็กเอนด์

ด้านล่างเป็นภาพหน้าจอสำหรับหน้ารายการ

ป้อนคำอธิบายรูปภาพที่นี่

นอกจากนี้ยังพบภาพหน้าจอด้านล่างสำหรับหน้ารายละเอียด

ป้อนคำอธิบายรูปภาพที่นี่

คุณอาจสังเกตเห็นความแตกต่างระหว่างภาพหน้าจอสองภาพ ใช่หน้ารายละเอียดผลิตภัณฑ์จะแสดงราคา $ 0.00 ในขณะที่หน้ารายการมีการรักษาราคาที่ฉันเพิ่มไว้

หน้ารายละเอียดผลิตภัณฑ์จะอัปเดตราคาที่ถูกต้องเป็น $ 0 โดยอัตโนมัติหลังจากหนึ่งหรือสองวินาที (การอัปเดต Javascript)

ค้นหารหัสด้านล่างสำหรับมัน

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

ฉันมีการแก้ปัญหาเพิ่มเติมในรหัสและหารหัสจาวาสคริปต์อื่นที่ส่งผ่านพารามิเตอร์ไปยังวิดเจ็ตกล่องราคา 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>

ตอนนี้ฉันตรวจสอบเมธอด 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
        ];

ฉันทำการดีบักจำนวนมากผ่านโค้ดและได้ข้อสรุปว่าพวกเขากำลังใช้ ICUDATA เพื่อสนับสนุนสถานที่เกิดเหตุ

ฉันติดอยู่กับทุกสิ่งนี้ดูเหมือนว่าเป็นปัญหาของ PriceFormat

โปรดตรวจสอบให้แน่ใจว่าปัญหานี้เกิดขึ้นเฉพาะกับตัวเลือกสถานที่บางแห่งเช่น Persion (อิหร่าน)


ใช้ reindeix ล้างแคชปรับใช้ conent แบบคงที่
Suresh Chikani

ขอบคุณ @SHPatel ไม่ใช่ปัญหาของการทำดัชนีหรือแคชใหม่ ฉันทำทุกอย่างเป็นไปได้
Codrain Technolabs Pvt Ltd

นี่เป็นข้อผิดพลาดและได้รับการรายงานไปยังทีมวีโอไอพีก่อนหน้านี้ ตรวจสอบรายละเอียดเพิ่มเติมได้ที่ - github.com/magento/magento2/issues/4077
Reena Parekh

ขอบคุณ @ReenaParekh ข้อผิดพลาดที่รายงานโดยฉัน แต่ฉันต้องการทางออกสำหรับปัญหานี้เพราะคนวีโอไอพีจะใช้เวลาในการอัปเดตในรุ่นถัดไปหรือมากกว่านั้น
Codrain Technolabs Pvt Ltd

คำตอบ:


0

ปัญหานี้ได้รับการแก้ไขแล้วโปรดอัปเดต Magento2 ของคุณเป็นเวอร์ชันล่าสุดที่เสถียร

หากคุณติดตั้งจาก GIT & นักแต่งเพลงให้ทำตามขั้นตอนเหล่านี้:

  • กว่าที่คุณจะต้องหยุดการเปลี่ยนแปลงของคุณ
  • GIT PULL สาขาที่มีเสถียรภาพล่าสุดเช่น 2.1
  • การปรับปรุงนักแต่งเพลง
  • อัปเกรดวีโอไอพี ( bin/magento setup:upgrade)

อื่นถ้าคุณติดตั้งโดยใช้การดาวน์โหลดโฟลเดอร์ zip มากกว่าดาวน์โหลดล่าสุดจากเว็บไซต์ magento และแทนที่ไฟล์ทั้งหมดโดยใช้ zip ใหม่กว่าที่คุณต้องการล้างแคชและเรียกใช้

bin/magento setup:upgrade

0

อัพเกรดวีโอไอพีโดยทำตามคำสั่ง

การตั้งค่า bin / magento: อัปเกรด

การตั้งค่า bin / magento: db-schema: upgrade

php -d memory_limit = -1 การตั้งค่า bin / magento: di: compile

php -d memory_limit = -1 การตั้งค่า bin / magento: เนื้อหาคงที่: ปรับใช้


0

โปรดลองอัปเดตรหัสด้านล่าง:

เส้นทาง - 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) {

หวังว่ามันจะทำงานให้คุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.