Openerp ';存款';对象没有属性';获取移动线';

Openerp ';存款';对象没有属性';获取移动线';,openerp,Openerp,我希望朋友们能帮助我 我有自己创建的代码,目标是在日记账分录中输入一个值。这是我的密码 class deposit(osv.osv): _name='deposit.travel' _description='Deposit2 Travel' def action_process(self, cr, uid, ids, context=None): move_lines = [] for deposit in self.browse(cr

我希望朋友们能帮助我

我有自己创建的代码,目标是在日记账分录中输入一个值。这是我的密码

class deposit(osv.osv):
    _name='deposit.travel'
    _description='Deposit2 Travel'

    def action_process(self, cr, uid, ids, context=None):
        move_lines = []
        for deposit in self.browse(cr, uid, ids, context=context):
            # Create the move lines first
            move_lines.append((0,0, self.get_move_line(cr, uid, deposit, 'src')))
            #print deposit
            move_lines.append((0, 0, self.get_move_line(cr, uid, deposit, 'dest')))
            # Create the move for the deposit
            move = {
                'journal_id': deposit.journal_id.id,
                'date': deposit.date,
                'deposit_id': deposit.id,
                'name':'/',
                'line_id': move_lines
            }
            move_id = self.pool.get('account.move').create(cr, uid, move, context=context)
            self.pool.get('account.move').post(cr, uid, [move_id])
            self.write(cr, uid, [deposit.id], {'move_id': move_id,
                                              'state': 'done'},context=context)
        return True

        def get_move_line(self, cr, uid, deposit, type, context=None):
            return {
                'type': type,
                'name': deposit.name or '/',
                'debit': type == 'dest' and deposit.amount or 0.0,
                'credit': type == 'src' and deposit.amount or 0.0,
                'account_id': type == 'src' and deposit.dept_from.id or deposit.dept_to.id,
                'date': deposit.date,
                'deposit_id': deposit.id
            }
     _columns = {
        'partner':fields.many2one('res.partner','Partner',required=True),
        'date':fields.date('Date of Deposit',required=True),
        'period_id':fields.many2one('account.period','Force Period', required=True),
        'journal_id':fields.many2one('account.journal','Journal', required=True),
        'amount':fields.float('Amount',required=True,digits_compute=dp.get_precision('Account')),
        'move_id':fields.many2one('account.move','Journal Entry', readonly=True, select=1),
        'name':fields.related('move_id','name',type='char',readonly=True, size=64, relation='account.move',string='Deposit Ticket #'),
        'dept_from':fields.many2one('account.account','Deposit From'),
        'dept_to':fields.many2one('account.account','Deposit To'),
        'state': fields.selection([
            ('draft','Draft'),
            ('to_be_reviewed','Ready for Review'),
            ('done','Done'),
            ('cancel', 'Cancel')
            ],'State', select=True, readonly=True),
        }
         _defaults = {
        'date': time.strftime('%Y-%m-%d'),
        'period_id':_get_period,
        'state': 'draft',
         }
deposit()
但是,当我单击放置命令的按钮时,action\u process,会出现类似这样的错误,“存款”对象没有属性“get\u move\u line”。get_move_line是一个函数,为什么属性会出错?
我需要你的帮助。Thank's before

函数的缩进不正确
get\u move\u line
。将函数一选项卡缩进。

它应该是这样的\u默认值也应该是缩进级别:

class deposit(osv.osv):
    _name='deposit.travel'
    _description='Deposit2 Travel'

    def action_process(self, cr, uid, ids, context=None):
        move_lines = []
        for deposit in self.browse(cr, uid, ids, context=context):
            # Create the move lines first
            move_lines.append((0,0, self.get_move_line(cr, uid, deposit, 'src')))
            #print deposit
            move_lines.append((0, 0, self.get_move_line(cr, uid, deposit, 'dest')))
            # Create the move for the deposit
            move = {
                'journal_id': deposit.journal_id.id,
                'date': deposit.date,
                'deposit_id': deposit.id,
                'name':'/',
                'line_id': move_lines
            }
            move_id = self.pool.get('account.move').create(cr, uid, move, context=context)
            self.pool.get('account.move').post(cr, uid, [move_id])
            self.write(cr, uid, [deposit.id], {'move_id': move_id,
                                              'state': 'done'},context=context)
        return True

    def get_move_line(self, cr, uid, deposit, type, context=None):
        return {
            'type': type,
            'name': deposit.name or '/',
            'debit': type == 'dest' and deposit.amount or 0.0,
            'credit': type == 'src' and deposit.amount or 0.0,
            'account_id': type == 'src' and deposit.dept_from.id or deposit.dept_to.id,
            'date': deposit.date,
            'deposit_id': deposit.id,}

    _columns = {
        'partner':fields.many2one('res.partner','Partner',required=True),
        'date':fields.date('Date of Deposit',required=True),
        'period_id':fields.many2one('account.period','Force Period', required=True),
        'journal_id':fields.many2one('account.journal','Journal', required=True),
        'amount':fields.float('Amount',required=True,digits_compute=dp.get_precision('Account')),
        'move_id':fields.many2one('account.move','Journal Entry', readonly=True, select=1),
        'name':fields.related('move_id','name',type='char',readonly=True, size=64, relation='account.move',string='Deposit Ticket #'),
        'dept_from':fields.many2one('account.account','Deposit From'),
        'dept_to':fields.many2one('account.account','Deposit To'),
        'state': fields.selection([
            ('draft','Draft'),
            ('to_be_reviewed','Ready for Review'),
            ('done','Done'),
            ('cancel', 'Cancel')
            ],'State', select=True, readonly=True),
    }

    _defaults = {
        'date': time.strftime('%Y-%m-%d'),
        'period_id':_get_period,
        'state': 'draft',
    }

deposit()

非常感谢。我很粗心,我认为这只是一个粘贴错误,因为它在导入时会引发
IndentationError
。好的,Mohammad Ali感谢您提高了我的编程知识,是的,您是对的。谢谢。