|
@ -51,6 +51,14 @@ class SaleOrderLine(models.Model): |
|
|
copy=False, |
|
|
copy=False, |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
@api.multi |
|
|
|
|
|
def _get_auto_renew_rule_type(self): |
|
|
|
|
|
"""monthly last day don't make sense for auto_renew_rule_type""" |
|
|
|
|
|
self.ensure_one() |
|
|
|
|
|
if self.recurring_rule_type == "monthlylastday": |
|
|
|
|
|
return "monthly" |
|
|
|
|
|
return self.recurring_rule_type |
|
|
|
|
|
|
|
|
@api.onchange('product_id') |
|
|
@api.onchange('product_id') |
|
|
def onchange_product(self): |
|
|
def onchange_product(self): |
|
|
contract_line_env = self.env['account.analytic.invoice.line'] |
|
|
contract_line_env = self.env['account.analytic.invoice.line'] |
|
@ -62,10 +70,11 @@ class SaleOrderLine(models.Model): |
|
|
rec.product_id.recurring_invoicing_type |
|
|
rec.product_id.recurring_invoicing_type |
|
|
) |
|
|
) |
|
|
rec.date_start = rec.date_start or fields.Date.today() |
|
|
rec.date_start = rec.date_start or fields.Date.today() |
|
|
|
|
|
|
|
|
rec.date_end = ( |
|
|
rec.date_end = ( |
|
|
rec.date_start |
|
|
rec.date_start |
|
|
+ contract_line_env.get_relative_delta( |
|
|
+ contract_line_env.get_relative_delta( |
|
|
rec.product_id.recurring_rule_type, |
|
|
|
|
|
|
|
|
rec._get_auto_renew_rule_type(), |
|
|
int(rec.product_uom_qty), |
|
|
int(rec.product_uom_qty), |
|
|
) |
|
|
) |
|
|
- relativedelta(days=1) |
|
|
- relativedelta(days=1) |
|
@ -73,16 +82,16 @@ class SaleOrderLine(models.Model): |
|
|
|
|
|
|
|
|
@api.onchange('date_start', 'product_uom_qty', 'recurring_rule_type') |
|
|
@api.onchange('date_start', 'product_uom_qty', 'recurring_rule_type') |
|
|
def onchange_date_start(self): |
|
|
def onchange_date_start(self): |
|
|
|
|
|
contract_line_env = self.env['account.analytic.invoice.line'] |
|
|
for rec in self: |
|
|
for rec in self: |
|
|
if not rec.date_start: |
|
|
if not rec.date_start: |
|
|
rec.date_end = False |
|
|
rec.date_end = False |
|
|
else: |
|
|
else: |
|
|
rec.date_end = ( |
|
|
rec.date_end = ( |
|
|
rec.date_start |
|
|
rec.date_start |
|
|
+ self.env[ |
|
|
|
|
|
'account.analytic.invoice.line' |
|
|
|
|
|
].get_relative_delta( |
|
|
|
|
|
rec.recurring_rule_type, int(rec.product_uom_qty) |
|
|
|
|
|
|
|
|
+ contract_line_env.get_relative_delta( |
|
|
|
|
|
rec._get_auto_renew_rule_type(), |
|
|
|
|
|
int(rec.product_uom_qty), |
|
|
) |
|
|
) |
|
|
- relativedelta(days=1) |
|
|
- relativedelta(days=1) |
|
|
) |
|
|
) |
|
@ -134,7 +143,7 @@ class SaleOrderLine(models.Model): |
|
|
'recurring_rule_type': self.recurring_rule_type, |
|
|
'recurring_rule_type': self.recurring_rule_type, |
|
|
'is_auto_renew': self.product_id.is_auto_renew, |
|
|
'is_auto_renew': self.product_id.is_auto_renew, |
|
|
'auto_renew_interval': self.product_uom_qty, |
|
|
'auto_renew_interval': self.product_uom_qty, |
|
|
'auto_renew_rule_type': self.product_id.recurring_rule_type, |
|
|
|
|
|
|
|
|
'auto_renew_rule_type': self._get_auto_renew_rule_type(), |
|
|
'termination_notice_interval': termination_notice_interval, |
|
|
'termination_notice_interval': termination_notice_interval, |
|
|
'termination_notice_rule_type': termination_notice_rule_type, |
|
|
'termination_notice_rule_type': termination_notice_rule_type, |
|
|
'contract_id': contract.id, |
|
|
'contract_id': contract.id, |
|
|