Gostaria de conceder o ponto de usuário ao proprietário do produto no valor do preço do produto após a venda do produto.
Para isso, defini uma regra como abaixo:
Eventos: Concluindo o processo de checkout
Ações: Loop (
commerce-order:commerce-line-items
)
E eu defini um componente de regras como abaixo:
Condições: Entidade tem de campo (Entidade:
commerce-line-item
, Campo:commerce_product
)Ações: Pontos de conceder a um utilizador: (User:
commerce-line-item:commerce-product:creator
, Pontos:commerce-line-item:commerce-product:commerce-price:amount
)
Mas quando eu salvo o componente, gera esta mensagem de erro:
Seletor de dados item de linha de comércio: produto de comércio: preço de comércio: a quantidade de pontos de parâmetro é inválida.
Como eu posso fazer isso?
fonte
Respostas:
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:
Esta é a codificação do módulo que eu projetei:
Arquivo YOURMODULE.info :
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 :
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 ()
fonte
field_get_items()
para recuperar$order->commerce_line_items
, dessa maneira também funcionará com sites multilínguesComo alternativa à resposta anterior, que requer código personalizado, tente a alternativa descrita abaixo para contornar a mensagem de erro ...
Sua pergunta parece ser uma variação (não uma duplicata) da pergunta " Como conceder pontos de usuário ao usuário igual ao valor de determinado campo / valor calculado? ". Semelhante à resposta aceita para essa pergunta, tente adaptar seu Componente de Regras da seguinte maneira:
Adicione essas ações de regras extras antes da ação de regras no seu componente de regras que causa o erro:
commerce-line-item:commerce-product:commerce-price:amount
. Vamos supor que você nomeie essa variávelprice_amount
.price_amount
variável para inteiro . Vamos supor que você nomeie esse resultado de conversãoamount_of_points
.amount_of_points
.PS 1: Esse tipo de "Converter dados" é simplesmente uma questão de como as Regras funcionam (por design), por isso também não deve ser considerado um bug ...
PS 2: Presumo que sua pergunta seja sobre D7.
fonte