[IMP] contract: black, isort, prettier

This commit is contained in:
Francisco Ivan Anton Prieto
2021-04-01 14:02:43 +02:00
parent 9b6f790dc1
commit 5e22708411
17 changed files with 191 additions and 75 deletions

View File

@@ -15,7 +15,7 @@
"category": "Contract Management", "category": "Contract Management",
"license": "AGPL-3", "license": "AGPL-3",
"author": "Tecnativa, ACSONE SA/NV, Odoo Community Association (OCA)", "author": "Tecnativa, ACSONE SA/NV, Odoo Community Association (OCA)",
"website": "https://github.com/oca/contract", "website": "https://github.com/OCA/contract",
"depends": ["base", "account", "product", "portal"], "depends": ["base", "account", "product", "portal"],
"external_dependencies": {"python": ["dateutil"]}, "external_dependencies": {"python": ["dateutil"]},
"data": [ "data": [

View File

@@ -34,7 +34,9 @@ class ContractAbstractContractLine(models.AbstractModel):
inverse="_inverse_price_unit", inverse="_inverse_price_unit",
) )
price_subtotal = fields.Float( price_subtotal = fields.Float(
compute="_compute_price_subtotal", digits="Account", string="Sub Total", compute="_compute_price_subtotal",
digits="Account",
string="Sub Total",
) )
discount = fields.Float( discount = fields.Float(
string="Discount (%)", string="Discount (%)",
@@ -69,13 +71,18 @@ class ContractAbstractContractLine(models.AbstractModel):
copy=True, copy=True,
) )
date_start = fields.Date( date_start = fields.Date(
compute="_compute_date_start", store=True, readonly=False, copy=True, compute="_compute_date_start",
store=True,
readonly=False,
copy=True,
) )
last_date_invoiced = fields.Date(string="Last Date Invoiced") last_date_invoiced = fields.Date(string="Last Date Invoiced")
is_canceled = fields.Boolean(string="Canceled", default=False) is_canceled = fields.Boolean(string="Canceled", default=False)
is_auto_renew = fields.Boolean(string="Auto Renew", default=False) is_auto_renew = fields.Boolean(string="Auto Renew", default=False)
auto_renew_interval = fields.Integer( auto_renew_interval = fields.Integer(
default=1, string="Renew Every", help="Renew every (Days/Week/Month/Year)", default=1,
string="Renew Every",
help="Renew every (Days/Week/Month/Year)",
) )
auto_renew_rule_type = fields.Selection( auto_renew_rule_type = fields.Selection(
[ [
@@ -184,7 +191,10 @@ class ContractAbstractContractLine(models.AbstractModel):
).property_product_pricelist ).property_product_pricelist
) )
product = line.product_id.with_context( product = line.product_id.with_context(
quantity=line.env.context.get("contract_line_qty", line.quantity,), quantity=line.env.context.get(
"contract_line_qty",
line.quantity,
),
pricelist=pricelist.id, pricelist=pricelist.id,
partner=line.contract_id.partner_id.id, partner=line.contract_id.partner_id.id,
date=line.env.context.get( date=line.env.context.get(

View File

@@ -25,10 +25,16 @@ class ContractContract(models.Model):
"portal.mixin", "portal.mixin",
] ]
active = fields.Boolean(default=True,) active = fields.Boolean(
code = fields.Char(string="Reference",) default=True,
)
code = fields.Char(
string="Reference",
)
group_id = fields.Many2one( group_id = fields.Many2one(
string="Group", comodel_name="account.analytic.account", ondelete="restrict", string="Group",
comodel_name="account.analytic.account",
ondelete="restrict",
) )
currency_id = fields.Many2one( currency_id = fields.Many2one(
compute="_compute_currency_id", compute="_compute_currency_id",
@@ -36,7 +42,10 @@ class ContractContract(models.Model):
comodel_name="res.currency", comodel_name="res.currency",
string="Currency", string="Currency",
) )
manual_currency_id = fields.Many2one(comodel_name="res.currency", readonly=True,) manual_currency_id = fields.Many2one(
comodel_name="res.currency",
readonly=True,
)
contract_template_id = fields.Many2one( contract_template_id = fields.Many2one(
string="Contract Template", comodel_name="contract.template" string="Contract Template", comodel_name="contract.template"
) )
@@ -77,7 +86,9 @@ class ContractContract(models.Model):
ondelete="restrict", ondelete="restrict",
) )
invoice_partner_id = fields.Many2one( invoice_partner_id = fields.Many2one(
string="Invoicing contact", comodel_name="res.partner", ondelete="restrict", string="Invoicing contact",
comodel_name="res.partner",
ondelete="restrict",
) )
partner_id = fields.Many2one( partner_id = fields.Many2one(
comodel_name="res.partner", inverse="_inverse_partner_id", required=True comodel_name="res.partner", inverse="_inverse_partner_id", required=True
@@ -103,10 +114,16 @@ class ContractContract(models.Model):
tracking=True, tracking=True,
) )
terminate_comment = fields.Text( terminate_comment = fields.Text(
string="Termination Comment", readonly=True, copy=False, tracking=True, string="Termination Comment",
readonly=True,
copy=False,
tracking=True,
) )
terminate_date = fields.Date( terminate_date = fields.Date(
string="Termination Date", readonly=True, copy=False, tracking=True, string="Termination Date",
readonly=True,
copy=False,
tracking=True,
) )
modification_ids = fields.One2many( modification_ids = fields.One2many(
comodel_name="contract.modification", comodel_name="contract.modification",
@@ -198,7 +215,15 @@ class ContractContract(models.Model):
invoices = ( invoices = (
self.env["account.move.line"] self.env["account.move.line"]
.search([("contract_line_id", "in", self.contract_line_ids.ids,)]) .search(
[
(
"contract_line_id",
"in",
self.contract_line_ids.ids,
)
]
)
.mapped("move_id") .mapped("move_id")
) )
# we are forced to always search for this for not losing possible <=v11 # we are forced to always search for this for not losing possible <=v11
@@ -221,7 +246,11 @@ class ContractContract(models.Model):
return currency or self.journal_id.currency_id or self.company_id.currency_id return currency or self.journal_id.currency_id or self.company_id.currency_id
@api.depends( @api.depends(
"manual_currency_id", "pricelist_id", "partner_id", "journal_id", "company_id", "manual_currency_id",
"pricelist_id",
"partner_id",
"journal_id",
"company_id",
) )
def _compute_currency_id(self): def _compute_currency_id(self):
for rec in self: for rec in self:
@@ -268,7 +297,8 @@ class ContractContract(models.Model):
contract.date_end = max(date_end) contract.date_end = max(date_end)
@api.depends( @api.depends(
"contract_line_ids.recurring_next_date", "contract_line_ids.is_canceled", "contract_line_ids.recurring_next_date",
"contract_line_ids.is_canceled",
) )
def _compute_recurring_next_date(self): def _compute_recurring_next_date(self):
for contract in self: for contract in self:

View File

@@ -22,7 +22,9 @@ class ContractLine(models.Model):
] ]
_order = "sequence,id" _order = "sequence,id"
sequence = fields.Integer(string="Sequence",) sequence = fields.Integer(
string="Sequence",
)
contract_id = fields.Many2one( contract_id = fields.Many2one(
comodel_name="contract.contract", comodel_name="contract.contract",
string="Contract", string="Contract",
@@ -32,10 +34,12 @@ class ContractLine(models.Model):
ondelete="cascade", ondelete="cascade",
) )
analytic_account_id = fields.Many2one( analytic_account_id = fields.Many2one(
string="Analytic account", comodel_name="account.analytic.account", string="Analytic account",
comodel_name="account.analytic.account",
) )
analytic_tag_ids = fields.Many2many( analytic_tag_ids = fields.Many2many(
comodel_name="account.analytic.tag", string="Analytic Tags", comodel_name="account.analytic.tag",
string="Analytic Tags",
) )
date_start = fields.Date(required=True) date_start = fields.Date(required=True)
date_end = fields.Date(compute="_compute_date_end", store=True, readonly=False) date_end = fields.Date(compute="_compute_date_end", store=True, readonly=False)
@@ -132,13 +136,16 @@ class ContractLine(models.Model):
self._set_recurrence_field("date_end") self._set_recurrence_field("date_end")
@api.depends( @api.depends(
"date_end", "termination_notice_rule_type", "termination_notice_interval", "date_end",
"termination_notice_rule_type",
"termination_notice_interval",
) )
def _compute_termination_notice_date(self): def _compute_termination_notice_date(self):
for rec in self: for rec in self:
if rec.date_end: if rec.date_end:
rec.termination_notice_date = rec.date_end - self.get_relative_delta( rec.termination_notice_date = rec.date_end - self.get_relative_delta(
rec.termination_notice_rule_type, rec.termination_notice_interval, rec.termination_notice_rule_type,
rec.termination_notice_interval,
) )
else: else:
rec.termination_notice_date = False rec.termination_notice_date = False
@@ -412,7 +419,10 @@ class ContractLine(models.Model):
) )
@api.onchange( @api.onchange(
"date_start", "is_auto_renew", "auto_renew_rule_type", "auto_renew_interval", "date_start",
"is_auto_renew",
"auto_renew_rule_type",
"auto_renew_interval",
) )
def _onchange_is_auto_renew(self): def _onchange_is_auto_renew(self):
"""Date end should be auto-computed if a contract line is set to """Date end should be auto-computed if a contract line is set to
@@ -420,7 +430,9 @@ class ContractLine(models.Model):
for rec in self.filtered("is_auto_renew"): for rec in self.filtered("is_auto_renew"):
if rec.date_start: if rec.date_start:
rec.date_end = self._get_first_date_end( rec.date_end = self._get_first_date_end(
rec.date_start, rec.auto_renew_rule_type, rec.auto_renew_interval, rec.date_start,
rec.auto_renew_rule_type,
rec.auto_renew_interval,
) )
@api.constrains("is_canceled", "is_auto_renew") @api.constrains("is_canceled", "is_auto_renew")
@@ -828,7 +840,10 @@ class ContractLine(models.Model):
post_message=False, post_message=False,
) )
contract_line |= rec.plan_successor( contract_line |= rec.plan_successor(
new_date_start, new_date_end, is_auto_renew, post_message=False, new_date_start,
new_date_end,
is_auto_renew,
post_message=False,
) )
else: else:
new_date_start = date_end + relativedelta(days=1) new_date_start = date_end + relativedelta(days=1)
@@ -847,7 +862,10 @@ class ContractLine(models.Model):
post_message=False, post_message=False,
) )
contract_line |= rec.plan_successor( contract_line |= rec.plan_successor(
new_date_start, new_date_end, is_auto_renew, post_message=False, new_date_start,
new_date_end,
is_auto_renew,
post_message=False,
) )
msg = _( msg = _(
"""Contract line for <strong>{product}</strong> """Contract line for <strong>{product}</strong>
@@ -856,7 +874,9 @@ class ContractLine(models.Model):
<br/> <br/>
- <strong>Suspension End</strong>: {new_date_end} - <strong>Suspension End</strong>: {new_date_end}
""".format( """.format(
product=rec.name, new_date_start=date_start, new_date_end=date_end, product=rec.name,
new_date_start=date_start,
new_date_end=date_end,
) )
) )
rec.contract_id.message_post(body=msg) rec.contract_id.message_post(body=msg)
@@ -1017,7 +1037,9 @@ class ContractLine(models.Model):
<br/> <br/>
- <strong>End</strong>: {new_date_end} - <strong>End</strong>: {new_date_end}
""".format( """.format(
product=rec.name, new_date_start=date_start, new_date_end=date_end, product=rec.name,
new_date_start=date_start,
new_date_end=date_end,
) )
) )
rec.contract_id.message_post(body=msg) rec.contract_id.message_post(body=msg)

