changeset 91b87bd63e29 in modules/sale_opportunity:default
details:
https://hg.tryton.org/modules/sale_opportunity?cmd=changeset;node=91b87bd63e29
description:
Remove global variables used for field definitions
They give the false idea that they can be extended or reused which is
not the
case.
issue8967
review252851012
diffstat:
opportunity.py | 76 +++++++++++++++++++++++++++++++--------------------------
1 files changed, 41 insertions(+), 35 deletions(-)
diffs (143 lines):
diff -r f137d79f3708 -r 91b87bd63e29 opportunity.py
--- a/opportunity.py Fri Dec 06 17:33:47 2019 +0100
+++ b/opportunity.py Sat Jan 25 20:18:49 2020 +0100
@@ -16,33 +16,23 @@
from trytond.transaction import Transaction
from trytond.pool import Pool
-__all__ = ['SaleOpportunity', 'SaleOpportunityLine',
- 'SaleOpportunityEmployee', 'SaleOpportunityEmployeeContext',
- 'SaleOpportunityMonthly', 'SaleOpportunityEmployeeMonthly']
-
-STATES = [
- ('lead', 'Lead'),
- ('opportunity', 'Opportunity'),
- ('converted', 'Converted'),
- ('won', 'Won'),
- ('cancelled', 'Cancelled'),
- ('lost', 'Lost'),
-]
-_STATES_START = {
- 'readonly': Eval('state') != 'lead',
- }
-_DEPENDS_START = ['state']
-_STATES_STOP = {
- 'readonly': In(Eval('state'), ['converted', 'won', 'lost', 'cancelled']),
-}
-_DEPENDS_STOP = ['state']
-
class SaleOpportunity(Workflow, ModelSQL, ModelView):
'Sale Opportunity'
__name__ = "sale.opportunity"
_history = True
_rec_name = 'number'
+
+ _states_start = {
+ 'readonly': Eval('state') != 'lead',
+ }
+ _depends_start = ['state']
+ _states_stop = {
+ 'readonly': Eval('state').in_(
+ ['converted', 'won', 'lost', 'cancelled']),
+ }
+ _depends_stop = ['state']
+
number = fields.Char('Number', readonly=True, required=True, select=True)
reference = fields.Char('Reference', select=True)
party = fields.Many2One('party.party', 'Party', select=True,
@@ -53,18 +43,18 @@
address = fields.Many2One('party.address', 'Address',
domain=[('party', '=', Eval('party'))],
select=True, depends=['party', 'state'],
- states=_STATES_STOP)
+ states=_states_stop)
company = fields.Many2One('company.company', 'Company', required=True,
- select=True, states=_STATES_STOP, domain=[
+ select=True, states=_states_stop, domain=[
('id', If(In('company', Eval('context', {})), '=', '!='),
Get(Eval('context', {}), 'company', 0)),
- ], depends=_DEPENDS_STOP)
+ ], depends=_depends_stop)
currency = fields.Function(fields.Many2One('currency.currency',
'Currency'), 'get_currency')
currency_digits = fields.Function(fields.Integer('Currency Digits'),
'get_currency_digits')
amount = fields.Numeric('Amount', digits=(16, Eval('currency_digits', 2)),
- states=_STATES_STOP, depends=_DEPENDS_STOP + ['currency_digits'],
+ states=_states_stop, depends=_depends_stop + ['currency_digits'],
help='Estimated revenue amount.')
payment_term = fields.Many2One('account.invoice.payment_term',
'Payment Term', states={
@@ -74,23 +64,30 @@
depends=['state'])
employee = fields.Many2One('company.employee', 'Employee',
states={
- 'readonly': _STATES_STOP['readonly'],
+ 'readonly': _states_stop['readonly'],
'required': ~Eval('state').in_(['lead', 'lost', 'cancelled']),
},
depends=['state', 'company'],
domain=[('company', '=', Eval('company'))])
start_date = fields.Date('Start Date', required=True, select=True,
- states=_STATES_START, depends=_DEPENDS_START)
+ states=_states_start, depends=_depends_start)
end_date = fields.Date('End Date', select=True,
- states=_STATES_STOP, depends=_DEPENDS_STOP)
+ states=_states_stop, depends=_depends_stop)
description = fields.Char('Description',
- states=_STATES_STOP, depends=_DEPENDS_STOP)
- comment = fields.Text('Comment', states=_STATES_STOP,
- depends=_DEPENDS_STOP)
+ states=_states_stop, depends=_depends_stop)
+ comment = fields.Text('Comment', states=_states_stop,
+ depends=_depends_stop)
lines = fields.One2Many('sale.opportunity.line', 'opportunity', 'Lines',
- states=_STATES_STOP, depends=_DEPENDS_STOP)
- state = fields.Selection(STATES, 'State', required=True, select=True,
- sort=False, readonly=True)
+ states=_states_stop, depends=_depends_stop)
+ state = fields.Selection([
+ ('lead', "Lead"),
+ ('opportunity', "Opportunity"),
+ ('converted', "Converted"),
+ ('won', "Won"),
+ ('cancelled', "Cancelled"),
+ ('lost', "Lost"),
+ ], "State", required=True, select=True,
+ sort=False, readonly=True)
conversion_probability = fields.Float('Conversion Probability',
digits=(1, 4), required=True,
domain=[
@@ -107,6 +104,9 @@
}, depends=['state'])
sales = fields.One2Many('sale.sale', 'origin', 'Sales')
+ del _states_start, _depends_start
+ del _states_stop, _depends_stop
+
@classmethod
def __register__(cls, module_name):
pool = Pool()
@@ -452,7 +452,7 @@
},
depends=_depends)
opportunity_state = fields.Function(
- fields.Selection(STATES, 'Opportunity State'),
+ fields.Selection('get_opportunity_states', "Opportunity State"),
'on_change_with_opportunity_state')
product = fields.Many2One('product.product', 'Product', required=True,
domain=[('salable', '=', True)], states=_states, depends=_depends)
@@ -466,6 +466,12 @@
del _states, _depends
+ @classmethod
+ def get_opportunity_states(cls):
+ pool = Pool()
+ Opportunity = pool.get('sale.opportunity')
+ return Opportunity.fields_get(['state'])['state']['selection']
+
@fields.depends('opportunity', '_parent_opportunity.state')
def on_change_with_opportunity_state(self, name=None):
if self.opportunity: