Make description on subscription line optional

issue7440
review48451002
This commit is contained in:
Cédric Krier
2018-06-18 21:51:37 +02:00
parent 041fcff250
commit 01775b5fa1
2 changed files with 25 additions and 7 deletions
+2
View File
@@ -1,3 +1,5 @@
* Make description on subscription line optional
Version 4.8.0 - 2018-04-23
* Bug fixes (see mercurial logs for details)
* Check pending subscription to erase party
+23 -7
View File
@@ -7,6 +7,7 @@ from itertools import groupby
from sql import operators, Literal
from sql.conditionals import Coalesce
from trytond import backend
from trytond.model import ModelSQL, ModelView, Workflow, fields, \
sequence_ordered
from trytond.pool import Pool
@@ -372,7 +373,6 @@ class Subscription(Workflow, ModelSQL, ModelView):
class Line(sequence_ordered(), ModelSQL, ModelView):
"Subscription Line"
__name__ = 'sale.subscription.line'
_rec_name = 'description'
subscription = fields.Many2One(
'sale.subscription', "Subscription", required=True, select=True,
@@ -399,7 +399,7 @@ class Line(sequence_ordered(), ModelSQL, ModelView):
'readonly': Eval('subscription_state') != 'draft',
},
depends=['subscription_state'])
description = fields.Text("Description", required=True,
description = fields.Text("Description",
states={
'readonly': Eval('subscription_state') != 'draft',
},
@@ -488,6 +488,16 @@ class Line(sequence_ordered(), ModelSQL, ModelView):
depends=['subscription_end_date', 'start_date',
'next_consumption_date', 'subscription_state', 'consumed'])
@classmethod
def __register__(cls, module):
TableHandler = backend.get('TableHandler')
super(Line, cls).__register__(module)
table_h = TableHandler(cls, module)
# Migration from 4.8: drop required on description
table_h.not_null_action('description', action='remove')
@fields.depends('subscription', '_parent_subscription.state')
def on_change_with_subscription_state(self, name=None):
if self.subscription:
@@ -518,7 +528,7 @@ class Line(sequence_ordered(), ModelSQL, ModelView):
if self.service:
return self.service.product.default_uom_category.id
@fields.depends('service', 'quantity', 'unit', 'description',
@fields.depends('service', 'quantity', 'unit',
'subscription', '_parent_subscription.party',
methods=['_get_context_sale_price'])
def on_change_service(self):
@@ -550,10 +560,6 @@ class Line(sequence_ordered(), ModelSQL, ModelView):
self.unit_price = self.unit_price.quantize(
Decimal(1) / 10 ** self.__class__.unit_price.digits[1])
if not self.description:
with Transaction().set_context(party_context):
self.description = Product(product.id).rec_name
self.consumption_recurrence = self.service.consumption_recurrence
self.consumption_delay = self.service.consumption_delay
@@ -585,6 +591,16 @@ class Line(sequence_ordered(), ModelSQL, ModelView):
def default_consumed(cls):
return False
def get_rec_name(self, name):
return '%s @ %s' % (self.service.rec_name, self.subscription.rec_name)
@classmethod
def search_rec_name(cls, name, clause):
return ['OR',
('subscription.rec_name',) + tuple(clause[1:]),
('service.rec_name',) + tuple(clause[1:]),
]
@classmethod
def domain_next_consumption_date_delayed(cls, domain, tables):
field = cls.next_consumption_date_delayed._field