pr at count

This commit is contained in:
blackbelts 2025-06-29 14:20:44 +03:00
parent 9d3dd7c33b
commit f6699e3418
1 changed files with 36 additions and 25 deletions

View File

@ -219,41 +219,52 @@ class PurchaseOrderCustom(models.Model):
# Handle multiple records
if len(self) > 1:
action = self.env['ir.actions.act_window']._for_xml_id('base.action_attachment')
all_related_ids = []
all_related_models = set()
all_pairs = [] # Store (model, id) tuples
for record in self:
related_ids = [record.id]
related_models = [self_model]
record_pairs = []
# if record.res_id and record.res_model:
# related_ids.append(record.res_id)
# related_models.append(record.res_model)
# Current record
record_pairs.append((self_model, record.id))
# Request record
if record.request_id:
related_ids.append(record.request_id.id)
related_models.append(record.request_id._name)
if record.requisition_id:
related_ids.append(self.requisition_id.id)
related_models.append(self.requisition_id._name)
record_pairs.append((record.request_id._name, record.request_id.id))
all_related_ids += related_ids
all_related_models.update(related_models)
# Requisition record (only if exact model match)
if record.requisition_id and record.requisition_id._name == 'purchase.requisition':
record_pairs.append(('purchase.requisition', record.requisition_id.id))
# Set attachment count for each record
record.attach_no = Attachment.search_count([
('res_model', 'in', list(all_related_models)),
('res_id', 'in', list(set(all_related_ids))),
])
# Build domain for this record's attachment count
domain_record = []
if record_pairs:
domain_record = ['|'] * (len(record_pairs) - 1)
for model, res_id in record_pairs:
domain_record.extend([
'&',
('res_model', '=', model),
('res_id', '=', res_id)
])
print("all_related_ids")
print(all_related_ids)
# Set attachment count for this specific record
record.attach_no = Attachment.search_count(domain_record)
# Add to global pairs collection
all_pairs.extend(record_pairs)
# Build global domain for action
domain_action = []
if all_pairs:
domain_action = ['|'] * (len(all_pairs) - 1)
for model, res_id in all_pairs:
domain_action.extend([
'&',
('res_model', '=', model),
('res_id', '=', res_id)
])
# Final domain and context for action
action['domain'] = [
('res_model', 'in', list(all_related_models)),
('res_id', 'in', list(set(all_related_ids))),
]
action['domain'] = domain_action
action['context'] = {
'default_res_model': self_model,
'default_res_id': self[0].id # use first record for context