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