如何在发票中自动添加固定税

How to add fixed tax automatically in invoice

我正在使用 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)

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

WARNING odoo9-demo openerp.models: account.invoice.create() includes unknown fields: tax_line

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

如果你没有在那个模型中定义它,不是根据上面提供的代码,你应该使用tax_line_ids将税戳添加到发票上,并注意调用时添加的发票税:

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

调用invoice.compute_taxes().

create method调用super后可以看到taxes添加到发票中

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

  • 编辑
    打电话给super后给你加税。