pos_customer_orders/models/res_partner.py

47 lines
1.6 KiB
Python

from odoo import models, api
class ResPartner(models.Model):
_inherit = 'res.partner'
@api.model
def get_pos_last_orders(self, partner_id):
orders = self.env['pos.order'].search(
[('partner_id', '=', partner_id)],
order='date_order desc',
limit=2
)
return [{
'id': order.id,
'name': order.name,
'pos_reference': order.pos_reference,
'date_order': order.date_order,
'amount_total': order.amount_total,
'note': order.note,
'lines': [{
'id': line.id,
'product_name': line.product_id.name,
'qty': line.qty,
'price_unit': line.price_unit,
'price_subtotal_incl': line.price_subtotal_incl,
} for line in order.lines],
} for order in orders]
@api.model
def get_pos_top_products(self, partner_id):
# SQL query to get top 3 products by quantity for a specific partner
query = """
SELECT
pt.name ->> 'en_US' as product_name,
SUM(pol.qty) as total_qty
FROM pos_order_line pol
JOIN pos_order po ON pol.order_id = po.id
JOIN product_product pp ON pol.product_id = pp.id
JOIN product_template pt ON pp.product_tmpl_id = pt.id
WHERE po.partner_id = %s
GROUP BY pt.name
ORDER BY total_qty DESC
LIMIT 3
"""
self.env.cr.execute(query, (partner_id,))
return self.env.cr.dictfetchall()