如何在发票

时间:2018-05-25 12:44:20

标签: python-2.7 odoo-9

我使用了odoo 9,我创建了一个自定义模块,可以自动在发票中添加印花税。我创建了一个新页面,用于在res.company中输入戳记值和帐户。我的问题是印花税不会自动添加到发票。请帮忙吗?

account_invoice.py

from openerp import tools
from openerp.osv import fields,osv

class res_partner(osv.osv):
_name="res.company"
_inherit="res.company"
_columns={
"default_stamp_tax_account":fields.many2one('account.account',"stamp tax account"),
"default_stamp_tax_value":fields.float('stamp tax value'),
}
class account_invoice(osv.osv):
_name="account.invoice"
_inherit="account.invoice"
def create(self,cr,uid,values,context=None):

    stamp_account=self.pool.get('res.company').browse(cr,uid,values.get('company_id')).default_stamp_tax_account.id
    tax_value=self.pool.get('res.company').browse(cr,uid,values.get('company_id')).default_stamp_tax_value
    #pos_account=self.pool.get('pos.order').browse(cr, uid, values.get('company_id')).partner_id.property_account_receivable.id
    print stamp_account
    print tax_value

    #print pos_account

    if stamp_account:
        tax_line=[]
        tax_line.append([0, False, {'base_amount': 0, 'amount': tax_value, 'tax_amount': tax_value, 'name': 'Timbre', 'account_id': stamp_account}])
        values.update({
        'tax_line':tax_line,

        })

        print values
    return super(account_invoice,self).create(cr,uid,values,context)

1 个答案:

答案 0 :(得分:0)

您将在日志中找到类似于以下内容的行:

  
    

警告odoo9-demo openerp.models:account.invoice.create()包含未知字段:tax_line

  

告诉您tax_line模型中未定义的account.invoice字段。

如果您没有在该模型中定义不符合上述规定的代码,则应使用tax_line_ids将税票添加到发票中,并注意在调用时添加的发票税:

super(account_invoice,self).create(cr,uid,values,context)

调用taxes后,您可以在create method中致电super后看到invoice.compute_taxes()已添加到发票中。

因此,您可以使用相同的逻辑(compute_taxes)来添加税。

  • 编辑
    在致电super之后加税。