From 5e227084115842d201b70b178a4525243b97f04d Mon Sep 17 00:00:00 2001 From: Francisco Ivan Anton Prieto Date: Thu, 1 Apr 2021 14:02:43 +0200 Subject: [PATCH] [IMP] contract: black, isort, prettier --- contract/__manifest__.py | 2 +- contract/models/abstract_contract_line.py | 18 +++- contract/models/contract.py | 50 ++++++++--- contract/models/contract_line.py | 52 ++++++++---- contract/models/contract_line_constraints.py | 3 +- contract/models/contract_modification.py | 5 +- contract/models/contract_recurrency_mixin.py | 10 ++- contract/models/contract_tag.py | 4 +- contract/models/res_partner.py | 14 +-- .../static/src/js/contract_portal_tour.js | 2 +- .../src/js/section_and_note_fields_backend.js | 6 +- contract/tests/test_contract.py | 85 +++++++++++++------ contract/tests/test_portal.py | 3 +- .../contract_manually_create_invoice.py | 3 +- requirements.txt | 2 + setup/contract/odoo/addons/contract | 1 + setup/contract/setup.py | 6 ++ 17 files changed, 191 insertions(+), 75 deletions(-) create mode 100644 requirements.txt create mode 120000 setup/contract/odoo/addons/contract create mode 100644 setup/contract/setup.py 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, +)