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 48a55b1
Show file tree
Hide file tree
Showing 7 changed files with 67 additions and 101 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
105 changes: 26 additions & 79 deletions repair_discount/models/mrp_repair.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,94 +9,48 @@
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"] * (
1 - (fee.discount or 0.0) / 100.0
)
discount_factor = 1 - fee.discount / 100.0
fee.price_total *= discount_factor
fee.price_subtotal *= discount_factor
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"] * (
1 - (line.discount or 0.0) / 100.0
)
discount_factor = 1 - line.discount / 100.0
line.price_total *= discount_factor
line.price_subtotal *= discount_factor
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,45 +66,38 @@ 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)

@api.depends(
"operations", "fees_lines", "operations.invoiced", "fees_lines.invoiced"
)
def _amount_tax(self):
res = super()._amount_tax()
for repair in self:
taxed_amount = 0.0
currency = repair.pricelist_id.currency_id

for line in repair.operations:
tax_calculate = line.tax_id.compute_all(
self._calculate_line_base_price(line),
self.pricelist_id.currency_id,
repair.pricelist_id.currency_id,
line.product_uom_qty,
line.product_id,
repair.partner_id,
)

for c in tax_calculate["taxes"]:
taxed_amount += c["amount"]

for line in repair.fees_lines:
tax_calculate = line.tax_id.compute_all(
self._calculate_line_base_price(line),
self.pricelist_id.currency_id,
repair.pricelist_id.currency_id,
line.product_uom_qty,
line.product_id,
repair.partner_id,
)
for c in tax_calculate["taxes"]:
taxed_amount += c["amount"]

repair.amount_tax = currency.round(taxed_amount)
return res
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
16 changes: 13 additions & 3 deletions repair_discount/tests/test_mrp_repair_discount.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
# 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
from odoo.tests.common import TransactionCase


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

# Create product and service
cls.product = cls.env["product.product"].create(
{
"name": "Test product",
Expand All @@ -22,12 +23,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 +43,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 @@ -55,6 +64,7 @@ def setUpClass(cls):
}
)

# Create repair fee
cls.repair_fee = cls.env["repair.fee"].create(
{
"repair_id": cls.repair.id,
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 48a55b1

Please sign in to comment.