1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
class sale_order_line(models.Model):
_inherit = 'sale.order.line'
price_subtotal = fields.Float(compute='_amount_line', string='Subtotal')
cash_encaisser = fields.Float(string=_("Cash encaisser chez passager"))
include_cash = fields.Boolean(string='Deduire le cash du calcul du total', default=True, help="Soustraire le cash du calcul du total a facturer dans Sale Order")
def _amount_line(self, cr, uid, ids, field_name, arg, context=None):
tax_obj = self.pool.get('account.tax')
cur_obj = self.pool.get('res.currency')
res = {}
if context is None:
context = {}
for line in self.browse(cr, uid, ids, context=context):
if line.include_cash:
price = (line.price_unit * (1 - (line.discount or 0.0) / 100.0)) - (line.cash_encaisser or 0.0)
else:
price = line.price_unit * (1 - (line.discount or 0.0) / 100.0)
taxes = tax_obj.compute_all(cr, uid, line.tax_id, price, line.product_uom_qty, line.product_id, line.order_id.partner_id)
cur = line.order_id.pricelist_id.currency_id
res[line.id] = cur_obj.round(cr, uid, cur, taxes['total'])
return res |
Partager