সমস্ত অনুমোদিত মুদ্রায় কীভাবে পণ্যের দাম পাবেন?


10

দুটি স্টোর ভিউ সহ আমার একটি সেটআপ আছে।

প্রথম স্টোর ভিউতে বেস রয়েছে এবং কেবলমাত্র এক মুদ্রাকে মার্কিন ডলারে সেট করা হয়েছে। দ্বিতীয়টির 2 টি অনুমোদিত মুদ্রা রয়েছে - মার্কিন ডলার এবং EUR। EUR হল ডিফল্ট প্রদর্শিত, ইউএসডি একটি বেস হিসাবে সেট করা হয়।

সমস্ত পণ্যের দাম কেবল মার্কিন ডলারে সেট করা হয় এবং EUR এর বিনিময় হার 0.75 এ সেট করা হয়। পণ্যের দাম ধরা যাক $ 14।

এবং আমার কোড যায়:

// Store ID 2 - default currency EUR, base currency USD
// $product is instance of Magento\Catalog\Model\Product
$priceInfo = $product->getPriceInfo();
$price = $priceInfo->getPrice('regular_price')->getValue();

এই কোডটি সর্বদা EUR এ সঠিক মূল্য (10.50) এনেছে। তবে আমার উভয় দাম প্রয়োজন - মার্কিন ডলারে এবং EUR এ, তবে কোনও getPriceপদ্ধতিতে কীভাবে মুদ্রা পাস করতে হবে তার কোনও উপায় আমি পাইনি ।

আমি Magento\Directory\Helper\Dataরূপান্তর করতে ব্যবহার করার চেষ্টা করেছি :

$helper->currencyConvert($price, 'EUR', 'USD');

কিন্তু এটি আমাকে। 13.99 দেয় যখন ডলারের আসল দাম 14 ডলার হয় - সুতরাং গণনাটি ভুল।

আপনি কি জানেন যে আমি উভয় স্টোর মুদ্রার জন্য পণ্যগুলির দামগুলি কীভাবে পেতে পারি? অনেক ধন্যবাদ!

উত্তর:


1

আপনি যখন 'গণনাটি ভুল' বলে মনে করেন, এটি সর্বদা উত্স কোডটি দেখতে সহায়তা করে। আমি যখন দেখি \Magento\Directory\Model\Currency::convert()(এটি অভ্যন্তরীণ পদ্ধতি যা \Magento\Directory\Helper\Data::currencyConvert()ব্যবহার করে) তখন আমি আকর্ষণীয় কিছু দেখতে পাই:

public function convert($price, $toCurrency = null)
{
    if ($toCurrency === null) {
        return $price;
    } elseif ($rate = $this->getRate($toCurrency)) {
        return $price * $rate;
    }

এর অর্থ এটি যে দামকে সেট করা হয় তার হারে রূপান্তর করে $toCurrency। আপনার উদাহরণে আপনার EUR রূপান্তর করুন মার্কিন ডলার। আমার ধারণা ইউএসডি এর হার 1.00, সুতরাং যখন আপনি 14 মার্কিন ডলার * 1.00 রূপান্তর করবেন তখন আপনি 13.99 পাবেন (আমার ধারণা এটি ভাসমান সংখ্যাগুলি কীভাবে কাজ করে?) কাজ করে?

কীভাবে সমাধান করবেন? ঠিক আছে, আপনার মার্কিন ডলারে আপনার মূল মূল্য রয়েছে, এবং আপনি জানেন যে EUR এর হার 0.75 রয়েছে, সুতরাং আপনার কাছে যদি এমন পণ্য রয়েছে যা আপনার পণ্যের মূল মূল্য নিয়ে আসে, আপনি EUR রেটটি লোড করেন এবং এটির সাথে বহুগুণ বৃদ্ধি করে আপনি যেতে চান । উদাহরণ স্বরূপ:

$basePrice = $product->getPrice();
$currency  = $currencyFactory->create()->load('EUR');
$eurPrice  = $currency->convert($basePrice, 'EUR');

এটি এখনও পরীক্ষিত হয়নি তাই কেবল কোড অনুসরণ করে এটি কাজ করে কিনা তা আমি নিশ্চিত নই। তবে সম্ভবত এটি আপনাকে সমাধান সন্ধান করতে সহায়তা করে।


1

দয়া করে নীচের কোডটি ব্যবহার করুন

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$productId = 46;
$product = $objectManager->create('Magento\Catalog\Model\Product')->load(productId );
$price = $product->getFinalPrice();
$currency = $objectManager->create('Magento\Directory\Model\Currency')->load('USD');
echo $currency->convert($price,'EUR');
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.