[12.0][ADD] - add auto_renew_interval, auto_renew_rule_type fields to sale order line

This commit is contained in:
sbejaoui
2020-02-17 18:08:22 +01:00
committed by Ilyas
parent 6a45215faa
commit d1e5f6bb69
6 changed files with 88 additions and 16 deletions

View File

@@ -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
)

View File

@@ -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):

View File

@@ -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,

View File

@@ -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'

View File

@@ -38,16 +38,31 @@
</group>
<group>
<field name="is_auto_renew"/>
<label for="termination_notice_interval" attrs="{'invisible': [('is_auto_renew', '=', False)],
'required':[('is_contract', '=', True)]}"/>
<div attrs="{'invisible': [('is_auto_renew', '=', False)],
'required':[('is_auto_renew', '=', True)]}">
<field name="termination_notice_interval"
class="oe_inline" nolabel="1"/>
<field name="termination_notice_rule_type"
class="oe_inline" nolabel="1"/>
</group>
<group>
<group attrs="{'invisible':[('is_auto_renew', '=', False)]}">
<label for="auto_renew_interval"/>
<div>
<field name="auto_renew_interval"
class="oe_inline" nolabel="1"
attrs="{'required':[('is_auto_renew', '=', True)]}"/>
<field name="auto_renew_rule_type"
class="oe_inline" nolabel="1"
attrs="{'required':[('is_auto_renew', '=', True)]}"/>
</div>
</group>
<group attrs="{'invisible':[('is_auto_renew', '=', False)]}">
<label for="termination_notice_interval"/>
<div>
<field name="termination_notice_interval"
class="oe_inline" nolabel="1"
attrs="{'required':[('is_auto_renew', '=', True)]}"/>
<field name="termination_notice_rule_type"
class="oe_inline" nolabel="1"
attrs="{'required':[('is_auto_renew', '=', True)]}"/>
</div>
</group>
</group>
</page>
</xpath>
</field>

View File

@@ -67,6 +67,22 @@
<group attrs="{'invisible': [('is_contract', '=', False)]}">
<field name="date_end" attrs="{'required': [('is_contract', '=', True)]}"/>
</group>
<group
attrs="{'invisible': [('is_contract', '=', False)]}">
<field name="is_auto_renew"/>
</group>
<group
attrs="{'invisible': [('is_auto_renew', '=', False)]}">
<label for="auto_renew_interval"/>
<div>
<field name="auto_renew_interval"
class="oe_inline" nolabel="1"
attrs="{'required':[('is_auto_renew', '=', True)]}"/>
<field name="auto_renew_rule_type"
class="oe_inline" nolabel="1"
attrs="{'required':[('is_auto_renew', '=', True)]}"/>
</div>
</group>
</xpath>
<xpath expr="//field[@name='order_line']/tree//field[@name='price_total']"
position="after">