43 lines
1.6 KiB
Python
Executable File
43 lines
1.6 KiB
Python
Executable File
from odoo import models, fields, api
|
|
|
|
|
|
class SOSCaseDiaryReportWizard(models.TransientModel):
|
|
_name = 'sos_suspects_wizard'
|
|
_description = 'Suspects Wizard'
|
|
|
|
from_date = fields.Date(
|
|
string="From Date",
|
|
default=fields.Date.today # Default to today's date
|
|
)
|
|
to_date = fields.Date(
|
|
string="To Date",
|
|
default=fields.Date.today # Default to today's date
|
|
)
|
|
sales_person_id = fields.Many2one(
|
|
'res.users',
|
|
string='Sales Executive',
|
|
default=lambda self: self.env.user,
|
|
domain=lambda self: [('groups_id', 'in', self.env.ref('sos_inventory.sos_sales_user').ids + self.env.ref('sos_inventory.sos_ce_head').ids)]
|
|
)
|
|
def action_generate_report(self):
|
|
"""Fetch and return a list of 'Suspects' based on the selected date range."""
|
|
domain = [('spenco_status', '=', 'Suspects')]
|
|
if self.sales_person_id:
|
|
domain.append(('sales_person', '=', self.sales_person_id.id))
|
|
if self.from_date:
|
|
domain.append(('line_ids.status_changed_on', '>=', self.from_date))
|
|
if self.to_date:
|
|
domain.append(('line_ids.status_changed_on', '<=', self.to_date))
|
|
|
|
suspects = self.env['sos_case_diary'].search(domain)
|
|
filtered_records = suspects.filtered(lambda record: record.line_ids and record.line_ids[-1].spenco_status == 'Suspects')
|
|
return {
|
|
'type': 'ir.actions.act_window',
|
|
'name': 'Suspects Report',
|
|
'res_model': 'sos_case_diary',
|
|
'view_mode': 'tree,form',
|
|
'domain': [('id', 'in', suspects.ids)],
|
|
'target': 'current',
|
|
}
|
|
|