This PR fix the "This attachment is already a document" Error when clicking on the "Apply Changes" button of a mrp.eco (Engineering Change Orders) in the PLM App. With the Documents App installed and the "Product: Centralize files attached to products" document setting activated, copying the attachment will also copy the document. Then when we try to copy the current document and link it to the new attachment, the above mentioned error appear. The context no_document=True prevent the document copy during the attachment copy. OPW-2762448 closes odoo/odoo#89324 X-original-commit: ed306afc0e812c1e42984f1b6cb94e61409f0144 Signed-off-by: Simon Goffin <sig@odoo.com> Signed-off-by: DavidFesquet <dafr@odoo.com>
37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import fields, models
|
|
|
|
|
|
class MrpDocument(models.Model):
|
|
""" Extension of ir.attachment only used in MRP to handle archivage
|
|
and basic versioning.
|
|
"""
|
|
_name = 'mrp.document'
|
|
_description = "Production Document"
|
|
_inherits = {
|
|
'ir.attachment': 'ir_attachment_id',
|
|
}
|
|
_order = "priority desc, id desc"
|
|
|
|
def copy(self, default=None):
|
|
ir_default = default
|
|
if ir_default:
|
|
ir_fields = list(self.env['ir.attachment']._fields)
|
|
ir_default = {field : default[field] for field in default.keys() if field in ir_fields}
|
|
new_attach = self.ir_attachment_id.with_context(no_document=True).copy(ir_default)
|
|
return super().copy(dict(default, ir_attachment_id=new_attach.id))
|
|
|
|
ir_attachment_id = fields.Many2one('ir.attachment', string='Related attachment', required=True, ondelete='cascade')
|
|
active = fields.Boolean('Active', default=True)
|
|
priority = fields.Selection([
|
|
('0', 'Normal'),
|
|
('1', 'Low'),
|
|
('2', 'High'),
|
|
('3', 'Very High')], string="Priority", help='Gives the sequence order when displaying a list of MRP documents.')
|
|
|
|
def unlink(self):
|
|
self.mapped('ir_attachment_id').unlink()
|
|
return super(MrpDocument, self).unlink()
|