无法在 Odoo 8 中更改会计设置
Accounting settings cannot be changed in Odoo 8
我需要修改会计配置的一个选项(菜单会计>配置>会计)。
如您所知,这些选项属于名为 account.config.settings
的瞬态模型,它继承自 res.config.settings
。
问题是,即使我不修改任何选项并单击 应用,Odoo 也会永远加载。我将日志设置为 debug_sql
模式,然后我意识到在点击 应用 之后,Odoo 开始进行数千次 SQL 查询,这就是为什么它不会停止加载。
我做了一个数据库备份并在更新的 Odoo 8 实例中恢复了它。在这个实例中,当我点击 Apply 时,Odoo 进行了几个 SQL 查询但不像另一个例子那么多,所以它工作得很好。
我的结论是问题可能出在实例代码中(而不是在数据库中),所以我查找了所有继承自 account.config.settings
的模块并更新了它们的存储库以返回到相同的提交错误的实例(git checkout xxx
)。
之后,我希望更新的实例在单击 应用 时开始失败,但它仍然工作正常。
所以我 运行 没主意了。我正在考虑 运行 更新实例中的备份数据库只是为了更改我需要的选项,然后在旧实例中再次恢复它,但我更愿意避免这种情况,因为我认为这有点冒险。
有什么想法吗?我还能尝试找出问题所在吗?
终于找到了有罪的模块。它来自 Odoo 社区协会的存储库 account-payment
account_due_list
。修复问题的提交是 https://github.com/OCA/account-payment/commit/d7a09399982c80bb0f9465c44b9dc2a2b17e557a#diff-57131fd364915a56cbf8696d74e19478,于 2016 年 9 月 22 日合并。它的标题是“检查每个公司的货币 ID 是否未更改,将其从创建值中删除” .
计算字段 maturity_residual
依赖于 company_id.currency_id
。由于是整个问题的原因,因此必须删除此依赖项。它触发了数千个 SQL 查询,使 Odoo 永远加载。
旧的错误代码
@api.depends('date_maturity', 'debit', 'credit', 'reconcile_id',
'reconcile_partial_id', 'account_id.reconcile',
'amount_currency', 'reconcile_partial_id.line_partial_ids',
'currency_id', 'company_id.currency_id')
'currency_id')
def _maturity_residual(self):
...
新正码
@api.depends('date_maturity', 'debit', 'credit', 'reconcile_id',
'reconcile_partial_id', 'account_id.reconcile',
'amount_currency', 'reconcile_partial_id.line_partial_ids',
'currency_id')
def _maturity_residual(self):
...
由于@CZoellner 的确切说法,我发现将存储库更新到最新版本非常危险,有时会有奇怪的提交可能会破坏一些数据库数据。所以,这些是不这样做的后果。
我需要修改会计配置的一个选项(菜单会计>配置>会计)。
如您所知,这些选项属于名为 account.config.settings
的瞬态模型,它继承自 res.config.settings
。
问题是,即使我不修改任何选项并单击 应用,Odoo 也会永远加载。我将日志设置为 debug_sql
模式,然后我意识到在点击 应用 之后,Odoo 开始进行数千次 SQL 查询,这就是为什么它不会停止加载。
我做了一个数据库备份并在更新的 Odoo 8 实例中恢复了它。在这个实例中,当我点击 Apply 时,Odoo 进行了几个 SQL 查询但不像另一个例子那么多,所以它工作得很好。
我的结论是问题可能出在实例代码中(而不是在数据库中),所以我查找了所有继承自 account.config.settings
的模块并更新了它们的存储库以返回到相同的提交错误的实例(git checkout xxx
)。
之后,我希望更新的实例在单击 应用 时开始失败,但它仍然工作正常。
所以我 运行 没主意了。我正在考虑 运行 更新实例中的备份数据库只是为了更改我需要的选项,然后在旧实例中再次恢复它,但我更愿意避免这种情况,因为我认为这有点冒险。
有什么想法吗?我还能尝试找出问题所在吗?
终于找到了有罪的模块。它来自 Odoo 社区协会的存储库 account-payment
account_due_list
。修复问题的提交是 https://github.com/OCA/account-payment/commit/d7a09399982c80bb0f9465c44b9dc2a2b17e557a#diff-57131fd364915a56cbf8696d74e19478,于 2016 年 9 月 22 日合并。它的标题是“检查每个公司的货币 ID 是否未更改,将其从创建值中删除” .
计算字段 maturity_residual
依赖于 company_id.currency_id
。由于是整个问题的原因,因此必须删除此依赖项。它触发了数千个 SQL 查询,使 Odoo 永远加载。
旧的错误代码
@api.depends('date_maturity', 'debit', 'credit', 'reconcile_id',
'reconcile_partial_id', 'account_id.reconcile',
'amount_currency', 'reconcile_partial_id.line_partial_ids',
'currency_id', 'company_id.currency_id')
'currency_id')
def _maturity_residual(self):
...
新正码
@api.depends('date_maturity', 'debit', 'credit', 'reconcile_id',
'reconcile_partial_id', 'account_id.reconcile',
'amount_currency', 'reconcile_partial_id.line_partial_ids',
'currency_id')
def _maturity_residual(self):
...
由于@CZoellner 的确切说法,我发现将存储库更新到最新版本非常危险,有时会有奇怪的提交可能会破坏一些数据库数据。所以,这些是不这样做的后果。