Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[18.0][MIG] agreement_rebate: Migration to 18.0 #56

Merged
merged 17 commits into from
Feb 3, 2025
Merged
Changes from 1 commit
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
[MIG] agreement_rebate: Migration to 18.0
  • Loading branch information
CarlosRoca13 committed Jan 29, 2025
commit 7afc22cb46478ca9470eb1deaa26ab094c62ec49
9 changes: 5 additions & 4 deletions agreement_rebate/README.rst
Original file line number Diff line number Diff line change
@@ -10,9 +10,9 @@ Agreement Rebate
!! source digest: sha256:5b7242b1d8b9588b1724ec1d569cbd0ea5999c7ba01c2223a0efcc0c6a286fa4
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
:alt: Production/Stable
.. |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
@@ -112,8 +112,9 @@ Contributors

- `Tecnativa <https://www.tecnativa.com>`__:

- Carlos Dauden <carlos.dauden@tecnativa.com>
- Sergio Teruel <sergio.teruel@tecnativa.com>
- Carlos Dauden
- Sergio Teruel
- Carlos Roca

Maintainers
-----------
2 changes: 1 addition & 1 deletion agreement_rebate/__manifest__.py
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@
{
"name": "Agreement Rebate",
"summary": "Rebate in agreements",
"version": "16.0.1.0.1",
"version": "18.0.1.0.0",
"development_status": "Beta",
"category": "Agreement",
"website": "https://github.com/OCA/agreement",
11 changes: 3 additions & 8 deletions agreement_rebate/models/agreement_rebate_settlement.py
Original file line number Diff line number Diff line change
@@ -41,25 +41,25 @@
def create(self, vals_list):
for vals in vals_list:
if vals.get("name", "/") != "/":
continue

Check warning on line 44 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L44

Added line #L44 was not covered by tests
vals["name"] = self.env["ir.sequence"].next_by_code(
"agreement.rebate.settlement"
)
return super(AgreementRebateSettlement, self).create(vals_list)
return super().create(vals_list)

def write(self, vals):
res = super().write(vals)

Check warning on line 51 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L51

Added line #L51 was not covered by tests
if "active" in vals and not self.env.context.get(
"skip_active_field_update", False
):
lines = self.with_context(active_test=False).line_ids.filtered(

Check warning on line 55 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L55

Added line #L55 was not covered by tests
lambda ln: ln.active != vals["active"]
)
lines.with_context(skip_active_field_update=True).active = vals["active"]
return res

Check warning on line 59 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L58-L59

Added lines #L58 - L59 were not covered by tests

def _reverse_type_map(self, inv_type):
return {

Check warning on line 62 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L62

Added line #L62 was not covered by tests
"out_invoice": "out_refund",
"out_refund": "out_invoice",
"in_invoice": "in_refund",
@@ -77,10 +77,10 @@
invoice_dic[key]["processed_settlements"] = line.settlement_id
invoice_dic[key]["check_amount"] = 0.0
elif line.settlement_id not in invoice_dic[key]["processed_settlements"]:
invoice_dic[key]["invoice_origin"] = "{}, {}".format(

Check warning on line 80 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L80

Added line #L80 was not covered by tests
invoice_dic[key]["invoice_origin"], line.settlement_id.name
)
invoice_dic[key]["processed_settlements"] |= line.settlement_id

Check warning on line 83 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L83

Added line #L83 was not covered by tests
inv_line_vals = line._prepare_invoice_line(invoice_dic[key])
invoice_dic[key]["invoice_line_ids"].append((0, 0, inv_line_vals))
invoice_dic[key]["check_amount"] += line.amount_invoiced
@@ -89,19 +89,19 @@
values.pop("line_ids", None)
if values.pop("check_amount", 0.0) < 0.0:
for line_vals in values["invoice_line_ids"]:
line_vals[2]["price_unit"] *= -1
values["move_type"] = self._reverse_type_map(values["move_type"])

Check warning on line 93 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L92-L93

Added lines #L92 - L93 were not covered by tests
invoices = self.env["account.move"].create(invoice_dic.values())
return invoices

def action_show_detail(self):
target_domains = self.line_ids.mapped("target_domain")
domain = expression.OR([safe_eval(d) for d in set(target_domains)])
return {

Check warning on line 100 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L98-L100

Added lines #L98 - L100 were not covered by tests
"name": _("Details"),
"type": "ir.actions.act_window",
"res_model": "account.invoice.report",
"view_mode": "pivot,tree",
"view_mode": "pivot,list",
"domain": domain,
"context": self.env.context,
}
@@ -119,24 +119,24 @@
return action

def action_show_settlement_lines(self):
action = self.env["ir.actions.act_window"]._for_xml_id(

Check warning on line 122 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L122

Added line #L122 was not covered by tests
"agreement_rebate.agreement_rebate_settlement_line_action"
)
action["domain"] = [("settlement_id", "in", self.ids)]
return action

Check warning on line 126 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L125-L126

Added lines #L125 - L126 were not covered by tests

def action_show_agreement(self):
agreements = self.line_ids.mapped("agreement_id")
action = self.env["ir.actions.act_window"]._for_xml_id(

Check warning on line 130 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L129-L130

Added lines #L129 - L130 were not covered by tests
"agreement.agreement_action"
)
if len(agreements) == 1:
form = self.env.ref("agreement.agreement_form")
action["views"] = [(form.id, "form")]
action["res_id"] = agreements.id

Check warning on line 136 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L134-L136

Added lines #L134 - L136 were not covered by tests
else:
action["domain"] = [("id", "in", agreements.ids)]
return action

Check warning on line 139 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L138-L139

Added lines #L138 - L139 were not covered by tests


class AgreementRebateSettlementLine(models.Model):
@@ -213,7 +213,7 @@
def _compute_invoice_status(self):
for line in self:
if line.invoice_status == "no":
continue

Check warning on line 216 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L216

Added line #L216 was not covered by tests
invoice_lines = line.invoice_line_ids.filtered(
lambda ln: ln.parent_state != "cancel"
)
@@ -226,25 +226,25 @@
line.invoice_status = "to_invoice"

def write(self, vals):
res = super().write(vals)

Check warning on line 229 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L229

Added line #L229 was not covered by tests
if "active" in vals and not self.env.context.get(
"skip_active_field_update", False
):
if vals["active"]:
# If one line is active settlement must be active
settlements = self.mapped("settlement_id").filtered(

Check warning on line 235 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L235

Added line #L235 was not covered by tests
lambda s: not s.active
)
else:
# If lines are archived and the settlement has not active lines, the
# settlement must be archived
settlements = self.mapped("settlement_id").filtered(

Check warning on line 241 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L241

Added line #L241 was not covered by tests
lambda s: s.active and not s.line_ids
)
settlements.with_context(skip_active_field_update=True).active = vals[

Check warning on line 244 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L244

Added line #L244 was not covered by tests
"active"
]
return res

Check warning on line 247 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L247

Added line #L247 was not covered by tests

def _prepare_invoice(self):
"""
@@ -260,9 +260,9 @@
if invoice_group == "settlement":
partner = self.settlement_id.partner_id
elif invoice_group == "partner":
partner = self.partner_id

Check warning on line 263 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L263

Added line #L263 was not covered by tests
elif invoice_group == "commercial_partner":
partner = self.partner_id.commercial_partner_id

Check warning on line 265 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L265

Added line #L265 was not covered by tests
invoice_type = self.env.context.get("invoice_type", "out_invoice")
journal_id = (
self.env.context.get("journal_id")
@@ -271,7 +271,7 @@
.default_get(["journal_id"])["journal_id"]
)
if not journal_id:
raise UserError(

Check warning on line 274 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L274

Added line #L274 was not covered by tests
_("Please define an accounting sales journal for this company.")
)
vinvoice = self.env["account.move"].new(
@@ -291,9 +291,6 @@
"invoice_origin": self.settlement_id.name,
"invoice_line_ids": [],
"currency_id": partner.currency_id.id,
# 'comment': self.note,
# 'user_id': self.user_id and self.user_id.id,
# 'team_id': self.team_id.id,
}
)
return invoice_vals
@@ -335,8 +332,6 @@
date_from=self.settlement_id.date_from,
date_to=self.settlement_id.date_to,
),
# 'account_analytic_id': self.analytic_account_id.id,
# 'analytic_tag_ids': [(6, 0, self.analytic_tag_ids.ids)],
"price_unit": self.amount_rebate,
}
)
@@ -347,18 +342,18 @@
if invoice_group == "settlement":
return self.settlement_id.id
if invoice_group == "partner":
return self.env.context.get("partner_id", self.partner_id.id)

Check warning on line 345 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L345

Added line #L345 was not covered by tests
if invoice_group == "commercial_partner":
return self.env.context.get(

Check warning on line 347 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L347

Added line #L347 was not covered by tests
"partner_id", self.partner_id.commercial_partner_id.id
)

def action_show_detail(self):
return {

Check warning on line 352 in agreement_rebate/models/agreement_rebate_settlement.py

Codecov / codecov/patch

agreement_rebate/models/agreement_rebate_settlement.py#L352

Added line #L352 was not covered by tests
"name": _("Details"),
"type": "ir.actions.act_window",
"res_model": "account.invoice.report",
"view_mode": "pivot,tree",
"view_mode": "pivot,list",
"domain": self.target_domain,
"context": self.env.context,
}
5 changes: 3 additions & 2 deletions agreement_rebate/readme/CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
- [Tecnativa](https://www.tecnativa.com):

> - Carlos Dauden \<<carlos.dauden@tecnativa.com>\>
> - Sergio Teruel \<<sergio.teruel@tecnativa.com>\>
> - Carlos Dauden
> - Sergio Teruel
> - Carlos Roca
7 changes: 4 additions & 3 deletions agreement_rebate/static/description/index.html
Original file line number Diff line number Diff line change
@@ -369,7 +369,7 @@ <h1 class="title">Agreement Rebate</h1>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:5b7242b1d8b9588b1724ec1d569cbd0ea5999c7ba01c2223a0efcc0c6a286fa4
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<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/agreement/tree/18.0/agreement_rebate"><img alt="OCA/agreement" src="https://img.shields.io/badge/github-OCA%2Fagreement-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/agreement-18-0/agreement-18-0-agreement_rebate"><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/agreement&amp;target_branch=18.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="Production/Stable" src="https://img.shields.io/badge/maturity-Production%2FStable-green.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/agreement/tree/18.0/agreement_rebate"><img alt="OCA/agreement" src="https://img.shields.io/badge/github-OCA%2Fagreement-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/agreement-18-0/agreement-18-0-agreement_rebate"><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/agreement&amp;target_branch=18.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 agreement module to allow
define rebate conditions.</p>
<p><strong>Table of contents</strong></p>
@@ -449,8 +449,9 @@ <h2><a class="toc-backref" href="#toc-entry-5">Contributors</a></h2>
<li><p class="first"><a class="reference external" href="https://www.tecnativa.com">Tecnativa</a>:</p>
<blockquote>
<ul class="simple">
<li>Carlos Dauden &lt;<a class="reference external" href="mailto:carlos.dauden&#64;tecnativa.com">carlos.dauden&#64;tecnativa.com</a>&gt;</li>
<li>Sergio Teruel &lt;<a class="reference external" href="mailto:sergio.teruel&#64;tecnativa.com">sergio.teruel&#64;tecnativa.com</a>&gt;</li>
<li>Carlos Dauden</li>
<li>Sergio Teruel</li>
<li>Carlos Roca</li>
</ul>
</blockquote>
</li>
2 changes: 1 addition & 1 deletion agreement_rebate/tests/test_agreement_rebate.py
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@
from freezegun import freeze_time

from odoo import fields
from odoo.tests.common import Form, TransactionCase, tagged
from odoo.tests import Form, TransactionCase, tagged


@freeze_time("2022-02-01 09:30:00")
6 changes: 3 additions & 3 deletions agreement_rebate/views/agreement_condition_view.xml
Original file line number Diff line number Diff line change
@@ -24,15 +24,15 @@
<field name="name">agreement.rebate.condition.tree</field>
<field name="model">agreement.rebate.condition</field>
<field name="arch" type="xml">
<tree>
<list>
<field name="name" />
<field name="rebate_domain" groups="base.group_no_one" />
</tree>
</list>
</field>
</record>
<record id="agreement_rebate_condition_action" model="ir.actions.act_window">
<field name="name">Agreement rebate conditions</field>
<field name="res_model">agreement.rebate.condition</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">list,form</field>
</record>
</odoo>
24 changes: 12 additions & 12 deletions agreement_rebate/views/agreement_rebate_settlement_view.xml
Original file line number Diff line number Diff line change
@@ -46,15 +46,15 @@
<field name="name">agreement.rebate.settlement</field>
<field name="model">agreement.rebate.settlement</field>
<field name="arch" type="xml">
<tree>
<list>
<field name="name" />
<field name="partner_id" />
<field name="date" />
<field name="date_from" />
<field name="date_to" />
<field name="amount_invoiced" />
<field name="amount_rebate" />
</tree>
</list>
</field>
</record>
<record id="agreement_rebate_settlement_form" model="ir.ui.view">
@@ -93,7 +93,7 @@
name="web_ribbon"
title="Archived"
bg_color="bg-danger"
attrs="{'invisible': [('active', '=', True)]}"
invisible="active"
/>
<group>
<group>
@@ -115,34 +115,34 @@
</group>
<group string="Lines">
<field name="line_ids" nolabel="1" colspan="2">
<tree>
<list>
<field name="rebate_type" invisible="1" />
<field name="partner_id" readonly="1" />
<field name="amount_invoiced" />
<field name="percent" />
<field name="amount_rebate" />
<field
name="amount_from"
attrs="{'invisible': [('rebate_type', 'not in', ['section_total', 'section_prorated'])]}"
invisible="rebate_type not in ['section_total', 'section_prorated']"
/>
<field
name="amount_to"
attrs="{'invisible': [('rebate_type', 'not in', ['section_total', 'section_prorated'])]}"
invisible="rebate_type not in ['section_total', 'section_prorated']"
/>
<field name="invoice_status" optional="show" />
<button
name="action_show_detail"
type="object"
icon="fa-table"
title="Show details"
attrs="{'invisible': [('rebate_type', '!=', 'line')]}"
invisible="rebate_type != 'line'"
/>
<field
name="target_domain"
groups="base.group_no_one"
optional="hidden"
/>
</tree>
</list>
</field>
</group>
</sheet>
@@ -153,7 +153,7 @@
<field name="name">agreement.rebate.settlement.line</field>
<field name="model">agreement.rebate.settlement.line</field>
<field name="arch" type="xml">
<tree create="false" edit="false">
<list create="false" edit="false">
<field name="date" />
<field name="partner_id" />
<field name="agreement_id" />
@@ -174,7 +174,7 @@
groups="base.group_no_one"
optional="hidden"
/>
</tree>
</list>
</field>
</record>
<record id="agreement_rebate_settlement_line_search" model="ir.ui.view">
@@ -228,13 +228,13 @@
<record id="agreement_rebate_settlement_action" model="ir.actions.act_window">
<field name="name">Agreement settlements</field>
<field name="res_model">agreement.rebate.settlement</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">list,form</field>
<field name="context">{'search_default_not_invoiced': 1}</field>
</record>
<record id="agreement_rebate_settlement_line_action" model="ir.actions.act_window">
<field name="name">Agreement settlement lines</field>
<field name="res_model">agreement.rebate.settlement.line</field>
<field name="view_mode">tree,form,pivot</field>
<field name="view_mode">list,form,pivot</field>
<field name="context">{'search_default_not_invoiced': 1}</field>
</record>
</odoo>
42 changes: 16 additions & 26 deletions agreement_rebate/views/agreement_view.xml
Original file line number Diff line number Diff line change
@@ -5,11 +5,7 @@
<field name="inherit_id" ref="agreement.agreement_form" />
<field name="arch" type="xml">
<notebook position="inside">
<page
name="rebate"
string="Rebate"
attrs="{'invisible': [('is_rebate', '=', False)]}"
>
<page name="rebate" string="Rebate" invisible="not is_rebate">
<field name="is_rebate" invisible="1" />
<group>
<group>
@@ -18,44 +14,38 @@
<group>
<field
name="rebate_discount"
attrs="{'invisible': [('rebate_type', '!=', 'global')]}"
invisible="rebate_type != 'global'"
/>
</group>
</group>
<group
string="Lines"
attrs="{'invisible': [('rebate_type', '=', False)]}"
cols="4"
>
<group string="Lines" invisible="not rebate_type" cols="4">
<p class="text-muted" colspan="2">
<i class="fa fa-filter" />
You can create a filter to apply the rebate.
Categories, products, variants, generic conditions to reuse or a custom filter
<!-- Puede crear un filtro para aplicar el rápel.-->
<!-- Categorías, productos, variantes, condiciones genéricas para reutilizar o un filtro personalizado-->
</p>
<field
name="rebate_line_ids"
context="{'hide_rebate_discount': rebate_type != 'line'}"
nolabel="1"
colspan="2"
>
<tree>
<list create="1" delete="1" edit="1">
<field name="rebate_target" />
<field
name="rebate_domain"
groups="base.group_no_one"
/>
<field
name="rebate_discount"
attrs="{'column_invisible': [('parent.rebate_type', '!=', 'line')]}"
column_invisible="parent.rebate_type != 'line'"
/>
</tree>
</list>
</field>
</group>
<group
string="Sections"
attrs="{'invisible': [('rebate_type', 'not in', ['section_total', 'section_prorated'])]}"
invisible="rebate_type not in ['section_total', 'section_prorated']"
>
<field name="rebate_section_ids" nolabel="1" colspan="2" />
</group>
@@ -80,11 +70,11 @@
<field name="name">agreement.rebate.line.tree</field>
<field name="model">agreement.rebate.line</field>
<field name="arch" type="xml">
<tree>
<list>
<field name="rebate_target" />
<field name="rebate_domain" groups="base.group_no_one" />
<field name="rebate_discount" />
</tree>
</list>
</field>
</record>
<record id="agreement_rebate_line_form" model="ir.ui.view">
@@ -108,31 +98,31 @@
<field
name="rebate_product_ids"
widget="many2many_tags"
attrs="{'invisible': [('rebate_target', '!=', 'product')]}"
invisible="rebate_target != 'product'"
nolabel="1"
/>
<field
name="rebate_product_tmpl_ids"
widget="many2many_tags"
attrs="{'invisible': [('rebate_target', '!=', 'product_tmpl')]}"
invisible="rebate_target != 'product_tmpl'"
nolabel="1"
/>
<field
name="rebate_category_ids"
widget="many2many_tags"
attrs="{'invisible': [('rebate_target', '!=', 'category')]}"
invisible="rebate_target != 'category'"
nolabel="1"
/>
<field
name="rebate_condition_id"
attrs="{'invisible': [('rebate_target', '!=', 'condition')]}"
invisible="rebate_target != 'condition'"
nolabel="1"
/>
<field
name="rebate_domain"
widget="domain"
options="{'model': 'account.move.line', 'in_dialog': True}"
attrs="{'invisible': [('rebate_target', '!=', 'domain')]}"
invisible="rebate_target != 'domain'"
nolabel="1"
/>
</group>
@@ -144,11 +134,11 @@
<field name="name">agreement.rebate.section.tree</field>
<field name="model">agreement.rebate.section</field>
<field name="arch" type="xml">
<tree editable="bottom">
<list editable="bottom">
<field name="amount_from" />
<field name="amount_to" />
<field name="rebate_discount" />
</tree>
</list>
</field>
</record>
</odoo>
4 changes: 2 additions & 2 deletions agreement_rebate/wizards/invoice_create.py
Original file line number Diff line number Diff line change
@@ -72,9 +72,9 @@
if self.settlements_ids:
domain.extend([("id", "in", self.settlements_ids.ids)])
elif self.agreement_ids:
domain.extend([("line_ids.agreement_id", "in", self.agreement_ids.ids)])

Check warning on line 75 in agreement_rebate/wizards/invoice_create.py

Codecov / codecov/patch

agreement_rebate/wizards/invoice_create.py#L75

Added line #L75 was not covered by tests
elif self.agreement_type_ids:
domain.extend(

Check warning on line 77 in agreement_rebate/wizards/invoice_create.py

Codecov / codecov/patch

agreement_rebate/wizards/invoice_create.py#L77

Added line #L77 was not covered by tests
[
(
"line_ids.agreement_id.agreement_type_id",
@@ -84,7 +84,7 @@
]
)
else:
domain.extend(

Check warning on line 87 in agreement_rebate/wizards/invoice_create.py

Codecov / codecov/patch

agreement_rebate/wizards/invoice_create.py#L87

Added line #L87 was not covered by tests
[("line_ids.agreement_id.agreement_type_id.domain", "=", self.domain)]
)
return domain
@@ -123,9 +123,9 @@
"type": "ir.actions.act_window",
"name": "Invoices",
"res_model": "account.move",
"view_mode": "tree,kanban,form,calendar,pivot,graph,activity",
"view_mode": "list,kanban,form,calendar,pivot,graph,activity",
"domain": [("id", "in", invoices.ids)],
}
if tree_view and form_view:
action["views"] = [(tree_view.id, "tree"), (form_view.id, "form")]
action["views"] = [(tree_view.id, "list"), (form_view.id, "form")]
return action
4 changes: 3 additions & 1 deletion agreement_rebate/wizards/settlement_create.py
Original file line number Diff line number Diff line change
@@ -37,7 +37,7 @@

@api.model
def _domain_selection(self):
return self.env["agreement"]._domain_selection()

Check warning on line 40 in agreement_rebate/wizards/settlement_create.py

Codecov / codecov/patch

agreement_rebate/wizards/settlement_create.py#L40

Added line #L40 was not covered by tests

def _prepare_agreement_domain(self):
domain = [
@@ -46,10 +46,10 @@
]
settlement_domain = []
if self.date_from:
domain.extend(

Check warning on line 49 in agreement_rebate/wizards/settlement_create.py

Codecov / codecov/patch

agreement_rebate/wizards/settlement_create.py#L49

Added line #L49 was not covered by tests
["|", ("end_date", "=", False), ("end_date", ">=", self.date_from)]
)
settlement_domain.extend([("date_to", ">=", self.date_from)])

Check warning on line 52 in agreement_rebate/wizards/settlement_create.py

Codecov / codecov/patch

agreement_rebate/wizards/settlement_create.py#L52

Added line #L52 was not covered by tests
if self.date_to:
domain.extend([("start_date", "<=", self.date_to)])
settlement_domain.extend([("date_to", "<=", self.date_to)])
@@ -59,8 +59,8 @@
[("line_ids.agreement_id", "in", self.agreement_ids.ids)]
)
elif self.agreement_type_ids:
domain.extend([("agreement_type_id", "in", self.agreement_type_ids.ids)])
settlement_domain.extend(

Check warning on line 63 in agreement_rebate/wizards/settlement_create.py

Codecov / codecov/patch

agreement_rebate/wizards/settlement_create.py#L62-L63

Added lines #L62 - L63 were not covered by tests
[
(
"line_ids.agreement_id.agreement_type_id",
@@ -70,11 +70,11 @@
]
)
else:
domain.extend([("agreement_type_id.domain", "=", self.domain)])

Check warning on line 73 in agreement_rebate/wizards/settlement_create.py

Codecov / codecov/patch

agreement_rebate/wizards/settlement_create.py#L73

Added line #L73 was not covered by tests
if self.discard_settled_agreement:
settlements = self._get_existing_settlement(settlement_domain)
if settlements:
domain.extend(

Check warning on line 77 in agreement_rebate/wizards/settlement_create.py

Codecov / codecov/patch

agreement_rebate/wizards/settlement_create.py#L77

Added line #L77 was not covered by tests
[("id", "not in", settlements.mapped("line_ids.agreement_id").ids)]
)
return domain
@@ -90,11 +90,11 @@
("state", "not in", ["draft", "cancel"]),
]
if self.journal_ids:
domain.extend([("journal_id", "in", self.journal_ids.ids)])

Check warning on line 93 in agreement_rebate/wizards/settlement_create.py

Codecov / codecov/patch

agreement_rebate/wizards/settlement_create.py#L93

Added line #L93 was not covered by tests
else:
domain.extend([("journal_id.type", "=", self.domain)])
if self.date_from:
domain.extend(

Check warning on line 97 in agreement_rebate/wizards/settlement_create.py

Codecov / codecov/patch

agreement_rebate/wizards/settlement_create.py#L97

Added line #L97 was not covered by tests
[
(
"invoice_date",
@@ -126,7 +126,7 @@
)
)
if agreement.end_date:
domain.append(

Check warning on line 129 in agreement_rebate/wizards/settlement_create.py

Codecov / codecov/patch

agreement_rebate/wizards/settlement_create.py#L129

Added line #L129 was not covered by tests
(
"invoice_date",
"<=",
@@ -159,7 +159,7 @@
):
amount = group[self._get_amount_field()] or 0.0
if self.domain == "purchase":
amount = -amount

Check warning on line 162 in agreement_rebate/wizards/settlement_create.py

Codecov / codecov/patch

agreement_rebate/wizards/settlement_create.py#L162

Added line #L162 was not covered by tests
amount += agreement.additional_consumption
amount_section = 0.0
vals = {
@@ -213,12 +213,12 @@

def _get_rebate_discount(self, agreement, amount):
if agreement.rebate_type == "global":
return agreement.rebate_discount

Check warning on line 216 in agreement_rebate/wizards/settlement_create.py

Codecov / codecov/patch

agreement_rebate/wizards/settlement_create.py#L216

Added line #L216 was not covered by tests
if agreement.rebate_type == "section_total":
section = agreement.rebate_section_ids.filtered(

Check warning on line 218 in agreement_rebate/wizards/settlement_create.py

Codecov / codecov/patch

agreement_rebate/wizards/settlement_create.py#L218

Added line #L218 was not covered by tests
lambda s: s.amount_from <= amount <= s.amount_to
)
return section.rebate_discount

Check warning on line 221 in agreement_rebate/wizards/settlement_create.py

Codecov / codecov/patch

agreement_rebate/wizards/settlement_create.py#L221

Added line #L221 was not covered by tests

def _partner_domain(self, agreement):
return [
@@ -260,7 +260,7 @@
or not groups[0]["__count"]
and not agreement.additional_consumption
):
continue

Check warning on line 263 in agreement_rebate/wizards/settlement_create.py

Codecov / codecov/patch

agreement_rebate/wizards/settlement_create.py#L263

Added line #L263 was not covered by tests
for group in groups:
vals = self._prepare_settlement_line(
domain, group, agreement, line=line
@@ -283,11 +283,11 @@
or not groups[0]["__count"]
and not agreement.additional_consumption
):
continue

Check warning on line 286 in agreement_rebate/wizards/settlement_create.py

Codecov / codecov/patch

agreement_rebate/wizards/settlement_create.py#L286

Added line #L286 was not covered by tests
amount = groups and groups[0][self._get_amount_field()] or 0.0
for section in agreement.rebate_section_ids:
if amount < section.amount_to and amount < section.amount_from:
break

Check warning on line 290 in agreement_rebate/wizards/settlement_create.py

Codecov / codecov/patch

agreement_rebate/wizards/settlement_create.py#L290

Added line #L290 was not covered by tests
for group in groups:
vals = self._prepare_settlement_line(
domain, group, agreement, section=section
@@ -308,7 +308,7 @@
or not groups[0]["__count"]
and not agreement.additional_consumption
):
continue

Check warning on line 311 in agreement_rebate/wizards/settlement_create.py

Codecov / codecov/patch

agreement_rebate/wizards/settlement_create.py#L311

Added line #L311 was not covered by tests
for group in groups:
vals = self._prepare_settlement_line(domain, group, agreement)
settlement_dic[key]["lines"].append((0, 0, vals))
@@ -323,7 +323,9 @@
def _filter_settlement_lines(self, settlement_lines):
return [
line
for line in filter(lambda l: l[2]["amount_rebate"] != 0.0, settlement_lines)
for line in filter(
lambda sl: sl[2]["amount_rebate"] != 0.0, settlement_lines
)
]

def _prepare_settlement(self, settlement_lines):
Loading