diff --git a/contract/__manifest__.py b/contract/__manifest__.py
index edb4f4a63..5cc8462b3 100644
--- a/contract/__manifest__.py
+++ b/contract/__manifest__.py
@@ -15,7 +15,7 @@
"category": "Contract Management",
"license": "AGPL-3",
"author": "Tecnativa, ACSONE SA/NV, Odoo Community Association (OCA)",
- "website": "https://github.com/oca/contract",
+ "website": "https://github.com/OCA/contract",
"depends": ["base", "account", "product", "portal"],
"external_dependencies": {"python": ["dateutil"]},
"data": [
diff --git a/contract/models/abstract_contract_line.py b/contract/models/abstract_contract_line.py
index f20870556..b02a56de9 100644
--- a/contract/models/abstract_contract_line.py
+++ b/contract/models/abstract_contract_line.py
@@ -34,7 +34,9 @@ class ContractAbstractContractLine(models.AbstractModel):
inverse="_inverse_price_unit",
)
price_subtotal = fields.Float(
- compute="_compute_price_subtotal", digits="Account", string="Sub Total",
+ compute="_compute_price_subtotal",
+ digits="Account",
+ string="Sub Total",
)
discount = fields.Float(
string="Discount (%)",
@@ -69,13 +71,18 @@ class ContractAbstractContractLine(models.AbstractModel):
copy=True,
)
date_start = fields.Date(
- compute="_compute_date_start", store=True, readonly=False, copy=True,
+ compute="_compute_date_start",
+ store=True,
+ readonly=False,
+ copy=True,
)
last_date_invoiced = fields.Date(string="Last Date Invoiced")
is_canceled = fields.Boolean(string="Canceled", default=False)
is_auto_renew = fields.Boolean(string="Auto Renew", default=False)
auto_renew_interval = fields.Integer(
- default=1, string="Renew Every", help="Renew every (Days/Week/Month/Year)",
+ default=1,
+ string="Renew Every",
+ help="Renew every (Days/Week/Month/Year)",
)
auto_renew_rule_type = fields.Selection(
[
@@ -184,7 +191,10 @@ class ContractAbstractContractLine(models.AbstractModel):
).property_product_pricelist
)
product = line.product_id.with_context(
- quantity=line.env.context.get("contract_line_qty", line.quantity,),
+ quantity=line.env.context.get(
+ "contract_line_qty",
+ line.quantity,
+ ),
pricelist=pricelist.id,
partner=line.contract_id.partner_id.id,
date=line.env.context.get(
diff --git a/contract/models/contract.py b/contract/models/contract.py
index cf4b67336..4f62a7dd1 100644
--- a/contract/models/contract.py
+++ b/contract/models/contract.py
@@ -25,10 +25,16 @@ class ContractContract(models.Model):
"portal.mixin",
]
- active = fields.Boolean(default=True,)
- code = fields.Char(string="Reference",)
+ active = fields.Boolean(
+ default=True,
+ )
+ code = fields.Char(
+ string="Reference",
+ )
group_id = fields.Many2one(
- string="Group", comodel_name="account.analytic.account", ondelete="restrict",
+ string="Group",
+ comodel_name="account.analytic.account",
+ ondelete="restrict",
)
currency_id = fields.Many2one(
compute="_compute_currency_id",
@@ -36,7 +42,10 @@ class ContractContract(models.Model):
comodel_name="res.currency",
string="Currency",
)
- manual_currency_id = fields.Many2one(comodel_name="res.currency", readonly=True,)
+ manual_currency_id = fields.Many2one(
+ comodel_name="res.currency",
+ readonly=True,
+ )
contract_template_id = fields.Many2one(
string="Contract Template", comodel_name="contract.template"
)
@@ -77,7 +86,9 @@ class ContractContract(models.Model):
ondelete="restrict",
)
invoice_partner_id = fields.Many2one(
- string="Invoicing contact", comodel_name="res.partner", ondelete="restrict",
+ string="Invoicing contact",
+ comodel_name="res.partner",
+ ondelete="restrict",
)
partner_id = fields.Many2one(
comodel_name="res.partner", inverse="_inverse_partner_id", required=True
@@ -103,10 +114,16 @@ class ContractContract(models.Model):
tracking=True,
)
terminate_comment = fields.Text(
- string="Termination Comment", readonly=True, copy=False, tracking=True,
+ string="Termination Comment",
+ readonly=True,
+ copy=False,
+ tracking=True,
)
terminate_date = fields.Date(
- string="Termination Date", readonly=True, copy=False, tracking=True,
+ string="Termination Date",
+ readonly=True,
+ copy=False,
+ tracking=True,
)
modification_ids = fields.One2many(
comodel_name="contract.modification",
@@ -198,7 +215,15 @@ class ContractContract(models.Model):
invoices = (
self.env["account.move.line"]
- .search([("contract_line_id", "in", self.contract_line_ids.ids,)])
+ .search(
+ [
+ (
+ "contract_line_id",
+ "in",
+ self.contract_line_ids.ids,
+ )
+ ]
+ )
.mapped("move_id")
)
# we are forced to always search for this for not losing possible <=v11
@@ -221,7 +246,11 @@ class ContractContract(models.Model):
return currency or self.journal_id.currency_id or self.company_id.currency_id
@api.depends(
- "manual_currency_id", "pricelist_id", "partner_id", "journal_id", "company_id",
+ "manual_currency_id",
+ "pricelist_id",
+ "partner_id",
+ "journal_id",
+ "company_id",
)
def _compute_currency_id(self):
for rec in self:
@@ -268,7 +297,8 @@ class ContractContract(models.Model):
contract.date_end = max(date_end)
@api.depends(
- "contract_line_ids.recurring_next_date", "contract_line_ids.is_canceled",
+ "contract_line_ids.recurring_next_date",
+ "contract_line_ids.is_canceled",
)
def _compute_recurring_next_date(self):
for contract in self:
diff --git a/contract/models/contract_line.py b/contract/models/contract_line.py
index 5653869fc..8a785673d 100644
--- a/contract/models/contract_line.py
+++ b/contract/models/contract_line.py
@@ -22,7 +22,9 @@ class ContractLine(models.Model):
]
_order = "sequence,id"
- sequence = fields.Integer(string="Sequence",)
+ sequence = fields.Integer(
+ string="Sequence",
+ )
contract_id = fields.Many2one(
comodel_name="contract.contract",
string="Contract",
@@ -32,10 +34,12 @@ class ContractLine(models.Model):
ondelete="cascade",
)
analytic_account_id = fields.Many2one(
- string="Analytic account", comodel_name="account.analytic.account",
+ string="Analytic account",
+ comodel_name="account.analytic.account",
)
analytic_tag_ids = fields.Many2many(
- comodel_name="account.analytic.tag", string="Analytic Tags",
+ comodel_name="account.analytic.tag",
+ string="Analytic Tags",
)
date_start = fields.Date(required=True)
date_end = fields.Date(compute="_compute_date_end", store=True, readonly=False)
@@ -132,13 +136,16 @@ class ContractLine(models.Model):
self._set_recurrence_field("date_end")
@api.depends(
- "date_end", "termination_notice_rule_type", "termination_notice_interval",
+ "date_end",
+ "termination_notice_rule_type",
+ "termination_notice_interval",
)
def _compute_termination_notice_date(self):
for rec in self:
if rec.date_end:
rec.termination_notice_date = rec.date_end - self.get_relative_delta(
- rec.termination_notice_rule_type, rec.termination_notice_interval,
+ rec.termination_notice_rule_type,
+ rec.termination_notice_interval,
)
else:
rec.termination_notice_date = False
@@ -340,10 +347,10 @@ class ContractLine(models.Model):
@api.constrains("is_auto_renew", "successor_contract_line_id", "date_end")
def _check_allowed(self):
"""
- logical impossible combination:
- * a line with is_auto_renew True should have date_end and
- couldn't have successor_contract_line_id
- * a line without date_end can't have successor_contract_line_id
+ logical impossible combination:
+ * a line with is_auto_renew True should have date_end and
+ couldn't have successor_contract_line_id
+ * a line without date_end can't have successor_contract_line_id
"""
for rec in self:
@@ -412,7 +419,10 @@ class ContractLine(models.Model):
)
@api.onchange(
- "date_start", "is_auto_renew", "auto_renew_rule_type", "auto_renew_interval",
+ "date_start",
+ "is_auto_renew",
+ "auto_renew_rule_type",
+ "auto_renew_interval",
)
def _onchange_is_auto_renew(self):
"""Date end should be auto-computed if a contract line is set to
@@ -420,7 +430,9 @@ class ContractLine(models.Model):
for rec in self.filtered("is_auto_renew"):
if rec.date_start:
rec.date_end = self._get_first_date_end(
- rec.date_start, rec.auto_renew_rule_type, rec.auto_renew_interval,
+ rec.date_start,
+ rec.auto_renew_rule_type,
+ rec.auto_renew_interval,
)
@api.constrains("is_canceled", "is_auto_renew")
@@ -828,7 +840,10 @@ class ContractLine(models.Model):
post_message=False,
)
contract_line |= rec.plan_successor(
- new_date_start, new_date_end, is_auto_renew, post_message=False,
+ new_date_start,
+ new_date_end,
+ is_auto_renew,
+ post_message=False,
)
else:
new_date_start = date_end + relativedelta(days=1)
@@ -847,7 +862,10 @@ class ContractLine(models.Model):
post_message=False,
)
contract_line |= rec.plan_successor(
- new_date_start, new_date_end, is_auto_renew, post_message=False,
+ new_date_start,
+ new_date_end,
+ is_auto_renew,
+ post_message=False,
)
msg = _(
"""Contract line for {product}
@@ -856,7 +874,9 @@ class ContractLine(models.Model):
- Suspension End: {new_date_end}
""".format(
- product=rec.name, new_date_start=date_start, new_date_end=date_end,
+ product=rec.name,
+ new_date_start=date_start,
+ new_date_end=date_end,
)
)
rec.contract_id.message_post(body=msg)
@@ -1017,7 +1037,9 @@ class ContractLine(models.Model):
- End: {new_date_end}
""".format(
- product=rec.name, new_date_start=date_start, new_date_end=date_end,
+ product=rec.name,
+ new_date_start=date_start,
+ new_date_end=date_end,
)
)
rec.contract_id.message_post(body=msg)
diff --git a/contract/models/contract_line_constraints.py b/contract/models/contract_line_constraints.py
index ac7dd7c09..ad0faa69a 100644
--- a/contract/models/contract_line_constraints.py
+++ b/contract/models/contract_line_constraints.py
@@ -28,7 +28,8 @@ Criteria = namedtuple(
],
)
Allowed = namedtuple(
- "Allowed", ["plan_successor", "stop_plan_successor", "stop", "cancel", "uncancel"],
+ "Allowed",
+ ["plan_successor", "stop_plan_successor", "stop", "cancel", "uncancel"],
)
diff --git a/contract/models/contract_modification.py b/contract/models/contract_modification.py
index ee493d0fd..4446b422b 100644
--- a/contract/models/contract_modification.py
+++ b/contract/models/contract_modification.py
@@ -19,7 +19,10 @@ class ContractModification(models.Model):
ondelete="cascade",
index=True,
)
- sent = fields.Boolean(string="Sent", default=False,)
+ sent = fields.Boolean(
+ string="Sent",
+ default=False,
+ )
@api.model_create_multi
def create(self, vals_list):
diff --git a/contract/models/contract_recurrency_mixin.py b/contract/models/contract_recurrency_mixin.py
index cbbcd5a11..c7f7ad0c8 100644
--- a/contract/models/contract_recurrency_mixin.py
+++ b/contract/models/contract_recurrency_mixin.py
@@ -43,7 +43,9 @@ class ContractRecurrencyBasicMixin(models.AbstractModel):
),
)
recurring_interval = fields.Integer(
- default=1, string="Invoice Every", help="Invoice every (Days/Week/Month/Year)",
+ default=1,
+ string="Invoice Every",
+ help="Invoice every (Days/Week/Month/Year)",
)
date_start = fields.Date(string="Date Start")
recurring_next_date = fields.Date(string="Date of Next Invoice")
@@ -80,10 +82,12 @@ class ContractRecurrencyMixin(models.AbstractModel):
)
date_end = fields.Date(string="Date End", index=True)
next_period_date_start = fields.Date(
- string="Next Period Start", compute="_compute_next_period_date_start",
+ string="Next Period Start",
+ compute="_compute_next_period_date_start",
)
next_period_date_end = fields.Date(
- string="Next Period End", compute="_compute_next_period_date_end",
+ string="Next Period End",
+ compute="_compute_next_period_date_end",
)
last_date_invoiced = fields.Date(
string="Last Date Invoiced", readonly=True, copy=False
diff --git a/contract/models/contract_tag.py b/contract/models/contract_tag.py
index 96196fbc7..1083814a4 100644
--- a/contract/models/contract_tag.py
+++ b/contract/models/contract_tag.py
@@ -11,5 +11,7 @@ class ContractTag(models.Model):
name = fields.Char(required=True)
company_id = fields.Many2one(
- "res.company", string="Company", default=lambda self: self.env.company.id,
+ "res.company",
+ string="Company",
+ default=lambda self: self.env.company.id,
)
diff --git a/contract/models/res_partner.py b/contract/models/res_partner.py
index 8d0e3c370..f494ce578 100644
--- a/contract/models/res_partner.py
+++ b/contract/models/res_partner.py
@@ -10,13 +10,17 @@ class ResPartner(models.Model):
_inherit = "res.partner"
sale_contract_count = fields.Integer(
- string="Sale Contracts", compute="_compute_contract_count",
+ string="Sale Contracts",
+ compute="_compute_contract_count",
)
purchase_contract_count = fields.Integer(
- string="Purchase Contracts", compute="_compute_contract_count",
+ string="Purchase Contracts",
+ compute="_compute_contract_count",
)
contract_ids = fields.One2many(
- comodel_name="contract.contract", inverse_name="partner_id", string="Contracts",
+ comodel_name="contract.contract",
+ inverse_name="partner_id",
+ string="Contracts",
)
def _get_partner_contract_domain(self):
@@ -49,8 +53,8 @@ class ResPartner(models.Model):
)
def act_show_contract(self):
- """ This opens contract view
- @return: the contract view
+ """This opens contract view
+ @return: the contract view
"""
self.ensure_one()
contract_type = self._context.get("contract_type")
diff --git a/contract/static/src/js/contract_portal_tour.js b/contract/static/src/js/contract_portal_tour.js
index fd6643a2f..72bcbd1dd 100644
--- a/contract/static/src/js/contract_portal_tour.js
+++ b/contract/static/src/js/contract_portal_tour.js
@@ -1,4 +1,4 @@
-odoo.define("contract.tour", function(require) {
+odoo.define("contract.tour", function (require) {
"use strict";
var tour = require("web_tour.tour");
diff --git a/contract/static/src/js/section_and_note_fields_backend.js b/contract/static/src/js/section_and_note_fields_backend.js
index 127889636..3d2e25460 100644
--- a/contract/static/src/js/section_and_note_fields_backend.js
+++ b/contract/static/src/js/section_and_note_fields_backend.js
@@ -8,7 +8,7 @@ and this condition is met, then an extra space appears in the rows
corresponding to the sections and lines.
This js was written to deal with that problem, but a solution based on
this can be applied directly to Odoo*/
-odoo.define("contract.section_and_note_backend", function(require) {
+odoo.define("contract.section_and_note_backend", function (require) {
"use strict";
require("account.section_and_note_backend");
@@ -16,11 +16,11 @@ odoo.define("contract.section_and_note_backend", function(require) {
var section_and_note_one2many = fieldRegistry.get("section_and_note_one2many");
section_and_note_one2many.include({
- _getRenderer: function() {
+ _getRenderer: function () {
var result = this._super.apply(this, arguments);
if (this.view.arch.tag === "tree") {
result.include({
- _renderBodyCell: function(record) {
+ _renderBodyCell: function (record) {
var $cell = this._super.apply(this, arguments);
var isSection = record.data.display_type === "line_section";
diff --git a/contract/tests/test_contract.py b/contract/tests/test_contract.py
index 2f175a185..140a6cdcc 100644
--- a/contract/tests/test_contract.py
+++ b/contract/tests/test_contract.py
@@ -539,7 +539,8 @@ class TestContract(TestContractBase):
self.contract.contract_template_id = self.template
self.assertFalse(
- self.contract.contract_line_ids, "Recurring lines were not removed.",
+ self.contract.contract_line_ids,
+ "Recurring lines were not removed.",
)
self.contract.contract_template_id = self.template
self.contract._onchange_contract_template_id()
@@ -1627,7 +1628,8 @@ class TestContract(TestContractBase):
self.assertFalse(new_line.is_canceled)
self.assertEqual(self.acct_line.successor_contract_line_id, new_line)
self.assertEqual(
- new_line.recurring_next_date, suspension_end + relativedelta(days=1),
+ new_line.recurring_next_date,
+ suspension_end + relativedelta(days=1),
)
def test_cancel_uncancel_with_predecessor_has_successor(self):
@@ -1737,7 +1739,8 @@ class TestContract(TestContractBase):
[("contract_line_id", "in", contracts.mapped("contract_line_ids").ids)]
)
self.assertEqual(
- len(contracts.mapped("contract_line_ids")), len(invoice_lines),
+ len(contracts.mapped("contract_line_ids")),
+ len(invoice_lines),
)
def test_contract_manually_create_invoice(self):
@@ -1764,7 +1767,8 @@ class TestContract(TestContractBase):
[("contract_line_id", "in", contracts.mapped("contract_line_ids").ids)]
)
self.assertEqual(
- len(contracts.mapped("contract_line_ids")), len(invoice_lines),
+ len(contracts.mapped("contract_line_ids")),
+ len(invoice_lines),
)
invoices = self.env["account.move"].search(action["domain"])
self.assertFalse(invoice_lines.mapped("move_id") - invoices)
@@ -1776,19 +1780,22 @@ class TestContract(TestContractBase):
self.acct_line.recurring_rule_type = "monthlylastday"
self.acct_line.date_end = "2018-03-15"
first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
- self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date,
+ self.acct_line.last_date_invoiced,
+ self.acct_line.recurring_next_date,
)
self.assertEqual(first, to_date("2018-01-05"))
self.assertEqual(last, to_date("2018-01-31"))
self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
- self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date,
+ self.acct_line.last_date_invoiced,
+ self.acct_line.recurring_next_date,
)
self.assertEqual(first, to_date("2018-02-01"))
self.assertEqual(last, to_date("2018-02-28"))
self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
- self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date,
+ self.acct_line.last_date_invoiced,
+ self.acct_line.recurring_next_date,
)
self.assertEqual(first, to_date("2018-03-01"))
self.assertEqual(last, to_date("2018-03-15"))
@@ -1800,7 +1807,8 @@ class TestContract(TestContractBase):
self.acct_line.recurring_rule_type = "monthlylastday"
self.acct_line.date_end = "2018-03-15"
first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
- self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date,
+ self.acct_line.last_date_invoiced,
+ self.acct_line.recurring_next_date,
)
self.assertEqual(first, to_date("2018-01-05"))
self.assertEqual(last, to_date("2018-01-31"))
@@ -1808,7 +1816,8 @@ class TestContract(TestContractBase):
self.assertEqual(self.acct_line.recurring_next_date, to_date("2018-01-05"))
self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
- self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date,
+ self.acct_line.last_date_invoiced,
+ self.acct_line.recurring_next_date,
)
self.assertEqual(first, to_date("2018-02-01"))
self.assertEqual(last, to_date("2018-02-28"))
@@ -1817,7 +1826,8 @@ class TestContract(TestContractBase):
self.assertEqual(self.acct_line.last_date_invoiced, to_date("2018-01-31"))
self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
- self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date,
+ self.acct_line.last_date_invoiced,
+ self.acct_line.recurring_next_date,
)
self.assertEqual(first, to_date("2018-03-01"))
self.assertEqual(last, to_date("2018-03-15"))
@@ -1826,7 +1836,8 @@ class TestContract(TestContractBase):
self.assertEqual(self.acct_line.last_date_invoiced, to_date("2018-02-28"))
self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
- self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date,
+ self.acct_line.last_date_invoiced,
+ self.acct_line.recurring_next_date,
)
self.assertFalse(first)
self.assertFalse(last)
@@ -1841,13 +1852,15 @@ class TestContract(TestContractBase):
self.acct_line.date_end = "2018-08-15"
self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
- self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date,
+ self.acct_line.last_date_invoiced,
+ self.acct_line.recurring_next_date,
)
self.assertEqual(first, to_date("2018-02-05"))
self.assertEqual(last, to_date("2018-03-04"))
self.acct_line.recurring_next_date = "2018-06-05"
first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
- self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date,
+ self.acct_line.last_date_invoiced,
+ self.acct_line.recurring_next_date,
)
self.assertEqual(first, to_date("2018-02-05"))
self.assertEqual(last, to_date("2018-07-04"))
@@ -1859,13 +1872,15 @@ class TestContract(TestContractBase):
self.acct_line.date_end = "2018-08-15"
self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
- self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date,
+ self.acct_line.last_date_invoiced,
+ self.acct_line.recurring_next_date,
)
self.assertEqual(first, to_date("2018-02-05"))
self.assertEqual(last, to_date("2018-03-04"))
self.acct_line.recurring_next_date = "2018-06-05"
first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
- self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date,
+ self.acct_line.last_date_invoiced,
+ self.acct_line.recurring_next_date,
)
self.assertEqual(first, to_date("2018-02-05"))
self.assertEqual(last, to_date("2018-06-04"))
@@ -1876,19 +1891,22 @@ class TestContract(TestContractBase):
self.acct_line.recurring_rule_type = "monthly"
self.acct_line.date_end = "2018-03-15"
first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
- self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date,
+ self.acct_line.last_date_invoiced,
+ self.acct_line.recurring_next_date,
)
self.assertEqual(first, to_date("2018-01-05"))
self.assertEqual(last, to_date("2018-02-04"))
self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
- self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date,
+ self.acct_line.last_date_invoiced,
+ self.acct_line.recurring_next_date,
)
self.assertEqual(first, to_date("2018-02-05"))
self.assertEqual(last, to_date("2018-03-04"))
self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
- self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date,
+ self.acct_line.last_date_invoiced,
+ self.acct_line.recurring_next_date,
)
self.assertEqual(first, to_date("2018-03-05"))
self.assertEqual(last, to_date("2018-03-15"))
@@ -1899,19 +1917,22 @@ class TestContract(TestContractBase):
self.acct_line.recurring_rule_type = "monthly"
self.acct_line.date_end = "2018-03-15"
first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
- self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date,
+ self.acct_line.last_date_invoiced,
+ self.acct_line.recurring_next_date,
)
self.assertEqual(first, to_date("2018-01-05"))
self.assertEqual(last, to_date("2018-02-04"))
self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
- self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date,
+ self.acct_line.last_date_invoiced,
+ self.acct_line.recurring_next_date,
)
self.assertEqual(first, to_date("2018-02-05"))
self.assertEqual(last, to_date("2018-03-04"))
self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
- self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date,
+ self.acct_line.last_date_invoiced,
+ self.acct_line.recurring_next_date,
)
self.assertEqual(first, to_date("2018-03-05"))
self.assertEqual(last, to_date("2018-03-15"))
@@ -1922,19 +1943,22 @@ class TestContract(TestContractBase):
self.acct_line.recurring_rule_type = "yearly"
self.acct_line.date_end = "2020-03-15"
first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
- self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date,
+ self.acct_line.last_date_invoiced,
+ self.acct_line.recurring_next_date,
)
self.assertEqual(first, to_date("2018-01-05"))
self.assertEqual(last, to_date("2019-01-04"))
self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
- self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date,
+ self.acct_line.last_date_invoiced,
+ self.acct_line.recurring_next_date,
)
self.assertEqual(first, to_date("2019-01-05"))
self.assertEqual(last, to_date("2020-01-04"))
self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
- self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date,
+ self.acct_line.last_date_invoiced,
+ self.acct_line.recurring_next_date,
)
self.assertEqual(first, to_date("2020-01-05"))
self.assertEqual(last, to_date("2020-03-15"))
@@ -1945,19 +1969,22 @@ class TestContract(TestContractBase):
self.acct_line.recurring_rule_type = "yearly"
self.acct_line.date_end = "2020-03-15"
first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
- self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date,
+ self.acct_line.last_date_invoiced,
+ self.acct_line.recurring_next_date,
)
self.assertEqual(first, to_date("2018-01-05"))
self.assertEqual(last, to_date("2019-01-04"))
self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
- self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date,
+ self.acct_line.last_date_invoiced,
+ self.acct_line.recurring_next_date,
)
self.assertEqual(first, to_date("2019-01-05"))
self.assertEqual(last, to_date("2020-01-04"))
self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
- self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date,
+ self.acct_line.last_date_invoiced,
+ self.acct_line.recurring_next_date,
)
self.assertEqual(first, to_date("2020-01-05"))
self.assertEqual(last, to_date("2020-03-15"))
@@ -2302,7 +2329,9 @@ class TestContract(TestContractBase):
group_can_terminate_contract.users |= self.env.user
with self.assertRaises(ValidationError):
self.contract._terminate_contract(
- self.terminate_reason, "terminate_comment", to_date("2018-02-13"),
+ self.terminate_reason,
+ "terminate_comment",
+ to_date("2018-02-13"),
)
def test_recurrency_propagation(self):
diff --git a/contract/tests/test_portal.py b/contract/tests/test_portal.py
index 22e4a33c9..bfd2706d4 100644
--- a/contract/tests/test_portal.py
+++ b/contract/tests/test_portal.py
@@ -24,7 +24,8 @@ class TestContractPortal(odoo.tests.HttpCase):
self.authenticate("portal", "portal")
http.root.session_store.save(self.session)
url_contract = "/my/contracts/{}?access_token={}".format(
- contract.id, contract.access_token,
+ contract.id,
+ contract.access_token,
)
self.assertEqual(self.url_open(url=url_contract).status_code, 200)
contract.message_unsubscribe(partner_ids=user_portal.partner_id.ids)
diff --git a/contract/wizards/contract_manually_create_invoice.py b/contract/wizards/contract_manually_create_invoice.py
index 653632949..316297001 100644
--- a/contract/wizards/contract_manually_create_invoice.py
+++ b/contract/wizards/contract_manually_create_invoice.py
@@ -14,7 +14,8 @@ class ContractManuallyCreateInvoice(models.TransientModel):
compute="_compute_contract_to_invoice_ids"
)
contract_to_invoice_ids = fields.Many2many(
- comodel_name="contract.contract", compute="_compute_contract_to_invoice_ids",
+ comodel_name="contract.contract",
+ compute="_compute_contract_to_invoice_ids",
)
contract_type = fields.Selection(
selection=[("sale", "Customer"), ("purchase", "Supplier")],
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 000000000..7d41f1be0
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,2 @@
+# generated from manifests external_dependencies
+python-dateutil
diff --git a/setup/contract/odoo/addons/contract b/setup/contract/odoo/addons/contract
new file mode 120000
index 000000000..28176509d
--- /dev/null
+++ b/setup/contract/odoo/addons/contract
@@ -0,0 +1 @@
+../../../../contract
\ No newline at end of file
diff --git a/setup/contract/setup.py b/setup/contract/setup.py
new file mode 100644
index 000000000..28c57bb64
--- /dev/null
+++ b/setup/contract/setup.py
@@ -0,0 +1,6 @@
+import setuptools
+
+setuptools.setup(
+ setup_requires=['setuptools-odoo'],
+ odoo_addon=True,
+)