Pada awalnya saya mencoba menjawab pertanyaan Anda menggunakan modul rules dan userpoints , tetapi saya melihat bahwa ketika menambahkan poin Grant kepada pengguna sebagai tindakan, tidak ada pemilih data untuk memilih pengguna yang telah menciptakan produk. Saya menemukan pemilih data untuk memilih pengguna yang merupakan pemilik pesanan, tetapi itu bukan kebutuhan Anda. (Itulah sebabnya saya mengklarifikasi hal ini dalam komentar).
Saya menemukan solusi modul untuk pertanyaan Anda. Modul ini menggunakan hook_commerce_checkout_complete () . Dari halaman kait:
Mengizinkan modul melakukan logika bisnis saat pesanan menyelesaikan checkout.
Hook ini bertepatan dengan acara "Pelanggan menyelesaikan checkout". Hanya logika bisnis yang harus dilakukan ketika ini dipanggil, seperti memperbarui status pesanan, menetapkan pesanan ke akun pengguna, atau mengirim email pemberitahuan. Interaksi dengan pengguna seharusnya terjadi melalui panel checkout di halaman penyelesaian checkout.
Ini adalah pengkodean modul yang saya rancang:
File YOURMODULE.info :
name = YOURMODULE
description = Module description
dependencies[] = commerce
dependencies[] = commerce_cart
dependencies[] = commerce_checkout
dependencies[] = userpoints
core = 7.x
PEMBARUAN
Seperti yang disarankan oleh Clive , saya telah mengubah file modul sehingga modul khusus ini juga akan berfungsi dengan situs multibahasa.
File 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);
}
}
}
Tautan referensi:
userpoints_userpointsapi ($ params)
API commerce_checkout
commerce_line_item_load ($ line_item_id)
commerce_product_load ($ product_id)
Userpoints: kurangi poin secara terprogram
commerce_currency_amount_to_decimal ()