python - 将产品条形码添加到 Odoo excel 报告时出错
问题描述
尝试将产品条形码添加到 Odoo excel 报告但不成功,如下所示:
aml.product_id.barcode AS product_barcode
你能帮忙看看代码中的错误部分在哪里吗?
def _sql_get_line_for_report(self, type_l, report_object=None):
self.env['account.move.line'].check_access_rights('read')
query = """SELECT
raml.report_object_id AS report_object_id,
raml.view_type AS view_type,
CASE
WHEN %s = 'account' THEN acc.code
WHEN %s = 'journal' THEN acj.code
WHEN %s = 'analytic' THEN an_acc.code
ELSE rep.ref
END AS code,
CASE
WHEN %s = 'account' THEN acc.name
WHEN %s = 'journal' THEN acj.name
WHEN %s = 'analytic' THEN an_acc.name
ELSE rep.name
END AS name,
acj.code AS j_code,
ml.name AS move_name,
aml.ref AS displayed_ref,
aml.quantity AS product_qty,
aml.product_id.barcode AS product_barcode,
CASE
WHEN raml.full_reconcile_id IS NOT NULL THEN (CASE WHEN raml.reconciled = TRUE THEN afr.name ELSE '*' END)
ELSE ''
END AS matching_number
FROM
account_report_standard_ledger_line raml
LEFT JOIN account_account acc ON (acc.id = raml.account_id)
LEFT JOIN account_journal acj ON (acj.id = raml.journal_id)
LEFT JOIN res_partner rep ON (rep.id = raml.partner_id)
LEFT JOIN account_move ml ON (ml.id = raml.move_id)
LEFT JOIN account_move_line aml ON (aml.id = raml.move_line_id)
WHERE
raml.report_id = %s
AND (%s OR raml.report_object_id = %s)
AND raml.line_type IN %s
ORDER BY
raml.id
"""
params = [
self.report_type, self.report_type, self.report_type, self.report_type, self.report_type, self.report_type,
self.report_id.id,
True if report_object is None else False,
report_object,
type_l
]
self.env.cr.execute(query, tuple(params))
return self.env.cr.dictfetchall()
解决方案
我们根本不能在查询中使用两个级别的字段值。首先,我们需要为产品表添加 LEFT JOIN,然后访问 'barcode' 值。例如,
左连接:
LEFT JOIN product_product variant ON (variant.id = aml.product_id)
访问值:
variant.barcode AS product_barcode,
推荐阅读
- sql - BigQuery SQL 语法错误 FOR 函数(“语法错误:预期的”)“但在 [7:18] 获得关键字 FOR”)
- angular - 使用 bootstrap-select 和 angular 为选择生成项目
- python - numpy 随机采样布尔数组
- cytoscape.js - 指定样式以及节点的数据时,“不推荐在创建元素时设置 `style` 绕过”
- json - 在 Python 中,如何简洁地获取 json 数据中的嵌套值?
- javascript - 当状态改变时 React 不会重新渲染
- javascript - 为什么 onInput 不是函数?关于 useEffect() 的问题
- git - Git PhpStorm - 无法关闭提交对话框
- android - 支持在一台计算机上运行的 Android 模拟器/端口范围的最大数量是多少
- python - 在 tkinter 中插入列表值作为信息文本,但使用 \n 分隔符