Я хотел бы предоставить User Point владельцу продукта в размере цены продукта после продажи продукта.
Для этого я определил правило следующим образом:
События: завершение процесса оформления заказа
Действия: Loop (
commerce-order:commerce-line-items
)
И я определил компонент правил, как показано ниже:
Условия: Entity имеет поле (Entity:
commerce-line-item
, поле:commerce_product
)Действия: баллы Предоставляйте пользователь: (пользователей:
commerce-line-item:commerce-product:creator
, Баллы:commerce-line-item:commerce-product:commerce-price:amount
)
Но когда я сохраняю компонент, он генерирует это сообщение об ошибке:
Селектор данных commerce-line-item: commerce-product: commerce-price: сумма для точек параметра недействительна.
Как я могу это сделать?
источник
Ответы:
Сначала я попытался ответить на ваш вопрос, используя модуль правил и пользовательских точек , но увидел, что при добавлении баллов Grant пользователю в качестве действия такого селектора данных для выбора пользователя, создавшего продукт, не существует. Я нашел селектор данных для выбора пользователя, который является владельцем заказа, но это не ваше требование. (Вот почему я пояснил это в комментариях).
Я нашел модульное решение вашего вопроса. Модуль использует hook_commerce_checkout_complete () . Со страницы хука:
Это кодировка модуля, который я разработал:
YOURMODULE.info файл:
ОБНОВЛЕНИЕ Как предложил Клайв , я изменил файл модуля, чтобы этот пользовательский модуль также работал с многоязычными сайтами.
Файл YOURMODULE.module :
Ссылочные ссылки:
userpoints_userpointsapi ($ PARAMS)
API commerce_checkout
commerce_line_item_load ($ LINE_ITEM_ID)
commerce_product_load ($ product_id)
Точки пользователя: вычитать очки программно
commerce_currency_amount_to_decimal ()
источник
field_get_items()
для извлечения$order->commerce_line_items
, таким образом, это будет работать и с многоязычными сайтамиВ качестве альтернативы предыдущему ответу, который требует пользовательского кода, вы можете попробовать альтернативу, описанную ниже, чтобы обойти это сообщение об ошибке ...
Ваш вопрос, кажется, является разновидностью (а не дубликатом) вопроса « Как назначить пользовательские пользовательские баллы равными значению определенного поля / вычисленному значению? ». Подобно принятому ответу на этот вопрос, попробуйте адаптировать ваш компонент правил следующим образом:
Добавьте эти дополнительные действия с правилами перед действием с правилами в компоненте правил, который вызывает ошибку:
commerce-line-item:commerce-product:commerce-price:amount
. Предположим, вы называете эту переменнуюprice_amount
.price_amount
переменной в целое число . Предположим, вы назвали этот результат преобразованияamount_of_points
.amount_of_points
.PS 1: Такой «Преобразовать тип данных» просто зависит от того, как работают Правила (по замыслу), поэтому его также не следует рассматривать как ошибку ...
PS 2: я полагаю, ваш вопрос о D7.
источник