पहले तो मैंने नियमों और यूजर पॉइंट्स मॉड्यूल का उपयोग करते हुए आपके प्रश्न का उत्तर देने का प्रयास किया , लेकिन मैंने देखा कि उपयोगकर्ता के लिए ग्रांट बिंदुओं को जोड़ते समय कार्रवाई के रूप में ऐसा कोई डेटा चयनकर्ता नहीं है, जिसने उत्पाद का निर्माण किया हो। मुझे उपयोगकर्ता का चयन करने के लिए डेटा चयनकर्ता मिला जो ऑर्डर का मालिक है, लेकिन यह आपकी आवश्यकता नहीं है। (इसीलिए मैंने टिप्पणियों में इसे स्पष्ट किया)।
मुझे आपके प्रश्न का एक मॉड्यूल समाधान मिला। मॉड्यूल hook_commerce_checkout_complete () का उपयोग करता है । हुक पृष्ठ से:
जब कोई ऑर्डर चेकआउट पूरा करता है, तो मॉड्यूल को व्यावसायिक तर्क करने की अनुमति देता है।
यह हुक "ग्राहक पूर्ण चेकआउट" घटना के साथ मेल खाता है। जब इसे लागू किया जाता है, तो केवल व्यावसायिक तर्क का प्रदर्शन किया जाना चाहिए, जैसे कि ऑर्डर की स्थिति को अपडेट करना, उपयोगकर्ता खाते को आदेश सौंपना, या अधिसूचना ई-मेल भेजना। उपयोगकर्ता के साथ सहभागिता इसके बजाय चेकआउट पूर्ण पृष्ठ पर चेकआउट पैन के माध्यम से होनी चाहिए।
यह मेरे द्वारा डिज़ाइन किए गए मॉड्यूल की कोडिंग है:
YourMODULE.info फ़ाइल:
name = YOURMODULE
description = Module description
dependencies[] = commerce
dependencies[] = commerce_cart
dependencies[] = commerce_checkout
dependencies[] = userpoints
core = 7.x
UPDATE
जैसा कि क्लाइव द्वारा सुझाया गया है , मैंने मॉड्यूल फ़ाइल को बदल दिया है ताकि यह कस्टम मॉड्यूल बहुभाषी साइटों के साथ भी काम करे।
YourMODULE.module फ़ाइल:
/**
* 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 ()