obook/sale_calc_discount_b2c/models/sale.py
santiky 16a72610f2
[wip] stock_picking_deposit para gestión de albaranes en depósito.
De momento sólo tiene un campo nuevo para marcar que ese albarán es un depósito.
2021-09-07 16:14:02 +02:00

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'],
})