1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
from openerp.osv import fields, osv
from openerp.tools.translate import _
class sale_order_tax_line(osv.osv):
_inherit = 'sale.order.line'
def _unit_tax(self, cr, uid, id, product, context=None):
res = 0
tax_obj = self.pool.get('account.tax')
for line in self.browse(cr, uid, ids, context=context):
price_unit = line.price_unit * (1 - (line.discount or 0.0)/100.0)
partner = line.order_id.partner_id
res = tax_obj.compute_all(cr, uid, line.tax_id, price_unit, quantity=1.0, partner)
return res
def _taxed_unit_price(self, cr, uid, id, product, context=None):
res = 0
for line in self.browse(cr, uid, ids, context=context):
price_unit = line.price_unit*(1 - (line.discount or 0.0)/100)
tax = line.unit_tax
res = price_unit + tax
return res
def _line_order_tax(self, cr, uid, id, product, context=None):
res = 0
tax_obj = self.pool.get('account.tax')
for line in self.browse(cr, uid, ids, context=context):
price_unit = line.price_unit*(1 - (line.discount or 0.0)/100)
tax = tax_obj.compute_all(cr, uid, line.tax_id, price_unit, line.product_uom_qty, line.product_id, line.order_id.partner_id)
def _taxed_line_order(self, cr, uid, id, product, context=None):
res = 0
for line in self.browse(cr, uid, ids, context=context):
price = line.price_subtotal
tax = line.line_order_tax
res = price + tax
return res
_columns = {
'unit_tax' : fields.function(_unit_tax, string='Unit Tax', digits_compute=dp.get_precision('Account')),
'taxed_unit_price' : fields.function(_taxed_unit_price, string='Taxed Unit Price', digits_compute=dp.get_precision('Account')),
'line_order_tax' : fields.function(_line_order_tax, string='Tax Subtotal', digits_compute=dp.get_precision('Account')),
'taxed_line_order' : fields.function(_taxed_line_order, string='Taxed Subtotal', digits_compute=dp.get_precision('Account')),
} |
Partager