Skip to content

Commit

Permalink
[MIG] repair_discount: Migration to 16.0
Browse files Browse the repository at this point in the history
  • Loading branch information
unaiberis committed Jul 29, 2024
1 parent 8530cda commit 53dd36f
Show file tree
Hide file tree
Showing 7 changed files with 73 additions and 91 deletions.
16 changes: 8 additions & 8 deletions repair_discount/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@ Repair Discount
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmanufacture-lightgray.png?logo=github
:target: https://github.com/OCA/manufacture/tree/14.0/repair_discount
:alt: OCA/manufacture
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Frepair-lightgray.png?logo=github
:target: https://github.com/OCA/repair/tree/16.0/repair_discount
:alt: OCA/repair
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/manufacture-14-0/manufacture-14-0-repair_discount
:target: https://translation.odoo-community.org/projects/repair-16-0/repair-16-0-repair_discount
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/manufacture&target_branch=14.0
:target: https://runboat.odoo-community.org/builds?repo=OCA/repair&target_branch=16.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|
Expand All @@ -39,10 +39,10 @@ new field discount on operations lines
Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/manufacture/issues>`_.
Bugs are tracked on `GitHub Issues <https://github.com/OCA/repair/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/manufacture/issues/new?body=module:%20repair_discount%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
`feedback <https://github.com/OCA/repair/issues/new?body=module:%20repair_discount%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Expand Down Expand Up @@ -78,6 +78,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/manufacture <https://github.com/OCA/manufacture/tree/14.0/repair_discount>`_ project on GitHub.
This module is part of the `OCA/repair <https://github.com/OCA/repair/tree/16.0/repair_discount>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
4 changes: 2 additions & 2 deletions repair_discount/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@

{
"name": "Repair Discount",
"version": "14.0.1.0.0",
"version": "16.0.1.0.0",
"category": "Manufacturing",
"license": "AGPL-3",
"author": "Agile Business Group, " "Tecnativa, " "Odoo Community Association (OCA)",
"website": "https://github.com/OCA/manufacture",
"website": "https://github.com/OCA/repair",
"depends": ["repair"],
"data": [
"views/mrp_repair_view.xml",
Expand Down
94 changes: 25 additions & 69 deletions repair_discount/models/mrp_repair.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,94 +9,50 @@
class RepairFee(models.Model):
_inherit = "repair.fee"

discount = fields.Float(string="Discount (%)")

@api.depends("price_unit", "repair_id", "product_uom_qty", "product_id", "discount")
def _compute_price_subtotal(self):
for fee in self:
taxes = self.env["account.tax"].compute_all(
fee.price_unit,
fee.repair_id.pricelist_id.currency_id,
fee.product_uom_qty,
fee.product_id,
fee.repair_id.partner_id,
)
fee.price_subtotal = taxes["total_excluded"] * (
1 - (fee.discount or 0.0) / 100.0
)
discount = fields.Float(
string="Discount (%)",
store=True,
)

@api.depends(
"price_unit", "repair_id", "product_uom_qty", "product_id", "tax_id", "discount"
"discount",
)
def _compute_price_total(self):
def _compute_price_total_and_subtotal(self):
res = super()._compute_price_total_and_subtotal()
for fee in self:
taxes = fee.tax_id.compute_all(
fee.price_unit,
fee.repair_id.pricelist_id.currency_id,
fee.product_uom_qty,
fee.product_id,
fee.repair_id.partner_id,
)
fee.price_total = taxes["total_included"] * (
fee.price_total = fee.price_total * (1 - (fee.discount or 0.0) / 100.0)
fee.price_subtotal = fee.price_subtotal * (
1 - (fee.discount or 0.0) / 100.0
)
return res


class RepairLine(models.Model):
_inherit = "repair.line"

discount = fields.Float(string="Discount (%)")

@api.depends(
"price_unit",
"repair_id",
"product_uom_qty",
"product_id",
"repair_id.invoice_method",
"discount",
discount = fields.Float(
string="Discount (%)",
store=True,
)
def _compute_price_subtotal(self):
for line in self:
taxes = self.env["account.tax"].compute_all(
line.price_unit,
line.repair_id.pricelist_id.currency_id,
line.product_uom_qty,
line.product_id,
line.repair_id.partner_id,
)
line.price_subtotal = taxes["total_excluded"] * (
1 - (line.discount or 0.0) / 100.0
)

@api.depends(
"price_unit",
"repair_id",
"product_uom_qty",
"product_id",
"tax_id",
"repair_id.invoice_method",
"discount",
)
def _compute_price_total(self):
def _compute_price_total_and_subtotal(self):
res = super()._compute_price_total_and_subtotal()
for line in self:
taxes = line.tax_id.compute_all(
line.price_unit,
line.repair_id.pricelist_id.currency_id,
line.product_uom_qty,
line.product_id,
line.repair_id.partner_id,
)
line.price_total = taxes["total_included"] * (
line.price_total = line.price_total * (1 - (line.discount or 0.0) / 100.0)
line.price_subtotal = line.price_subtotal * (
1 - (line.discount or 0.0) / 100.0
)
return res


class RepairOrder(models.Model):
_inherit = "repair.order"

def _create_invoices(self, group=False):

res = super(RepairOrder, self)._create_invoices(group)
res = super()._create_invoices(group)
for repair in self.filtered(lambda _repair: _repair.invoice_method != "none"):
operations = repair.operations
fees_lines = repair.fees_lines
Expand All @@ -112,20 +68,20 @@ def _create_invoices(self, group=False):
fee_lines.invoice_line_id.with_context(
check_move_validity=False
).update({"discount": fee_lines.discount})
self.invoice_id.with_context(
check_move_validity=False
)._recompute_dynamic_lines(
recompute_all_taxes=True, recompute_tax_base_amount=True
)

return res

def _calculate_line_base_price(self, line):
return line.price_unit * (1 - (line.discount or 0.0) / 100.0)

amount_tax = fields.Monetary(
string="Tax Amount", compute="_compute_amount_tax_depends"
)

@api.depends(
"operations", "fees_lines", "operations.invoiced", "fees_lines.invoiced"
)
def _amount_tax(self):
def _compute_amount_tax_depends(self):
for repair in self:
taxed_amount = 0.0
currency = repair.pricelist_id.currency_id
Expand Down
20 changes: 11 additions & 9 deletions repair_discount/static/description/index.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
Expand All @@ -9,10 +8,11 @@

/*
:Author: David Goodger ([email protected])
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
Expand Down Expand Up @@ -275,7 +275,7 @@
margin-left: 2em ;
margin-right: 2em }

pre.code .ln { color: grey; } /* line numbers */
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
Expand All @@ -301,7 +301,7 @@
span.pre {
white-space: pre }

span.problematic {
span.problematic, pre.problematic {
color: red }

span.section-subtitle {
Expand Down Expand Up @@ -369,7 +369,7 @@ <h1 class="title">Repair Discount</h1>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:9ff7aad831adc2c669cd1e07926e8eb8da381c855dd588790b2ff98cf3eb6498
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/manufacture/tree/14.0/repair_discount"><img alt="OCA/manufacture" src="https://img.shields.io/badge/github-OCA%2Fmanufacture-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/manufacture-14-0/manufacture-14-0-repair_discount"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/manufacture&amp;target_branch=14.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/repair/tree/16.0/repair_discount"><img alt="OCA/repair" src="https://img.shields.io/badge/github-OCA%2Frepair-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/repair-16-0/repair-16-0-repair_discount"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/repair&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module extends the functionality of mrp repair adding
new field discount on operations lines</p>
<p><strong>Table of contents</strong></p>
Expand All @@ -386,10 +386,10 @@ <h1 class="title">Repair Discount</h1>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-1">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/manufacture/issues">GitHub Issues</a>.
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/repair/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/manufacture/issues/new?body=module:%20repair_discount%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<a class="reference external" href="https://github.com/OCA/repair/issues/new?body=module:%20repair_discount%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
Expand All @@ -415,11 +415,13 @@ <h2><a class="toc-backref" href="#toc-entry-4">Contributors</a></h2>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-5">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/manufacture/tree/14.0/repair_discount">OCA/manufacture</a> project on GitHub.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/repair/tree/16.0/repair_discount">OCA/repair</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
Expand Down
23 changes: 20 additions & 3 deletions repair_discount/tests/test_mrp_repair_discount.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
# Copyright 2016 Pedro M. Baeza <[email protected]>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from odoo.tests import common
import logging

from odoo.tests.common import TransactionCase

class TestMrpRepairDiscount(common.SavepointCase):
_logger = logging.getLogger(__name__)


class TestMrpRepairDiscount(TransactionCase):
@classmethod
def setUpClass(cls):
super(TestMrpRepairDiscount, cls).setUpClass()
super().setUpClass()

# Create product and service
cls.product = cls.env["product.product"].create(
{
"name": "Test product",
Expand All @@ -22,12 +28,16 @@ def setUpClass(cls):
"list_price": 20,
}
)

# Create partner and location
cls.partner = cls.env.ref("base.res_partner_address_1")
cls.location = cls.env["stock.location"].create(
{
"name": "Test location",
}
)

# Create repair order
cls.repair = cls.env["repair.order"].create(
{
"product_id": cls.product.id,
Expand All @@ -38,8 +48,12 @@ def setUpClass(cls):
"invoice_method": "b4repair",
}
)

# Find stock location
domain_location = [("usage", "=", "production")]
stock_location_id = cls.env["stock.location"].search(domain_location, limit=1)

# Create repair line
cls.repair_line = cls.env["repair.line"].create(
{
"repair_id": cls.repair.id,
Expand All @@ -54,7 +68,9 @@ def setUpClass(cls):
"discount": 50,
}
)
_logger.debug("Created repair line with discount: %s", cls.repair_line.discount)

# Create repair fee
cls.repair_fee = cls.env["repair.fee"].create(
{
"repair_id": cls.repair.id,
Expand All @@ -66,6 +82,7 @@ def setUpClass(cls):
"discount": 50,
}
)
_logger.debug("Created repair fee with discount: %s", cls.repair_fee.discount)

def test_discount(self):
self.assertAlmostEqual(self.repair_line.price_subtotal, 10)
Expand Down
1 change: 1 addition & 0 deletions setup/repair_discount/odoo/addons/repair_discount
6 changes: 6 additions & 0 deletions setup/repair_discount/setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import setuptools

setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

0 comments on commit 53dd36f

Please sign in to comment.