View File

@@ -28,7 +28,8 @@ Criteria = namedtuple(
], ],
) )
Allowed = namedtuple( Allowed = namedtuple(
"Allowed", ["plan_successor", "stop_plan_successor", "stop", "cancel", "uncancel"], "Allowed",
["plan_successor", "stop_plan_successor", "stop", "cancel", "uncancel"],
) )

View File

@@ -19,7 +19,10 @@ class ContractModification(models.Model):
ondelete="cascade", ondelete="cascade",
index=True, index=True,
) )
sent = fields.Boolean(string="Sent", default=False,) sent = fields.Boolean(
string="Sent",
default=False,
)
@api.model_create_multi @api.model_create_multi
def create(self, vals_list): def create(self, vals_list):

View File

@@ -43,7 +43,9 @@ class ContractRecurrencyBasicMixin(models.AbstractModel):
), ),
) )
recurring_interval = fields.Integer( recurring_interval = fields.Integer(
default=1, string="Invoice Every", help="Invoice every (Days/Week/Month/Year)", default=1,
string="Invoice Every",
help="Invoice every (Days/Week/Month/Year)",
) )
date_start = fields.Date(string="Date Start") date_start = fields.Date(string="Date Start")
recurring_next_date = fields.Date(string="Date of Next Invoice") recurring_next_date = fields.Date(string="Date of Next Invoice")
@@ -80,10 +82,12 @@ class ContractRecurrencyMixin(models.AbstractModel):
) )
date_end = fields.Date(string="Date End", index=True) date_end = fields.Date(string="Date End", index=True)
next_period_date_start = fields.Date( next_period_date_start = fields.Date(
string="Next Period Start", compute="_compute_next_period_date_start", string="Next Period Start",
compute="_compute_next_period_date_start",
) )
next_period_date_end = fields.Date( next_period_date_end = fields.Date(
string="Next Period End", compute="_compute_next_period_date_end", string="Next Period End",
compute="_compute_next_period_date_end",
) )
last_date_invoiced = fields.Date( last_date_invoiced = fields.Date(
string="Last Date Invoiced", readonly=True, copy=False string="Last Date Invoiced", readonly=True, copy=False

View File

@@ -11,5 +11,7 @@ class ContractTag(models.Model):
name = fields.Char(required=True) name = fields.Char(required=True)
company_id = fields.Many2one( company_id = fields.Many2one(
"res.company", string="Company", default=lambda self: self.env.company.id, "res.company",
string="Company",
default=lambda self: self.env.company.id,
) )

View File

@@ -10,13 +10,17 @@ class ResPartner(models.Model):
_inherit = "res.partner" _inherit = "res.partner"
sale_contract_count = fields.Integer( sale_contract_count = fields.Integer(
string="Sale Contracts", compute="_compute_contract_count", string="Sale Contracts",
compute="_compute_contract_count",
) )
purchase_contract_count = fields.Integer( purchase_contract_count = fields.Integer(
string="Purchase Contracts", compute="_compute_contract_count", string="Purchase Contracts",
compute="_compute_contract_count",
) )
contract_ids = fields.One2many( contract_ids = fields.One2many(
comodel_name="contract.contract", inverse_name="partner_id", string="Contracts", comodel_name="contract.contract",
inverse_name="partner_id",
string="Contracts",
) )
def _get_partner_contract_domain(self): def _get_partner_contract_domain(self):

View File

@@ -539,7 +539,8 @@ class TestContract(TestContractBase):
self.contract.contract_template_id = self.template self.contract.contract_template_id = self.template
self.assertFalse( 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.contract_template_id = self.template
self.contract._onchange_contract_template_id() self.contract._onchange_contract_template_id()
@@ -1627,7 +1628,8 @@ class TestContract(TestContractBase):
self.assertFalse(new_line.is_canceled) self.assertFalse(new_line.is_canceled)
self.assertEqual(self.acct_line.successor_contract_line_id, new_line) self.assertEqual(self.acct_line.successor_contract_line_id, new_line)
self.assertEqual( 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): def test_cancel_uncancel_with_predecessor_has_successor(self):
@@ -1737,7 +1739,8 @@ class TestContract(TestContractBase):
[("contract_line_id", "in", contracts.mapped("contract_line_ids").ids)] [("contract_line_id", "in", contracts.mapped("contract_line_ids").ids)]
) )
self.assertEqual( 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): def test_contract_manually_create_invoice(self):
@@ -1764,7 +1767,8 @@ class TestContract(TestContractBase):
[("contract_line_id", "in", contracts.mapped("contract_line_ids").ids)] [("contract_line_id", "in", contracts.mapped("contract_line_ids").ids)]
) )
self.assertEqual( self.assertEqual(
len(contracts.mapped("contract_line_ids")), len(invoice_lines), len(contracts.mapped("contract_line_ids")),
len(invoice_lines),
) )
invoices = self.env["account.move"].search(action["domain"]) invoices = self.env["account.move"].search(action["domain"])
self.assertFalse(invoice_lines.mapped("move_id") - invoices) self.assertFalse(invoice_lines.mapped("move_id") - invoices)
@@ -1776,19 +1780,22 @@ class TestContract(TestContractBase):
self.acct_line.recurring_rule_type = "monthlylastday" self.acct_line.recurring_rule_type = "monthlylastday"
self.acct_line.date_end = "2018-03-15" self.acct_line.date_end = "2018-03-15"
first, last, recurring_next_date = self.acct_line._get_period_to_invoice( first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date, self.acct_line.last_date_invoiced,
self.acct_line.recurring_next_date,
) )
self.assertEqual(first, to_date("2018-01-05")) self.assertEqual(first, to_date("2018-01-05"))
self.assertEqual(last, to_date("2018-01-31")) self.assertEqual(last, to_date("2018-01-31"))
self.contract.recurring_create_invoice() self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice( first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date, self.acct_line.last_date_invoiced,
self.acct_line.recurring_next_date,
) )
self.assertEqual(first, to_date("2018-02-01")) self.assertEqual(first, to_date("2018-02-01"))
self.assertEqual(last, to_date("2018-02-28")) self.assertEqual(last, to_date("2018-02-28"))
self.contract.recurring_create_invoice() self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice( first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date, self.acct_line.last_date_invoiced,
self.acct_line.recurring_next_date,
) )
self.assertEqual(first, to_date("2018-03-01")) self.assertEqual(first, to_date("2018-03-01"))
self.assertEqual(last, to_date("2018-03-15")) self.assertEqual(last, to_date("2018-03-15"))
@@ -1800,7 +1807,8 @@ class TestContract(TestContractBase):
self.acct_line.recurring_rule_type = "monthlylastday" self.acct_line.recurring_rule_type = "monthlylastday"
self.acct_line.date_end = "2018-03-15" self.acct_line.date_end = "2018-03-15"
first, last, recurring_next_date = self.acct_line._get_period_to_invoice( first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date, self.acct_line.last_date_invoiced,
self.acct_line.recurring_next_date,
) )
self.assertEqual(first, to_date("2018-01-05")) self.assertEqual(first, to_date("2018-01-05"))
self.assertEqual(last, to_date("2018-01-31")) self.assertEqual(last, to_date("2018-01-31"))
@@ -1808,7 +1816,8 @@ class TestContract(TestContractBase):
self.assertEqual(self.acct_line.recurring_next_date, to_date("2018-01-05")) self.assertEqual(self.acct_line.recurring_next_date, to_date("2018-01-05"))
self.contract.recurring_create_invoice() self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice( first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date, self.acct_line.last_date_invoiced,
self.acct_line.recurring_next_date,
) )
self.assertEqual(first, to_date("2018-02-01")) self.assertEqual(first, to_date("2018-02-01"))
self.assertEqual(last, to_date("2018-02-28")) self.assertEqual(last, to_date("2018-02-28"))
@@ -1817,7 +1826,8 @@ class TestContract(TestContractBase):
self.assertEqual(self.acct_line.last_date_invoiced, to_date("2018-01-31")) self.assertEqual(self.acct_line.last_date_invoiced, to_date("2018-01-31"))
self.contract.recurring_create_invoice() self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice( first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date, self.acct_line.last_date_invoiced,
self.acct_line.recurring_next_date,
) )
self.assertEqual(first, to_date("2018-03-01")) self.assertEqual(first, to_date("2018-03-01"))
self.assertEqual(last, to_date("2018-03-15")) self.assertEqual(last, to_date("2018-03-15"))
@@ -1826,7 +1836,8 @@ class TestContract(TestContractBase):
self.assertEqual(self.acct_line.last_date_invoiced, to_date("2018-02-28")) self.assertEqual(self.acct_line.last_date_invoiced, to_date("2018-02-28"))
self.contract.recurring_create_invoice() self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice( first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date, self.acct_line.last_date_invoiced,
self.acct_line.recurring_next_date,
) )
self.assertFalse(first) self.assertFalse(first)
self.assertFalse(last) self.assertFalse(last)
@@ -1841,13 +1852,15 @@ class TestContract(TestContractBase):
self.acct_line.date_end = "2018-08-15" self.acct_line.date_end = "2018-08-15"
self.contract.recurring_create_invoice() self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice( first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date, self.acct_line.last_date_invoiced,
self.acct_line.recurring_next_date,
) )
self.assertEqual(first, to_date("2018-02-05")) self.assertEqual(first, to_date("2018-02-05"))
self.assertEqual(last, to_date("2018-03-04")) self.assertEqual(last, to_date("2018-03-04"))
self.acct_line.recurring_next_date = "2018-06-05" self.acct_line.recurring_next_date = "2018-06-05"
first, last, recurring_next_date = self.acct_line._get_period_to_invoice( first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date, self.acct_line.last_date_invoiced,
self.acct_line.recurring_next_date,
) )
self.assertEqual(first, to_date("2018-02-05")) self.assertEqual(first, to_date("2018-02-05"))
self.assertEqual(last, to_date("2018-07-04")) self.assertEqual(last, to_date("2018-07-04"))
@@ -1859,13 +1872,15 @@ class TestContract(TestContractBase):
self.acct_line.date_end = "2018-08-15" self.acct_line.date_end = "2018-08-15"
self.contract.recurring_create_invoice() self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice( first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date, self.acct_line.last_date_invoiced,
self.acct_line.recurring_next_date,
) )
self.assertEqual(first, to_date("2018-02-05")) self.assertEqual(first, to_date("2018-02-05"))
self.assertEqual(last, to_date("2018-03-04")) self.assertEqual(last, to_date("2018-03-04"))
self.acct_line.recurring_next_date = "2018-06-05" self.acct_line.recurring_next_date = "2018-06-05"
first, last, recurring_next_date = self.acct_line._get_period_to_invoice( first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date, self.acct_line.last_date_invoiced,
self.acct_line.recurring_next_date,
) )
self.assertEqual(first, to_date("2018-02-05")) self.assertEqual(first, to_date("2018-02-05"))
self.assertEqual(last, to_date("2018-06-04")) self.assertEqual(last, to_date("2018-06-04"))
@@ -1876,19 +1891,22 @@ class TestContract(TestContractBase):
self.acct_line.recurring_rule_type = "monthly" self.acct_line.recurring_rule_type = "monthly"
self.acct_line.date_end = "2018-03-15" self.acct_line.date_end = "2018-03-15"
first, last, recurring_next_date = self.acct_line._get_period_to_invoice( first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date, self.acct_line.last_date_invoiced,
self.acct_line.recurring_next_date,
) )
self.assertEqual(first, to_date("2018-01-05")) self.assertEqual(first, to_date("2018-01-05"))
self.assertEqual(last, to_date("2018-02-04")) self.assertEqual(last, to_date("2018-02-04"))
self.contract.recurring_create_invoice() self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice( first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date, self.acct_line.last_date_invoiced,
self.acct_line.recurring_next_date,
) )
self.assertEqual(first, to_date("2018-02-05")) self.assertEqual(first, to_date("2018-02-05"))
self.assertEqual(last, to_date("2018-03-04")) self.assertEqual(last, to_date("2018-03-04"))
self.contract.recurring_create_invoice() self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice( first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date, self.acct_line.last_date_invoiced,
self.acct_line.recurring_next_date,
) )
self.assertEqual(first, to_date("2018-03-05")) self.assertEqual(first, to_date("2018-03-05"))
self.assertEqual(last, to_date("2018-03-15")) self.assertEqual(last, to_date("2018-03-15"))
@@ -1899,19 +1917,22 @@ class TestContract(TestContractBase):
self.acct_line.recurring_rule_type = "monthly" self.acct_line.recurring_rule_type = "monthly"
self.acct_line.date_end = "2018-03-15" self.acct_line.date_end = "2018-03-15"
first, last, recurring_next_date = self.acct_line._get_period_to_invoice( first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date, self.acct_line.last_date_invoiced,
self.acct_line.recurring_next_date,
) )
self.assertEqual(first, to_date("2018-01-05")) self.assertEqual(first, to_date("2018-01-05"))
self.assertEqual(last, to_date("2018-02-04")) self.assertEqual(last, to_date("2018-02-04"))
self.contract.recurring_create_invoice() self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice( first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date, self.acct_line.last_date_invoiced,
self.acct_line.recurring_next_date,
) )
self.assertEqual(first, to_date("2018-02-05")) self.assertEqual(first, to_date("2018-02-05"))
self.assertEqual(last, to_date("2018-03-04")) self.assertEqual(last, to_date("2018-03-04"))
self.contract.recurring_create_invoice() self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice( first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date, self.acct_line.last_date_invoiced,
self.acct_line.recurring_next_date,
) )
self.assertEqual(first, to_date("2018-03-05")) self.assertEqual(first, to_date("2018-03-05"))
self.assertEqual(last, to_date("2018-03-15")) self.assertEqual(last, to_date("2018-03-15"))
@@ -1922,19 +1943,22 @@ class TestContract(TestContractBase):
self.acct_line.recurring_rule_type = "yearly" self.acct_line.recurring_rule_type = "yearly"
self.acct_line.date_end = "2020-03-15" self.acct_line.date_end = "2020-03-15"
first, last, recurring_next_date = self.acct_line._get_period_to_invoice( first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date, self.acct_line.last_date_invoiced,
self.acct_line.recurring_next_date,
) )
self.assertEqual(first, to_date("2018-01-05")) self.assertEqual(first, to_date("2018-01-05"))
self.assertEqual(last, to_date("2019-01-04")) self.assertEqual(last, to_date("2019-01-04"))
self.contract.recurring_create_invoice() self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice( first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date, self.acct_line.last_date_invoiced,
self.acct_line.recurring_next_date,
) )
self.assertEqual(first, to_date("2019-01-05")) self.assertEqual(first, to_date("2019-01-05"))
self.assertEqual(last, to_date("2020-01-04")) self.assertEqual(last, to_date("2020-01-04"))
self.contract.recurring_create_invoice() self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice( first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date, self.acct_line.last_date_invoiced,
self.acct_line.recurring_next_date,
) )
self.assertEqual(first, to_date("2020-01-05")) self.assertEqual(first, to_date("2020-01-05"))
self.assertEqual(last, to_date("2020-03-15")) self.assertEqual(last, to_date("2020-03-15"))
@@ -1945,19 +1969,22 @@ class TestContract(TestContractBase):
self.acct_line.recurring_rule_type = "yearly" self.acct_line.recurring_rule_type = "yearly"
self.acct_line.date_end = "2020-03-15" self.acct_line.date_end = "2020-03-15"
first, last, recurring_next_date = self.acct_line._get_period_to_invoice( first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date, self.acct_line.last_date_invoiced,
self.acct_line.recurring_next_date,
) )
self.assertEqual(first, to_date("2018-01-05")) self.assertEqual(first, to_date("2018-01-05"))
self.assertEqual(last, to_date("2019-01-04")) self.assertEqual(last, to_date("2019-01-04"))
self.contract.recurring_create_invoice() self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice( first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date, self.acct_line.last_date_invoiced,
self.acct_line.recurring_next_date,
) )
self.assertEqual(first, to_date("2019-01-05")) self.assertEqual(first, to_date("2019-01-05"))
self.assertEqual(last, to_date("2020-01-04")) self.assertEqual(last, to_date("2020-01-04"))
self.contract.recurring_create_invoice() self.contract.recurring_create_invoice()
first, last, recurring_next_date = self.acct_line._get_period_to_invoice( first, last, recurring_next_date = self.acct_line._get_period_to_invoice(
self.acct_line.last_date_invoiced, self.acct_line.recurring_next_date, self.acct_line.last_date_invoiced,
self.acct_line.recurring_next_date,
) )
self.assertEqual(first, to_date("2020-01-05")) self.assertEqual(first, to_date("2020-01-05"))
self.assertEqual(last, to_date("2020-03-15")) self.assertEqual(last, to_date("2020-03-15"))
@@ -2302,7 +2329,9 @@ class TestContract(TestContractBase):
group_can_terminate_contract.users |= self.env.user group_can_terminate_contract.users |= self.env.user
with self.assertRaises(ValidationError): with self.assertRaises(ValidationError):
self.contract._terminate_contract( self.contract._terminate_contract(
self.terminate_reason, "terminate_comment", to_date("2018-02-13"), self.terminate_reason,
"terminate_comment",
to_date("2018-02-13"),
) )
def test_recurrency_propagation(self): def test_recurrency_propagation(self):

