تصویر امیر حسین اکبری

واحدهای پولی تعریف شده در استاندارد ISO به گونه‌ای است که واحد پولی تومان تعریف نشده و استاندارد "ریال" در نظر گرفته شده است. حال به منظور افزودن واحد "تومان" در Drupal Commerce  از ماژول زیر استفاده می کنیم که با فعال نمودن آن واحد پولی تومان افزوده می گردد.

<?php
/**
* Implements hook_commerce_currency_info_alter().
*/
function commerce_toman_commerce_currency_info_alter(&$currencies, $langcode) {
  $currencies['TMN'] = array(
    'code' => 'TMN',
    'decimals' => 0,
    'numeric_code' => 999,
    'symbol' => t('Toman'),
    'name' => t('Toman'),
  );
}

 

 

دیدگاه‌ها

تصویر محمدعلی اکبری

محمدعلی اکبری

حالا باید قبل از ارسال به درگاه بانک آن را به ریال تبدیل کنیم.

تصویر امیر حسین اکبری

امیر حسین اکبری

در واقع این ماژول با استفاده از این hook لیست واحدهای پولی را که در فایل زیر تعریف شده است را alter می کند.

C:\wamp\www\dov\public_html\profiles\commerce_kickstart\modules\contrib\commerce\includes\commerce.currency.inc

 

 

تصویر Hamid Asghari

Hamid Asghari

ممنون

تصویر نوید

نوید (تایید نشده)

سلام
موقع ارسال به بانک باید تبدیل بشه به ریال؟
چطوری؟
ممنون

تصویر نوید

نوید (تایید نشده)

همچنین وقتی که نصب میشه جای "تومان" می نویسه TMN

تصویر مهرداد

مهرداد (تایید نشده)

این ماژول وقتی میره به صفحه بانک توش چی نوشته شده ؟ ریال یا تومان ؟

تصویر محمدعلی اکبری

محمدعلی اکبری

هندل سمت بانک با خودشه و ریاله

تصویر مهرداد

مهرداد (تایید نشده)

من سورس این ماژول رو دیدم. فقط یه کارنسی اضافه میکنه اما هیچ محاسباتی نداره. (اینکه مثلا رقم رو در 10 ضرب کنه)

حالا وقتی با این میره سمت بانک اتومات ریال میشه ؟ یعنی میخواهید بگید خود بانک میفهمه که TMN مال تومن هست و مبلغ رو تبدیل به ریال میکنه ؟

تصویر محمدعلی اکبری

محمدعلی اکبری

اون قسمتش رو خود کامرس هندل میکنه تو درگاه های بانکی

  $wrapper = entity_metadata_wrapper('commerce_order', $order);
 
  $currency_code = $wrapper->commerce_order_total->currency_code->value();
  $amount_debug = commerce_currency_decimal_to_amount(1000, $currency_code);
  $amount = $payment_method['settings']['debug'] ? $amount_debug : (int) ($wrapper->commerce_order_total->amount->value());
  $amount_decimal = commerce_currency_amount_to_decimal($amount, $currency_code);
تصویر مهرداد

مهرداد (تایید نشده)

اقای علی اکبری
شما فرمودید اون قسمت رو خود کامرس هندل میکنه
در حالیکه من یه سفارش زدم. ماژول تومان هم فعال بود و قیمتها به تومان نمایش داده میشد
اما وقتی رفت به صفحه بانکی همون قیمت تومان رو به ریال زده بود.
یعنی مثلا در سایت سفارش شده بود 1000000 تومان. تو سایت بانکی شده بود 1000000 ریال (100 هزار تومان)
این که مشکل داره اساسا. شما رو چه حساب فرمودید که مشکلی براش پیش نمیاد ؟

تصویر مهرداد

مهرداد (تایید نشده)

مساله اینجاست که شما در پیکره بندی کارنسی تومان این عبارت رو گذاشتید
'decimals' => 0,

این یعنی وقتی شما از تابع commerce_currency_amount_to_decimal استفاده میکنی رقم در 10 ضرب نمیشه.

حالا گه فرضا پارامتر decimals رو بذارید روی -1 درسته وقتی به سایت بانک میره عدد به ریال تبدیل شده اما توی نمایش خود قیمتها در سایت هم این عدد در 10 ضرب شده رو نشون میده و جلوش مینویسه تومان
یعنی قیمت ها رو 10 برابر نشون میده

شما خودتون این رو بررسی کردید تابحال ؟

تصویر مهرداد

مهرداد (تایید نشده)

عزیز جان شما دیگه رفتی که رفتی ؟
من به شما ایمیل زدم و منتظر پاسخ موندم.

به نظر من قشنگ تر بود شما که زحمت کشدید و این ماژول رو گذاشتید و حتی کدش رو هم توضیح دادید این مساله که بنده خدمت شما عرض کردم رو هم حل میکردید.

چون بدون حل کردن اون مشکل از این ماژول عملا نمیشه استفاده کرد.

تصویر محمدعلی اکبری

محمدعلی اکبری

برای حل مشکل در متد پرداخت بانک قبل از ارسال اطلاعات سمت درگاه کارهای مربوط به قیمت رو انجام بدید.

افزودن نظر جدید