2017-09-15 36 views
1

中修改類型'account.invoice'我想循環遍歷所有發票但發生此錯誤。如果我更改inv [0] .id,它將起作用,但只循環第一張發票。我怎樣才能讓它循環所有的發票。ProgrammingError:無法在方法

def generate(self): 
     Invoice = self.env['account.invoice'] 
     inv = Invoice.browse(Invoice.search([])) 
     invoice = inv and inv[0] 
     for inv in invoice: 
      root = etree.Element('000') 
      po_code = etree.SubElement(root, '22') 
      po_code.text = str(inv.id) or '' 
      return root 

ProgrammingError: can't adapt type 'account.invoice' 

回答

0

當我們調用self.env['account.invoice'].search([]),我們將收到的所有記錄的記錄,存儲在account.invoice模型。再次將該記錄集放在browse方法中是多餘的,因爲此方法也會返回記錄集。此外,它不應該工作,因爲browse方法期望從您的身份證或列表中。檢查文檔。

您現在要做的所有事情就是通過for循環迭代記錄集。每次您將從該記錄集中獲取一條記錄,因此您只能操作它。

def generate(self): 
    for record in self.env['account.invoice'].search([]): 
     # go ahead with each record 
+0

以您的循環爲例,由於某種原因只取得第一張發票,之後停止。我有50個。 – Chaban33

+0

如果您使用的是您的問題中的代碼,那麼可能是因爲您將return語句放在了循環體中。它只會迭代一次,然後返回根,這是肯定的。 – tidylobster

相關問題