Update purchase_order.py

This commit is contained in:
zainab2097 2024-09-29 09:38:09 +03:00 committed by GitHub
parent bec9911152
commit dc754f3f42
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 73 additions and 1 deletions

View File

@ -19,7 +19,10 @@ class PurchaseOrderCustom(models.Model):
data.state = 'draft'
return data
attach_no = fields.Integer(compute='get_attachments')
res_id = fields.Integer()
res_model = fields.Char()
state = fields.Selection([
('wait', 'Waiting To Be Signed'),
('unsign', 'UnSign'),
@ -70,6 +73,75 @@ class PurchaseOrderCustom(models.Model):
is_signed = fields.Boolean()
budget_id = fields.Many2one('crossovered.budget')
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.order'),
('res_id', 'in', self.ids),
]
# Update attachment count for all records (if necessary)
for record in self:
related_ids = record.ids
related_models = 'purchase.order'
if record.res_id and record.res_model:
related_ids = record.ids + [record.res_id]
related_models = ['purchase.order', 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.order'),
('res_id', 'in', self.ids),
]
domain = [
('res_model', '=', 'purchase.order'),
('res_id', 'in', self.ids),
]
related_ids = self.ids
related_models = 'purchase.order'
if self.res_id and self.res_model:
related_ids = self.ids + [self.res_id]
related_models = ['purchase.order', 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 _prepare_invoice(self):
res = super(PurchaseOrderCustom, self)._prepare_invoice()
res.update({'purchase_id': self.id, 'res_id': self.id,'res_model': 'purchase.order'})