47 lines
1.6 KiB
Python
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()
|