2

请帮帮我..怎么了

 def _amount_all(self, cr, uid, ids, name, args, context=None):
    res = {}
    for invoice in self.browse(cr, uid, ids, context=context):
        res[invoice.id] = {
            'amount_untaxed': 0.0,
            'amount_tax': 0.0,
            'amount_total': 0.0
        }
        for line in invoice.invoice_line:

            res[invoice.id]['amount_untaxed'] += line.price_subtotal
        for line in invoice.tax_line:
            res[invoice.id]['amount_tax'] += line.amount 
        res[invoice.id]['amount_total'] = res[invoice.id]['amount_tax'] + res[invoice.id]['amount_untaxed']
        cr.execute('select payment from sale_order where name = %s',(invoice.origin,))
        ads = cr.fetchone()
        pay = ads and ads[0] or None
        if pay == 'deposit':
            if invoice.partner_id.avail < 0:
                raise osv.except_osv(_('Invalid action !'), _('Deposit must be recharged')
                    if invoice.amount_total != res[invoice.id]['amount_total']:
                        temp = invoice.partner_id.depot - res[invoice.id]['amount_total']
                        cr.execute('update res_partner set depot=%s where id = %s', (temp, invoice.partner_id.id,))
    return res

我检查了条件,如果他使用押金付款并且如果不是小于零,则可用,则减少押金。我认为..这是正确的..但是当我跑步时,看起来像这样

if invoice.amount_total != res[invoice.id]['amount_total']: SyntaxError: invalid syntax

4

1 回答 1

2

为什么在行后给出 2tabs(8 个空格)raise osv.except_osv() 你的代码应该像

def _amount_all(self, cr, uid, ids, name, args, context=None):
    res = {}
    for invoice in self.browse(cr, uid, ids, context=context):
        res[invoice.id] = {
            'amount_untaxed': 0.0,
            'amount_tax': 0.0,
            'amount_total': 0.0
        }
        for line in invoice.invoice_line:

            res[invoice.id]['amount_untaxed'] += line.price_subtotal
        for line in invoice.tax_line:
            res[invoice.id]['amount_tax'] += line.amount 
        res[invoice.id]['amount_total'] = res[invoice.id]['amount_tax'] + res[invoice.id]['amount_untaxed']
        cr.execute('select payment from sale_order where name = %s',(invoice.origin,))
        ads = cr.fetchone()
        pay = ads and ads[0] or None
        if pay == 'deposit':
            if invoice.partner_id.avail < 0:
                raise osv.except_osv(_('Invalid action !'), _('Deposit must be recharged')
            if invoice.amount_total != res[invoice.id]['amount_total']:
                temp = invoice.partner_id.depot - res[invoice.id]['amount_total']
                cr.execute('update res_partner set depot=%s where id = %s', (temp, invoice.partner_id.id,))
    return res
于 2012-08-25T08:12:26.763 回答