diff --git a/contract_sale_generation/__manifest__.py b/contract_sale_generation/__manifest__.py
index 74af8013d..d9b807fff 100644
--- a/contract_sale_generation/__manifest__.py
+++ b/contract_sale_generation/__manifest__.py
@@ -5,7 +5,7 @@
{
"name": "Contracts Management - Recurring Sales",
- "version": "14.0.1.0.1",
+ "version": "15.0.1.0.1",
"category": "Contract Management",
"license": "AGPL-3",
"author": "ACSONE SA/NV, PESOL, Odoo Community Association (OCA)",
diff --git a/contract_sale_generation/models/abstract_contract.py b/contract_sale_generation/models/abstract_contract.py
index 84f8228b4..b5d7dcd62 100644
--- a/contract_sale_generation/models/abstract_contract.py
+++ b/contract_sale_generation/models/abstract_contract.py
@@ -8,7 +8,7 @@ from odoo import api, fields, models
class ContractAbstractContract(models.AbstractModel):
_inherit = "contract.abstract.contract"
- sale_autoconfirm = fields.Boolean(string="Sale Autoconfirm")
+ sale_autoconfirm = fields.Boolean()
@api.model
def _selection_generation_type(self):
diff --git a/contract_sale_generation/models/contract.py b/contract_sale_generation/models/contract.py
index f15d2a694..80ba905b7 100644
--- a/contract_sale_generation/models/contract.py
+++ b/contract_sale_generation/models/contract.py
@@ -75,11 +75,11 @@ class ContractContract(models.Model):
self.message_post(
body=_(
"Contract manually sale order: "
- ''
+ ''
"Sale Order"
""
)
- % (sale_rec._name, sale_rec.id)
+ % {"model": sale_rec._name, "id": sale_rec.id}
)
return sales
diff --git a/contract_sale_generation/models/contract_line.py b/contract_sale_generation/models/contract_line.py
index a3005b8b8..ebbb32749 100644
--- a/contract_sale_generation/models/contract_line.py
+++ b/contract_sale_generation/models/contract_line.py
@@ -25,7 +25,7 @@ class ContractLine(models.Model):
dates = self._get_period_to_invoice(
self.last_date_invoiced, self.recurring_next_date
)
- sale_line_vals = self._prepare_sale_line_vals(dates, order_id)
+ sale_line_vals = self._prepare_sale_line_vals(dates, order_id=order_id)
order_line = (
self.env["sale.order.line"]
diff --git a/contract_sale_generation/tests/common.py b/contract_sale_generation/tests/common.py
index cea97f152..fe100b02f 100644
--- a/contract_sale_generation/tests/common.py
+++ b/contract_sale_generation/tests/common.py
@@ -24,6 +24,12 @@ class ContractSaleCommon:
"name": "Contracts",
}
)
+ cls.payment_term_id = cls.env.ref(
+ "account.account_payment_term_end_following_month"
+ )
+ cls.fiscal_position_id = cls.env["account.fiscal.position"].create(
+ {"name": "Contracts"}
+ )
contract_date = "2020-01-15"
cls.pricelist = cls.env["product.pricelist"].create(
{
@@ -34,6 +40,8 @@ class ContractSaleCommon:
{
"name": "partner test contract",
"property_product_pricelist": cls.pricelist.id,
+ "property_payment_term_id": cls.payment_term_id.id,
+ "property_account_position_id": cls.fiscal_position_id.id,
}
)
cls.product_1 = cls.env.ref("product.product_product_1")
diff --git a/contract_sale_generation/tests/test_contract_sale.py b/contract_sale_generation/tests/test_contract_sale.py
index 51ae1ee90..7f07fad3d 100644
--- a/contract_sale_generation/tests/test_contract_sale.py
+++ b/contract_sale_generation/tests/test_contract_sale.py
@@ -3,15 +3,10 @@
# Copyright 2017 Angel Moya
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-from odoo import fields
from odoo.exceptions import ValidationError
from odoo.tests.common import SavepointCase
-from .common import ContractSaleCommon
-
-
-def to_date(date):
- return fields.Date.to_date(date)
+from .common import ContractSaleCommon, to_date
class TestContractSale(ContractSaleCommon, SavepointCase):
@@ -96,6 +91,11 @@ class TestContractSale(ContractSaleCommon, SavepointCase):
self.contract_line.recurring_invoicing_type = "post-paid"
self.contract_line.date_end = "2020-03-15"
self.contract_line._onchange_is_auto_renew()
+ # If we do not recompute recurring_next_date
+ # then it maintains it's 'old' value.
+ # TODO: Research that
+ recurring_next_date = self.contract_line.recurring_next_date
+ self.assertGreaterEqual(recurring_next_date, self.contract_line.date_start)
contracts = self.contract2
for _i in range(10):
contracts |= self.contract.copy({"generation_type": "sale"})
@@ -108,7 +108,43 @@ class TestContractSale(ContractSaleCommon, SavepointCase):
len(order_lines),
)
- def test_contract_sale_analytic(self):
+ def test_contract_sale_analytic_payment_term_fiscal_position(self):
+ # Call onchange in order to retrieve
+ # payment term and fiscal position
+ self.contract._onchange_partner_id()
orders = self.env["sale.order"].browse()
orders |= self.contract.recurring_create_sale()
self.assertEqual(self.analytic_account, orders.mapped("analytic_account_id"))
+ self.assertEqual(self.payment_term_id, orders.mapped("payment_term_id"))
+ self.assertEqual(self.fiscal_position_id, orders.mapped("fiscal_position_id"))
+
+ def test_recurring_method_retrieval(self):
+ self.assertNotEqual(
+ self.contract._get_recurring_create_func(create_type="sale"),
+ self.contract._get_recurring_create_func(create_type="invoice"),
+ )
+
+ def test__prepare_recurring_sales_values_no_date_ref(self):
+ self.contract.recurring_next_date = False
+ self.assertEqual(self.contract._prepare_recurring_sales_values(), [])
+
+ def test__prepare_recurring_sales_values_no_contract_lines(self):
+ a_contract_with_no_lines = self.env["contract.contract"].create(
+ {
+ "name": "No lines Contract",
+ "partner_id": self.partner.id,
+ "generation_type": "sale",
+ "date_start": "2020-01-15",
+ }
+ )
+ self.assertEqual(a_contract_with_no_lines._prepare_recurring_sales_values(), [])
+
+ def test__prepare_sale_line_vals_with_order_id(self):
+ order = self.contract.recurring_create_sale()[0]
+ recurring_next_date = self.contract.recurring_next_date
+ date_start = self.contract.date_start
+ date_end = self.contract.date_end
+ dates = [date_start, date_end, recurring_next_date]
+ for line in self.contract._get_lines_to_invoice(recurring_next_date):
+ line_vals = line._prepare_sale_line_vals(dates, order)
+ self.assertEqual(line_vals["order_id"], order.id)
diff --git a/contract_sale_generation/tests/test_contract_sale_recurrency.py b/contract_sale_generation/tests/test_contract_sale_recurrency.py
index 63ffd539b..16572a55c 100644
--- a/contract_sale_generation/tests/test_contract_sale_recurrency.py
+++ b/contract_sale_generation/tests/test_contract_sale_recurrency.py
@@ -9,11 +9,6 @@ from odoo.tests.common import SavepointCase
from .common import ContractSaleCommon
-
-def to_date(date):
- return fields.Date.to_date(date)
-
-
today = "2020-01-15"