From 25c8a36a0bc390aba18c9eda7ae2ee5093b81d31 Mon Sep 17 00:00:00 2001 From: Carlos Dauden Date: Tue, 10 Jul 2018 19:47:14 +0200 Subject: [PATCH] [IMP] stock_picking_report_valued: Improve code --- stock_picking_report_valued/__init__.py | 2 - .../models/stock_move_line.py | 71 ++++++++++--------- .../views/res_partner_view.xml | 2 +- 3 files changed, 37 insertions(+), 38 deletions(-) diff --git a/stock_picking_report_valued/__init__.py b/stock_picking_report_valued/__init__.py index cde864b..0650744 100644 --- a/stock_picking_report_valued/__init__.py +++ b/stock_picking_report_valued/__init__.py @@ -1,3 +1 @@ -# -*- coding: utf-8 -*- - from . import models diff --git a/stock_picking_report_valued/models/stock_move_line.py b/stock_picking_report_valued/models/stock_move_line.py index 9a22306..5679c5a 100644 --- a/stock_picking_report_valued/models/stock_move_line.py +++ b/stock_picking_report_valued/models/stock_move_line.py @@ -1,61 +1,62 @@ # Copyright 2014 Pedro M. Baeza - Tecnativa # Copyright 2015 Antonio Espinosa - Tecnativa -# Copyright 2016 Carlos Dauden - Tecnativa # Copyright 2018 Luis M. Ontalba - Tecnativa +# Copyright 2016-2018 Carlos Dauden - Tecnativa # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import api, fields, models class StockMoveLine(models.Model): - _inherit = "stock.move.line" + _inherit = 'stock.move.line' - currency_id = fields.Many2one( - related='sale_line.currency_id', readonly=True, - string='Currency') sale_line = fields.Many2one( related='move_id.sale_line_id', readonly=True, - string="Related order line") - sale_tax_description = fields.Char( - compute='_compute_sale_tax_description', - string='Tax Description') + string='Related order line') + currency_id = fields.Many2one( + related='sale_line.currency_id', readonly=True, + string='Sale Currency') + sale_tax_id = fields.Many2many( + related='sale_line.tax_id', readonly=True, + string='Sale Tax') sale_price_unit = fields.Float( related='sale_line.price_unit', readonly=True, - string="Sale price unit") + string='Sale price unit') sale_discount = fields.Float( related='sale_line.discount', readonly=True, - string="Sale discount (%)") + string='Sale discount (%)') + sale_tax_description = fields.Char( + compute='_compute_sale_order_line_fields', + string='Tax Description') sale_price_subtotal = fields.Monetary( - compute='_compute_amount', - string="Price subtotal") + compute='_compute_sale_order_line_fields', + string='Price subtotal') sale_price_tax = fields.Float( - compute='_compute_amount', + compute='_compute_sale_order_line_fields', string='Taxes') + sale_price_total = fields.Monetary( + compute='_compute_sale_order_line_fields', + string='Total') @api.multi - @api.depends('sale_line.tax_id') - def _compute_sale_tax_description(self): + def _compute_sale_order_line_fields(self): for line in self: - line.sale_tax_description = ', '.join([( - x.description or x.name) for x in line.sale_line.tax_id]) - - @api.depends('product_uom_qty', 'sale_discount', 'sale_price_unit', - 'sale_line.tax_id') - def _compute_amount(self): - for line in self: - price = line.sale_price_unit * (1 - ( - line.sale_discount or 0.0) / 100.0) - if line.picking_id.state == 'done': - qty = line.qty_done - else: - qty = line.product_uom_qty - taxes = line.sale_line.tax_id.compute_all( - price, - line.currency_id, qty, - product=line.sale_line.product_id, + taxes = line.sale_tax_id.compute_all( + price_unit=line.sale_line.price_reduce, + currency=line.currency_id, + quantity=line.qty_done or line.product_qty, + product=line.product_id, partner=line.sale_line.order_id.partner_shipping_id) + if line.sale_line.company_id.tax_calculation_rounding_method == ( + 'round_globally'): + price_tax = sum( + t.get('amount', 0.0) for t in taxes.get('taxes', [])) + else: + price_tax = taxes['total_included'] - taxes['total_excluded'] line.update({ - 'sale_price_tax': sum( - t.get('amount', 0.0) for t in taxes.get('taxes', [])), + 'sale_tax_description': ', '.join( + t.description or t.name for t in line.sale_tax_id), 'sale_price_subtotal': taxes['total_excluded'], + 'sale_price_tax': price_tax, + 'sale_price_total': taxes['total_included'], }) diff --git a/stock_picking_report_valued/views/res_partner_view.xml b/stock_picking_report_valued/views/res_partner_view.xml index e331eaf..c17da3a 100644 --- a/stock_picking_report_valued/views/res_partner_view.xml +++ b/stock_picking_report_valued/views/res_partner_view.xml @@ -1,4 +1,4 @@ - +