Update purchase_requisition_custom.py

This commit is contained in:
zainab2097 2024-10-13 13:34:41 +03:00 committed by GitHub
parent 518d342f13
commit a4ebe7ca9d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 73 additions and 0 deletions

View File

@ -22,6 +22,10 @@ class PurchaseRequisitionCustom(models.Model):
_inherit = 'purchase.requisition'
# committee type
attach_no = fields.Integer(compute='get_attachments')
res_id = fields.Integer()
res_model = fields.Char()
committee_type_id = fields.Many2one('purchase.committee.type', string='Committee Type')
state_blanket_order = fields.Selection(
selection_add=[('purchase_manager', 'Purchase manager'), ('checked', 'Waiting Approval'),
@ -86,6 +90,75 @@ class PurchaseRequisitionCustom(models.Model):
change_state_line = fields.One2many('change.purchase.user.state', 'requisition_id')
date_end = fields.Datetime(string='Agreement Deadline', tracking=True)
check_request = fields.Boolean(compute='check_request_field')
def get_attachments(self):
# Check if multiple records are passed, and handle them in a loop
if len(self) > 1:
action = self.env['ir.actions.act_window']._for_xml_id('base.action_attachment')
action['domain'] = [
('res_model', '=', 'purchase.requisition'),
('res_id', 'in', self.ids),
]
# Update attachment count for all records (if necessary)
for record in self:
related_ids = record.ids
related_models = 'purchase.requisition'
if record.res_id and record.res_model:
related_ids = record.ids + [record.res_id]
related_models = ['purchase.requisition', record.res_model]
action['domain'] = [
('res_model', 'in', related_models),
('res_id', 'in', related_ids),
]
# Context for creating new attachments for each record
action['context'] = "{'default_res_model': '%s','default_res_id': %d}" % (record._name, record.id)
# Update attachment count for each record
record.attach_no = self.env['ir.attachment'].search_count([
('res_model', 'in', related_models),
('res_id', 'in', related_ids)
])
return action
# If only one record is passed, use the original logic
self.ensure_one()
action = self.env['ir.actions.act_window']._for_xml_id('base.action_attachment')
action['domain'] = [
('res_model', '=', 'purchase.requisition'),
('res_id', 'in', self.ids),
]
domain = [
('res_model', '=', 'purchase.requisition'),
('res_id', 'in', self.ids),
]
related_ids = self.ids
related_models = 'purchase.requisition'
if self.res_id and self.res_model:
related_ids = self.ids + [self.res_id]
related_models = ['purchase.requisition', self.res_model]
action['domain'] = [
('res_model', 'in', related_models),
('res_id', 'in', related_ids),
]
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
self.attach_no = self.env['ir.attachment'].search_count(domain)
return action
def check_request_field(self):
for rec in self:
if rec.request_id: