我如何通过Commerce-Order-over总授予用户点数:金额 -- 7 领域 和 commerce 领域 和 rules 领域 和 userpoints 领域 drupal 相关 的问题

How can I remove decimals when I award user points via commerce-order-total:amount


简体版||繁體版
1
vote

问题

中文

我希望在完成结账过程后授予用户。对于此任务,我使用此模块(Commerce,Userpoints,Commerce Credits)。

我创建一个价格等于15 $的产品,并在完整结账后创建一个奖励用户的规则。结帐时,规则工作很大,但它给了用户1500 Userpoints而不是15.我尝试了使用模块(商务价格小数格式化器,商业价格从商业中删除了小数,我还尝试使用互联网的一些代码但是所有的代码不解决我的问题。

有人知道这个问题的解决方案吗?

我在互联网上找到的代码:

  <?php /**  * Implements hook_commerce_currency_info_alter().  */ function Zero_commerce_currency_info_alter(&$currencies, $langcode) {   $currencies['USD']['format_callback'] = 'Zero_rub_currency_format'; }   /**  * Currency format callback.  */ function Zero_rub_currency_format($amount, $currency, $object) {   $round_amount = commerce_currency_round(abs($amount), $currency);   $price = number_format($round_amount, 0, $currency['decimal_separator'], $currency['thousands_separator']);    $replacements = array(     '@code_before' => $currency['code_placement'] == 'before' ? $currency['code'] : '',     '@symbol_before' => $currency['symbol_placement'] == 'before' ? $currency['symbol'] : '',     '@price' => $price,     '@symbol_after' => $currency['symbol_placement'] == 'after' ? $currency['symbol'] : '',     '@code_after' => $currency['code_placement'] == 'after' ? $currency['code'] : '',     '@negative' => $amount < 0 ? '-' : '',     '@symbol_spacer' => $currency['symbol_spacer'],     '@code_spacer' => $currency['code_spacer'],   );    return trim(t('@code_before@code_spacer@negative@symbol_before@price@symbol_spacer@symbol_after@code_spacer@code_after', $replacements)); }   

是我的规则:

  { "rules_grantpointaftercheckout" : { "LABEL" : "GrantPointAfterCheckOut", "PLUGIN" : "reaction rule", "OWNER" : "rules", "REQUIRES" : [ "rules", "userpoints_rules", "commerce_checkout" ], "ON" : { "commerce_checkout_complete" : [] }, "DO" : [   { "data_convert" : {       "USING" : {         "type" : "integer",         "value" : [ "commerce-order:commerce-order-total:amount" ],         "rounding_behavior" : "down"       },       "PROVIDE" : { "conversion_result" : { "conversion_result" : "Conversion result" } }     }   },   { "userpoints_action_grant_points" : {       "user" : [ "site:current-user" ],       "points" : [ "conversion-result" ],       "tid" : "0",       "entity" : [ "site:current-cart-order" ],       "operation" : "bla bla bla",       "display" : "1",       "moderate" : "approved"     }   } ] } }   
英文原文

I want award users after completing the checkout process. For this task I use this modules (Commerce, UserPoints, Commerce Credits).

I create a product with a price equal 15$ and create a rule which award user after complete checkout. When checkout is complete, rule works great, but it gives user 1500 userpoints instead 15. I tried use module (Commerce Price Decimals Formatter, Commerce Extra Price Formatters) which remove decimals from commerce also I tried use some code from internet but all of it doesn't solve my issue.

Does anybody know solution for this issue?

it's code that I found on the internet:

<?php /**  * Implements hook_commerce_currency_info_alter().  */ function Zero_commerce_currency_info_alter(&$currencies, $langcode) {   $currencies['USD']['format_callback'] = 'Zero_rub_currency_format'; }   /**  * Currency format callback.  */ function Zero_rub_currency_format($amount, $currency, $object) {   $round_amount = commerce_currency_round(abs($amount), $currency);   $price = number_format($round_amount, 0, $currency['decimal_separator'], $currency['thousands_separator']);    $replacements = array(     '@code_before' => $currency['code_placement'] == 'before' ? $currency['code'] : '',     '@symbol_before' => $currency['symbol_placement'] == 'before' ? $currency['symbol'] : '',     '@price' => $price,     '@symbol_after' => $currency['symbol_placement'] == 'after' ? $currency['symbol'] : '',     '@code_after' => $currency['code_placement'] == 'after' ? $currency['code'] : '',     '@negative' => $amount < 0 ? '-' : '',     '@symbol_spacer' => $currency['symbol_spacer'],     '@code_spacer' => $currency['code_spacer'],   );    return trim(t('@code_before@code_spacer@negative@symbol_before@price@symbol_spacer@symbol_after@code_spacer@code_after', $replacements)); } 

It is my Rule:

{ "rules_grantpointaftercheckout" : { "LABEL" : "GrantPointAfterCheckOut", "PLUGIN" : "reaction rule", "OWNER" : "rules", "REQUIRES" : [ "rules", "userpoints_rules", "commerce_checkout" ], "ON" : { "commerce_checkout_complete" : [] }, "DO" : [   { "data_convert" : {       "USING" : {         "type" : "integer",         "value" : [ "commerce-order:commerce-order-total:amount" ],         "rounding_behavior" : "down"       },       "PROVIDE" : { "conversion_result" : { "conversion_result" : "Conversion result" } }     }   },   { "userpoints_action_grant_points" : {       "user" : [ "site:current-user" ],       "points" : [ "conversion-result" ],       "tid" : "0",       "entity" : [ "site:current-cart-order" ],       "operation" : "bla bla bla",       "display" : "1",       "moderate" : "approved"     }   } ] } } 
           
 
 

回答列表

1
 
vote
vote
最佳答案
 

看看 drupal commerce 问题关于"修改我们处理价格量值" 的方式。特别是评论NR 37,哪些州:

价格领域是并将继续将价格金额存储为整数...

所以四舍五入的数量为1500美元......仍然是1500,对吧?这是您授予的用户点数。因此,您的规则工作如实施方式:您使用的是1500的值作为要授予的用户点的数量。

显然,您需要做的就是扩展您的规则,首先将价格推出(在舍入之前)。我假设你知道如何做到这一点,如果不使用这个链接 ...奖金提示:看看榜样答案中包含的规则"如何使用规则添加字段收集字段的所有项目?" ,尤其是"计算值" 规则操作。

 

Have a look at the Drupal Commerce issue about "Revise the way we handle price amount values". Especially comment nr 37 in it, which states:

The price field is and will continue to store price amounts as integers ...

So rounding an amount of 1500 dollarcents is ... still 1500, right? And that is the amount of user points you're granting. And because of that, your rule works as implemented: you're using that value of 1500 as the amount of userpoints to be granted.

Obviously, all you need to do next is to expand your rule to devide the price by 100 first (before rounding it). I assume you know how to do that, if not use this link ... bonus hint: have a look at the example rule included in the answer to "How to add up all items of a field collection field using Rules?", especially the "Calculate a value" Rules Action.

 
 

相关问题

1  使用规则奖励日常登录  ( Reward for daily login with rules ) 
我想用1点奖励我的用户每24小时登录。 事件:用户已登录 条件:?? 行动:奖励积分(我有一个组件) 我不知道每24小时如何奖励一次。怎么样? ...

9  如何授予用户点等于商务产品的价格?  ( How to grant user points equal to the price of a commerce product ) 
我想授予用户指向产品所有者在产品价格之后产品已售出。 为此,我定义了如下规则: 事件:完成结帐过程 操作:循环( commerce-order:commerce-line-items ) 和我定义了一个如下规则组件: 条件:实体有字段(实体: commerce-line-item ,字段: comme...

2  合并分析  ( Consolidated analysis ) 
使用用户点用于drupal 6的模块,如何创建一个显示点余额的表对于所有用户,他们获得了信用卡或借方,谁做了? 是否有任何特殊模块可以这样做? ...

1  用户点规则:删除点(基于内容类型)  ( User points rules remove points based on content type ) 
我目前正在使用用户点规则模块,将点(审核和未经寄存器)授予用户使用注册模块注册内容的用户。但是,对于用户取消注册的情况,似乎可能无法移除(通过另一个事务)点。 该点不是静态(即每个注册1点,从而每次取消1点),但取决于为事件内容类型输入的整数值。 建议? 问题do: https://www.drupal.org/no...

2  如何防止负userpoints事务和结帐?  ( How to prevent negative userpoints transactions and checkout ) 
在关于如何防止用户点总计到给定用户的阈值以下以及相关主题。 但是,当用户尝试购买超过用户的余额/用户点帐户时,还有一个问题如何防止结账。 在此问题上有一个通用的解决方案(或不是唯一的)对事务和结账同时的问题吗? ...

3  如何使用用户点购买/销售自​​定义内容类型?  ( How to use user points to buy sell a custom content type ) 
我目前正在向教育项目工作,作为我在本科的专业的最终基座项目。该项目是一款在线艺术品贸易游戏,其中学生在现场上举办艺术经销商/收藏家的作用,并在网站上互相购买,销售,贸易和广告艺术品。由于其灵活性,我选择使用Drupal作为CMS,但相对的用户友好性,因为我不会在几周后毕业后保持项目。 我已经抛光了大部分网站的功能,除...

4  如何根据获得的用户点数添加自定义徽章?  ( How to add custom badges depending on the amount of user points earned ) 
在我的网站上,我有投票向上/向下模块和启用用户点模块和规则(使用规则 根据用户点添加自定义徽章的方式是什么? 让我们说,如果用户有100-150个用户点,那么用户的徽章将是"newbie" 。如果用户有150-200点,那么徽章将是"常规" 并继续... 我尝试过成就模块,但似乎很难! 因此,根据用户点添加自定义徽...

2  如何使用用户点来存储测验分数?  ( How to use user points for storing quiz scores ) 
如何直接添加点到用户点数据库?我有一个测验网站,并希望使用用户点模块来存储测验分数,而不是创建某些东西从头开始。我为这些点创建了分类"测验" 。 每个测验都通过显示所做的分数(根据它们正确的答案有多少)。我想在Userpoint数据库中继续存储它。 我正在使用以下代码,但我得到2个错误消息: 注意:未定义变量:用...

1  没有相关的UserPoints表中没有匹配记录的用户筛选视图  ( Filter view by users without a matching record in the related userpoints table ) 
我发现,如果我使用用户和Userpoints的内部连接,我会得到更好的查询性能,与左左连接相比。 目前,新用户在注册时有0个用户点,我将使用规则更改为1点。 将1个点添加到所有用户的所有用户,我正在考虑使用视图和视图批量操作。 到达"重点" : 我无法过滤查看用户的视图,为用户提供0个点,因为它们在UserPoint...

1  访问不同的Drupal站点中的用户点  ( Access user points in different drupal site ) 
我们有2个Drupal网站,一个作为CMS,另一个是商店。 在CMS站点中,我们正在使用UserPoints模块在某些操作上授予用户的点。 现在我的问题是,如何在商店网站上使用这些点。商店网站完全不同,表格CMS网站,但托管在司法岛上。 在商店网站中,我们正在使用Ubercart和Commerce-Userpoin...

2  用户点每节点下载而不是每个文件  ( User points download per node instead of per file ) 
Userpoints下载模块适合人们购买文件下载的信用。我有三个内容类型的CCK字段,但我想删除单个用户点,无论从单个节点下载多少个。任何想法? ...

2  基于点的任务:承诺和跟踪  ( Points based tasks pledging and tracking ) 
我是社会组织的成员,并运行其Drupal 7网站。我们将在几周内开始一个广告系列,以挑战成员批准,以实现某些基于点的任务(与网站无关),并希望跟踪承诺,完成和卷起的总和。 大约有100个任务,具有不同的点值和描述。任务是个人:多个成员可以承诺进行任务。 会员将在每个用户页面上注册以完成某些任务。成员承诺的任务和已完...

2  如何在产品出售后授予用户指向产品创建者?  ( How to grant user points to the product creator after the product is sold ) 
我想在销售产品后的70%的产品价格上给予用户指向的产品所有者。 我有规则和部分组件 规则 Events: Completing the checkout process Actions: Loop (commerce-order:commerce-line-items) 规则组件 Condit...

5  如何防止用户点总计低于给定用户的阈值?  ( How to prevent user point totals from going below a threshold for a given user ) 
我想为个人用户点设置一个绝对的地板(使用用户点模块)。具体而言,为了使得不可能在1以下的用户点数。 在Drupal 6中,userpoints_contrib中有 userpoints_no_negative 模块,但是删除了规则集成7.x( https://drupal.org/project/userpoints...

1  如何在Drupal 6中使用用户点添加点  ( How to add points using user points in drupal 6 ) 
我希望用户能够通过"用户点" 来向其他用户提供点数 我认为它是api: http://drupalcontrib.org/ API / drupal /贡献!Userpoints!Userpointss.module / 6 http://drupalcontrib.org/api/drupal/contibuli...

1  规则PHP条件不起作用  ( Rules php condition not working ) 
我一直在尝试使用以下PHP条件来实现我的项目所需的特定规则,但我不断匹配这种情况,请帮助。 <?php $sql = "SELECT `mid` FROM `managed_staff_points` WHERE `uid` = '[userpoints-transaction:user:uid]' "; $r...

2  如何导入UserPoints?  ( How to import userpoints ) 
用户点模块尚未迁移集成。 看着API我可能会使用 userpoints_service_add 为批处理脚本中的每个用户分配"起始点" 值。 是否有一个选项可以在我上线时更新用户的"起始点" 值?或者我必须计算差异,只需添加调整? ...

1  定期为每个用户设置用户点  ( Periodically set the userpoints for every user ) 
我想将我的网站成员的用户点设置为x金额在每个月的开始。 这是最好的方法吗? 到目前为止我最接近的是: http://drupal.org/node/549640 虽然有一些问题: 1.它增加了5分,而不是普遍地将其设置为5 2.它使用一段时间循环,如果有很多用户,则可能需要很长时间 我正在考虑一个快速而肮脏的更...

8  UserPoints Karma - 是否只能将用户点收取向下投票?  ( Userpoints karma is it possible to only charge user points for down votes ) 
我正在使用用户点,用户业力,投票/下模块。我想知道是否有一种方法可以将其配置为仅在您投票时扣除用户点,而不是。 类似于堆栈交换的声誉系统:如果你投票,你就不会得到停靠,但如果你投了一下,你会得到停靠的声誉点。 使用声誉用户点 - &gt;业力点 - &gt;选民点数成本设置,我只能将其配置为收费,如果您完全投票,无...

3  检查某些行项类型是否存在  ( Check if certain line item type exists ) 
我正在使用 Commerce Userpopts 基于购买的奖励点,然后客户可以使用这些奖励未来购买折扣。 如果用户已应用折扣,我想自定义结帐窗格。 Commerce UserPoints折扣创建了一个 userpoints 的行项目类型。我的初始想法是检查当前订单是否包含类型 userpoints 类型的行项,但我...

1  db_merge:让查询缓慢  ( Db merge making a query slow ) 
我正在使用UserPoints模块为他们在我的网站上执行的不同操作提供点。 mysql> desc userpoints; +-------------+---------+------+-----+---------+----------------+ | Field | Type | Nu...

3  如何在帖子上显示作者名称旁边的内容作者的Userpoints?  ( How do i display a content authors userpoints next to the authors name on post ) 
我已经设置了用户点模块,并希望在其旁边显示作者名称。 什么是最简单的方法? ...

2  如何在UserPoints中设置点Moduel [已关闭]  ( How to set points in userpoints moduel ) 
关闭。这个问题需要更多聚焦。它目前不接受答案。 想要改进这个问题?更新问题,因此它仅介绍了编辑此帖。 closed 6年前。 ...

1  如何使用规则检查用户当前用户点的平衡?  ( How to check a users current userpoints balance with rules ) 
我有兴趣创建检查用户用户点的规则,然后该规则执行一个操作。 目前规则模块没有这样的条件。我读到这一点可以使用规则组件,该组件用作规则条件。 有人可以帮助我吗? ...

2  如何更改MyUserPoints表?  ( How do i alter myuserpoints table ) 
我正在使用UserPoints模块。使用那个,当我点击"我的分数" 链接时,我正在观看一个带有点列表的表。 有6个标题和6行显示。在该表中,我只需要3个标题和3行来显示。 as现在,模块显示以下标题: 点 批准 日期 操作 类别 描述 所需显示的是以下标题: 点 日期 描述 如何实现这一目标? ...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有