我正在研究一个奥多模块。在
我希望我的模块是一个“报告”大多数购买的产品(按客户)。在
我已经在Odoo上创建了一个视图,但是现在,我需要按客户“过滤”这些视图。代码如下:class SaleProductsByCustomer(models.Model):
_name = "sale.order.product"
_auto = False
partner_id = fields.Many2one('res.partner')
orders = fields.Integer(string='Total Orders')
name = fields.Char(string='Name')
price_total = fields.Float(string='Total Payment')
qty = fields.Integer(string='Qty Ordered')
last_order = fields.Date(string='Last Order Date')
@api.model_cr
def init(self):
tools.drop_view_if_exists(self._cr, 'sale_order_product')
tools.drop_view_if_exists(self._cr, 'sale_order_product_report')
self._cr.execute("""
CREATE OR REPLACE VIEW sale_order_product_report AS (
SELECT so.order_partner_id AS id, count(so.id) AS orders, pt.name, sum(so.price_total) AS price_total,
sum(so.product_uom_qty) AS qty, max(so.create_date) AS last_order
FROM public.sale_order_line AS so
LEFT JOIN public.product_product AS pr ON so.product_id = pr.id
LEFT JOIN public.product_template AS pt ON pr.product_tmpl_id = pt.id
GROUP BY so.order_partner_id, so.product_id, pt.name
ORDER BY qty DESC
)""")
我尝试使用以下代码访问这些视图:
^{pr2}$
但奥多拒绝阅读,错误如下:2018-12-13 03:05:36,889 13482 ERROR xx odoo.sql_db: bad query: b'SELECT "sale_order_product".id FROM "sale_order_product" WHERE ("sale_order_product"."partner_id" = 107989) ORDER BY "sale_order_product"."id" '
ERROR: relation "sale_order_product" does not exist
显然,即使我有销售订单产品“,我不能参考它做我想做的事。在
我已经阅读了很多关于定制报表和定制SQL查询的指南,但是我找不到一个完整的指南来做,而且我对odoo模块的了解也不多。在
SQL查询已经过测试并且工作正常。我需要的是对SQL应用WHERE子句,并将结果放到视图中。在
我的观点是:
sale.order.form.view.customer.product.history
res.partner
注意:我读了很多指南,在stackoverflow和其他网站上,但没有人能涵盖我的所有要求。如果你认为这篇文章是重复的,请给我评论一下另一篇。在
谢谢你的帮助。在