View File

@@ -24,7 +24,8 @@ class TestContractPortal(odoo.tests.HttpCase):
self.authenticate("portal", "portal") self.authenticate("portal", "portal")
http.root.session_store.save(self.session) http.root.session_store.save(self.session)
url_contract = "/my/contracts/{}?access_token={}".format( url_contract = "/my/contracts/{}?access_token={}".format(
contract.id, contract.access_token, contract.id,
contract.access_token,
) )
self.assertEqual(self.url_open(url=url_contract).status_code, 200) self.assertEqual(self.url_open(url=url_contract).status_code, 200)
contract.message_unsubscribe(partner_ids=user_portal.partner_id.ids) contract.message_unsubscribe(partner_ids=user_portal.partner_id.ids)

View File

@@ -14,7 +14,8 @@ class ContractManuallyCreateInvoice(models.TransientModel):
compute="_compute_contract_to_invoice_ids" compute="_compute_contract_to_invoice_ids"
) )
contract_to_invoice_ids = fields.Many2many( contract_to_invoice_ids = fields.Many2many(
comodel_name="contract.contract", compute="_compute_contract_to_invoice_ids", comodel_name="contract.contract",
compute="_compute_contract_to_invoice_ids",
) )
contract_type = fields.Selection( contract_type = fields.Selection(
selection=[("sale", "Customer"), ("purchase", "Supplier")], selection=[("sale", "Customer"), ("purchase", "Supplier")],

2
requirements.txt Normal file
View File

@@ -0,0 +1,2 @@
# generated from manifests external_dependencies
python-dateutil

View File

@@ -0,0 +1 @@
../../../../contract

6
setup/contract/setup.py Normal file
View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)