diff --git a/odex25_project/account_attachments/models/account_move b/odex25_project/account_attachments/models/account_move new file mode 100755 index 000000000..9922d62bc --- /dev/null +++ b/odex25_project/account_attachments/models/account_move @@ -0,0 +1,43 @@ +from odoo import api, fields, models, _ + +class AccountMove(models.Model): + _inherit = "account.move" + + attach_no = fields.Integer(compute='get_attachments') + res_model = fields.Char() + res_id = fields.Integer() + + # def get_attachments(self): + # action = self.env['ir.actions.act_window']._for_xml_id('base.action_attachment') + # action['domain'] = str([('res_model', '=', 'account.move'), ('res_id', 'in', self.ids)]) + # action['context'] = "{'default_res_model': '%s','default_res_id': %d}" % (self._name, self.id) + # domain = [('res_model', '=', 'account.move'), ('res_id', '=', self.id)] + # self.attach_no = self.env['ir.attachment'].search_count(domain) + # return action + + def get_attachments(self): + self.ensure_one() + + action = self.env['ir.actions.act_window']._for_xml_id('base.action_attachment') + related_ids = self.ids + related_models = 'account.move' + + if self.res_id and self.res_model: + related_ids = self.ids + [res_id] + related_models = ['account.move', self.res_model] + + action['domain'] = [ + ('res_model', 'in',related_models), + ('res_id', 'in', related_ids),] + + # Context for creating new attachments + action['context'] = "{'default_res_model': '%s','default_res_id': %d}" % (self._name, self.id) + # Update attachment count for smart button + domain = [ + ('res_model', 'in', related_models), + ('res_id', 'in', related_ids),] + + self.attach_no = self.env['ir.attachment'].search_count(domain) + + return action + diff --git a/odex25_project/account_attachments/models/account_move.py b/odex25_project/account_attachments/models/account_move.py deleted file mode 100755 index 01bd4c22e..000000000 --- a/odex25_project/account_attachments/models/account_move.py +++ /dev/null @@ -1,62 +0,0 @@ -from odoo import api, fields, models, _ - -class AccountMove(models.Model): - _inherit = "account.move" - - attach_no = fields.Integer(compute='get_attachments') - - # def get_attachments(self): - # action = self.env['ir.actions.act_window']._for_xml_id('base.action_attachment') - # action['domain'] = str([('res_model', '=', 'account.move'), ('res_id', 'in', self.ids)]) - # action['context'] = "{'default_res_model': '%s','default_res_id': %d}" % (self._name, self.id) - # domain = [('res_model', '=', 'account.move'), ('res_id', '=', self.id)] - # self.attach_no = self.env['ir.attachment'].search_count(domain) - # return action - - def get_attachments(self): - # Action for opening the attachment window - action = self.env['ir.actions.act_window']._for_xml_id('base.action_attachment') - # Prepare domain for attachments related to account.move and project.invoice - account_move_ids = self.ids # IDs of account.move - # Get all related project.invoice records based on the invoice_id - project_invoice_ids = self.env['project.invoice'].search([('invoice_id', 'in', account_move_ids)]).ids - - # Expand the domain to include both account.move and project.invoice attachments - # Combine account.move and project.invoice ids - related_ids = account_move_ids + project_invoice_ids - action['domain'] = [ - ('res_model', 'in', ['account.move', 'project.invoice']), - ('res_id', 'in', related_ids),] - - # action['domain'] = [ - # '|', # OR operator to include attachments from both models - # '&', # AND operator for account.move - # ('res_model', '=', 'account.move'), - # ('res_id', 'in', account_move_ids), - # '&', # AND operator for project.invoice - # ('res_model', '=', 'project.invoice'), - # ('res_id', 'in', project_invoice_ids), - # ] - - # Context for creating new attachments - action['context'] = "{'default_res_model': '%s','default_res_id': %d}" % (self._name, self.id) - # Update attachment count for smart button - domain = [ - ('res_model', 'in', ['account.move', 'project.invoice']), - ('res_id', 'in', related_ids),] - - # Update attachment count for smart button - # domain = [ - # '|', # OR operator for counting attachments from both models - # '&', # AND operator for the first condition (account.move) - # ('res_model', '=', 'account.move'), - # ('res_id', 'in', account_move_ids), - # '&', # AND operator for the second condition (project.invoice) - # ('res_model', '=', 'project.invoice'), - # ('res_id', 'in', project_invoice_ids), - # ] - - self.attach_no = self.env['ir.attachment'].search_count(domain) - - return action - diff --git a/odex25_project/account_attachments/views/account_move_view.xml b/odex25_project/account_attachments/views/account_move_view.xml index a19bdc848..264fe0518 100755 --- a/odex25_project/account_attachments/views/account_move_view.xml +++ b/odex25_project/account_attachments/views/account_move_view.xml @@ -12,6 +12,12 @@ + + + + + +