- Subtotal
+ Subtotal
-
@@ -112,5 +164,4 @@
-
diff --git a/contract/security/contract_security.xml b/contract/security/contract_security.xml
index ee648bbea..796169942 100644
--- a/contract/security/contract_security.xml
+++ b/contract/security/contract_security.xml
@@ -1,31 +1,34 @@
-
Contract contract multi-company
-
-
- ['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id])]
+
+
+ ['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id])]
-
Contract line multi-company
-
-
- ['|', ('contract_id.company_id', '=', False), ('contract_id.company_id', 'child_of', [user.company_id.id])]
+
+
+ ['|', ('contract_id.company_id', '=', False), ('contract_id.company_id', 'child_of', [user.company_id.id])]
-
Contract template multi-company
-
-
- ['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id])]
+
+
+ ['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id])]
-
Contract template line multi-company
-
-
- ['|', ('contract_id.company_id', '=', False), ('contract_id.company_id', 'child_of', [user.company_id.id])]
+
+
+ ['|', ('contract_id.company_id', '=', False), ('contract_id.company_id', 'child_of', [user.company_id.id])]
-
diff --git a/contract/security/contract_tag.xml b/contract/security/contract_tag.xml
index 8866afaee..459c0e009 100644
--- a/contract/security/contract_tag.xml
+++ b/contract/security/contract_tag.xml
@@ -1,23 +1,21 @@
-
+
-
-
contract.tag access
-
-
-
-
-
-
+
+
+
+
+
+
-
Contract tag multi-company
-
- ['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id])]
+
+ ['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id])]
-
diff --git a/contract/security/contract_terminate_reason.xml b/contract/security/contract_terminate_reason.xml
index b34cd9089..5da45af92 100644
--- a/contract/security/contract_terminate_reason.xml
+++ b/contract/security/contract_terminate_reason.xml
@@ -1,27 +1,23 @@
-
+
-
-
contract.terminate.reason access manager
-
-
-
-
-
-
+
+
+
+
+
+
-
contract.terminate.reason access user
-
-
-
-
-
-
+
+
+
+
+
+
-
diff --git a/contract/security/groups.xml b/contract/security/groups.xml
index a954b2a21..428a1b783 100644
--- a/contract/security/groups.xml
+++ b/contract/security/groups.xml
@@ -1,12 +1,9 @@
-
+
-
-
Contract: Can Terminate Contracts
-
+
-
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 ff63ecf74..1ad69ad94 100644
--- a/contract/static/src/js/section_and_note_fields_backend.js
+++ b/contract/static/src/js/section_and_note_fields_backend.js
@@ -2,37 +2,37 @@
* License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
*/
/*
- If in the sub-tree view where the sections and notes are to be used
-there are fields that have defined in the XML attrs = {'invisible': ....}
-and this condition is met, then an extra space appears in the rows
+ If in the sub-tree view where the sections and notes are to be used
+there are fields that have defined in the XML attrs = {'invisible': ....}
+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 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";
- var fieldRegistry = require('web.field_registry');
- var section_and_note_one2many = fieldRegistry.get('section_and_note_one2many');
+ var fieldRegistry = require("web.field_registry");
+ 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') {
+ if (this.view.arch.tag === "tree") {
result.include({
- _renderBodyCell: function (record, node, index, options) {
+ _renderBodyCell: function(record, node, index, options) {
var $cell = this._super.apply(this, arguments);
- var isSection = record.data.display_type === 'line_section';
- var isNote = record.data.display_type === 'line_note';
+ var isSection = record.data.display_type === "line_section";
+ var isNote = record.data.display_type === "line_note";
if (isSection || isNote) {
- $cell.removeClass('o_invisible_modifier');
+ $cell.removeClass("o_invisible_modifier");
}
return $cell;
- }
- })
+ },
+ });
}
- return result
+ return result;
},
});
});
diff --git a/contract/tests/test_contract.py b/contract/tests/test_contract.py
index c795e1eff..e3e6b0524 100644
--- a/contract/tests/test_contract.py
+++ b/contract/tests/test_contract.py
@@ -4,9 +4,11 @@
from collections import namedtuple
from datetime import timedelta
+
from dateutil.relativedelta import relativedelta
+
from odoo import fields
-from odoo.exceptions import ValidationError, UserError
+from odoo.exceptions import UserError, ValidationError
from odoo.tests import common
@@ -19,107 +21,105 @@ class TestContractBase(common.SavepointCase):
def setUpClass(cls):
super().setUpClass()
cls.today = fields.Date.today()
- cls.pricelist = cls.env['product.pricelist'].create({
- 'name': 'pricelist for contract test',
- })
- cls.partner = cls.env['res.partner'].create({
- 'name': 'partner test contract',
- 'property_product_pricelist': cls.pricelist.id,
- })
- cls.product_1 = cls.env.ref('product.product_product_1')
- cls.product_2 = cls.env.ref('product.product_product_2')
- cls.product_1.taxes_id += cls.env['account.tax'].search(
- [('type_tax_use', '=', 'sale')], limit=1
+ cls.pricelist = cls.env["product.pricelist"].create(
+ {"name": "pricelist for contract test",}
)
- cls.product_1.description_sale = 'Test description sale'
+ cls.partner = cls.env["res.partner"].create(
+ {
+ "name": "partner test contract",
+ "property_product_pricelist": cls.pricelist.id,
+ }
+ )
+ cls.product_1 = cls.env.ref("product.product_product_1")
+ cls.product_2 = cls.env.ref("product.product_product_2")
+ cls.product_1.taxes_id += cls.env["account.tax"].search(
+ [("type_tax_use", "=", "sale")], limit=1
+ )
+ cls.product_1.description_sale = "Test description sale"
cls.line_template_vals = {
- 'product_id': cls.product_1.id,
- 'name': 'Services from #START# to #END#',
- 'quantity': 1,
- 'uom_id': cls.product_1.uom_id.id,
- 'price_unit': 100,
- 'discount': 50,
- 'recurring_rule_type': 'yearly',
- 'recurring_interval': 1,
+ "product_id": cls.product_1.id,
+ "name": "Services from #START# to #END#",
+ "quantity": 1,
+ "uom_id": cls.product_1.uom_id.id,
+ "price_unit": 100,
+ "discount": 50,
+ "recurring_rule_type": "yearly",
+ "recurring_interval": 1,
}
cls.section_template_vals = {
- 'display_type': 'line_section',
- 'name': 'Test section',
+ "display_type": "line_section",
+ "name": "Test section",
}
cls.template_vals = {
- 'name': 'Test Contract Template',
- 'contract_line_ids': [
+ "name": "Test Contract Template",
+ "contract_line_ids": [
(0, 0, cls.section_template_vals),
(0, 0, cls.line_template_vals),
],
}
- cls.template = cls.env['contract.template'].create(
- cls.template_vals
- )
+ cls.template = cls.env["contract.template"].create(cls.template_vals)
# For being sure of the applied price
- cls.env['product.pricelist.item'].create(
+ cls.env["product.pricelist.item"].create(
{
- 'pricelist_id': cls.partner.property_product_pricelist.id,
- 'product_id': cls.product_1.id,
- 'compute_price': 'formula',
- 'base': 'list_price',
+ "pricelist_id": cls.partner.property_product_pricelist.id,
+ "product_id": cls.product_1.id,
+ "compute_price": "formula",
+ "base": "list_price",
}
)
- cls.contract = cls.env['contract.contract'].create(
+ cls.contract = cls.env["contract.contract"].create(
{
- 'name': 'Test Contract',
- 'partner_id': cls.partner.id,
- 'pricelist_id': cls.partner.property_product_pricelist.id,
+ "name": "Test Contract",
+ "partner_id": cls.partner.id,
+ "pricelist_id": cls.partner.property_product_pricelist.id,
}
)
- cls.contract2 = cls.env['contract.contract'].create(
+ cls.contract2 = cls.env["contract.contract"].create(
{
- 'name': 'Test Contract 2',
- 'partner_id': cls.partner.id,
- 'pricelist_id': cls.partner.property_product_pricelist.id,
- 'contract_type': 'purchase',
- 'contract_line_ids': [
+ "name": "Test Contract 2",
+ "partner_id": cls.partner.id,
+ "pricelist_id": cls.partner.property_product_pricelist.id,
+ "contract_type": "purchase",
+ "contract_line_ids": [
(
0,
0,
{
- 'product_id': cls.product_1.id,
- 'name': 'Services from #START# to #END#',
- 'quantity': 1,
- 'uom_id': cls.product_1.uom_id.id,
- 'price_unit': 100,
- 'discount': 50,
- 'recurring_rule_type': 'monthly',
- 'recurring_interval': 1,
- 'date_start': '2018-02-15',
- 'recurring_next_date': '2018-02-22',
+ "product_id": cls.product_1.id,
+ "name": "Services from #START# to #END#",
+ "quantity": 1,
+ "uom_id": cls.product_1.uom_id.id,
+ "price_unit": 100,
+ "discount": 50,
+ "recurring_rule_type": "monthly",
+ "recurring_interval": 1,
+ "date_start": "2018-02-15",
+ "recurring_next_date": "2018-02-22",
},
)
],
}
)
cls.line_vals = {
- 'contract_id': cls.contract.id,
- 'product_id': cls.product_1.id,
- 'name': 'Services from #START# to #END#',
- 'quantity': 1,
- 'uom_id': cls.product_1.uom_id.id,
- 'price_unit': 100,
- 'discount': 50,
- 'recurring_rule_type': 'monthly',
- 'recurring_interval': 1,
- 'date_start': '2018-01-01',
- 'recurring_next_date': '2018-01-15',
- 'is_auto_renew': False,
+ "contract_id": cls.contract.id,
+ "product_id": cls.product_1.id,
+ "name": "Services from #START# to #END#",
+ "quantity": 1,
+ "uom_id": cls.product_1.uom_id.id,
+ "price_unit": 100,
+ "discount": 50,
+ "recurring_rule_type": "monthly",
+ "recurring_interval": 1,
+ "date_start": "2018-01-01",
+ "recurring_next_date": "2018-01-15",
+ "is_auto_renew": False,
}
- cls.acct_line = cls.env['contract.line'].create(
- cls.line_vals
- )
+ cls.acct_line = cls.env["contract.line"].create(cls.line_vals)
cls.acct_line.product_id.is_auto_renew = True
cls.contract.company_id.create_new_line_at_contract_line_renew = True
- cls.terminate_reason = cls.env['contract.terminate.reason'].create({
- 'name': 'terminate_reason'
- })
+ cls.terminate_reason = cls.env["contract.terminate.reason"].create(
+ {"name": "terminate_reason"}
+ )
class TestContract(TestContractBase):
@@ -127,15 +127,15 @@ class TestContract(TestContractBase):
if overrides is None:
overrides = {}
vals = self.line_vals.copy()
- del vals['contract_id']
- del vals['date_start']
- vals['contract_id'] = self.template.id
+ del vals["contract_id"]
+ del vals["date_start"]
+ vals["contract_id"] = self.template.id
vals.update(overrides)
- return self.env['contract.template.line'].create(vals)
+ return self.env["contract.template.line"].create(vals)
def test_check_discount(self):
with self.assertRaises(ValidationError):
- self.acct_line.write({'discount': 120})
+ self.acct_line.write({"discount": 120})
def test_automatic_price(self):
self.acct_line.automatic_price = True
@@ -152,214 +152,172 @@ class TestContract(TestContractBase):
self.assertEqual(self.acct_line.price_unit, 10)
def test_contract(self):
- recurring_next_date = to_date('2018-02-15')
+ recurring_next_date = to_date("2018-02-15")
self.assertAlmostEqual(self.acct_line.price_subtotal, 50.0)
res = self.acct_line._onchange_product_id()
- self.assertIn('uom_id', res['domain'])
+ self.assertIn("uom_id", res["domain"])
self.acct_line.price_unit = 100.0
self.contract.partner_id = self.partner.id
self.contract.recurring_create_invoice()
self.invoice_monthly = self.contract._get_related_invoices()
self.assertTrue(self.invoice_monthly)
- self.assertEqual(
- self.acct_line.recurring_next_date, recurring_next_date
- )
+ self.assertEqual(self.acct_line.recurring_next_date, recurring_next_date)
self.inv_line = self.invoice_monthly.invoice_line_ids[0]
self.assertTrue(self.inv_line.invoice_line_tax_ids)
self.assertAlmostEqual(self.inv_line.price_subtotal, 50.0)
self.assertEqual(self.contract.user_id, self.invoice_monthly.user_id)
def test_contract_recurring_next_date(self):
- recurring_next_date = to_date('2018-01-15')
- self.assertEqual(
- self.contract.recurring_next_date, recurring_next_date
- )
- contract_line = self.acct_line.copy(
- {'recurring_next_date': '2018-01-14'}
- )
- recurring_next_date = to_date('2018-01-14')
- self.assertEqual(
- self.contract.recurring_next_date, recurring_next_date
- )
+ recurring_next_date = to_date("2018-01-15")
+ self.assertEqual(self.contract.recurring_next_date, recurring_next_date)
+ contract_line = self.acct_line.copy({"recurring_next_date": "2018-01-14"})
+ recurring_next_date = to_date("2018-01-14")
+ self.assertEqual(self.contract.recurring_next_date, recurring_next_date)
contract_line.cancel()
- recurring_next_date = to_date('2018-01-15')
- self.assertEqual(
- self.contract.recurring_next_date, recurring_next_date
- )
+ recurring_next_date = to_date("2018-01-15")
+ self.assertEqual(self.contract.recurring_next_date, recurring_next_date)
def test_contract_daily(self):
- recurring_next_date = to_date('2018-02-23')
- last_date_invoiced = to_date('2018-02-22')
- self.acct_line.recurring_next_date = '2018-02-22'
- self.acct_line.recurring_rule_type = 'daily'
+ recurring_next_date = to_date("2018-02-23")
+ last_date_invoiced = to_date("2018-02-22")
+ self.acct_line.recurring_next_date = "2018-02-22"
+ self.acct_line.recurring_rule_type = "daily"
self.contract.pricelist_id = False
self.contract.recurring_create_invoice()
invoice_daily = self.contract._get_related_invoices()
self.assertTrue(invoice_daily)
- self.assertEqual(
- self.acct_line.recurring_next_date, recurring_next_date
- )
+ self.assertEqual(self.acct_line.recurring_next_date, recurring_next_date)
self.assertEqual(self.acct_line.last_date_invoiced, last_date_invoiced)
def test_contract_weekly_post_paid(self):
- recurring_next_date = to_date('2018-03-01')
- last_date_invoiced = to_date('2018-02-21')
- self.acct_line.recurring_next_date = '2018-02-22'
- self.acct_line.recurring_rule_type = 'weekly'
- self.acct_line.recurring_invoicing_type = 'post-paid'
+ recurring_next_date = to_date("2018-03-01")
+ last_date_invoiced = to_date("2018-02-21")
+ self.acct_line.recurring_next_date = "2018-02-22"
+ self.acct_line.recurring_rule_type = "weekly"
+ self.acct_line.recurring_invoicing_type = "post-paid"
self.contract.recurring_create_invoice()
invoices_weekly = self.contract._get_related_invoices()
self.assertTrue(invoices_weekly)
- self.assertEqual(
- self.acct_line.recurring_next_date, recurring_next_date
- )
+ self.assertEqual(self.acct_line.recurring_next_date, recurring_next_date)
self.assertEqual(self.acct_line.last_date_invoiced, last_date_invoiced)
def test_contract_weekly_pre_paid(self):
- recurring_next_date = to_date('2018-03-01')
- last_date_invoiced = to_date('2018-02-28')
- self.acct_line.recurring_next_date = '2018-02-22'
- self.acct_line.recurring_rule_type = 'weekly'
- self.acct_line.recurring_invoicing_type = 'pre-paid'
+ recurring_next_date = to_date("2018-03-01")
+ last_date_invoiced = to_date("2018-02-28")
+ self.acct_line.recurring_next_date = "2018-02-22"
+ self.acct_line.recurring_rule_type = "weekly"
+ self.acct_line.recurring_invoicing_type = "pre-paid"
self.contract.recurring_create_invoice()
invoices_weekly = self.contract._get_related_invoices()
self.assertTrue(invoices_weekly)
- self.assertEqual(
- self.acct_line.recurring_next_date, recurring_next_date
- )
+ self.assertEqual(self.acct_line.recurring_next_date, recurring_next_date)
self.assertEqual(self.acct_line.last_date_invoiced, last_date_invoiced)
def test_contract_yearly_post_paid(self):
- recurring_next_date = to_date('2019-02-22')
- last_date_invoiced = to_date('2018-02-21')
- self.acct_line.recurring_next_date = '2018-02-22'
- self.acct_line.recurring_rule_type = 'yearly'
- self.acct_line.recurring_invoicing_type = 'post-paid'
+ recurring_next_date = to_date("2019-02-22")
+ last_date_invoiced = to_date("2018-02-21")
+ self.acct_line.recurring_next_date = "2018-02-22"
+ self.acct_line.recurring_rule_type = "yearly"
+ self.acct_line.recurring_invoicing_type = "post-paid"
self.contract.recurring_create_invoice()
invoices_weekly = self.contract._get_related_invoices()
self.assertTrue(invoices_weekly)
- self.assertEqual(
- self.acct_line.recurring_next_date, recurring_next_date
- )
+ self.assertEqual(self.acct_line.recurring_next_date, recurring_next_date)
self.assertEqual(self.acct_line.last_date_invoiced, last_date_invoiced)
def test_contract_yearly_pre_paid(self):
- recurring_next_date = to_date('2019-02-22')
- last_date_invoiced = to_date('2019-02-21')
- self.acct_line.date_end = '2020-02-22'
- self.acct_line.recurring_next_date = '2018-02-22'
- self.acct_line.recurring_rule_type = 'yearly'
- self.acct_line.recurring_invoicing_type = 'pre-paid'
+ recurring_next_date = to_date("2019-02-22")
+ last_date_invoiced = to_date("2019-02-21")
+ self.acct_line.date_end = "2020-02-22"
+ self.acct_line.recurring_next_date = "2018-02-22"
+ self.acct_line.recurring_rule_type = "yearly"
+ self.acct_line.recurring_invoicing_type = "pre-paid"
self.contract.recurring_create_invoice()
invoices_weekly = self.contract._get_related_invoices()
self.assertTrue(invoices_weekly)
- self.assertEqual(
- self.acct_line.recurring_next_date, recurring_next_date
- )
+ self.assertEqual(self.acct_line.recurring_next_date, recurring_next_date)
self.assertEqual(self.acct_line.last_date_invoiced, last_date_invoiced)
def test_contract_monthly_lastday(self):
- recurring_next_date = to_date('2018-02-28')
- last_date_invoiced = to_date('2018-02-22')
- self.acct_line.recurring_next_date = '2018-02-22'
- self.acct_line.recurring_invoicing_type = 'post-paid'
- self.acct_line.recurring_rule_type = 'monthlylastday'
+ recurring_next_date = to_date("2018-02-28")
+ last_date_invoiced = to_date("2018-02-22")
+ self.acct_line.recurring_next_date = "2018-02-22"
+ self.acct_line.recurring_invoicing_type = "post-paid"
+ self.acct_line.recurring_rule_type = "monthlylastday"
self.contract.recurring_create_invoice()
invoices_monthly_lastday = self.contract._get_related_invoices()
self.assertTrue(invoices_monthly_lastday)
- self.assertEqual(
- self.acct_line.recurring_next_date, recurring_next_date
- )
+ self.assertEqual(self.acct_line.recurring_next_date, recurring_next_date)
self.assertEqual(self.acct_line.last_date_invoiced, last_date_invoiced)
def test_contract_quarterly_pre_paid(self):
- recurring_next_date = to_date('2018-05-22')
- last_date_invoiced = to_date('2018-05-21')
- self.acct_line.date_end = '2020-02-22'
- self.acct_line.recurring_next_date = '2018-02-22'
- self.acct_line.recurring_rule_type = 'quarterly'
- self.acct_line.recurring_invoicing_type = 'pre-paid'
+ recurring_next_date = to_date("2018-05-22")
+ last_date_invoiced = to_date("2018-05-21")
+ self.acct_line.date_end = "2020-02-22"
+ self.acct_line.recurring_next_date = "2018-02-22"
+ self.acct_line.recurring_rule_type = "quarterly"
+ self.acct_line.recurring_invoicing_type = "pre-paid"
self.contract.recurring_create_invoice()
invoices_weekly = self.contract._get_related_invoices()
self.assertTrue(invoices_weekly)
- self.assertEqual(
- self.acct_line.recurring_next_date, recurring_next_date
- )
+ self.assertEqual(self.acct_line.recurring_next_date, recurring_next_date)
self.assertEqual(self.acct_line.last_date_invoiced, last_date_invoiced)
def test_contract_quarterly_post_paid(self):
- recurring_next_date = to_date('2018-05-22')
- last_date_invoiced = to_date('2018-02-21')
- self.acct_line.date_end = '2020-02-22'
- self.acct_line.recurring_next_date = '2018-02-22'
- self.acct_line.recurring_rule_type = 'quarterly'
- self.acct_line.recurring_invoicing_type = 'post-paid'
+ recurring_next_date = to_date("2018-05-22")
+ last_date_invoiced = to_date("2018-02-21")
+ self.acct_line.date_end = "2020-02-22"
+ self.acct_line.recurring_next_date = "2018-02-22"
+ self.acct_line.recurring_rule_type = "quarterly"
+ self.acct_line.recurring_invoicing_type = "post-paid"
self.contract.recurring_create_invoice()
invoices_weekly = self.contract._get_related_invoices()
self.assertTrue(invoices_weekly)
- self.assertEqual(
- self.acct_line.recurring_next_date, recurring_next_date
- )
+ self.assertEqual(self.acct_line.recurring_next_date, recurring_next_date)
self.assertEqual(self.acct_line.last_date_invoiced, last_date_invoiced)
def test_contract_semesterly_pre_paid(self):
- recurring_next_date = to_date('2018-08-22')
- last_date_invoiced = to_date('2018-08-21')
- self.acct_line.date_end = '2020-02-22'
- self.acct_line.recurring_next_date = '2018-02-22'
- self.acct_line.recurring_rule_type = 'semesterly'
- self.acct_line.recurring_invoicing_type = 'pre-paid'
+ recurring_next_date = to_date("2018-08-22")
+ last_date_invoiced = to_date("2018-08-21")
+ self.acct_line.date_end = "2020-02-22"
+ self.acct_line.recurring_next_date = "2018-02-22"
+ self.acct_line.recurring_rule_type = "semesterly"
+ self.acct_line.recurring_invoicing_type = "pre-paid"
self.contract.recurring_create_invoice()
invoices_weekly = self.contract._get_related_invoices()
self.assertTrue(invoices_weekly)
- self.assertEqual(
- self.acct_line.recurring_next_date, recurring_next_date
- )
+ self.assertEqual(self.acct_line.recurring_next_date, recurring_next_date)
self.assertEqual(self.acct_line.last_date_invoiced, last_date_invoiced)
def test_contract_semesterly_post_paid(self):
- recurring_next_date = to_date('2018-08-22')
- last_date_invoiced = to_date('2018-02-21')
- self.acct_line.date_end = '2020-02-22'
- self.acct_line.recurring_next_date = '2018-02-22'
- self.acct_line.recurring_rule_type = 'semesterly'
- self.acct_line.recurring_invoicing_type = 'post-paid'
+ recurring_next_date = to_date("2018-08-22")
+ last_date_invoiced = to_date("2018-02-21")
+ self.acct_line.date_end = "2020-02-22"
+ self.acct_line.recurring_next_date = "2018-02-22"
+ self.acct_line.recurring_rule_type = "semesterly"
+ self.acct_line.recurring_invoicing_type = "post-paid"
self.contract.recurring_create_invoice()
invoices_weekly = self.contract._get_related_invoices()
self.assertTrue(invoices_weekly)
- self.assertEqual(
- self.acct_line.recurring_next_date, recurring_next_date
- )
+ self.assertEqual(self.acct_line.recurring_next_date, recurring_next_date)
self.assertEqual(self.acct_line.last_date_invoiced, last_date_invoiced)
def test_last_invoice_post_paid(self):
- self.acct_line.date_start = '2018-01-01'
- self.acct_line.recurring_invoicing_type = 'post-paid'
- self.acct_line.date_end = '2018-03-15'
+ self.acct_line.date_start = "2018-01-01"
+ self.acct_line.recurring_invoicing_type = "post-paid"
+ self.acct_line.date_end = "2018-03-15"
self.acct_line._onchange_date_start()
self.assertTrue(self.acct_line.create_invoice_visibility)
- self.assertEqual(
- self.acct_line.recurring_next_date, to_date('2018-02-01')
- )
+ self.assertEqual(self.acct_line.recurring_next_date, to_date("2018-02-01"))
self.assertFalse(self.acct_line.last_date_invoiced)
self.contract.recurring_create_invoice()
- self.assertEqual(
- self.acct_line.recurring_next_date, to_date('2018-03-01')
- )
- self.assertEqual(
- self.acct_line.last_date_invoiced, to_date('2018-01-31')
- )
+ self.assertEqual(self.acct_line.recurring_next_date, to_date("2018-03-01"))
+ self.assertEqual(self.acct_line.last_date_invoiced, to_date("2018-01-31"))
self.contract.recurring_create_invoice()
- self.assertEqual(
- self.acct_line.recurring_next_date, to_date('2018-3-16')
- )
- self.assertEqual(
- self.acct_line.last_date_invoiced, to_date('2018-02-28')
- )
+ self.assertEqual(self.acct_line.recurring_next_date, to_date("2018-3-16"))
+ self.assertEqual(self.acct_line.last_date_invoiced, to_date("2018-02-28"))
self.contract.recurring_create_invoice()
- self.assertEqual(
- self.acct_line.last_date_invoiced, to_date('2018-03-15')
- )
+ self.assertEqual(self.acct_line.last_date_invoiced, to_date("2018-03-15"))
self.assertFalse(self.acct_line.recurring_next_date)
self.assertFalse(self.acct_line.create_invoice_visibility)
invoices = self.contract._get_related_invoices()
@@ -372,33 +330,21 @@ class TestContract(TestContractBase):
)
def test_last_invoice_pre_paid(self):
- self.acct_line.date_start = '2018-01-01'
- self.acct_line.recurring_invoicing_type = 'pre-paid'
- self.acct_line.date_end = '2018-03-15'
+ self.acct_line.date_start = "2018-01-01"
+ self.acct_line.recurring_invoicing_type = "pre-paid"
+ self.acct_line.date_end = "2018-03-15"
self.acct_line._onchange_date_start()
self.assertTrue(self.acct_line.create_invoice_visibility)
- self.assertEqual(
- self.acct_line.recurring_next_date, to_date('2018-01-01')
- )
+ self.assertEqual(self.acct_line.recurring_next_date, to_date("2018-01-01"))
self.assertFalse(self.acct_line.last_date_invoiced)
self.contract.recurring_create_invoice()
- self.assertEqual(
- self.acct_line.recurring_next_date, to_date('2018-02-01')
- )
- self.assertEqual(
- self.acct_line.last_date_invoiced, to_date('2018-01-31')
- )
+ self.assertEqual(self.acct_line.recurring_next_date, to_date("2018-02-01"))
+ self.assertEqual(self.acct_line.last_date_invoiced, to_date("2018-01-31"))
self.contract.recurring_create_invoice()
- self.assertEqual(
- self.acct_line.last_date_invoiced, to_date('2018-02-28')
- )
- self.assertEqual(
- self.acct_line.last_date_invoiced, to_date('2018-02-28')
- )
+ self.assertEqual(self.acct_line.last_date_invoiced, to_date("2018-02-28"))
+ self.assertEqual(self.acct_line.last_date_invoiced, to_date("2018-02-28"))
self.contract.recurring_create_invoice()
- self.assertEqual(
- self.acct_line.last_date_invoiced, to_date('2018-03-15')
- )
+ self.assertEqual(self.acct_line.last_date_invoiced, to_date("2018-03-15"))
self.assertFalse(self.acct_line.recurring_next_date)
self.assertFalse(self.acct_line.create_invoice_visibility)
invoices = self.contract._get_related_invoices()
@@ -418,25 +364,21 @@ class TestContract(TestContractBase):
)
def test_onchange_date_start(self):
- recurring_next_date = to_date('2018-01-01')
+ recurring_next_date = to_date("2018-01-01")
self.acct_line.date_start = recurring_next_date
self.acct_line._onchange_date_start()
- self.assertEqual(
- self.acct_line.recurring_next_date, recurring_next_date
- )
+ self.assertEqual(self.acct_line.recurring_next_date, recurring_next_date)
def test_uom(self):
- uom_litre = self.env.ref('uom.product_uom_litre')
+ uom_litre = self.env.ref("uom.product_uom_litre")
self.acct_line.uom_id = uom_litre.id
self.acct_line._onchange_product_id()
- self.assertEqual(
- self.acct_line.uom_id, self.acct_line.product_id.uom_id
- )
+ self.assertEqual(self.acct_line.uom_id, self.acct_line.product_id.uom_id)
def test_onchange_product_id(self):
- line = self.env['contract.line'].new()
+ line = self.env["contract.line"].new()
res = line._onchange_product_id()
- self.assertFalse(res['domain']['uom_id'])
+ self.assertFalse(res["domain"]["uom_id"])
def test_no_pricelist(self):
self.contract.pricelist_id = False
@@ -444,22 +386,19 @@ class TestContract(TestContractBase):
self.assertAlmostEqual(self.acct_line.price_subtotal, 100.0)
def test_check_journal(self):
- journal = self.env['account.journal'].search([('type', '=', 'sale')])
- journal.write({'type': 'general'})
+ journal = self.env["account.journal"].search([("type", "=", "sale")])
+ journal.write({"type": "general"})
with self.assertRaises(ValidationError):
self.contract.recurring_create_invoice()
def test_check_date_end(self):
with self.assertRaises(ValidationError):
- self.acct_line.date_end = '2015-12-31'
+ self.acct_line.date_end = "2015-12-31"
def test_check_recurring_next_date_start_date(self):
with self.assertRaises(ValidationError):
self.acct_line.write(
- {
- 'date_start': '2018-01-01',
- 'recurring_next_date': '2017-01-01',
- }
+ {"date_start": "2018-01-01", "recurring_next_date": "2017-01-01",}
)
def test_onchange_contract_template_id(self):
@@ -469,32 +408,25 @@ class TestContract(TestContractBase):
self.contract.contract_template_id = self.template
self.contract._onchange_contract_template_id()
res = {
- 'contract_line_ids': [
+ "contract_line_ids": [
+ (0, 0, {"display_type": "line_section", "name": "Test section",}),
(
0,
0,
{
- 'display_type': 'line_section',
- 'name': 'Test section',
- }
- ),
- (
- 0,
- 0,
- {
- 'product_id': self.product_1.id,
- 'name': 'Services from #START# to #END#',
- 'quantity': 1,
- 'uom_id': self.product_1.uom_id.id,
- 'price_unit': 100,
- 'discount': 50,
- 'recurring_rule_type': 'yearly',
- 'recurring_interval': 1,
+ "product_id": self.product_1.id,
+ "name": "Services from #START# to #END#",
+ "quantity": 1,
+ "uom_id": self.product_1.uom_id.id,
+ "price_unit": 100,
+ "discount": 50,
+ "recurring_rule_type": "yearly",
+ "recurring_interval": 1,
},
- )
+ ),
]
}
- del self.template_vals['name']
+ del self.template_vals["name"]
self.assertDictEqual(res, self.template_vals)
def test_onchange_contract_template_id_lines(self):
@@ -504,15 +436,14 @@ 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()
self.assertEqual(len(self.contract.contract_line_ids), 2)
for index, vals in [
(0, self.section_template_vals),
- (1, self.line_template_vals)
+ (1, self.line_template_vals),
]:
contract_line = self.contract.contract_line_ids[index]
for key, value in vals.items():
@@ -525,52 +456,44 @@ class TestContract(TestContractBase):
def test_send_mail_contract(self):
result = self.contract.action_contract_send()
- self.assertEqual(result['res_model'], 'mail.compose.message')
+ self.assertEqual(result["res_model"], "mail.compose.message")
def test_onchange_contract_type(self):
self.contract._onchange_contract_type()
- self.assertEqual(self.contract.journal_id.type, 'sale')
- self.assertEqual(
- self.contract.journal_id.company_id, self.contract.company_id
- )
- self.contract.type = 'purchase'
+ self.assertEqual(self.contract.journal_id.type, "sale")
+ self.assertEqual(self.contract.journal_id.company_id, self.contract.company_id)
+ self.contract.type = "purchase"
self.contract._onchange_contract_type()
- self.assertFalse(
- any(
- self.contract.contract_line_ids.mapped(
- 'automatic_price'
- )
- )
- )
+ self.assertFalse(any(self.contract.contract_line_ids.mapped("automatic_price")))
def test_contract_onchange_product_id_domain_blank(self):
"""It should return a blank UoM domain when no product."""
- line = self.env['contract.template.line'].new()
+ line = self.env["contract.template.line"].new()
res = line._onchange_product_id()
- self.assertFalse(res['domain']['uom_id'])
+ self.assertFalse(res["domain"]["uom_id"])
def test_contract_onchange_product_id_domain(self):
"""It should return UoM category domain."""
line = self._add_template_line()
res = line._onchange_product_id()
self.assertEqual(
- res['domain']['uom_id'][0],
- ('category_id', '=', self.product_1.uom_id.category_id.id),
+ res["domain"]["uom_id"][0],
+ ("category_id", "=", self.product_1.uom_id.category_id.id),
)
def test_contract_onchange_product_id_uom(self):
"""It should update the UoM for the line."""
line = self._add_template_line(
- {'uom_id': self.env.ref('uom.product_uom_litre').id}
+ {"uom_id": self.env.ref("uom.product_uom_litre").id}
)
- line.product_id.uom_id = self.env.ref('uom.product_uom_day').id
+ line.product_id.uom_id = self.env.ref("uom.product_uom_day").id
line._onchange_product_id()
self.assertEqual(line.uom_id, line.product_id.uom_id)
def test_contract_onchange_product_id_name(self):
"""It should update the name for the line."""
line = self._add_template_line()
- line.product_id.description_sale = 'Test'
+ line.product_id.description_sale = "Test"
line._onchange_product_id()
self.assertEqual(
line.name, line.product_id.get_product_multiline_description_sale()
@@ -591,9 +514,9 @@ class TestContract(TestContractBase):
"""It should create one invoice with same start and end date."""
self.acct_line.write(
{
- 'date_start': self.today,
- 'date_end': self.today,
- 'recurring_next_date': self.today,
+ "date_start": self.today,
+ "date_end": self.today,
+ "recurring_next_date": self.today,
}
)
self.contract._compute_recurring_next_date()
@@ -607,45 +530,34 @@ class TestContract(TestContractBase):
def test_act_show_contract(self):
show_contract = self.partner.with_context(
- contract_type='sale'
+ contract_type="sale"
).act_show_contract()
self.assertDictContainsSubset(
{
- 'name': 'Customer Contracts',
- 'type': 'ir.actions.act_window',
- 'view_type': 'form',
- 'res_model': 'contract.contract',
- 'xml_id': 'contract.action_customer_contract',
+ "name": "Customer Contracts",
+ "type": "ir.actions.act_window",
+ "view_type": "form",
+ "res_model": "contract.contract",
+ "xml_id": "contract.action_customer_contract",
},
show_contract,
- 'There was an error and the view couldn\'t be opened.',
+ "There was an error and the view couldn't be opened.",
)
def test_get_default_recurring_invoicing_offset(self):
- clm = self.env['contract.line']
+ clm = self.env["contract.line"]
self.assertEqual(
- clm._get_default_recurring_invoicing_offset(
- "pre-paid", "monthly"
- ),
- 0
+ clm._get_default_recurring_invoicing_offset("pre-paid", "monthly"), 0
)
self.assertEqual(
- clm._get_default_recurring_invoicing_offset(
- "post-paid", "monthly"
- ),
- 1
+ clm._get_default_recurring_invoicing_offset("post-paid", "monthly"), 1
)
self.assertEqual(
- clm._get_default_recurring_invoicing_offset(
- "pre-paid", "monthlylastday"
- ),
- 0
+ clm._get_default_recurring_invoicing_offset("pre-paid", "monthlylastday"), 0
)
self.assertEqual(
- clm._get_default_recurring_invoicing_offset(
- "post-paid", "monthlylastday"
- ),
- 0
+ clm._get_default_recurring_invoicing_offset("post-paid", "monthlylastday"),
+ 0,
)
def test_get_next_invoice_date(self):
@@ -673,7 +585,8 @@ class TestContract(TestContractBase):
):
return (
"Error in %s-%d every %d %s case, "
- "start with %s (max_date_end=%s)" % (
+ "start with %s (max_date_end=%s)"
+ % (
recurring_invoicing_type,
recurring_invoicing_offset,
recurring_interval,
@@ -685,83 +598,95 @@ class TestContract(TestContractBase):
combinations = [
(
- to_date('2018-01-01'),
- (to_date('2018-01-01'), 'pre-paid', 0, 'monthly', 1,
- False),
+ to_date("2018-01-01"),
+ (to_date("2018-01-01"), "pre-paid", 0, "monthly", 1, False),
),
(
- to_date('2018-01-01'),
- (to_date('2018-01-01'), 'pre-paid', 0, 'monthly', 1,
- to_date('2018-01-15')),
+ to_date("2018-01-01"),
+ (
+ to_date("2018-01-01"),
+ "pre-paid",
+ 0,
+ "monthly",
+ 1,
+ to_date("2018-01-15"),
+ ),
),
(
False,
- (to_date('2018-01-16'), 'pre-paid', 0, 'monthly', 1,
- to_date('2018-01-15')),
+ (
+ to_date("2018-01-16"),
+ "pre-paid",
+ 0,
+ "monthly",
+ 1,
+ to_date("2018-01-15"),
+ ),
),
(
- to_date('2018-01-01'),
- (to_date('2018-01-01'), 'pre-paid', 0, 'monthly', 2,
- False),
+ to_date("2018-01-01"),
+ (to_date("2018-01-01"), "pre-paid", 0, "monthly", 2, False),
),
(
- to_date('2018-02-01'),
- (to_date('2018-01-01'), 'post-paid', 1, 'monthly', 1,
- False),
+ to_date("2018-02-01"),
+ (to_date("2018-01-01"), "post-paid", 1, "monthly", 1, False),
),
(
- to_date('2018-01-16'),
- (to_date('2018-01-01'), 'post-paid', 1, 'monthly', 1,
- to_date('2018-01-15')),
+ to_date("2018-01-16"),
+ (
+ to_date("2018-01-01"),
+ "post-paid",
+ 1,
+ "monthly",
+ 1,
+ to_date("2018-01-15"),
+ ),
),
(
False,
- (to_date('2018-01-16'), 'post-paid', 1, 'monthly', 1,
- to_date('2018-01-15')),
+ (
+ to_date("2018-01-16"),
+ "post-paid",
+ 1,
+ "monthly",
+ 1,
+ to_date("2018-01-15"),
+ ),
),
(
- to_date('2018-03-01'),
- (to_date('2018-01-01'), 'post-paid', 1, 'monthly', 2,
- False),
+ to_date("2018-03-01"),
+ (to_date("2018-01-01"), "post-paid", 1, "monthly", 2, False),
),
(
- to_date('2018-01-31'),
- (to_date('2018-01-05'), 'post-paid', 0, 'monthlylastday', 1,
- False),
+ to_date("2018-01-31"),
+ (to_date("2018-01-05"), "post-paid", 0, "monthlylastday", 1, False),
),
(
- to_date('2018-01-06'),
- (to_date('2018-01-06'), 'pre-paid', 0, 'monthlylastday', 1,
- False),
+ to_date("2018-01-06"),
+ (to_date("2018-01-06"), "pre-paid", 0, "monthlylastday", 1, False),
),
(
- to_date('2018-02-28'),
- (to_date('2018-01-05'), 'post-paid', 0, 'monthlylastday', 2,
- False),
+ to_date("2018-02-28"),
+ (to_date("2018-01-05"), "post-paid", 0, "monthlylastday", 2, False),
),
(
- to_date('2018-01-05'),
- (to_date('2018-01-05'), 'pre-paid', 0, 'monthlylastday', 2,
- False),
+ to_date("2018-01-05"),
+ (to_date("2018-01-05"), "pre-paid", 0, "monthlylastday", 2, False),
),
(
- to_date('2018-01-05'),
- (to_date('2018-01-05'), 'pre-paid', 0, 'yearly', 1,
- False),
+ to_date("2018-01-05"),
+ (to_date("2018-01-05"), "pre-paid", 0, "yearly", 1, False),
),
(
- to_date('2019-01-05'),
- (to_date('2018-01-05'), 'post-paid', 1, 'yearly', 1,
- False),
+ to_date("2019-01-05"),
+ (to_date("2018-01-05"), "post-paid", 1, "yearly", 1, False),
),
]
- contract_line_env = self.env['contract.line']
+ contract_line_env = self.env["contract.line"]
for recurring_next_date, combination in combinations:
self.assertEqual(
recurring_next_date,
- contract_line_env.get_next_invoice_date(
- *combination
- ),
+ contract_line_env.get_next_invoice_date(*combination),
error_message(*combination),
)
@@ -799,14 +724,14 @@ class TestContract(TestContractBase):
):
self.acct_line.write(
{
- 'date_start': date_start,
- 'date_end': date_end,
- 'last_date_invoiced': last_date_invoiced,
- 'recurring_next_date': recurring_next_date,
- 'recurring_invoicing_type': recurring_invoicing_type,
- 'recurring_rule_type': recurring_rule_type,
- 'recurring_interval': recurring_interval,
- 'max_date_end': max_date_end,
+ "date_start": date_start,
+ "date_end": date_end,
+ "last_date_invoiced": last_date_invoiced,
+ "recurring_next_date": recurring_next_date,
+ "recurring_invoicing_type": recurring_invoicing_type,
+ "recurring_rule_type": recurring_rule_type,
+ "recurring_interval": recurring_interval,
+ "max_date_end": max_date_end,
}
)
@@ -851,247 +776,237 @@ class TestContract(TestContractBase):
)
Result = namedtuple(
- 'Result',
- [
- 'recurring_next_date',
- 'next_period_date_start',
- 'next_period_date_end',
- ],
+ "Result",
+ ["recurring_next_date", "next_period_date_start", "next_period_date_end",],
)
Combination = namedtuple(
- 'Combination',
+ "Combination",
[
- 'case',
- 'date_start',
- 'date_end',
- 'last_date_invoiced',
- 'recurring_next_date',
- 'recurring_invoicing_type',
- 'recurring_rule_type',
- 'recurring_interval',
- 'max_date_end',
+ "case",
+ "date_start",
+ "date_end",
+ "last_date_invoiced",
+ "recurring_next_date",
+ "recurring_invoicing_type",
+ "recurring_rule_type",
+ "recurring_interval",
+ "max_date_end",
],
)
combinations = {
Result(
- recurring_next_date=to_date('2019-01-01'),
- next_period_date_start=to_date('2019-01-01'),
- next_period_date_end=to_date('2019-01-31'),
+ recurring_next_date=to_date("2019-01-01"),
+ next_period_date_start=to_date("2019-01-01"),
+ next_period_date_end=to_date("2019-01-31"),
): Combination(
case="1",
- date_start='2019-01-01',
+ date_start="2019-01-01",
date_end=False,
last_date_invoiced=False,
- recurring_next_date='2019-01-01',
- recurring_invoicing_type='pre-paid',
- recurring_rule_type='monthly',
+ recurring_next_date="2019-01-01",
+ recurring_invoicing_type="pre-paid",
+ recurring_rule_type="monthly",
recurring_interval=1,
max_date_end=False,
),
Result(
- recurring_next_date=to_date('2019-01-01'),
- next_period_date_start=to_date('2019-01-01'),
- next_period_date_end=to_date('2019-01-15'),
+ recurring_next_date=to_date("2019-01-01"),
+ next_period_date_start=to_date("2019-01-01"),
+ next_period_date_end=to_date("2019-01-15"),
): Combination(
case="2",
- date_start='2019-01-01',
- date_end='2019-01-15',
+ date_start="2019-01-01",
+ date_end="2019-01-15",
last_date_invoiced=False,
- recurring_next_date='2019-01-01',
- recurring_invoicing_type='pre-paid',
- recurring_rule_type='monthly',
+ recurring_next_date="2019-01-01",
+ recurring_invoicing_type="pre-paid",
+ recurring_rule_type="monthly",
recurring_interval=1,
max_date_end=False,
),
Result(
- recurring_next_date=to_date('2019-01-05'),
- next_period_date_start=to_date('2019-01-05'),
- next_period_date_end=to_date('2019-01-15'),
+ recurring_next_date=to_date("2019-01-05"),
+ next_period_date_start=to_date("2019-01-05"),
+ next_period_date_end=to_date("2019-01-15"),
): Combination(
case="3",
- date_start='2019-01-05',
- date_end='2019-01-15',
+ date_start="2019-01-05",
+ date_end="2019-01-15",
last_date_invoiced=False,
- recurring_next_date='2019-01-05',
- recurring_invoicing_type='pre-paid',
- recurring_rule_type='monthly',
+ recurring_next_date="2019-01-05",
+ recurring_invoicing_type="pre-paid",
+ recurring_rule_type="monthly",
recurring_interval=1,
max_date_end=False,
),
Result(
- recurring_next_date=to_date('2019-01-05'),
- next_period_date_start=to_date('2019-01-01'),
- next_period_date_end=to_date('2019-01-15'),
+ recurring_next_date=to_date("2019-01-05"),
+ next_period_date_start=to_date("2019-01-01"),
+ next_period_date_end=to_date("2019-01-15"),
): Combination(
case="4",
- date_start='2019-01-01',
- date_end='2019-01-15',
+ date_start="2019-01-01",
+ date_end="2019-01-15",
last_date_invoiced=False,
- recurring_next_date='2019-01-05',
- recurring_invoicing_type='pre-paid',
- recurring_rule_type='monthly',
+ recurring_next_date="2019-01-05",
+ recurring_invoicing_type="pre-paid",
+ recurring_rule_type="monthly",
recurring_interval=1,
max_date_end=False,
),
Result(
- recurring_next_date=to_date('2019-02-01'),
- next_period_date_start=to_date('2019-01-01'),
- next_period_date_end=to_date('2019-01-31'),
+ recurring_next_date=to_date("2019-02-01"),
+ next_period_date_start=to_date("2019-01-01"),
+ next_period_date_end=to_date("2019-01-31"),
): Combination(
case="5",
- date_start='2019-01-01',
+ date_start="2019-01-01",
date_end=False,
last_date_invoiced=False,
- recurring_next_date='2019-02-01',
- recurring_invoicing_type='post-paid',
- recurring_rule_type='monthly',
+ recurring_next_date="2019-02-01",
+ recurring_invoicing_type="post-paid",
+ recurring_rule_type="monthly",
recurring_interval=1,
max_date_end=False,
),
Result(
- recurring_next_date=to_date('2019-02-01'),
- next_period_date_start=to_date('2019-01-01'),
- next_period_date_end=to_date('2019-01-15'),
+ recurring_next_date=to_date("2019-02-01"),
+ next_period_date_start=to_date("2019-01-01"),
+ next_period_date_end=to_date("2019-01-15"),
): Combination(
case="6",
- date_start='2019-01-01',
- date_end='2019-01-15',
+ date_start="2019-01-01",
+ date_end="2019-01-15",
last_date_invoiced=False,
- recurring_next_date='2019-02-01',
- recurring_invoicing_type='post-paid',
- recurring_rule_type='monthly',
+ recurring_next_date="2019-02-01",
+ recurring_invoicing_type="post-paid",
+ recurring_rule_type="monthly",
recurring_interval=1,
max_date_end=False,
),
Result(
- recurring_next_date=to_date('2019-02-01'),
- next_period_date_start=to_date('2019-01-05'),
- next_period_date_end=to_date('2019-01-31'),
+ recurring_next_date=to_date("2019-02-01"),
+ next_period_date_start=to_date("2019-01-05"),
+ next_period_date_end=to_date("2019-01-31"),
): Combination(
case="7",
- date_start='2019-01-05',
+ date_start="2019-01-05",
date_end=False,
last_date_invoiced=False,
- recurring_next_date='2019-02-01',
- recurring_invoicing_type='post-paid',
- recurring_rule_type='monthly',
+ recurring_next_date="2019-02-01",
+ recurring_invoicing_type="post-paid",
+ recurring_rule_type="monthly",
recurring_interval=1,
max_date_end=False,
),
Result(
- recurring_next_date=to_date('2019-01-05'),
- next_period_date_start=to_date('2019-01-01'),
- next_period_date_end=to_date('2019-01-15'),
+ recurring_next_date=to_date("2019-01-05"),
+ next_period_date_start=to_date("2019-01-01"),
+ next_period_date_end=to_date("2019-01-15"),
): Combination(
case="8",
- date_start='2019-01-01',
- date_end='2019-01-15',
+ date_start="2019-01-01",
+ date_end="2019-01-15",
last_date_invoiced=False,
- recurring_next_date='2019-01-05',
- recurring_invoicing_type='pre-paid',
- recurring_rule_type='monthly',
+ recurring_next_date="2019-01-05",
+ recurring_invoicing_type="pre-paid",
+ recurring_rule_type="monthly",
recurring_interval=1,
max_date_end=False,
),
Result(
- recurring_next_date=to_date('2019-01-01'),
- next_period_date_start=to_date('2018-12-16'),
- next_period_date_end=to_date('2019-01-31'),
+ recurring_next_date=to_date("2019-01-01"),
+ next_period_date_start=to_date("2018-12-16"),
+ next_period_date_end=to_date("2019-01-31"),
): Combination(
case="9",
- date_start='2018-01-01',
- date_end='2020-01-15',
- last_date_invoiced='2018-12-15',
- recurring_next_date='2019-01-01',
- recurring_invoicing_type='pre-paid',
- recurring_rule_type='monthly',
+ date_start="2018-01-01",
+ date_end="2020-01-15",
+ last_date_invoiced="2018-12-15",
+ recurring_next_date="2019-01-01",
+ recurring_invoicing_type="pre-paid",
+ recurring_rule_type="monthly",
recurring_interval=1,
max_date_end=False,
),
Result(
- recurring_next_date=to_date('2019-01-01'),
- next_period_date_start=to_date('2018-12-16'),
- next_period_date_end=to_date('2018-12-31'),
+ recurring_next_date=to_date("2019-01-01"),
+ next_period_date_start=to_date("2018-12-16"),
+ next_period_date_end=to_date("2018-12-31"),
): Combination(
case="10",
- date_start='2018-01-01',
- date_end='2020-01-15',
- last_date_invoiced='2018-12-15',
- recurring_next_date='2019-01-01',
- recurring_invoicing_type='post-paid',
- recurring_rule_type='monthly',
+ date_start="2018-01-01",
+ date_end="2020-01-15",
+ last_date_invoiced="2018-12-15",
+ recurring_next_date="2019-01-01",
+ recurring_invoicing_type="post-paid",
+ recurring_rule_type="monthly",
recurring_interval=1,
max_date_end=False,
),
Result(
- recurring_next_date=to_date('2018-12-31'),
- next_period_date_start=to_date('2018-12-16'),
- next_period_date_end=to_date('2018-12-31'),
+ recurring_next_date=to_date("2018-12-31"),
+ next_period_date_start=to_date("2018-12-16"),
+ next_period_date_end=to_date("2018-12-31"),
): Combination(
case="11",
- date_start='2018-01-01',
- date_end='2020-01-15',
- last_date_invoiced='2018-12-15',
- recurring_next_date='2018-12-31',
- recurring_invoicing_type='post-paid',
- recurring_rule_type='monthlylastday',
+ date_start="2018-01-01",
+ date_end="2020-01-15",
+ last_date_invoiced="2018-12-15",
+ recurring_next_date="2018-12-31",
+ recurring_invoicing_type="post-paid",
+ recurring_rule_type="monthlylastday",
recurring_interval=1,
max_date_end=False,
),
Result(
- recurring_next_date=to_date('2018-12-16'),
- next_period_date_start=to_date('2018-12-16'),
- next_period_date_end=to_date('2018-12-31'),
+ recurring_next_date=to_date("2018-12-16"),
+ next_period_date_start=to_date("2018-12-16"),
+ next_period_date_end=to_date("2018-12-31"),
): Combination(
case="12",
- date_start='2018-01-01',
- date_end='2020-01-15',
- last_date_invoiced='2018-12-15',
- recurring_next_date='2018-12-16',
- recurring_invoicing_type='pre-paid',
- recurring_rule_type='monthlylastday',
+ date_start="2018-01-01",
+ date_end="2020-01-15",
+ last_date_invoiced="2018-12-15",
+ recurring_next_date="2018-12-16",
+ recurring_invoicing_type="pre-paid",
+ recurring_rule_type="monthlylastday",
recurring_interval=1,
max_date_end=False,
),
Result(
- recurring_next_date=to_date('2018-01-05'),
- next_period_date_start=to_date('2018-01-05'),
- next_period_date_end=to_date('2018-03-31'),
+ recurring_next_date=to_date("2018-01-05"),
+ next_period_date_start=to_date("2018-01-05"),
+ next_period_date_end=to_date("2018-03-31"),
): Combination(
case="12",
- date_start='2018-01-05',
- date_end='2020-01-15',
+ date_start="2018-01-05",
+ date_end="2020-01-15",
last_date_invoiced=False,
- recurring_next_date='2018-01-05',
- recurring_invoicing_type='pre-paid',
- recurring_rule_type='monthlylastday',
+ recurring_next_date="2018-01-05",
+ recurring_invoicing_type="pre-paid",
+ recurring_rule_type="monthlylastday",
recurring_interval=3,
max_date_end=False,
),
}
for result, combination in combinations.items():
_update_contract_line(*combination)
- self.assertEqual(
- result, _get_result(), _error_message(*combination)
- )
+ self.assertEqual(result, _get_result(), _error_message(*combination))
def test_recurring_next_date(self):
"""recurring next date for a contract is the min for all lines"""
self.contract.recurring_create_invoice()
self.assertEqual(
self.contract.recurring_next_date,
- min(
- self.contract.contract_line_ids.mapped(
- 'recurring_next_date'
- )
- ),
+ min(self.contract.contract_line_ids.mapped("recurring_next_date")),
)
def test_date_end(self):
"""recurring next date for a contract is the min for all lines"""
- self.acct_line.date_end = '2018-01-01'
+ self.acct_line.date_end = "2018-01-01"
self.acct_line.copy()
- self.acct_line.write({'date_end': False, 'is_auto_renew': False})
+ self.acct_line.write({"date_end": False, "is_auto_renew": False})
self.assertFalse(self.contract.date_end)
def test_cancel_contract_line(self):
@@ -1104,95 +1019,80 @@ class TestContract(TestContractBase):
"""It should put end to the contract line"""
self.acct_line.write(
{
- 'date_start': self.today,
- 'recurring_next_date': self.today,
- 'date_end': self.today + relativedelta(months=7),
- 'is_auto_renew': True,
+ "date_start": self.today,
+ "recurring_next_date": self.today,
+ "date_end": self.today + relativedelta(months=7),
+ "is_auto_renew": True,
}
)
self.acct_line.stop(self.today + relativedelta(months=5))
- self.assertEqual(
- self.acct_line.date_end, self.today + relativedelta(months=5)
- )
+ self.assertEqual(self.acct_line.date_end, self.today + relativedelta(months=5))
def test_stop_upcoming_contract_line(self):
"""It should put end to the contract line"""
self.acct_line.write(
{
- 'date_start': self.today + relativedelta(months=3),
- 'recurring_next_date': self.today + relativedelta(months=3),
- 'date_end': self.today + relativedelta(months=7),
- 'is_auto_renew': True,
+ "date_start": self.today + relativedelta(months=3),
+ "recurring_next_date": self.today + relativedelta(months=3),
+ "date_end": self.today + relativedelta(months=7),
+ "is_auto_renew": True,
}
)
self.acct_line.stop(self.today)
- self.assertEqual(
- self.acct_line.date_end, self.today + relativedelta(months=7)
- )
+ self.assertEqual(self.acct_line.date_end, self.today + relativedelta(months=7))
self.assertTrue(self.acct_line.is_canceled)
def test_stop_past_contract_line(self):
"""Past contract line are ignored on stop"""
self.acct_line.write(
- {
- 'date_end': self.today + relativedelta(months=5),
- 'is_auto_renew': True,
- }
+ {"date_end": self.today + relativedelta(months=5), "is_auto_renew": True,}
)
self.acct_line.stop(self.today + relativedelta(months=7))
- self.assertEqual(
- self.acct_line.date_end, self.today + relativedelta(months=5)
- )
+ self.assertEqual(self.acct_line.date_end, self.today + relativedelta(months=5))
def test_stop_contract_line_without_date_end(self):
"""Past contract line are ignored on stop"""
- self.acct_line.write({'date_end': False, 'is_auto_renew': False})
+ self.acct_line.write({"date_end": False, "is_auto_renew": False})
self.acct_line.stop(self.today + relativedelta(months=7))
- self.assertEqual(
- self.acct_line.date_end, self.today + relativedelta(months=7)
- )
+ self.assertEqual(self.acct_line.date_end, self.today + relativedelta(months=7))
def test_stop_wizard(self):
self.acct_line.write(
{
- 'date_start': self.today,
- 'recurring_next_date': self.today,
- 'date_end': self.today + relativedelta(months=5),
- 'is_auto_renew': True,
+ "date_start": self.today,
+ "recurring_next_date": self.today,
+ "date_end": self.today + relativedelta(months=5),
+ "is_auto_renew": True,
}
)
- wizard = self.env['contract.line.wizard'].create(
+ wizard = self.env["contract.line.wizard"].create(
{
- 'date_end': self.today + relativedelta(months=3),
- 'contract_line_id': self.acct_line.id,
+ "date_end": self.today + relativedelta(months=3),
+ "contract_line_id": self.acct_line.id,
}
)
wizard.stop()
- self.assertEqual(
- self.acct_line.date_end, self.today + relativedelta(months=3)
- )
+ self.assertEqual(self.acct_line.date_end, self.today + relativedelta(months=3))
self.assertFalse(self.acct_line.is_auto_renew)
def test_stop_plan_successor_contract_line_0(self):
successor_contract_line = self.acct_line.copy(
{
- 'date_start': self.today + relativedelta(months=5),
- 'recurring_next_date': self.today + relativedelta(months=5),
+ "date_start": self.today + relativedelta(months=5),
+ "recurring_next_date": self.today + relativedelta(months=5),
}
)
self.acct_line.write(
{
- 'successor_contract_line_id': successor_contract_line.id,
- 'is_auto_renew': False,
- 'date_end': self.today,
+ "successor_contract_line_id": successor_contract_line.id,
+ "is_auto_renew": False,
+ "date_end": self.today,
}
)
suspension_start = self.today + relativedelta(months=5)
suspension_end = self.today + relativedelta(months=6)
with self.assertRaises(ValidationError):
- self.acct_line.stop_plan_successor(
- suspension_start, suspension_end, True
- )
+ self.acct_line.stop_plan_successor(suspension_start, suspension_end, True)
def test_stop_plan_successor_contract_line_1(self):
"""
@@ -1205,17 +1105,15 @@ class TestContract(TestContractBase):
end_date = self.today + relativedelta(months=4)
self.acct_line.write(
{
- 'date_start': start_date,
- 'recurring_next_date': start_date,
- 'date_end': end_date,
+ "date_start": start_date,
+ "recurring_next_date": start_date,
+ "date_end": end_date,
}
)
- self.acct_line.stop_plan_successor(
- suspension_start, suspension_end, True
- )
+ self.acct_line.stop_plan_successor(suspension_start, suspension_end, True)
self.assertEqual(self.acct_line.date_end, end_date)
- new_line = self.env['contract.line'].search(
- [('predecessor_contract_line_id', '=', self.acct_line.id)]
+ new_line = self.env["contract.line"].search(
+ [("predecessor_contract_line_id", "=", self.acct_line.id)]
)
self.assertFalse(new_line)
@@ -1234,29 +1132,23 @@ class TestContract(TestContractBase):
end_date = self.today + relativedelta(months=4)
self.acct_line.write(
{
- 'date_start': start_date,
- 'recurring_next_date': start_date,
- 'date_end': end_date,
+ "date_start": start_date,
+ "recurring_next_date": start_date,
+ "date_end": end_date,
}
)
- self.acct_line.stop_plan_successor(
- suspension_start, suspension_end, True
- )
+ self.acct_line.stop_plan_successor(suspension_start, suspension_end, True)
self.assertEqual(
self.acct_line.date_end, suspension_start - relativedelta(days=1)
)
- new_line = self.env['contract.line'].search(
- [('predecessor_contract_line_id', '=', self.acct_line.id)]
+ new_line = self.env["contract.line"].search(
+ [("predecessor_contract_line_id", "=", self.acct_line.id)]
)
self.assertTrue(new_line)
new_date_end = (
- suspension_end
- + (end_date - suspension_start)
- + relativedelta(days=1)
- )
- self.assertEqual(
- new_line.date_start, suspension_end + relativedelta(days=1)
+ suspension_end + (end_date - suspension_start) + relativedelta(days=1)
)
+ self.assertEqual(new_line.date_start, suspension_end + relativedelta(days=1))
self.assertEqual(new_line.date_end, new_date_end)
self.assertTrue(self.acct_line.manual_renew_needed)
@@ -1275,29 +1167,23 @@ class TestContract(TestContractBase):
end_date = self.today + relativedelta(months=6)
self.acct_line.write(
{
- 'date_start': start_date,
- 'recurring_next_date': start_date,
- 'date_end': end_date,
+ "date_start": start_date,
+ "recurring_next_date": start_date,
+ "date_end": end_date,
}
)
- self.acct_line.stop_plan_successor(
- suspension_start, suspension_end, True
- )
+ self.acct_line.stop_plan_successor(suspension_start, suspension_end, True)
self.assertEqual(
self.acct_line.date_end, suspension_start - relativedelta(days=1)
)
- new_line = self.env['contract.line'].search(
- [('predecessor_contract_line_id', '=', self.acct_line.id)]
+ new_line = self.env["contract.line"].search(
+ [("predecessor_contract_line_id", "=", self.acct_line.id)]
)
self.assertTrue(new_line)
new_date_end = (
- end_date
- + (suspension_end - suspension_start)
- + relativedelta(days=1)
- )
- self.assertEqual(
- new_line.date_start, suspension_end + relativedelta(days=1)
+ end_date + (suspension_end - suspension_start) + relativedelta(days=1)
)
+ self.assertEqual(new_line.date_start, suspension_end + relativedelta(days=1))
self.assertEqual(new_line.date_end, new_date_end)
self.assertTrue(self.acct_line.manual_renew_needed)
@@ -1316,25 +1202,21 @@ class TestContract(TestContractBase):
end_date = False
self.acct_line.write(
{
- 'date_start': start_date,
- 'recurring_next_date': start_date,
- 'date_end': end_date,
- 'is_auto_renew': False,
+ "date_start": start_date,
+ "recurring_next_date": start_date,
+ "date_end": end_date,
+ "is_auto_renew": False,
}
)
- self.acct_line.stop_plan_successor(
- suspension_start, suspension_end, False
- )
+ self.acct_line.stop_plan_successor(suspension_start, suspension_end, False)
self.assertEqual(
self.acct_line.date_end, suspension_start - relativedelta(days=1)
)
- new_line = self.env['contract.line'].search(
- [('predecessor_contract_line_id', '=', self.acct_line.id)]
+ new_line = self.env["contract.line"].search(
+ [("predecessor_contract_line_id", "=", self.acct_line.id)]
)
self.assertTrue(new_line)
- self.assertEqual(
- new_line.date_start, suspension_end + relativedelta(days=1)
- )
+ self.assertEqual(new_line.date_start, suspension_end + relativedelta(days=1))
self.assertFalse(new_line.date_end)
self.assertTrue(self.acct_line.manual_renew_needed)
@@ -1350,14 +1232,12 @@ class TestContract(TestContractBase):
end_date = self.today + relativedelta(months=4)
self.acct_line.write(
{
- 'date_start': start_date,
- 'recurring_next_date': start_date,
- 'date_end': end_date,
+ "date_start": start_date,
+ "recurring_next_date": start_date,
+ "date_end": end_date,
}
)
- self.acct_line.stop_plan_successor(
- suspension_start, suspension_end, True
- )
+ self.acct_line.stop_plan_successor(suspension_start, suspension_end, True)
self.assertEqual(
self.acct_line.date_start,
start_date + (suspension_end - start_date) + timedelta(days=1),
@@ -1366,8 +1246,8 @@ class TestContract(TestContractBase):
self.acct_line.date_end,
end_date + (suspension_end - start_date) + timedelta(days=1),
)
- new_line = self.env['contract.line'].search(
- [('predecessor_contract_line_id', '=', self.acct_line.id)]
+ new_line = self.env["contract.line"].search(
+ [("predecessor_contract_line_id", "=", self.acct_line.id)]
)
self.assertFalse(new_line)
@@ -1383,14 +1263,12 @@ class TestContract(TestContractBase):
end_date = self.today + relativedelta(months=6)
self.acct_line.write(
{
- 'date_start': start_date,
- 'recurring_next_date': start_date,
- 'date_end': end_date,
+ "date_start": start_date,
+ "recurring_next_date": start_date,
+ "date_end": end_date,
}
)
- self.acct_line.stop_plan_successor(
- suspension_start, suspension_end, True
- )
+ self.acct_line.stop_plan_successor(suspension_start, suspension_end, True)
self.assertEqual(
self.acct_line.date_start,
start_date + (suspension_end - start_date) + timedelta(days=1),
@@ -1399,8 +1277,8 @@ class TestContract(TestContractBase):
self.acct_line.date_end,
end_date + (suspension_end - start_date) + timedelta(days=1),
)
- new_line = self.env['contract.line'].search(
- [('predecessor_contract_line_id', '=', self.acct_line.id)]
+ new_line = self.env["contract.line"].search(
+ [("predecessor_contract_line_id", "=", self.acct_line.id)]
)
self.assertFalse(new_line)
@@ -1416,22 +1294,20 @@ class TestContract(TestContractBase):
end_date = False
self.acct_line.write(
{
- 'date_start': start_date,
- 'recurring_next_date': start_date,
- 'date_end': end_date,
- 'is_auto_renew': False,
+ "date_start": start_date,
+ "recurring_next_date": start_date,
+ "date_end": end_date,
+ "is_auto_renew": False,
}
)
- self.acct_line.stop_plan_successor(
- suspension_start, suspension_end, True
- )
+ self.acct_line.stop_plan_successor(suspension_start, suspension_end, True)
self.assertEqual(
self.acct_line.date_start,
start_date + (suspension_end - start_date) + timedelta(days=1),
)
self.assertFalse(self.acct_line.date_end)
- new_line = self.env['contract.line'].search(
- [('predecessor_contract_line_id', '=', self.acct_line.id)]
+ new_line = self.env["contract.line"].search(
+ [("predecessor_contract_line_id", "=", self.acct_line.id)]
)
self.assertFalse(new_line)
@@ -1447,26 +1323,22 @@ class TestContract(TestContractBase):
end_date = self.today + relativedelta(months=6)
self.acct_line.write(
{
- 'date_start': start_date,
- 'recurring_next_date': start_date,
- 'date_end': end_date,
+ "date_start": start_date,
+ "recurring_next_date": start_date,
+ "date_end": end_date,
}
)
- self.acct_line.stop_plan_successor(
- suspension_start, suspension_end, True
- )
+ self.acct_line.stop_plan_successor(suspension_start, suspension_end, True)
self.assertEqual(
self.acct_line.date_start,
- start_date
- + (suspension_end - suspension_start)
- + timedelta(days=1),
+ start_date + (suspension_end - suspension_start) + timedelta(days=1),
)
self.assertEqual(
self.acct_line.date_end,
end_date + (suspension_end - suspension_start) + timedelta(days=1),
)
- new_line = self.env['contract.line'].search(
- [('predecessor_contract_line_id', '=', self.acct_line.id)]
+ new_line = self.env["contract.line"].search(
+ [("predecessor_contract_line_id", "=", self.acct_line.id)]
)
self.assertFalse(new_line)
@@ -1482,24 +1354,20 @@ class TestContract(TestContractBase):
end_date = False
self.acct_line.write(
{
- 'date_start': start_date,
- 'recurring_next_date': start_date,
- 'date_end': end_date,
- 'is_auto_renew': False,
+ "date_start": start_date,
+ "recurring_next_date": start_date,
+ "date_end": end_date,
+ "is_auto_renew": False,
}
)
- self.acct_line.stop_plan_successor(
- suspension_start, suspension_end, True
- )
+ self.acct_line.stop_plan_successor(suspension_start, suspension_end, True)
self.assertEqual(
self.acct_line.date_start,
- start_date
- + (suspension_end - suspension_start)
- + timedelta(days=1),
+ start_date + (suspension_end - suspension_start) + timedelta(days=1),
)
self.assertFalse(self.acct_line.date_end)
- new_line = self.env['contract.line'].search(
- [('predecessor_contract_line_id', '=', self.acct_line.id)]
+ new_line = self.env["contract.line"].search(
+ [("predecessor_contract_line_id", "=", self.acct_line.id)]
)
self.assertFalse(new_line)
@@ -1510,42 +1378,40 @@ class TestContract(TestContractBase):
end_date = self.today + relativedelta(months=6)
self.acct_line.write(
{
- 'date_start': start_date,
- 'recurring_next_date': start_date,
- 'date_end': end_date,
+ "date_start": start_date,
+ "recurring_next_date": start_date,
+ "date_end": end_date,
}
)
- wizard = self.env['contract.line.wizard'].create(
+ wizard = self.env["contract.line.wizard"].create(
{
- 'date_start': suspension_start,
- 'date_end': suspension_end,
- 'is_auto_renew': False,
- 'contract_line_id': self.acct_line.id,
+ "date_start": suspension_start,
+ "date_end": suspension_end,
+ "is_auto_renew": False,
+ "contract_line_id": self.acct_line.id,
}
)
wizard.stop_plan_successor()
self.assertEqual(
self.acct_line.date_start,
- start_date
- + (suspension_end - suspension_start)
- + timedelta(days=1),
+ start_date + (suspension_end - suspension_start) + timedelta(days=1),
)
self.assertEqual(
self.acct_line.date_end,
end_date + (suspension_end - suspension_start) + timedelta(days=1),
)
- new_line = self.env['contract.line'].search(
- [('predecessor_contract_line_id', '=', self.acct_line.id)]
+ new_line = self.env["contract.line"].search(
+ [("predecessor_contract_line_id", "=", self.acct_line.id)]
)
self.assertFalse(new_line)
def test_plan_successor_contract_line(self):
self.acct_line.write(
{
- 'date_start': self.today,
- 'recurring_next_date': self.today,
- 'date_end': self.today + relativedelta(months=3),
- 'is_auto_renew': False,
+ "date_start": self.today,
+ "recurring_next_date": self.today,
+ "date_end": self.today + relativedelta(months=3),
+ "is_auto_renew": False,
}
)
self.acct_line.plan_successor(
@@ -1553,26 +1419,22 @@ class TestContract(TestContractBase):
self.today + relativedelta(months=7),
True,
)
- new_line = self.env['contract.line'].search(
- [('predecessor_contract_line_id', '=', self.acct_line.id)]
+ new_line = self.env["contract.line"].search(
+ [("predecessor_contract_line_id", "=", self.acct_line.id)]
)
self.assertFalse(self.acct_line.is_auto_renew)
self.assertTrue(new_line.is_auto_renew)
self.assertTrue(new_line, "should create a new contract line")
- self.assertEqual(
- new_line.date_start, self.today + relativedelta(months=5)
- )
- self.assertEqual(
- new_line.date_end, self.today + relativedelta(months=7)
- )
+ self.assertEqual(new_line.date_start, self.today + relativedelta(months=5))
+ self.assertEqual(new_line.date_end, self.today + relativedelta(months=7))
def test_overlap(self):
self.acct_line.write(
{
- 'date_start': self.today,
- 'recurring_next_date': self.today,
- 'date_end': self.today + relativedelta(months=3),
- 'is_auto_renew': False,
+ "date_start": self.today,
+ "recurring_next_date": self.today,
+ "date_end": self.today + relativedelta(months=3),
+ "is_auto_renew": False,
}
)
self.acct_line.plan_successor(
@@ -1580,8 +1442,8 @@ class TestContract(TestContractBase):
self.today + relativedelta(months=7),
True,
)
- new_line = self.env['contract.line'].search(
- [('predecessor_contract_line_id', '=', self.acct_line.id)]
+ new_line = self.env["contract.line"].search(
+ [("predecessor_contract_line_id", "=", self.acct_line.id)]
)
with self.assertRaises(ValidationError):
new_line.date_start = self.today + relativedelta(months=2)
@@ -1591,40 +1453,33 @@ class TestContract(TestContractBase):
def test_plan_successor_wizard(self):
self.acct_line.write(
{
- 'date_start': self.today,
- 'recurring_next_date': self.today,
- 'date_end': self.today + relativedelta(months=2),
- 'is_auto_renew': False,
+ "date_start": self.today,
+ "recurring_next_date": self.today,
+ "date_end": self.today + relativedelta(months=2),
+ "is_auto_renew": False,
}
)
- wizard = self.env['contract.line.wizard'].create(
+ wizard = self.env["contract.line.wizard"].create(
{
- 'date_start': self.today + relativedelta(months=3),
- 'date_end': self.today + relativedelta(months=5),
- 'is_auto_renew': True,
- 'contract_line_id': self.acct_line.id,
+ "date_start": self.today + relativedelta(months=3),
+ "date_end": self.today + relativedelta(months=5),
+ "is_auto_renew": True,
+ "contract_line_id": self.acct_line.id,
}
)
wizard.plan_successor()
- new_line = self.env['contract.line'].search(
- [('predecessor_contract_line_id', '=', self.acct_line.id)]
+ new_line = self.env["contract.line"].search(
+ [("predecessor_contract_line_id", "=", self.acct_line.id)]
)
self.assertFalse(self.acct_line.is_auto_renew)
self.assertTrue(new_line.is_auto_renew)
self.assertTrue(new_line, "should create a new contract line")
- self.assertEqual(
- new_line.date_start, self.today + relativedelta(months=3)
- )
- self.assertEqual(
- new_line.date_end, self.today + relativedelta(months=5)
- )
+ self.assertEqual(new_line.date_start, self.today + relativedelta(months=3))
+ self.assertEqual(new_line.date_end, self.today + relativedelta(months=5))
def test_cancel(self):
self.acct_line.write(
- {
- 'date_end': self.today + relativedelta(months=5),
- 'is_auto_renew': True,
- }
+ {"date_end": self.today + relativedelta(months=5), "is_auto_renew": True,}
)
self.acct_line.cancel()
self.assertTrue(self.acct_line.is_canceled)
@@ -1637,11 +1492,8 @@ class TestContract(TestContractBase):
def test_uncancel_wizard(self):
self.acct_line.cancel()
self.assertTrue(self.acct_line.is_canceled)
- wizard = self.env['contract.line.wizard'].create(
- {
- 'recurring_next_date': self.today,
- 'contract_line_id': self.acct_line.id,
- }
+ wizard = self.env["contract.line.wizard"].create(
+ {"recurring_next_date": self.today, "contract_line_id": self.acct_line.id,}
)
wizard.uncancel()
self.assertFalse(self.acct_line.is_canceled)
@@ -1653,19 +1505,17 @@ class TestContract(TestContractBase):
end_date = self.today + relativedelta(months=4)
self.acct_line.write(
{
- 'date_start': start_date,
- 'recurring_next_date': start_date,
- 'date_end': end_date,
+ "date_start": start_date,
+ "recurring_next_date": start_date,
+ "date_end": end_date,
}
)
- self.acct_line.stop_plan_successor(
- suspension_start, suspension_end, True
- )
+ self.acct_line.stop_plan_successor(suspension_start, suspension_end, True)
self.assertEqual(
self.acct_line.date_end, suspension_start - relativedelta(days=1)
)
- new_line = self.env['contract.line'].search(
- [('predecessor_contract_line_id', '=', self.acct_line.id)]
+ new_line = self.env["contract.line"].search(
+ [("predecessor_contract_line_id", "=", self.acct_line.id)]
)
self.assertEqual(self.acct_line.successor_contract_line_id, new_line)
new_line.cancel()
@@ -1676,8 +1526,7 @@ 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):
@@ -1687,63 +1536,49 @@ class TestContract(TestContractBase):
end_date = self.today + relativedelta(months=8)
self.acct_line.write(
{
- 'date_start': start_date,
- 'recurring_next_date': start_date,
- 'date_end': end_date,
+ "date_start": start_date,
+ "recurring_next_date": start_date,
+ "date_end": end_date,
}
)
- self.acct_line.stop_plan_successor(
- suspension_start, suspension_end, True
- )
- new_line = self.env['contract.line'].search(
- [('predecessor_contract_line_id', '=', self.acct_line.id)]
+ self.acct_line.stop_plan_successor(suspension_start, suspension_end, True)
+ new_line = self.env["contract.line"].search(
+ [("predecessor_contract_line_id", "=", self.acct_line.id)]
)
new_line.cancel()
suspension_start = self.today + relativedelta(months=4)
suspension_end = self.today + relativedelta(months=5)
- self.acct_line.stop_plan_successor(
- suspension_start, suspension_end, True
- )
+ self.acct_line.stop_plan_successor(suspension_start, suspension_end, True)
with self.assertRaises(ValidationError):
new_line.uncancel(suspension_end)
def test_check_has_not_date_end_has_successor(self):
- self.acct_line.write({'date_end': False, 'is_auto_renew': False})
+ self.acct_line.write({"date_end": False, "is_auto_renew": False})
with self.assertRaises(ValidationError):
self.acct_line.plan_successor(
- to_date('2016-03-01'), to_date('2016-09-01'), False
+ to_date("2016-03-01"), to_date("2016-09-01"), False
)
def test_check_has_not_date_end_is_auto_renew(self):
with self.assertRaises(ValidationError):
- self.acct_line.write({'date_end': False, 'is_auto_renew': True})
+ self.acct_line.write({"date_end": False, "is_auto_renew": True})
def test_check_has_successor_is_auto_renew(self):
with self.assertRaises(ValidationError):
self.acct_line.plan_successor(
- to_date('2016-03-01'), to_date('2018-09-01'), False
+ to_date("2016-03-01"), to_date("2018-09-01"), False
)
def test_search_contract_line_to_renew(self):
- self.acct_line.write({'date_end': self.today, 'is_auto_renew': True})
- line_1 = self.acct_line.copy(
- {'date_end': self.today + relativedelta(months=1)}
- )
- line_2 = self.acct_line.copy(
- {'date_end': self.today - relativedelta(months=1)}
- )
- line_3 = self.acct_line.copy(
- {'date_end': self.today - relativedelta(months=2)}
- )
- line_4 = self.acct_line.copy(
- {'date_end': self.today + relativedelta(months=2)}
- )
+ self.acct_line.write({"date_end": self.today, "is_auto_renew": True})
+ line_1 = self.acct_line.copy({"date_end": self.today + relativedelta(months=1)})
+ line_2 = self.acct_line.copy({"date_end": self.today - relativedelta(months=1)})
+ line_3 = self.acct_line.copy({"date_end": self.today - relativedelta(months=2)})
+ line_4 = self.acct_line.copy({"date_end": self.today + relativedelta(months=2)})
to_renew = self.acct_line.search(
self.acct_line._contract_line_to_renew_domain()
)
- self.assertEqual(
- set(to_renew), set((self.acct_line, line_1, line_2, line_3))
- )
+ self.assertEqual(set(to_renew), {self.acct_line, line_1, line_2, line_3})
self.acct_line.cron_renew_contract_line()
self.assertTrue(self.acct_line.successor_contract_line_id)
self.assertTrue(line_1.successor_contract_line_id)
@@ -1753,15 +1588,13 @@ class TestContract(TestContractBase):
def test_renew_create_new_line(self):
date_start = self.today - relativedelta(months=9)
- date_end = (
- date_start + relativedelta(months=12) - relativedelta(days=1)
- )
+ date_end = date_start + relativedelta(months=12) - relativedelta(days=1)
self.acct_line.write(
{
- 'is_auto_renew': True,
- 'date_start': date_start,
- 'recurring_next_date': date_start,
- 'date_end': self.today,
+ "is_auto_renew": True,
+ "date_start": date_start,
+ "recurring_next_date": date_start,
+ "date_end": self.today,
}
)
self.acct_line._onchange_is_auto_renew()
@@ -1769,450 +1602,380 @@ class TestContract(TestContractBase):
new_line = self.acct_line.renew()
self.assertFalse(self.acct_line.is_auto_renew)
self.assertTrue(new_line.is_auto_renew)
- self.assertEqual(
- new_line.date_start, date_start + relativedelta(months=12)
- )
- self.assertEqual(
- new_line.date_end, date_end + relativedelta(months=12)
- )
+ self.assertEqual(new_line.date_start, date_start + relativedelta(months=12))
+ self.assertEqual(new_line.date_end, date_end + relativedelta(months=12))
def test_renew_extend_original_line(self):
self.contract.company_id.create_new_line_at_contract_line_renew = False
date_start = self.today - relativedelta(months=9)
- date_end = (
- date_start + relativedelta(months=12) - relativedelta(days=1)
- )
+ date_end = date_start + relativedelta(months=12) - relativedelta(days=1)
self.acct_line.write(
{
- 'is_auto_renew': True,
- 'date_start': date_start,
- 'recurring_next_date': date_start,
- 'date_end': self.today,
+ "is_auto_renew": True,
+ "date_start": date_start,
+ "recurring_next_date": date_start,
+ "date_end": self.today,
}
)
self.acct_line._onchange_is_auto_renew()
self.assertEqual(self.acct_line.date_end, date_end)
self.acct_line.renew()
self.assertTrue(self.acct_line.is_auto_renew)
- self.assertEqual(
- self.acct_line.date_start, date_start
- )
- self.assertEqual(
- self.acct_line.date_end, date_end + relativedelta(months=12)
- )
+ self.assertEqual(self.acct_line.date_start, date_start)
+ self.assertEqual(self.acct_line.date_end, date_end + relativedelta(months=12))
def test_cron_recurring_create_invoice(self):
- self.acct_line.date_start = '2018-01-01'
- self.acct_line.recurring_invoicing_type = 'post-paid'
- self.acct_line.date_end = '2018-03-15'
+ self.acct_line.date_start = "2018-01-01"
+ self.acct_line.recurring_invoicing_type = "post-paid"
+ self.acct_line.date_end = "2018-03-15"
self.acct_line._onchange_date_start()
contracts = self.contract2
for i in range(10):
contracts |= self.contract.copy()
- self.env['contract.contract'].cron_recurring_create_invoice()
- invoice_lines = self.env['account.invoice.line'].search(
- [('contract_line_id', 'in',
- contracts.mapped('contract_line_ids').ids)]
+ self.env["contract.contract"].cron_recurring_create_invoice()
+ invoice_lines = self.env["account.invoice.line"].search(
+ [("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):
- self.acct_line.date_start = '2018-01-01'
- self.acct_line.recurring_invoicing_type = 'post-paid'
- self.acct_line.date_end = '2018-03-15'
+ self.acct_line.date_start = "2018-01-01"
+ self.acct_line.recurring_invoicing_type = "post-paid"
+ self.acct_line.date_end = "2018-03-15"
self.acct_line._onchange_date_start()
self.contract2.unlink()
contracts = self.contract
for i in range(10):
contracts |= self.contract.copy()
- wizard = self.env['contract.manually.create.invoice'].create({
- 'invoice_date': self.today
- })
+ wizard = self.env["contract.manually.create.invoice"].create(
+ {"invoice_date": self.today}
+ )
wizard.action_show_contract_to_invoice()
contract_to_invoice_count = wizard.contract_to_invoice_count
self.assertEqual(
contracts,
- self.env['contract.contract'].search(
- wizard.action_show_contract_to_invoice()['domain']
+ self.env["contract.contract"].search(
+ wizard.action_show_contract_to_invoice()["domain"]
),
)
action = wizard.create_invoice()
- invoice_lines = self.env['account.invoice.line'].search(
- [('contract_line_id', 'in',
- contracts.mapped('contract_line_ids').ids)]
+ invoice_lines = self.env["account.invoice.line"].search(
+ [("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.invoice'].search(action['domain'])
- self.assertEqual(invoice_lines.mapped('invoice_id'), invoices)
+ invoices = self.env["account.invoice"].search(action["domain"])
+ self.assertEqual(invoice_lines.mapped("invoice_id"), invoices)
self.assertEqual(len(invoices), contract_to_invoice_count)
def test_get_period_to_invoice_monthlylastday_postpaid(self):
- self.acct_line.date_start = '2018-01-05'
- self.acct_line.recurring_invoicing_type = 'post-paid'
- self.acct_line.recurring_rule_type = 'monthlylastday'
- self.acct_line.date_end = '2018-03-15'
+ self.acct_line.date_start = "2018-01-05"
+ self.acct_line.recurring_invoicing_type = "post-paid"
+ self.acct_line.recurring_rule_type = "monthlylastday"
+ self.acct_line.date_end = "2018-03-15"
self.acct_line._onchange_date_start()
- 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.assertEqual(first, to_date('2018-01-05'))
- self.assertEqual(last, to_date('2018-01-31'))
+ 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.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.assertEqual(first, to_date('2018-02-01'))
- self.assertEqual(last, to_date('2018-02-28'))
+ 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.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.assertEqual(first, to_date('2018-03-01'))
- self.assertEqual(last, to_date('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.assertEqual(first, to_date("2018-03-01"))
+ self.assertEqual(last, to_date("2018-03-15"))
self.acct_line.manual_renew_needed = True
def test_get_period_to_invoice_monthlylastday_prepaid(self):
- self.acct_line.date_start = '2018-01-05'
- self.acct_line.recurring_invoicing_type = 'pre-paid'
- self.acct_line.recurring_rule_type = 'monthlylastday'
- self.acct_line.date_end = '2018-03-15'
+ self.acct_line.date_start = "2018-01-05"
+ self.acct_line.recurring_invoicing_type = "pre-paid"
+ self.acct_line.recurring_rule_type = "monthlylastday"
+ self.acct_line.date_end = "2018-03-15"
self.acct_line._onchange_date_start()
- 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.assertEqual(first, to_date('2018-01-05'))
- self.assertEqual(last, to_date('2018-01-31'))
- self.assertEqual(recurring_next_date, to_date('2018-01-05'))
- self.assertEqual(
- self.acct_line.recurring_next_date, to_date('2018-01-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.assertEqual(first, to_date("2018-01-05"))
+ self.assertEqual(last, to_date("2018-01-31"))
+ self.assertEqual(recurring_next_date, to_date("2018-01-05"))
+ 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.assertEqual(first, to_date('2018-02-01'))
- self.assertEqual(last, to_date('2018-02-28'))
- self.assertEqual(recurring_next_date, to_date('2018-02-01'))
- self.assertEqual(
- self.acct_line.recurring_next_date, to_date('2018-02-01')
- )
- self.assertEqual(
- self.acct_line.last_date_invoiced, to_date('2018-01-31')
+ 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.assertEqual(first, to_date("2018-02-01"))
+ self.assertEqual(last, to_date("2018-02-28"))
+ self.assertEqual(recurring_next_date, to_date("2018-02-01"))
+ self.assertEqual(self.acct_line.recurring_next_date, to_date("2018-02-01"))
+ 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.assertEqual(first, to_date('2018-03-01'))
- self.assertEqual(last, to_date('2018-03-15'))
- self.assertEqual(recurring_next_date, to_date('2018-03-01'))
- self.assertEqual(
- self.acct_line.recurring_next_date, to_date('2018-03-01')
- )
- self.assertEqual(
- self.acct_line.last_date_invoiced, to_date('2018-02-28')
+ 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.assertEqual(first, to_date("2018-03-01"))
+ self.assertEqual(last, to_date("2018-03-15"))
+ self.assertEqual(recurring_next_date, to_date("2018-03-01"))
+ self.assertEqual(self.acct_line.recurring_next_date, to_date("2018-03-01"))
+ 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,
- )
+ 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.assertFalse(first)
self.assertFalse(last)
self.assertFalse(recurring_next_date)
self.assertFalse(self.acct_line.recurring_next_date)
- self.assertEqual(
- self.acct_line.last_date_invoiced, to_date('2018-03-15')
- )
+ self.assertEqual(self.acct_line.last_date_invoiced, to_date("2018-03-15"))
def test_get_period_to_invoice_monthly_pre_paid_2(self):
- self.acct_line.date_start = '2018-01-05'
- self.acct_line.recurring_invoicing_type = 'pre-paid'
- self.acct_line.recurring_rule_type = 'monthly'
- self.acct_line.date_end = '2018-08-15'
+ self.acct_line.date_start = "2018-01-05"
+ self.acct_line.recurring_invoicing_type = "pre-paid"
+ self.acct_line.recurring_rule_type = "monthly"
+ self.acct_line.date_end = "2018-08-15"
self.acct_line._onchange_date_start()
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.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.assertEqual(first, to_date('2018-02-05'))
- self.assertEqual(last, to_date('2018-07-04'))
+ 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.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.assertEqual(first, to_date("2018-02-05"))
+ self.assertEqual(last, to_date("2018-07-04"))
def test_get_period_to_invoice_monthly_post_paid_2(self):
- self.acct_line.date_start = '2018-01-05'
- self.acct_line.recurring_invoicing_type = 'post-paid'
- self.acct_line.recurring_rule_type = 'monthly'
- self.acct_line.date_end = '2018-08-15'
+ self.acct_line.date_start = "2018-01-05"
+ self.acct_line.recurring_invoicing_type = "post-paid"
+ self.acct_line.recurring_rule_type = "monthly"
+ self.acct_line.date_end = "2018-08-15"
self.acct_line._onchange_date_start()
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.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.assertEqual(first, to_date('2018-02-05'))
- self.assertEqual(last, to_date('2018-06-04'))
+ 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.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.assertEqual(first, to_date("2018-02-05"))
+ self.assertEqual(last, to_date("2018-06-04"))
def test_get_period_to_invoice_monthly_post_paid(self):
- self.acct_line.date_start = '2018-01-05'
- self.acct_line.recurring_invoicing_type = 'post-paid'
- self.acct_line.recurring_rule_type = 'monthly'
- self.acct_line.date_end = '2018-03-15'
+ self.acct_line.date_start = "2018-01-05"
+ self.acct_line.recurring_invoicing_type = "post-paid"
+ self.acct_line.recurring_rule_type = "monthly"
+ self.acct_line.date_end = "2018-03-15"
self.acct_line._onchange_date_start()
- 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.assertEqual(first, to_date('2018-01-05'))
- self.assertEqual(last, to_date('2018-02-04'))
+ 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.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.assertEqual(first, to_date('2018-02-05'))
- self.assertEqual(last, to_date('2018-03-04'))
+ 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.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.assertEqual(first, to_date('2018-03-05'))
- self.assertEqual(last, to_date('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.assertEqual(first, to_date("2018-03-05"))
+ self.assertEqual(last, to_date("2018-03-15"))
def test_get_period_to_invoice_monthly_pre_paid(self):
- self.acct_line.date_start = '2018-01-05'
- self.acct_line.recurring_invoicing_type = 'pre-paid'
- self.acct_line.recurring_rule_type = 'monthly'
- self.acct_line.date_end = '2018-03-15'
+ self.acct_line.date_start = "2018-01-05"
+ self.acct_line.recurring_invoicing_type = "pre-paid"
+ self.acct_line.recurring_rule_type = "monthly"
+ self.acct_line.date_end = "2018-03-15"
self.acct_line._onchange_date_start()
- 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.assertEqual(first, to_date('2018-01-05'))
- self.assertEqual(last, to_date('2018-02-04'))
+ 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.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.assertEqual(first, to_date('2018-02-05'))
- self.assertEqual(last, to_date('2018-03-04'))
+ 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.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.assertEqual(first, to_date('2018-03-05'))
- self.assertEqual(last, to_date('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.assertEqual(first, to_date("2018-03-05"))
+ self.assertEqual(last, to_date("2018-03-15"))
def test_get_period_to_invoice_yearly_post_paid(self):
- self.acct_line.date_start = '2018-01-05'
- self.acct_line.recurring_invoicing_type = 'post-paid'
- self.acct_line.recurring_rule_type = 'yearly'
- self.acct_line.date_end = '2020-03-15'
+ self.acct_line.date_start = "2018-01-05"
+ self.acct_line.recurring_invoicing_type = "post-paid"
+ self.acct_line.recurring_rule_type = "yearly"
+ self.acct_line.date_end = "2020-03-15"
self.acct_line._onchange_date_start()
- 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.assertEqual(first, to_date('2018-01-05'))
- self.assertEqual(last, to_date('2019-01-04'))
+ 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.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.assertEqual(first, to_date('2019-01-05'))
- self.assertEqual(last, to_date('2020-01-04'))
+ 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.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.assertEqual(first, to_date('2020-01-05'))
- self.assertEqual(last, to_date('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.assertEqual(first, to_date("2020-01-05"))
+ self.assertEqual(last, to_date("2020-03-15"))
def test_get_period_to_invoice_yearly_pre_paid(self):
- self.acct_line.date_start = '2018-01-05'
- self.acct_line.recurring_invoicing_type = 'pre-paid'
- self.acct_line.recurring_rule_type = 'yearly'
- self.acct_line.date_end = '2020-03-15'
+ self.acct_line.date_start = "2018-01-05"
+ self.acct_line.recurring_invoicing_type = "pre-paid"
+ self.acct_line.recurring_rule_type = "yearly"
+ self.acct_line.date_end = "2020-03-15"
self.acct_line._onchange_date_start()
- 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.assertEqual(first, to_date('2018-01-05'))
- self.assertEqual(last, to_date('2019-01-04'))
+ 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.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.assertEqual(first, to_date('2019-01-05'))
- self.assertEqual(last, to_date('2020-01-04'))
+ 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.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.assertEqual(first, to_date('2020-01-05'))
- self.assertEqual(last, to_date('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.assertEqual(first, to_date("2020-01-05"))
+ self.assertEqual(last, to_date("2020-03-15"))
def test_unlink(self):
with self.assertRaises(ValidationError):
self.acct_line.unlink()
def test_contract_line_state(self):
- lines = self.env['contract.line']
+ lines = self.env["contract.line"]
# upcoming
lines |= self.acct_line.copy(
{
- 'date_start': self.today + relativedelta(months=3),
- 'recurring_next_date': self.today + relativedelta(months=3),
- 'date_end': self.today + relativedelta(months=5),
+ "date_start": self.today + relativedelta(months=3),
+ "recurring_next_date": self.today + relativedelta(months=3),
+ "date_end": self.today + relativedelta(months=5),
}
)
# in-progress
lines |= self.acct_line.copy(
{
- 'date_start': self.today,
- 'recurring_next_date': self.today,
- 'date_end': self.today + relativedelta(months=5),
+ "date_start": self.today,
+ "recurring_next_date": self.today,
+ "date_end": self.today + relativedelta(months=5),
}
)
# in-progress
lines |= self.acct_line.copy(
{
- 'date_start': self.today,
- 'recurring_next_date': self.today,
- 'date_end': self.today + relativedelta(months=5),
- 'manual_renew_needed': True,
+ "date_start": self.today,
+ "recurring_next_date": self.today,
+ "date_end": self.today + relativedelta(months=5),
+ "manual_renew_needed": True,
}
)
# to-renew
lines |= self.acct_line.copy(
{
- 'date_start': self.today - relativedelta(months=5),
- 'recurring_next_date': self.today - relativedelta(months=5),
- 'date_end': self.today - relativedelta(months=2),
- 'manual_renew_needed': True,
+ "date_start": self.today - relativedelta(months=5),
+ "recurring_next_date": self.today - relativedelta(months=5),
+ "date_end": self.today - relativedelta(months=2),
+ "manual_renew_needed": True,
}
)
# upcoming-close
lines |= self.acct_line.copy(
{
- 'date_start': self.today - relativedelta(months=5),
- 'recurring_next_date': self.today - relativedelta(months=5),
- 'date_end': self.today + relativedelta(days=20),
- 'is_auto_renew': False,
+ "date_start": self.today - relativedelta(months=5),
+ "recurring_next_date": self.today - relativedelta(months=5),
+ "date_end": self.today + relativedelta(days=20),
+ "is_auto_renew": False,
}
)
# closed
lines |= self.acct_line.copy(
{
- 'date_start': self.today - relativedelta(months=5),
- 'recurring_next_date': self.today - relativedelta(months=5),
- 'date_end': self.today - relativedelta(months=2),
- 'is_auto_renew': False,
+ "date_start": self.today - relativedelta(months=5),
+ "recurring_next_date": self.today - relativedelta(months=5),
+ "date_end": self.today - relativedelta(months=2),
+ "is_auto_renew": False,
}
)
# canceled
lines |= self.acct_line.copy(
{
- 'date_start': self.today - relativedelta(months=5),
- 'recurring_next_date': self.today - relativedelta(months=5),
- 'date_end': self.today - relativedelta(months=2),
- 'is_canceled': True,
+ "date_start": self.today - relativedelta(months=5),
+ "recurring_next_date": self.today - relativedelta(months=5),
+ "date_end": self.today - relativedelta(months=2),
+ "is_canceled": True,
}
)
# section
- lines |= self.env['contract.line'].create({
- "contract_id": self.contract.id,
- "display_type": "line_section",
- "name": "Test section",
- })
+ lines |= self.env["contract.line"].create(
+ {
+ "contract_id": self.contract.id,
+ "display_type": "line_section",
+ "name": "Test section",
+ }
+ )
states = [
- 'upcoming',
- 'in-progress',
- 'to-renew',
- 'upcoming-close',
- 'closed',
- 'canceled',
+ "upcoming",
+ "in-progress",
+ "to-renew",
+ "upcoming-close",
+ "closed",
+ "canceled",
False,
]
- self.assertEqual(set(lines.mapped('state')), set(states))
+ self.assertEqual(set(lines.mapped("state")), set(states))
# Test search method
for state in states:
- lines = self.env['contract.line'].search([('state', '=', state)])
+ lines = self.env["contract.line"].search([("state", "=", state)])
self.assertTrue(lines, state)
- self.assertTrue(state in lines.mapped('state'), state)
- lines = self.env['contract.line'].search([('state', '!=', state)])
- self.assertFalse(state in lines.mapped('state'), state)
- lines = self.env['contract.line'].search([('state', 'in', states)])
- self.assertEqual(set(lines.mapped('state')), set(states))
- lines = self.env['contract.line'].search([('state', 'in', [])])
- self.assertFalse(lines.mapped('state'))
+ self.assertTrue(state in lines.mapped("state"), state)
+ lines = self.env["contract.line"].search([("state", "!=", state)])
+ self.assertFalse(state in lines.mapped("state"), state)
+ lines = self.env["contract.line"].search([("state", "in", states)])
+ self.assertEqual(set(lines.mapped("state")), set(states))
+ lines = self.env["contract.line"].search([("state", "in", [])])
+ self.assertFalse(lines.mapped("state"))
with self.assertRaises(TypeError):
- self.env['contract.line'].search([('state', 'in', 'upcoming')])
- lines = self.env['contract.line'].search([('state', 'not in', [])])
- self.assertEqual(set(lines.mapped('state')), set(states))
- lines = self.env['contract.line'].search([('state', 'not in', states)])
- self.assertFalse(lines.mapped('state'))
- state2 = ['upcoming', 'in-progress']
- lines = self.env['contract.line'].search([('state', 'not in', state2)])
- self.assertEqual(set(lines.mapped('state')), set(states) - set(state2))
+ self.env["contract.line"].search([("state", "in", "upcoming")])
+ lines = self.env["contract.line"].search([("state", "not in", [])])
+ self.assertEqual(set(lines.mapped("state")), set(states))
+ lines = self.env["contract.line"].search([("state", "not in", states)])
+ self.assertFalse(lines.mapped("state"))
+ state2 = ["upcoming", "in-progress"]
+ lines = self.env["contract.line"].search([("state", "not in", state2)])
+ self.assertEqual(set(lines.mapped("state")), set(states) - set(state2))
def test_check_auto_renew_contract_line_with_successor(self):
"""
@@ -2222,8 +1985,8 @@ class TestContract(TestContractBase):
with self.assertRaises(ValidationError):
self.acct_line.write(
{
- 'is_auto_renew': True,
- 'successor_contract_line_id': successor_contract_line.id,
+ "is_auto_renew": True,
+ "successor_contract_line_id": successor_contract_line.id,
}
)
@@ -2235,8 +1998,8 @@ class TestContract(TestContractBase):
with self.assertRaises(ValidationError):
self.acct_line.write(
{
- 'date_end': False,
- 'successor_contract_line_id': successor_contract_line.id,
+ "date_end": False,
+ "successor_contract_line_id": successor_contract_line.id,
}
)
@@ -2247,7 +2010,7 @@ class TestContract(TestContractBase):
with self.assertRaises(ValidationError):
self.acct_line.write(
{
- 'last_date_invoiced': self.acct_line.date_start
+ "last_date_invoiced": self.acct_line.date_start
- relativedelta(days=1)
}
)
@@ -2256,67 +2019,46 @@ class TestContract(TestContractBase):
"""
start date can't be after the date of last invoice
"""
- self.acct_line.write({'date_end': self.today})
+ self.acct_line.write({"date_end": self.today})
with self.assertRaises(ValidationError):
self.acct_line.write(
- {
- 'last_date_invoiced': self.acct_line.date_end
- + relativedelta(days=1)
- }
+ {"last_date_invoiced": self.acct_line.date_end + relativedelta(days=1)}
)
def test_init_last_date_invoiced(self):
self.acct_line.write(
- {'date_start': '2019-01-01', 'recurring_next_date': '2019-03-01'}
+ {"date_start": "2019-01-01", "recurring_next_date": "2019-03-01"}
)
line_monthlylastday = self.acct_line.copy(
{
- 'recurring_rule_type': 'monthlylastday',
- 'recurring_next_date': '2019-03-31',
+ "recurring_rule_type": "monthlylastday",
+ "recurring_next_date": "2019-03-31",
}
)
line_prepaid = self.acct_line.copy(
- {
- 'recurring_invoicing_type': 'pre-paid',
- 'recurring_rule_type': 'monthly',
- }
+ {"recurring_invoicing_type": "pre-paid", "recurring_rule_type": "monthly",}
)
line_postpaid = self.acct_line.copy(
- {
- 'recurring_invoicing_type': 'post-paid',
- 'recurring_rule_type': 'monthly',
- }
+ {"recurring_invoicing_type": "post-paid", "recurring_rule_type": "monthly",}
)
lines = line_monthlylastday | line_prepaid | line_postpaid
- lines.write({'last_date_invoiced': False})
- self.assertFalse(any(lines.mapped('last_date_invoiced')))
+ lines.write({"last_date_invoiced": False})
+ self.assertFalse(any(lines.mapped("last_date_invoiced")))
lines._init_last_date_invoiced()
- self.assertEqual(
- line_monthlylastday.last_date_invoiced, to_date("2019-02-28")
- )
- self.assertEqual(
- line_prepaid.last_date_invoiced, to_date("2019-02-28")
- )
- self.assertEqual(
- line_postpaid.last_date_invoiced, to_date("2019-01-31")
- )
+ self.assertEqual(line_monthlylastday.last_date_invoiced, to_date("2019-02-28"))
+ self.assertEqual(line_prepaid.last_date_invoiced, to_date("2019-02-28"))
+ self.assertEqual(line_postpaid.last_date_invoiced, to_date("2019-01-31"))
def test_delay_invoiced_contract_line(self):
self.acct_line.write(
- {
- 'last_date_invoiced': self.acct_line.date_start
- + relativedelta(days=1)
- }
+ {"last_date_invoiced": self.acct_line.date_start + relativedelta(days=1)}
)
with self.assertRaises(ValidationError):
self.acct_line._delay(relativedelta(months=1))
def test_cancel_invoiced_contract_line(self):
self.acct_line.write(
- {
- 'last_date_invoiced': self.acct_line.date_start
- + relativedelta(days=1)
- }
+ {"last_date_invoiced": self.acct_line.date_start + relativedelta(days=1)}
)
with self.assertRaises(ValidationError):
self.acct_line.cancel()
@@ -2324,76 +2066,68 @@ class TestContract(TestContractBase):
def test_action_uncancel(self):
action = self.acct_line.action_uncancel()
self.assertEqual(
- action['context']['default_contract_line_id'], self.acct_line.id
+ action["context"]["default_contract_line_id"], self.acct_line.id
)
def test_action_plan_successor(self):
action = self.acct_line.action_plan_successor()
self.assertEqual(
- action['context']['default_contract_line_id'], self.acct_line.id
+ action["context"]["default_contract_line_id"], self.acct_line.id
)
def test_action_stop(self):
action = self.acct_line.action_stop()
self.assertEqual(
- action['context']['default_contract_line_id'], self.acct_line.id
+ action["context"]["default_contract_line_id"], self.acct_line.id
)
def test_action_stop_plan_successor(self):
action = self.acct_line.action_stop_plan_successor()
self.assertEqual(
- action['context']['default_contract_line_id'], self.acct_line.id
+ action["context"]["default_contract_line_id"], self.acct_line.id
)
def test_purchase_fields_view_get(self):
- purchase_tree_view = self.env.ref(
- 'contract.contract_line_supplier_tree_view'
- )
- purchase_form_view = self.env.ref(
- 'contract.contract_line_supplier_form_view'
- )
+ purchase_tree_view = self.env.ref("contract.contract_line_supplier_tree_view")
+ purchase_form_view = self.env.ref("contract.contract_line_supplier_form_view")
view = self.acct_line.with_context(
- default_contract_type='purchase'
- ).fields_view_get(view_type='tree')
- self.assertEqual(view['view_id'], purchase_tree_view.id)
+ default_contract_type="purchase"
+ ).fields_view_get(view_type="tree")
+ self.assertEqual(view["view_id"], purchase_tree_view.id)
view = self.acct_line.with_context(
- default_contract_type='purchase'
- ).fields_view_get(view_type='form')
- self.assertEqual(view['view_id'], purchase_form_view.id)
+ default_contract_type="purchase"
+ ).fields_view_get(view_type="form")
+ self.assertEqual(view["view_id"], purchase_form_view.id)
def test_multicompany_partner_edited(self):
"""Editing a partner with contracts in several companies works."""
- company2 = self.env['res.company'].create({
- "name": "Company 2",
- })
- unprivileged_user = self.env["res.users"].create({
- "name": "unprivileged test user",
- "login": "test",
- "company_id": company2.id,
- "company_ids": [(4, company2.id, False)],
- })
- parent_partner = self.env["res.partner"].create({
- "name": "parent partner",
- "is_company": True,
- })
+ company2 = self.env["res.company"].create({"name": "Company 2",})
+ unprivileged_user = self.env["res.users"].create(
+ {
+ "name": "unprivileged test user",
+ "login": "test",
+ "company_id": company2.id,
+ "company_ids": [(4, company2.id, False)],
+ }
+ )
+ parent_partner = self.env["res.partner"].create(
+ {"name": "parent partner", "is_company": True,}
+ )
# Assume contract 2 is for company 2
self.contract2.company_id = company2
# Update the partner attached to both contracts
self.partner.sudo(unprivileged_user).with_context(
company_id=company2.id, force_company=company2.id
- ).write({
- "is_company": False,
- "parent_id": parent_partner.id,
- })
+ ).write(
+ {"is_company": False, "parent_id": parent_partner.id,}
+ )
def test_sale_fields_view_get(self):
- sale_form_view = self.env.ref(
- 'contract.contract_line_customer_form_view'
- )
+ sale_form_view = self.env.ref("contract.contract_line_customer_form_view")
view = self.acct_line.with_context(
- default_contract_type='sale'
- ).fields_view_get(view_type='form')
- self.assertEqual(view['view_id'], sale_form_view.id)
+ default_contract_type="sale"
+ ).fields_view_get(view_type="form")
+ self.assertEqual(view["view_id"], sale_form_view.id)
def test_contract_count_invoice(self):
self.contract.recurring_create_invoice()
@@ -2403,30 +2137,32 @@ class TestContract(TestContractBase):
self.assertEqual(self.contract.invoice_count, 3)
def test_contract_count_invoice_2(self):
- invoices = self.env['account.invoice']
+ invoices = self.env["account.invoice"]
invoices |= self.contract.recurring_create_invoice()
invoices |= self.contract.recurring_create_invoice()
invoices |= self.contract.recurring_create_invoice()
action = self.contract.action_show_invoices()
- self.assertEqual(set(action['domain'][0][2]), set(invoices.ids))
+ self.assertEqual(set(action["domain"][0][2]), set(invoices.ids))
def test_compute_create_invoice_visibility(self):
self.assertTrue(self.contract.create_invoice_visibility)
self.acct_line.write(
{
- 'date_start': '2018-01-01',
- 'date_end': '2018-12-31',
- 'last_date_invoiced': '2018-12-31',
- 'recurring_next_date': False,
+ "date_start": "2018-01-01",
+ "date_end": "2018-12-31",
+ "last_date_invoiced": "2018-12-31",
+ "recurring_next_date": False,
}
)
self.assertFalse(self.acct_line.create_invoice_visibility)
self.assertFalse(self.contract.create_invoice_visibility)
- section = self.env['contract.line'].create({
- "contract_id": self.contract.id,
- "display_type": "line_section",
- "name": "Test section",
- })
+ section = self.env["contract.line"].create(
+ {
+ "contract_id": self.contract.id,
+ "display_type": "line_section",
+ "name": "Test section",
+ }
+ )
self.assertFalse(section.create_invoice_visibility)
def test_invoice_contract_without_lines(self):
@@ -2442,56 +2178,52 @@ class TestContract(TestContractBase):
def test_check_last_date_invoiced_before_next_invoice_date(self):
with self.assertRaises(ValidationError):
- self.acct_line.write({
- 'date_start': '2019-01-01',
- 'date_end': '2019-12-01',
- 'recurring_next_date': '2019-01-01',
- 'last_date_invoiced': '2019-06-01',
- })
+ self.acct_line.write(
+ {
+ "date_start": "2019-01-01",
+ "date_end": "2019-12-01",
+ "recurring_next_date": "2019-01-01",
+ "last_date_invoiced": "2019-06-01",
+ }
+ )
def test_stop_and_update_recurring_invoice_date(self):
self.acct_line.write(
{
- 'date_start': '2019-01-01',
- 'date_end': '2019-12-31',
- 'recurring_next_date': '2020-01-01',
- 'recurring_invoicing_type': 'post-paid',
- 'recurring_rule_type': 'yearly',
+ "date_start": "2019-01-01",
+ "date_end": "2019-12-31",
+ "recurring_next_date": "2020-01-01",
+ "recurring_invoicing_type": "post-paid",
+ "recurring_rule_type": "yearly",
}
)
- self.acct_line.stop(to_date('2019-05-31'))
- self.assertEqual(self.acct_line.date_end, to_date('2019-05-31'))
- self.assertEqual(
- self.acct_line.recurring_next_date, to_date('2019-06-01')
- )
+ self.acct_line.stop(to_date("2019-05-31"))
+ self.assertEqual(self.acct_line.date_end, to_date("2019-05-31"))
+ self.assertEqual(self.acct_line.recurring_next_date, to_date("2019-06-01"))
def test_action_terminate_contract(self):
action = self.contract.action_terminate_contract()
wizard = (
- self.env[action['res_model']]
- .with_context(action['context'])
- .create(
+ self.env[action["res_model"]]
+ .with_context(action["context"])
+ .create(
{
- 'terminate_date': '2018-03-01',
- 'terminate_reason_id': self.terminate_reason.id,
- 'terminate_comment': 'terminate_comment',
+ "terminate_date": "2018-03-01",
+ "terminate_reason_id": self.terminate_reason.id,
+ "terminate_comment": "terminate_comment",
}
)
)
self.assertEqual(wizard.contract_id, self.contract)
with self.assertRaises(UserError):
wizard.terminate_contract()
- group_can_terminate_contract = self.env.ref(
- "contract.can_terminate_contract"
- )
+ group_can_terminate_contract = self.env.ref("contract.can_terminate_contract")
group_can_terminate_contract.users |= self.env.user
wizard.terminate_contract()
self.assertTrue(self.contract.is_terminated)
- self.assertEqual(self.contract.terminate_date, to_date('2018-03-01'))
- self.assertEqual(
- self.contract.terminate_reason_id.id, self.terminate_reason.id
- )
- self.assertEqual(self.contract.terminate_comment, 'terminate_comment')
+ self.assertEqual(self.contract.terminate_date, to_date("2018-03-01"))
+ self.assertEqual(self.contract.terminate_reason_id.id, self.terminate_reason.id)
+ self.assertEqual(self.contract.terminate_comment, "terminate_comment")
self.contract.action_cancel_contract_termination()
self.assertFalse(self.contract.is_terminated)
self.assertFalse(self.contract.terminate_reason_id)
@@ -2499,18 +2231,12 @@ class TestContract(TestContractBase):
def test_terminate_date_before_last_date_invoiced(self):
self.contract.recurring_create_invoice()
- self.assertEqual(
- self.acct_line.last_date_invoiced, to_date('2018-02-14')
- )
- group_can_terminate_contract = self.env.ref(
- "contract.can_terminate_contract"
- )
+ self.assertEqual(self.acct_line.last_date_invoiced, to_date("2018-02-14"))
+ group_can_terminate_contract = self.env.ref("contract.can_terminate_contract")
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_currency(self):
@@ -2519,21 +2245,23 @@ class TestContract(TestContractBase):
# Get currency from company
self.contract2.journal_id = False
self.assertEqual(
- self.contract2.currency_id, self.contract2.company_id.currency_id)
+ self.contract2.currency_id, self.contract2.company_id.currency_id
+ )
# Get currency from journal
- journal = self.env["account.journal"].create({
- "name": "Test journal CAD",
- "code": "TCAD",
- "type": "sale",
- "currency_id": currency_cad.id,
- })
+ journal = self.env["account.journal"].create(
+ {
+ "name": "Test journal CAD",
+ "code": "TCAD",
+ "type": "sale",
+ "currency_id": currency_cad.id,
+ }
+ )
self.contract2.journal_id = journal.id
self.assertEqual(self.contract2.currency_id, currency_cad)
# Get currency from contract pricelist
- pricelist = self.env['product.pricelist'].create({
- "name": "Test pricelist",
- "currency_id": currency_eur.id,
- })
+ pricelist = self.env["product.pricelist"].create(
+ {"name": "Test pricelist", "currency_id": currency_eur.id,}
+ )
self.contract2.pricelist_id = pricelist.id
self.contract2.contract_line_ids.automatic_price = True
self.assertEqual(self.contract2.currency_id, currency_eur)
diff --git a/contract/views/abstract_contract_line.xml b/contract/views/abstract_contract_line.xml
index 44feec0a6..140ffb3fb 100644
--- a/contract/views/abstract_contract_line.xml
+++ b/contract/views/abstract_contract_line.xml
@@ -1,89 +1,137 @@
-
+
-
- contract.abstract.contract.line form view (in contract)
+ contract.abstract.contract.line form view (in contract)
contract.abstract.contract.line
-
diff --git a/contract/views/assets.xml b/contract/views/assets.xml
index d48b516ad..804879c36 100644
--- a/contract/views/assets.xml
+++ b/contract/views/assets.xml
@@ -1,10 +1,17 @@
-
+
-
+
-
+
diff --git a/contract/views/contract.xml b/contract/views/contract.xml
index 0d820fbd0..1e079017e 100644
--- a/contract/views/contract.xml
+++ b/contract/views/contract.xml
@@ -1,202 +1,317 @@
-
+
-
contract.contract form view (in contract)
contract.contract
|