You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

31 lines
1.5 KiB

from odoo import api, fields, models
class ReportPosCustomers(models.AbstractModel):
_name = 'report.advanced_pos_reports.report_pos_top_selling_customers'
def get_top_selling_customers_details(self, no_of_customers=False, start_date=False, end_date=False):
order_ids = self.env["pos.order"].search([('date_order', '>=', start_date),
('date_order', '<=', end_date),
('state', 'in', ['paid', 'done', 'invoiced'])])
user_currency = self.env.company.currency_id
if order_ids:
self.env.cr.execute("""SELECT partner.id, partner.name,
sum(amount_total) as amount FROM pos_order, res_partner AS partner
WHERE partner.id= pos_order.partner_id AND pos_order.id IN %s
GROUP BY partner.id, partner.name ORDER BY amount DESC LIMIT %s
""", (tuple(order_ids.ids), no_of_customers))
customers = self.env.cr.dictfetchall()
return {
'customers': customers or [],
'today': fields.Datetime.now(),
'start_date': start_date,
'end_date': end_date
}
@api.model
def _get_report_values(self, docids, data=None):
data = dict(data or {})
data.update(self.get_top_selling_customers_details(data['no_of_customers'], data['start_date'],
data['end_date']))
return data