31 lines
1.3 KiB
Python
31 lines
1.3 KiB
Python
# Copyright (C) 2021: Criptomart (<https://criptomart.net/>)
|
|
# @author: Criptomart (<tech@criptomart.net>)
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
|
|
#import logging
|
|
|
|
from odoo import models, fields, api
|
|
|
|
#_logger = logging.getLogger(__name__)
|
|
|
|
class SaleOrderOrderLine(models.Model):
|
|
_inherit = 'sale.order.line'
|
|
|
|
@api.depends('product_uom_qty', 'discount', 'price_unit', 'tax_id')
|
|
def _compute_amount(self):
|
|
"""
|
|
Compute the amounts of the SO line.
|
|
"""
|
|
for line in self:
|
|
price = line.price_unit
|
|
taxes = line.tax_id.compute_all(price, line.order_id.currency_id, line.product_uom_qty, product=line.product_id, partner=line.order_id.partner_shipping_id)
|
|
if line.discount:
|
|
price_disc = taxes['total_excluded'] * (1 - (line.discount or 0.0) / 100.0)
|
|
ctx = dict(self.env.context, handle_price_include=False)
|
|
taxes = line.tax_id.with_context(ctx).compute_all(price_disc, line.order_id.currency_id, 1, product=line.product_id, partner=line.order_id.partner_shipping_id)
|
|
|
|
line.update({
|
|
'price_tax': sum(t.get('amount', 0.0) for t in taxes.get('taxes', [])),
|
|
'price_total': taxes['total_included'],
|
|
'price_subtotal': taxes['total_excluded'],
|
|
})
|