diff --git a/product_contract/models/contract_line.py b/product_contract/models/contract_line.py
index 96978a895..1ab326ef8 100644
--- a/product_contract/models/contract_line.py
+++ b/product_contract/models/contract_line.py
@@ -46,8 +46,8 @@ class ContractLine(models.Model):
)
rec.recurring_interval = 1
rec.is_auto_renew = rec.product_id.is_auto_renew
- rec.auto_renew_interval = rec.product_id.default_qty
- rec.auto_renew_rule_type = rec._get_auto_renew_rule_type()
+ rec.auto_renew_interval = rec.product_id.auto_renew_interval
+ rec.auto_renew_rule_type = rec.product_id.auto_renew_rule_type
rec.termination_notice_interval = (
rec.product_id.termination_notice_interval
)
diff --git a/product_contract/models/product_template.py b/product_contract/models/product_template.py
index 1ca3f75e4..2eb2eca56 100644
--- a/product_contract/models/product_template.py
+++ b/product_contract/models/product_template.py
@@ -41,6 +41,22 @@ class ProductTemplate(models.Model):
default='monthly',
string='Termination Notice type',
)
+ auto_renew_interval = fields.Integer(
+ default=1,
+ string='Renew Every',
+ help="Renew every (Days/Week/Month/Year)",
+ )
+ auto_renew_rule_type = fields.Selection(
+ [
+ ('daily', 'Day(s)'),
+ ('weekly', 'Week(s)'),
+ ('monthly', 'Month(s)'),
+ ('yearly', 'Year(s)'),
+ ],
+ default='yearly',
+ string='Renewal type',
+ help="Specify Interval for automatic renewal.",
+ )
@api.onchange('is_contract')
def _change_is_contract(self):
diff --git a/product_contract/models/sale_order_line.py b/product_contract/models/sale_order_line.py
index 4f29da01c..dc21fa9ad 100644
--- a/product_contract/models/sale_order_line.py
+++ b/product_contract/models/sale_order_line.py
@@ -50,6 +50,23 @@ class SaleOrderLine(models.Model):
required=False,
copy=False,
)
+ is_auto_renew = fields.Boolean(string="Auto Renew", default=False)
+ auto_renew_interval = fields.Integer(
+ default=1,
+ string='Renew Every',
+ help="Renew every (Days/Week/Month/Year)",
+ )
+ auto_renew_rule_type = fields.Selection(
+ [
+ ('daily', 'Day(s)'),
+ ('weekly', 'Week(s)'),
+ ('monthly', 'Month(s)'),
+ ('yearly', 'Year(s)'),
+ ],
+ default='yearly',
+ string='Renewal type',
+ help="Specify Interval for automatic renewal.",
+ )
@api.multi
def _get_auto_renew_rule_type(self):
@@ -79,6 +96,14 @@ class SaleOrderLine(models.Model):
)
- relativedelta(days=1)
)
+ rec.is_auto_renew = rec.product_id.is_auto_renew
+ if rec.is_auto_renew:
+ rec.auto_renew_interval = (
+ rec.product_id.auto_renew_interval
+ )
+ rec.auto_renew_rule_type = (
+ rec.product_id.auto_renew_rule_type
+ )
@api.onchange('date_start', 'product_uom_qty', 'recurring_rule_type')
def onchange_date_start(self):
@@ -146,9 +171,9 @@ class SaleOrderLine(models.Model):
'recurring_interval': 1,
'recurring_invoicing_type': self.recurring_invoicing_type,
'recurring_rule_type': self.recurring_rule_type,
- 'is_auto_renew': self.product_id.is_auto_renew,
- 'auto_renew_interval': self.product_uom_qty,
- 'auto_renew_rule_type': self._get_auto_renew_rule_type(),
+ 'is_auto_renew': self.is_auto_renew,
+ 'auto_renew_interval': self.auto_renew_interval,
+ 'auto_renew_rule_type': self.auto_renew_rule_type,
'termination_notice_interval': termination_notice_interval,
'termination_notice_rule_type': termination_notice_rule_type,
'contract_id': contract.id,
diff --git a/product_contract/tests/test_sale_order.py b/product_contract/tests/test_sale_order.py
index 307cf9084..a71d95b81 100644
--- a/product_contract/tests/test_sale_order.py
+++ b/product_contract/tests/test_sale_order.py
@@ -313,8 +313,8 @@ class TestSaleOrder(TransactionCase):
)
self.assertEqual(self.contract_line.recurring_interval, 1)
self.assertEqual(self.contract_line.is_auto_renew, True)
- self.assertEqual(self.contract_line.auto_renew_interval, 12)
- self.assertEqual(self.contract_line.auto_renew_rule_type, 'monthly')
+ self.assertEqual(self.contract_line.auto_renew_interval, 1)
+ self.assertEqual(self.contract_line.auto_renew_rule_type, 'yearly')
self.assertEqual(self.contract_line.termination_notice_interval, 6)
self.assertEqual(
self.contract_line.termination_notice_rule_type, 'weekly'
diff --git a/product_contract/views/product_template.xml b/product_contract/views/product_template.xml
index 057ec95bc..59ad6e7eb 100644
--- a/product_contract/views/product_template.xml
+++ b/product_contract/views/product_template.xml
@@ -38,15 +38,30 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/product_contract/views/sale_order.xml b/product_contract/views/sale_order.xml
index 0805121fd..24ab4d1c7 100644
--- a/product_contract/views/sale_order.xml
+++ b/product_contract/views/sale_order.xml
@@ -67,6 +67,22 @@
+
+
+
+
+
+
+
+
+
+