我使用了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)
答案 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)来添加税。