Merge pull request #3698 from expsa/accounting_attach

pr at count
This commit is contained in:
eslamtalaat744 2025-06-29 18:51:01 +03:00 committed by GitHub
commit e7fe5210e0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 41 additions and 53 deletions

View File

@ -79,36 +79,54 @@ class AccountMove(models.Model):
def get_attachments(self):
# Check if multiple records are passed, and handle them in a loop
Attachment = self.env['ir.attachment']
action = self.env['ir.actions.act_window']._for_xml_id('base.action_attachment')
if len(self) > 1:
print("ffffffffffffff")
action = self.env['ir.actions.act_window']._for_xml_id('base.action_attachment')
action['domain'] = [
('res_model', '=', 'account.move'),
('res_id', 'in', self.ids),
]
print("Multiple records mode")
all_models_ids = set()
# Update attachment count for all records (if necessary)
for record in self:
related_ids = record.ids
related_models = ['account.move']
related_pairs = set()
if record.res_id and record.res_model:
related_ids = record.ids + [record.res_id]
related_models.append(record.res_model)
action['domain'] = [
('res_model', 'in', related_models),
('res_id', 'in', related_ids),
]
# Main record
related_pairs.add((record._name, record.id))
# Context for creating new attachments for each record
action['context'] = "{'default_res_model': '%s','default_res_id': %d}" % (record._name, record.id)
# Purchase Order
if record.purchase_id:
related_pairs.add((record.purchase_id._name, record.purchase_id.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)
# Request ID
if record.purchase_id.request_id:
related_pairs.add((record.purchase_id.request_id._name, record.purchase_id.request_id.id))
# Requisition ID (only if it's the expected model)
if record.purchase_id.requisition_id and record.purchase_id.requisition_id._name == 'purchase.requisition':
related_pairs.add(('purchase.requisition', record.purchase_id.requisition_id.id))
# Accumulate all related model-id pairs
all_models_ids.update(related_pairs)
# Build domain from accumulated pairs
domain = []
pairs = list(all_models_ids)
if pairs:
domain = ['|'] * (len(pairs) - 1)
for model, res_id in pairs:
domain.extend(['&', ('res_model', '=', model), ('res_id', '=', res_id)])
# Use the first record for context
action['domain'] = domain
action['context'] = {
'default_res_model': self[0]._name,
'default_res_id': self[0].id,
}
for record in self:
record.attach_no = Attachment.search_count([
('res_model', '=', record._name),
('res_id', '=', record.id)
])
return action
# If only one record is passed, use the original logic
@ -142,36 +160,6 @@ class AccountMove(models.Model):
('res_model', '=', model),
('res_id', '=', res_id)
])
# action = self.env['ir.actions.act_window']._for_xml_id('base.action_attachment')
# action['domain'] = [
# ('res_model', '=', 'account.move'),
# ('res_id', 'in', self.ids),
# ]
# domain = [
# ('res_model', '=', 'account.move'),
# ('res_id', 'in', self.ids),
# ]
# related_ids = self.ids
# related_models = ['account.move']
#
# if self.res_id and self.res_model:
# related_ids = self.ids + [self.res_id]
# related_models.append(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
action = self.env['ir.actions.act_window']._for_xml_id('base.action_attachment')
action['domain'] = domain
action['context'] = {