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()