2012-08-25 17 views
2

請幫助me..what錯縮進使用條件

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 

我檢查,如果他使用支付定金,並能在如果小於零,不那麼存款減少完成的條件。我think..this是我跑的時候correct..but,出現這樣

如果invoice.amount_total = RES [invoice.id] [ 'amount_total']: 語法錯誤:無效的語法行後

回答

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