কোনও বাণিজ্য পণ্যের দামের সমান ব্যবহারকারী পয়েন্টগুলি কীভাবে মঞ্জুর করবেন?


9

আমি কোনও পণ্য বিক্রি হওয়ার পরে পণ্যমূল্যের পরিমাণে পণ্য মালিককে ব্যবহারকারী পয়েন্টটি দিতে চাই ।

এর জন্য আমি নীচের মতো একটি নিয়ম সংজ্ঞায়িত করেছি:

  • ইভেন্টগুলি: চেকআউট প্রক্রিয়াটি সম্পূর্ণ করা হচ্ছে

  • ক্রিয়া: লুপ ( commerce-order:commerce-line-items)

এবং আমি নীচের মতো একটি বিধি উপাদানকে সংজ্ঞায়িত করেছি:

  • শর্তাদি: সত্তার ক্ষেত্র রয়েছে (সত্তা:, commerce-line-itemক্ষেত্র commerce_product:)

  • ক্রিয়া: কোনও ব্যবহারকারীর জন্য অনুদান পয়েন্ট: (ব্যবহারকারী commerce-line-item:commerce-product:creator:, পয়েন্ট commerce-line-item:commerce-product:commerce-price:amount:)

কিন্তু যখন আমি উপাদানটি সংরক্ষণ করি এটি ত্রুটি বার্তা উত্পন্ন করে:

ডেটা নির্বাচক বাণিজ্য-লাইন-আইটেম: বাণিজ্য-পণ্য: বাণিজ্য-মূল্য: পরামিতি পয়েন্টের পরিমাণ অবৈধ।

আমি কীভাবে এটি করতে পারি?


আপনার এই অবস্থাটি কেন দরকার?
subhojit777

সম্ভবত কারণটি হ'ল চেকআউটটি সম্পন্ন হওয়ায় বাণিজ্য-পণ্য ইতিমধ্যে সুযোগের বাইরে রয়েছে (আমি নিশ্চিত নই)। মানটি মুদ্রণের চেষ্টা করুন এবং একবার এটি পরীক্ষা করুন।
গোকুল এনকে

@ ড্যানিয়েল আপনি কি নিশ্চিত যে পণ্যটি তৈরি করেছেন এমন ব্যবহারকারীকে আপনি পয়েন্ট দিতে চান?
subhojit777

@ subhojit777 হ্যাঁ, উদাহরণস্বরূপ ব্যবহারকারীর creditণ হিসাবে ব্যবহারকারী পয়েন্টগুলি পরিচালনা করুন। আমি একটি ভার্চুয়াল পণ্য তৈরি করি যা একবার কিনেছিল, আমাকে সত্যিকারের পণ্য কেনার জন্য প্রয়োজনীয় ব্যবহারকারী পয়েন্ট দেয়। দু: খজনকভাবে বাণিজ্য_প্রেমীদের কমার্স_উসারপয়েন্টগুলির মতো নমনীয়তা এবং মুদ্রা প্রতিস্থাপনের দরকার নেই।
ড্যানিয়েল নপোলিটানো

পুনঃটুইট করেছেন আমি দেখছি প্রশ্নের নিয়মের উপাদানটিতে শর্ত রয়েছে।
subhojit777

উত্তর:


5

প্রথমে আমি নিয়ম এবং ইউজারপয়েন্ট মডিউলটি ব্যবহার করে আপনার প্রশ্নের উত্তর দেওয়ার চেষ্টা করেছি , কিন্তু আমি দেখেছি যে কোনও ব্যবহারকারীকে ক্রিয়া হিসাবে গ্রান্ট পয়েন্ট যুক্ত করার সময় পণ্যটি তৈরি করা ব্যবহারকারীর নির্বাচনের জন্য এমন কোনও ডেটা নির্বাচনকারী নেই। অর্ডার মালিক এমন ব্যবহারকারী নির্বাচনের জন্য আমি ডেটা নির্বাচককে পেয়েছি, তবে এটি আপনার প্রয়োজন নয় not (এই কারণেই আমি মন্তব্যগুলিতে এটি স্পষ্ট করেছিলাম)।

আমি আপনার প্রশ্নের একটি মডিউল সমাধান খুঁজে পেয়েছি। মডিউলটি হুক_কমার্স_চেকআউট_ কমপ্লিট () ব্যবহার করে । হুক পৃষ্ঠা থেকে:

যখন কোনও অর্ডার চেকআউট সম্পন্ন করে মডিউলগুলিকে ব্যবসায়ের যুক্তি সম্পাদনের অনুমতি দেয়।

এই হুক "গ্রাহক সম্পূর্ণ চেকআউট" ইভেন্টের সাথে মিলে যায়। অর্ডার স্থিতি আপডেট করা, ব্যবহারকারীর অ্যাকাউন্টে অর্ডার অর্পণ করা, বা বিজ্ঞপ্তি ইমেল প্রেরণ করা যেমন কেবল তখনই ব্যবসায়ের যুক্তি সম্পাদন করা উচিত। পরিবর্তে চেকআউট সমাপ্তির পৃষ্ঠায় চেকআউট প্যানগুলির মাধ্যমে ব্যবহারকারীর সাথে মিথস্ক্রিয়া হওয়া উচিত।

