如何在现有记录odoo上运行compute
我已经添加了一个名为“如何在现有记录odoo上运行compute,odoo,Odoo,我已经添加了一个名为“佣金总额”的字段,它将记录id作为佣金总额计算字段,当任何依赖字段发生变化时,该字段工作正常,但我需要在所有旧日期运行该函数,而不是在创建新的更改依赖字段时运行该函数 @api.depends('agents','order_line') def _compute_commission_total(self): total = 0 for agent in self.agents: total += agent.agent_commissio
佣金总额”
的字段,它将记录id作为佣金总额计算字段,当任何依赖字段发生变化时,该字段工作正常,但我需要在所有旧日期运行该函数,而不是在创建新的更改依赖字段时运行该函数
@api.depends('agents','order_line')
def _compute_commission_total(self):
total = 0
for agent in self.agents:
total += agent.agent_commission
self.commission_total = total
_logger.info("COmmisssion total++++++++++++++++++++++++++++")
_logger.info(self.commission_total)
您可以使用位于以下路径中的Odoo服务器操作
Settings → Technical → Actions → Server Actions
创建一个新操作,并确保字段Model设置为正确的模型,字段action to Do设置为Execute Python Code,Python Code字段将是您的代码。这将类似于以下内容:
all_records=env['Model Name'].search([('Add the preferred domain'))#您将获得所有记录
对于所有_记录中的项目:
项目。计算佣金总额()
#或者按照@Dipen Shah的建议,您可以使用
#在上下文中可用的单词“records”
对于记录中的项目:
项目。计算佣金总额()
请注意,上下文中有以下可用变量:
- env:触发操作的Odoo环境
- 模型:触发操作的记录的Odoo模型;是一个无效的记录集
- 记录:触发操作的记录;可能是无效的
- 记录:在多模式下触发操作的所有记录的记录集;可能是无效的
- 有用的Python库,如时间,日期时间,日期工具,时区
- log:log(message,level='info'):在ir.logging表中记录调试信息的日志功能
- 警告:与raise一起使用的警告异常
数据
文件夹中。它看起来像:
重新计算字段
ir.actions.server
代码
对于记录中的项目:
项目。计算佣金总额()
或者您可以将其设置为计划的操作
根据您的最新评论,如果您想在现有的生产数据库上应用此功能,请从您的模块中执行,而不是手动执行。您必须使用模块版本控制,该版本控制可在\uuuu manifest\uuuu.py
文件中找到。因此,您将增加模块版本号。然后根据以下网站的建议添加migrations
文件夹:
你可以试试这个。让我们知道它是否工作。您可以使用位于以下路径中的Odoo服务器操作
Settings → Technical → Actions → Server Actions
创建一个新操作,并确保字段Model设置为正确的模型,字段action to Do设置为Execute Python Code,Python Code字段将是您的代码。这将类似于以下内容:
all_records=env['Model Name'].search([('Add the preferred domain'))#您将获得所有记录
对于所有_记录中的项目:
项目。计算佣金总额()
#或者按照@Dipen Shah的建议,您可以使用
#在上下文中可用的单词“records”
对于记录中的项目:
项目。计算佣金总额()
请注意,上下文中有以下可用变量:
- env:触发操作的Odoo环境
- 模型:触发操作的记录的Odoo模型;是一个无效的记录集
- 记录:触发操作的记录;可能是无效的
- 记录:在多模式下触发操作的所有记录的记录集;可能是无效的
- 有用的Python库,如时间,日期时间,日期工具,时区
- log:log(message,level='info'):在ir.logging表中记录调试信息的日志功能
- 警告:与raise一起使用的警告异常
数据
文件夹中。它看起来像:
重新计算字段
ir.actions.server
代码
对于记录中的项目:
项目。计算佣金总额()
或者您可以将其设置为计划的操作
根据您的最新评论,如果您想在现有的生产数据库上应用此功能,请从您的模块中执行,而不是手动执行。您必须使用模块版本控制,该版本控制可在\uuuu manifest\uuuu.py
文件中找到。因此,您将增加模块版本号。然后根据以下网站的建议添加migrations
文件夹:
你可以试试这个。让我们知道它是否工作。重新计算字段的方法是:
我发现这更容易记住,如果您有数据库访问权限,则更容易实现。重新计算字段的方法是:
我发现这更容易记住,如果您有数据库访问权限,则更容易实现。关于服务器操作,您可以更好地与记录一起使用,并且可以直接从记录中触发该方法。无需重新创建环境并从此处进行搜索。我想在自定义模块中编写服务器操作?我不想手动创建。当我升级要重新计算的模块时。ThanksOn服务器操作,您可以更好地与记录一起使用,并且可以直接从记录中触发该方法。无需重新创建环境并从此处进行搜索。我想在自定义模块中编写服务器操作?我不想手工制作。