созданные данные в поле One2many также служат данными в другом модуле

Я хочу каждый раз, когда я создаю данные в поле One2many, в то же время я хочу, чтобы они сохранялись как данные на моем обслуживании.оборудование. Я пытаюсь найти решение для другого модуля в аддонах, но пока не нашел ответа.

Сценарий таков: перед проверкой отгрузки в моем продукте мне нужно ввести на нем серийный номер. Каждый серийный номер, который я создал для этого продукта, одновременно служит названием моего оборудования.

это картинка для сценария

и этот серийный номер, образец 1010, мне нужен, чтобы он стал именем моего оборудования в модуле Maintenance.equipment. Я ожидал, что это отобразится здесь в моем оборудовании.

модуль моего оборудования

Все, чему я учил, это только то, что мне нужно сделать, это создать поля Many2one и One2many, подобные этому

class StockPackOperation(models.Model):
    _inherit = 'stock.pack.operation'

    lines_ids = fields.One2many('maintenance.equipment', 'lines_id')
    sample = fields.Char(string="Sample")

class MaintenanceEquipment(models.Model):
    _inherit = 'maintenance.equipment'

    lines_id = fields.Many2one('stock.pack.operation')

но ничего не происходит. Любая помощь или предложение или совет, пожалуйста. Мне нужно сделать это. Спасибо за совет мастера. Я новичок в odoo.


person law rence    schedule 02.03.2018    source источник
comment
Вам нужно переопределить def create в классе Maintenance.equipment. В этом методе создания вам нужно сгенерировать серийный ключ на основе требуемой последовательности (ir.sequence) и записать ту же последовательность в поле серийного номера, передав сгенерированную последовательность в vals, которые вызывают метод super для создания и установки серийного номера в _rec_name. Таким образом, ваш серийный номер будет генерироваться при каждом создании в one2many и будет генерировать серийный номер вместе с данными, как на картинке.   -  person Omi Harjani    schedule 05.03.2018
comment
Мне нужно уточнить, что вы хотите, когда вы назначаете серийный номер, вы хотите создать строку Maintenance.equipment с тем же именем, что и у серийного номера, верно?   -  person Asmita Chavan    schedule 05.03.2018
comment
да @chavan_asmita. Ты прав. Я все еще работаю над этим, основываясь на том, что мне сказал Оми Харджани.   -  person law rence    schedule 05.03.2018
comment
у тебя есть предложения @chavan_asmita?? пожалуйста, помогите мне. Спасибо   -  person law rence    schedule 05.03.2018
comment
то, что сказал вам omi harjani, будет работать следующим образом: когда вы создадите запись Maintenance.equipment, она создаст серийный номер партии с тем же именем. ты хочешь, чтобы я помог тебе в этом или в другом?   -  person Asmita Chavan    schedule 06.03.2018


Ответы (1)


Этого можно добиться, унаследовав класс stock.pack.operation.lot, так как введенные серийные номера хранятся в этом классе с lot_name (в случае входящей отгрузки) и lot_id (в случае исходящей отгрузки).

Вам не нужно будет заботиться об исходящей посылке, так как в исходящей посылке мы выбираем уже существующие серийные номера. class StockPackOperationLot (models.Model): _inherit = 'stock.pack.operation.lot'

@api.model
def create(self, vals):
    res = super(StockPackOperationLot, self).create(vals)
    if vals.get('lot_name'):
        self.env['maintenance.equipment'].create({'name': vals.get('lot_name')})
    return res

@api.multi
def write(self, vals):
    if vals.get('lot_name'):
        lot_name = self.lot_name
        equipment_id = self.env['maintenance.equipment'].search([('name', '=', lot_name)])
        res = super(StockPackOperationLot, self).write(vals)
        equipment_id.name = vals.get('lot_name')
        return res
    else:
        return super(StockPackOperationLot, self).write(vals)

Чтобы эта функция работала должным образом, вам необходимо убедиться, что имя оборудования уникально, в противном случае вам потребуется сохранить соответствующий идентификатор оборудования в каждой записи stock.pack.operation.lot, чтобы когда пользователь редактирует серийный номер, оборудование также обновляется, когда нет уникального ограничения на имя оборудования.

надеюсь, это поможет вам...

person Asmita Chavan    schedule 06.03.2018