এটি আমি ডিজাইন করা মডিউলটির কোডিং:

আপনার ফাইল ডাউনলোড করুন ফাইল:

name = YOURMODULE
description = Module description
dependencies[] = commerce
dependencies[] = commerce_cart
dependencies[] = commerce_checkout
dependencies[] = userpoints
core = 7.x

আপডেট ক্লাইভের পরামর্শ অনুসারে , আমি মডিউল ফাইলটি পরিবর্তন করেছি যাতে এই কাস্টম মডিউলটি বহুভাষিক সাইটগুলির সাথেও কাজ করবে।

আপনার ফাইল.মডিউল ফাইল:

/**                                                                             
 * Implements hook_commerce_checkout_complete().                                
 */                                                                             
function YOURMODULE_commerce_checkout_complete($order) {
  // Iterate through every commerce line item added in product.
  foreach (field_get_items('commerce_order', $order, 'commerce_line_items') as $line_item_id) {

    // Load commerce line item by line item id.
    $line_item = commerce_line_item_load($line_item_id['line_item_id']);

    // We do not want to include shipping cost in userpoints.
    if ($line_item->type != 'shipping') {
      // Load commerce product by product id.
      $product = commerce_product_load(field_get_items('commerce_line_item', $line_item, 'commerce_product')[0]['product_id']);

      // Create parameters.
      $params = array(
        'uid' => $product->uid,
        'points' => commerce_currency_amount_to_decimal(field_get_items('commerce_line_item', $line_item, 'commerce_total')[0]['amount'], field_get_items('commerce_line_item', $line_item, 'commerce_total')[0]['currency_code']),
      );

      // Grant userpoints programmatically.
      userpoints_userpointsapi($params);
    }
  }
}

রেফারেন্স লিঙ্ক:

userpoints_userpointsapi ($ প্যারাম)

वाणिज्य_চেকআউট এপিআই

commerce_line_item_load ($ line_item_id)

commerce_product_load ($ PRODUCT_ID)

ইউজারপয়েন্টস: প্রোগ্রামগতভাবে পয়েন্টগুলি বাদ দিন

commerce_currency_amount_to_decimal ()


দুর্দান্ত সমাধান, এটি কাজে আসবে। আমি কি একটি ছোট পরিবর্তন প্রস্তাব করতে পারি? field_get_items()পুনরুদ্ধার করার জন্য ব্যবহার করা ভাল হবে $order->commerce_line_items, এইভাবে এটি বহুভাষিক সাইটগুলির সাথেও কাজ করবে
ক্লাইভ

@ পরামর্শের জন্য ক্লাইভ ধন্যবাদ .. তবে আমি এর আগে ফিল্ড_গেট_াইটেম () কখনও ব্যবহার করি নি .. আমাকে এর ব্যবহার শিখতে হবে এবং এই উত্তরে এটি প্রয়োগ করতে হবে। কিছু সময় প্রয়োজন :)
subhojit777

0

পূর্ববর্তী উত্তরের বিকল্প হিসাবে, যার জন্য কাস্টম কোড প্রয়োজন, আপনি ত্রুটি বার্তাটি পেতে নীচে বর্ণিত বিকল্পটি চেষ্টা করতে পারেন ...

আপনার প্রশ্নটি প্রশ্নই একটি পরিবর্তন (একটি ডুপ্লিকেট) মনে করা হয় " কিভাবে ব্যবহারকারী পয়েন্ট নির্দিষ্ট ক্ষেত্রের মান / হিসাব মান সমান মঞ্জুর করতে? "। এই প্রশ্নের গৃহীত উত্তরের অনুরূপ, আপনার বিধি উপাদানগুলি এমনভাবে খাপ খাইবার চেষ্টা করুন:

  1. ত্রুটি সৃষ্টিকারী আপনার বিধি উপাদানগুলিতে বিধি বিধিগুলির পূর্বে এই অতিরিক্ত নিয়মাবলী ক্রিয়াগুলি যুক্ত করুন:

    • Set a variableএটি " পণ্যের দামের পরিমাণ " (আপনার প্রশ্নের মতো) এর সাথে মিলে যায়, যা প্রদর্শিত হয় commerce-line-item:commerce-product:commerce-price:amount। আসুন আপনি যে পরিবর্তনশীল নাম অনুমান price_amount
    • Convert data typeপূর্ণসংখ্যার যে price_amountপরিবর্তনশীল । আসুন ধরে নেওয়া যাক আপনি সেই রূপান্তর ফলাফলটির নাম দিন ।amount_of_points
  2. আপনার বিদ্যমান রুলস অ্যাকশনটিকে (সেই বিধি উপাদানগুলিতে) অভিযোজিত করুন যাতে মঞ্জুর হওয়া ব্যবহারকারী পয়েন্টের সংখ্যা এটি ব্যবহার করে (গণনা + রূপান্তরিত) amount_of_points

পিএস 1: এই জাতীয় "রূপান্তর ডেটা টাইপ" বিধিগুলি কীভাবে কাজ করে তা ডিজাইনের (নকশা অনুসারে) কেবল তাই এটি কোনও বাগ হিসাবে বিবেচনা করা উচিত নয় ...

পিএস 2: আমি ধরে নিয়েছি আপনার প্রশ্নটি ডি 7 সম্পর্কে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.