No começo eu tentei responder a sua pergunta usando regras e userpoints módulo, mas eu vi que ao adicionar pontos de conceder a um usuário como ação não existe tal seletor de dados para selecionar o usuário que criou o produto. Encontrei o seletor de dados para selecionar o usuário que é o proprietário do pedido, mas esse não é seu requisito. (Foi por isso que esclareci isso nos comentários).
Encontrei uma solução de módulo para sua pergunta. O módulo usa hook_commerce_checkout_complete () . Na página do gancho:
Permite que os módulos executem a lógica de negócios quando um pedido concluir a finalização da compra.
Esse gancho coincide com o evento "O cliente conclui a finalização da compra". Somente a lógica comercial deve ser executada quando isso é chamado, como atualizar o status do pedido, atribuir o pedido a uma conta de usuário ou enviar e-mails de notificação. Em vez disso, a interação com o usuário deve ocorrer através dos painéis de checkout na página de conclusão do checkout.
Esta é a codificação do módulo que eu projetei:
Arquivo YOURMODULE.info :
name = YOURMODULE
description = Module description
dependencies[] = commerce
dependencies[] = commerce_cart
dependencies[] = commerce_checkout
dependencies[] = userpoints
core = 7.x
ATUALIZAÇÃO
Conforme sugerido por Clive , alterei o arquivo do módulo para que esse módulo personalizado também funcione com sites multilíngues.
Arquivo 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);
}
}
}
Links de referência:
userpoints_userpointsapi ($ params)
API commerce_checkout
trade_line_item_load ($ line_item_id)
trade_product_load ($ product_id)
Pontos de usuário: deduzir pontos programaticamente
commerce_currency_amount_to_decimal ()