Связывание ID автоматически сгенерированных записей в Odoo - PullRequest
1 голос
/ 20 июня 2019

Я создал пользовательский модуль, который автоматически создает элементы журнала, когда пользователь нажимает кнопку.В этом пользовательском модуле у меня есть поле many2one с именем x_move_id

  x_move_id = fields.Many2one('account.move', string="Journal", readonly=True)

, которое должно автоматически отображать ссылку на созданные элементы журнала, аналогично модулю account.invoice, когда пользователь проверяет счет, создаются элементы журнала и его идентификатор.появляются.

код:

class BillOfEntry(models.Model):
  _name = 'entry.bill'
  _description = 'Bill of Entry'

name = fields.Char()
state = fields.Selection([
    ('draft', 'Draft'),
    ('sent', 'Validate'),
    ('done', 'Paid'),
    ('cancel', 'Cancelled'),
], string='BOE Status', readonly=True, copy=False, store=True, default='draft')
date = fields.Date(string="Date")
custom_agent = fields.Many2one('res.partner', string="Custom Agent")
reference = fields.Char(string="Reference")
total_customs = fields.Float(string='Total Customs', store=True, readonly=True, track_visibility='always', digits=(14, 3))
total_tax = fields.Float(string='Total Tax', store=True, readonly=True, track_visibility='always', digits=(14, 3))
inelig_tax = fields.Float(string="Ineligible Tax", store=True, readonly=True, track_visibility='always', digits=(14, 3))
total_amount = fields.Float(string='Total Amount', store=True, readonly=True, track_visibility='always', digits=(14, 3))
entry_line = fields.One2many('entry.bill.line', 'entry_ref', string="Bill of Entry Line")
input_vat = fields.Many2one('account.account', string="Input VAT")
output_vat = fields.Many2one('account.account', string="Output VAT")
customs_account = fields.Many2one('account.account', string="Customs Account")
x_move_id = fields.Many2one('account.move', string="Journal", readonly=True)

def entry_move_line(self):
    data_line = []
    line = {}
    for record in self:
        for move in record.entry_line:
            tax = move.tax_id.id
            data = (0,0, {
            'account_id': record.input_vat.id,
            'partner_id': record.custom_agent.id,
            'name': move.product_ids.name,
            'debit': 0,
            'credit': 0,
            'x_vat_code': move.vat_code_id.id,
            'tax_ids': [(6, 0, [tax])],
            })
            data_line.append(data)
            line = {
                'name': record.name,
                'date': record.date,
                'ref': record.reference,
                'line_ids': data_line,
                'journal_id': 3,
                'state': 'posted'
            }
        record.move_id.create(line)
        record.update({
            'state': 'sent'
        })




class BillOfEntry(models.Model):
_name = 'entry.bill.line'
_description = 'Bill of Entry Line'

assessable_amount = fields.Float('Assessable Amount', digits=(14, 3))
customs_amount = fields.Float('Customs + Additional Cost', digits=(14, 3))
tax_amount = fields.Float('Tax Amount', digits=(14, 3))
taxable_amount = fields.Float('Taxable Amount', digits=(14, 3))
elig_perc = fields.Float(string="ITC Eligibility %", help="Input Tax Credit Eligibility", digits=(14, 3))
vat_code_id = fields.Many2one('vat.configuration', string="VAT Code")
tax_id = fields.Many2many('account.tax', string='Taxes', domain=['|', ('active', '=', False), ('active', '=', True)])
product_ids = fields.Many2one('product.product', string="product")
inelegible = fields.Float(string="Ineleigible", digits=(14, 3))
entry_ref = fields.Many2one('entry.bill', string='Bill of Entry')

Итак, мой вопрос, как получить (id) созданных элементов журнала в пользовательском модуле?

1 Ответ

1 голос
/ 24 июня 2019

Вы можете написать следующее:

def entry_move_line(self):
    data_line = []
    line = {}
    for record in self:
        for move in record.entry_line:
            tax = move.tax_id.id
            data = (0,0, {
            'account_id': record.input_vat.id,
            'partner_id': record.custom_agent.id,
            'name': move.product_ids.name,
            'debit': 0,
            'credit': 0,
            'x_vat_code': move.vat_code_id.id,
            'tax_ids': [(6, 0, [tax])],
            })
            data_line.append(data)
            line = {
                'name': record.name,
                'date': record.date,
                'ref': record.reference,
                'line_ids': data_line,
                'journal_id': 3,
                'state': 'posted'
            }
        account_move = self.env['account.move'].create(line)
        record.write({'x_move_id':account_move.id})
        record.update({
            'state': 'sent'
        })
...