Python AttributeError:'res.partner'对象没有属性'journal_id'-Odoo v8

Python AttributeError:'res.partner'对象没有属性'journal_id'-Odoo v8,python,python-2.7,odoo-8,odoo,Python,Python 2.7,Odoo 8,Odoo,我有这个方法: @api.multi @api.depends('order_picking', 'order_picking.isbn', 'contract_worksheet', 'state') def accounting_scenarios(self): for record in self: if not len(record.transporter): raise Warning('Please Enter Transporter

我有这个方法:

@api.multi
@api.depends('order_picking', 'order_picking.isbn', 'contract_worksheet', 'state')
def accounting_scenarios(self):
    for record in self:
        if not len(record.transporter):
            raise Warning('Please Enter Transporter !')
        elif not len(record.transporter.transp_transit):
            raise Warning('Please assign transit account to the transporter !')
        if record.state in ('awaitingraw'): #('cancel', 'done')
            acc_move = self.env['account.move'] 
            move_lines = [
                (0, 0, {
                    'name': 'name', 
                    'debit': record.contract_worksheet.total_alles, 
                    'credit': record.contract_worksheet.total_alles,
                    'account_id': record.transporter.transp_transit, 
                    'date': date,
                    'partner_id': record.transporter, 
                }),
            ]
            acc_move.create({
                    #'period_id': period_id,
                    'journal_id': record.transporter.journal_id.id,
                    'date':date,
                    'state': 'draft',
                    'line_id': move_lines, # this is one2many field to account.move.line
                })
        elif record.state in ('work_in_progress'):
            record.temp2 = record.contract_worksheet.total_totals
        elif record.state in ('delivered'):
            record.transporter.transp_transit.debit = record.contract_worksheet.total_alles
这让我想到:

Traceback (most recent call last):
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\http.py", line 546, in _handle_exception
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\http.py", line 583, in dispatch
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\http.py", line 319, in _call_function
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\service\model.py", line 118, in wrapper
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\http.py", line 316, in checked_call
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\http.py", line 812, in __call__
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\http.py", line 412, in response_wrap
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\addons\web\controllers\main.py", line 948, in call_button
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\addons\web\controllers\main.py", line 936, in _call_kw
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\api.py", line 268, in wrapper
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\api.py", line 399, in old_api
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\addons\bsi\models\models.py", line 1471, in check_quantity
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\api.py", line 266, in wrapper
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\addons\bsi\models\models.py", line 1399, in write
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\api.py", line 266, in wrapper
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\models.py", line 3789, in write
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\api.py", line 266, in wrapper
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\api.py", line 592, in new_api
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\models.py", line 4048, in _write
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\api.py", line 266, in wrapper
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\models.py", line 5773, in recompute
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\models.py", line 5773, in <dictcomp>
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\models.py", line 5654, in __getitem__
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\fields.py", line 835, in __get__
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\fields.py", line 913, in determine_value
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\fields.py", line 893, in compute_value
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\fields.py", line 885, in _compute_value
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\api.py", line 266, in wrapper
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\addons\bsi\models\models.py", line 1386, in accounting_scenarios
AttributeError: 'res.partner' object has no attribute 'journal_id'
问题是res.partner model没有任何日记账id字段,因此您必须从分配给合作伙伴的帐户中获取它。这将取决于您是否向运输公司支付或出售某些服务

如果您向运输公司支付服务费,我想情况是这样的:

@api.multi
@api.depends('order_picking', 'order_picking.isbn', 'contract_worksheet', 'state')
def accounting_scenarios(self):
    for record in self:
        if not len(record.transporter):
            raise Warning('Please Enter Transporter !')
        elif not len(record.transporter.transp_transit):
            raise Warning('Please assign transit account to the transporter !')
        if record.state in ('awaitingraw'): #('cancel', 'done')
            acc_move = self.env['account.move'] 
            move_lines = [
                (0, 0, {
                    'name': 'name', 
                    'debit': record.contract_worksheet.total_alles, 
                    'credit': record.contract_worksheet.total_alles,
                    'account_id': record.transporter.transp_transit, 
                    'date': date,
                    'partner_id': record.transporter, 
                }),
            ]
            journal_id = False
            if record.transporter.property_account_payable:
                journals = self.env['account.journal'].search([
                    ('default_debit_account_id', '=', record.transporter.property_account_payable.id)
                ])
                if journals:
                    journal_id = journals[0].id
            acc_move.create({
                #'period_id': period_id,
                'journal_id': journal_id,
                'date':date,
                'state': 'draft',
                'line_id': move_lines, # this is one2many field to account.move.line
            })
        elif record.state in ('work_in_progress'):
            record.temp2 = record.contract_worksheet.total_totals
        elif record.state in ('delivered'):
            record.transporter.transp_transit.debit = record.contract_worksheet.total_alles
但是,如果您向他们出售某些服务:

@api.multi
@api.depends('order_picking', 'order_picking.isbn', 'contract_worksheet', 'state')
def accounting_scenarios(self):
    for record in self:
        if not len(record.transporter):
            raise Warning('Please Enter Transporter !')
        elif not len(record.transporter.transp_transit):
            raise Warning('Please assign transit account to the transporter !')
        if record.state in ('awaitingraw'): #('cancel', 'done')
            acc_move = self.env['account.move'] 
            move_lines = [
                (0, 0, {
                    'name': 'name', 
                    'debit': record.contract_worksheet.total_alles, 
                    'credit': record.contract_worksheet.total_alles,
                    'account_id': record.transporter.transp_transit, 
                    'date': date,
                    'partner_id': record.transporter, 
                }),
            ]
            journal_id = False
            if record.transporter.property_account_receivable:
                journals = self.env['account.journal'].search([
                    ('default_credit_account_id', '=', record.transporter.property_account_receivable.id)
                ])
                if journals:
                    journal_id = journals[0]
            acc_move.create({
                #'period_id': period_id,
                'journal_id': journal_id,
                'date':date,
                'state': 'draft',
                'line_id': move_lines, # this is one2many field to account.move.line
            })
        elif record.state in ('work_in_progress'):
            record.temp2 = record.contract_worksheet.total_totals
        elif record.state in ('delivered'):
            record.transporter.transp_transit.debit = record.contract_worksheet.total_alles

检查记录实例是否有日志id,否则请在此处查找与您的相关帐户移动相关的日志分配非常感谢,我现在获得了它,但是,我在“journal_id=False”之后的条件上有一个错误,它在record.transporter:/上的“=”之后显示无效语法,另外,如果我需要自定义字段,然后我可以用我的字段替换属性\u帐户\u字段?语法错误是因为我在搜索方法中忘记了逗号,我编辑了我的答案。如果要在res.partner中创建一个指向account.account模型的新manyOne字段,可以使用此代码,但使用_custom_字段而不是property_account_x,是的。否则,如果自定义字段将指向account.journal,则可以删除所有搜索部分,并在account.move的create方法的v中写入“journal\u id”:record.transporter.your\u custom\u field.id。
@api.multi
@api.depends('order_picking', 'order_picking.isbn', 'contract_worksheet', 'state')
def accounting_scenarios(self):
    for record in self:
        if not len(record.transporter):
            raise Warning('Please Enter Transporter !')
        elif not len(record.transporter.transp_transit):
            raise Warning('Please assign transit account to the transporter !')
        if record.state in ('awaitingraw'): #('cancel', 'done')
            acc_move = self.env['account.move'] 
            move_lines = [
                (0, 0, {
                    'name': 'name', 
                    'debit': record.contract_worksheet.total_alles, 
                    'credit': record.contract_worksheet.total_alles,
                    'account_id': record.transporter.transp_transit, 
                    'date': date,
                    'partner_id': record.transporter, 
                }),
            ]
            journal_id = False
            if record.transporter.property_account_receivable:
                journals = self.env['account.journal'].search([
                    ('default_credit_account_id', '=', record.transporter.property_account_receivable.id)
                ])
                if journals:
                    journal_id = journals[0]
            acc_move.create({
                #'period_id': period_id,
                'journal_id': journal_id,
                'date':date,
                'state': 'draft',
                'line_id': move_lines, # this is one2many field to account.move.line
            })
        elif record.state in ('work_in_progress'):
            record.temp2 = record.contract_worksheet.total_totals
        elif record.state in ('delivered'):
            record.transporter.transp_transit.debit = record.contract_worksheet.total_alles